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

Closed
alexlamsl opened this issue Feb 15, 2022 · 0 comments · Fixed by #5357
Closed

ufuzz failure #5356

alexlamsl opened this issue Feb 15, 2022 · 0 comments · Fixed by #5357
Labels

Comments

@alexlamsl
Copy link
Collaborator

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

switch (a++ + {
    "-2": a++ + "object",
    var: (c = c + 1) + (1 === 1 ? a : b),
    done: 38..toString() in [ typeof f1 == "function" && --_calls_ >= 0 && f1(a, (c = c + 1) + ((c = c + 1) + (0 in [ ..."" + a, a++ + --b, b-- ])), {
        done: typeof a == "function" && --_calls_ >= 0 && a(NaN, 25, (c = 1 + c, 
        ([ , 0 ].length === 2 == 22) <= Infinity / null == "foo" / 22 >= (38..toString() | 25))),
        3: --b + {
            undefined: (c = 1 + c, (this && "foo") | 5 * 5 || (-0 && true) >> ("undefined" == -5))
        }.Infinity ? (c = c + 1) + [ (c = 1 + c, (a += 4 == 2) >>> (Infinity >> "bar") > (a && (a.Infinity += (-2 !== 25) - (-1 != 25)))), ..."" + a ] : 0 === 1 ? a : b,
        Infinity: [ (c = 1 + c, Infinity >>> Infinity <= (0 == "a") && ("undefined" & Infinity && -4 | -2)), (c = 1 + c, 
        ({} != "undefined" && "" !== "foo") % (void 1 === undefined >> "bar")), (c = 1 + c, 
        ((-4 >= -0) >>> 22 / 25) + ((0 === 22) << (a && (a.value ^= 3 == 5)))) ][(c = c + 1) + ("number" / undefined * (c = c + 1, 
        "c") || a && (a.a += -2 >> /[a2][^e]+$/ << (true && "b")))],
        length: typeof a == "function" && --_calls_ >= 0 && a(null),
        foo: a++ + {
            a: a
        }
    }.Infinity), a++ + a, --b + {} ]
}[{
    a: a,
    3: a++ + delete (void ({} > -2) !== ("number" * false == (-4 && null)))
}.next]) {
  default:
  case a++ + b--:
    try {
        c = c + 1;
    } catch (b_2) {
        {
            var brake4 = 5;
            while (a-- && --brake4 > 0) {
                a++ + a--;
            }
        }
        if (--b + ("" in {
            var: --b + void a,
            var: a++ + (a++ + "foo" ? (c = c + 1) + [ 0 === 1 ? a : b ][typeof b_2 == "function" && --_calls_ >= 0 && b_2()] : -((b_2 && (b_2[c = 1 + c, 
            3 % 2 != (/[a2][^e]+$/ & 38..toString()) === ([], -0, -1 || 25)] -= -4 ^ "number")) ^ Infinity * {} ^ (c = c + 1, 
            null || this))),
            undefined: --b + (22 in {
                [[ (c = 1 + c, +(([] ^ 3) % (25 || this))) ][a++ + (b = a)]]: delete ((2 >>> -2 ^ -1 >>> -1) + [] * "undefined" / (-0 != 1))
            })
        })) {
            L15328: {
                --b + (b + 1 - .1 - .1 - .1);
            }
        }
    }
    ;
    break;

  case --b + (typeof f0 == "function" && --_calls_ >= 0 && f0()):
    var b_1;
    break;

  case -0:
    --b + ([].Infinity ? typeof b_1 == "function" && --_calls_ >= 0 && b_1("object", 1 === 1 ? a : b, --b + /[abc4]/g.exec((((--b + (b_1 && (b_1.value = +{} <= (Infinity <= ([ , 0 ].length === 2)) ^ (24..toString() >= "number") - (5 >>> 22))) ? [ (c = 1 + c, 
    (undefined !== /[a2][^e]+$/ ^ ([] || "object")) !== (b_1 -= ("object", "undefined")) >> ("b" >>> null)), (c = 1 + c, 
    (b_1 += -3 == [ , 0 ][1]) % ([ , 0 ].length === 2 ^ -1) - ([] >> -0 == (c = c + 1, 
    38..toString()))), (c = 1 + c, b_1 = "" <= 38..toString() == "a" + NaN | true << "b" <= [ , 0 ][1] + [ , 0 ][1]) ].b : a++ + ((c = 1 + c, 
    !("foo" < 4) - (b_1 && (b_1[--b + /[abc4]/g.exec(((c = 1 + c, [] >= 25 !== (-2 ^ -1), 
    b_1 += ~"undefined" + (4 !== -3)) || b || 5).toString())] %= (c = c + 1, [ , 0 ].length === 2) / - -1))) || 4).toString()[c = 1 + c, 
    [] / -0 >> undefined + "" < ((-1, 38..toString()) || -/[a2][^e]+$/)]) ? (c = c + 1) + 22 : b_1) || b || 5).toString())) : a++ + /[abc4]/g.exec(((c = c + 1) + (1 === 1 ? a : b) || b || 5).toString()));
    break;
}

switch (b_1 &= b >>= a) {
  case (c = c + 1) + {
        3: (c = c + 1) + (typeof a_2 == "undefined"),
        c: (c = c + 1) + (b = a),
        get: a++ + "object"
    }:
    try {
        {
            var expr15 = {
                1.5: ((typeof a_2 !== "special" ? typeof ((c = c + 1) + (b_1 && b_1[b_1])) : typeof b--) || 6).toString()[--b + !function() {
                    for (var brake16 = 5; b_1 && b_1.static && brake16 > 0; --brake16) {
                        switch (c = 1 + c, (22 * undefined & 5 === 2) % (false / "function" < 1 >> /[a2][^e]+$/)) {
                          case c = 1 + c, b_1 %= (c = c + 1, "c" == -1) !== (b_1 = 3 | 0) - (38..toString() && []):
                            ;
                            break;

                          default:
                            ;

                          case c = 1 + c, b_1 = "c" / 2 >>> (-3 != "function") > (b_1 && (b_1[a++ + ""] = undefined > undefined && /[a2][^e]+$/ / {})):
                            ;
                            break;

                          case c = 1 + c, ((true == -5) > ("a" >= -4)) + (NaN << /[a2][^e]+$/ >= -4 >> NaN):
                            ;
                            break;
                        }
                    }
                    if (a++ + (typeof f1 == "function" && --_calls_ >= 0 && f1())) {
                        switch (c = 1 + c, -/[a2][^e]+$/ / (-2 >>> "a"), 0 | 2 || -4 >= "c") {
                          case c = 1 + c, ((b_1 && (b_1.in = 5 || [])) ^ "foo" + -2) == ({} >>> 23..toString()) * (25 < "c"):
                            ;
                            break;

                          default:
                            ;

                          case c = 1 + c, true / 23..toString() > (b_1 = -4 && "function") == -0 << "a" << ("" >>> true):
                            ;
                            break;

                          case c = 1 + c, ((b_1 += -5 >>> "object") > (-4 && "a")) / ((-0 | 4) * (1 <= "bar")):
                            ;
                            break;
                        }
                    }
                }()],
                "\t": --b + ++a,
                NaN: ++a
            };
            for (var [ key15 ] in expr15) {
                c = 1 + c;
                var a_1 = expr15[key15];
                switch (b_1 && b_1[--b + -((-0 !== 22) << NaN % true > (b_1 = -1 != [ , 0 ][1], 
                4 <= ""))]) {
                  case a++ + (typeof b_1 == "function" && --_calls_ >= 0 && b_1(..."" + key15)):
                    break;

                  case 0 === 1 ? a : b:
                    for (var brake21 = 5; (c = c + 1) + -5 && brake21 > 0; --brake21) {
                        var a = function* f0(foo_2, a_2, bar_2) {
                            c = c + 1;
                            {
                                var expr24 = (c = 1 + c, (5 * "bar" ^ -5 < 38..toString()) > (true !== "c" ^ "undefined" - "foo"));
                                for (var key24 in expr24) {
                                    c = 1 + c, (-5 > 2 || ([ , 0 ].length === 2) << "object") / ([ , 0 ][1] + 25 !== (22 !== 2));
                                }
                            }
                        }((c = c + 1) + void (key15 &= 3 * -3) * (undefined >> Infinity > (NaN >= [ , 0 ][1]))).next().done;
                    }
                    {
                        var Infinity_2 = function f1(bar, async, NaN_1) {
                            c = c + 1;
                            {
                                return delete (((c = c + 1, "bar") | undefined !== 3) << -("function" | this));
                            }
                        }(/[a2][^e]+$/, -1, -2 in [ a++ + (c = 1 + c, ("foo" != -0) >= -5 % 1 & (-2 | 1) == (-3 ^ [ , 0 ].length === 2)), a++ + ((c = 1 + c, 
                        void (("" && 1) % (-2, [ , 0 ][1]))) ? (c = 1 + c, (b_1 && (b_1.undefined >>>= "a" / "function" == "c" % "")) >>> (22 > false) - (4 != null)) : (c = 1 + c, 
                        [ , 0 ][1] / undefined - (null === "a") >= (1 | Infinity && (a = {} <= 23..toString())))), (c = c + 1) + (b_1 && b_1[c = 1 + c, 
                        (false >>> -1 ^ undefined < -2) & (23..toString() ^ false) !== (a += "b" !== {})]) ]);
                    }
                    break;

                  default:
                    {
                        var expr29 = --b + (typeof f2 == "function" && --_calls_ >= 0 && f2(a++ + {}[--b], "number"));
                        for (var key29 in expr29) {
                            c = 1 + c;
                            var arguments_2 = expr29[key29];
                        }
                    }

                  case (c = c + 1) + (0 === 1 ? a : b):
                    {
                        c = c + 1;
                    }
                    break;
                }
            }
        }
    } catch (bar_1) {
        typeof [ , typeof b_2 == "symbol", b_1 && typeof b_1.get == "function" && --_calls_ >= 0 && b_1.get(38..toString()) ].null;
        if (--b + {}) {
            var expr35 = (c = c + 1) + ~(23..toString() * "object" ^ /[a2][^e]+$/ == -0 ^ ({} | 24..toString()) - (-2 | 24..toString()));
            for (var key35 in expr35) {
                c = 1 + c;
                var foo = expr35[key35];
                {
                    var expr36 = `${this in {}}
${--b + ((foo = "b" + "number") >= (bar_1 && (bar_1[c = 1 + c, (false > undefined === [] * /[a2][^e]+$/) + (null - 1, 
                    [ , 0 ][1] ^ -4)] = "undefined" << NaN)) | (bar_1 && (bar_1[a++ + --b] >>= (key35 && (key35.foo = 2 / undefined)) >>> ("foo" <= undefined))))}
\\
${a++ + (b /= a)}
${(c = c + 1) + /[abc4]/.test(({
                        next: (c = 1 + c, ((key35 && (key35.async = Infinity >> 0)) < "object" >> "c") >> (null + this >> void "bar")),
                        done: (c = 1 + c, ((c = c + 1, 24..toString()) | ([ , 0 ].length === 2) % null) > ~0 % (3, 
                        "b")),
                        var: (c = 1 + c, (1 >> "" & 3 < undefined) + (("function" || "function") << (3 >>> "c")))
                    }[c = 1 + c, ((25, undefined) >>> (-3 || "b")) - ((c = c + 1, 
                    true) + ~Infinity)] || b || 5).toString())}`;
                    for (var key36 in expr36) {
                        c = 1 + c;
                        var arguments = expr36[key36];
                        var key35 = foo && foo[void function() {
                            c = 1 + c, ("number" === 2) - ("function" | "") - ((22 || null) === /[a2][^e]+$/ > /[a2][^e]+$/);
                            c = 1 + c, +this * ("undefined" === null) & (24..toString() && 5 && {} >= -5);
                            c = 1 + c, [] < false <= (NaN !== "number") | (25, -2) - ([ , 0 ].length === 2) * "c";
                            c = 1 + c, delete (arguments && (arguments.__proto__ = "a" <= "a")) & ([ , 0 ][1] && "") * (-1 % -2);
                        }()];
                    }
                }
            }
        } else if ((c = c + 1) + bar_1) {
            var brake43 = 5;
            L15329: while (--b + /[abc4]/g.exec((/[abc4]/g.exec(((c = c + 1) + (typeof b_1 == "function" && --_calls_ >= 0 && b_1("foo", (c = 1 + c, 
            ((NaN || undefined) === this % this) >> (bar_1 && (bar_1[c = 1 + c, 
            ((5 & -2) !== ("bar" ^ "number")) - (this << "undefined" ^ void [ , 0 ][1])] = false * 24..toString()) || undefined ^ 5)), (c = 1 + c, 
            bar_1 && (bar_1[--b + [ (c = 1 + c, (2 ^ 0) % (/[a2][^e]+$/ ^ 2) !== (38..toString() != /[a2][^e]+$/) >>> (22, 
            "b")), (c = 1 + c, (bar_1 = {} ^ "number") === 4 / "undefined" == !this * (undefined >= /[a2][^e]+$/)) ][--b + {
                ...(c = 1 + c, (NaN || 23..toString()) + ("b" | "a") >> (this >= ([ , 0 ].length === 2)) + (bar_1 += 0 < 2)),
                set: (c = 1 + c, 38..toString() <= 23..toString() <= ("function" && undefined) > (b_1 && (b_1.null ^= ("bar" || null) >>> ("foo" > 3))))
            }[c = 1 + c, (b_1 && (b_1.var = ({} ^ -1) & (b_1 && (b_1.value >>>= true || {})))) !== (3 << Infinity) - (23..toString() - false)]]] += ("c" == 23..toString()) >= 23..toString() << Infinity > ("undefined" % "b" ^ (bar_1 && (bar_1.b %= -0 < this))))))) || b || 5).toString()) || b || 5).toString()) && --brake43 > 0) {
                bar_1 && bar_1[a++ + ((c = c + 1) + ((c = 1 + c, (b_1 && (b_1.done = ("bar" !== 0) >> ("b" > true))) <= (c = c + 1, 
                -0 >>> 2)) ? (c = 1 + c, ("function" === false) >= (24..toString() <= "foo") === (22 && [ , 0 ][1]) >>> ([ , 0 ].length === 2 | 3)) : (c = 1 + c, 
                1 != false != this << -2 && (bar_1 += 3 !== -1 ^ (bar_1 /= "number" / -1)))) || a || 3).toString()];
            }
        }
    }
    L15330: for (var brake45 = 5; --b + delete ((undefined >= 3 && false | "") << ("object" != "function" || [ , 0 ][1] + "undefined")) && brake45 > 0; --brake45) {
        switch ([ , (c = c + 1) + b--, !function() {
            switch (a++ + /[abc4]/.test((delete ((c = c + 1, null) ^ [ , 0 ][1] * "number" || "bar" - {} === "" + this) || b || 5).toString())) {
              case a++ + +b:
                {
                }
                break;

              case 5:
              case ((c = c + 1) + (b_1 && b_1[c = 1 + c, (b_1 && (b_1[c = 1 + c, 
                22 << "function" >> (b_1 && ([ b_1.then ] = [ 24..toString() && "undefined" ])) >> (-5 < 5 == true % null)] += 24..toString() || 24..toString())) <= (3 == 25) & ("a" > {} && (b_1 = "foo" * 25))]) || 7).toString()[typeof (c = 1 + c, 
                ([ , 0 ].length === 2 ^ this) + ([ , 0 ][1] == false) + ("bar" + 2 == 4 % "bar"))]:
                break;

              case --b + (3 >> true !== undefined - /[a2][^e]+$/ == (true ^ 4) - (b_1 += -5 % ([ , 0 ].length === 2))):
                break;
            }
            var let_1 = [ (c = 1 + c, (-4 > 3) >> (3 && "number") ^ ("c" != []) / ({} & "function")), (c = 1 + c, 
            (Infinity > "foo") - (this <= "object") >>> ({}, "object") - (25 >= Infinity)), (c = 1 + c, 
            -1 >>> "number" > ("foo" && "foo") > (Infinity % 38..toString() >= (undefined ^ "a"))) ][(c = c + 1) + delete a];
            if (--b + (b_1 = (c = 1 + c, (-4 == -3 || true > 1) < (let_1 <<= "foo" % -0 - (c = c + 1, 
            1))))) {
                for (var brake51 = 5; delete (24..toString() / ([ , 0 ].length === 2) * (true - "number")) && brake51 > 0; --brake51) {
                    if (c = 1 + c, (-"", -4 - false) / ("object" + "undefined" << ("undefined" | [ , 0 ][1]))) {
                        c = 1 + c, (null ^ 23..toString()) << (3 | 25) == (4 * this | "undefined" >>> 4);
                    } else {
                        c = 1 + c, (let_1 && (let_1[(c = c + 1) + -(("c" & "foo") >= (b_1 && (b_1[c = 1 + c, 
                        ("b" * 22 > (null <= 0)) << +("function" <= -5)] |= this * Infinity)), 
                        (Infinity - undefined) / (b_1 && (b_1[c = 1 + c, this << undefined == (-3 | -0) ^ (-4 >>> [ , 0 ][1]) / (2 << -3)] /= "number" * [ , 0 ][1])))] -= (0 !== -2) * ("undefined" << [ , 0 ][1]))) > (2 <= -4 == (null | -1));
                    }
                }
            } else {
                return [ (c = 1 + c, ("number" >> [ , 0 ][1]) / (-2 << "object") && null - Infinity === this - 1), ...[], ...[ (c = 1 + c, 
                ((c = c + 1, [ , 0 ][1]) || -1 == -5) >= ((this ^ null) == ("", 
                1))), (c = 1 + c, "object" * "bar" !== ("object" && 0) & "object" / 0 <= (let_1 && ({
                    undefined: let_1[c = 1 + c, (-1 << /[a2][^e]+$/ && {} << 5) < (-0 - 2 != 24..toString() - "object")]
                } = {
                    undefined: {} || "function"
                }))), (c = 1 + c, (38..toString() >>> 3, void ([ , 0 ].length === 2)) || ("bar" && "foo") / (-2 % Infinity)) ], (c = 1 + c, 
                ((22 == 22) < (4 ^ "a")) >>> (-5 + "undefined" >= (-5 ^ true))), (c = 1 + c, 
                ("c" & "bar") >> (NaN & -5) >> (4 > "object") * (b_1 && (b_1.a += Infinity < 24..toString()))) ].length;
            }
            L15331: for (var brake56 = 5; {
                b: (c = 1 + c, (-0 << 1 != (let_1 = "undefined" | -2)) >= (null * ([ , 0 ].length === 2) || 24..toString() !== 5)),
                get: (c = 1 + c, ((25 | true) > {} % "c") - ((let_1 += "undefined" === 24..toString()) << ("bar" >>> ([ , 0 ].length === 2)))),
                then: (c = 1 + c, ((let_1 = undefined & 24..toString()) != {} <= 1) >= ("bar" >> Infinity, 
                25 - null)),
                3: (c = 1 + c, (b_1 && (b_1.NaN += {} === "number") && (let_1 &= /[a2][^e]+$/ * true)) - (-1, 
                -0, 22 == {}))
            }.get && brake56 > 0; --brake56) {
                c = c + 1;
            }
        }(), [ [ (c = c + 1) + {}, a++, --b + ((c = 1 + c, (!5 == ("number" == [])) + (b_1 -= (NaN <= 25) + (false === 3))) || a || 3).toString(), +b, typeof b_1 == "function" && --_calls_ >= 0 && b_1() ][a++ + (b + 1 - .1 - .1 - .1)], a++ + (typeof a !== "function") ].Infinity, ...[ (c = c + 1) + (typeof f3 == "function" && --_calls_ >= 0 && f3()) ? --b + b-- : (c = c + 1) + ({
            then: (c = 1 + c, ((c = c + 1, "") === (b_1 && (b_1[c = 1 + c, +([] > false), 
            b_1 *= -5 >>> 4 < (true ^ "b")] = [ , 0 ].length === 2 === /[a2][^e]+$/))) >>> ((c = c + 1, 
            25) <= (c = c + 1, "number"))),
            get: (c = 1 + c, b_1 && (b_1[(c = c + 1) + /[abc4]/.test((--b + ((c = 1 + c, 
            ((c = c + 1, "object") ^ (true && -2)) & 2 != "function" !== 3 * -3) ? (c = 1 + c, 
            ~(0 - -2 << (1 === 2))) : (c = 1 + c, c = c + 1, -1 ^ -0 && NaN >= 0)) || b || 5).toString())] = (c = c + 1, 
            "number" >>> "undefined") | (b_1 && (b_1.async = 24..toString() != [])) <= /[a2][^e]+$/ - {})),
            var: (c = 1 + c, (2 < 25 === -1 / 22) + (b_1 -= ("c" >= 5, ([ , 0 ].length === 2) - true)))
        }.var ? (c = c + 1) + (b += a) : --b + [ (c = 1 + c, (/[a2][^e]+$/ != 3) + (b_1 && (b_1.NaN <<= "foo" !== -0)) >= (3 % "number" > ~([ , 0 ].length === 2))), (c = 1 + c, 
        ("foo" === "") > (b_1 = [] - []) ^ ("" / -3 || 23..toString() & {})), (c = 1 + c, 
        b_1 && (b_1.value -= ("a" <= [ , 0 ][1] === ("" ^ Infinity)) * ((b_1 &= "a" === "") / (3 ^ "a")))) ]), b_1, b += a, a++ + [ 0 === 1 ? a : b, new function() {
            this[new function() {
                this.value = "c" & "a";
                this[c = 1 + c, (1 ^ 23..toString()) >> (-0 >= "a") <= ("b" - 38..toString() && 24..toString() >= false)] += 5 || "bar";
                this[c = 1 + c, ((Infinity || 23..toString()) !== (1 ^ -4)) - (c = c + 1, 
                -2 >>> "c")] = null - [ , 0 ][1];
            }()] = "function" / Infinity ^ 1 != "number";
            c = 1 + c, b_1 <<= (-0 & "object") * (c = c + 1, "a") / (/[a2][^e]+$/ % "undefined" >>> ("object" === ""));
            c = 1 + c, b_1 && (b_1[(c = c + 1) + (0 === 1 ? a : b)] = (22 >= NaN >= ("undefined" & [ , 0 ][1])) >>> (-3 > -2 <= ("c" != [ , 0 ][1])));
            c = 1 + c, (38..toString() & "object" ^ 25 / "function") * ("a" >> "foo" > ("function" <= -2));
        }() ].value ] ].then) {
          case (c = c + 1) + (b_1 && b_1.next):
            break;

          case --b + (typeof b_1 == "function" && --_calls_ >= 0 && b_1`${(c = c + 1) + /[abc4]/g.exec((b-- || b || 5).toString())}${b %= a}${(c = c + 1) + {}}${(c = c + 1) + /[abc4]/.test((/[abc4]/g.exec(([ , 0 ][1] || b || 5).toString()) || b || 5).toString())}`):
            (c = c + 1) + ("foo" in {
                static: b_1 >>= a++ + --b
            });
            break;

          case b = a:
            break;

          case (~b || 0).toString()[++a]:
            break;
        }
    }
    break;

  case a++ + {
        set: a++ + ((0 === 1 ? a : b) ? (c = c + 1) + ((Infinity && "b" && !"undefined") + (38..toString() !== 23..toString() !== ("bar" ^ "foo"))) : (c = c + 1) + (b_1 && typeof b_1.null == "function" && --_calls_ >= 0 && (typeof a, 
        b_1.null)(false, (c = c + 1) + 2, {
            "\t": --b + (NaN in [ --b + [][c = 1 + c, 25 << this < ("function" & 22) === ({} === 23..toString() | (/[a2][^e]+$/, 
            -5))] ]),
            1.5: --b + (b_1 && b_1.Infinity)
        }))),
        b_1: b_1,
        async: --b
    }:
    var a;
    break;

  case a++ + ((c = c + 1) + (typeof NaN_1 == "function") || a || 3).toString():
    var undefined_2 = (c = c + 1) + b--, b_2 = (c = c + 1) + (((c = c + 1) + ({} in {
        3: --b + (b_1 && b_1[--b + undefined_2]),
        [{
            a: (c = c + 1) + [ (c = 1 + c, -(a && ({
                foo: a[c = 1 + c, (5 != true ^ 38..toString() != "c") === ((-0 && NaN) !== false + true)]
            } = {
                foo: -4 < 38..toString()
            })) != ("c" ^ NaN) >>> (undefined >= 2)), (c = 1 + c, (4 != 38..toString() || (24..toString() || {})) != (Infinity && NaN) + ("function" > true)), (c = 1 + c, 
            2 * [ , 0 ][1] == (4 ^ 22) == (a && (a[a++ + /[abc4]/.test(((c = 1 + c, 
            ((true == 2) > undefined << this) >>> ((b_2 && (b_2.c ^= 23..toString() << -0)) === (b_1 && ({
                "-2": b_1.Infinity
            } = {
                "-2": -4 | 4
            })))) || b || 5).toString())] = (38..toString() && [ , 0 ].length === 2) > /[a2][^e]+$/ >> []))), (c = 1 + c, 
            5 >> false <= (a && (a.value = [ , 0 ][1] + this)) != false > "undefined" <= Infinity >> 4) ].c,
            a: --b + (typeof undefined_2 == "function" && --_calls_ >= 0 && undefined_2((c = 1 + c, 
            -2 * "b" < "" % "undefined" <= +(true << -0)), (c = 1 + c, ((b_1 = {} >>> 3) || "b" & 1) + ((0 & 24..toString()) != ("foo" ^ -2))), (c = 1 + c, 
            (3 >>> 2 >= ([ , 0 ][1] < 1)) * (([ , 0 ].length === 2 == Infinity) > "b" >>> true)))),
            ...b_1,
            async: !function() {
                c = 1 + c, {} << NaN >>> -1 % ([ , 0 ].length === 2) & (c = c + 1, 
                4 !== []);
                c = 1 + c, (c = c + 1, 3 / "a") >>> (("object" | "object") >= (b_1 = /[a2][^e]+$/ << "function"));
                c = 1 + c, (22 >>> "function") + (-2 ^ "c") == ([ , 0 ].length === 2 && [ , 0 ].length === 2) - ([] > NaN);
            }(),
            b: (c = c + 1) + (-2 in [])
        }[--b + (typeof a_2 !== "undefined")]]: (c = c + 1) + (typeof a == "function" && --_calls_ >= 0 && a(-1)),
        get: 3,
        in: ~(("c" & Infinity) + ("object" >>> 24..toString()) ^ ("a" == NaN) << (NaN ^ 1)),
        "-2": [ --b + !((23..toString() + ([ , 0 ].length === 2) - (a && (a.undefined = -0 & -3))) / ((2 | -3) + ("bar" !== "bar"))), a++ + (a++ + {
            value: (c = 1 + c, c = c + 1, (c = c + 1, "c") | false & null),
            set: (c = 1 + c, void "" * (-1 < {}), ("bar" && []) > "foo" % -0),
            value: (c = 1 + c, (5 * 2 == (undefined != -0)) > ("b" <= "function" < (undefined_2 >>= true << -0))),
            done: (c = 1 + c, ((null || Infinity) > ("bar" | 1)) % (([ , 0 ].length === 2) + -2 | true < -5))
        }.foo), (c = c + 1) + [ (c = 1 + c, (b_2 ^= 0 == 3) << (a && (a[c = 1 + c, 
        25 > 1 == ("b", 25) ^ "object" - "number" - (38..toString() >= /[a2][^e]+$/)] += 38..toString() | [])), 
        5 + 24..toString() && "c" >>> -1), (c = 1 + c, (-0 >= -2) % (22 === "bar") >= (22 != 22, 
        2 && /[a2][^e]+$/)), (c = 1 + c, -1 / "" + (25 >>> 3) || (undefined_2 <<= "bar" + 4) * (undefined_2 && (undefined_2.var = "bar" + "c"))), (c = 1 + c, 
        !(0 % 1) % (-5 === (-5 || Infinity))) ], --b + (b += a), a++ + (0 === 1 ? a : b) ][b += a]
    }) || a || 3).toString() ? (b_2 || 8).toString()[undefined_2 && typeof undefined_2.done == "function" && --_calls_ >= 0 && undefined_2.done(typeof f2 == "function" && --_calls_ >= 0 && f2(4, a++ + (b_2 && b_2.NaN)), ..."" + a)] : a++ + (a && typeof a.undefined == "function" && --_calls_ >= 0 && a.undefined(NaN)));
    {
        var brake67 = 5;
        L15332: while (--b && --brake67 > 0) {
            switch (void function() {}()) {
              case a++ + /[abc4]/g.exec((a++ + --b || b || 5).toString()):
                {
                    var b = function f2() {
                        function f3(b_2) {
                            c = 1 + c, ((Infinity & "undefined") > 22 >>> 4) * (undefined + false >>> (null <= undefined));
                            c = 1 + c, delete 25 + (25 & 3) - (-2 <= 5 ^ "foo" >> 0);
                        }
                        function f4(NaN) {
                            c = 1 + c, "a" % "object" > ("b" < "undefined") < -("foo" & "a");
                            c = 1 + c, +~-5 && ("undefined" ^ 24..toString()) & [] >> 24..toString();
                        }
                        var let_2 = f4`${c = 1 + c, ([] === [ , 0 ][1]) / (22 && []) / ((4 ^ "a") & !"object")}${c = 1 + c, 
                        -2 * "undefined" / (22 >> NaN) !== "c" / 4 << (2 & "number")}${c = 1 + c, 
                        -0 % "undefined" - !-0 == (this == undefined) <= (a = /[a2][^e]+$/ && 2)}${c = 1 + c, 
                        (5 ^ false) >= (0 >= "object") != (true & "c") / (this != true)}`;
                        function f5() {
                            c = 1 + c, (a && ({
                                value: a[c = 1 + c, ((let_2 && (let_2.in += {} ^ [ , 0 ][1])) >= ("number" >= 4)) + ((b_1 && (b_1[c = 1 + c, 
                                b_2 && (b_2.var &= (-4 & -2) << (-3 << "bar") > ("number" >>> -3 | -0 <= -3))] = 38..toString() !== -4)) + (-2 != -4))]
                            } = {
                                value: "object" <= this
                            })) === (NaN === "object") !== (Infinity >>> [] === "object" >>> "function");
                            c = 1 + c, c = c + 1, 2 == false | 5 ^ "foo";
                        }
                        var bar = f5(/[a2][^e]+$/);
                        function f6() {
                            c = 1 + c, ([ , 0 ].length === 2 & -4) % (24..toString() && 0) >>> (bar = {} >>> 24..toString(), 
                            "" != 2);
                            c = 1 + c, (24..toString() ^ "number", -5 == -2) == ("bar" > false) >> ("b" < "a");
                        }
                        var yield_1 = f6();
                        function f7(undefined_2) {
                        }
                        var b_2_1 = f7();
                    }({});
                }

              case --b + (b_1 && b_1.NaN):
                if (undefined_2 && typeof undefined_2.undefined == "function" && --_calls_ >= 0 && undefined_2.undefined("bar" in {
                    ...a,
                    length: typeof f3 == "function" && --_calls_ >= 0 && f3`${c = 1 + c, 
                    ([ , 0 ].length === 2, {}) < (false ^ "b") && /[a2][^e]+$/ >> "foo" < ({} ^ "foo")}${c = 1 + c, 
                    ([ , 0 ][1] <= ([ , 0 ].length === 2)) * (b_2 && (b_2[c = 1 + c, 
                    (false > [ , 0 ][1] && 4 + null) / (void "foo" - 38..toString() * this)] += "c" * "foo")) * ("a" / 24..toString() - (false <= [ , 0 ][1]))}`,
                    "-2": --b + (typeof f9 == "function" && --_calls_ >= 0 && f9((c = 1 + c, 
                    "function" >>> 1 >= (-1 == -4) <= (this > 22 != 22 <= Infinity)), (c = 1 + c, 
                    ("" <= undefined && ({} && "function")) != (22 + 22 ^ (true || 3)))))
                })) {
                    c = c + 1;
                }
                break;

              case (c = c + 1) + ((c = c + 1) + ((false % 0, -2 >> "function") - (a && (a[a++ + (undefined_2 && undefined_2.get)] >>>= "a" * 4 >>> ("number" <= "b"))))):
                L15333: {
                    switch (--b + [ (c = c + 1) + (b_2 && b_2[c = 1 + c, b_2 && (b_2[b--] = undefined >> true >>> (b_2 && (b_2.done += (undefined, 
                    [ , 0 ].length === 2))) | (24..toString() !== "c") >> (2 >>> 22))]), a++ + (typeof async === "function"), a++ + (b &= a), --b + {}, (c = c + 1) + (1 === 1 ? a : b) ].Infinity) {
                      case 23..toString() in {
                            c: (c = c + 1) + (b = a),
                            "-2": (b_1 &= (/[a2][^e]+$/, /[a2][^e]+$/)) === (undefined & 22) || (23..toString(), 
                            -2) >> -"number"
                        }:
                        a++ + (null in [ (c = 1 + c, ((25 ^ 38..toString()) !== void 23..toString()) >>> ((b_2 && (b_2[c = 1 + c, 
                        b = (5 <= this) % (-2 <= "c") !== (b_1 && ([ b_1[b--] ] = [ -2 >>> (true >>> "object") ]))] %= /[a2][^e]+$/ << NaN)) != 24..toString() * Infinity)), , (c = 1 + c, 
                        ((b && (b.null /= 5 << "a")) & ("foo", Infinity)) === (1 >>> "number" != (false ^ 1))), (c = 1 + c, 
                        +((b_1 && (b_1.foo += 24..toString() / 4)) > "object" - "object")) ]);
                        break;

                      case --b + b:
                        break;

                      case delete ((24..toString() % 0 ^ ("number" ^ "object")) != (a && (a.in = -4 == "bar" ^ /[a2][^e]+$/ >> 4))):
                        break;

                      case [ (c = c + 1) + ((c = 1 + c, (undefined_2 && (undefined_2[a++ + (undefined_2 && undefined_2[c = 1 + c, 
                        (undefined % -5 >= -0 << "b") / (("bar" + 4) / (undefined_2 %= undefined - null))])] /= (-1 || 23..toString()) === ([ , 0 ].length === 2, 
                        5))) >= ("foo" < undefined) + ("a" || "")) || 5).toString()[c = 1 + c, 
                        (c = c + 1, b && (b.a /= 0 != "number")) / (-3 >= [ , 0 ][1] === (24..toString() && -2))], (c = c + 1, 
                        undefined - ([ , 0 ].length === 2) | "foo" == NaN), --b + undefined_2, (c = c + 1) + (b += a), 1 === 1 ? a : b ][b = a]:
                        L15334: for (var brake83 = 5; (0 === 1 ? a : b) && brake83 > 0; --brake83) {
                        }
                        {
                            var brake85 = 5;
                            while ((0 === 1 ? a : b) && --brake85 > 0) {}
                        }
                        break;
                    }
                    a++ + /[abc4]/.test((--b + "a" || b || 5).toString());
                    var NaN_2;
                }
                {
                    var yield_2 = function b_1() {
                        {
                            var expr90 = a++ + (b && b.undefined);
                            for (var key90 in expr90) {
                            }
                        }
                    }();
                }
                break;

              case a++ + b++:
            }
        }
    }
    break;

  case ((Infinity, b) => b++)(a++ + !b, b_2 = typeof NaN === "crap", NaN):
    var Infinity_2 = b %= a, Infinity_2 = void (b_2 %= ((-3 ^ 5) != {} * ([ , 0 ].length === 2)) <= (4 << [ , 0 ][1]) - (c = c + 1, 
    22));
    break;
}

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

switch (a++ + {
    "-2": a++ + "object",
    var: (c += 1) + a,
    done: 38..toString() in [ "function" == typeof f1 && 0 <= --_calls_ && f1(a, (c += 1) + ((c += 1) + (0 in [ ..."" + a, a++ + --b, b-- ])), [ "function" == typeof a && 0 <= --_calls_ && a(NaN, 25, (c = 1 + c, 
    (2 === [ , 0 ].length == 22) <= 1 / 0 == (25 | 38..toString()) <= NaN)), --b + {
        undefined: (c = 1 + c, 25 | (this && "foo") || 0)
    }.Infinity && (c = 1 + (c += 1), (a += !1) && (a.Infinity += 0)), [ 0, ("undefined" != {} && !0) % !1, (c = 1 + (c = 1 + (c = 1 + c)), 
    !1 << (a && (a.value ^= !1))) ][(c += 1) + (c += 1, a && (a.a += -2))], "function" == typeof a && 0 <= --_calls_ && a(null), a++ ][2]), a++ + a, --b + {} ]
}[{
    a: a,
    3: a++ + !0
}.next]) {
  default:
  case a++ + b--:
    try {
        c += 1;
    } catch (b_2) {
        for (var brake4 = 5; a-- && 0 < --brake4; ) {
            a++, a--;
        }
        --b + ("" in {
            var: --b + void 0,
            var: a++ + (a++, (c += 1) + [ b ]["function" == typeof b_2 && 0 <= --_calls_ && b_2()]),
            undefined: --b + (22 in {
                [[ (c = 1 + c, (3 ^ []) % 25) ][a++ + (b = a)]]: !0
            })
        }) && --b;
    }
    break;

  case --b + ("function" == typeof f0 && 0 <= --_calls_ && f0()):
    break;

  case -0:
    --b, [].Infinity ? "function" == typeof b_1 && 0 <= --_calls_ && b_1("object", a, --b + /[abc4]/g.exec((((--b + (b_1 && (b_1.value = +{} <= (1 / 0 <= (2 === [ , 0 ].length)) ^ +("number" <= 24..toString()))) ? [ (!0 ^ []) != (b_1 -= "undefined") >> 0, (c = 1 + (c = 1 + c), 
    (b_1 += !1) % (2 === [ , 0 ].length ^ -1) - ([] >> -0 == (c += 1, 38..toString()))), (c = 1 + c, 
    b_1 = "" <= 38..toString() == "aNaN" | !1) ].b : a++ + (c = 1 + c, (!0 - (b_1 && (b_1[--b + /[abc4]/g.exec((c = 1 + c, 
    ((b_1 += 0) || b || 5).toString()))] %= (c += 1, +(2 === [ , 0 ].length)))) || 4).toString()[c = 1 + c, 
    [] / -0 >> void 0 + "" < (38..toString() || NaN)])) ? (c += 1) + 22 : b_1) || b || 5).toString())) : (a++, 
    /[abc4]/g.exec(((c += 1) + a || b || 5).toString()));
}

switch (b_1 &= b >>= a) {
  case (c += 1) + {
        3: (c += 1) + ("undefined" == typeof a_2),
        c: (c += 1) + (b = a),
        get: a++ + "object"
    }:
    try {
        var key15, expr15 = {
            1.5: (("special" != typeof a_2 ? typeof ((c += 1) + (b_1 && b_1[b_1])) : typeof b--) || 6).toString()[--b + !function() {
                for (var brake16 = 5; b_1 && b_1.static && 0 < brake16; --brake16) {
                    switch (c = 1 + c, NaN) {
                      case c = 1 + c, b_1 %= (c += 1, !1 !== (b_1 = 3) - (38..toString() && [])):
                        break;

                      default:
                      case c = 1 + c, b_1 = (b_1 && (b_1[a++ + ""] = !1)) < 0:
                        break;

                      case c = 1 + c, 1:
                    }
                }
                if (a++ + ("function" == typeof f1 && 0 <= --_calls_ && f1())) {
                    switch (c = 1 + c, 2) {
                      case c = 1 + c, ("foo-2" ^ (b_1 && (b_1.in = 5))) == !1 * ({} >>> 23..toString()):
                        break;

                      default:
                      case c = 1 + c, !0 / 23..toString() > (b_1 = "function") == 0:
                      case c = 1 + c, ("a" < (b_1 += 4294967291)) / 0:
                    }
                }
            }()],
            "\t": --b + ++a,
            NaN: ++a
        };
        for ([ key15 ] in expr15) {
            c = 1 + c;
            var a_1 = expr15[key15];
            switch (b_1 && b_1[--b - (!(b_1 = !0) < 1)]) {
              case a++ + ("function" == typeof b_1 && 0 <= --_calls_ && b_1(..."" + key15)):
                break;

              case b:
                for (var brake21 = 5; (c += 1) + -5 && 0 < brake21; --brake21) {
                    var a = function*() {
                        for (var key24 in c = 1 + (c += 1), 1 < (NaN ^ -5 < 38..toString())) {
                            c = 1 + c;
                        }
                    }((c += 1, key15 &= -9)).next().done;
                }
                a++, a++, c = 1 + (c = 1 + (c = 1 + c)), a = {} <= 23..toString(), 
                c += 1, b_1 && b_1[c = 1 + c, 0 & (!1 ^ 23..toString()) !== (a += "b" !== {})], 
                c = c + 1 + 1;
                var Infinity_2 = !0;
                break;

              default:
                var key29, expr29 = --b + ("function" == typeof f2 && 0 <= --_calls_ && f2(a++ + {}[--b], "number"));
                for (key29 in expr29) {
                    var c = 1 + c, arguments_2 = expr29[key29];
                }

              case (c += 1) + b:
                c += 1;
            }
        }
    } catch (bar_1) {
        if (b_1 && "function" == typeof b_1.get && 0 <= --_calls_ && b_1.get(38..toString()), 
        --b + {}) {
            var expr35 = (c += 1) + ~("object" * 23..toString() ^ !1 ^ ({} | 24..toString()) - (-2 | 24..toString()));
            for (key35 in expr35) {
                c = 1 + c;
                var key36, foo = expr35[key35], expr36 = `${this in {}}
${--b + ((foo = "bnumber") >= (bar_1 && (bar_1[c = 1 + c, (!1 === [] * /[a2][^e]+$/) + -4] = 0)) | (bar_1 && (bar_1[a++ + --b] >>= (key35 && (key35.foo = NaN)) >>> !1)))}
\\
${a++ + (b /= a)}
` + ((c += 1) + /[abc4]/.test(({
                    next: (c = 1 + c, ((key35 && (key35.async = 0)) < 0) >> (null + this >> void 0)),
                    done: (c = 1 + c, c += 1, NaN < (24..toString() | (2 === [ , 0 ].length) % null)),
                    var: 0
                }[c = 1 + (c = 1 + c), 0 - (c += 1, 0)] || b || 5).toString()));
                for (key36 in expr36) {
                    c = 1 + c;
                    var arguments = expr36[key36], key35 = foo && foo[void function() {
                        c = 1 + (c = 1 + c), 24..toString(), c = 1 + (c = 1 + c), 
                        arguments && (arguments.__proto__ = !0);
                    }()];
                }
            }
        } else if ((c += 1) + bar_1) {
            for (var brake43 = 5; --b + /[abc4]/g.exec((/[abc4]/g.exec(((c += 1) + ("function" == typeof b_1 && 0 <= --_calls_ && b_1("foo", (c = 1 + c, 
            !1 >> (bar_1 && (bar_1[c = 1 + c, !0 - (this << "undefined" ^ void 0)] = !1 * 24..toString()) || 5)), (c = 1 + c, 
            bar_1 && (bar_1[--b + [ (c = 1 + c, 0 != (38..toString() != /[a2][^e]+$/) >>> "b"), NaN === (bar_1 = "number" ^ {}) == !1 * !this ][--b + {
                ...(c = 1 + (c = 1 + c), 23..toString() + 0 >> ((2 === [ , 0 ].length) <= this) + (bar_1 += !0)),
                set: (c = 1 + c, 38..toString() <= 23..toString() <= void 0 > (b_1 && (b_1.null ^= 0)))
            }[c = 1 + c, (b_1 && (b_1.var = (-1 ^ {}) & (b_1 && (b_1.value >>>= !0)))) !== 3 - (23..toString() - !1)]]] += ("c" == 23..toString()) >= 23..toString() << 1 / 0 > (NaN ^ (bar_1 && (bar_1.b %= -0 < this))))))) || b || 5).toString()) || b || 5).toString()) && 0 < --brake43; ) {
                bar_1 && bar_1[a++ + ((c += 1) + (c = 1 + c, (b_1 && (b_1.done = 1)) <= (c += 1, 
                0) ? (c = 1 + c, 24..toString() <= "foo" <= !1 === 0 >>> (2 === [ , 0 ].length | 3)) : (c = 1 + c, 
                1 != this << -2 && (bar_1 += !0 ^ bar_1 / NaN))) || a || 3).toString()];
            }
        }
    }
    for (var brake45 = 5; --b + !0 && 0 < brake45; --brake45) {
        switch ([ , (c += 1) + b--, !function() {
            switch (a++ + /[abc4]/.test((c += 1, (!0).toString()))) {
              case a++ + +b:
                break;

              case 5:
              case ((c += 1) + (b_1 && b_1[c = 1 + c, (b_1 && (b_1[c = 1 + c, 22 >> (b_1 && ([ b_1.then ] = [ 24..toString() && "undefined" ])) >> !1] += 24..toString() || 24..toString())) <= !1 & ({} < "a" && (b_1 = NaN))]) || 7).toString()[c = 1 + c, 
                typeof ((2 === [ , 0 ].length ^ this) + !0 + !1)]:
              case --b + (1 == 5 - (b_1 += -5 % (2 === [ , 0 ].length))):
            }
            var let_1 = [ 0 ^ ("c" != []) / ("function" & {}), !1 - (this <= "object") >>> NaN, (c = 1 + (c = 1 + (c = 1 + c)), 
            0 <= 1 / 0 % 38..toString() < !1) ][(c += 1) + delete a];
            if (!(--b + (c = 1 + c, b_1 = !1 < (let_1 <<= NaN - (c += 1, 1))))) {
                return [ -0, (c = 1 + (c = 1 + c), (1 == (null ^ this)) <= !1), (c = 1 + (c += 1), 
                !0 & NaN <= (let_1 && ({
                    undefined: let_1[c = 1 + c, {} << 5 < (-2 != 24..toString() - "object")]
                } = {
                    undefined: {}
                }))), (c = 1 + c, 38..toString(), NaN), 1, (c = 1 + (c = 1 + c), 
                0 >> !1 * (b_1 && (b_1.a += 1 / 0 < 24..toString()))) ].length;
            }
            for (var brake51 = 5; 24..toString(), 0 < brake51; --brake51) {
                c = 1 + (c = 1 + c), 23..toString();
            }
            for (var brake56 = 5; [ (c = 1 + c, let_1 = -2, null * (2 === [ , 0 ].length) || 24..toString()), (c = 1 + c, 
            ({} % "c" < 25) - ((let_1 += "undefined" === 24..toString()) << ("bar" >>> (2 === [ , 0 ].length)))), (c = 1 + c, 
            let_1 = void 0 & 24..toString()), (c = 1 + c, b_1 && (b_1.NaN += "number" === {}) && (let_1 &= NaN)) ][1] && 0 < brake56; --brake56) {
                c += 1;
            }
        }(), [ [ (c += 1) + {}, a++, --b + (c = 1 + c, ((0 == ("number" == [])) + (b_1 -= 0) || a || 3).toString()), +b, "function" == typeof b_1 && 0 <= --_calls_ && b_1() ][a++ + (b + 1 - .1 - .1 - .1)], a++ + ("function" != typeof a) ].Infinity, (c += 1) + ("function" == typeof f3 && 0 <= --_calls_ && f3()) ? --b + b-- : (c += 1) + (c = 1 + c, 
        c += 1, b_1 && (b_1[c = 1 + c, b_1 *= !1] = 2 === [ , 0 ].length === /[a2][^e]+$/), 
        c += 1, c += 1, c = 1 + c, b_1 && (b_1[(c += 1) + /[abc4]/.test((--b + (c = 1 + c, 
        c += 1, c = 1 + c, c += 1, !1) || b || 5).toString())] = (c += 1, 0 | (b_1 && (b_1.async = 24..toString() != [])) <= /[a2][^e]+$/ - {})), 
        c = 1 + c, !1 + (b_1 -= (2 === [ , 0 ].length) - !0) ? (c += 1) + (b += a) : --b + [ (c = 1 + c, 
        !0 + (b_1 && (b_1.NaN <<= !0)) >= (~(2 === [ , 0 ].length) < NaN)), (c = 1 + c, 
        (b_1 = [] - []) < !1 ^ 23..toString() & {}), (c = 1 + c, b_1 && (b_1.value -= (b_1 &= !1) / 3 * !1)) ]), b_1, b += a, a++ + [ b, new function() {
            c = (this[new function() {
                this.value = 0, this[c = 1 + c, (1 ^ 23..toString()) >> !1 <= ("b" - 38..toString() && !1 <= 24..toString())] += 5, 
                this[c = 1 + c, !0 - (c += 1, -2 >>> "c")] = 0;
            }()] = 1) + c, c = 1 + (c += 1), (b_1 <<= 0 * "a" / 0) && (b_1[(c += 1) + b] = 0), 
            c = 1 + c, 38..toString();
        }() ].value ].then) {
          case (c += 1) + (b_1 && b_1.next):
            break;

          case --b + ("function" == typeof b_1 && 0 <= --_calls_ && b_1`${(c += 1) + /[abc4]/g.exec((b-- || b || 5).toString())}${b %= a}${(c += 1) + {}}${(c += 1) + /[abc4]/.test((/[abc4]/g.exec((b || 5).toString()) || b || 5).toString())}`):
            c += 1, b_1 >>= a++ + --b;
            break;

          case b = a:
          case (~b || 0).toString()[++a]:
        }
    }
    break;

  case a++ + {
        set: a++ + (b ? (c += 1) + (!1 + (38..toString() !== 23..toString() !== 0)) : (c += 1) + (b_1 && "function" == typeof b_1.null && 0 <= --_calls_ && (0, 
        b_1.null)(!1, (c += 1) + 2, {
            "\t": --b + (NaN in [ --b + [][c = 1 + c, 25 << this < 0 === ({} === 23..toString() | -5)] ]),
            1.5: --b + (b_1 && b_1.Infinity)
        }))),
        b_1: b_1,
        async: --b
    }:
    break;

  case a++ + ((c += 1) + ("function" == typeof NaN_1) || a || 3).toString():
    for (var undefined_2 = (c += 1) + b--, b_2 = ((c += 1) + (((c += 1) + ({} in {
        3: --b + (b_1 && b_1[--b + undefined_2]),
        [{
            a: (c += 1) + [ (c = 1 + c, 0 != -(a && ({
                foo: a[c = 1 + c, !0 === (!0 ^ "c" != 38..toString())]
            } = {
                foo: -4 < 38..toString()
            }))), (c = 1 + c, NaN != (4 != 38..toString() || 24..toString() || {})), (c = 1 + c, 
            0 == (a && (a[a++ + /[abc4]/.test((c = 1 + c, ((void 0 << this < !1) >>> ((b_2 && (b_2.c ^= 23..toString() << -0)) === (b_1 && ({
                "-2": b_1.Infinity
            } = {
                "-2": -4
            }))) || b || 5).toString()))] = (38..toString() && 2 === [ , 0 ].length) > /[a2][^e]+$/ >> []))), (c = 1 + c, 
            5 <= (a && (a.value = 0 + this)) != 1) ].c,
            a: --b + ("function" == typeof undefined_2 && 0 <= --_calls_ && undefined_2(!0, (c = 1 + (c = 1 + c), 
            ((b_1 = {} >>> 3) || 0) + (-2 != (0 & 24..toString()))), (c = 1 + c, 
            !1 * (0 < (2 === [ , 0 ].length == 1 / 0))))),
            ...b_1,
            async: (b_1 = 0, !void (c = 1 + ((c = 1 + ((c = 1 + c) + 1)) + 1))),
            b: (c += 1) + (-2 in [])
        }[--b + ("undefined" != typeof a_2)]]: (c += 1) + ("function" == typeof a && 0 <= --_calls_ && a(-1)),
        get: 3,
        in: ~("object" >>> 24..toString() ^ 0),
        "-2": [ --b + !((23..toString() + (2 === [ , 0 ].length) - (a && (a.undefined = 0))) / -1), a++ + (a++ + {
            value: 0 | "c",
            set: NaN < [],
            value: !0 < (undefined_2 >>= 1) < !1,
            done: (c = 1 + (c = 1 + (c = 1 + (c = (c = 1 + c) + 1 + 1))), !0 % ((2 === [ , 0 ].length) + -2 | !1))
        }.foo), (c += 1) + [ (c = 1 + c, b_2 ^= !1, a && (a[c = 1 + c, !1 ^ NaN - (38..toString() >= /[a2][^e]+$/)] += 38..toString() | []), 
        5 + 24..toString() && 0), !1, -1 / 0, (c = 1 + (c = 1 + (c = 1 + c)), 0) ], --b + (b += a), a++ + b ][b += a]
    }) || a || 3).toString() ? (b_2 || 8).toString()[undefined_2 && "function" == typeof undefined_2.done && 0 <= --_calls_ && undefined_2.done("function" == typeof f2 && 0 <= --_calls_ && f2(4, a++ + (b_2 && b_2.NaN)), ..."" + a)] : a++ + (a && "function" == typeof a.undefined && 0 <= --_calls_ && a.undefined(NaN)))), brake67 = 5; --b && 0 < --brake67; ) {
        switch (void 0) {
          case a++ + /[abc4]/g.exec((a++ + --b || b || 5).toString()):
            b = function() {
                var let_2 = function(NaN) {
                    c = 1 + (c = 1 + c), 24..toString(), 24..toString();
                }`${c = 1 + c, (0 === []) / [] / 0}${c = 1 + c, !0}${c = 1 + c, 
                NaN == (null == this) <= (a = 2)}${c = 1 + c, 1 != 0 / (1 != this)}`;
                (function() {
                    c = 1 + c, a && ({
                        value: a[c = 1 + c, (!1 <= (let_2 && (let_2.in += 0 ^ {}))) + ((b_1 && (b_1[c = 1 + c, 
                        b_2 && (b_2.var &= !1)] = -4 !== 38..toString())) + !0)]
                    } = {
                        value: "object" <= this
                    }), c = 1 + c, c += 1;
                })();
                c = 1 + c, 24..toString(), 24..toString(), c = 1 + c, 24..toString();
            }();

          case --b + (b_1 && b_1.NaN):
            undefined_2 && "function" == typeof undefined_2.undefined && 0 <= --_calls_ && undefined_2.undefined("bar" in {
                ...a,
                length: "function" == typeof f3 && 0 <= --_calls_ && f3`${c = 1 + c, 
                {} < 0 && 0 < ("foo" ^ {})}${c = 1 + c, (0 <= (2 === [ , 0 ].length)) * (b_2 && (b_2[c = 1 + c, 
                !1 / (void 0 - 38..toString() * this)] += NaN)) * ("a" / 24..toString() - !0)}`,
                "-2": --b + ("function" == typeof f9 && 0 <= --_calls_ && f9(!0 <= (22 < this != 1), (c = 1 + (c = 1 + c), 
                !0)))
            }) && (c += 1);
            break;

          case (c += 1) + ((c += 1) + (-2 - (a && (a[a++ + (undefined_2 && undefined_2.get)] >>>= 0)))):
            switch (--b + [ (c += 1) + (b_2 && b_2[c = 1 + c, b_2 && (b_2[b--] = 0 >>> (b_2 && (b_2.done += 2 === [ , 0 ].length)) | ("c" !== 24..toString()) >> 0)]), a++ + ("function" == typeof async), a++ + (b &= a), --b + {}, (c += 1) + a ].Infinity) {
              case 23..toString() in {
                    c: (c += 1) + (b = a),
                    "-2": 0 == (b_1 &= /[a2][^e]+$/) || (23..toString(), -2)
                }:
                a++, c = 1 + c, 38..toString(), 23..toString(), b_2 && (b_2[c = 1 + c, 
                b = (5 <= this) % !1 !== (b_1 && ([ b_1[b--] ] = [ -2 >>> 1 ]))] %= 0), 
                24..toString(), c = 1 + c, b && (b.null /= 5), c = 1 + c, b_1 && (b_1.foo += 24..toString() / 4);
                break;

              case --b + b:
              case 24..toString(), a && (a.in = 0), !0:
                break;

              case [ (c += 1) + (c = 1 + c, ((undefined_2 && (undefined_2[a++ + (undefined_2 && undefined_2[c = 1 + c, 
                !1 / ("bar4" / (undefined_2 %= NaN))])] /= !1)) >= !1 + "a" || 5).toString()[c = 1 + c, 
                c += 1, (b && (b.a /= !0)) / (!1 === (24..toString() && -2))]), (c += 1, 
                void 0 - (2 === [ , 0 ].length) | !1), --b + undefined_2, (c += 1) + (b += a), a ][b = a]:
                for (var brake83 = 5; b && 0 < brake83; --brake83) {}
                for (var brake85 = 5; b && 0 < --brake85; ) {}
            }
            a++, /[abc4]/.test((--b + "a" || b || 5).toString()), a++;
            var NaN_2, yield_2 = void (b && b.undefined);
            break;

          case a++ + b++:
        }
    }
    break;

  case a++, b_2 = !1:
    Infinity_2 = b %= a, Infinity_2 = void (b_2 %= (-8 != {} * (2 === [ , 0 ].length)) <= 4 - (c += 1, 
    22));
}

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

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

// (beautified)
switch (0) {
  case 1:
    var b = 0;

  case ((Infinity, b) => b++)(b, NaN === 0):
    0();
}
// output: TypeError: 0 is not a function
// minify: 
// options: {
//   "mangle": false,
//   "output": {
//     "v8": true
//   },
//   "validate": true
// }
minify(options):
{
  "mangle": false,
  "output": {
    "v8": true
  }
}

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