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

Closed
alexlamsl opened this issue Feb 20, 2022 · 0 comments · Fixed by #5363
Closed

ufuzz failure #5362

alexlamsl opened this issue Feb 20, 2022 · 0 comments · Fixed by #5363
Labels

Comments

@alexlamsl
Copy link
Collaborator

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

function f0(yield_2, async_2, a_1) {
    function f2(bar_2) {
        var a_1_1 = 38..toString();
        {
            var brake52 = 5;
            do {
                try {
                    for (var brake54 = 5; (b += a) && brake54 > 0; --brake54) {
                        var expr55 = (c = 1 + c, a_1 = (0 > false !== 23..toString() << [ , 0 ][1]) << ("a" <= true != (this === [ , 0 ][1])));
                        for (var key55 in expr55) {
                            c = 1 + c;
                            var async_2_2 = expr55[key55];
                            c = 1 + c, (c = c + 1, 22) * ("b" % 0) <= (~"function" | 1 != "undefined");
                        }
                    }
                } finally {
                    switch (c = 1 + c, (c = c + 1, 0 || false) ^ (this || -3) > (-5 != 5)) {
                      case c = 1 + c, (-1 ^ Infinity) / (2 >>> []) && (1 >>> "b") * (-5 >> Infinity):
                        ;
                        break;

                      default:
                        ;

                      case c = 1 + c, ([ , 0 ].length === 2) + 3 ^ ("" && 4) | (yield_2 && (yield_2.c = -0 - "number")) <= [] << -3:
                        ;
                        break;

                      case c = 1 + c, {} % "b" - (-1 ^ -2) << (("c" && "bar") <= (a_1_1 && (a_1_1.a = 22 % [ , 0 ][1]))):
                        ;
                        break;
                    }
                    try {
                        c = 1 + c, (Number(0xdeadn << 16n | 0xbeefn) << -3 != (null == "undefined")) < (c = c + 1, 
                        24..toString()) >>> (5 === -3);
                    } finally {
                    }
                }
            } while (void (("b" % {} >= ([] < 5)) >>> ((23..toString() ^ 23..toString()) != (NaN ^ /[a2][^e]+$/))) && --brake52 > 0);
        }
    }
    var NaN = f2(-2, typeof f2 == "function" && --_calls_ >= 0 && f2(new function yield_1(foo_1, Infinity_1, Infinity_1_1) {
        this.foo = "number" >= ([ , 0 ].length === 2) & NaN < "b";
        this.get = null >= "" >= (Infinity && -4);
        this[(c = c + 1) + (Infinity_1 = (c = 1 + c, ([ , 0 ][1] ^ "undefined" || 25 / "c") && ([] | [] && null ^ [ , 0 ][1])))] = 4 >>> 24..toString() == (c = c + 1, 
        "function");
        c = 1 + c, -4 !== "bar" | -2 * null ?? 5 >> [] === (Infinity_1_1 && (Infinity_1_1.in += "number" == -4));
        c = 1 + c, ([] + -0 & 1 >> undefined) - (-3 > "c" != (/[a2][^e]+$/, 1));
        c = 1 + c, (Infinity_1_1 && (Infinity_1_1[/[abc4]/g.exec(((c = 1 + c, (4 > -1 <= false >> "c") % ([ , 0 ][1] << -3 ^ ("undefined", 
        4))) || b || 5).toString())] = (async_2 && (async_2[c = 1 + c, "" % -0 | -0 << 23..toString() || (c = c + 1, 
        25) !== 4 - undefined] = 2 < this), async_2 && (async_2.in = [] != /[a2][^e]+$/)))) >>> ((c = c + 1, 
        "a") > ([] === "foo"));
        c = 1 + c, 4 > 0 < -3 % 25, Infinity_1 && (Infinity_1[!((foo_1 = (-0 << NaN) * (23..toString() ^ {})) === (null ^ "a" ^ -0 <= "function"))] += 2 === "" || 0 | 38..toString());
    }(), "function", "a"), --b);
    function f3(bar, yield_2_1, yield) {
        {
            var a = function f4() {
                {
                    var brake65 = 5;
                    do {
                        c = 1 + c, -((undefined || 0) === (false != 4));
                    } while ((c = 1 + c, (c = c + 1, false) >> ("b" ^ null) << (-1 && 24..toString() || -1 & "b")) && --brake65 > 0);
                }
                if (c = 1 + c, (a_1 >>>= {} + 22 ?? (yield_2 && (yield_2.null = undefined >>> "function"))) ^ (-4 !== -3 ^ (c = c + 1, 
                3))) {
                    c = 1 + c, /[a2][^e]+$/ <= ([ , 0 ].length === 2) <= undefined / true ^ (2 || 23..toString()) > ("" < NaN);
                }
            }();
        }
        if (--b + (typeof yield == "function" && --_calls_ >= 0 && yield())) {
            var b_1 = function NaN(a) {
                c = 1 + c, ([ , 0 ][1] >>> -3 ^ (NaN ^ 22)) - ((-0 & 4) > "c" >>> 1);
                c = 1 + c, a_1 += 23..toString() >>> 4 & 1 <= [ , 0 ][1] ?? (Infinity ^ undefined) - (undefined >>> 1);
            }([]);
        }
    }
    var a = f3(undefined);
    function f5() {
        {
            var await_1 = function f6() {
                {
                }
            }({});
        }
        {
            var expr76 = /[abc4]/.test((void ((-3 << "c" != (-2 != -0)) - ((-0 === Infinity) << (-3 << false))) || b || 5).toString());
            L14028: for (var key76 in expr76) {
                c = 1 + c;
                var async_2 = expr76[key76];
                if ((/[abc4]/.test(((c = 1 + c, ((yield_2 && (yield_2[c = 1 + c, 
                (c = c + 1, 22 > false) != (("function" ^ "") !== 4 <= undefined)] ||= 2 ?? 1)) | 4 < "undefined") <= ((false && 2) < (null >= "a"))) || b || 5).toString()) || 6).toString()[(c = c + 1) + (typeof f5 == "function" && --_calls_ >= 0 && f5())]) {
                    var expr78 = typeof b_2;
                    L14029: for (const key78 in expr78) {
                        c = 1 + c;
                        var key76 = expr78[key78];
                        {
                            var expr79 = (c = 1 + c, (23..toString() <= -4) / (0 == 24..toString()) + ("undefined" >> ([ , 0 ].length === 2)) / ([] % []));
                            for (var key79 in expr79) {
                                c = 1 + c, (key78 && (key78[--b + (b = a)] /= ~-1 | 2 === 23..toString())) <= (null ^ this | (2 | "function"));
                            }
                        }
                    }
                } else {}
            }
        }
    }
    var c_2 = f5();
}

var b_2 = f0(null, [ b /= a, (c = c + 1) + void function() {
    L14023: for (var brake1 = 5; delete (-5 - /[a2][^e]+$/ >= "object" * 4 <= (-5 > 22) >>> ("" === "foo")) && brake1 > 0; --brake1) {
        try {
            {
                {}
            }
        } finally {
            const {
                1.5: arguments
            } = {
                1.5: (c = c + 1) + (a && typeof a.next == "function" && --_calls_ >= 0 && a.next(22, "function"))
            };
            try {
                {
                    var expr6 = a++ + (-5 in {
                        [(c = 1 + c, 22 <= "function" > [ , 0 ][1] / -1 === ("foo" || 23..toString() || !22))]: (c = 1 + c, 
                        -Infinity % (38..toString(), -5) !== (5 < 5 & true + this)),
                        done: (c = 1 + c, a >>= (!([ , 0 ].length === 2) === ("c" ^ 38..toString())) << (arguments && (arguments[(c = c + 1) + typeof (c = 1 + c, 
                        4 - 22 >>> (true || -1) !== undefined >>> -5 >> "b" + "undefined")] = NaN & -1 ^ ([ , 0 ][1] ^ undefined))))
                    });
                    for (var key6 in expr6) {
                        c = 1 + c;
                        var let_2 = expr6[key6];
                        {
                            var brake7 = 5;
                            do {
                                c = 1 + c, Number(0xdeadn << 16n | 0xbeefn) >> 5 & ("b" ^ "foo") || (-3 || [ , 0 ].length === 2) < (let_2 && (let_2.var += "a" * -4));
                            } while ((c = 1 + c, (false || true) >>> (this ^ 3) & (key6 = (let_2 && (let_2[c = 1 + c, 
                            (null ^ -0) === "a" / "undefined" === ~(NaN << "foo")] -= "c" << undefined)) >>> (null | []))) && --brake7 > 0);
                        }
                    }
                }
            } finally {
                {
                    var expr10 = (c = 1 + c, (/[a2][^e]+$/ < NaN) % (1 > undefined) >= (Infinity !== -5, 
                    ~38..toString()));
                    for (var key10 in expr10) {
                        c = 1 + c, arguments && (arguments[--b + [ (c = 1 + c, /[a2][^e]+$/ !== false | (key10 && (key10.foo = false == this)) && null * -2 >> (24..toString() || [ , 0 ].length === 2)) ][c = 1 + c, 
                        (key10 *= (c = c + 1, "object") >>> (-0 << 22)) ?? (22, 
                        4) < 2 - "bar"]] = (this === -4) << "bar" % "a") || (undefined - "undefined", 
                        "object" ?? 25);
                    }
                }
            }
            for (var brake12 = 5; (c = c + 1) + ("undefined" in [ (c = 1 + c, (a += "a" - "undefined", 
            24..toString() ^ 5) & (22 / 1 || -"bar")) ]) && brake12 > 0; --brake12) {
                typeof arguments == "function" && --_calls_ >= 0 && arguments("function");
            }
        }
    }
    {
        var undefined = function f1() {
            {
                var NaN = (c = 1 + c, (24..toString() >= Infinity || -5 & "a") != (("undefined" && 22) === 25 >> 24..toString())), bar_2 = (c = 1 + c, 
                ((NaN += true & undefined) === NaN - null) * (23..toString() >> "bar" >>> (-1 < "a")));
                {
                    var brake17 = 5;
                    L14024: do {
                        c = 1 + c, (bar_2 && (bar_2.b ^= -5 - "bar" - ([] === -1))) / (bar_2 && (bar_2.c += 4 != [] != (bar_2 = ([ , 0 ].length === 2) / "foo")));
                    } while ((c = 1 + c, delete +NaN ?? [ , 0 ].length === 2 & "b" & ("bar" & -3)) && --brake17 > 0);
                }
            }
            if (--b + (a && typeof a.static == "function" && --_calls_ >= 0 && a.static(-0))) {
                var brake20 = 5;
                L14025: do {
                    var foo_1 = (c = 1 + c, "c" - 23..toString() == "bar" >= 1 === 24..toString() >>> undefined > "object" % "foo"), bar = (c = 1 + c, 
                    ("a" !== "bar" | false <= {}) / ((c = c + 1, 22) >= (a && ([ a.undefined ] = [ "number" - 0 ]))));
                } while ([ (c = 1 + c, ("object" << -4 ^ 4 === "") === 3 * "undefined" << (/[a2][^e]+$/ ^ -3)), (c = 1 + c, 
                5 - -3 < delete Infinity != (/[a2][^e]+$/ && "function" && (c = c + 1, 
                2))), (c = 1 + c, (foo_1 && (foo_1[c = 1 + c, (-1 === Infinity | (c = c + 1, 
                23..toString())) >>> ("object", /[a2][^e]+$/) % ([] + 22)] ^= "" < NaN)) - (true ^ NaN) ?? (undefined | -5 ?? ("foo" || "c"))) ] && --brake20 > 0);
            } else {
                var brake22 = 5;
                do {
                    {
                        var brake23 = 5;
                        do {
                            c = 1 + c, ("c" != 0 || "undefined" - 3) < ("foo" << 24..toString() || 4 & "function");
                        } while ((c = 1 + c, (-2 + 38..toString() & -0 / "number") >= (5 < "a") * (25 >>> false)) && --brake23 > 0);
                    }
                } while ((c = c + 1) + -(24..toString() <= 4 < (38..toString() ^ ""), 
                /[a2][^e]+$/ + false - ("undefined" ^ 2)) && --brake22 > 0);
            }
        }();
    }
    switch ((c = c + 1) + +(((undefined && (undefined.c = "function" > -0)) == (undefined = -2 ^ -4)) / (undefined && (undefined.b += (Infinity ^ 2) % (-2 >> 3))))) {
      case undefined:
        switch ([ !(null <= 4 ^ 4 != -5 || "foo" + 24..toString() && ("foo" || -2)), (c = c + 1) + (b = a), , undefined && undefined[c = 1 + c, 
        undefined -= ([ 3n ][0] > 2 <= 22 & (undefined = "c" / 25)) > (-5 % NaN ^ {} + [])] ]) {
          case {
                [--b + !function() {
                }()]: a++ + typeof foo_2,
                async: undefined && typeof undefined.in == "function" && --_calls_ >= 0 && undefined.in(false, (-42n).toString(), (c = 1 + c, 
                (false & -2) + (undefined && ([ undefined.async ] = [ -2 || true ])) !== ((c = c + 1, 
                "number") === ("undefined" != "undefined"))))
            }:
            {
                var expr27 = (c = c + 1) + ((c = 1 + c, (-5 >>> "c" & 1 % -2) >>> ("foo" !== 3 || -4 << this)) ? (c = 1 + c, 
                /[a2][^e]+$/ - 4 >> (undefined %= [ , 0 ][1] + false) ^ ("" & 1) >>> (true ^ 25)) : (c = 1 + c, 
                void (("foo" || /[a2][^e]+$/) ** ("c" != /[a2][^e]+$/))));
                for (var [ key27 ] in expr27) {
                    c = 1 + c;
                    var foo_1 = expr27[key27];
                    var a_2;
                }
            }
            break;

          case a++ + (-1 << -4 >= ("function" > []) ^ ((c = c + 1, 1) || ([ 3n ][0] > 2) % 3)):
            for (var brake29 = 5; (c = c + 1) + void function a_2() {
            }() && brake29 > 0; --brake29) {
                var brake30 = 5;
                L14026: do {
                    c = 1 + c, c = c + 1, "foo" >>> 23..toString() > (5 & "function");
                } while ((c = 1 + c, undefined && (undefined[--b + b--] = (3 - "object") % (24..toString() + "function") <= (-4 != "object" && -4 ^ this))) && --brake30 > 0);
            }
            try {
                if (c = 1 + c, undefined && (undefined[+function() {
                    c = 1 + c, undefined && (undefined.done = false == null ^ (c = c + 1, 
                    "foo")) && (undefined && (undefined.then = "foo" + "number")) & null >>> true;
                    c = 1 + c, (4 || "undefined") + ({} && "b") ^ (!Infinity | + -1);
                }()] &= (c = c + 1, [ , 0 ].length === 2 | this) && ("a" - 0 || 2 <= -1))) {
                    c = 1 + c, (0 == "object" || 0 === 24..toString()) | [ , 0 ][1] <= 5 ^ 38..toString() >= "undefined";
                }
            } finally {
                c = 1 + c, undefined += null >> 24..toString() >>> (/[a2][^e]+$/ & this) | 23..toString() << -1 == 5 - 38..toString();
                c = 1 + c, (undefined && (undefined.c = (undefined && (undefined.NaN -= 0 >> 3)) != -2 << 4)) - ((undefined && (undefined.foo >>= Infinity ** -3)) << (-4 << 23..toString()));
            }
            break;

          case delete b:
            if ((c = c + 1) + (delete (false >= 2) === (-3 ^ "object") <= (c = c + 1, 
            38..toString()))) {
                return c = 1 + c, undefined && (undefined.null ||= ("number" && "object") != [ , 0 ][1] << -1 ?? (undefined &= 5 >= null === (false | null)));
            }
            break;

          case typeof f2 == "function" && --_calls_ >= 0 && f2(null):
            {
                var brake41 = 5;
                while (((c = 1 + c, ("number" <= [] || 22 >= false) / (23..toString() >>> undefined <= (24..toString() ?? -4))) || a || 3).toString() && --brake41 > 0) {
                    return c = 1 + c, 25 < 5 === "b" % 0 ^ (undefined &= 23..toString() != 25 && [] >>> 5);
                }
            }
            break;
        }
        break;

      default:
      case /[abc4]/.test((a-- || b || 5).toString()):
        break;

      case a++ + (typeof b_2 != "symbol"):
        {
            var brake43 = 5;
            L14027: do {
                {
                    {
                    }
                    {
                        var brake46 = 5;
                        while ((c = 1 + c, 1 / -0 !== (undefined && (undefined[c = 1 + c, 
                        (([ , 0 ].length === 2) << -1, c = c + 1, true) !== (/[a2][^e]+$/ ^ -2) > (undefined && (undefined[c = 1 + c, 
                        (4 === "undefined") >= (c = c + 1, -1) ^ -0 < "function" == (null === 0)] *= 0 || 24..toString()))] = "c" > "foo")) ^ (undefined && (undefined.b = undefined << false ^ -0 - 24..toString()))) && --brake46 > 0) {
                            c = 1 + c, (3 ^ -3) == (Infinity != 25) === (-4 / "b" === -4 <= 23..toString());
                        }
                    }
                    {
                        var expr48 = "" + (c = 1 + c, ("" === [ , 0 ][1]) % +2 / (24..toString() / ([ , 0 ].length === 2) >> (NaN >> 0)));
                        for (var key48 of expr48) {
                            c = 1 + c;
                            var foo_2 = expr48[key48];
                            c = 1 + c, ("b" > []) >>> (null || undefined) >> (3 + true >>> "" / /[a2][^e]+$/);
                        }
                    }
                }
            } while (typeof [ ..."" + undefined ].c && --brake43 > 0);
        }
        ;
        break;
    }
}(), a++ + +a, a++ + ((a && (a.in += (a *= "undefined" << null) > 23..toString() * 2)) != void (-4 + -0)), -2 ]);

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

function f0(yield_2, async_2, a_1) {
    function f2() {
        var a_1_1 = 38..toString();
        try {
            for (var brake54 = 5; (b += a) && 0 < brake54; --brake54) {
                c = 1 + c;
                var key55, expr55 = a_1 = (!1 !== 23..toString() << 0) << (0 != (0 === this));
                for (key55 in expr55) {
                    c = 1 + c;
                    c = 1 + c, c += 1;
                }
            }
        } finally {
            switch (c = 1 + c, !1 ^ !0 < (this || -3)) {
              case c = 1 + (c += 1), -1 / (2 >>> []) && -5:
                break;

              default:
              case c = 1 + c, 3 + (2 === [ , 0 ].length) ^ "" | (yield_2 && (yield_2.c = 0 / 0)) <= [] << -3:
              case c = 1 + c, {} % "b" - 1 << ("bar" <= (a_1_1 && (a_1_1.a = 0 / 0))):
            }
            c = 1 + c, Number(0xdeadn << 16n | 0xbeefn), c += 1, 24..toString();
        }
        23..toString(), 23..toString();
    }
    var NaN = f2(0 <= --_calls_ && f2(new function(foo_1, Infinity_1, Infinity_1_1) {
        this.foo = (2 === [ , 0 ].length) <= "number" & NaN < "b", this.get = !0, 
        this[(c += 1) + (c = 1 + c, Infinity_1 = 0 / 0)] = 4 >>> 24..toString() == (c += 1, 
        "function"), c = 1 + (c = 1 + (c = 1 + c)), Infinity_1_1 && (Infinity_1_1[/[abc4]/g.exec((c = 1 + c, 
        (b || 5).toString()))] = (async_2 && (async_2[c = 1 + c, 0 / 0 | -0 << 23..toString() || (c += 1, 
        !0)] = 2 < this), async_2 && (async_2.in = [] != /[a2][^e]+$/))), c = 1 + (c += 1), 
        Infinity_1 && (Infinity_1[!(0 == (-0 << NaN) * (23..toString() ^ {}))] += 0 | 38..toString());
    }()), --b);
    var a = function(yield) {
        for (var brake65 = 5; c = 1 + (c = 1 + c), c += 1, 0 << (24..toString() || 0) && 0 < --brake65; ) {}
        c = 1 + c, !0 ^ (a_1 >>>= {} + 22 ?? (yield_2 && (yield_2.null = 0))) ^ (c += 1, 
        3) && (c = 1 + c), --b + ("function" == typeof yield && 0 <= --_calls_ && yield()) && (c = 1 + (c = 1 + c), 
        a_1 += 23..toString() >>> 4 & !1 ?? 0);
    }();
    (function f5() {
        var expr76 = /[abc4]/.test((b || 5).toString());
        for (key76 in expr76) {
            if (c = 1 + c, expr76[key76], (/[abc4]/.test((c = 1 + c, ((!1 | (yield_2 && (yield_2[c = 1 + c, 
            1 != (c += 1, !0)] ||= 2))) <= !1 || b || 5).toString())) || 6).toString()[(c += 1) + (0 <= --_calls_ && f5())]) {
                var expr78 = typeof b_2;
                for (const key78 in expr78) {
                    c = 1 + c;
                    var key79, key76 = expr78[key78];
                    for (key79 in c = 1 + c, (23..toString() <= -4) / (0 == 24..toString()) + ("undefined" >> (2 === [ , 0 ].length)) / ([] % [])) {
                        c = 1 + c, key78 && (key78[--b + (b = a)] /= 0 | 2 === 23..toString());
                    }
                }
            }
        }
    })();
}

var b_2 = f0(null, [ b /= a, (c += 1) + void function() {
    for (var key10, brake1 = 5; 0 < brake1; --brake1) {
        const arguments = {
            1.5: (c += 1) + (a && "function" == typeof a.next && 0 <= --_calls_ && a.next(22, "function"))
        }["1.5"];
        try {
            var key6, expr6 = a++ + (-5 in {
                [!1]: (c = 1 + (c = 1 + c), -1 / 0 % (38..toString(), -5) != (!1 & !0 + this)),
                done: (c = 1 + c, a >>= (!(2 === [ , 0 ].length) === ("c" ^ 38..toString())) << (arguments && (arguments[(c += 1) + (c = 1 + c, 
                typeof (-18 >>> !0 != undefined >>> -5 >> "bundefined"))] = 0 ^ undefined)))
            });
            for (key6 in expr6) {
                c = 1 + c;
                for (var let_2 = expr6[key6], brake7 = 5; c = 1 + c, Number(0xdeadn << 16n | 0xbeefn) >> 5 & 0 || let_2 && (let_2.var += NaN), 
                c = 1 + c, !0 >>> (3 ^ this) & (key6 = (let_2 && (let_2[c = 1 + c, 
                !1] -= "c" << undefined)) >>> (null | [])) && 0 < --brake7; ) {}
            }
        } finally {
            for (key10 in c = 1 + c, !1 % (undefined < 1) >= ~38..toString()) {
                c = 1 + c, arguments && (arguments[--b + [ (c = 1 + c, !0 | (key10 && (key10.foo = 0 == this)) && -0 >> (24..toString() || 2 === [ , 0 ].length)) ][c = 1 + c, 
                (key10 *= (c += 1, 0)) ?? !1]] = (-4 === this) << NaN);
            }
        }
        for (var brake12 = 5; (c += 1) + ("undefined" in [ (c = 1 + c, 22 & (a += NaN, 
        5 ^ 24..toString())) ]) && 0 < brake12; --brake12) {
            "function" == typeof arguments && 0 <= --_calls_ && arguments("function");
        }
    }
    var undefined = function() {
        c = 1 + c;
        for (var NaN = (24..toString() >= 1 / 0 || 0) != (22 == 25 >> 24..toString()), bar_2 = (c = 1 + c, 
        ((NaN += !0 & undefined) === NaN - null) * (23..toString() >> "bar" >>> !1)), brake17 = 5; c = 1 + c, 
        bar_2 && (bar_2.b ^= 0 / 0 - (-1 === [])), bar_2 && (bar_2.c += 4 != [] != (bar_2 = (2 === [ , 0 ].length) / "foo")), 
        c = 1 + c, (delete NaN ?? 2 === [ , 0 ].length & 0) && 0 < --brake17; ) {}
        if (--b + (a && "function" == typeof a.static && 0 <= --_calls_ && a.static(-0))) {
            var brake20 = 5;
            do {
                c = 1 + c;
                var foo_1 = "c" - 23..toString() == 0 == 24..toString() >>> undefined > 0 / 0;
                c = 1 + c, c += 1, a && ([ a.undefined ] = [ 0 / 0 ]);
            } while (c = 1 + (c = 1 + c), delete Infinity, c = 1 + (c += 1), foo_1 && (foo_1[c = 1 + c, 
            (!1 | (c += 1, 23..toString())) >>> /[a2][^e]+$/ % ([] + 22)] ^= "" < NaN), 
            0 < --brake20);
        } else {
            var brake22 = 5;
            do {
                for (var brake23 = 5; c = 1 + c, 24..toString(), c = 1 + c, 0 <= (-2 + 38..toString() & 0 / 0) && 0 < --brake23; ) {}
            } while ((c += 1) + (24..toString(), 38..toString(), -0 / 0) && 0 < --brake22);
        }
    }();
    switch ((c += 1) + ((undefined && (undefined.c = !1)) == (undefined = 2)) / (undefined && (undefined.b += 0))) {
      case undefined:
        switch ([ (24..toString(), !1), (c += 1) + (b = a), , undefined && undefined[c = 1 + c, 
        undefined -= (2 < 3n <= 22 & (undefined = NaN)) > (NaN ^ {} + [])] ]) {
          case {
                [--b + !0]: a++ + typeof foo_2,
                async: undefined && "function" == typeof undefined.in && 0 <= --_calls_ && undefined.in(!1, (-42n).toString(), (c = 1 + c, 
                0 + (undefined && ([ undefined.async ] = [ -2 ])) !== (!1 === (c += 1, 
                "number"))))
            }:
            var key27, expr27 = (c += 1) + void (c = 1 + (c = 1 + c));
            for ([ key27 ] in expr27) {
                c = 1 + c;
            }
            break;

          case a++ + ([] < "function" <= -1 << -4 ^ (c += 1, 1)):
            for (var brake29 = 5; (c += 1) + void 0 && 0 < brake29; --brake29) {
                for (var brake30 = 5; c = 1 + c, c += 1, 23..toString(), c = 1 + c, 
                undefined && (undefined[--b + b--] = NaN % (24..toString() + "function") <= (-4 ^ this)) && 0 < --brake30; ) {}
            }
            try {
                c = 1 + c, undefined && (undefined[c = 1 + c, undefined && (undefined.done = !1 ^ (c += 1, 
                "foo")) && undefined && (undefined.then = "foonumber"), +void (c = 1 + c)] &= (c += 1, 
                2 === [ , 0 ].length | this && !1)) && (c = 1 + c, 24..toString(), 
                38..toString());
            } finally {
                c = 1 + c, undefined += null >> 24..toString() >>> (/[a2][^e]+$/ & this) | 23..toString() << -1 == 5 - 38..toString(), 
                c = 1 + c, undefined && (undefined.c = -32 != (undefined && (undefined.NaN -= 0))), 
                undefined && (undefined.foo >>= 0), 23..toString();
            }
            break;

          case delete b:
            if ((c += 1) + (!0 == -3 <= (c += 1, 38..toString()))) {
                return c = 1 + c, undefined && (undefined.null ||= !0);
            }
            break;

          case "function" == typeof f2 && 0 <= --_calls_ && f2(null):
            expr27 = 5;
            if (c = 1 + c, (("number" <= [] || !0) / (23..toString() >>> undefined <= (24..toString() ?? -4)) || a || 3).toString() && 0 < --expr27) {
                return c = 1 + c, 23..toString();
            }
        }
        break;

      default:
      case /[abc4]/.test((a-- || b || 5).toString()):
        break;

      case a++ + ("symbol" != typeof b_2):
        var brake43 = 5;
        do {
            for (var brake46 = 5; c = 1 + c, -1 / 0 !== (undefined && (undefined[c = 1 + c, 
            c += 1, !0 != (undefined && (undefined[c = 1 + c, (c += 1, -1) <= !1 ^ !0] *= 24..toString())) < -2] = !1)) ^ (undefined && (undefined.b = undefined << !1 ^ -0 - 24..toString())) && 0 < --brake46; ) {
                c = 1 + c, 23..toString();
            }
            var key48, expr48 = "" + (c = 1 + c, 0 / (24..toString() / (2 === [ , 0 ].length) >> 0));
            for (key48 of expr48) {
                c = 1 + c;
                var foo_2 = expr48[key48];
                c = 1 + c;
            }
        } while (0 < --brake43);
    }
}(), a++ + +a, a++ + (null != (a && (a.in += (a *= 0) > 2 * 23..toString()))), -2 ]);

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

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

// (beautified)
(function() {
    var NaN = 0 >> 0..toString;
    console.log(delete +NaN);
})();
// output: true
// 
// minify: false
// 
// options: {
//   "mangle": false,
//   "output": {
//     "v8": true
//   },
//   "validate": true
// }
minify(options):
{
  "mangle": false,
  "output": {
    "v8": true
  }
}

Suspicious compress options:
  evaluate
  reduce_vars
@alexlamsl alexlamsl added the bug label Feb 20, 2022
alexlamsl added a commit to alexlamsl/UglifyJS that referenced this issue Feb 20, 2022
alexlamsl added a commit that referenced this issue Feb 20, 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