Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ufuzz failure #5728

Closed
alexlamsl opened this issue Nov 2, 2022 · 0 comments · Fixed by #5729
Closed

ufuzz failure #5728

alexlamsl opened this issue Nov 2, 2022 · 0 comments · Fixed by #5729
Labels

Comments

@alexlamsl
Copy link
Collaborator

// original code
// (beautified)
var _calls_ = 10, a = 100, b = 10, c = 0;

function f0(await_1) {
    switch ((c = c + 1) + delete (-1 << NaN <= 1 + 1 !== (5 + "number" || (await_1 = -0 >>> "foo")))) {
      case --b + [ --b + {
            c: --b + (/[abc4]/.test(((c = c + 1) + --b || b || 5).toString()) || 2).toString()[~a],
            b: --b + ("a" in [ --b + b++ ]),
            1.5: typeof {
                then: a++ + {}.var,
                c: (c = c + 1) + {
                    set: (c = 1 + c, "object" * -2 == (true & {}) ^ void -5),
                    foo: (c = 1 + c, null % 2 + (null ^ 25) ^ ([] >>> 38..toString() ^ (await_1 && (await_1.undefined = Number(0xdeadn << 16n | 0xbeefn) > -3))))
                }[c = 1 + c, 23..toString() === Infinity & (-2 & Number(0xdeadn << 16n | 0xbeefn)) || (await_1 += this << null <= (await_1 && ([ await_1[c = 1 + c, 
                (c = c + 1, "" & "b") & ([] ^ this) < ([ , 0 ].length === 2) >>> "b"] ] = [ "number" !== [] ])))],
                in: -b,
                then: a++ + (1 === 1 ? a : b)
            }.in,
            Infinity: {
                next: typeof await_1 == "function" && --_calls_ >= 0 && await_1(),
                [0]: ((await_1 && ({
                    c: await_1[c = 1 + c, +38..toString() < (c = c + 1, 25) < (null != "foo" ^ "undefined" < this)]
                } = {
                    c: 5 >> -1
                })) <= (-5 > "number")) / (null == "bar" ^ "b" !== "undefined"),
                3: --b + (await_1 && typeof await_1.value == "function" && --_calls_ >= 0 && (-4, 
                await_1.value)(-4, 25, (c = 1 + c, -("number" || NaN) | (await_1 && (await_1[(c = c + 1) + {
                    3: (c = 1 + c, (await_1 && (await_1[c = 1 + c, await_1 = -(-4 / "undefined") == (undefined >>> -3 ^ true !== [ , 0 ][1])] += -3 <= 4) || 22 & false) * (+"c" && this !== 1))
                }.get] += (-0 && "undefined") >= "number" + -0))))),
                foo: {
                    ...(c = 1 + c, await_1 += null + this >> ([] >> -5) & ("" | 22) * (-0 < 3))
                }.c,
                3: (c = c + 1) + (typeof f2 == "function" && --_calls_ >= 0 && f2(-0))
            }[typeof await_1 == "function" && --_calls_ >= 0 && await_1`${c = 1 + c, 
            !((5 > []) >>> ("b" >= Infinity))}${c = 1 + c, await_1 && (await_1[typeof await_1 == "function" && --_calls_ >= 0 && await_1((c = 1 + c, 
            await_1 && (await_1.a *= (delete 22 | "b" / "bar") >>> (-4 >>> "b" != ([ , 0 ].length === 2 && Infinity)))), (c = 1 + c, 
            "foo" / -3 | [] - this || ({} || -0) % (await_1 += 0 || -3)))] = (24..toString() + [] & 3 != false) !== (await_1 && (await_1[[]] += -4 % "b" << (23..toString() >>> Infinity))))}tmpl${c = 1 + c, 
            ((await_1 && (await_1[c = 1 + c, (1 - -1 === 4 - 25) >>> (await_1 && (await_1[c = 1 + c, 
            ({} / 38..toString() >= false + !0o644n) + (undefined - "a" !== (38..toString() !== 2))] = this << this) && 2 ** "b")] ^= 0 >= "undefined")) >= ("b" | "bar")) >>> "undefined" % "function" % (false >= "")}${c = 1 + c, 
            (await_1 && (await_1[delete (("bar" < -0) >> 22 + NaN ^ -5 + {} === ~25)] += 2 | NaN | NaN - this)) / ((2 | "foo") ^ (25 ^ 4))}`]
        } ][a++]:
        L13520: for (var brake2 = 5; await_1 && brake2 > 0; --brake2) {}
        break;

      case !function() {
            try {
                try {
                    if (((b = a) || a || 3).toString()) {
                        var bar_1;
                    }
                } catch (NaN_2) {
                    var arguments_2 = /[abc4]/.test((function await() {
                    } || b || 5).toString());
                }
            } finally {
                {
                    var NaN_2 = function f1(a, bar_2, bar_1) {}(a++ + a++, null);
                }
                L13521: {
                    break L13521;
                    {
                        var expr13 = --b + -b;
                        L13522: for (var key13 in expr13) {
                            c = 1 + c;
                            var foo_1 = expr13[key13];
                            {
                            }
                        }
                    }
                    {
                        c = 1 + c, (-5 == "c") * ("foo" > this) + (NaN_2 && (NaN_2.next += (undefined ^ "object", 
                        -Number(0xdeadn << 16n | 0xbeefn))));
                    }
                }
            }
            switch (new function(undefined) {
                {
                    var expr18 = a++ + [ (c = 1 + c, (0 == 23..toString(), -2 >>> 0) / ((-0 !== 38..toString()) / ((-42n).toString() + 2))) ];
                    for (var key18 in expr18) {
                        c = 1 + c;
                        var b_1 = expr18[key18];
                        {
                            var await_1 = function f2(c_1, foo_1) {
                            }("object");
                        }
                    }
                }
            }()) {
              case --b + function() {
                    var bar_2 = /[abc4]/g.exec((bar_2 && typeof bar_2.b == "function" && --_calls_ >= 0 && bar_2.b("foo", "") || b || 5).toString()), b = --b + (23..toString() in {
                        [(c = 1 + c, (23..toString() !== 38..toString()) % (this | null) || ([ , 0 ].length === 2 && NaN) % ("function" << 24..toString()))]: (c = 1 + c, 
                        c = c + 1, (bar_2 = Infinity & [ , 0 ][1]) >= this * "bar")
                    });
                }:
                break;

              case bar_1:
                {
                    var brake21 = 5;
                    L13523: while (typeof await_1 == "function" && --_calls_ >= 0 && await_1(typeof bar_1 != "crap", a++ + (b = a)) && --brake21 > 0) {}
                }
                {
                    L13524: for (var brake24 = 5; {
                        Infinity: (c = 1 + c, 5 << "object" << (NaN < -1) <= (0 ^ 2 | null ^ 3))
                    } && brake24 > 0; --brake24) {
                        var expr25 = (c = 1 + c, bar_1 && (bar_1.foo = "bar" < 38..toString() ^ ("function" ^ 22) | (this | "c") << (23..toString() << false)));
                        for (var key25 in expr25) {
                            c = 1 + c, (/[a2][^e]+$/ || null) % (3 && 2) + (("function" ^ undefined) !== (-2 == -5));
                        }
                    }
                    c = 1 + c, (c = c + 1, -5, 24..toString() && 4) || (bar_1 = (await_1 && ([ await_1.get ] = [ 4 / -5 ])) === [ , 0 ][1] << /[a2][^e]+$/);
                }
                break;

              case --b + await_1:
                switch (function(foo) {
                    switch (c = 1 + c, (24..toString() == NaN) * (c = c + 1, false) ^ (~-3, 
                    "bar" - 24..toString())) {
                      default:
                        ;

                      case c = 1 + c, (-3 > 1 && "undefined" <= 25) ^ (foo && (foo[a++ + bar_1] -= -2 !== 38..toString() | 22 == 23..toString())):
                        ;
                        break;

                      case c = 1 + c, bar_1 && (bar_1.b /= (bar_1 && (bar_1[c = 1 + c, 
                        (await_1 && (await_1.done = {} === {} === (await_1 *= "" || 22))) == (-0 >> ([ 3n ][0] > 2) & 2 - true)] += 25 !== 1)) != -2 + -2 ^ ~false >= (/[a2][^e]+$/ ^ /[a2][^e]+$/)):
                        ;
                        break;

                      case c = 1 + c, (+1 && (bar_1 && (bar_1[c = 1 + c, (4 == ([ , 0 ].length === 2) & /[a2][^e]+$/ >>> []) - ("c" != -1 !== (3 ^ -3))] = ([ , 0 ].length === 2) << 4))) - (delete [] == 22 >>> 3):
                        ;
                        break;
                    }
                    var foo = (c = 1 + c, [ , 0 ][1] <= ([ , 0 ].length === 2) != ([ , 0 ].length === 2) + 22 === ("b" || -5) >= ("a" ^ []));
                }) {
                  case (c = c + 1) + {
                        ...await_1
                    }[/[abc4]/g.exec((a++ + (0 === 1 ? a : b) || b || 5).toString())]:
                    return bar_1 && typeof bar_1.null == "function" && --_calls_ >= 0 && bar_1.null((c = 1 + c, 
                    bar_1 && (bar_1.next = 4 / 1 + (1 != 5) != (bar_1 = "function" * 25 / +3))));
                    break;

                  case 1 === 1 ? a : b:
                    break;

                  case +function a_1() {
                        {
                            var brake33 = 5;
                            while ((c = 1 + c, (-1 | "bar") * (22 ^ undefined) || 5 % "bar" ^ this * "undefined") && --brake33 > 0) {
                                c = 1 + c, 38..toString() << "bar" === undefined + 4 == (-3 || "object") % (22, 
                                -3);
                            }
                        }
                    }():
                    break;

                  case (c = c + 1) + --b:
                    try {
                        c = c + 1;
                    } catch (async) {
                        c = 1 + c, (async && (async.async >>= [] > -5)) << 3 * true !== !(([ , 0 ].length === 2) * this);
                        c = 1 + c, {} > "foo" < (1 != 25) < 23..toString() >> 22 << ([ , 0 ].length === 2 != 25);
                    } finally {
                        c = 1 + c, (await_1 && (await_1[(c = c + 1) + (([ , 0 ].length === 2) in [])] %= ([ , 0 ].length === 2 | "a") & 24..toString() % -3)) + (false === 22) % (true < 1);
                        c = 1 + c, (await_1 /= 38..toString() << 2) - ("function" >> "foo") >= (bar_1 && (bar_1.a += [] - "b" >>> (await_1 && (await_1.b = 22 / "function"))));
                        c = 1 + c, ((c = c + 1, 1) >= 4 >> 38..toString()) << (null >= 24..toString() != 23..toString() >= "bar");
                    }
                    break;
                }
                c = c + 1;
                break;

              case --b + (b = a) ? a-- : b += a:
                ;
                {
                    var brake44 = 5;
                    L13525: do {
                        c = c + 1;
                    } while ((c = c + 1) + delete (!"b" === (await_1 && ({
                        "\t": await_1.async
                    } = {
                        "\t": 22 ^ Number(0xdeadn << 16n | 0xbeefn)
                    })) === ("b" - true & 2 * "a")) && --brake44 > 0);
                }
                for (var brake46 = 5; typeof f1 == "function" && --_calls_ >= 0 && f1() && brake46 > 0; --brake46) {
                    var brake47 = 5;
                    while (--b + ("foo" in {
                        await_1: await_1,
                        length: (c = 1 + c, (25 === -2 ^ !Number(0xdeadn << 16n | 0xbeefn)) % ("foo" / NaN < ("number" ^ null))),
                        [(c = 1 + c, ("c" ^ "undefined") >= (22 || 3) === ((c = c + 1, 
                        25) ^ [ 3n ][0] > 2 & false))]: (c = 1 + c, (NaN / "object" & "bar" > 22) + (23..toString() <= "a" !== 25 * null)),
                        set: (c = 1 + c, ("c", -2) > (23..toString() != ([ , 0 ].length === 2)) ^ 2 == false == (bar_1 ^= "number" ^ null))
                    }) && --brake47 > 0) {
                        var brake48 = 5;
                        do {
                            for (var brake49 = 5; (c = 1 + c, (void 22 & ("object" ^ [ , 0 ][1])) >>> (25 >= -2 != (-3 | -5))) && brake49 > 0; --brake49) {
                                c = 1 + c, (38..toString() === "foo") >> (Infinity >= -0) && (this && []) !== (38..toString() != "b");
                            }
                        } while (bar_1 && --brake48 > 0);
                    }
                }
                break;
            }
            try {
                c = c + 1;
            } finally {
                switch ((2 === -0) < (undefined && -5) ^ 23..toString() * 5 !== (/[a2][^e]+$/, 
                "function")) {
                  default:
                    c = c + 1;
                    c = c + 1;
                    if (a++ + a++) {} else {
                        var b_2;
                    }

                  case a++ + {
                        a: ((4 <= "foo") - ("number" && [])) % (-0 + this || "foo" === false)
                    }:
                    {
                        var brake59 = 5;
                        L13526: while (-5 in {
                            async: (c = 1 + c, delete (b_2 && (b_2.Infinity = 0 * 23..toString() * (false < -2)))),
                            1.5: (c = 1 + c, (-2 == 25) <= [] >>> 2 ^ (0 !== 0) * (24..toString() && 38..toString())),
                            async: (c = 1 + c, (undefined && []) !== void this != (undefined & 3 ^ -3 < "number")),
                            static: (c = 1 + c, (c = c + 1, [ , 0 ][1] - 38..toString()) != ((c = c + 1, 
                            /[a2][^e]+$/) !== (5 && "object")))
                        } && --brake59 > 0) {
                            c = c + 1;
                        }
                    }
                    break;

                  case await_1:
                    try {
                        for (var brake62 = 5; (c = 1 + c, (24..toString() != ([ , 0 ].length === 2)) % (c = c + 1, 
                        22) << (true * 2 < -0 >> 23..toString())) && brake62 > 0; --brake62) {
                            c = 1 + c, (3 << 38..toString() | "c" >> 38..toString()) * ((22 | 2) / (4 >> undefined));
                        }
                    } catch (bar_1) {
                        c = 1 + c, ({} ^ 0) * ("undefined" == 23..toString()) || "number" * {} == -3 << 5;
                        c = 1 + c, bar_1 && (bar_1[(c = c + 1) + a--] += ([] != -2 && (-2 || false)) >= (bar_1 && (bar_1.b |= "number" >= null <= (bar_1 && (bar_1[c = 1 + c, 
                        (-3, NaN) === 5 - [] ^ (bar_1 && (bar_1.get += (c = c + 1, 
                        false) ^ 25 > "a"))] |= [ , 0 ][1] ^ null)))));
                    } finally {
                        c = 1 + c, (/[a2][^e]+$/ === {}) - (22 || "function") <= (-4 === 22 !== +"undefined");
                    }
                    try {
                        c = c + 1;
                    } catch (arguments) {
                        c = 1 + c, ((c = c + 1, Infinity) ^ /[a2][^e]+$/ * 23..toString()) <= (this >> ([ , 0 ].length === 2) != this > []);
                        c = 1 + c, c = c + 1, 3 > "c" && (4 && "");
                        c = 1 + c, ("b" < ([ 3n ][0] > 2) > undefined << "bar") % ("b" < null ^ 1 > null);
                    }
                    (c = c + 1) + (("b" | null && 0 + this) != (-4 | 5) > (-5, NaN));
                    break;

                  case this:
                    return;
                    break;
                }
            }
        }():
        ;
        try {
            {
                var brake76 = 5;
                while ((c = c + 1) + ([ , 0 ][1] || a || 3).toString() && --brake76 > 0) {
                    L13527: {
                        for (var brake78 = 5; /[abc4]/g.exec(((c = c + 1) + function b_1() {
                        }() || b || 5).toString()) && brake78 > 0; --brake78) {
                            var brake79 = 5;
                            while (--b + ((c = 1 + c, Infinity / -1 - (c = c + 1, 
                            -4) <= ([] % -3 < 22 << 24..toString())) || a || 3).toString() && --brake79 > 0) {
                                var brake80 = 5;
                                do {
                                    c = 1 + c, ((4, true) ^ 2 === -0) != ("c" & 3) / (!0o644n * 24..toString());
                                } while ((c = 1 + c, +{} / (1 > 5) & undefined <= /[a2][^e]+$/ === (38..toString() | "c")) && --brake80 > 0);
                            }
                        }
                    }
                }
            }
        } catch (c_2) {
            return typeof f3 == "function" && --_calls_ >= 0 && f3();
            try {
                {
                    {
                        var brake85 = 5;
                        L13528: while (/[abc4]/.test(((c = 1 + c, ("bar" / this << (-2 ^ 2)) / ("" !== -3 && -4 !== "number")) || b || 5).toString()) && --brake85 > 0) {
                            try {
                                c = 1 + c, (-3 || 5) == 3 >= "function" && ("" || 1) === 3 >> [ , 0 ][1];
                            } catch (c_2) {
                            } finally {
                            }
                        }
                    }
                }
            } catch (yield_1) {
                {
                    var brake88 = 5;
                    L13529: do {
                        c = c + 1;
                    } while ((c = c + 1) + !([] << 25 !== ("bar" == NaN) !== "number" % 23..toString() % ("foo" <= [ , 0 ][1])) && --brake88 > 0);
                }
                for (var brake90 = 5; await_1 && await_1[a++ + delete (c_2 >>= ([ , 0 ][1] <= -3) % (Infinity < -0) == (0 ^ true) * (false !== []))] && brake90 > 0; --brake90) {
                    var a_1 = function f3(yield, bar) {
                    }("function");
                }
            } finally {
                switch ([ (c = 1 + c, (null === NaN) % (0 === "c") | + -4 / (23..toString() ^ 5)), (c = 1 + c, 
                (25 < Infinity != ("bar" != "a")) >= (undefined === false ^ ("b" | 24..toString()))) ].then) {
                  case await_1 && await_1.foo:
                    var b_2 = (c = 1 + c, (yield_1 && (yield_1[/[abc4]/.test(((c = 1 + c, 
                    (c_2 >>= 25 !== 23..toString() & (undefined ^ "bar")) < ("b" - "object", 
                    null <= "number")) || b || 5).toString())] = NaN / Infinity % ("number" <= -5))) / ((yield_1 = -2 || "undefined") / (22 < "undefined"))), yield_1 = (c = 1 + c, 
                    delete ("c" >= undefined == 4 >> 2));

                  default:
                    for (var brake94 = 5; (c = 1 + c, ((-4 && /[a2][^e]+$/) == (await_1 && (await_1.a >>= false / 0))) + (c = c + 1, 
                    "undefined" || -5)) && brake94 > 0; --brake94) {
                        c = 1 + c, (b_2 && (b_2.value **= "b" + 23..toString() > (-2 ^ NaN))) / (/[a2][^e]+$/ / "foo" ^ (null || 0));
                    }

                  case "c":
                    try {
                        c = 1 + c, (await_1 = 4 in true) != (b_2 && (b_2[c = 1 + c, 
                        (Infinity > this & ("a", [ , 0 ][1])) % ((yield_1 >>>= 38..toString() >> Infinity) && false < -4)] >>>= 23..toString() >> "object")), 
                        Infinity % ([ , 0 ].length === 2) > (Infinity ^ /[a2][^e]+$/);
                    } catch (Infinity) {
                    } finally {
                    }
                    switch (c = 1 + c, yield_1 += ("a" == ([ , 0 ].length === 2)) % (0 != 1) ^ ~[ , 0 ][1] + ("" & null)) {
                      case c = 1 + c, b_2 && (b_2[--b + b_2] /= ("a" === 24..toString()) << (4 <= 38..toString()) === ((b_2 && (b_2[c = 1 + c, 
                        ((c = c + 1, NaN) < (2 < /[a2][^e]+$/)) << (void "c" !== ("number" !== 4))] |= "a" & -5)) != true + -4)):
                        ;
                        break;

                      default:
                        ;

                      case c = 1 + c, ("" || -5) < (true == "b") || "" !== /[a2][^e]+$/ & "bar" != "a":
                        ;
                        break;

                      case c = 1 + c, (-2 < -5) >> (c = c + 1, "foo") > (3 === -2) << (undefined & NaN):
                        ;
                        break;
                    }
                    {
                        return c = 1 + c, await_1 && (await_1.null = (([ , 0 ].length === 2 || "") | (await_1 && (await_1.value %= 4 && "bar"))) == (true ^ true ^ "function" > /[a2][^e]+$/));
                    }
                    break;

                  case --b + /[abc4]/.test((--b + (await_1 >>>= ("function" > /[a2][^e]+$/) << "b" % 2) / ((-5 != this) <= (-3 | "object")) || b || 5).toString()):
                    break;
                }
                switch (--b + (await_1 && await_1.c)) {
                  case "undefined" in [ (c = 1 + c, c = c + 1, ~false ^ 4 * 2) ]:
                    break;

                  case typeof f4 == "function" && --_calls_ >= 0 && f4((c = 1 + c, 
                    (c = c + 1, [ , 0 ][1] >>> "") !== (38..toString() & "number") + (25 | this)), (c = 1 + c, 
                    -0 << 24..toString() == (c = c + 1, -2) | (Number(0xdeadn << 16n | 0xbeefn) || 1) / (3 << -1)), (c = 1 + c, 
                    delete "number" ^ "object" + -4 ^ (-1 !== -0) >>> (2 != 2))):
                    try {
                        c = 1 + c, ("object" !== "foo" != (c = c + 1, 22)) <= ("function" <= "a" !== (25 ^ 1));
                    } catch (a_1) {
                    } finally {
                    }
                    break;

                  case --b + ([ (c = 1 + c, (yield_1 && (yield_1[--b + b++] %= (Infinity || 22) < (/[a2][^e]+$/ | -4))) << ("function" > "number" || 4 == [ , 0 ][1])) ].set || 2).toString()[typeof (c = 1 + c, 
                    (38..toString() / 1 || 24..toString() * [ , 0 ][1]) != (await_1 && (await_1[c = 1 + c, 
                    yield_1 = (3 << -2 && undefined > [ , 0 ][1]) / (-3 % "b", 23..toString() + -5)] **= (38..toString(), 
                    2))) ** ("number" << 24..toString()))]:
                    {
                        var brake103 = 5;
                        L13530: do {
                            c = 1 + c, (c_2 && (c_2.next = (c = c + 1, true) < (undefined != "object"))) & "c" < "foo" != (0 != -1);
                        } while ((c = 1 + c, b_2 && (b_2.set = ([ , 0 ].length === 2 !== NaN) >= (24..toString() >= -5)), 
                        (3, "number") << ("" << "bar")) && --brake103 > 0);
                    }
                    break;

                  case yield_1:
                    break;
                }
            }
        } finally {
            if ({}.a) {
                switch (--b + (typeof await_1 == "function" && --_calls_ >= 0 && await_1(22))) {
                  case [ , 0 ][1]:
                    break;

                  case a++ + /[abc4]/.test((--b + (typeof await_1 == "function" && --_calls_ >= 0 && await_1((c = 1 + c, 
                    (c = c + 1, 24..toString()) !== 23..toString() - "b" === ("" || "object") - (25 - "object")), NaN)) || b || 5).toString()):
                    c = c + 1;
                    break;

                  case {
                        set: (c = c + 1) + await_1,
                        Infinity: --b + a++,
                        1.5: --b + (5 in {
                            then: (c = 1 + c, Infinity + "foo" << ("c" ^ -0) <= ("undefined" == /[a2][^e]+$/) >>> (2 > "b")),
                            foo: (c = 1 + c, ([ , 0 ][1] * /[a2][^e]+$/ | (c = c + 1, 
                            /[a2][^e]+$/)) & (2 ^ null) >= ("c" & "a"))
                        }),
                        NaN: (c = c + 1) + (typeof await_1 == "function" && --_calls_ >= 0 && await_1())
                    }.c:
                    for (var brake108 = 5; void a && brake108 > 0; --brake108) {
                        return;
                        c = 1 + c, await_1 && ([ await_1[--b] ] = [ "number" <= -5 >= ("b" > -4) >= (23..toString() || "object") >> (1 >>> "function") ]);
                    }
                    if (--b + (typeof f4 == "function" && --_calls_ >= 0 && f4(..."" + await_1, (c = 1 + c, 
                    "foo" - NaN != -2 >= NaN && (await_1 && ({
                        [(c = 1 + c, ("bar" == -4 || -2 + this) * (-0 > "foo" < (Infinity < "number")))]: await_1.a
                    } = {
                        Infinity: NaN & 3
                    })) % (await_1 = 2 % this))))) {
                        var expr111 = (c = 1 + c, await_1 && (await_1[a++ + [ (c = 1 + c, 
                        (2 || 3) !== (await_1 && (await_1.async |= 4 & "object")) != (await_1 && (await_1.in = ("foo" - "", 
                        await_1 && ({
                            1.5: await_1[c = 1 + c, 4 >> 23..toString() ^ "bar" == Infinity | (25 ^ "object") < 2 * "bar"]
                        } = {
                            1.5: null * 3
                        }))))) ]] += ("c" * 23..toString() > !0o644n << 4) << ((c = c + 1, 
                        "foo") << (22 > 0))));
                        L13531: for (var key111 in expr111) {
                            c = 1 + c, (true - -3 ^ ~true) === (NaN * Number(0xdeadn << 16n | 0xbeefn) === 1 > [ , 0 ][1]);
                        }
                    }
                    return (c = c + 1) + a++;
                    break;

                  case typeof f1 == "function" && --_calls_ >= 0 && f1(/[abc4]/.test(((c = 1 + c, 
                    ((true && 5) !== "undefined" - 24..toString()) <= (-4, 25) - ("object" ^ "a")) || b || 5).toString())):
                    try {
                        {
                            var brake115 = 5;
                            L13532: while ((c = 1 + c, ("undefined" >= -3) % ({} >>> 4) % ("c" % -5 <= (c = c + 1, 
                            -2))) && --brake115 > 0) {
                                c = 1 + c, (-0 >>> {} !== [] * "undefined") < (-0 ^ "function" && "function" == 5);
                            }
                        }
                    } finally {
                        c = 1 + c, ("object" - "" ^ (await_1 += [] !== 25)) % (false << "" !== "foo" <= 24..toString());
                        c = 1 + c, (([ , 0 ].length === 2) << NaN & -1 * "bar") <= ((/[a2][^e]+$/ & 1) < (/[a2][^e]+$/ !== true));
                        c = 1 + c, (await_1 = false / 25 >>> (null > "a")) || (await_1 += 38..toString() % {}) * (5 && null);
                        c = 1 + c, c = c + 1, "c" >= "a" !== -4 << "object";
                        c = 1 + c, ((await_1 |= ("c", 1)) && (await_1 && (await_1.done /= null <= -5))) ^ ("a" || "b") * (25 > "b");
                    }
                    break;
                }
            } else {
                try {
                    var foo;
                } catch (b_1) {
                    if (typeof (c = 1 + c, (("function", [ , 0 ][1]) == "c" * 25) < (b_1 && (b_1.set += ("", 
                    -5) ** (4 && true))))) {
                        switch (c = 1 + c, -1 / /[a2][^e]+$/ % (NaN != "a") ^ null - "a" - "object" / -1) {
                          default:
                            ;

                          case c = 1 + c, c = c + 1, -4 + 24..toString() == 0 >> true:
                            ;
                            break;

                          case c = 1 + c, (22 ^ "object") / ("foo" >> "number") <= ("bar" >= "") << "" - "number":
                            ;
                            break;

                          case c = 1 + c, (foo && (foo[{
                                done: (c = 1 + c, !(foo += (b_1 = "c" >= -4) - ("undefined" == ([ , 0 ].length === 2))))
                            }] = /[a2][^e]+$/ ^ true && null != [ , 0 ][1])) ** (3 * -5 > -0 << -5):
                            ;
                            break;
                        }
                    } else {
                        c = 1 + c, (-2 / -3 && (-5 || -4)) >>> void ({} ^ 2);
                    }
                    try {
                    } catch (await_1) {
                        c = 1 + c, +("number" || NaN) > "bar" % ([ , 0 ].length === 2) << ("object" != []);
                    } finally {
                        c = 1 + c, foo += "b" - -5 | (foo && ({
                            "-2": foo.Infinity
                        } = {
                            "-2": 22 == "a"
                        })) | ([ , 0 ][1] ^ 4) >>> (foo && (foo.done += "c" << 1));
                        c = 1 + c, (c = c + 1, "function") || "a" ^ undefined || (5 | "") >> (false !== -0);
                        c = 1 + c, ((c = c + 1, -0) <= (5 & 2)) * (this * 0 + ("c" > 1));
                    }
                    if (b = a) {
                        var async;
                    } else {
                        break;
                    }
                } finally {}
            }
        }

      case --b + +function b_2() {
        }():
        c = c + 1;
        break;

      case --b + (typeof f1 == "function" && --_calls_ >= 0 && f1(a++ + (b &= a), (c = c + 1) + [ --b + (await_1 && typeof await_1.b == "function" && --_calls_ >= 0 && await_1.b(...[ --b + (b + 1 - .1 - .1 - .1), this, "object" in {} ], 22)), await_1 && typeof await_1.foo == "function" && --_calls_ >= 0 && await_1.foo(), [], +b, (c = c + 1) + ({
            3: await_1 = (await_1 += (-0 && "") << (25 !== false)) & ("c" ^ "undefined") > -4 + ([ , 0 ].length === 2),
            Infinity: !(await_1 = ("a" >>> "foo" & "b" !== 1) - ({} < -4 != ("b" === ([ , 0 ].length === 2)))),
            [a++ + ("foo" in [ (c = 1 + c, await_1 && (await_1.done ^= (true >>> Infinity || this & 25, 
            [ , 0 ][1] * -4 === /[a2][^e]+$/ <= "c"))), (c = 1 + c, (await_1 += ~([ , 0 ].length === 2) === (true != 0)) !== (true < false == ([ , 0 ].length === 2 !== "c"))) ])]: new function bar_1(a_2) {
            }(),
            then: (c = c + 1) + (await_1 && await_1.in),
            get: a++ + ("function" in [ (c = 1 + c, void ("undefined", false) << ((await_1 && (await_1.foo ^= 5 * "undefined")) != "object" - this)), (c = 1 + c, 
            (1 + 0 || await_1 && (await_1.static = this % 1)) != 22 - ([ 3n ][0] > 2) + ([ , 0 ][1], 
            "function")) ])
        } || 8).toString()[/[abc4]/g.exec(((("bar" & "a") * (null / NaN), true / "object" !== ("foo" & "c")) || b || 5).toString())] ][--b + (25 in {
            next: a++ + (await_1 && await_1.value)
        })], (c = c + 1) + (--b + (typeof await_1 == "function" && --_calls_ >= 0 && await_1`${typeof await_1 == "function" && --_calls_ >= 0 && await_1()}${await_1 && await_1[[ (c = 1 + c, 
        await_1 += (await_1 = true & "") << (await_1 && (await_1.undefined = 25 !== 5)) | (3 / 3 | (await_1 && (await_1.c <<= -0 << -4)))) ].value]}}`) || a || 3).toString())):
        if ([ , --b + false, b = a, [ --b + delete a ], --b + /[abc4]/g.exec((typeof b_1 == "number" || b || 5).toString()) ]) {
            var brake139 = 5;
            do {
                {
                    var brake140 = 5;
                    while (--b + (typeof f2 == "function" && --_calls_ >= 0 && f2()) && --brake140 > 0) {
                        return --b + (0 === 1 ? a : b);
                    }
                }
            } while ((c = c + 1) + (await_1 = /[abc4]/.test(((1 in [ (c = 1 + c, 
            (5 * "bar", "b" % 0) <= (1, [ , 0 ][1]) % (25 <= /[a2][^e]+$/)), (c = 1 + c, 
            true >= 4 <= (await_1 && (await_1.then += NaN ^ false)) && (await_1 && ([ await_1.async ] = [ 38..toString() != -2 ])) | ([ , 0 ].length === 2 | "c")) ] || a || 3).toString() || b || 5).toString())) && --brake139 > 0);
        } else {
            return --b + (typeof b == "unknown");
        }
        break;
    }
    /[abc4]/.test(([ , 0 ][1] >>> 24..toString() != (-4, "c") == ("undefined" <= Infinity) - (38..toString() ^ 2) || b || 5).toString());
}

var let_2 = f0();

console.log(null, a, b, c, Infinity, NaN, undefined);
// uglified code
// (beautified)
var _calls_ = 10, a = 100, b = 10, c = 0;

function f0(y) {
    switch ((c += 1) + !0) {
      case --b + [ --b + {
            c: --b + (/[abc4]/.test(((c += 1) + --b || b || 5).toString()) || 2).toString()[~a],
            b: --b + ("a" in [ --b + b++ ]),
            1.5: typeof [ a++, (c = 1 + (c = 1 + (c += 1)), y && (y.undefined = -3 < +("" + (0xdeadn << 16n | 0xbeefn))), 
            c = 1 + c, -2 & +("" + (0xdeadn << 16n | 0xbeefn)) & !1 || (y += this << null <= (y && ([ y[c = 1 + c, 
            c += 1, 0 & ([] ^ this) < (2 === [ , 0 ].length) >>> "b"] ] = [ !0 ])))), -b, a++ ][2],
            Infinity: {
                next: "function" == typeof y && 0 <= --_calls_ && y(),
                [0]: +((y && ({
                    c: y[c = 1 + c, 38 < (c += 1, 25) < (!0 ^ "undefined" < this)]
                } = {
                    c: 0
                })) <= !1),
                3: --b + (y && "function" == typeof y.value && 0 <= --_calls_ && (0, 
                y.value)(-4, 25, (c = 1 + c, NaN | (y && (y[(c += 1) + {
                    3: (c = 1 + c, NaN * (y && (y[c = 1 + c, y = !1] += !0) || 0))
                }.get] += !1))))),
                foo: {
                    ...(c = 1 + c, y += null + this >> 0 & 22)
                }.c,
                3: (c += 1) + ("function" == typeof f2 && 0 <= --_calls_ && f2(-0))
            }["function" == typeof y && 0 <= --_calls_ && y`${c = 1 + c, !1}${c = 1 + c, 
            y && (y["function" == typeof y && 0 <= --_calls_ && y((c = 1 + c, y && (y.a *= 1 >>> (-4 >>> "b" != (2 === [ , 0 ].length && 1 / 0)))), (c = 1 + c, 
            NaN | [] - this || {} % (y += -3)))] = 0 !== (y && (y[[]] += 0)))}tmpl${c = 1 + c, 
            (0 <= (y && (y[c = 1 + c, !1 >>> (y && (y[c = 1 + c, (!1 + !0o644n <= NaN) + !0] = this << this) && NaN)] ^= !1))) >>> NaN}${c = 1 + c, 
            (y && (y[!0] += 2 | NaN - this)) / 31}`]
        } ][a++]:
        for (var n = 5; y && 0 < n; --n) {}
        break;

      case !function() {
            try {
                try {
                    var t;
                    ((b = a) || a || 3).toString();
                } catch (c) {}
            } finally {
                a++, a++;
            }
            switch (new function(n) {
                for (var t in a++ + [ (c = 1 + c, 4294967294 * ("" + -42n + 2)) ]) {
                    c = 1 + c;
                }
            }()) {
              case --b + function() {
                    c = 1 + (c = 1 + c), c += 1;
                }:
                break;

              case t:
                for (var n = 5; "function" == typeof y && 0 <= --_calls_ && y("crap" != typeof t, a++ + (b = a)) && 0 < --n; ) {}
                for (var e, f = 5; c = 1 + c, 0 < f; --f) {
                    for (e in c = 1 + c, t && (t.foo = 22 | ("c" | this) << 23)) {
                        c = 1 + c;
                    }
                }
                c = 1 + c, c += 1;
                break;

              case --b + y:
                switch (function(n) {
                    switch (c = 1 + c, 0) {
                      default:
                      case c = 1 + (c += 1), !1 ^ (n && --n[a++ + t]):
                      case c = 1 + c, t && (t.b /= -4 != (t && (t[c = 1 + c, (y && (y.done = !1 === (y *= 22))) == (-0 >> (2 < 3n) & 1)] += !0)) ^ !1):
                      case c = 1 + c, (t && (t[c = 1 + c, (4 == (2 === [ , 0 ].length) & 0) - !0] = (2 === [ , 0 ].length) << 4)) - !1:
                    }
                    c = 1 + c;
                }) {
                  case (c += 1) + {
                        ...y
                    }[/[abc4]/g.exec((a++ + b || b || 5).toString())]:
                    return t && "function" == typeof t.null && 0 <= --_calls_ && t.null((c = 1 + c, 
                    t && (t.next = 5 != (t = NaN))));

                  case a:
                    break;

                  case function() {
                        for (var a = 5; c = 1 + c, 0 < --a; ) {
                            c = 1 + c;
                        }
                    }(), (c += 1) + --b:
                    try {
                        c += 1;
                    } catch (a) {
                        c = 1 + c, a && (a.async >>= !0), c = 1 + c;
                    } finally {
                        c = 1 + c, y && (y[(c += 1) + ((2 === [ , 0 ].length) in [])] %= 0 & (2 === [ , 0 ].length | "a")), 
                        c = 1 + c, y /= 152, t && (t.a += NaN >>> (y && (y.b = NaN))), 
                        c = 1 + c, c += 1;
                    }
                }
                c += 1;
                break;

              case --b + (b = a) ? a-- : b += a:
                for (var o = 5; (c = c + 1 + 1) + (y && ({
                    "\t": y.async
                } = {
                    "\t": 22 ^ +("" + (0xdeadn << 16n | 0xbeefn))
                }), !0) && 0 < --o; ) {}
                for (var i = 5; "function" == typeof f1 && 0 <= --_calls_ && f1() && 0 < i; --i) {
                    for (var l = 5; --b + ("foo" in {
                        await_1: y,
                        length: (!1 ^ !+("" + (0xdeadn << 16n | 0xbeefn))) % !1,
                        [(c = 1 + (c = 1 + c), !1 === (25 ^ 2 < 3n & !1))]: 1,
                        set: (c = 1 + (c = 1 + (c += 1)), ("23" != (2 === [ , 0 ].length)) < -2 ^ 0 == (t ^= 0))
                    }) && 0 < --l; ) {
                        for (var r = 5; c = 1 + c, t && 0 < --r; ) {}
                    }
                }
            }
            try {
                c += 1;
            } finally {
                switch (1) {
                  default:
                    c = c + 1 + 1, a++, a++;

                  case a++ + {
                        a: 0 % (-0 + this || !1)
                    }:
                    for (var s = 5; -5 in {
                        async: !1,
                        1.5: 1,
                        static: -38 != ("object" !== (c = (c = 1 + (c = 1 + (c = 1 + (c = 1 + c)))) + 1 + 1, 
                        /[a2][^e]+$/))
                    } && 0 < --s; ) {
                        c += 1;
                    }
                    break;

                  case y:
                    try {
                        for (var u = 5; c = 1 + c, ("24" != (2 === [ , 0 ].length)) % (c += 1, 
                        22) << !1 && 0 < u; --u) {
                            c = 1 + c;
                        }
                    } catch (t) {
                        c = 1 + (c = 1 + c), t && (t[(c += 1) + a--] += (t && (t.b |= !1 <= (t && (t[c = 1 + c, 
                        !1 ^ (t && (t.get += !1 ^ (c += 1, !1)))] |= 0)))) <= -2);
                    } finally {
                        c = 1 + c;
                    }
                    try {
                        c += 1;
                    } catch (arguments) {
                        c = 1 + c, c = 1 + (c += 1), c = 1 + (c += 1);
                    }
                    c += 1;
                    break;

                  case this:
                    return;
                }
            }
        }():
        try {
            for (var t = 5; (c += 1) + (a || 3).toString() && 0 < --t; ) {
                for (var e = 5; /[abc4]/g.exec(((c += 1) + void 0 || b || 5).toString()) && 0 < e; --e) {
                    for (var f = 5; --b, c = 1 + c, c += 1, 0 < --f; ) {
                        c = 1 + (c = 1 + c);
                    }
                }
            }
        } catch (c) {
            return "function" == typeof f3 && 0 <= --_calls_ && f3();
        } finally {
            if ({}.a) {
                switch (--b + ("function" == typeof y && 0 <= --_calls_ && y(22))) {
                  case 0:
                    break;

                  case a++ + /[abc4]/.test((--b + ("function" == typeof y && 0 <= --_calls_ && y((c = 1 + c, 
                    NaN !== (c += 1, "24") === NaN), NaN)) || b || 5).toString()):
                    c += 1;
                    break;

                  case {
                        set: (c += 1) + y,
                        Infinity: --b + a++,
                        1.5: --b + (5 in {
                            then: (c = 1 + c, !0),
                            foo: (c = 1 + c, !0 & (NaN | (c += 1, /[a2][^e]+$/)))
                        }),
                        NaN: (c += 1) + ("function" == typeof y && 0 <= --_calls_ && y())
                    }.c:
                    if (--b + ("function" == typeof f4 && 0 <= --_calls_ && f4(..."" + y, (c = 1 + c, 
                    (y && ({
                        [(c = 1 + c, !1 * (-2 + this))]: y.a
                    } = {
                        Infinity: 0
                    })) % (y = 2 % this))))) {
                        for (var o in c = 1 + c, y && (y[a++ + [ (c = 1 + c, 2 !== (y && (y.async |= 0)) != (y && (y.in = y && ({
                            1.5: y[c = 1 + c, 0]
                        } = {
                            1.5: 0
                        })))) ]] += (!0o644n << 4 < NaN) << (c += 1, 0))) {
                            c = 1 + c;
                        }
                    }
                    return (c += 1) + a++;

                  case "function" == typeof f1 && 0 <= --_calls_ && f1(/[abc4]/.test((c = 1 + c, 
                    "" + !0))):
                    try {
                        c = 1 + c, c += 1;
                    } finally {
                        y += !0, c = 1 + (c = 1 + (c = 1 + (c = 1 + c))), c = 1 + (c += 1), 
                        (y = 1).done /= !1;
                    }
                }
            }
        }

      case --b + NaN:
        c += 1;
        break;

      case --b + ("function" == typeof f1 && 0 <= --_calls_ && f1(a++ + (b &= a), (c += 1) + [ --b + (y && "function" == typeof y.b && 0 <= --_calls_ && y.b(--b + (b + 1 - .3), this, "object" in {}, 22)), y && "function" == typeof y.foo && 0 <= --_calls_ && y.foo(), [], +b, (c += 1) + ("" + {
            3: y = (y += 0) & -4 + (2 === [ , 0 ].length) < 0,
            Infinity: !(y = 0 - (0 != ("b" === (2 === [ , 0 ].length)))),
            [a++ + ("foo" in [ (c = 1 + c, y && (y.done ^= !1)), (c = 1 + c, (y += !0 === ~(2 === [ , 0 ].length)) !== (0 == (2 === [ , 0 ].length !== "c"))) ])]: new function(c) {}(),
            then: (c += 1) + (y && y.in),
            get: a++ + ("function" in [ (c = 1 + c, void 0 << ((y && (y.foo ^= NaN)) != "object" - this)), (c = 1 + c, 
            1 != 22 - (2 < 3n) + "function") ])
        }).null ][--b + (25 in {
            next: a++ + (y && y.value)
        })], (c += 1) + (--b + ("function" == typeof y && 0 <= --_calls_ && y`${"function" == typeof y && 0 <= --_calls_ && y()}${y && y[[ (c = 1 + c, 
        y += (y = 0) << (y && (y.undefined = !0)) | (1 | (y && (y.c <<= 0)))) ].value]}}`) || a || 3).toString())):
        --b, b = a, --b, delete a, --b, ("number" == typeof b_1 || b || 5).toString();
        var i = 5;
        do {
            if (--b + ("function" == typeof f2 && 0 <= --_calls_ && f2())) {
                return --b + b;
            }
        } while ((c += 1) + (y = /[abc4]/.test(((1 in [ !1, (c = 1 + (c = 1 + c), 
        !1 <= (y && (y.then += 0)) && (y && ([ y.async ] = [ !0 ])) | 2 === [ , 0 ].length | "c") ] || a || 3).toString() || b || 5).toString())) && 0 < --i);
    }
    (b || 5).toString();
}

var let_2 = f0();

console.log(null, a, b, c, 1 / 0, NaN, void 0);
original result:
null 108 104 40 Infinity NaN undefined

uglified result:
null 108 104 35 Infinity NaN undefined
// reduced test case (output will differ)

// (beautified)
console.log(42n.toString() + 0);
// output: 420
// 
// minify: 42n0
// 
// options: {
//   "compress": {
//     "passes": 1000000,
//     "sequences": 1000000,
//     "unsafe": true,
//     "unsafe_Function": true,
//     "unsafe_math": true,
//     "unsafe_proto": true,
//     "unsafe_regexp": true
//   },
//   "output": {
//     "v8": true
//   },
//   "validate": true
// }
minify(options):
{
  "compress": {
    "passes": 1000000,
    "sequences": 1000000,
    "unsafe": true,
    "unsafe_Function": true,
    "unsafe_math": true,
    "unsafe_proto": true,
    "unsafe_regexp": true
  },
  "output": {
    "v8": true
  }
}

Suspicious compress options:
  evaluate
  unsafe
  unsafe_math
@alexlamsl alexlamsl added the bug label Nov 2, 2022
alexlamsl added a commit to alexlamsl/UglifyJS that referenced this issue Nov 2, 2022
alexlamsl added a commit that referenced this issue Nov 3, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant