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

Closed
alexlamsl opened this issue Feb 19, 2022 · 0 comments · Fixed by #5361
Closed

ufuzz failure #5360

alexlamsl opened this issue Feb 19, 2022 · 0 comments · Fixed by #5361
Labels

Comments

@alexlamsl
Copy link
Collaborator

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

try {
    switch ((c = c + 1) + typeof a_2) {
      case {
            "": (c = c + 1, NaN << ([ , 0 ].length === 2) > 25 + -5) ? --b + !(("object" > /[a2][^e]+$/) * ("b" >> "foo") <= ((-1 ^ [ , 0 ].length === 2) & 4 * [])) : (c = c + 1) + {
                "\t": new function NaN_1() {
                    this[(c = c + 1) + (NaN_1 && NaN_1.value)] = (NaN_1 && (NaN_1[b--] = ([] + Infinity & (-1 || undefined)) >>> (("object" ^ -0) << ("object" >= "a"))), 
                    ({} ^ 25) % (false / -5) + ((undefined !== "object") << -1 - undefined));
                    this.b <<= (24..toString() <= "b" > ("number" || -4)) >>> (-5 * 23..toString() || 0 >= Infinity) >= (22 !== "b" ^ /[a2][^e]+$/ < 25 && (-1 !== 38..toString() || ([ , 0 ].length === 2) / -2));
                    {
                        var expr3 = --b + (("a" & 4) >>> (Infinity <= "") >>> ((null ^ 1) > 1 - 2));
                        for (var key3 in expr3) {
                            c = 1 + c;
                            var bar = expr3[key3];
                            {
                                var expr4 = [ (c = 1 + c, c = c + 1, void "undefined", 
                                ("number" ^ "a") >> (this > "number")), (c = 1 + c, 
                                c = c + 1, (24..toString() | "function") === 0 - Infinity), (c = 1 + c, 
                                "a" <= "c" != (2 ^ false) || (c = c + 1, "c") >> (4 || 38..toString())), (c = 1 + c, 
                                -1 <= "function" == (c = c + 1, "number") ^ (NaN_1 && (NaN_1[(c = c + 1) + ((c = 1 + c, 
                                [] <= -1 >= (undefined >= "c") <= ("" << 22 ^ /[a2][^e]+$/ * this)) || a || 3).toString()] += "function" !== 25 == (null || this)))) ];
                                for (let key3 of expr4) {
                                    c = 1 + c;
                                    const yield = expr4[key3];
                                    c = 1 + c, (bar += 23..toString() - [ , 0 ][1] - (25 && 24..toString())) / (null / "object" && "undefined" <= 1);
                                }
                            }
                        }
                    }
                    L11305: for (var brake6 = 5; [] && brake6 > 0; --brake6) {
                        return;
                    }
                    {
                        var Infinity_1 = function f0() {
                        }("a", 2);
                    }
                }(),
                1.5: /[abc4]/g.exec((a++ + /[abc4]/.test((!function() {}() || b || 5).toString()) || b || 5).toString())
            }
        }.null:
        break;

      case (-5 !== true & -3 / "bar") >= ("number" / "number" > ("a" > 23..toString())):
        {
            var brake9 = 5;
            while (-2 && --brake9 > 0) {
                0 === 1 ? a : b;
            }
        }
        {
            var brake11 = 5;
            L11306: while ((c = c + 1) + delete (([ , 0 ][1], "b") == (38..toString() ^ 5) ^ ("a" >= 23..toString() && (c = c + 1, 
            "number"))) && --brake11 > 0) {
                b += a;
            }
        }
        break;

      case --b + (--b + (typeof a == "function" && --_calls_ >= 0 && a(typeof a === "object")) || a || 3).toString():
        {
            var expr13 = (c = c + 1) + (a = a);
            for (var key13 in expr13) {
                try {
                    L11307: {
                        {
                            var brake16 = 5;
                            L11308: do {
                                {
                                    var key13 = function f1(Infinity_2, arguments) {
                                        c = 1 + c, void 38..toString() % (NaN >= -4) ^ delete 24..toString() >= false / 0;
                                        c = 1 + c, ({} & -4, "undefined" || undefined) ^ -0 % -4 <= 24..toString() >> this;
                                    }({});
                                }
                            } while ("bar" in [ a++ + b--, (c = c + 1) + (-2 in [ (c = 1 + c, 
                            (-5 << -1 >>> "object" * ([ , 0 ].length === 2)) * (/[a2][^e]+$/ / "undefined" >> "c" * -1)) ]), a++ + ("object" in [ ..."" + key13, , (c = 1 + c, 
                            key13 && (key13[--b + !(((key13 = 4 + "undefined") & null + "c") + (key13 = (-0 > 22) + (Infinity || "number")))] += 24..toString() >>> "object" << "" * [ , 0 ][1]), 
                            -4 & this, key13 >>>= "undefined" << 24..toString()), ..."" + key13, (c = 1 + c, 
                            c = c + 1, (c = c + 1, -1) / (false + 4)) ]) ] && --brake16 > 0);
                        }
                    }
                } finally {
                    {
                        var brake20 = 5;
                        do {
                            [ Infinity in [ (c = 1 + c, ([ , 0 ].length === 2) - ([ , 0 ].length === 2) << (3, 
                            -4) <= (4 != 23..toString() | "" == -5)) ], (c = c + 1) + /[abc4]/g.exec(((c = 1 + c, 
                            (key13 && (key13[(c = c + 1) + (key13 && typeof key13.var == "function" && --_calls_ >= 0 && key13.var(-4, (c = 1 + c, 
                            (0 || -0) << (23..toString() || 24..toString()) > (-2 ^ "object") >>> (25 !== -3)), 0))] &= "number" == [ , 0 ][1] ^ "b" === "foo")) !== (key13 && (key13.null *= Infinity | -3)) * (22 > [ , 0 ][1])) || b || 5).toString()), ...[ (c = 1 + c, 
                            key13 && (key13.var = 2 < -4 === {} >> {}) && (c = c + 1, 
                            true) !== (key13 && (key13[c = 1 + c, (c = c + 1, -3) >>> (-1 == "a") >= ("object" << ([ , 0 ].length === 2) >= -3 << "b")] = "foo" > 25))), (c = 1 + c, 
                            ((key13 && (key13[c = 1 + c, (c = c + 1, ![ , 0 ][1]) >>> +(0 && [ , 0 ][1])] = false >> -4)) ^ (4, 
                            -5)) << (22 & 3 || "object" >= [])), (c = 1 + c, (key13 && (key13.b >>>= this && this)) + (23..toString() - [ , 0 ][1]) <= (5 !== "undefined") >> ("" != "undefined")) ], !function() {
                            }() ].b;
                        } while ((c = c + 1) + (key13 && typeof key13.length == "function" && --_calls_ >= 0 && (+function() {
                            {
                                var brake22 = 5;
                                L11309: do {
                                    c = 1 + c, (key13 = "function" * 22 + (25 < "function")) - ("foo" / -3 - -0 % false);
                                } while ((c = 1 + c, true / 25 >> (1 ^ "b") >>> (c = c + 1, 
                                2 >= {})) && --brake22 > 0);
                            }
                            {
                                var brake24 = 5;
                                do {
                                    c = 1 + c, (c = c + 1, key13 += 23..toString() & this) >> (24..toString() * 4 ^ {} % "object");
                                } while ((c = 1 + c, ((key13 && (key13.var = (25, 
                                NaN))) !== [] < "foo") % (this >> 3 <= ([ , 0 ][1] || []))) && --brake24 > 0);
                            }
                        }(), key13.length)(this, "foo", [ (c = 1 + c, ("function" <= /[a2][^e]+$/ != (23..toString() ^ "b")) % ((24..toString() | -1) >> ("c" === "bar"))), (c = 1 + c, 
                        (3, -1) >>> (22 >= this) << ((false > "foo") >>> -5 - "c")), (c = 1 + c, 
                        c = c + 1, (/[a2][^e]+$/ | "object") - (key13 && (key13.get *= "foo" << -0))) ][key13 && typeof key13.async == "function" && --_calls_ >= 0 && key13.async()])) && --brake20 > 0);
                    }
                    {
                        var brake26 = 5;
                        L11310: while ((c = c + 1) + {
                            var: a++ + a++
                        }[typeof async !== "symbol"] && --brake26 > 0) {
                            L11311: {
                                for (var brake28 = 5; void setImmediate(() => typeof f0 == "function" && --_calls_ >= 0 && f0(-1)) && brake28 > 0; --brake28) {
                                    var brake29 = 5;
                                    while ((c = 1 + c, -(23..toString() && -4) - (([] || []) && [] + "function")) && --brake29 > 0) {
                                        c = 1 + c, (key13 += (null != 1) < (key13 && (key13[c = 1 + c, 
                                        (-5 * -1 ^ (key13 |= NaN << 24..toString())) >>> ((key13 = -0 ^ -2) !== (key13 && (key13[c = 1 + c, 
                                        2 >> 2 == "undefined" << 38..toString() ^ (-1 ^ /[a2][^e]+$/) + void -0] += (-4, 
                                        "a"))))] = -2 < "object"))) === ("object" !== {} | 23..toString() !== "");
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        switch (a && a[a && typeof a.null == "function" && --_calls_ >= 0 && ([ , --b + a, , --b ][{
            c: a && typeof a.foo == "function" && --_calls_ >= 0 && a.foo((c = 1 + c, 
            delete (c = c + 1, "undefined") === (c = c + 1, 3 - "number")), 22, -4),
            length: --b + (typeof a == "function" && --_calls_ >= 0 && a((c = 1 + c, 
            a && (a.done *= ({} - /[a2][^e]+$/) * (a && (a[c = 1 + c, ("function" & 22) >>> (5 << -1) | [ , 0 ][1] == 3 ^ -4 !== 1] = {} - 23..toString())) * (NaN + "" >>> (-0 | -5)))), -1, (c = 1 + c, 
            /[a2][^e]+$/ > 2 != (this === "a") == (void "" && [] !== -0)))),
            "\t": a++ + (--b + ((c = 1 + c, ("" & -3 ^ null % [ , 0 ][1]) === (23..toString() >> undefined || 24..toString() < /[a2][^e]+$/)) ? (c = 1 + c, 
            (a && (a.next >>>= ("object" & "c") - (a && (a.var /= 3 < 24..toString())))) < ((a -= 5 | "b") !== undefined + "function")) : (c = 1 + c, 
            ((-3, false) & (5 | -3)) < (false && 22) << (c = c + 1, [ , 0 ].length === 2))) || a || 3).toString(),
            "-2": a++ + a++
        }[(NaN === 22) * ("" / "object") ^ ("b" & 23..toString() && NaN / true)]], 
        a.null)(a++ + (a || a || 3).toString())]) {
          case (c = c + 1) + (a++ + [ --b, a++ + (25 in {
                [(c = c + 1) + (a && a.then)]: --b + {
                    value: (c = 1 + c, NaN >> 1 << 22 - /[a2][^e]+$/ << (0 < "undefined" === (3 | [])))
                }.async
            }), ...[ --b + (a = --b + a), (c = c + 1) + (a += !function let_1() {
                c = 1 + c, (c = c + 1, -1 ^ 25) * (let_1 && (let_1[typeof b_1 !== "string"] = ("undefined" ^ {}) * ("object" > "number")));
            }()) ], typeof f3 == "function" && --_calls_ >= 0 && f3(this, []), /[abc4]/g.exec(((a += a++ + {
                done: (c = 1 + c, (-4 & 23..toString()) != ("undefined" || /[a2][^e]+$/) != (-2 < ([ , 0 ].length === 2) == 3 > "a"))
            }) || b || 5).toString()) ? --b + "" : (c = c + 1) + (a && typeof a.then == "function" && --_calls_ >= 0 && a.then(38..toString())) ][[ (c = c + 1) + (b = a), typeof f2 == "function" && --_calls_ >= 0 && f2([], --b + [ (c = 1 + c, 
            (25 != 0) / ("c" || -4) * (("function" & "") + (/[a2][^e]+$/ << -1))) ].next), --b + typeof (a++ + (b += a)), 0 === 1 ? a : b ][a++ + "object"]]):
            break;

          default:
          case (c = c + 1) + ("function" in [ a && typeof a.value == "function" && --_calls_ >= 0 && a.value`\\
${typeof a == "function" && --_calls_ >= 0 && a((c = 1 + c, ("bar" >>> 4) % (true % 0) > (-1 || 5) - (/[a2][^e]+$/ || "c")))}`, --b + (typeof f2 == "function" && --_calls_ >= 0 && f2(null, 1 === 1 ? a : b)), !void ("object" >= [ , 0 ][1] || 38..toString() <= Infinity), (([ , 0 ].length === 2) >> "number" === (1 || "c")) >> ((a && (a.var = "object" || Infinity)) ^ "undefined" % /[a2][^e]+$/) ]):
            {
                if (a++ + []) {
                    var expr35 = a++ + "function";
                    for (var key35 in expr35) {
                        c = 1 + c;
                        var bar_1 = expr35[key35];
                        {
                            var async_2 = function f2(b, a_2) {
                            }();
                        }
                    }
                } else {}
                {}
                ` ${a}${[] % -2 % ("number" ^ false) < (23..toString() / -2 >= (true != 22))}${(c = 1 + c, 
                a && ([ a.NaN ] = [ (a += "c" && "a") < (-3 & "b") | "number" > 2 > ([ , 0 ][1] ^ /[a2][^e]+$/) ])) ? (c = 1 + c, 
                ("" && -4) >> (4 | -0) << (a && (a.null ^= (-0 >>> ([ , 0 ].length === 2)) - 24..toString() * "foo"))) : (c = 1 + c, 
                (-4 || false) <= ("c" != "a") <= (undefined <= "function" & (-3 && undefined)))}${a++ + [ (c = 1 + c, 
                "number" + {} !== (0 || 23..toString()) || ("c" ^ 23..toString()) > "function" + -3), (c = 1 + c, 
                ([ , 0 ].length === 2 | 24..toString()) % (3 != undefined) | "" + [] <= (true, 
                [ , 0 ][1])), ..."" + a, (c = 1 + c, (c = c + 1, "b" << [ , 0 ][1]) || (a &= {} ^ 24..toString()) * (38..toString() != 22)), (c = 1 + c, 
                3 + 22 && (-4 || "bar") || (c = c + 1, null) === ("c" ^ "")) ]}${--b + ++a}`;
            }
            break;

          case (c = c + 1) + (typeof f3 == "function" && --_calls_ >= 0 && f3(--b + --b)):
            try {
                if (void (24..toString() || 5), ("bar" >>> this) % ("foo" >> 1)) {
                    c = c + 1;
                } else {
                    var yield = --b + (typeof f0 == "function" && --_calls_ >= 0 && f0(23..toString(), 25, "c")), async = a--;
                    c = c + 1;
                    {
                        var brake46 = 5;
                        while (--b + void (-3 === 23..toString() ^ 3 > -2) && --brake46 > 0) {
                            var brake47 = 5;
                            do {
                                c = 1 + c, ("foo" >= -4) * ("object" << false) == (true & -2) % (-3 * 23..toString());
                            } while ((c = 1 + c, (yield && (yield.set += [ , 0 ][1] - Infinity)) >> ([ , 0 ].length === 2 != "b") == delete (4 >= [ , 0 ][1])) && --brake47 > 0);
                        }
                    }
                }
            } catch (b_1) {
                try {
                    a++ + (typeof b_1 == "function" && --_calls_ >= 0 && b_1("c", (c = 1 + c, 
                    /[a2][^e]+$/ == [ , 0 ][1] === -5 - -1 ^ (b_1 && (b_1[c = 1 + c, 
                    ("object" > false & -1 >>> "a") / ((24..toString() === []) / ([ , 0 ].length === 2 && 23..toString()))] = [] << 23..toString())) === Infinity - -5), (c = 1 + c, 
                    true - 0 >> (Infinity >>> "bar") === (b_1 && (b_1.var += 5 >= [])) > (c = c + 1, 
                    -3))));
                } catch (a) {
                    c = c + 1;
                    switch (--b + a++) {
                      case a++ + (typeof b_1 == "function" && --_calls_ >= 0 && b_1((c = 1 + c, 
                        (/[a2][^e]+$/ != "bar") / (5 << /[a2][^e]+$/) | ("object" >= false) * void ""), /[a2][^e]+$/)):
                        c = 1 + c, (a && (a[c = 1 + c, ("object" * {} == (this ^ -3)) + (/[a2][^e]+$/ === false || Infinity / -4)] = 25 % -4)) << [ , 0 ][1] % "" >= ([ , 0 ][1] < "undefined" != (b_1 += [ , 0 ][1] >= false));
                        c = 1 + c, a <<= 3 == "a" != (a && (a[c = 1 + c, (a && (a[c = 1 + c, 
                        -0 !== [ , 0 ][1] === (b_1 && (b_1[c = 1 + c, ("c" === NaN & (25, 
                        "c")) * ((c = c + 1, "function") != true << 22)] = [] ^ 4)) == ("object" !== NaN) > (a += -4 == 23..toString())] += "foo" < true)) >= ([ , 0 ].length === 2 === NaN) === ("c" === -4 | "bar" >> -1)] = Infinity - this)) === null >= 3 < (a && (a[c = 1 + c, 
                        ((a && (a.c = -1 << this)) | (b_1 && ([ b_1[c = 1 + c, (22 > "undefined") + ("number" <= /[a2][^e]+$/) > "a" - "undefined" + (c = c + 1, 
                        "c")] ] = [ -1 << "foo" ]))) + (a = "undefined" % 5) * (-5 <= -2)] %= Infinity * [ , 0 ][1]));
                        break;

                      case a += (c = 1 + c, (Infinity * "foo" | "c" % "foo") * (("b" ^ "b") >> 22 / true)):
                        c = 1 + c, -2 == 0 & this !== -5, a && (a[a] ^= "undefined" > ([ , 0 ].length === 2) < (false != "c"));
                        break;

                      default:
                      case a++ + (typeof a == "function" && --_calls_ >= 0 && a(-5, true, (c = 1 + c, 
                        (38..toString() == false && 3 | "object") == (b_1 && (b_1.a >>= -1 / 38..toString() ^ ("a" ^ 38..toString())))))):
                        break;
                    }
                } finally {
                    {
                        var b = function a_2(a_2, c_1 = (c = 1 + c, (4 & "number") <= "foo" / 25 !== ([ , 0 ][1] * 1 | NaN <= 25))) {
                        }("", -0, (c = 1 + c, this + /[a2][^e]+$/ - (b_1 && (b_1.a %= -0 >= "undefined")) < ([] << -3) - ([ , 0 ][1] < undefined)));
                    }
                    switch ({
                        next: (c = 1 + c, (-5 == /[a2][^e]+$/) % (22 != "foo") || ("undefined" === {}) <= ([ , 0 ].length === 2, 
                        25)),
                        [(c = 1 + c, (void 0 !== "bar" * "object") >>> ("bar" | 23..toString() && (b_1 && ({
                            [(c = 1 + c, (23..toString() | 5) != ("foo" ^ "a") | (false || -4) & ([ , 0 ].length === 2) / 38..toString())]: b_1.set
                        } = {
                            done: 24..toString() % "number"
                        }))))]: (c = 1 + c, b && (b[--b + +a] = ("undefined" <= true ^ ({} ^ "function")) + (c = c + 1, 
                        "object" || []))),
                        "-2": (c = 1 + c, c = c + 1, (b && (b[c = 1 + c, (([] ^ 0) != 4 <= 24..toString()) % (NaN << NaN ^ 38..toString() >> this)] += undefined <= -3)) > ("undefined" == 2)),
                        async: (c = 1 + c, ((b_1 = true % Infinity) != (24..toString() == "number")) * (23..toString() >> "number" != -3 << "")),
                        null: (c = 1 + c, void false + (24..toString() >>> Infinity) - ((NaN & -4) >= (/[a2][^e]+$/ <= [])))
                    }[c = 1 + c, (38..toString() ^ Infinity) % (5 !== -2) === ((b && (b.static = "number" !== [ , 0 ][1])) ^ "number" << this)]) {
                      case [ (c = 1 + c, ((c = c + 1, "b") || 38..toString() >= -0) + (-1 !== /[a2][^e]+$/ | -4 !== -0)), (c = 1 + c, 
                        b_1 = (undefined - /[a2][^e]+$/ ^ false >> 2) - ((NaN || "c") <= Infinity / "function")), (c = 1 + c, 
                        [ , 0 ].length === 2 === 0 == this % 38..toString() == ("undefined" & /[a2][^e]+$/, 
                        [] & -5)), (c = 1 + c, (22 > -3, false != 23..toString()) ^ (/[a2][^e]+$/ | true) > "function" + true), (c = 1 + c, 
                        (22 & [ , 0 ][1]) >>> null + -3 ^ (0 >= -4) / ("object" | [ , 0 ].length === 2)) ].null:
                        c = 1 + c, delete (22 << "undefined") === ("a" > 2 === (true & /[a2][^e]+$/));
                        break;

                      case b_1:
                        c = 1 + c, "c" / 38..toString() % (false < 0) / (("c", false) <= ("b" !== "c"));
                        break;

                      case --b + (typeof f2 == "function" && --_calls_ >= 0 && f2()):
                        c = 1 + c, (3 - 0) * (b && (b.a %= this / "number")) !== (-2 || null) % (b && (b.then /= null >> "number"));
                        break;

                      case --b + (b && typeof b.async == "function" && --_calls_ >= 0 && b.async(1)):
                        c = 1 + c, (b += (c = c + 1, {}) == (NaN || "function")) % ((([ , 0 ].length === 2) < "b") << (false === NaN));
                        break;
                    }
                }
                ({}) in {
                    c: (c = c + 1) + (typeof undefined != "object"),
                    "-2": a++ + b_1,
                    3: --b + (b_1 && typeof b_1.done == "function" && --_calls_ >= 0 && b_1.done((c = 1 + c, 
                    ((b_1 && ([ b_1[c = 1 + c, (null == undefined ^ "foo" >> 3) < (c = c + 1, 
                    -1) >>> -4 / -0] ] = [ "function" % "undefined" ])) == (false | [ , 0 ].length === 2)) % (c = c + 1, 
                    0 * [])), "undefined", (c = 1 + c, (c = c + 1, "foo") * (b_1 && (b_1[c = 1 + c, 
                    ("function", "object") >> (-2, 2) <= (false * -2 || -4 === "a")] += Infinity << /[a2][^e]+$/)) + (b_1 && ({
                        then: b_1.set
                    } = {
                        then: (undefined || "") | 5 <= "bar"
                    }))))),
                    "\t": a++ + b_1,
                    get: (c = c + 1) + +(b_1 && (b_1.set = 3 !== 0 === ({} ^ "c") || (2 ^ {}) << (b_1 && (b_1[c = 1 + c, 
                    NaN || "a" || -2 > "" || [ , 0 ][1] > -3 | "" << "c"] = "object" !== /[a2][^e]+$/))))
                };
            }
            break;
        }

      case a++ + b++:
        ;
        break;
    }
} finally {
    {
        var a_2 = function f3({
            next: foo_1,
            set: [],
            ...a_2
        }) {
            if (a_2 && typeof a_2.var == "function" && --_calls_ >= 0 && (b = a, 
            a_2.var)(typeof f4 == "function" && --_calls_ >= 0 && f4(38..toString(), (c = c + 1) + {
                in: (c = 1 + c, (undefined != 3) >> (-4 == "bar") ^ ("function" <= 4 || ([ , 0 ].length === 2) <= -1)),
                NaN: (c = 1 + c, delete ((-2 == -2) / (c = c + 1, -1))),
                ...(c = 1 + c, ("number" !== undefined & -5 >>> -5) != ("bar" !== NaN) / (-5 === true)),
                [(c = 1 + c, (a_2 && (a_2.static -= (a_2 && (a_2[c = 1 + c, (-1 % 1 + ([] <= 5)) * ((c = c + 1, 
                5) >> (false === 5))] += false >> "b")) - (null != -3))) - ((-3 || "a") === 4 < Infinity))]: (c = 1 + c, 
                ((a_2 += "function" % 1) != (Infinity & 2)) << (("undefined" ^ 4) <= (-2 | null))),
                null: (c = 1 + c, (("undefined" == 5) >= ("bar" === 22)) >> +(this ^ "function"))
            }[c = 1 + c, "number" >>> "number" >>> ("bar" === -3) > (a_2 += (foo_1 && (foo_1.in = 3 < -0)) >> ("function" && [ , 0 ].length === 2))]), this, 4)) {
                switch (foo_1 && typeof foo_1.foo == "function" && --_calls_ >= 0 && foo_1.foo(typeof f2 == "function" && --_calls_ >= 0 && f2(0, (c = 1 + c, 
                ("c" > [ , 0 ][1]) + (false <= Infinity) & (3 / Infinity | 25 ^ -2)), 23..toString()))) {
                  case --b + void (foo_1 && (foo_1.b = (24..toString() <= false) >>> "object" + 0 & ("c" | 23..toString()) > -1 >> undefined)):
                    break;

                  case {
                        then: a++ + (typeof f5 == "function" && --_calls_ >= 0 && f5())
                    }.var:
                    break;

                  default:
                    {
                        var expr69 = 0 === 1 ? a : b;
                        L11312: for (var {
                            length: key69
                        } in expr69) {
                            c = 1 + c;
                            let bar = expr69[key69];
                            try {
                                {
                                    var brake71 = 5;
                                    L11313: do {
                                        c = 1 + c, -(Infinity ^ 4 ^ ("" ^ "c"));
                                    } while ((c = 1 + c, a_2 && (a_2.get = ((c = c + 1, 
                                    null) != "undefined" >= 3) < (undefined < Infinity === 1 < 23..toString()))) && --brake71 > 0);
                                }
                            } finally {
                                c = 1 + c, ((c = c + 1, "b") >= (1 >= {})) * (38..toString() + false + ("foo" && true));
                                c = 1 + c, null >> "undefined" >> -1 + [ , 0 ][1] !== 4 - -4 - (true | 5);
                            }
                        }
                    }
                    {
                        var brake75 = 5;
                        L11314: while (typeof c_2 != "object" && --brake75 > 0) {
                            var yield_1 = function f4() {
                            }((c = 1 + c, -3 + 3 << ("foo" ^ 24..toString()) >>> (c = c + 1, 
                            Infinity ^ -1)), "bar", Infinity);
                        }
                    }

                  case -5 in [ --b + (typeof f6 == "function" && --_calls_ >= 0 && f6()), --b + a_2, ..."" + a_2 ]:
                    var foo_1_1 = a++ + yield_1;
                    {
                        return;
                        a_2;
                    }
                    break;
                }
            }
            c = c + 1;
        }({
            undefined: --b + (a && a.Infinity),
            set: [ a++ + {
                "": [ a++, , a++ + (typeof yield_2 != "symbol") ].Infinity,
                [(void b || a || 3).toString()]: a,
                b: a++ + (--b + !function foo_1() {}()),
                get var() {
                    {
                        return {
                            "-2": (c = 1 + c, ("bar" > "b" && this >>> {}) > ("object" > undefined) * (this && -0)),
                            Infinity: (c = 1 + c, ~(NaN > 22) / (c = c + 1, -3 && 38..toString())),
                            [(c = 1 + c, ((a && (a.value >>>= "foo" >= undefined)) + ([] < 22)) % (("a" !== -0) << ("undefined" ^ "function")))]: (c = 1 + c, 
                            ((a = 0 + -0) ^ (Infinity || "a")) <= (a && (a[c = 1 + c, 
                            "" - null >= ("number" & false) < ~(38..toString() != 23..toString())] = 22 ^ 1)) >>> -4 * NaN),
                            next: (c = 1 + c, undefined * -2 > "foo" + false, (22 <= this) + -"number")
                        }.then;
                    }
                    return a++;
                },
                0: --b + ("" in [])
            }, --b + a, --b + (~(c = c + 1, (a && (a.async = "number" | "bar")) >>> ("b" >>> [ , 0 ][1])) ? ({
                a
            } = (c = c + 1) + (b = a) || {}) : (c = c + 1) + typeof (a++ + (typeof arguments != "string"))) ]
        }, (c = c + 1) + (a && typeof a.in == "function" && --_calls_ >= 0 && a.in(b = a, a++ + a)), a = a && a.foo);
    }
}

for (var brake81 = 5; --b + {}[a && typeof a.length == "function" && --_calls_ >= 0 && a.length((c = c + 1) + (1 === 1 ? a : b), [ , 0 ].length === 2, a && a.in)] && brake81 > 0; --brake81) {
    for (var brake82 = 5; (--b + a++ || 1).toString()[--b + typeof (0 === 1 ? a : b)] && brake82 > 0; --brake82) {
        try {
            {
                var brake84 = 5;
                L11315: while (24..toString() in [ a++ + delete ((import.meta ^ "bar") * (true || 38..toString()) ^ ("b" !== -5) >> (4 != "b")), --b + -(c = c + 1, 
                ("bar" == 5) - /[a2][^e]+$/ % "function"), --b + b--, b++ ] && --brake84 > 0) {
                    c = c + 1;
                }
            }
        } finally {
            {
                var expr86 = [ --b + new function foo_2(a_2) {}(), (a && typeof a.async == "function" && --_calls_ >= 0 && a.async((a = this + NaN >> (-3 <= 0)) * (("" >= 5) >> (true >>> "c")), "c", --b + (typeof f0 == "function" && --_calls_ >= 0 && f0`${c = 1 + c, 
                (-2 === "object") >> (5 >>> 38..toString()) ^ (/[a2][^e]+$/ + 1) * (1 != "a")}`)) || 8).toString()[(c = c + 1) + [ (c = c + 1) + [ (c = 1 + c, 
                -(a && (a[--b + (a && a[c = 1 + c, (2 < 4) % (24..toString(), "") << (-1 && /[a2][^e]+$/) / (-2, 
                NaN)])] += a && ([ a.async ] = [ ("bar", 0) ]) && (a += 4 >> Infinity)))), (c = 1 + c, 
                "function" << 38..toString() != (4, "foo") | (c = c + 1, -0 < -0)), (c = 1 + c, 
                -0 / 22 | -0 - false && (-4 | 1) >>> ("bar" <= 3)) ][c = 1 + c, 
                c = c + 1, ("b" | 2) ^ (a += 25 < 24..toString())], (c = c + 1) + /[abc4]/.test(((c = 1 + c, 
                ((a && (a.c /= (this, NaN))) != ("foo" || 22)) % ((undefined, []) != ({} & 5))) || b || 5).toString()), void b ][--b + (0 === 1 ? a : b)]], (c = c + 1) + delete b ].Infinity;
                L11316: for (var key86 in expr86) {
                    c = 1 + c;
                    var undefined_1 = expr86[key86];
                }
            }
            for (var brake88 = 5; --b + "number" && brake88 > 0; --brake88) {
                -5 in {
                    length: typeof bar_2 !== "undefined",
                    undefined: (1 === null & "undefined" >= 3) !== (a += NaN < "bar" !== "" << -5),
                    get: --b + ((38..toString() > -0 >= (38..toString() > 5)) << (undefined === NaN != (5 !== 0)))
                };
            }
        }
    }
}

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

try {
    switch ((c += 1) + typeof a_2) {
      case {
            "": (c += 1, 20 < NaN << (2 === [ , 0 ].length) ? --b + !(0 <= ((-1 ^ 2 === [ , 0 ].length) & 4 * [])) : (c += 1) + {
                "\t": new function NaN_1() {
                    this[(c += 1) + (NaN_1 && NaN_1.value)] = (NaN_1 && (NaN_1[b--] = ([] + 1 / 0 & -1) >>> 0), 
                    (25 ^ {}) % -0 + 1), this.b <<= ("number" < (24..toString() <= "b")) >>> (-5 * 23..toString() || !1) >= (-1 !== 38..toString() || (2 === [ , 0 ].length) / -2);
                    var key3, expr3 = --b;
                    for (key3 in expr3) {
                        c = 1 + c;
                        var expr4 = [ (c = 1 + c, 0 >> ("number" < this)), (c = 1 + (c += 1), 
                        c += 1, ("function" | 24..toString()) == -1 / 0), !0, (c = 1 + (c = 1 + c), 
                        0 == (c += 1, "number") ^ (NaN_1 && (NaN_1[(c += 1) + (c = 1 + c, 
                        (!1 <= ([] <= -1) <= (0 ^ /[a2][^e]+$/ * this) || a || 3).toString())] += 1 == this))) ];
                        for (let key3 of expr4) {
                            c = 1 + c;
                            key3;
                            c = 1 + c, 23..toString(), 24..toString();
                        }
                    }
                    expr3 = 5;
                }(),
                1.5: /[abc4]/g.exec((a++ + /[abc4]/.test((!0).toString()) || b || 5).toString())
            })
        }.null:
        break;

      case 23..toString() < "a" < NaN <= 0:
        for (var brake9 = 5; 0 < --brake9; ) {}
        for (var brake11 = 5; (c += 1) + (38..toString(), 23..toString() <= "a" && (c += 1), 
        !0) && 0 < --brake11; ) {
            b += a;
        }
        break;

      case --b + (--b + ("function" == typeof a && 0 <= --_calls_ && a("object" == typeof a)) || a || 3).toString():
        var expr13 = (c += 1) + a;
        for (key13 in expr13) {
            try {
                var brake16 = 5;
                do {
                    c = 1 + c, 38..toString(), 24..toString(), c = 1 + c;
                    var key13 = void 24..toString();
                } while ("bar" in [ a++ + b--, (c += 1) + (-2 in [ (c = 1 + c, 0 * (-5 << -1 >>> "object" * (2 === [ , 0 ].length))) ]), a++ + ("object" in [ ..."" + key13, , (c = 1 + c, 
                key13 && (key13[--b + !(("nullc" & (key13 = "4undefined")) + (key13 = 1 / 0))] += 24..toString() >>> "object" << 0), 
                key13 >>>= "undefined" << 24..toString()), ..."" + key13, (c = (c = 1 + c) + 1 + 1, 
                -.25) ]) ] && 0 < --brake16);
            } finally {
                for (var brake20 = 5; c = 1 + c, 23..toString(), c += 1, /[abc4]/g.exec((c = 1 + c, 
                ((key13 && (key13[(c += 1) + (key13 && "function" == typeof key13.var && 0 <= --_calls_ && key13.var(-4, (c = 1 + c, 
                -0 << (23..toString() || 24..toString()) > -2 >>> !0), 0))] &= 0)) !== !0 * (key13 && (key13.null *= -3)) || b || 5).toString())), 
                c = 1 + c, key13 && (key13.var = !1 === {} >> {}) && (c += 1, key13 && (key13[c = 1 + c, 
                c += 1, -3 <= "object" << (2 === [ , 0 ].length) <= -3 >>> !1] = !1)), 
                c = 1 + c, key13 && (key13[c = 1 + c, c += 1, 1] = 0), c = 1 + c, 
                key13 && (key13.b >>>= this), 23..toString(), (c += 1) + (key13 && "function" == typeof key13.length && 0 <= --_calls_ && (function() {
                    for (var brake22 = 5; key13 = NaN, c = 1 + (c = 1 + c), 0 >>> (c += 1, 
                    {} <= 2) && 0 < --brake22; ) {}
                    for (var brake24 = 5; c = 1 + c, c += 1, key13 += 23..toString() & this, 
                    24..toString(), c = 1 + c, ((key13 && (key13.var = NaN)) !== [] < "foo") % (this >> 3 <= []) && 0 < --brake24; ) {}
                }(), key13.length)(this, "foo", [ (c = 1 + c, (0 != ("b" ^ 23..toString())) % ((-1 | 24..toString()) >> !1)), -1 >>> (this <= 22) << 0, (c = 1 + (c = 1 + c), 
                c += 1, 0 - (key13 && (key13.get *= 0))) ][key13 && "function" == typeof key13.async && 0 <= --_calls_ && key13.async()])) && 0 < --brake20; ) {}
                for (var brake26 = 5; (c += 1) + {
                    var: a++ + a++
                }["symbol" != typeof async] && 0 < --brake26; ) {
                    var brake29, brake28 = 5;
                    setImmediate(() => "function" == typeof f0 && 0 <= --_calls_ && f0(-1));
                }
            }
        }
        switch (a && a[a && "function" == typeof a.null && 0 <= --_calls_ && (--b, 
        --b, a && "function" == typeof a.foo && 0 <= --_calls_ && a.foo(!0 === (c = (c = 1 + c) + 1 + 1, 
        NaN), 22, -4), --b, "function" == typeof a && 0 <= --_calls_ && a((c = 1 + c, 
        a && (a.done *= ({} - /[a2][^e]+$/) * (a && (a[c = 1 + c, 1] = {} - 23..toString())) * 0)), -1, (c = 1 + c, 
        0 != ("a" === this) == void 0)), a++, (--b + (c = 1 + c, 0 === (23..toString() >> void 0 || 24..toString() < /[a2][^e]+$/) ? (c = 1 + c, 
        (a && (a.next >>>= 0 - (a && (a.var /= 3 < 24..toString())))) < ((a -= 5) !== void 0 + "function")) : (c = 1 + c, 
        0 < !1 << (c += 1, 2 === [ , 0 ].length))) || a || 3).toString(), a++, a++, 
        23..toString(), a.null)(a++ + (a || 3).toString())]) {
          case (c += 1) + (a++ + [ --b, a++ + (25 in {
                [(c += 1) + (a && a.then)]: --b + {
                    value: (c = 1 + c, 0 << (!1 === (3 | [])))
                }.async
            }), --b + (a = --b + a), (c += 1) + (a += !function let_1() {
                c = 1 + c, c += 1, let_1 && (let_1["string" != typeof b_1] = !0 * ("undefined" ^ {}));
            }()), "function" == typeof f3 && 0 <= --_calls_ && f3(this, []), /[abc4]/g.exec(((a += a++ + {
                done: (c = 1 + c, "undefined" != (-4 & 23..toString()) != (-2 < (2 === [ , 0 ].length) == 0))
            }) || b || 5).toString()) ? --b + "" : (c += 1) + (a && "function" == typeof a.then && 0 <= --_calls_ && a.then(38..toString())) ][[ (c += 1) + (b = a), "function" == typeof f2 && 0 <= --_calls_ && f2([], --b + [ (c = 1 + c, 
            NaN) ].next), --b + typeof (a++ + (b += a)), b ][a++ + "object"]]):
            break;

          default:
          case (c += 1) + ("function" in [ a && "function" == typeof a.value && 0 <= --_calls_ && a.value`\\
${"function" == typeof a && 0 <= --_calls_ && a((c = 1 + c, !1))}`, --b + ("function" == typeof f2 && 0 <= --_calls_ && f2(null, a)), !void 38..toString(), ((2 === [ , 0 ].length) >> "number" == 1) >> (NaN ^ (a && (a.var = "object"))) ]):
            if (a++ + []) {
                var key35, expr35 = a++ + "function";
                for (key35 in expr35) {
                    var c = 1 + c, bar_1 = expr35[key35], async_2 = void 0;
                }
            }
            23..toString(), c = 1 + c, a && ([ a.NaN ] = [ (a += "a") < 0 | !1 ]) ? (c = 1 + c, 
            a && (a.null ^= (-0 >>> (2 === [ , 0 ].length)) - "foo" * 24..toString())) : c = 1 + c, 
            a++, c = 1 + c, "number" + {} === 23..toString() && 23..toString(), 
            c = 1 + c, 24..toString(), c = 1 + c, c += 1, a &= {} ^ 24..toString(), 
            38..toString(), c = 1 + c, --b, ++a;
            break;

          case (c += 1) + ("function" == typeof f3 && 0 <= --_calls_ && f3(--b + --b)):
            try {
                if (24..toString(), ("bar" >>> this) % 0) {
                    c += 1;
                } else {
                    var yield = --b + ("function" == typeof f0 && 0 <= --_calls_ && f0(23..toString(), 25, "c")), async = a--;
                    c += 1;
                    for (var brake46 = 5; --b + void 23..toString() && 0 < --brake46; ) {
                        for (var brake47 = 5; c = 1 + c, 23..toString(), c = 1 + c, 
                        (yield && (yield.set += -1 / 0)) >> (2 === [ , 0 ].length != "b") == 1 && 0 < --brake47; ) {}
                    }
                }
            } catch (b_1) {
                try {
                    a++, "function" == typeof b_1 && 0 <= --_calls_ && b_1("c", (c = 1 + c, 
                    !1 ^ (b_1 && (b_1[c = 1 + c, 0 / ((24..toString() === []) / (2 === [ , 0 ].length && 23..toString()))] = [] << 23..toString())) === 1 / 0), (c = 1 + c, 
                    1 === (b_1 && (b_1.var += [] <= 5)) > (c += 1, -3)));
                } catch (a) {
                    switch (c += 1, --b + a++) {
                      case a++ + ("function" == typeof b_1 && 0 <= --_calls_ && b_1((c = 1 + c, 
                        0), /[a2][^e]+$/)):
                        c = 1 + c, a && (a[c = 1 + c, ("object" * {} == (-3 ^ this)) + -1 / 0] = 1), 
                        b_1 += !0, c = 1 + c, a <<= 0 != (a && (a[c = 1 + c, (a && (a[c = 1 + c, 
                        !1 === (b_1 && (b_1[c = 1 + c, 0 * (c += 1, !0)] = 4 ^ [])) == (a += -4 == 23..toString()) < !0] += !1)) >= (2 === [ , 0 ].length === NaN) === 0] = 1 / 0 - this)) == !1 < (a && (a[c = 1 + c, 
                        ((a && (a.c = -1 << this)) | (b_1 && ([ b_1[c = 1 + c, NaN + (c += 1, 
                        "c") < 0] ] = [ -1 ]))) + !0 * (a = NaN)] %= NaN));
                        break;

                      case a += (c = 1 + c, 0):
                        c = 1 + c, a && (a[a] ^= (2 === [ , 0 ].length) < "undefined" < !0);
                        break;

                      default:
                      case a++ + ("function" == typeof a && 0 <= --_calls_ && a(-5, !0, (c = 1 + c, 
                        (0 == 38..toString() && 3) == (b_1 && (b_1.a >>= -1 / 38..toString() ^ "a" ^ 38..toString()))))):
                    }
                } finally {
                    b = (c = 1 + c, void (b_1 && (b_1.a %= !1)));
                    switch ({
                        next: ("undefined" === {}) <= 25,
                        [(c = 1 + (c = 1 + c), !0 >>> ("bar" | 23..toString() && b_1 && ({
                            [(c = 1 + c, 0 != (5 | 23..toString()) | -4 & (2 === [ , 0 ].length) / 38..toString())]: b_1.set
                        } = {
                            done: 24..toString() % "number"
                        })))]: (c = 1 + c, b && (b[--b + +a] = ("function" ^ {} ^ !1) + (c += 1, 
                        "object"))),
                        "-2": (c = 1 + c, c += 1, !1 < (b && (b[c = 1 + c, ((0 ^ []) != 4 <= 24..toString()) % (0 ^ 38..toString() >> this)] += !1))),
                        async: (c = 1 + c, ((b_1 = 1) != ("number" == 24..toString())) * (23..toString() >> "number" != -3)),
                        null: (c = 1 + c, void 0 + (24..toString() >>> 1 / 0) - (/[a2][^e]+$/ <= [] <= 0))
                    }[c = 1 + c, (38..toString() ^ 1 / 0) % !0 == ((b && (b.static = !0)) ^ "number" << this)]) {
                      case [ (c = 1 + c, "b1"), b_1 = 0, (c = 1 + (c = 1 + (c += 1)), 
                        2 === [ , 0 ].length === 0 == this % 38..toString() == (-5 & [])), (c = 1 + c, 
                        0 != 23..toString() ^ !1), (c = 1 + c, 0 ^ !0 / ("object" | 2 === [ , 0 ].length)) ].null:
                        c = 1 + c;
                        break;

                      case b_1:
                        c = 1 + c, 38..toString();
                        break;

                      case --b + ("function" == typeof f2 && 0 <= --_calls_ && f2()):
                        c = 1 + c, b && (b.a %= this / "number"), b && (b.then /= 0);
                        break;

                      case --b + (b && "function" == typeof b.async && 0 <= --_calls_ && b.async(1)):
                        c = 1 + c, b += "function" == (c += 1, {});
                    }
                }
                c += 1, a++, --b, b_1 && "function" == typeof b_1.done && 0 <= --_calls_ && b_1.done((c = 1 + c, 
                ((b_1 && ([ b_1[c = 1 + c, 1 < (c += 1, -1 >>> 1 / 0)] ] = [ NaN ])) == (!1 | 2 === [ , 0 ].length)) % (0 * [])), "undefined", (c = 1 + (c += 1), 
                c += 1, "foo" * (b_1 && (b_1[c = 1 + c, !0] += 0)) + (b_1 && ({
                    then: b_1.set
                } = {
                    then: 0
                })))), a++, c += 1, b_1 && (b_1.set = !0 === ("c" ^ {}) || (2 ^ {}) << (b_1 && (b_1[c = 1 + c, 
                "a"] = !0)));
            }
        }

      case a++ + b++:
    }
} finally {
    var a_2 = function({
        next: foo_1,
        set: {},
        ...a_2
    }) {
        if (a_2 && "function" == typeof a_2.var && 0 <= --_calls_ && (b = a, a_2.var)("function" == typeof f4 && 0 <= --_calls_ && f4(38..toString(), (c += 1) + {
            in: (c = 1 + c, 1 ^ (2 === [ , 0 ].length) <= -1),
            NaN: (c = 1 + c, !0),
            ...(c = 1 + (c += 1), !0),
            [(c = 1 + c, (a_2 && (a_2.static -= (a_2 && (a_2[c = 1 + c, (-0 + ([] <= 5)) * (c += 1, 
            5)] += 0)) - !0)) - !1)]: (0 != (a_2 += NaN)) << !1,
            null: (c = 1 + (c = 1 + c), !0 >> ("function" ^ this))
        }[c = 1 + c, (a_2 += (foo_1 && (foo_1.in = !1)) >> (2 === [ , 0 ].length)) < 0]), this, 4)) {
            switch (foo_1 && "function" == typeof foo_1.foo && 0 <= --_calls_ && foo_1.foo("function" == typeof f2 && 0 <= --_calls_ && f2(0, (c = 1 + c, 
            1), 23..toString()))) {
              case --b + void (foo_1 && (foo_1.b = (24..toString() <= !1) >>> "object0" & -1 < ("c" | 23..toString()))):
              case {
                    then: a++ + ("function" == typeof f5 && 0 <= --_calls_ && f5())
                }.var:
                break;

              default:
                var key69, expr69 = b;
                for ({
                    length: key69
                } in expr69) {
                    c = 1 + c;
                    expr69[key69];
                    try {
                        for (var brake71 = 5; c = 1 + (c = 1 + c), a_2 && (a_2.get = (0 != (c += 1, 
                        null)) < (!1 == 1 < 23..toString())) && 0 < --brake71; ) {}
                    } finally {
                        c = 1 + c, c += 1, 38..toString(), c = 1 + c;
                    }
                }
                for (var brake75 = 5; "object" != typeof c_2 && 0 < --brake75; ) {
                    c = 1 + c, 24..toString();
                    var yield_1 = void (c += 1);
                }

              case -5 in [ --b + ("function" == typeof f6 && 0 <= --_calls_ && f6()), --b + a_2, ..."" + a_2 ]:
                a++;
                return;
            }
        }
        c += 1;
    }({
        undefined: --b + (a && a.Infinity),
        set: (a++, a++, a++, (a || 3).toString(), a++, --b, --b, --b, --b, c += 1, 
        ~((a && (a.async = 0)) >>> 0) ? a = ((c += 1) + (b = a) || {})["a"] : (c += 1, 
        a++))
    }, (c += 1, a && "function" == typeof a.in && 0 <= --_calls_ && a.in(b = a, a++ + a), 
    a = a && a.foo));
}

for (var brake81 = 5; --b + {}[a && "function" == typeof a.length && 0 <= --_calls_ && a.length((c += 1) + a, 2 === [ , 0 ].length, a && a.in)] && 0 < brake81; --brake81) {
    for (var brake82 = 5; (--b + a++ || 1).toString()[--b + typeof b] && 0 < brake82; --brake82) {
        try {
            for (var brake84 = 5; 24..toString() in [ a++ + (import.meta, !0), --b + (c += 1, 
            NaN), --b + b--, b++ ] && 0 < --brake84; ) {
                c += 1;
            }
        } finally {
            var key86, expr86 = [ --b + new function(a_2) {}(), (a && "function" == typeof a.async && 0 <= --_calls_ && a.async(0 * (a = this + NaN >> !0), "c", --b + ("function" == typeof f0 && 0 <= --_calls_ && f0`${c = 1 + c, 
            !1 >> (5 >>> 38..toString()) ^ NaN}`)) || 8).toString()[(c += 1) + [ (c += 1) + [ (c = 1 + c, 
            -(a && (a[--b + (a && a[c = 1 + c, !0 % (24..toString(), "") << NaN])] += a && ([ a.async ] = [ 0 ]) && (a += 4)))), (c = 1 + c, 
            "function" << 38..toString() != "foo" | !1), 0 ][c = 1 + (c = 1 + (c += 1)), 
            c += 1, 2 ^ (a += 25 < 24..toString())], (c += 1) + /[abc4]/.test((c = 1 + c, 
            (("foo" != (a && (a.c /= NaN))) % ([] != (5 & {})) || b || 5).toString())), void 0 ][--b + b]], (c += 1) + delete b ].Infinity;
            for (key86 in expr86) {
                c = 1 + c;
                var undefined_1 = expr86[key86];
            }
            for (var brake88 = 5; --b, 0 < brake88; --brake88) {
                a += !0, --b, 38..toString(), 38..toString();
            }
        }
    }
}

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

uglified result:
TypeError: Cannot destructure 'undefined' or 'null'.
    at a_2.undefined ([stdin]:201:3229)
    at [stdin]:201:4366
    at ContextifyScript.Script.runInThisContext (vm.js:50:33)
    at Object.runInThisContext (vm.js:139:38)
    at Object.<anonymous> ([stdin]-wrapper:6:22)
    at Module._compile (module.js:653:30)
    at evalScript (bootstrap_node.js:479:27)
    at Socket.<anonymous> (bootstrap_node.js:250:15)
    at emitNone (events.js:111:20)
    at Socket.emit (events.js:208:7)
// reduced test case (output will differ)

// (beautified)
var a = 0;

(function f3({
    set: [],
    ...a_2
}) {
    a_2.var;
})({
    set: [ ~a ? ({
        a
    } = 0) : 0 ]
});
// output: 
// minify: TypeError: Cannot destructure 'undefined' or 'null'.
// options: {
//   "mangle": false,
//   "output": {
//     "v8": true
//   },
//   "validate": true
// }
minify(options):
{
  "mangle": false,
  "output": {
    "v8": true
  }
}

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