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 #4876

Closed
alexlamsl opened this issue Apr 27, 2021 · 0 comments · Fixed by #4877
Closed

ufuzz failure #4876

alexlamsl opened this issue Apr 27, 2021 · 0 comments · Fixed by #4877
Labels

Comments

@alexlamsl
Copy link
Collaborator

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

for (var brake1 = 5; a++ + -4 && brake1 > 0; --brake1) {
    try {
        try {
            if (a++ + (+function() {
                {
                    var bar_1 = function f0(a_1, await_2, arguments_1) {
                        c = c + 1;
                        c = 1 + c, (a_1 && (a_1[(c = c + 1) + (typeof arguments_1 == "function" && --_calls_ >= 0 && arguments_1(23..toString()))] &= -1 - 4 ^ -3 !== 22)) | "b" << "c" < (NaN != {});
                    }();
                }
                {
                    var brake8 = 5;
                    do {
                        var a = (c = c + 1) + b--, undefined_1 = bar_1 &&= a++ + (typeof b_2 == "function");
                    } while (--b + [ [ (c = 1 + c, (2 | true) - (4 == "undefined") == (3 ^ -5) > ("c" >= -4)), (c = 1 + c, 
                    ("undefined" || 25) + 2 % ([ , 0 ].length === 2) < (null && -3) - "function" * 38..toString()), (c = 1 + c, 
                    (null, 1) ^ NaN > !0o644n | 4 >>> "" >> ("a" ^ 22)) ], b + 1 - .1 - .1 - .1, undefined_1[c = 1 + c, 
                    (Infinity && "number") > ("c", null) !== {} >> 0 << (24..toString() == 25)], --b + --a, (c = 1 + c, 
                    ([] >= 1) ** (false > NaN) << (bar_1 && (bar_1[a && a[c = 1 + c, (22 ^ -1 && "function" !== -1) >= (bar_1 = (0 == "object") >> (23..toString() != Infinity))]] += !0 ^ (bar_1 >>>= 22 | "undefined")))) ? (c = 1 + c, 
                    ((c = c + 1, 24..toString()) != (0 | 25)) % ((-4 | "a") << (-2 | -3))) : (c = 1 + c, 
                    -((3 ^ "a") <= (a && (a.foo = "" % 1)))) ] && --brake8 > 0);
                }
                return 1 === 1 ? a : b;
            }() ? b = a : (c = c + 1) + void ((a && (a[c = 1 + c, ((NaN || "c") >= 2 >> /[a2][^e]+$/) / ((a = null - -3) % ([] + "a"))] += [ , 0 ][1] <= 38..toString())) ^ ([ , 0 ].length === 2) <= -1 ^ (0 && -1) >> ("foo" != 2)))) {
                var async = a++ + (-4 in [ --b + +(NaN / "object" + (1 >>> 38..toString()) + void (3 || 24..toString())), --b + async, ...[ ...[ ...[ typeof f2 == "function" && --_calls_ >= 0 && f2((c = 1 + c, 
                ~3 - (null || 23..toString()) <= (24..toString() || []) >>> (-1 == [ , 0 ][1])), (c = 1 + c, 
                async && (async[a++ + async] ||= "" % "b" << -5 * true != -2 > [ , 0 ][1] < [] >> -0)), (c = 1 + c, 
                (delete 5 | "a" >= "object") << (2 === 23..toString()) % ("c" <= "function"))), --b + (b += a), 0 === 1 ? a : b ], /[abc4]/g.exec(((c = c + 1) + /[abc4]/.test(((c = 1 + c, 
                ((c = c + 1, -3) && (2 && "a")) >>> ((c = c + 1, [ , 0 ].length === 2) === 25 << null)) || b || 5).toString()) || b || 5).toString()), typeof async_1 == "string" ], async ], , ..."" + async ]);
            } else {
                L17898: {
                    c = c + 1;
                    switch (typeof (a++ + (typeof f2 == "function" && --_calls_ >= 0 && f2((c = 1 + c, 
                    (async && (async.set >>>= delete 24..toString() < (async = 5 || this))) > (async && (async[c = 1 + c, 
                    ~this >>> (-2 !== "") === ((3 & []) != (c = c + 1, Number(0xdeadn << 16n | 0xbeefn)))] <<= [] >>> false)) - (!0o644n < 24..toString())), NaN)))) {
                      case b++:
                        (c = c + 1) + (typeof async == "object");
                        ;
                        break;

                      case NaN in [ (c = c + 1) + (async && async[--b + (async && async[c = 1 + c, "bar" << null << ("a" <= this) < +("a" >>> 5)])]), --b + (1 === 1 ? a : b), a++ + +((-3 % 0 || "number" & !0o644n) != ((-42n).toString() - 4 === 38..toString() > "c")), /[abc4]/g.exec(("bar" in {
                            async: async,
                            1.5: (c = 1 + c, (delete "undefined" > (async += false >= false)) + (("a" >= 23..toString()) + !0o644n / null)),
                            async: async,
                            [(c = 1 + c, async = async && (async.undefined ??= (c = c + 1, "undefined") !== 1 - 22) || 3 != "" | 24..toString() ^ NaN)]: (c = 1 + c, 
                            "undefined" <= 25 >= -4 % 38..toString(), (async **= undefined == "a") % (38..toString() <= {})),
                            get: (c = 1 + c, (c = c + 1, -5 / -1) === false >>> 0 < "object" / 24..toString())
                        } || b || 5).toString()), async && async[a++ + ((c = 1 + c, ((23..toString() ?? "foo") || async && (async[c = 1 + c, 
                        -((c = c + 1, {}) === (3 | -5))] >>= 2 | "a")) == ("bar", "b") <= "object" + "b") || a || 3).toString()] ]:
                        if (a++ + ~b) {
                            var expr18 = --b + [ (c = 1 + c, (async && (async[a++ + ((c = 1 + c, -([ , 0 ].length === 2 != ([ , 0 ].length === 2)) ?? +(23..toString() >>> 22)) || 3).toString()[c = 1 + c, 
                            ([ , 0 ].length === 2 === 25 ?? -3 * Infinity) == (23..toString(), -0) <= null >> false]] = (1 & []) * (38..toString() && 5))) >> delete (true != "c")), (c = 1 + c, 
                            38..toString() <= 1 === ([] | -2), void [] + (1 + this)), (c = 1 + c, (25 ^ -2) >> (async *= false ^ {}), 
                            c = c + 1, [ , 0 ][1], /[a2][^e]+$/ | {}) ].value;
                            L17899: for (let key18 in expr18) {
                                c = 1 + c;
                                var foo = expr18[key18];
                                switch (c = 1 + c, (23..toString() !== 5 || "a" % 24..toString()) > ("foo" + 25) / ("object" ^ "object")) {
                                  case c = 1 + c, (this ^ -1) > (null ^ null) != ("" > "number") / (25 ^ []):
                                    ;
                                    break;

                                  case c = 1 + c, (true > Number(0xdeadn << 16n | 0xbeefn)) << (0 << -5) >>> (foo && (foo[c = 1 + c, 
                                    (foo && (foo.set += -3 || -5 || ("function" ?? 24..toString()))) >= (5 << -2 === (3 == 3))] >>= Infinity >> NaN)) % ("bar" / -2):
                                    ;
                                    break;

                                  case c = 1 + c, foo += ((22 && 3) ^ (-4 || null)) !== (-2 >>> 38..toString() !== 25 < 0):
                                    ;
                                    break;

                                  case c = 1 + c, (async && (async.done = "number" / "c" ^ ~-3)) / ((c = c + 1, 4) * ("number" && true)):
                                    ;
                                    break;
                                }
                            }
                        }
                        break;

                      case async && (async.get = (3 != "c") << (async && (async.in = "object" !== true)) & (3 | "a" || [ , 0 ][1] >> -2)):
                        try {
                            for (var brake21 = 5; ++b && brake21 > 0; --brake21) {
                                c = 1 + c, (async && (async.get = 24..toString() > -3 < ("foo" < -3))) + (this >>> NaN == ([ , 0 ][1] ^ [ , 0 ].length === 2));
                            }
                        } finally {
                            if (c = 1 + c, (([ , 0 ][1] >= "b") - (24..toString() <= this)) * (-0 >> -4 > null + 38..toString())) {
                                c = 1 + c, ("foo" >= 22) * (async && (async.NaN = undefined == 25)) >>> (async && (async[+a] &&= (-1 || /[a2][^e]+$/) - 23..toString() / 2));
                            }
                            for (var brake25 = 5; (c = 1 + c, ((5 == []) >> (async = Number(0xdeadn << 16n | 0xbeefn) & 4)) % ("bar" >> "foo" & ("a", 
                            "undefined"))) && brake25 > 0; --brake25) {
                                c = 1 + c, (async && (async[c = 1 + c, (0 || "bar") >> (async && (async.foo = this !== undefined)) == (false === "number") + ("a" << [ , 0 ][1])] -= !0o644n && [ , 0 ].length === 2)) <= (23..toString() === (-42n).toString()) !== ("b" * -2 ^ 25 + 5);
                            }
                        }
                        {
                            var brake27 = 5;
                            do {
                                if (--b + [ (c = 1 + c, 24..toString() & 23..toString() | (async && (async[c = 1 + c, 
                                c = c + 1, async.next = 4 < "number" !== 22 + 3] >>>= -2 < -1)) || (38..toString() == 2) % (/[a2][^e]+$/ != 4)), ..."" + async, (c = 1 + c, 
                                (23..toString() !== NaN) <= "" << "b" == ({} || 25) > (undefined ^ 24..toString())) ].done) {}
                            } while (((([], arguments_1, async) => {
                            })("", {}, (c = 1 + c, (25 >> this) - ([ , 0 ].length === 2 != []) | ("b" <= false) >> (-4 >> 25))) || 2).toString()[(c = c + 1) + (typeof a === "undefined")] && --brake27 > 0);
                        }
                        break;

                      case new function foo() {
                            this[typeof {
                                set: (c = 1 + c, (undefined != [ , 0 ][1] ^ (async /= "object" == -5)) / (25 - {} > ("a" == NaN)))
                            }.done] *= ((async && (async[c = 1 + c, (async ||= 25 ^ false) >>> ("object" === 38..toString()) << (-2 % undefined >> (1 >> -4))] &&= {} || "foo")) <= (this, 
                            [ , 0 ][1]) | (async += "undefined" > []) >> (/[a2][^e]+$/ ^ {})) >= (~(c = c + 1, 
                            "b") & ((c = c + 1, {}) ^ null !== false));
                        }([]):
                        break;
                    }
                    {
                        var expr30 = --b + (async && async.then);
                        L17900: for (async in expr30) {
                            c = 1 + c;
                            var b_1 = expr30[async];
                            {
                                var brake31 = 5;
                                while ((c = c + 1) + ~((true >= -3 ^ "function" === "bar") & ((22, -0) ^ ("number" ?? ""))) && --brake31 > 0) {
                                    var brake32 = 5;
                                    L17901: do {
                                        try {
                                        } catch (yield_1) {
                                            c = 1 + c, (/[a2][^e]+$/ <= {} && null !== NaN) / ((async = "number" / "a") - (Infinity >>> Infinity));
                                            c = 1 + c, c = c + 1, async && ([ async[((c = 1 + c, (b_1 *= -3 ?? 23..toString()) < {} >>> -0 & ({} < false) << {} % 38..toString()) || a || 3).toString()] ] = [ (NaN === "number") <= (3 == "bar") ]);
                                        }
                                    } while ((c = c + 1) + (--b + {
                                        "\t": (c = 1 + c, ((c = c + 1, []) >> 23..toString() % "foo") + (("object" ^ 23..toString()) === (3 !== 5)))
                                    }) && --brake32 > 0);
                                }
                            }
                        }
                    }
                    var foo_1;
                }
            }
        } catch (a_1) {
            switch (((c = c + 1) + (/[abc4]/g.exec((--b + /[abc4]/g.exec(((c = c + 1) + a++ || b || 5).toString()) || b || 5).toString()) ? a++ + (typeof alias0 != "undefined" && alias0 || 9).toString()[a++ + (a_1 && typeof a_1.next == "function" && --_calls_ >= 0 && a_1.next())] : /[abc4]/.test((--b + b-- || b || 5).toString())) || a || 3).toString()) {
              case --b:
                switch ((c = c + 1) + [ a++ + (1 === 1 ? a : b) ].get) {
                  case a++ + (a++ + delete ((0 % 5 || /[a2][^e]+$/ << NaN) !== !(c = c + 1, -5))):
                    switch (/[abc4]/.test((--b + (a_1 && a_1.b) || b || 5).toString())) {
                      case --b + (("foo" != /[a2][^e]+$/ ^ null >>> null) == (-1 < "function" == -0 <= /[a2][^e]+$/)):
                        break;

                      case --b + ((c = c + 1) + ++a || a || 3).toString():
                        break;

                      case --b + (typeof f2 == "function" && --_calls_ >= 0 && f2()):
                        {
                            var expr41 = (c = 1 + c, a_1 && (a_1.a *= ((-1, 2) || -1 >= "c") / ({} === NaN | -1 / NaN)));
                            L17902: for (var key41 in expr41) {
                                c = 1 + c;
                                var arguments = expr41[key41];
                                c = 1 + c, ~(key41 && (key41.b >>>= ("c" && 5) > (a_1 && (a_1.static = "a" / -4))));
                            }
                        }
                        break;

                      case /[abc4]/.test((((c = 1 + c, (25 ?? this) * (1 + 2), (a_1 && (a_1[c = 1 + c, (c = c + 1, 
                        undefined ^ 0) != ("bar" << 25 === 22 % 2)] = -4 != "function")) / +{}) || a || 3).toString() || b || 5).toString()):
                        try {
                            c = 1 + c, (25 >= 22 || 25 != 22) <= (4 > 5 && "object" + "function");
                        } catch (await) {
                        } finally {
                        }
                        {
                            var expr45 = (c = 1 + c, (-5, "undefined") >= delete "number" > (-5 / 22 & (async && (async.in *= "object" != "object"))));
                            for (var key45 in expr45) {
                                c = 1 + c, ((null ^ 4) != (-0, -2)) < - -3 / ("a" < true);
                            }
                        }
                        break;
                    }
                    break;

                  case b = a:
                    break;

                  case a++ + ("c" in {
                        a: --b,
                        var: [] in {}
                    }):
                    break;

                  case a_1:
                    for (var brake47 = 5; (c = c + 1) + (a_1 && a_1[--b + (b &= a)]) && brake47 > 0; --brake47) {
                        try {
                            {
                                var brake49 = 5;
                                L17903: do {
                                    c = 1 + c, "" / "b" > (22 ^ "c") == (5 || true) << (-0 !== 24..toString());
                                } while ((c = 1 + c, (a_1 && (a_1[c = 1 + c, (async && ([ async.var ] = [ "bar" / "foo" ^ 4 < 24..toString() ])) != (4 !== 2) << (-5 ^ NaN)] += 5 ^ "a"), 
                                "number" >= 25) ^ -5 + "b" >= /[a2][^e]+$/ << 1) && --brake49 > 0);
                            }
                        } finally {
                            c = 1 + c, (NaN >= "") / (-0 % ([ , 0 ].length === 2)) ?? false >> 22 ^ undefined != 25;
                            c = 1 + c, 1 % "object" >= (1, [ , 0 ][1]) < false - !0o644n << (undefined <= "number");
                        }
                    }
                    ;
                    break;
                }
                break;

              default:
                {
                    var expr54 = --b + ~((0 == "object") / (-1 >= "undefined") << ("bar" >> 4 || async && (async.value = [ , 0 ][1] >> 24..toString())));
                    for (var key54 in expr54) {
                        c = 1 + c;
                        var foo_1 = expr54[key54];
                    }
                }

              case /[abc4]/.test((a++ + (a_1 && a_1[(c = c + 1) + (22 in [])]) || b || 5).toString()):
                c = c + 1;
                try {
                    try {
                        c = c + 1;
                    } catch (a_2) {
                        {
                            var brake60 = 5;
                            L17904: while (--b + [ (c = 1 + c, (a_2 && (a_2[c = 1 + c, a_1 && (a_1.async = -(true >>> 4) | ("foo" | -4) <= (NaN & "undefined"))] += -1 + this)) & (c = c + 1, 
                            [ , 0 ][1]) && (a_1 && ([ a_1[a++ + a++] ] = [ -0 / 22 ^ (23..toString(), 2) ]))), (c = 1 + c, 
                            ({} ^ 38..toString()) == ((-42n).toString() ^ false) === ("number" - [] ^ 3 + 1)), (c = 1 + c, 
                            ("" != 0) > 5 % true === (Number(0xdeadn << 16n | 0xbeefn) / -3 | "number" % "number")), (c = 1 + c, 
                            (-4 - null, /[a2][^e]+$/ + 25) << ((c = c + 1, NaN) << undefined - Infinity)) ][c = 1 + c, 
                            c = c + 1, ("a" | "foo") + (23..toString() ?? "number")] && --brake60 > 0) {
                                var await_1 = (c = 1 + c, a_1 && (a_1[[ (c = 1 + c, (a_2 += 4 >>> 22, await_1 && (await_1.a = 24..toString() % 24..toString())) ^ NaN << Infinity <= (-5 < "foo")), (c = 1 + c, 
                                (4 >>> "") - ([] | -4) | (c = c + 1, "foo" != -0)), (c = 1 + c, (null != -2 || 4 >>> 1) ^ (NaN ^ "bar" | 4 * "c")), (c = 1 + c, 
                                (-5 != -4) < ("" == ([ , 0 ].length === 2)) ?? null % 3 >> (a_2 = true << -0)) ].next] %= delete ("function" === "foo") % (3 * -5 >>> ("foo" ^ 5))));
                            }
                        }
                        {
                            var async = function f1(foo_2, a, async_2) {
                            }();
                        }
                    }
                } finally {
                    {
                        var brake63 = 5;
                        L17905: while ("foo" && --brake63 > 0) {
                            c = 1 + c, ((c = c + 1, true) != -5 in 38..toString()) + (("c" | 25) >= (Infinity & "undefined"));
                        }
                    }
                    try {
                        {
                            var expr67 = a++ + ((c = 1 + c, (void 3 && "foo" > ([ , 0 ].length === 2)) ^ "undefined" === -5 & (a_1 && (a_1[c = 1 + c, 
                            async[a++ + (typeof f3 == "function" && --_calls_ >= 0 && f3() ? !function() {
                            }() : function a_1_2() {
                            })] = 24..toString() >> Infinity >> (-5 >> 5) !== (a_1 && (a_1.Infinity = ([], undefined) >>> 23..toString() % 24..toString()))] <<= "bar" % ""))) || 5).toString()[c = 1 + c, 
                            a_1 && (a_1[--a] /= ((-0, (-42n).toString()) !== {} >>> "number", (undefined & -5) >> (2 >>> "foo")))];
                            L17906: for (var key67 in expr67) {
                                c = c + 1;
                            }
                        }
                    } catch (b_1) {
                        {
                        }
                        c = 1 + c, false > "foo" !== -2 < 2 == "function" < Infinity > (a_1 = NaN * -1);
                    }
                }
                break;

              case a++ + (async && async.static):
                ;
                break;
            }
            {
                var expr72 = --b + (b += a);
                for (var key72 in expr72) {
                    c = 1 + c;
                    var a_1 = expr72[key72];
                }
            }
        } finally {
            {
                var brake74 = 5;
                do {
                    L17907: for (var brake75 = 5; typeof async == "function" && --_calls_ >= 0 && async("c", 3 in {
                        null: b += a
                    }) && brake75 > 0; --brake75) {
                        switch ((c = c + 1) + /[abc4]/g.exec((--b + (async = [ (c = 1 + c, !("" >= -1) == (2 + -5 == (async && (async.a = false || -3)))) ].static) || b || 5).toString())) {
                          case ((c = c + 1) + (typeof f2 == "function" && --_calls_ >= 0 && f2("c", false, (c = c + 1) + a++)) || 7).toString()[a++ + (async && typeof async.c == "function" && --_calls_ >= 0 && async.c(--b + {
                                set: (c = 1 + c, (async && (async[a++ + [ (c = 1 + c, c = c + 1, (3 | 24..toString()) > NaN % /[a2][^e]+$/) ].set] += 25 - 2 << ("undefined" ^ 38..toString()))) > (async && (async[a++ + ((c = 1 + c, 
                                -1 / -1 == ([ , 0 ].length === 2) > [] != (async = (1 >>> {}) + (c = c + 1, "a"))) || 5).toString()[c = 1 + c, 
                                (NaN == NaN) % +/[a2][^e]+$/, (async += -1 >>> -4) <= (async <<= [ , 0 ][1] - Infinity)]] = (false !== {}) / ("function" - "bar")))),
                                get: (c = 1 + c, (c = c + 1, "bar" | "bar") == (-2 > -5) >> (24..toString() ?? "foo")),
                                get a() {
                                    c = 1 + c, async && (async.then = (2 && 5, this - -0) ** (("a" ^ -0) <= (4 > 22)));
                                },
                                async: (c = 1 + c, async && (async.c |= (async && (async[delete ((async = this < 38..toString()) > (23..toString() <= Infinity) >= ("bar" < ([ , 0 ].length === 2), 
                                [] ?? 22))] += 38..toString() + false < (Infinity ^ {}))) !== ("" >= undefined ^ (-0 | "foo"))))
                            }.null))]:
                            {
                                var expr78 = --b + (b += a);
                                for (let key78 in expr78) {
                                    continue L17907;
                                }
                            }
                            break;

                          case --b + (((-1 < 38..toString()) << (-1 !== [])) - ((1 || 2) < (true | 38..toString()))):
                            c = c + 1;
                            var c_1 = (c = c + 1) + (b %= a);
                            break;

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

                          case a++ + --b:
                        }
                    }
                } while ((+("bar", 1) >> ((-3 === []) <= Infinity % true) ? (c = c + 1) + (b = a) : a++ + {
                    in: "b" in [ (c = c + 1) + (typeof c_1 == "function" && --_calls_ >= 0 && c_1(-2, (c = 1 + c, 
                    ("bar" ^ "c") * (1 & [ , 0 ][1]) % (22 <= -2 === ("a" || 1))), (c = 1 + c, (c = c + 1, 
                    true ^ undefined) ^ (2 > -3) % (1 & Infinity)))), {} in [ (c = 1 + c, "number" >> -4 > (c = c + 1, 
                    1) ?? (c = c + 1, (-42n).toString()) + ("bar" == false)) ], (c = 1 + c, (({} | "c") ^ (-1 ^ 23..toString())) <= +{} + (c = c + 1, 
                    "bar")) ],
                    Infinity: a++ + (typeof f2 == "function" && --_calls_ >= 0 && f2(24..toString() in {
                        1.5: (c = 1 + c, c_1 && ({
                            set: c_1.var
                        } = {
                            set: (c = c + 1, undefined < 3) && (c = c + 1, "bar" % 3)
                        })),
                        length: (c = 1 + c, (24..toString(), "object") !== (c_1 && (c_1.foo >>>= Infinity ^ undefined)) === (c = c + 1, 
                        23..toString() == {}))
                    }))
                }[b = a]) && --brake74 > 0);
            }
            new function b_2(Infinity_2, b_2) {
                {
                    {
                        var b_2 = function f2(a_2, foo_2) {
                        }();
                    }
                }
            }(--b + b--, a++ + (typeof f1 == "function" && --_calls_ >= 0 && f1(a++ + void function b_2() {
                let b_2 = void function() {
                }();
                c = 1 + c, void (-4, "foo") - (4 - 3) * -"b";
                c = 1 + c, 23..toString() ^ 2 || (async **= null <= "a") || "bar" / Infinity << -2 / -1;
                c = 1 + c, (-1 ^ Infinity <= this) >>> ((c_1 += "a" > undefined) == (-3) ** -4);
                c = 1 + c, "b" * /[a2][^e]+$/ % (22 >>> []) != (22 <= "a" !== 23..toString() > "a");
            }(), false in {
                set in(NaN_2) {
                    this.foo = -1 ?? 22;
                }
            }, Number(0xdeadn << 16n | 0xbeefn))), c_1);
        }
    } catch (a_2) {
        {
            var brake91 = 5;
            while (typeof f2 == "function" && --_calls_ >= 0 && f2(this) && --brake91 > 0) {
                c = c + 1;
            }
        }
        async && async[a++ + ~(c = c + 1, (Infinity == -4) <= "foo" << "undefined")];
    }
}

{
    var b = function f3(b_1, async_1) {
        {
            return;
            [ void ((undefined, -2) !== (undefined & "a") ^ (async_1 && (async_1.a = (async += -5 * [ , 0 ][1]) !== undefined << -3))), b += a, (c = c + 1) + /[abc4]/.test((--b || b || 5).toString()), -3 in [ {
                set: (c = c + 1) + (typeof f1 == "function" && --_calls_ >= 0 && f1(NaN)),
                set: --b
            }[/[abc4]/.test((--b + (c = 1 + c, b_1 && (b_1.get = (c = c + 1, 24..toString()) + (/[a2][^e]+$/ ^ 38..toString()) != ("bar" | -0) / ("b" && 3))) || b || 5).toString())], +function undefined_2() {
                try {
                    c = 1 + c, (1 % this == (undefined_2 && (undefined_2[c = 1 + c, "object" <= "a" !== null - 5 != (c = c + 1, 
                    "foo" <= -1)] = 5 > "bar"))) ** (-0 / {} * (-3 & Infinity));
                } finally {
                }
                var Infinity_1;
            }() ], ..."" + b_1 ];
        }
        if (async_1 && typeof async_1.async == "function" && --_calls_ >= 0 && async_1.async((/[a2][^e]+$/ & -0) <= "foo" * -5 > -("c" - null))) {
            var yield_2 = --b + b++;
        } else {
            ((async ^= --b + (yield_2 && yield_2[+("number" * null << (2 >>> 38..toString()) != ("function" == ([ , 0 ].length === 2)) >>> delete 5)] || a || 3).toString()) || a || 3).toString();
        }
    }();
}

console.log(null, a, b, c, Infinity, NaN, undefined);
// uglified code
// (beautified)
for (var n, t, e, a, i, o, f, c, r, s, y, g, b, h, l, d, u, N, x, p, v, S, k, w, _ = 10, I = 100, m = 10, j = 0, q = 5; I++ - 4 && 0 < q; --q) {
    try {
        try {
            if (I++ + (+function() {
                for (var t, n, e = function f0(t, n, e) {
                    j = 1 + (j += 1), t && (t[(j += 1) + ("function" == typeof e && 0 <= --_ && e("23"))] &= -6);
                }(), a = 5; t = (j += 1) + m--, n = e &&= t++ + ("function" == typeof b_2), --m + [ [ !1, "undefined" + 2 % (2 === [ , 0 ].length) < NaN, 1 ^ !0o644n < NaN | 0 ], m + 1 - .1 - .1 - .1, n[!0], --m + --t, (j = 1 + (j = 1 + (j = 1 + (j = 1 + (j = 1 + j)))), 
                1 << (e && (e[t && t[j = 1 + j, (e = 0) <= !0]] += !0 ^ (e >>>= 22))) ? (j = 1 + j, 
                (25 != (j += 1, "24")) % 0) : (j = 1 + j, -(3 <= (t && (t.foo = 0))))) ] && 0 < --a; ) {}
                return t;
            }() ? m = I : (j += 1) + void (I && (I[j = 1 + j, !1 / ((I = 3) % "a")] += !0)))) {
                n = I++ + (-4 in [ --m + NaN, --m + n, "function" == typeof f2 && 0 <= --_ && f2(!0, (j = 1 + (j = 1 + j), 
                n && (n[I++ + n] ||= !1)), (j = 1 + j, 1)), --m + (m += I), m, /[abc4]/g.exec(((j += 1) + /[abc4]/.test((j = 1 + j, 
                j += 1, ("a" >>> (25 === (j += 1, 2 === [ , 0 ].length)) || m || 5).toString())) || m || 5).toString()), "string" == typeof async_1, n, , ..."" + n ]);
            } else {
                switch (j += 1, typeof (I++ + ("function" == typeof f2 && 0 <= --_ && f2((j = 1 + j, 
                (n && (n.set >>>= !0 < (n = 5))) > (n && (n[j = 1 + j, ~this >>> !0 === (0 != (j += 1, 
                +("" + (0xdeadn << 16n | 0xbeefn))))] <<= 0)) - (!0o644n < "24")), NaN)))) {
                  case m++:
                    j += 1;
                    break;

                  case NaN in [ (j += 1) + (n && n[--m + (n && n[j = 1 + j, 0 << ("a" <= this) < 0])]), --m + I, I++ + +(("number" & !0o644n) != ("" + -42n - 4 === !1)), /[abc4]/g.exec(("bar" in {
                        async: n,
                        1.5: ((n += !0) < !0) + (!0 + !0o644n / null),
                        async: n,
                        [(j = 1 + (j = 1 + j), n = n && (n.undefined ??= -21 !== (j += 1, "undefined")) || 25)]: (n **= !1) % !0,
                        get: (j = 1 + (j = 1 + j), !1 === (j += 1, 5))
                    } || m || 5).toString()), n && n[I++ + (j = 1 + j, (I || 3).toString())] ]:
                    if (I++ + ~m) {
                        for (k in t = --m + [ (j = 1 + j, (n && (n[I++ + ("" + (-(2 === [ , 0 ].length != (2 === [ , 0 ].length)) || 3))[j = 1 + (j = 1 + j), 
                        1 == (2 === [ , 0 ].length === 25 ?? -Infinity)]] = 0)) >> !0), void 0 + (1 + this), (j = 1 + (j = 1 + j), 
                        n *= 0, j += 1, 0) ].value) {
                            switch (j = 1 + j, e = t[k], !1) {
                              case j = 1 + (j = 1 + j), 0 < (-1 ^ this) != 0:
                              case j = 1 + j, (+("" + (0xdeadn << 16n | 0xbeefn)) < !0) << 0 >>> (e && (e[j = 1 + j, 
                                !1 <= (e && (e.set += -3))] >>= 0)) % NaN:
                              case j = 1 + j, e += !0:
                              case j = 1 + j, (n && (n.done = 2)) / (!0 * (j += 1, 4)):
                            }
                        }
                    }
                    break;

                  case n && (n.get = !0 << (n && (n.in = !0)) & 3):
                    try {
                        for (a = 5; ++m && 0 < a; --a) {
                            j = 1 + j, n && (n.get = !1);
                        }
                    } finally {
                        for (j = 1 + j, !1 * (!1 - ("24" <= this)) && (j = 1 + j, n && (n.NaN = !1), n && (n[+I] &&= -12.5)), 
                        i = 5; j = 1 + j, (!1 >> (n = 4 & +("" + (0xdeadn << 16n | 0xbeefn)))) % 0 && 0 < i; --i) {
                            j = 1 + j, n && (n[j = 1 + j, "bar" >> (n && (n.foo = void 0 !== this)) == 0] -= !0o644n && 2 === [ , 0 ].length);
                        }
                    }
                    for (o = 5; --m, j = 1 + j, n && (n[j = 1 + j, j += 1, n.next = !0] >>>= !0), ([ [] ] = [ "", j = 1 + (j = 1 + j) ]), 
                    "2"[(j += 1) + (void 0 === I)] && 0 < --o; ) {}
                    break;

                  case new function foo() {
                        this[typeof {
                            set: (j = 1 + j, (!0 ^ (n /= !1)) / !1)
                        }.done] *= ((n && (n[j = 1 + j, (n ||= 25) >>> !1 << 0] &&= {})) <= 0 | (n += !0) >> 0) >= (j += 1, 
                        -1 & (!0 ^ (j += 1, {})));
                    }():
                }
                for (n in --m + (n && n.then)) {
                    for (j = 1 + j, f = 5; (j += 1) + -1 && 0 < --f; ) {
                        for (c = 5; (j += 1) + (--m + {
                            "\t": (j = 1 + j, j += 1, 0)
                        }) && 0 < --c; ) {}
                    }
                }
            }
        } catch (z) {
            switch (((j += 1) + (/[abc4]/g.exec((--m + /[abc4]/g.exec(((j += 1) + I++ || m || 5).toString()) || m || 5).toString()) ? I++ + ("" + ("undefined" != typeof alias0 && alias0 || 9))[I++ + (z && "function" == typeof z.next && 0 <= --_ && z.next())] : /[abc4]/.test((--m + m-- || m || 5).toString())) || I || 3).toString()) {
              case --m:
                switch ((j += 1) + [ I++ + I ].get) {
                  case I++ + (I++ + (j += 1, !0)):
                    switch (/[abc4]/.test((--m + (z && z.b) || m || 5).toString())) {
                      case --m + !0:
                      case --m + ((j += 1) + ++I || I || 3).toString():
                        break;

                      case --m + ("function" == typeof f2 && 0 <= --_ && f2()):
                        for (s in j = 1 + j, r = z && (z.a *= 2 / 0)) {
                            j = 1 + j, r[s], j = 1 + j, s && (s.b >>>= (z && (z.static = NaN)) < 5);
                        }
                        break;

                      case /[abc4]/.test((j = 1 + j, (((z && (z[j = 1 + j, 1 != (j += 1, 0)] = !0)) / NaN || I || 3).toString() || m || 5).toString())):
                        try {
                            j = 1 + j;
                        } catch (t) {}
                        for (y in j = 1 + j, (-5 / 22 & (n && (n.in *= !1))) < !1) {
                            j = 1 + j;
                        }
                    }
                    break;

                  case m = I:
                  case I++ + ("c" in {
                        a: --m,
                        var: [] in {}
                    }):
                    break;

                  case z:
                    for (g = 5; (j += 1) + (z && z[--m + (m &= I)]) && 0 < g; --g) {
                        try {
                            j = 1 + (j = 1 + j), z && (z[j = 1 + j, (n && ([ n.var ] = [ 1 ])) != !0 << -5] += 5);
                        } finally {
                            j = 1 + (j = 1 + j);
                        }
                    }
                }
                break;

              default:
                for (b in --m + ~(NaN << (n && (n.value = 0)))) {
                    j = 1 + j;
                }

              case /[abc4]/.test((I++ + (z && z[(j += 1) + (22 in [])]) || m || 5).toString()):
                j += 1;
                try {
                    try {
                        j += 1;
                    } catch (t) {
                        for (h = 5; --m + [ (j = 1 + j, (t && (t[j = 1 + j, z && (z.async = 1)] += -1 + this)) & (j += 1, 
                        0) && z && ([ z[I++ + I++] ] = [ 2 ])), 38 == ("" + -42n ^ !1) === 4, !1 === (("" + (0xdeadn << 16n | 0xbeefn)) / -3 | NaN), (j = 1 + (j = 1 + (j = 1 + j)), 
                        0) ][j = 1 + (j += 1), j += 1, "023"] && 0 < --h; ) {
                            j = 1 + j, l = z && (z[[ (j = 1 + j, !0 ^ (t += 0, l && (l.a = 0))), (j = 1 + j, 
                            9), 1, (j = 1 + (j = 1 + (j += 1)), !0 < ("" == (2 === [ , 0 ].length)) ?? 0 >> (t = 1)) ].next] %= 1);
                        }
                        n = void 0;
                    }
                } finally {
                    for (d = 5; 0 < --d; ) {
                        j = 1 + j, j += 1, 0 in "38";
                    }
                    try {
                        for (u in I++ + (j = 1 + j, ("" + (void 0 ^ !1 & (z && (z[j = 1 + j, n[I++ + (!!("function" == typeof f3 && 0 <= --_ && f3()) || function a_1_2() {})] = 0 !== (z && (z.Infinity = 0))] <<= NaN)) || 5))[j = 1 + j, 
                        z && (z[--I] /= 0)])) {
                            j += 1;
                        }
                    } catch (t) {
                        j = 1 + j, z = NaN;
                    }
                }
                break;

              case I++ + (n && n.static):
            }
            for (x in N = --m + (m += I)) {
                var j = 1 + j, z = N[x];
            }
        } finally {
            p = 5;
            do {
                t: for (v = 5; "function" == typeof n && 0 <= --_ && n("c", 3 in {
                    null: m += I
                }) && 0 < v; --v) {
                    switch ((j += 1) + /[abc4]/g.exec((--m + (n = [ (j = 1 + j, 0 == (-3 == (n && (n.a = -3)))) ].static) || m || 5).toString())) {
                      case ("" + ((j += 1) + ("function" == typeof f2 && 0 <= --_ && f2("c", !1, (j += 1) + I++)) || 7))[I++ + (n && "function" == typeof n.c && 0 <= --_ && n.c(--m + {
                            set: (j = 1 + j, (n && (n[I++ + [ (j = 1 + j, j += 1, !1) ].set] += 1472)) > (n && (n[I++ + (j = 1 + j, 
                            ("" + (1 == [] < (2 === [ , 0 ].length) != (n = 1 + (j += 1, "a")) || 5))[j = 1 + j, 
                            (n += 15) <= (n <<= -Infinity)])] = NaN))),
                            get: (j = 1 + j, 0 == (j += 1, 0)),
                            get a() {
                                j = 1 + j, n && (n.then = (this - -0) ** !0);
                            },
                            async: (j = 1 + j, n && (n.c |= 0 !== (n && (n[n = this < "38", !0] += !1))))
                        }.null))]:
                        for (w in --m + (m += I)) {
                            continue t;
                        }
                        break;

                      case 1 + --m:
                        j += 1, j += 1, m %= I;
                        break;

                      case m:
                        break;

                      case I++ + --m:
                    }
                }
            } while ((j += 1) + (m = I) && 0 < --p);
            --m, m--, I++, "function" == typeof f1 && 0 <= --_ && f1(I++ + void function b_2() {
                j = 1 + (j = 1 + (j = 1 + (j = 1 + j)));
            }(), !1 in {
                set in(t) {
                    this.foo = -1;
                }
            }, +("" + (0xdeadn << 16n | 0xbeefn)));
        }
    } catch (t) {
        for (S = 5; "function" == typeof f2 && 0 <= --_ && f2(this) && 0 < --S; ) {
            j += 1;
        }
        n && n[I++ + (j += 1, -2)];
    }
}

console.log(null, I, m = void 0, j, Infinity, NaN, void 0);
original result:
null 131 undefined 95 Infinity NaN undefined

uglified result:
null 135 undefined 75 Infinity NaN undefined
// reduced test case (output will differ)

// (beautified)
var bar_1 = function f0() {}();

do {
    var undefined_1 = bar_1 &&= 0;
} while ([ undefined_1[0] ]);
// output: TypeError: Cannot read property '0' of undefined
// minify: Error: Script execution timed out after 200ms
// options: {
//   "compress": {
//     "hoist_vars": true,
//     "keep_infinity": true,
//     "passes": 1000000,
//     "unsafe": true
//   },
//   "keep_fnames": true,
//   "toplevel": true,
//   "output": {
//     "v8": true
//   },
//   "validate": true
// }
minify(options):
{
  "compress": {
    "hoist_vars": true,
    "keep_infinity": true,
    "passes": 1000000,
    "unsafe": true
  },
  "keep_fnames": true,
  "toplevel": true,
  "output": {
    "v8": true
  }
}

Suspicious compress options:
  collapse_vars
  pure_getters
  reduce_vars
  unsafe
@alexlamsl alexlamsl added the bug label Apr 27, 2021
alexlamsl added a commit to alexlamsl/UglifyJS that referenced this issue Apr 27, 2021
alexlamsl added a commit that referenced this issue Apr 27, 2021
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