Repository: mishoo/UglifyJS (JavaScript)

Issue:
ufuzz failure
```js
// original code
// (beautified)
var _calls_ = 10, a = 100, b = 10, c = 0;

{
    var brake1 = 5;
    L31743: do {
        switch ((c = c + 1) + !(a >>>= (a && (a.a = this * ([ , 0 ].length === 2) == ("object" & -1))) !== ("undefined" < 0) % (false + "a"))) {
          case --a:
            {
                var brake3 = 5;
                while (typeof ([ , 0 ][1] in [ (c = c + 1) + (a && a[--b + -((delete 1 > (3 ^ true)) % (38..toString() << 2 ^ 22 === "undefined"))]) ]) && --brake3 > 0) {
                    typeof a == "function" && --_calls_ >= 0 && a((c = c + 1) + (-2 + 24..toString() < ("object" ^ 23..toString()) < (-4 >>> "c" < 24..toString() % [])), --b + [ [ (c = 1 + c, 
                    (a += (/[a2][^e]+$/ ^ 5) / (-4 + "object")) > (c = c + 1, "undefined" >>> 4)) ].in, 1 === 1 ? a : b, --b + (typeof f1 == "function" && --_calls_ >= 0 && f1(..."" + a, (c = 1 + c, 
                    (c = c + 1, 4 <= "function") ^ "function" + this >>> ([ , 0 ][1] == "function")), (c = 1 + c, 
                    (-4 > 3 | (false || "bar")) >> (a && (a.null >>= 2 << "a" >>> ("object" <= -1)))))) ].undefined);
                }
            }
            a++ + delete ((a && (a.in = 4 / "number" && (a = -5 ^ 2))) < (22 < Infinity < (a && (a.undefined &= "object" && -5))));
            break;

          case --b + delete (((a = undefined + ([ , 0 ].length === 2)) & this + 22) !== ((c = c + 1, 
            -3) || [ , 0 ][1] + [])):
            for (var brake6 = 5; [ typeof f1 == "function" && --_calls_ >= 0 && f1(a++ + new function(await) {
                this.var *= (-5 < "number") / (-3 ^ []) != (24..toString() >>> -5 & (c = c + 1, 
                -1));
                this[38..toString() in {}] *= (await && (await[c = 1 + c, "undefined" !== "function" == +24..toString() ^ (24..toString() ^ 2 ^ 38..toString() * -1)] = 1 !== 1)) >>> (true > "a") && (c = c + 1, 
                "bar" === "a");
                {
                    var brake7 = 5;
                    while ((c = 1 + c, (c = c + 1, null + undefined) * ((Infinity && "function") !== "number" - true)) && --brake7 > 0) {
                        c = 1 + c, +(23..toString() * 22) || 25 * null === 2 < undefined;
                    }
                }
                return c = 1 + c, await && (await.NaN += -2 - "foo") && ~"foo" && (await && (await[c = 1 + c, 
                ("bar" <= "b") + (5 >> true) || (await += "a" == "foo") === (2 ^ this)] = "c" !== "c")) < (/[a2][^e]+$/ > 4);
                for (var brake10 = 5; (c = 1 + c, (25 == -4) > {} >>> 4 !== (([], 22) !== ("a" !== "a"))) && brake10 > 0; --brake10) {
                    c = 1 + c, await && (await.null *= ("foo" >>> "a" == "b" / true) / (-1 << "" != (/[a2][^e]+$/ & undefined)));
                }
            }(), (c = c + 1) + (a && typeof a.a == "function" && --_calls_ >= 0 && a.a(5, a++ + (-0 > 22 & 24..toString() >= undefined) % (a && (a[5 / null * (3 <= 23..toString()) > ((25 && -4) | undefined ^ undefined)] += (/[a2][^e]+$/ || true) >> (NaN == undefined))), typeof (c = 1 + c, 
            (/[a2][^e]+$/, 4) * ("c" !== /[a2][^e]+$/) / ((25 === -3) / ([] < 22)))))), (c = c + 1) + "function", a && typeof a.length == "function" && --_calls_ >= 0 && a.length(--b + ("undefined" in []), --b + ((38..toString() << "number") - (a && (a.b &= {} | 5)) <= -5 * -5 * (3 !== "a")), []), (c = c + 1) + ((a = "function" / 2 + (-3 ^ 1)) && 24..toString() % 1 === (a && (a[c = 1 + c, 
            1 % 22 != "number" + -2 != (a && (a.c = "object" | "function")) < /[a2][^e]+$/ >>> "c"] += [ , 0 ][1] * {})) || a || 3).toString() ].c && brake6 > 0; --brake6) {
                typeof f0 == "function" && --_calls_ >= 0 && f0(b = a, "a", "a");
            }
            {
                var expr13 = typeof f0 == "function" && --_calls_ >= 0 && f0("bar", undefined, void function() {
                    {
                        var foo_2 = function f0(a_2_1, a_2, b_2) {
                            c = 1 + c, (23..toString() + 23..toString() && {} & 2) < ("object" >> this) - {} / this;
                            c = 1 + c, (24..toString() >>> NaN >>> (2 >> -4)) + (c = c + 1, a_2 && (a_2.c += null * "number"));
                        }();
                    }
                    {
                        var expr17 = --b + !function b() {
                            c = 1 + c, (23..toString() ^ true ^ (25 && "foo")) > (24..toString() * 25 === (null && 4));
                            c = 1 + c, ("number" ^ [ , 0 ][1]) > (-2 || "b") < (({} && this) === (false ^ "object"));
                            c = 1 + c, (24..toString() ^ "bar") < (b && (b.undefined *= -3 & 38..toString())) > (23..toString() >= [] != -"undefined");
                            c = 1 + c, (4, false) + ("undefined" < 38..toString()) + ~(([ , 0 ].length === 2) + 4);
                        }();
                        for (var key17 in expr17) {
                            c = 1 + c;
                            var b_2 = expr17[key17];
                            for (var brake22 = 5; a++ + (b = a) && brake22 > 0; --brake22) {
                            }
                        }
                    }
                }());
                for (var key13 in expr13) {
                    c = 1 + c;
                    var foo_2 = expr13[key13];
                    {
                        var expr24 = --b + foo_2;
                        for (var key24 in expr24) {
                            c = 1 + c;
                            var foo_1 = expr24[key24];
                            {
                                var expr25 = a++ + -a;
                                for (var key25 in expr25) {
                                    a++ + (foo_2 *= b++);
                                }
                            }
                        }
                    }
                }
            }

          default:
            {
                var brake27 = 5;
                L31744: do {
                    switch (foo_1 && typeof foo_1.a == "function" && --_calls_ >= 0 && foo_1.a(-3, (c = c + 1) + -(((foo_2 <<= "object" === "c") && this & 0) ^ delete (false <= -1)), foo_1 && typeof foo_1.length == "function" && --_calls_ >= 0 && foo_1.length(--b + {
                        3: (c = 1 + c, (38..toString() || "a") != ("bar" & -5) != (void 0 | 4 < /[a2][^e]+$/)),
                        a: (c = 1 + c, (Infinity >> ([ , 0 ].length === 2)) * (foo_1 = "foo" << 0) !== (-0 * [ , 0 ][1] || "c" >= {})),
                        foo: (c = 1 + c, this + -1 === ({} != -1), "c" + -0 | (foo_2 %= "" ^ [ , 0 ].length === 2))
                    }[--b + -1], "function", a--))) {
                      default:
                        {
                            var brake29 = 5;
                            L31745: while (true && --brake29 > 0) {
                                var expr30 = {
                                    Infinity: a++ + {
                                        undefined: (c = 1 + c, (("", 3) ^ NaN >= -1) > 4 % Infinity / (c = c + 1, [ , 0 ][1])),
                                        1.5: (c = 1 + c, ("number" >> "a" ^ -3 >>> 4) > (foo_2 && (foo_2[c = 1 + c, ("c" == "bar" !== ("function" ^ Infinity)) >>> (c = c + 1, 
                                        "a" <= 23..toString())] += 1 & true)) * ("object" >> "undefined")),
                                        foo: (c = 1 + c, false + "b" == -4 >>> 0 ^ (0 && "b" || (foo_1 = true * "bar"))),
                                        [(c = 1 + c, delete (foo_1 = [ , 0 ][1] >= -5) !== -5 << 38..toString() < ([] > "c"))]: (c = 1 + c, 
                                        (this >= 38..toString() ^ ("object", -5)) >>> (-2 !== {} != (-2 === 1)))
                                    }.NaN,
                                    undefined: {
                                        set var(a_2) {
                                            this.in = -0 == "b";
                                        },
                                        c: (c = 1 + c, ([ , 0 ][1] || "c") === ("b" === "a") != (foo_2 && (foo_2[a++ + 4] = (foo_1 = 4 | "c") / (2 >= "c")))),
                                        var: (c = 1 + c, (Infinity < "b" < 3 * this) << (false, "a") - (foo_2 && (foo_2.a /= -4 | 4))),
                                        ...foo_2
                                    }[c = 1 + c, 1 * -0 + (24..toString() === "number") ^ "a" === null == {} > -0],
                                    Infinity: --b + delete a,
                                    Infinity: a++ + {}.null
                                }[b--];
                                for (var key30 in expr30) {
                                    c = 1 + c;
                                    var bar = expr30[key30];
                                    for (var brake31 = 5; --b + {
                                        "": (c = 1 + c, "b" > NaN === ("a" | "function") && 4 > true !== (-3 != "object")),
                                        "": (c = 1 + c, (bar = !4 << "c" % 0) / ((25 ^ -5) * (5 === undefined))),
                                        foo: (c = 1 + c, (foo_2 && (foo_2.in += undefined === 38..toString())) !== "a" << "" && (0 * undefined || (3 || -5))),
                                        in: (c = 1 + c, ("foo" & "foo") % ("" ^ this) % (bar && (bar.null += (-4 && -5) * (true, 
                                        -4))))
                                    }.in && brake31 > 0; --brake31) {
                                        var b = {
                                            ...(c = 1 + c, ~(38..toString() - this ^ "a" << Infinity)),
                                            ...(c = 1 + c, this >= 38..toString() != ("foo" === 23..toString()) === [ , 0 ][1] < undefined > (NaN > 23..toString())),
                                            b: (c = 1 + c, ("c" >= 24..toString() || ([ , 0 ][1] || NaN)) / ((NaN <= [ , 0 ][1]) << ([ , 0 ].length === 2) - "foo")),
                                            undefined: (c = 1 + c, (b += (undefined && (undefined[c = 1 + c, 25 * -0 + (true, 
                                            -0) < (-1 - "b") * (3 / this)] *= undefined - 5)) <= "undefined" % -2) > ((undefined && true) | /[a2][^e]+$/ != null))
                                        }[c = 1 + c, (-5 && 1) % ("c" && /[a2][^e]+$/) || (c = c + 1, "undefined") + (23..toString() >= 0)], undefined = bar && bar.NaN;
                                    }
                                }
                            }
                        }

                      case {
                            in: typeof b_2 != "unknown",
                            bar: bar,
                            NaN: --b + (b += a)
                        }.c:
                        {
                            var brake33 = 5;
                            while (--b + (--b + void function undefined_1() {
                                switch (c = 1 + c, (foo_2 && (foo_2[c = 1 + c, ~((false | "bar") + ("number" < 3))] += (bar && (bar.a += [] != "a")) ^ (true && -5))) & ~(-3 - 5)) {
                                  case c = 1 + c, -5 % 25 >>> ("function" != -0) ^ (5 >> 25) + "a" * 4:
                                    ;
                                    break;

                                  default:
                                    ;

                                  case c = 1 + c, ((5 && true) != (foo_1 = "a" ^ -3)) >> ((null != []) >= (c = c + 1, 
                                    25)):
                                    ;
                                    break;

                                  case c = 1 + c, (bar += (undefined && undefined) + (null - 5)) >= ("undefined" || 25) * ("function" <= 3):
                                    ;
                                }
                            }() || 2).toString()[a++ + ({} in {
                                1.5: -((c = c + 1, {}) - (/[a2][^e]+$/ <= 3) === 24..toString() + "b" >= ("object" && "")),
                                3: a++ + ((foo_1 && (foo_1.var = 4 == "foo")) >> ("object" !== 1) >= ((undefined -= 38..toString() / 23..toString()) ^ 0 == -2)),
                                ...bar,
                                foo: --b + typeof (c = 1 + c, (b && (b.undefined = "c" - -5 - (1 >>> 25))) ^ (23..toString() && NaN) < (b && (b[c = 1 + c, 
                                ((-3, Infinity) ^ (foo_2 && (foo_2.foo = {} | "b"))) > (foo_1 && (foo_1.foo = undefined === /[a2][^e]+$/ ^ "number" != NaN))] = 23..toString() > "undefined"))),
                                a: b >>>= a
                            })] && --brake33 > 0) {
                                var b_1 = function f1(await) {
                                    {
                                        var brake36 = 5;
                                        while ((c = 1 + c, ((/[a2][^e]+$/ > 24..toString()) - (false | false)) * (foo_1 <<= (c = c + 1, 
                                        22) % (-5 >> []))) && --brake36 > 0) {
                                            c = 1 + c, -5 < this <= (bar && (bar.in = ([], "number"))) < (-5 / 4 !== (await && (await.in += 38..toString() * 2)));
                                        }
                                    }
                                    {
                                        var brake38 = 5;
                                        do {
                                            c = 1 + c, 4 !== -5 !== (await && (await[c = 1 + c, "undefined" / /[a2][^e]+$/ >>> (1 > 5) | 1 != "a" != /[a2][^e]+$/ < 24..toString()] = {} & Infinity)) === ((-1 ^ 23..toString()) !== (23..toString() ^ ""));
                                        } while ((c = 1 + c, c = c + 1, (2, 1) * (3 > -0)) && --brake38 > 0);
                                    }
                                }({
                                    "-2": (c = 1 + c, (-5 <= "b", 25 < 22) == ("object" % "number" & -2 >>> "")),
                                    undefined: undefined,
                                    1.5: (c = 1 + c, (4 << this == "object" - "bar") + (bar && (bar.undefined -= {} < "") || "c" ^ 4)),
                                    Infinity: (c = 1 + c, foo_1 && (foo_1.undefined = (foo_1 && (foo_1[c = 1 + c, (Infinity !== 25 == -4 << 22) - ((foo_1 && (foo_1.in = true === -4)) - (c = c + 1, 
                                    "b"))] = "" >> 23..toString()) || b && (b[c = 1 + c, bar && ({
                                        NaN: bar[a++ + b--]
                                    } = {
                                        NaN: (undefined && (undefined[0 === 1 ? a : b] = ("bar" !== Infinity) > (2 === this))) ^ ("number" < 0) - "object" % -3
                                    })] += 38..toString() | true)) >>> ((c = c + 1, -0) >>> null / 38..toString()))),
                                    Infinity: (c = 1 + c, null << 2 << (bar && (bar.var = NaN < "number")) < ("bar" + "undefined" == "foo" <= -4))
                                });
                            }
                        }
                        for (var brake40 = 5; a++ + (b = a) && brake40 > 0; --brake40) {
                            var brake41 = 5;
                            do {
                                switch ((c = c + 1) + (typeof f2 == "function" && --_calls_ >= 0 && f2((c = 1 + c, 
                                (foo_2 && (foo_2[3 in [ , (c = 1 + c, ((undefined || "c") | -2 * "object") * (38..toString() == {} ^ (-3 | [ , 0 ][1]))) ]] >>= -3 === 38..toString() ^ (Infinity ^ "b"))) !== (null >= "foo") - (3 ^ 2)), (c = 1 + c, 
                                3 > null >= 4 + true & ("undefined" ^ undefined) * (0 << 0))))) {
                                  case --b + (foo_1 && foo_1.in):
                                    {
                                    }
                                    break;

                                  case a++ + undefined ? --b + b : 1 === 1 ? a : b:
                                    break;

                                  case (c = c + 1) + a++:
                                    break;

                                  case a--:
                                    break;
                                }
                            } while (--b && --brake41 > 0);
                        }
                        break;

                      case b_1 && b_1[("c", []) == (b_1 && (b_1.b = -2 > 2)) !== (/[a2][^e]+$/ !== 23..toString() || 38..toString() + 1)]:
                        break;

                      case (c = c + 1) + (0 === 1 ? a : b):
                        [ undefined, --b + 23..toString(), void function() {
                            c = 1 + c, +(-0 % "c") != (-1 > "a" !== ("b" != 0));
                            c = 1 + c, (bar && (bar[typeof bar == "function" && --_calls_ >= 0 && bar((c = 1 + c, 
                            (24..toString() !== "a" || -3 === 23..toString()) === true * "c" < (undefined && (undefined[c = 1 + c, 
                            (3 >>> 22 !== (undefined && this)) >>> (("undefined" ^ 2) === 38..toString() >>> ([ , 0 ].length === 2))] |= "b" + Infinity))))] += (NaN || 38..toString()) % -"")) === (undefined && (undefined[c = 1 + c, 
                            ((undefined && (undefined[c = 1 + c, (/[a2][^e]+$/ && NaN) - ("c" && [ , 0 ].length === 2) ^ (-1 < this || [] === [ , 0 ][1])] += -5 >> 3)) | "bar" + 23..toString()) + (-3 != 5 && "function" ^ 23..toString())] += "undefined" << "undefined")) >= (null == /[a2][^e]+$/);
                        }(), a++ + (typeof f2 == "function" && --_calls_ >= 0 && f2((c = 1 + c, 23..toString() << 3 >>> ("undefined" & Infinity) !== 24..toString() / {} > (b_1 && (b_1[c = 1 + c, 
                        (false, 24..toString()) >>> ("bar" != "") > ("foo" >> 4) / (38..toString(), 25)] = -1 > "bar"))), (c = 1 + c, 
                        (4 | 22) >= [ , 0 ][1] >> "b" >= ("a" == 4 === false <= "")), (c = 1 + c, (1 || []) + (b && ([ b.var ] = [ "foo" % {} ])) & (b = (-0 < 0) - null * Infinity)))), typeof b == "function" && --_calls_ >= 0 && b([ , 0 ].length === 2) ][(c = c + 1) + (b && b[a++ + !function() {
                            c = 1 + c, c = c + 1, (b = 22 == 22) ^ "function" % NaN;
                            c = 1 + c, (undefined >> undefined == ("undefined" == 22)) / (false & -2 || "a" & 38..toString());
                            c = 1 + c, -4 - 24..toString() << (-1 << false) ^ (4 & NaN ^ "number" >= 23..toString());
                        }()])];
                        break;
                    }
                } while ((0 === 1 ? a : b) && --brake27 > 0);
            }
            try {
                {
                    var await = function f2([ [ foo_2_2, foo_2 ], async ], b_1, a_1) {
                        function f3() {
                            {
                            }
                            switch (c = 1 + c, [ , 0 ][1] * 24..toString() ^ (c = c + 1, this) || (foo_2 && (foo_2.c = "bar" == -5)) != (1 ^ 2)) {
                              case c = 1 + c, (0 >>> ([ , 0 ].length === 2)) / (2 == "function") << (24..toString() >>> 3 > /[a2][^e]+$/ % 5):
                                ;
                                break;

                              default:
                                ;

                              case c = 1 + c, bar && (bar[--b + a_1] = ((async += -1 & -4) || 0 & -2) === (c = c + 1, 
                                "foo" + null)):
                                ;
                                break;

                              case c = 1 + c, (-3 < -2) >> (-0 >>> 23..toString()) && (a_1 && (a_1[{
                                    "": (c = 1 + c, (/[a2][^e]+$/ && []) <= ([ , 0 ].length === 2) * "object", 1 + this == (-0 && null))
                                }] = (4 && -3) >= ("object" && "function"))):
                                ;
                                break;
                            }
                        }
                        var arguments = f3("");
                        function f4(foo_2_2_1) {
                            for (var brake54 = 5; (c = 1 + c, foo_1 && (foo_1[a++ + [ (c = 1 + c, ([] !== true) >> (bar /= undefined / "c") >= ((null & 38..toString()) > (-2 >= true))), (c = 1 + c, 
                            (b_1 && ([ b_1[c = 1 + c, (this | 5 | true <= "function") < ("object" <= [] < (Infinity ^ 23..toString()))] ] = [ "a" + /[a2][^e]+$/ ]), 
                            -3 - [ , 0 ][1]) - (foo_2 = -2 + 24..toString() << (null !== "bar"))), (c = 1 + c, 
                            25 % undefined || -1 >> "undefined", async = undefined * false & -5 + {}) ]] = ({} > [] ^ ("b" || 5)) >= ("function" / undefined || 0 ^ 24..toString()))) && brake54 > 0; --brake54) {
                                c = 1 + c, "bar" >= 24..toString() <= ([] > 2) || (24..toString() & 25) << (a_1 && (a_1[c = 1 + c, 
                                (("foo" && false) | -3 !== -5) >= (NaN & "undefined") + (-5 - "function")] = "a" < 24..toString()));
                            }
                            if (c = 1 + c, NaN % -5 !== (arguments[c = 1 + c, "bar" % -0 * (/[a2][^e]+$/ / 23..toString()) ^ [] >>> "object" == (4, 
                            -2)] = -1 ^ 4) === (foo_2_2_1[-0 in {
                                0: (c = 1 + c, ([ , 0 ][1] <= 2 && "b" - undefined) & "" + 24..toString() - (foo_1 /= false == "c")),
                                "-2": (c = 1 + c, c = c + 1, foo_2_2_1 && ([ foo_2_2_1[(c = 1 + c, ((4 | -4) !== this > /[a2][^e]+$/) * ((false ^ 4) - ("foo" >>> -2))) ? (c = 1 + c, 
                                (null % -3 >= (25 && {})) / ((c = c + 1, false) << ([ , 0 ].length === 2 !== "number"))) : (c = 1 + c, 
                                foo_2 && (foo_2.undefined = ((b = "object" / 38..toString()) == ([ , 0 ].length === 2 !== ([ , 0 ].length === 2))) >= (24..toString() ^ 4) + (23..toString() || "b")))] ] = [ (foo_2_2_1[c = 1 + c, 
                                -("function" != 1 !== 38..toString() + 22)] %= NaN | "") ^ (a_1 && (a_1.c += 22 + -5)) ])),
                                [(c = 1 + c, (void "bar" || NaN - {}) != ("foo" === {}) % ("c" ^ undefined))]: (c = 1 + c, 
                                (22 || true) > ("b" > 1) ^ (c = c + 1, [] > 23..toString()))
                            }] += ([ , 0 ][1] & -0) <= false / 25)) {
                                c = 1 + c, (undefined && (undefined.null = (2 >>> /[a2][^e]+$/) + (23..toString() !== 23..toString()))) ^ ([] & 22) !== this < "object";
                            } else {
                                c = 1 + c, Infinity / "undefined" >>> "foo" * null <= ({} !== "a" == "foo" < 4);
                            }
                        }
                        var arguments_2 = f4(a++ + delete (-5 !== NaN != ("a" === []) ^ 23..toString() <= -2 > (b_1 && (b_1.null = "number" >>> false))), /[abc4]/.test(((c = 1 + c, 
                        arguments && (arguments[(c = c + 1) + +a] = (foo_2 && (foo_2[b |= a] = false == "object" ^ null < "undefined")) != (-0 >= "a" || 0 ^ []))) || b || 5).toString()));
                        function f5(bar_1) {
                            function f6() {
                            }
                            var arguments_2 = f6((c = 1 + c, ({} >>> 22) % (/[a2][^e]+$/ != "c") <= ("a" === 5 ^ 3 - "undefined")));
                            function f7() {
                            }
                            var foo_1_2 = f7(24..toString(), (c = 1 + c, ("function" && 5) / (bar ^= -3 === 24..toString()) / (-5 - 38..toString() - (foo_1_2 /= Infinity == "undefined"))));
                            async function f8() {
                            }
                            var arguments_2 = f8(25, (c = 1 + c, (c = c + 1, "foo" >>> "object") >= ((0 ^ "number") & 25 * true)));
                            function f9(b_1_1, bar, arguments_2_1) {
                            }
                            var undefined = f9();
                        }
                        var arguments_2 = f5(typeof (-3 in {
                            [(c = 1 + c, (undefined == "bar" & (foo_2 %= this % "undefined")) >= (~5 >= 0 << ([ , 0 ].length === 2)))]: (c = 1 + c, 
                            foo_2 && (foo_2[{
                                in: (c = 1 + c, (b && (b.NaN += ([ , 0 ].length === 2) >>> undefined > "object" % "function")) >>> (1 > "foo") - (-1 && "foo")),
                                null: (c = 1 + c, (arguments_2 && (arguments_2[(c = c + 1) + (typeof arguments_2 == "function" && --_calls_ >= 0 && arguments_2((c = 1 + c, 
                                ({
                                    b: foo_2.b
                                } = {
                                    b: void "" <= (1 > undefined) < ("b" * "foo" ^ 25 <= {})
                                })), (c = 1 + c, (38..toString() == "object") / ("bar" & false) === (4 | 1) >> 25 * 0), "a"))] |= {} + 3 <= (-4 & NaN))) >>> (true <= this != 2 >= 0))
                            }[a++ + (c = 1 + c, 0 % 22 - (-0 << "function") && (4 | /[a2][^e]+$/) >>> (true << 38..toString()))]] = -0 >> -0 << (undefined && (undefined[c = 1 + c, 
                            ({} !== "object") - ("" | this) ^ (async && (async.var *= (true || 5) !== (2 & 25)))] += 5 != /[a2][^e]+$/)) >> ("number" >>> 5 | "foo" >> 0))),
                            "-2": (c = 1 + c, ("" < undefined) - (-0, 24..toString()) << (-5 ^ 5 ^ (foo_2 &= "" === -3))),
                            in: (c = 1 + c, (-2 === 1 != (this != Infinity)) >>> ((b_1 && ([ b_1.a ] = [ this % "c" ])) !== ([ , 0 ].length === 2) * 5)),
                            undefined: (c = 1 + c, ("undefined" === 38..toString()) << ("a" == []) >= (24..toString() >= "a" | (c = c + 1, 
                            this))),
                            var: (c = 1 + c, ((true > "") >>> (a_1 && (a_1.var = -1 / 1))) - (b_1 && (b_1[c = 1 + c, 
                            ((null == "b") > (-5 !== "bar")) >> (true >>> "bar" >> (b += -0 >= undefined))] = this << ([ , 0 ].length === 2)) && 5 <= 3))
                        }), void (("function" ^ 0) >= "" * "a" | (~"foo" || (arguments_2.undefined = 22 || 22))), delete ((-4 !== undefined === true > "foo") >>> (foo_1 && (foo_1[c = 1 + c, 
                        arguments_2 && ({
                            Infinity: arguments_2[(c = c + 1) + (typeof f4 == "function" && --_calls_ >= 0 && f4())]
                        } = {
                            Infinity: (b -= -0 === /[a2][^e]+$/) !== "bar" - 38..toString() & ((b = true + 3) && (b = true != -4))
                        })] = false && "function")) / (/[a2][^e]+$/ % 3)));
                        function f10({
                            a: b_1,
                            bar_2: bar_2,
                            "\t": a_1
                        }, foo_2_1, arguments_2) {
                            {
                                var brake59 = 5;
                                while ((c = 1 + c, (arguments_2.NaN += 5 / 2) / (this || 2) && ("b" << -3) - ([] && Infinity)) && --brake59 > 0) {
                                    c = 1 + c, (undefined, -0) | true >>> [ , 0 ][1] || 22 <= "a" != -1 >> 23..toString();
                                }
                            }
                            {
                                var brake61 = 5;
                                L31746: while ((c = 1 + c, ([] % -5 | 24..toString() + 3) << (25 && -2) + (this < [])) && --brake61 > 0) {
                                    c = 1 + c, (b_1 && (b_1[(c = c + 1) + (typeof async == "function" && --_calls_ >= 0 && async((c = 1 + c, 
                                    (25 != "b" & (c = c + 1, "c")) / (({} != "function") >= -4 / [])), (c = 1 + c, ((NaN || "a") ^ !-3) & (0 != {}) <= 25 >> -4), NaN))] = ("a", 
                                    4) <= this - "object")) > (("function" & 3) <= (-3 < -2));
                                }
                            }
                        }
                        var c_2 = f10({
                            null: b--,
                            [--b + (arguments <<= (c = 1 + c, b && (b.in -= (c = c + 1, "b" / true) >= (foo_1 && (foo_1.c += (null ^ "a") === ("foo" && [ , 0 ][1]))))))]: a++ + {
                                length: (c = 1 + c, ("b" >= NaN) * ("function" > /[a2][^e]+$/) * ((/[a2][^e]+$/ | "undefined") >= null % "foo")),
                                b: (c = 1 + c, (bar && (bar.a = "" * "undefined")) < ([] <= this) !== ("foo" ^ -1 ^ ("a" && [])))
                            },
                            [--b + (1 === 1 ? a : b)]: 25
                        });
                        function f11(a_1) {
                            c = c + 1;
                            c = c + 1;
                        }
                        var b_1_2 = f11(void (-4 > ([ , 0 ].length === 2) >= (c = c + 1, -0) < (("bar" || "c") ^ -2 === 0)), [ , 0 ][1], "");
                    }([ [] ], 23..toString());
                }
            } catch (c_2) {
                var undefined;
                if (a++ + c_2) {
                    try {
                        try {
                            {
                                var brake69 = 5;
                                do {
                                    var undefined_2 = b_1 && b_1.in, await_1 = a++ + undefined_2;
                                } while ((1 === 1 ? a : b) && --brake69 > 0);
                            }
                        } catch (undefined_1) {
                            {
                                var bar_1 = function f12() {
                                }(Infinity, (c = 1 + c, (-1 < 1) - ("a" | "b") - (22 / -1 && ~this)));
                            }
                            (c = c + 1) + (b |= a);
                        } finally {
                            var Infinity_1 = --b + ((c = 1 + c, c = c + 1, ~5 == (c = c + 1, "number")) || a || 3).toString(), undefined_2 = --b + (foo_1 && foo_1.a);
                            {
                                var expr74 = (c = c + 1) + (typeof f13 == "function" && --_calls_ >= 0 && f13((c = 1 + c, 
                                4 * null === (-2 && 23..toString()) ^ (false << 22 ^ 22 <= undefined))));
                                for (const key74 in expr74) {
                                    c = 1 + c;
                                    var undefined_2 = expr74[key74];
                                    {
                                    }
                                }
                            }
                        }
                    } finally {
                    }
                }
            }

          case --b + (("foo" ^ "object") << (0 >> {}) == ([] === -1) - (38..toString() | true)):
            {
                var brake78 = 5;
                L31747: while ((--b + (typeof NaN_1 === "boolean") ? b_1 && b_1[(c = c + 1) + ((c = c + 1) + (b /= a) || a || 3).toString()] : --b + [ a++ + !((undefined *= -0 * 1 ^ (await && (await.null ^= "number" * "b"))) % ("function" * 0 ^ Infinity === ([ , 0 ].length === 2))) ]) && --brake78 > 0) {
                    var expr79 = {
                        b: a++ + (foo_1 && typeof foo_1.b == "function" && --_calls_ >= 0 && foo_1.b(--b + [ (c = 1 + c, 
                        ([] && 25 && (b_1 = 23..toString() * 24..toString())) === (c = c + 1, /[a2][^e]+$/ || NaN)), (c = 1 + c, 
                        ("undefined" == Infinity) * (24..toString(), 1) | (undefined && [] && (c = c + 1, 
                        -3))), ...[ (c = 1 + c, ((-1 | -3) != 38..toString() <= "a") * (this / false / (-0 === "foo"))), (c = 1 + c, 
                        25 + 3 | ("b" && "foo"), (await && (await.in = [] <= -2)) == /[a2][^e]+$/ / undefined), (c = 1 + c, 
                        25 * ([ , 0 ].length === 2) >>> (-2 || false) >> ("foo" - ([ , 0 ].length === 2) === (undefined && (undefined[c = 1 + c, 
                        (2 ^ 24..toString()) < (true && "c") < (await ^= -4 - -4 + (true > undefined))] = NaN !== 1)))), (c = 1 + c, 
                        (5 ^ [ , 0 ].length === 2 ^ (true | "number")) >>> !/[a2][^e]+$/ - ("object" | NaN)), (c = 1 + c, 
                        ((bar && (bar.in >>= "function" == "bar")) ^ Infinity !== "c") != (b && ([ b[Infinity in [ (c = 1 + c, 
                        b_1 && (b_1[typeof f12 == "function" && --_calls_ >= 0 && f12()] = ([] + "object" >> (/[a2][^e]+$/ & -3)) % (-1 - undefined + (5 & "undefined")))), (c = 1 + c, 
                        await && (await.Infinity += 23..toString() % -0 - (this + ([ , 0 ].length === 2)) >= (-0 > 5) % (null, 
                        25))) ]] ] = [ (undefined && ([ undefined[c = 1 + c, ({} ^ "number" | "function" << 38..toString()) ^ {} >> -1 << (22 | 24..toString())] ] = [ undefined && 5 ]), 
                        -0 + -1) ]))) ] ] ? {
                            foo_1: foo_1,
                            b: (c = 1 + c, (c = c + 1, -3 >= undefined) && [] >>> "b" !== 0 / "undefined"),
                            set ""(b_1) {
                                this.b += ([ , 0 ].length === 2) % undefined;
                            }
                        }[c = 1 + c, (bar %= 3 || 22) && -5 - 5, 0 + 1 < (-4 != [])] : --b + (b = a), 0)),
                        "\t": --b + 4,
                        [(c = c + 1) + typeof -((c = c + 1, "c" | {}) - (null >> 2) % (-2 >> -2))]: --b + (b = a),
                        length: await && await[++b]
                    }.null;
                    for (var key79 in expr79) {
                        c = 1 + c;
                        var undefined_1 = expr79[key79];
                        var foo_1;
                    }
                }
            }
            L31748: {
                switch ((38..toString() > "") << "bar" / "object" != (this <= true) - 25 / "c") {
                  case --b + undefined_1:
                  case typeof foo_1 !== "unknown":
                    break;

                  case (c = c + 1) + +(("a" - false === 0 << "undefined") << (c = c + 1, null ^ [])):
                    break;

                  case a++:
                    break;
                }
                0 === 1 ? a : b;
            }
            break;
        }
    } while (typeof undefined == "function" && --_calls_ >= 0 && undefined() && --brake1 > 0);
}

switch (a++ + {
    1.5: 1 === 1 ? a : b,
    "-2": 0 === 1 ? a : b,
    length: typeof Infinity_2 != "boolean",
    a: --b + (typeof c === "undefined"),
    "-2": function(a_2) {
        for (var brake85 = 5; --b + (b && typeof b.in == "function" && --_calls_ >= 0 && b.in(0, undefined && (undefined[foo_1 && typeof foo_1.null == "function" && --_calls_ >= 0 && foo_1.null(38..toString(), (c = 1 + c, 
        ("object" / -5 < -5 >> this) + (foo_1 && (foo_1.null = ([ , 0 ].length === 2 !== -5) + (5 > "foo")))), (c = 1 + c, 
        (this - -1) / (-5 % true) + ((c = c + 1, -5) >= -2 >>> -4)))] = (/[a2][^e]+$/ >> NaN || false ^ "object") | (c = c + 1, 
        "b" | "b"))) || 0).toString()[~(foo_2 <<= (undefined && (undefined.in >>= -0 <= 22 == (-0 ^ 22))) - ((5 === 3) - ("" ^ 1))) ? (c = c + 1) + (1 === 1 ? a : b) : a++ + (--b + (b + 1 - .1 - .1 - .1))] && brake85 > 0; --brake85) {
            return a++ + ((undefined_1 <<= -4 && true) / (false - "c") >>> ((null && 22) != -1 <= "b"));
        }
        if (((1 & "function") << ([ , 0 ][1] === 25)) - ((bar = true || 38..toString()) | 22 > 24..toString())) {
            var brake88 = 5;
            L31749: while (typeof f9 == "function" && --_calls_ >= 0 && f9(23..toString(), --b + delete (("foo" | 1) == "number" < [ , 0 ][1]), await && await[38..toString() in {
                [(c = 1 + c, (c = c + 1, null - -5) % (Infinity <= [] !== (undefined && (undefined[c = 1 + c, 
                (-3 < "bar" != ("object" & /[a2][^e]+$/)) / (NaN && 1 && {} >>> "object")] = NaN >= []))))]: (c = 1 + c, 
                (foo_1 && (foo_1[1 === 1 ? a : b] *= (1 | null) & (c = c + 1, true))) >= (c = c + 1, 
                -5) / ("foo" == 0)),
                NaN: (c = 1 + c, 38..toString() === this === "bar" >= true | (4 && "b") & (foo_1 && (foo_1[c = 1 + c, 
                c = c + 1, null == "object" && (false && "function")] = "" >= "bar"))),
                NaN: (c = 1 + c, ((undefined, 25) >>> (24..toString() && [ , 0 ][1])) - (true >>> {}) % (3, 
                Infinity)),
                "-2": (c = 1 + c, [] !== 4 === ("b" ^ 22) || (a_2 && (a_2[c = 1 + c, (true << 0 & (c = c + 1, 
                -0)) + ((1, 38..toString()) < (-2 > -4))] = 5 && this)) > (-3 || false)),
                set length(bar_2) {
                    this.var = /[a2][^e]+$/ | "a";
                }
            }]) && --brake88 > 0) {
                if (b && typeof b.in == "function" && --_calls_ >= 0 && b.in(a++ + (await && await.NaN))) {
                    switch (a++ + b--) {
                      case /[abc4]/g.exec((a++ + (await && typeof await.a == "function" && --_calls_ >= 0 && await.a("bar", 0, 1)) || b || 5).toString()):
                        ((c = 1 + c, ("foo" == 3) / (0 + 0) % (("b" === -5) % (0 >= 5))) || 3).toString()[c = 1 + c, 
                        undefined_1 = ([] || 23..toString()) << ("undefined" | "") ^ (c = c + 1, [] / [ , 0 ][1])];
                        {
                            var foo_1 = function f13(a_2, foo_1) {
                            }((c = 1 + c, (NaN ^ 4) === (undefined_1 && (undefined_1[c = 1 + c, true >= -4 || "c" == null, 
                            25 - {} >>> ("function" || 0)] >>>= [ , 0 ].length === 2 ^ 23..toString())) == (5 < -4 == ("foo" || 1))), (c = 1 + c, 
                            bar && (bar[[ (c = 1 + c, b_1 = ((-4 || [ , 0 ].length === 2) >= (0, [ , 0 ][1])) >>> (-5, 
                            25) % (38..toString() || 22)), (c = 1 + c, (foo_2 && (foo_2.c = 3 != -4) || -3 ^ -1) > ("function" <= [] < (undefined && (undefined.c = undefined + 25)))) ][c = 1 + c, 
                            ("b" & [ , 0 ].length === 2) >> (2 && -4) != (b_1 && ({
                                var: b_1.null
                            } = {
                                var: 3 + {}
                            }), foo_2 && (foo_2.null = true !== 23..toString()))]] = (c = c + 1, 25) % (5 && this)) || "undefined" & undefined ^ (foo_1 = "bar" + undefined)), false);
                        }
                        break;

                      case a++ + b:
                        {
                            var expr93 = --b + {
                                Infinity: (c = 1 + c, (4 >> "", ~2) != +25 < (foo_2 && (foo_2[c = 1 + c, ((-3 ^ 25) << (false ^ -0)) * ((38..toString() !== 1) >>> (await && (await[c = 1 + c, 
                                (3 & 0) >= -0 % true || -(null % NaN)] = this & this)))] = (this, NaN)))),
                                1.5: (c = 1 + c, delete (23..toString() != "b") === (await && (await.a += (-2 && -4) != "number" % false)))
                            }[c = 1 + c, [] / 3 >> (b && (b.NaN = "" % /[a2][^e]+$/)) > ("function" != "c" == "foo" >>> 2)];
                            L31750: for (var key93 in expr93) {
                                c = 1 + c;
                                var a = expr93[key93];
                                {
                                    var brake94 = 5;
                                    do {
                                        c = 1 + c, (undefined_1 && (undefined_1.undefined += (undefined_1 = -3 === "") ^ (-2 ^ undefined))) ^ (this >>> Infinity) - ([ , 0 ].length === 2) * /[a2][^e]+$/;
                                    } while ((c = 1 + c, (b && (b[a++ + 4] = ("object" != null, delete "b"))) > (this || "") - ("undefined" < true)) && --brake94 > 0);
                                }
                            }
                        }
                        {
                            c = 1 + c, undefined && (undefined[a++ + (~"number" !== [] << [ , 0 ][1] ^ (c = c + 1, 
                            !-4))] = ("a" | -4, "object" * 24..toString())) || (25 - this) % (c = c + 1, -5);
                            c = 1 + c, delete ("function" || 25) % ((null || [ , 0 ][1]) >> (-2 || "number"));
                            c = 1 + c, 22 != -3 != (24..toString() == 0) | (-4 >>> 5) / (c = c + 1, 38..toString());
                            c = 1 + c, (-0 * NaN >>> ("", 1)) % ((5 !== 2) < false * /[a2][^e]+$/);
                        }
                        break;

                      case (c = c + 1) + a--:
                        break;

                      case a++ + (typeof foo_2 == "function" && --_calls_ >= 0 && foo_2("foo", (c = c + 1) + foo_2, -0)):
                        for (var brake101 = 5; a++ + typeof (c = 1 + c, ("number" ^ -5) % ("number" === undefined) - (NaN ^ "a" | "function" & Infinity)) && brake101 > 0; --brake101) {
                            switch (c = 1 + c, -(23..toString() > "foo" | "number" >> -3)) {
                              case c = 1 + c, (undefined ^ /[a2][^e]+$/) < (true === Infinity) == (a && (a.c = /[a2][^e]+$/ << -3)) + [ , 0 ][1] * 23..toString():
                                ;
                                break;

                              default:
                                ;

                              case c = 1 + c, foo_1 && (foo_1.Infinity /= (23..toString() === "b") % (-0 == "bar") > (("undefined" ^ "") != -2 > -4)):
                                ;
                                break;

                              case c = 1 + c, await = 1 >= -4 & -0 != "number" ^ (-5 | 2) + "function" % 0:
                                ;
                                break;
                            }
                        }
                        {
                            c = 1 + c, ("c" === []) < (undefined < [ , 0 ][1]) & (5 == "number" & 4 !== "number");
                        }
                    }
                }
            }
        }
    }
}[a++ + "b"]) {
  case (c = c + 1) + a++:
    c = c + 1;

  default:
    b |= a;
    break;

  case (--b || a || 3).toString():
    break;

  case {
        in: b--
    }[bar]:
    c = c + 1;
    switch ({}.a) {
      case -(bar && (bar.Infinity = (c = c + 1, "number" < 25) && ([] | {}) - [] / 24..toString())):
        break;

      case !((2 >>> null) / (Infinity + Infinity) <= (foo_1 %= false >= 23..toString()) + (22 == 24..toString())):
        {
            var b_1 = function f14(undefined) {
                typeof bar == "function" && --_calls_ >= 0 && bar(5 in [ (c = 1 + c, (c = c + 1, 
                24..toString()) == "number" + 24..toString() == ("c" >= /[a2][^e]+$/) >> Infinity % undefined), , (c = 1 + c, 
                (38..toString() && []) + (0 << "c") >> (null > true ^ 22 & false)), (c = 1 + c, 
                [] % 38..toString() / (23..toString() * ([ , 0 ].length === 2)) ^ {} / -5 >= (3 ^ Infinity)) ], ..."" + undefined_1, [ , 0 ][1]);
                try {
                    {
                        var a = function f15(foo_1, bar) {
                            c = 1 + c, ("object" != undefined) / ("a" === -4) && {} >= "c" ^ "bar" === 38..toString();
                            c = 1 + c, ("" != "number" ^ (Infinity ^ "b")) / ((c = c + 1, "foo") >= (undefined < "b"));
                        }(void function a() {
                        }(), "undefined", a++ + void function() {
                        }());
                    }
                } catch (b_2) {
                    {
                        return 0 === 1 ? a : b;
                    }
                    {
                        var brake117 = 5;
                        L31751: do {
                            if (c = 1 + c, c = c + 1, (4 || false) ^ (a && (a[c = 1 + c, (22 ^ 24..toString()) / ("undefined" ^ 3) != (undefined ^ -3) - (5 + NaN)] = -2 > 25))) {
                                c = 1 + c, delete (22 << "function" != ("foo" ^ {}));
                            }
                        } while (bar && --brake117 > 0);
                    }
                }
            }(Infinity, ((bar += (await && (await[b -= a] = (c = c + 1, 22) === 25 <= -2)) >= (24..toString() == [ , 0 ][1] === (undefined += true % 2))) || 5).toString()[--b + b++]);
        }
        break;

      case (a++ + (b = a) || a || 3).toString():
        for (var brake120 = 5; --b + 25 && brake120 > 0; --brake120) {
            a++ + b_1;
        }
        break;

      case (c = c + 1) + (b_1 += a++ + b--):
        break;
    }
    break;
}

console.log(null, a, b, c, Infinity, NaN, undefined);
```
```js
// uglified code
// (beautified)
var _calls_ = 10, a = 100, b = 10, c = 0, brake1 = 5;

do {
    switch ((c += 1) + !(a >>>= NaN !== (a && (a.a = this * (2 === [ , 0 ].length) == 0)))) {
      case --a:
        for (var brake3 = 5; c += 1, a && a[--b + -0 % (38..toString() << 2 ^ !1)], 0 < --brake3; ) {
            "function" == typeof a && 0 <= --_calls_ && a((c += 1) + (-2 + 24..toString() < ("object" ^ 23..toString()) < (-4 >>> "c" < 24..toString() % [])), --b + [ [ (c = 1 + c, 
            (a += NaN) > (c += 1, 0)) ].in, a, --b + ("function" == typeof f1 && 0 <= --_calls_ && f1(..."" + a, (c = 1 + c, 
            !1 ^ "function" + this >>> !1), (c = 1 + (c += 1), 0 >> (a && (a.null >>= 2))))) ].undefined);
        }
        ++a && (a.in = NaN), a && (a.undefined &= -5);
        break;

      case --b + (a = undefined + (2 === [ , 0 ].length), c += 1, !0):
        for (var brake6 = 5; [ "function" == typeof f1 && 0 <= --_calls_ && f1(a++ + new function(await) {
            this.var *= !1 / (-3 ^ []) != (24..toString() >>> -5 & (c += 1, -1)), this[38..toString() in {}] *= (await && (await[c = 1 + c, 
            1 == +24..toString() ^ (2 ^ 24..toString() ^ -1 * 38..toString())] = !1)) >>> !1 && (c += 1, 
            !1);
            for (var brake7 = 5; c = 1 + c, !0 * (c += 1, null + undefined) && 0 < --brake7; ) {
                c = 1 + c, 23..toString();
            }
            return c = 1 + c, await && (await.NaN += NaN) && (await && (await[c = 1 + c, 2] = !1)) < !1;
        }(), (c += 1) + (a && "function" == typeof a.a && 0 <= --_calls_ && a.a(5, a++ + (!1 & 24..toString() >= undefined) % (a && (a[1 / 0 * (3 <= 23..toString()) > (-4 | undefined ^ undefined)] += /[a2][^e]+$/ >> (NaN == undefined))), (c = 1 + c, 
        typeof (4 / (!1 / ([] < 22))))))), (c += 1) + "function", a && "function" == typeof a.length && 0 <= --_calls_ && a.length(--b + ("undefined" in []), --b + ((38..toString() << "number") - (a && (a.b &= 5 | {})) <= 25), []), (c += 1) + ((a = NaN) || 3).toString() ].c && 0 < brake6; --brake6) {
            "function" == typeof f0 && 0 <= --_calls_ && f0(b = a, "a", "a");
        }
        var key13, expr13 = "function" == typeof f0 && 0 <= --_calls_ && f0("bar", undefined, void function() {
            c = 1 + c, 23..toString(), 23..toString(), c = 1 + c, 24..toString(), c += 1, a_2 && (a_2.c += NaN);
            var a_2, key17, expr17 = --b + !function b() {
                c = 1 + c, 23..toString(), 24..toString(), c = 1 + (c = 1 + c), 24..toString(), 
                b && (b.undefined *= -3 & 38..toString()), 23..toString(), c = 1 + c, 38..toString();
            }();
            for (key17 in expr17) {
                c = 1 + c;
                for (var brake22 = 5; a++ + (b = a) && 0 < brake22; --brake22) {}
            }
        }());
        for (key13 in expr13) {
            c = 1 + c;
            var key24, foo_2 = expr13[key13], expr24 = --b + foo_2;
            for (key24 in expr24) {
                c = 1 + c;
                var key25, foo_1 = expr24[key24], expr25 = a++ - a;
                for (key25 in expr25) {
                    a++, foo_2 *= b++;
                }
            }
        }

      default:
        var brake27 = 5;
        do {
            switch (foo_1 && "function" == typeof foo_1.a && 0 <= --_calls_ && foo_1.a(-3, (c += 1) + -(!0 ^ ((foo_2 <<= !1) && 0 & this)), foo_1 && "function" == typeof foo_1.length && 0 <= --_calls_ && foo_1.length(--b + {
                3: (c = 1 + c, 0 != (38..toString() || "a") != 0),
                a: (1 / 0 >> (2 === [ , 0 ].length)) * (foo_1 = 0) !== {} <= "c",
                foo: (c = 1 + (c = 1 + c), "c0" | (foo_2 %= "" ^ 2 === [ , 0 ].length))
            }[--b - 1], "function", a--))) {
              default:
                for (var brake29 = 5; 0 < --brake29; ) {
                    var key30, expr30 = {
                        Infinity: a++ + {
                            undefined: (c = 1 + c, 4 / 0 < 3),
                            1.5: (c = 1 + (c += 1), (0 ^ -3 >>> 4) > 0 * (foo_2 && (foo_2[c = 1 + c, !0 >>> (c += 1, 
                            "a" <= 23..toString())] += 1))),
                            foo: !1 ^ (foo_1 = NaN),
                            [(c = 1 + (c = 1 + c), (foo_1 = !0) != -5 << 38..toString() < ("c" < []))]: (c = 1 + c, 
                            (this >= 38..toString() ^ -5) >>> (-2 !== {} != 0))
                        }.NaN,
                        undefined: {
                            set var(a_2) {
                                this.in = !1;
                            },
                            c: (c = 1 + c, 0 != (foo_2 && (foo_2[4 + a++] = (foo_1 = 4) / !1))),
                            var: (c = 1 + c, (!1 < 3 * this) << "a" - (foo_2 && (foo_2.a /= -4))),
                            ...foo_2
                        }[c = 1 + c, -0 + ("number" === 24..toString()) ^ 0 == -0 < {}],
                        Infinity: --b + delete a,
                        Infinity: a++ + {}.null
                    }[b--];
                    for (key30 in expr30) {
                        c = 1 + c;
                        for (var bar = expr30[key30], brake31 = 5; --b + (bar = 0, c = 1 + (c = 1 + (c = 1 + c)), 
                        foo_2 && (foo_2.in += undefined === 38..toString()), c = 1 + c, 0 % ("" ^ this) % (bar && (bar.null += 20))) && 0 < brake31; --brake31) {
                            var b = {
                                ...(c = 1 + c, ~(38..toString() - this ^ 0)),
                                ...(c = 1 + c, this >= 38..toString() != ("foo" === 23..toString()) == 0 < undefined > (23..toString() < NaN)),
                                b: (c = 1 + c, (24..toString() <= "c" || NaN) / (!1 << (2 === [ , 0 ].length) - "foo")),
                                undefined: (c = 1 + c, (b += (undefined && (undefined[c = 1 + c, -0 < NaN * (3 / this)] *= undefined - 5)) <= NaN) > (!0 | (undefined && !0)))
                            }[c = 1 + c, c += 1, "undefined" + (0 <= 23..toString())], undefined = bar && bar.NaN;
                        }
                    }
                }

              case {
                    in: "unknown" != typeof b_2,
                    bar: bar,
                    NaN: --b + (b += a)
                }.c:
                for (var brake33 = 5; --b + (--b + void function() {
                    switch (c = 1 + c, 7 & (foo_2 && (foo_2[c = 1 + c, -1] += -5 ^ (bar && (bar.a += "a" != []))))) {
                      case c = 1 + c, 2147483645:
                        break;

                      default:
                      case c = 1 + c, (!0 != (foo_1 = -3)) >> ((null != []) >= (c += 1, 25)):
                        break;

                      case c = 1 + c, NaN <= (bar += (undefined && undefined) + -5):
                    }
                }() || 2).toString()[a++ + ({} in {
                    1.5: (c += 1, -({} - !1 === "" <= 24..toString() + "b")),
                    3: a++ + ((foo_1 && (foo_1.var = !1)) >> !0 >= (!1 ^ (undefined -= 38..toString() / 23..toString()))),
                    ...bar,
                    foo: --b + (c = 1 + c, typeof ((b && (b.undefined = NaN)) ^ (23..toString() && NaN) < (b && (b[c = 1 + c, 
                    (1 / 0 ^ (foo_2 && (foo_2.foo = "b" | {}))) > (foo_1 && (foo_1.foo = undefined === /[a2][^e]+$/ ^ !0))] = "undefined" < 23..toString())))),
                    a: b >>>= a
                })] && 0 < --brake33; ) {
                    var b_1 = function(await) {
                        for (var brake36 = 5; c = 1 + c, (/[a2][^e]+$/ > 24..toString()) * (foo_1 <<= (c += 1, 
                        22 % (-5 >> []))) && 0 < --brake36; ) {
                            c = 1 + c, bar && (bar.in = "number"), await && (await.in += 2 * 38..toString());
                        }
                        for (var brake38 = 5; c = 1 + c, await && (await[c = 1 + c, 0 | 1 != /[a2][^e]+$/ < 24..toString()] = {} & 1 / 0), 
                        23..toString(), 23..toString(), c = 1 + c, c += 1, 0 < --brake38; ) {}
                    }({
                        "-2": !0,
                        undefined: undefined,
                        1.5: (c = 1 + (c = 1 + c), (4 << this == NaN) + (bar && (bar.undefined -= {} < "") || 4)),
                        Infinity: (c = 1 + c, foo_1 && (foo_1.undefined = (foo_1 && (foo_1[c = 1 + c, !1 - ((foo_1 && (foo_1.in = !1)) - (c += 1, 
                        "b"))] = "" >> 23..toString()) || b && (b[c = 1 + c, bar && ({
                            NaN: bar[a++ + b--]
                        } = {
                            NaN: NaN ^ (undefined && (undefined[b] = (2 === this) < !0))
                        })] += !0 | 38..toString())) >>> (c += 1, -0 >>> null / 38..toString()))),
                        Infinity: (c = 1 + c, 0 << (bar && (bar.var = !1)) < !1)
                    });
                }
                for (var brake40 = 5; a++ + (b = a) && 0 < brake40; --brake40) {
                    var brake41 = 5;
                    do {
                        switch ((c += 1) + ("function" == typeof f2 && 0 <= --_calls_ && f2((c = 1 + c, 
                        -1 !== (foo_2 && (foo_2[3 in [ , (c = 1 + c, (NaN | (undefined || "c")) * (38..toString() == {} ^ -3)) ]] >>= -3 === 38..toString() ^ 0))), (c = 1 + c, 
                        !1 & 0 * ("undefined" ^ undefined))))) {
                          case --b + (foo_1 && foo_1.in):
                          case a++ + undefined ? --b + b : a:
                          case (c += 1) + a++:
                          case a--:
                        }
                    } while (--b && 0 < --brake41);
                }
                break;

              case b_1 && b_1[[] == (b_1 && (b_1.b = !1)) !== (/[a2][^e]+$/ !== 23..toString() || 38..toString() + 1)]:
                break;

              case (c += 1) + b:
                --b, 23..toString(), function() {
                    c = 1 + (c = 1 + c), bar && (bar["function" == typeof bar && 0 <= --_calls_ && bar((c = 1 + c, 
                    ("a" !== 24..toString() || -3 === 23..toString()) == NaN < (undefined && (undefined[c = 1 + c, 
                    (0 !== (undefined && this)) >>> (2 == 38..toString() >>> (2 === [ , 0 ].length))] |= "b" + 1 / 0))))] += 38..toString() % -0), 
                    undefined && (undefined[c = 1 + c, ((undefined && (undefined[c = 1 + c, NaN - (2 === [ , 0 ].length) ^ (-1 < this || 0 === [])] += -1)) | "bar" + 23..toString()) + ("function" ^ 23..toString())] += 0);
                }(), a++, "function" == typeof f2 && 0 <= --_calls_ && f2((c = 1 + c, 23..toString() << 3 >>> 0 !== 24..toString() / {} > (b_1 && (b_1[c = 1 + c, 
                24..toString() >>> !0 > 0 / (38..toString(), 25)] = !1))), !0, (c = 1 + (c = 1 + c), 
                1 + (b && ([ b.var ] = [ "foo" % {} ])) & (b = NaN))), "function" == typeof b && 0 <= --_calls_ && b(2 === [ , 0 ].length), 
                c += 1, b && b[a++ + (b = !0, c = 1 + ((c = 1 + c) + 1), 38..toString(), c = 1 + c, 
                24..toString(), !void 23..toString())];
            }
        } while (b && 0 < --brake27);
        try {
            var await = function([ [ foo_2_2, foo_2 ], async ], b_1, a_1) {
                var arguments = function() {
                    switch (c = 1 + c, 0 * 24..toString() ^ (c += 1, this) || 3 != (foo_2 && (foo_2.c = !1))) {
                      case c = 1 + c, (0 >>> (2 === [ , 0 ].length)) / !1 << (NaN < 24..toString() >>> 3):
                        break;

                      default:
                      case c = 1 + c, bar && (bar[--b + a_1] = ((async += -4) || 0) === (c += 1, "foonull")):
                      case c = 1 + c, !0 >> (-0 >>> 23..toString()) && a_1 && (a_1[{
                            "": (c = 1 + c, 1 + this == -0)
                        }] = !1):
                    }
                }();
                function f4(foo_2_2_1) {
                    for (var brake54 = 5; c = 1 + c, foo_1 && (foo_1[a++ + [ (c = 1 + c, (!0 !== []) >> (bar /= undefined / "c") >= (!1 < (null & 38..toString()))), (c = 1 + c, 
                    b_1 && ([ b_1[c = 1 + c, (5 | this | !1) < ("object" <= [] < (1 / 0 ^ 23..toString()))] ] = [ "a/[a2][^e]+$/" ]), 
                    -3 - (foo_2 = -2 + 24..toString() << !0)), (c = 1 + c, async = !1 * undefined & -5 + {}) ]] = ([] < {} ^ "b") >= ("function" / undefined || 0 ^ 24..toString())) && 0 < brake54; --brake54) {
                        c = 1 + c, 24..toString() <= "bar" <= (2 < []) || (24..toString(), a_1 && (a_1[c = 1 + c, 
                        !1] = "a" < 24..toString()));
                    }
                    NaN !== (c = 1 + (c = 1 + c), NaN * (/[a2][^e]+$/ / 23..toString()) ^ [] >>> "object" == -2, 
                    -5) === (foo_2_2_1[-0 in {
                        0: (c = 1 + c, "b" - undefined & "" + 24..toString() - (foo_1 /= !1)),
                        "-2": (c = 1 + c, c += 1, foo_2_2_1 && ([ foo_2_2_1[c = 1 + c, 4 * (-4 !== /[a2][^e]+$/ < this) ? (c = 1 + c, 
                        ({} <= 0) / (c += 1, !1 << (2 === [ , 0 ].length !== "number"))) : (c = 1 + c, foo_2 && (foo_2.undefined = ((b = "object" / 38..toString()) == (2 === [ , 0 ].length != (2 === [ , 0 ].length))) >= (4 ^ 24..toString()) + (23..toString() || "b")))] ] = [ (foo_2_2_1[c = 1 + c, 
                        -(!0 !== 38..toString() + 22)] %= 0) ^ (a_1 && (a_1.c += 17)) ])),
                        [NaN - {} != ("foo" === {}) % ("c" ^ undefined)]: (c = 1 + (c = 1 + c), !0 ^ (c += 1, 
                        [] > 23..toString()))
                    }] += !0) ? (c = 1 + c, undefined && (undefined.null = 2 + (23..toString() !== 23..toString()))) : c = 1 + c;
                }
                var arguments_2 = f4(a++ + (23..toString(), b_1 && (b_1.null = 0), !0), /[abc4]/.test((c = 1 + c, 
                (arguments && (arguments[(c += 1) + +a] = (foo_2 && (foo_2[b |= a] = 0)) != (0 ^ [])) || b || 5).toString())));
                c = 1 + (c = 1 + c), (foo_2 %= this % "undefined") && (foo_2[{
                    in: (c = 1 + c, (b && (b.NaN += NaN < (2 === [ , 0 ].length) >>> undefined)) >>> NaN),
                    null: (c = 1 + c, (arguments_2 && (arguments_2[(c += 1) + ("function" == typeof arguments_2 && 0 <= --_calls_ && arguments_2((c = 1 + c, 
                    ({
                        b: foo_2.b
                    } = {
                        b: void 0 <= (undefined < 1) < (NaN ^ 25 <= {})
                    })), (c = 1 + c, ("object" == 38..toString()) / 0 == 5), "a"))] |= {} + 3 <= 0)) >>> (!0 <= this != 1))
                }[a++ + (c = 1 + c, 0)]] = 0 << (undefined && (undefined[c = 1 + c, ("object" !== {}) - ("" | this) ^ (async && (async.var *= !0))] += !0)) >> 0), 
                c = 1 + c, 24..toString(), foo_2 &= !1, c = 1 + c, b_1 && ([ b_1.a ] = [ this % "c" ]), 
                c = 1 + c, 38..toString(), 24..toString(), c = 1 + (c += 1), a_1 && (a_1.var = -1), 
                b_1 && (b_1[c = 1 + c, !1 >> (1 >> (b += undefined <= -0))] = this << (2 === [ , 0 ].length)), 
                foo_1 && (foo_1[c = 1 + c, arguments_2 && ({
                    Infinity: arguments_2[(c += 1) + (0 <= --_calls_ && f4())]
                } = {
                    Infinity: (b -= !1) != "bar" - 38..toString() & (b = 4, b = !0)
                })] = !1), c = 1 + c, 24..toString(), c = 1 + c, bar ^= -3 === 24..toString(), 38..toString(), 
                arguments_2 = void async function() {}((c = 1 + c, c += 1));
                !function({
                    a: b_1
                }, arguments_2) {
                    for (var brake59 = 5; c = 1 + c, (arguments_2.NaN += 2.5) / (this || 2) && 0 < --brake59; ) {
                        c = 1 + c;
                    }
                    for (var brake61 = 5; c = 1 + c, ([] % -5 | 24..toString() + 3) << -2 + (this < []) && 0 < --brake61; ) {
                        c = 1 + c, b_1 && (b_1[(c += 1) + ("function" == typeof async && 0 <= --_calls_ && async((c = 1 + c, 
                        (!0 & "c") / (-4 / [] <= ("function" != {}))), (c = 1 + (c += 1), 0 & (0 != {}) <= 0), NaN))] = 4 <= this - "object");
                    }
                }({
                    null: b--,
                    [--b + (arguments <<= (c = 1 + c, b && (b.in -= (c += 1, (foo_1 && (foo_1.c += !0)) <= NaN))))]: a++ + {
                        length: 0,
                        b: (c = 1 + (c = 1 + c), (bar && (bar.a = NaN)) < ([] <= this) !== (-1 ^ []))
                    },
                    [--b + a]: 25
                });
                c += 1, c += 1, c += 1;
            }([ [] ], 23..toString());
        } catch (c_2) {
            if (a++ + c_2) {
                try {
                    var brake69 = 5;
                    do {
                        var undefined_2 = b_1 && b_1.in, await_1 = a++ + undefined_2;
                    } while (a && 0 < --brake69);
                } catch (undefined_1) {
                    var bar_1 = void (c = 1 + c);
                    c += 1, b |= a;
                } finally {
                    var Infinity_1 = --b + (c = 1 + c, c += 1, c += 1, (a || 3).toString()), undefined_2 = --b + (foo_1 && foo_1.a), expr74 = (c += 1) + ("function" == typeof f13 && 0 <= --_calls_ && f13((c = 1 + c, 
                    0 === 23..toString() ^ 0 ^ 22 <= undefined)));
                    for (const key74 in expr74) {
                        c = 1 + c;
                        undefined_2 = expr74[key74];
                    }
                }
            }
        }

      case --b + (0 << (0 >> {}) == (-1 === []) - (!0 | 38..toString())):
        for (var brake78 = 5; (--b + ("boolean" == typeof NaN_1) ? b_1 && b_1[(c += 1) + ((c += 1) + (b /= a) || a || 3).toString()] : --b + [ a++ + !((undefined *= -0 ^ (await && (await.null ^= NaN))) % (NaN ^ 1 / 0 === (2 === [ , 0 ].length))) ]) && 0 < --brake78; ) {
            var key79, expr79 = {
                b: a++ + (foo_1 && "function" == typeof foo_1.b && 0 <= --_calls_ && foo_1.b(--b + [ (c = 1 + c, 
                (b_1 = 23..toString() * 24..toString()) === /[a2][^e]+$/), (c = 1 + (c += 1), !1 * (24..toString(), 
                1) | (undefined && [] && (c += 1, -3))), (c = 1 + c, (-1 != 38..toString() <= "a") * (this / !1 / !1)), (c = 1 + c, 
                (await && (await.in = [] <= -2)) == /[a2][^e]+$/ / undefined), (c = 1 + c, 25 * (2 === [ , 0 ].length) >>> -2 >> ("foo" - (2 === [ , 0 ].length) === (undefined && (undefined[c = 1 + c, 
                (2 ^ 24..toString()) < "c" < (await ^= +(undefined < !0))] = !0)))), (4 ^ 2 === [ , 0 ].length) >>> 0, (c = 1 + (c = 1 + c), 
                (!0 ^ (bar && (bar.in >>= !1))) != (b && ([ b[1 / 0 in [ (c = 1 + c, b_1 && (b_1["function" == typeof f12 && 0 <= --_calls_ && f12()] = ([] + "object" >> 0) % (-1 - undefined + 0))), (c = 1 + c, 
                await && (await.Infinity += 0 <= 23..toString() % -0 - (this + (2 === [ , 0 ].length)))) ]] ] = [ (undefined && ([ undefined[c = 1 + c, 
                ("number" ^ {} | "function" << 38..toString()) ^ {} >> -1 << (22 | 24..toString())] ] = [ undefined && 5 ]), 
                -1) ]))) ] ? {
                    foo_1: foo_1,
                    b: (c = 1 + c, c += 1, undefined <= -3 && [] >>> "b" !== NaN),
                    set ""(b_1) {
                        this.b += (2 === [ , 0 ].length) % undefined;
                    }
                }[c = 1 + c, bar %= 3, 1 < (-4 != [])] : --b + (b = a), 0)),
                "\t": 4 + --b,
                [(c += 1) + (c += 1, typeof -("c" | {}))]: --b + (b = a),
                length: await && await[++b]
            }.null;
            for (key79 in expr79) {
                c = 1 + c;
                var undefined_1 = expr79[key79];
            }
        }
        switch (("" < 38..toString()) << NaN != (this <= !0) - NaN) {
          case --b + undefined_1:
          case "unknown" != typeof foo_1:
          case (c += 1) + +(!1 << (c += 1, null ^ [])):
          case a++:
        }
    }
} while ("function" == typeof undefined && 0 <= --_calls_ && undefined() && 0 < --brake1);

switch (a++ + {
    1.5: a,
    "-2": b,
    length: "boolean" != typeof Infinity_2,
    a: --b + (void 0 === c),
    "-2": function(a_2) {
        var brake85 = 5;
        if (--b + (b && "function" == typeof b.in && 0 <= --_calls_ && b.in(0, undefined && (undefined[foo_1 && "function" == typeof foo_1.null && 0 <= --_calls_ && foo_1.null(38..toString(), (c = 1 + c, 
        (NaN < -5 >> this) + (foo_1 && (foo_1.null = (2 === [ , 0 ].length !== -5) + !1))), (c = 1 + c, 
        (this - -1) / -0 + (c += 1, !1)))] = 0 | (c += 1, 0))) || 0).toString()[~(foo_2 <<= (undefined && (undefined.in >>= !1)) - -1) ? (c += 1) + a : a++ + (--b + (b + 1 - .1 - .1 - .1))] && 0 < brake85) {
            return a++ + ((undefined_1 <<= !0) / NaN >>> !0);
        }
        if (0 - ((bar = !0) | 24..toString() < 22)) {
            for (var brake88 = 5; "function" == typeof f9 && 0 <= --_calls_ && f9(23..toString(), --b + !0, await && await[38..toString() in {
                [(c = 1 + c, c += 1, 5 % (1 / 0 <= [] !== (undefined && (undefined[c = 1 + c, NaN] = [] <= NaN))))]: (c = 1 + c, 
                (foo_1 && (foo_1[a] *= 1 & (c += 1, !0))) >= -1 / 0),
                NaN: (c = 1 + (c += 1), 38..toString() === this == !1 | "b" & (foo_1 && (foo_1[c = 1 + c, 
                c += 1, !1] = !1))),
                NaN: (c = 1 + c, (25 >>> (24..toString() && 0)) - (!0 >>> {}) % (1 / 0)),
                "-2": (c = 1 + c, 4 !== [] === 22 || -3 < (a_2 && (a_2[c = 1 + c, (1 & (c += 1, 
                -0)) + (38..toString() < !0)] = this))),
                set length(bar_2) {
                    this.var = 0;
                }
            }]) && 0 < --brake88; ) {
                if (b && "function" == typeof b.in && 0 <= --_calls_ && b.in(a++ + (await && await.NaN))) {
                    switch (a++ + b--) {
                      case /[abc4]/g.exec((a++ + (await && "function" == typeof await.a && 0 <= --_calls_ && await.a("bar", 0, 1)) || b || 5).toString()):
                        c = 1 + c, 3..toString()[c = 1 + c, undefined_1 = [] << 0 ^ (c += 1, [] / 0)];
                        var foo_1 = (c = 1 + c, undefined_1 && (undefined_1[c = 1 + c, 25 - {} >>> "function"] >>>= 2 === [ , 0 ].length ^ 23..toString()), 
                        c = 1 + c, void (bar && (bar[[ (c = 1 + c, b_1 = !1 >>> 25 % (38..toString() || 22)), (c = 1 + c, 
                        (foo_2 ? foo_2.c = !0 : 2) > ("function" <= [] < (undefined && (undefined.c = undefined + 25)))) ][c = 1 + c, 
                        ("b" & 2 === [ , 0 ].length) >> -4 != (b_1 && ({
                            var: b_1.null
                        } = {
                            var: 3 + {}
                        }), foo_2 && (foo_2.null = !0 !== 23..toString()))]] = (c += 1, 25 % this)) || (foo_1 = "bar" + undefined)));
                        break;

                      case a++ + b:
                        var key93, expr93 = --b + {
                            Infinity: (c = 1 + c, -3 != 25 < (foo_2 && (foo_2[c = 1 + c, -28 * ((1 !== 38..toString()) >>> (await && (await[c = 1 + c, 
                            !0] = this & this)))] = NaN))),
                            1.5: (c = 1 + c, 23..toString(), !0 === (await && (await.a += !0)))
                        }[c = 1 + c, !1 < [] / 3 >> (b && (b.NaN = NaN))];
                        for (key93 in expr93) {
                            c = 1 + c;
                            for (var a = expr93[key93], brake94 = 5; c = 1 + c, undefined_1 && (undefined_1.undefined += -2 ^ (undefined_1 = !1) ^ undefined), 
                            c = 1 + c, (b && (b[4 + a++] = !0)) > (this || "") - !1 && 0 < --brake94; ) {}
                        }
                        c = 1 + c, undefined && (undefined[a++ + (-1 != [] << 0 ^ (c += 1, !1))] = "object" * 24..toString()) || (c += 1), 
                        c = 1 + (c = 1 + c), 24..toString(), c += 1, 38..toString(), c = 1 + c;
                        break;

                      case (c += 1) + a--:
                        break;

                      case a++ + ("function" == typeof foo_2 && 0 <= --_calls_ && foo_2("foo", (c += 1) + foo_2, -0)):
                        for (var brake101 = 5; a++ + (c = 1 + c, typeof (-5 % ("number" === undefined))) && 0 < brake101; --brake101) {
                            switch (c = 1 + c, -("foo" < 23..toString() | 0)) {
                              case c = 1 + c, (undefined ^ /[a2][^e]+$/) < !1 == (a && (a.c = 0)) + 0 * 23..toString():
                                break;

                              default:
                              case c = 1 + c, foo_1 && (foo_1.Infinity /= !0 < ("b" === 23..toString()) % !1):
                              case c = 1 + c, await = 1:
                            }
                        }
                        c = 1 + c;
                    }
                }
            }
        }
    }
}[a++ + "b"]) {
  case (c += 1) + a++:
    c += 1;

  default:
    b |= a;
    break;

  case (--b || a || 3).toString():
    break;

  case {
        in: b--
    }[bar]:
    switch (c += 1, {}.a) {
      case -(bar && (bar.Infinity = (c += 1, !1))):
        break;

      case !(0 <= (foo_1 %= 23..toString() <= !1) + (22 == 24..toString())):
        b_1 = function(undefined) {
            "function" == typeof bar && 0 <= --_calls_ && bar(5 in [ (c = 1 + c, c += 1, 24..toString() == "number" + 24..toString() == !0 >> 1 / 0 % undefined), , (c = 1 + c, 
            (38..toString() && []) + 0 >> 0), (c = 1 + c, [] % 38..toString() / (23..toString() * (2 === [ , 0 ].length)) ^ 3 <= {} / -5) ], ..."" + undefined_1, 0);
            try {
                c = 1 + c, ("object" != undefined) / !1 && 38..toString(), c = 1 + c, c += 1;
            } catch (b_2) {
                return b;
            }
        }(1 / 0, ((bar += (await && (await[b -= a] = !1 === (c += 1, 22))) >= (0 == 24..toString() === (undefined += 1))) || 5).toString()[--b + b++]);
        break;

      case (a++ + (b = a) || a || 3).toString():
        for (var brake120 = 5; 25 + --b && 0 < brake120; --brake120) {
            a++;
        }
        break;

      case (c += 1) + (b_1 += a++ + b--):
    }
}

console.log(null, a, b, c, 1 / 0, NaN, undefined);
```
```
original result:
null NaN 0 63 Infinity NaN undefined

uglified result:
null NaN 0 59 Infinity NaN undefined
```
```js
// reduced test case (output will differ)

// (beautified)
function f4(foo_2_2_1) {
    (arguments[0] = 0) === console.log(foo_2_2_1);
}

f4(delete (0 ^ 0));
// output: 0
// 
// minify: true
// 
// options: {
//   "mangle": false,
//   "output": {
//     "v8": true
//   },
//   "validate": true
// }
```
```
minify(options):
{
  "mangle": false,
  "output": {
    "v8": true
  }
}

Suspicious compress options:
  pure_getters
  unused
```


Discussion:

Patch:
diff --git a/lib/compress.js b/lib/compress.js
index a3842bedc82..1249e620b49 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -5860,7 +5860,15 @@ merge(Compressor.prototype, {
                 if (def.scope === self) assignments.add(def.id, node);
             }
             var node_def, props = [], sym = assign_as_unused(node, props);
-            if (sym && self.variables.get(sym.name) === (node_def = sym.definition())) {
+            if (sym && self.variables.get(sym.name) === (node_def = sym.definition())
+                && !(is_arguments(node_def) && !all(self.argnames, function(argname) {
+                    return !argname.match_symbol(function(node) {
+                        if (node instanceof AST_SymbolFunarg) {
+                            var def = node.definition();
+                            return def.references.length > def.replaced;
+                        }
+                    }, true);
+                }))) {
                 props.forEach(function(prop) {
                     prop.walk(tw);
                 });


Test patch:
diff --git a/test/compress/drop-unused.js b/test/compress/drop-unused.js
index 4448bdd85c6..1c9ab61fe5d 100644
--- a/test/compress/drop-unused.js
+++ b/test/compress/drop-unused.js
@@ -3112,3 +3112,25 @@ issue_4235: {
     }
     expect_stdout: "undefined"
 }
+
+issue_4404: {
+    options = {
+        pure_getters: "strict",
+        unused: true,
+    }
+    input: {
+        function f(a) {
+            arguments[0] = "PASS";
+            console.log(a);
+        }
+        f("FAIL");
+    }
+    expect: {
+        function f(a) {
+            arguments[0] = "PASS";
+            console.log(a);
+        }
+        f("FAIL");
+    }
+    expect_stdout: "PASS"
+}