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

Closed
alexlamsl opened this issue Oct 22, 2019 · 0 comments · Fixed by #3510
Closed

ufuzz failure #3509

alexlamsl opened this issue Oct 22, 2019 · 0 comments · Fixed by #3510
Labels

Comments

@alexlamsl
Copy link
Collaborator

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

var a_2 = function a_2() {
    switch (--b + a--) {
      default:
        try {
            {
                var brake4 = 5;
                L24721: do {
                    {
                        return --b + ({}[--b + typeof (c = 1 + c, "object" > -0 !== void "" ^ ("c" != -0) < (5 <= "a"))] ? a++ + (typeof a_1 === "number") : --b + b--);
                    }
                } while ((a++ + (typeof foo_2 !== "boolean") || 2).toString()[typeof a_2 == "function" && --_calls_ >= 0 && a_2(25, (c = 1 + c,
                ("undefined" !== 3, a_2 && (a_2.undefined %= true + 23..toString())) <= NaN * /[a2][^e]+$/ % ("b" === [ , 0 ][1])), "bar")] && --brake4 > 0);
            }
        } catch (b_1) {
            {
                for (var brake7 = 5; a++ + b-- && brake7 > 0; --brake7) {
                    L24722: for (var brake8 = 5; (c = 1 + c, ([ , 0 ][1] == NaN == (0 == "function")) / ((0,
                    "number") === (b_1 = 0 != "c"))) && brake8 > 0; --brake8) {
                        c = 1 + c, (c = c + 1, -3 << -3) << (24..toString() | 3 && "a" * -1);
                    }
                }
                {
                    var brake10 = 5;
                    while ((0 === 1 ? a : b) && --brake10 > 0) {
                        var expr11 = (c = 1 + c, (a_1 && (a_1.c = "object" / 24..toString())) % (-4 * 38..toString()) > (-0 != -4 && /[a2][^e]+$/ & NaN));
                        L24723: for (var key11 in expr11) {
                            c = 1 + c;
                            var a_1 = expr11[key11];
                            c = 1 + c, 25 * 0 >> (-2 != true) !== ((c = c + 1, "foo") & "number" > 2);
                        }
                    }
                }
                --b + /[abc4]/.test(((c = 1 + c, ("c" !== "") * ("c" === 5) == (a_1 && (a_1.Infinity = (24..toString() >= -1) / (a_1 && (a_1.in += 2 > 0))))) || b || 5).toString());
                {
                    var brake14 = 5;
                    L24724: while ({
                        "\t": (c = 1 + c, c = c + 1, (24..toString() != "object") <= "function" / -0),
                        null: (c = 1 + c, (-23..toString() || true % -5) >>> (("foo" & [ , 0 ][1]) >>> (this | -1)))
                    }.c && --brake14 > 0) {
                        var b_2 = (c = 1 + c, a_2 && (a_2.NaN += (delete 38..toString() !== "c" < 5) - (5 / true >> ("undefined" << 5))));
                    }
                }
            }
            for (var brake16 = 5; ++b && brake16 > 0; --brake16) {
                var brake17 = 5;
                while (--b && --brake17 > 0) {
                    var foo_1 = function f0(a_2_1, a_1_1) {
                    }();
                }
            }
        } finally {
            for (var brake19 = 5; a++ + (typeof a_1_2 == "symbol") && brake19 > 0; --brake19) {
                if ((c = c + 1) + 24..toString()) {
                    try {
                        if (c = 1 + c, c = c + 1, "object" != 5 & null < 24..toString()) {
                            c = 1 + c, a_2 && (a_2[a++] = (a_2 && (a_2.c += "foo" << Infinity || b_2 && (b_2.Infinity -= 22 > 5))) >>> +(5 / ""));
                        } else {
                            c = 1 + c, (foo_1 += (false || /[a2][^e]+$/) & "bar" >> 4) ^ (23..toString() == "function") <= (-4 !== 2);
                        }
                    } finally {
                        c = 1 + c, (1 << 25 || "undefined" * false) % ({} * 24..toString() <= (null != 3));
                        c = 1 + c, (4 | this, 5 === -1) == (foo_1 && (foo_1.foo = (false == "function") >>> (c = c + 1,
                        undefined)));
                    }
                }
            }
            {
                var expr27 = a_2 && a_2.null;
                for (var key27 in expr27) {
                    c = 1 + c;
                    var a_1 = expr27[key27];
                    {
                        return ((b = a) || a || 3).toString();
                    }
                }
            }
        }
        {
            var Infinity = function f1() {
                {
                    var Math_2 = function bar_1(foo_1, Infinity, c_2) {
                        c = 1 + c, ("b", 38..toString()) << (null < 38..toString()) & (c = c + 1, 1 === "number");
                        c = 1 + c, ~(([] && "undefined") ^ -5 !== -0);
                    }(-2, (c = 1 + c, foo_1 && (foo_1.a = ("undefined" || this) > -3 % 5 ^ ((null, 3) || "function" >> "object"))), 5);
                }
                {
                    var a_1_1 = function f2(b_2, Math_2_2, c_2) {
                    }(4);
                }
            }(--b + --a, typeof b_2, [ --b + (1 === 1 ? a : b), {
                var: (c = 1 + c, c = c + 1, ([ , 0 ].length === 2) << 5 <= (2 & 22))
            }.NaN, ++a, [ (c = 1 + c, -4 - Infinity != -5 - 3 ^ ("number" >>> "foo") * (-3 ^ -1)), (c = 1 + c,
            -~(4 % [])), (c = 1 + c, ("number" >= -0 & (c = c + 1, 24..toString())) >> ((24..toString(),
            2) | (-4 && "a"))) ].length ][--b + (typeof f1 == "function" && --_calls_ >= 0 && f1())]);
        }

      case foo_1:
        try {
            try {
                c = c + 1;
            } catch (a_2) {
                ({
                    3: (c = 1 + c, true >= false > (0 ^ 2) == 5 - [ , 0 ][1] >> (-0 < "foo")),
                    c: (c = 1 + c, delete -3 - (1, null) > ((1 | 38..toString()) & void -3)),
                    "": (c = 1 + c, ((-4 <= "bar") >> ([] >= Infinity)) + !(2 ^ "function")),
                    a: (c = 1 + c, (b_2 = [] ^ -3) - (c = c + 1, this) > (a_1 && (a_1.NaN &= 1 | this)) >> (2 !== "")),
                    var: (c = 1 + c, "" * ([ , 0 ].length === 2) % (0 / "foo") % (5 % -0 & 24..toString() !== "object"))
                }).null;
                if (a++) {
                    var brake39 = 5;
                    while ((b = a) && --brake39 > 0) {
                        for (var brake40 = 5; (c = 1 + c, (a_2 && (a_2.NaN = -2 >> -1 | "bar" * Infinity)) != "bar" >>> -4 >= (a_2 && (a_2.in += "number" & [ , 0 ].length === 2))) && brake40 > 0; --brake40) {
                            c = 1 + c, (-2 === -4) >= (-4 ^ null) && (true & 0) >>> ("bar" ^ undefined);
                        }
                    }
                } else {
                    var brake42 = 5;
                    while (--b + {
                        get Infinity() {
                            c = 1 + c, (5 ^ true) * (-2 && "bar") & (-1 != /[a2][^e]+$/ || [] & false);
                        }
                    }.a && --brake42 > 0) {}
                }
            } finally {
                {
                    var brake45 = 5;
                    do {
                    } while (new function b_1() {
                        this[a++ + b_2] = ("number" & [ , 0 ].length === 2) % ("object" && 4);
                        this[void b] = 25 >= 25 & -5 === Infinity;
                        c = 1 + c, a_2 && (a_2.foo |= ("object" && 25) >>> (c = c + 1, Infinity) ^ Infinity / /[a2][^e]+$/ != 4 - 1);
                    }() && --brake45 > 0);
                }
                {
                    var b_1 = function f3(foo_1, c) {
                        c = 1 + c, (NaN >>> "object" ^ 23..toString() === -2) != (-2 ^ "") >= -1 * /[a2][^e]+$/;
                        c = 1 + c, (24..toString() !== true & 0 <= -0) >> ("c" | "function") * (-2 ^ "b");
                    }(-2);
                }
            }
        } finally {
            {
                var expr52 = b_1 = (NaN >= this) % ("object" + -5) > ((b_2 && (b_2[(c = 1 + c, foo_1 && (foo_1.in = (b_2 += ([ , 0 ][1] ^ this) == null * Infinity) * (foo_1 += (-1 >>> -4) + (true << [ , 0 ][1]))))] += {} | this)) ^ "foo" << 38..toString());
                for (var key52 in expr52) {
                    a++ + void (b_2 && (b_2.in = (("number" & true) !== (foo_1 && (foo_1.in = -2 ^ -4))) >= (({} ^ this) > "bar" >> [])));
                }
            }
        }
        {
            var a_2 = function foo(Math_1, undefined, c) {
                var arguments_2;
                {
                    var brake56 = 5;
                    do {
                        c = c + 1;
                    } while (a++ + (--b + {
                        "": (c = 1 + c, (-5 >= false) >>> ("c" & 3) == ((a_2 += 0 ^ -1) != ("a" ^ undefined))),
                        NaN: (c = 1 + c, a_1 = (-3 & "object" ^ 0 % 3, (foo_1 && (foo_1[(c = 1 + c, ((-4 || "b") && (Infinity,
                        "bar")) / (/[a2][^e]+$/ <= -0 >= (null >= {})))] = 1 <= "foo")) != "number" >>> -5))
                    }.Infinity) && --brake56 > 0);
                }
            }((c = c + 1) + (b = a));
        }
        break;

      case (true ^ [ , 0 ][1]) === 5 << this != (true != -1) - -3 * true:
        ;
        ;

      case --b + {}[--b + (b >>>= a)]:
        {
            var expr60 = typeof b_1_2 === "object";
            for (var key60 in expr60) {
                c = 1 + c;
                var bar = expr60[key60];
                {
                    var expr61 = a++ + (typeof f3 == "function" && --_calls_ >= 0 && f3(-0, 38..toString()));
                    for (var key61 in expr61) {
                        a++ + !+((b_2 && (b_2.var = -1 && "function")) !== (a_1 && (a_1[(c = 1 + c, (c = c + 1,
                        {} > ([ , 0 ].length === 2)) >= -3 / [] / (-2 >> -1))] = "number" ^ 22)));
                    }
                }
            }
        }
        {
            var expr63 = a++;
            L24725: for (var key63 in expr63) {
                {
                    var a_1_1 = function parseInt_1(a_2_2) {
                        var undefined = --b + (typeof f1 == "function" && --_calls_ >= 0 && f1("bar")), Math_1 = 0 === 1 ? a : b;
                    }((c = c + 1) + {
                        Infinity: (c = 1 + c, (4 >>> /[a2][^e]+$/ ^ 1 / -3) >>> ((38..toString(), Infinity) === 22 >> "c"))
                    }.c, a++ + !function parseInt_1() {
                        c = 1 + c, NaN << /[a2][^e]+$/ >> 4 / /[a2][^e]+$/ | (c = c + 1, -2) * (this && 0);
                        c = 1 + c, (("undefined" || "b") ^ -2 << 22) * ((c = c + 1, "") !== {} <= -1);
                        c = 1 + c, a_2 && (a_2.in += ((a_1 += {} >= 2) >> ("b" < -5)) - ([ , 0 ][1] >>> NaN || (c = c + 1,
                        null)));
                    }());
                }
            }
        }
        break;
    }
    0 === 1 ? a : b;
    var a = a++ + (a++ + a++ ? (c = c + 1) + [ , 0 ][1] : typeof a_1 == "function" && --_calls_ >= 0 && a_1("", -2)), NaN = a++ + delete b;
    return --b + (b += a);
};

try {
    for (var brake74 = 5; !a && brake74 > 0; --brake74) {
        var brake75 = 5;
        while ((b <<= a) && --brake75 > 0) {
            var foo_1;
        }
    }
} catch (a_2) {
    switch ({
        foo: /[abc4]/.test((--b || b || 5).toString())
    }[--b]) {
      case typeof a_2 == "function" && --_calls_ >= 0 && a_2("foo", -(((c = c + 1, "function") || foo_1 && (foo_1.in = undefined % 23..toString())) / ("c" >>> 5 || (1 || undefined))), [ 1 === 1 ? a : b, , a++ + (--b + a++ ? --b + a_2 : a++ + b--), a++ + (b += a) ]):
      default:
        ;

      case a++ + +function() {
            if (a++ + (b = a)) {
                if (b + 1 - .1 - .1 - .1) {
                    for (var brake81 = 5; (c = c + 1) + foo_1 && brake81 > 0; --brake81) {}
                } else {}
            } else {
                L24726: for (var brake85 = 5; --b + ((c = 1 + c, (24..toString() && undefined) | "function" >> NaN,
                delete (a_2 = "undefined" - "undefined")) ? (c = 1 + c, -(foo_1 = 24..toString() * 2 <= 1 >>> false)) : (c = 1 + c,
                a_2 && (a_2.a += Infinity % -5 & [] - "object" ^ (a_2 && (a_2[{}[(c = 1 + c, ((c = c + 1,
                NaN) & 3 % ([ , 0 ].length === 2)) > (38..toString() !== "bar" & (c = c + 1, "undefined")))]] %= (25 | "b") <= 4 * "undefined"))))) && brake85 > 0; --brake85) {
                }
                L24727: {
                    c = 1 + c, ([] < -5) - ("" >>> []) && (null * true || -3 * -3);
                    c = 1 + c, false <= -1 >= (0 > [ , 0 ][1]) ^ (foo_1 && (foo_1[a++ + -(a_2 && (a_2.in += ("number" === "object") + (-1 | "a") && "function" == {} != +false))] = (c = c + 1,
                    {}) + (0 >> "b")));
                }
            }
            for (var brake92 = 5; --b + (b = a) && brake92 > 0; --brake92) {
                var a_2_2 = function f4(b) {
                    {
                        var expr94 = (c = 1 + c, (("function", false) < (24..toString() & "a")) >>> ("object" / -0 == (c = c + 1,
                        22)));
                        for (var key94 in expr94) {
                            c = 1 + c, -4 > true ^ void undefined || (NaN || null) && {} / "a";
                        }
                    }
                    {
                        var brake96 = 5;
                        do {
                            c = 1 + c, (("number" < "number") - (null || -4)) * (23..toString() % -0 << ("function" || -4));
                        } while ((c = 1 + c, ((22 << {}) - "foo" * 1) % ((25 ^ [ , 0 ].length === 2) <= (-0 === -5))) && --brake96 > 0);
                    }
                }();
            }
            var b_1 = [ (c = c + 1) + typeof parseInt, a++ + (0 === 1 ? a : b) ][a++ + typeof --b];
            {
                {}
            }
        }():
        c = c + 1;
        break;

      case a++ + delete ((5 * undefined == -4 >>> 3) + ("a" << "bar" < (Infinity | -5))):
        break;
    }
    switch (foo_1 && foo_1.in) {
      case (c = c + 1) + (3 * -5 * (-2 <= 5) ^ (a_2 && (a_2[--b + (b >>= a)] += 22 < -5 >= (a_2 && (a_2[(c = 1 + c,
        ("number" >= -4 == (c = c + 1, undefined)) >= ([] & "" & (2 && 1)))] = "bar" !== ([ , 0 ].length === 2)))))):
        break;

      case /[abc4]/.test((a++ + (typeof foo_1 == "function" && --_calls_ >= 0 && foo_1(a++ + a_2, -5)) || b || 5).toString()):
        {
            if ((foo_1 || 9).toString()[(c = c + 1) + ++a]) {
                c = c + 1;
            } else {
                var brake106 = 5;
                while (--b + (typeof a_2 == "function" && --_calls_ >= 0 && a_2(b++, -5)) && --brake106 > 0) {
                    c = 1 + c, (NaN % "bar" & {} < "foo") * (foo_1 && (foo_1.a += -4 != /[a2][^e]+$/ & 1 <= 5));
                    {
                        var brake109 = 5;
                        while ((c = 1 + c, ((2 == ([ , 0 ].length === 2)) > "foo" << this) / (a_2 = false == NaN,
                        [ , 0 ][1] <= 23..toString())) && --brake109 > 0) {
                            c = 1 + c, (({} | 25) >> (3 >>> "foo")) + (true ^ 5 || undefined == /[a2][^e]+$/);
                        }
                    }
                    switch (c = 1 + c, c = c + 1, foo_1 += -24..toString() >> ("object" < 5)) {
                      case c = 1 + c, (false | "number") % ("foo" <= "foo") % (a_2 && (a_2[typeof f1 == "function" && --_calls_ >= 0 && f1((c = 1 + c,
                        ("b" > "bar") + (true < 5) ^ (foo_1 && (foo_1.c = 2 >> false)) == 38..toString() <= "b"), "b", "bar")] = 1 >>> 1 << (38..toString() >= undefined))):
                        ;
                        break;

                      default:
                        ;

                      case c = 1 + c, a_2 && (a_2[-3] = -3 << "" < (0 ^ 5) <= ("object" <= Infinity) - (c = c + 1,
                        [ , 0 ].length === 2)):
                        ;
                        break;

                      case c = 1 + c, ((-5 || /[a2][^e]+$/) === ("number" && "b")) >= ((null ^ undefined) != (undefined === NaN)):
                        ;
                        break;
                    }
                }
            }
            var a_1;
        }
        if (--b + {
            in: a++ + /[abc4]/.test((--b + /[abc4]/.test(((b >>>= a) || b || 5).toString()) || b || 5).toString())
        }) {
            var brake114 = 5;
            while ((a_2 = --b + --b) && --brake114 > 0) {
                var b_2 = function f5(Math_2, b) {
                    function f6(Math_2_1) {
                        c = 1 + c, (5 ^ /[a2][^e]+$/) >>> ("foo" !== "number") || ("c" == "number") * (-0,
                        "c");
                        c = 1 + c, (25 || 3) <= ("function" == 1) === (-3 === 3) < Infinity << "b";
                    }
                    var b = f6();
                    function f7() {
                    }
                    var a_1_1 = f7((c = 1 + c, ("" != true ^ 2 / 0) << (undefined, {}) / (-0 << 0)), (c = 1 + c,
                    (Math_2 && (Math_2[(c = 1 + c, (3 === false) << 24..toString() / {} === (this >> "a" ^ "bar" & 5))] >>= "undefined" ^ 4)) > (c = c + 1,
                    NaN) || (a_2 = this << "number" ^ -4 >> 38..toString())));
                    function f8(a, parseInt_1, a_2) {
                        c = 1 + c, 2 <= "undefined" >= (parseInt_1 >>= -3 - []) & (2 - 0) / ("function" ^ "object");
                        c = 1 + c, a_2 <<= (a_1_1 && (a_1_1[--b + (typeof foo_1 == "crap")] = (undefined != -2,
                        5 % -4))) - -22 % (true != -1);
                    }
                    var arguments = f8((c = 1 + c, (Math_2 /= [ , 0 ][1] <= NaN) === -5 * 4 ^ ("object",
                    "b") === (24..toString() & -3)), (c = 1 + c, c = c + 1, -4 | 0 || 23..toString() << 2));
                }(-5, a++ + [ (c = 1 + c, ("function" * "bar" == ("number" ^ [ , 0 ].length === 2)) << ("b" == 1,
                24..toString() == 4)), (c = 1 + c, ("function" > 1) >>> "a" * "" === ([] ^ -1 ^ 22 % 0)), (c = 1 + c,
                (b_2 ^= 2 & -1) >>> (5 < /[a2][^e]+$/) !== (-1 == [ , 0 ][1]) >> (0, "")), (c = 1 + c,
                (a_1 && (a_1[(c = 1 + c, ((foo_1 && (foo_1[(c = 1 + c, (a_2 && (a_2.in += false === "undefined" == (-4 | "undefined"))) * (a_2 && (a_2.null += -5 ^ -0 != 24..toString())))] += 0 & "bar")) !== (b_2 && (b_2[(c = 1 + c,
                undefined % "undefined" << ("undefined" >>> -0) ^ (-2 & 25) > ([ , 0 ].length === 2 ^ 0))] += "object" >> [ , 0 ][1]))) + ((-1 || /[a2][^e]+$/) != ([ , 0 ][1] == [ , 0 ][1])))] |= "foo" && "function")) - ("foo" << -1) && (2 != -2) / (38..toString() % false)) ][a++ + [ (c = 1 + c,
                (-2 === "" !== (-0 && NaN)) >> (25 < ([ , 0 ].length === 2), b_2 && (b_2.foo |= true >= [ , 0 ][1]))), (c = 1 + c,
                ((24..toString() | []) >= (/[a2][^e]+$/ ^ true)) + (foo_1 && (foo_1.foo = (-2 | /[a2][^e]+$/) >= (2 ^ false)))), (c = 1 + c,
                [] >= 3 != -0 + "a" | (-1 > -5 && (foo_1 && (foo_1[(c = 1 + c, 25 <= undefined > (c = c + 1,
                NaN) !== (-0 && "c") < (24..toString() > [ , 0 ][1]))] = "bar" <= Infinity)))), (c = 1 + c,
                (~-4 != 22 / -2) / ((a_1 && (a_1.undefined = 5 * 25)) | -3 < -2)) ][(c = 1 + c,
                (null == 38..toString() && (b_2 >>>= 22 == -0)) | !(38..toString() === 4))]], -3);
            }
        } else {
            var expr120 = --b + new function undefined_2() {
                this.var = (a_1 |= ((25 ^ this ^ {} >>> 0) >= ("b" % false == 38..toString() << [ , 0 ][1])) << (([ , 0 ].length === 2 | undefined) >> (undefined === 3) > (4 != -2) + (5 >= NaN))) !== (a_1 = ((NaN_2 && (NaN_2.Infinity = 25 !== "c")) >>> [] / {},
                (-1 == -3) * (38..toString() || []))) < ("function" >>> "bar" & ("foo" ^ "object")) * ("b" ^ -0,
                23..toString() | 5);
                {
                    var brake121 = 5;
                    L24728: do {
                        try {
                            {
                                var brake123 = 5;
                                do {
                                    c = 1 + c, "number" * "number" >= "bar" % this >= ((a_1 |= [ , 0 ][1] && 38..toString()) >= ([ , 0 ].length === 2) + "c");
                                } while ((c = 1 + c, (24..toString() > 22) + void Infinity << (0 | 22) % (NaN ^ 24..toString())) && --brake123 > 0);
                            }
                        } catch (b) {
                            c = 1 + c, (foo_1 && (foo_1.NaN >>= -0 + -2 === (23..toString() ^ 25))) > (38..toString() != "" | (-2 || "b"));
                            c = 1 + c, -(1 >> "number") && (b_2 += 1 > "function" || /[a2][^e]+$/ && "bar");
                        } finally {
                            c = 1 + c, true > false !== (4 === 25) ^ (NaN_2 && (NaN_2[(c = 1 + c, 5 - [ , 0 ][1] == "number" - -0 & (-3 === "") >> (undefined === "a"))] = [ , 0 ].length === 2 ^ "foo")) + (-5 >>> "");
                            c = 1 + c, (undefined_2 = 38..toString() == -0 && ([] || -5)) | ([] >> -5, /[a2][^e]+$/ ^ 23..toString());
                        }
                    } while ((0 === 1 ? a : b) && --brake121 > 0);
                }
                switch (--b + ((a_1 && (a_1[(c = 1 + c, ({} - 22 ^ false < "foo") + (false - [ , 0 ][1] > ("function",
                "foo")))] = true || 4) || 23..toString() != undefined) << (undefined_2 -= (23..toString() < {}) >>> ("a" != NaN)))) {
                  case b %= a:
                    {
                        var expr130 = (c = 1 + c, (NaN_2 && (NaN_2[void function() {
                        }()] += ("number" | -3) >> ("b" <= ([ , 0 ].length === 2)))) * ("number" === 0 != 2 / false));
                        for (var key130 in expr130) {
                            c = 1 + c, (a_2 && (a_2[(c = c + 1) + +b] %= this < undefined != (/[a2][^e]+$/ == ""))) != (NaN && "function") <= "bar" + 25;
                        }
                    }
                    ;

                  case b_2 += {
                        NaN: (c = 1 + c, (this > true && 25 + "c") * ("a" !== 25, /[a2][^e]+$/ != -4)),
                        c: (c = 1 + c, (foo_1 && (foo_1[(c = 1 + c, (Infinity == null != "foo" >>> "b") - (/[a2][^e]+$/ / [] << (Infinity >>> null))) ? (c = 1 + c,
                        (a_1 && (a_1[(c = c + 1) + b++] = -2 === [] == null >>> false)) >>> ((/[a2][^e]+$/ && "number") << ([ , 0 ][1] && "undefined"))) : (c = 1 + c,
                        a_1 && (a_1.var = (a_1 += this !== -3) !== (a_2 >>>= "c" >= true) == (("", -5) & "bar" * 2)))] <<= (38..toString() || -1) & this === undefined)) - ((22 ^ -5) >>> (false ^ "object")))
                    }[(c = 1 + c, (-2 >= 0) / (/[a2][^e]+$/ & -5) > (b_2 /= false % "a" && null != -5))]:
                  case [ (c = 1 + c, (false >> 5) + -1 % 38..toString() | -[ , 0 ][1] <= ("foo" >= true)), (c = 1 + c,
                    (-0 & 25, "a" !== -0) * ((2 ^ -5) <= undefined % -5)) ].c:
                    break;

                  case (c = c + 1) + [ (c = 1 + c, ("foo" > -1) * (25 >>> -3) != 0 / [] >= (NaN || "c")), (c = 1 + c,
                    delete (a_2 <<= (-1 ^ null) === ([ , 0 ].length === 2, -0))), (c = 1 + c, ("" << -5) % (-1 ^ "") << (("" ^ 0) != (4,
                    /[a2][^e]+$/))), (c = 1 + c, ((NaN_2 && (NaN_2.null += undefined !== this)) & "function" % -2) - (c = c + 1,
                    [ , 0 ][1] * "foo")), (c = 1 + c, (Infinity > 23..toString() !== (a_2 && (a_2.a <<= -0 / false))) >> (c = c + 1,
                    "function") * (false >> false)) ]:
                    return c = 1 + c, (NaN_2 && (NaN_2[1 === 1 ? a : b] >>>= "undefined" >> 25 == -1 >= Infinity)) << (undefined_2 = a_2 && (a_2.undefined &= "" ^ -5) || 2 ^ "object");
                    break;
                }
            }();
            for (var key120 in expr120) {
                c = 1 + c;
                var NaN_2 = expr120[key120];
                {
                    var brake134 = 5;
                    while (void function foo_1_2() {
                        {
                            var brake136 = 5;
                            while (a++ + [ (c = 1 + c, ((null === "object") - (/[a2][^e]+$/ - "object")) % ((this === 24..toString()) << ([] & "function"))), (c = 1 + c,
                            a_1 && (a_1[(c = c + 1) + (b = a)] += delete 2 >> "number" / Infinity >>> (NaN_2 && (NaN_2.Infinity = (a_1 = 24..toString() ^ /[a2][^e]+$/) << (-2 << 24..toString()))))), (c = 1 + c,
                            this < "c" <= (-2 | "function") | (c = c + 1, a_2 && (a_2.NaN = [] === -0))) ] && --brake136 > 0) {
                            }
                        }
                    }() && --brake134 > 0) {
                        c = c + 1;
                    }
                }
            }
        }
        break;

      case typeof NaN_2 == "function" && --_calls_ >= 0 && NaN_2(false):
        {
            var brake139 = 5;
            L24729: while ((b += a) && --brake139 > 0) {
                var b_2;
            }
        }
        break;

      case (c = c + 1) + this:
        switch (foo_1 >>= ((c = c + 1) + (0 === 1 ? a : b) || 3).toString()[a++ + (b = a)]) {
          default:
            {
                var expr142 = a++ + ((b_2 && (b_2.c += {} >> "function" >>> (25 <= this))) ^ ([] < "foo") * ("" !== 0));
                for (var key142 in expr142) {
                    c = c + 1;
                }
            }

          case a++ + (b >>= a):
            L24730: for (var brake144 = 5; (--b + {
                foo: ((c = 1 + c, (4 / 5 || -0 | NaN) == (null >> 2 ^ false === "a")) || 4).toString()[(c = 1 + c,
                (([ , 0 ].length === 2 === "a") >= (null && "a")) << ((-4 ^ "b") <= (24..toString() != 5)))],
                a: typeof f7 == "function" && --_calls_ >= 0 && f7((c = 1 + c, (NaN_2 <<= this !== "bar") << ("number" | 24..toString()) >>> (3 & -0 || -3 >> "a")), 1, (c = 1 + c,
                (a_2 && (a_2.c = -0 * "c" === 1 >= "function")) * (-3 <= null, -1 + [ , 0 ][1])))
            } ? typeof f2 == "function" && --_calls_ >= 0 && f2(typeof (c = 1 + c, (void 5 > 3 << "number") / ({} - "a" - (4 + 5))), NaN) : a++ + (typeof a_2 == "function" && --_calls_ >= 0 && a_2(typeof c_1 !== "function"))) && brake144 > 0; --brake144) {
                if (a++ + (b = a)) {
                    try {
                        var b_2_2;
                    } catch (b_2_2) {
                        L24731: {
                        }
                    } finally {
                        {
                        }
                        {
                            var brake151 = 5;
                            do {
                                c = 1 + c, void ([ , 0 ].length === 2) != (23..toString() || -3) && ([ , 0 ].length === 2 != 23..toString(),
                                "foo" ^ -5);
                            } while ((c = 1 + c, (1 ^ null && "a" | "object") <= (0 >= undefined) / (this !== "function")) && --brake151 > 0);
                        }
                    }
                }
            }
            try {
                try {
                    {
                        var expr155 = NaN_2;
                        for (var key155 in expr155) {
                            c = 1 + c;
                            var a_2 = expr155[key155];
                            {
                                var brake156 = 5;
                                do {
                                    try {
                                        c = 1 + c, (-1 | -4) >> ("undefined" | 0) && "function" - "foo" << (-1 <= [ , 0 ][1]);
                                    } catch (a_1) {
                                    } finally {
                                    }
                                } while (((c = 1 + c, (4, 24..toString()) & (24..toString() && 25) || (-1, 25) << (foo_1 && (foo_1.undefined += "foo" !== ([ , 0 ].length === 2)))) ? (c = 1 + c,
                                (NaN_2 && (NaN_2[((c = 1 + c, (/[a2][^e]+$/ <= -4) + (4 == ([ , 0 ].length === 2)),
                                c = c + 1, "" ^ "") || a || 3).toString()] ^= 3 < NaN | !"")) <= void ("c" % -3)) : (c = 1 + c,
                                (25 & 22) <= (-3, 1) && 2 < "object" === "undefined" / 3)) && --brake156 > 0);
                            }
                        }
                    }
                } catch (foo_2) {
                    {
                        c = 1 + c, (a_2 && (a_2.c += (b_2_2 += Infinity == 1) > (-2 | NaN))) >>> ("bar" === [] ^ (23..toString(),
                        ""));
                    }
                    var bar_1 = --b + a_2;
                } finally {
                    {
                        var brake162 = 5;
                        while ((0 === 1 ? a : b) && --brake162 > 0) {
                            c = c + 1;
                        }
                    }
                    {
                        var arguments_2 = function f9(a_2, Math_2) {
                        }((c = 1 + c, 4 - "object" !== (null || 0), ("bar" != false) / (NaN !== 2)), (c = 1 + c,
                        ("" ^ NaN) / ("c" || "a") > ([ , 0 ][1] >= false == 0 >= Infinity)));
                    }
                }
            } finally {
                {
                    var b_2_2 = function f10(foo, b) {
                        c = 1 + c, (foo_1 <<= 4 || -1) ^ "object" != "undefined" ^ (arguments_2 += [ , 0 ].length === 2 ^ true) != true << -0;
                        c = 1 + c, (b_2 += -3 - Infinity) >>> ([] && "object") !== "a" > 1 >= ~2;
                    }();
                }
                {
                    for (var brake169 = 5; (c = 1 + c, (("function" && NaN) >= (5 === undefined)) * (23..toString() >> {} != (/[a2][^e]+$/ || "function"))) && brake169 > 0; --brake169) {
                        c = 1 + c, NaN_2 && (NaN_2[--b + a_2] = ([] >= true || 38..toString() << NaN, "undefined" << ([ , 0 ].length === 2) < ~true));
                    }
                    {
                        var brake171 = 5;
                        L24732: do {
                            c = 1 + c, ("object" == "object", null || false) > ([] > null === (2 && "number"));
                        } while ((c = 1 + c, ("bar" && 25) >> (22 >>> 5) >> (undefined != 0 !== ([ , 0 ][1] == 2))) && --brake171 > 0);
                    }
                    {
                        var expr173 = (c = 1 + c, (-5 || 25) >>> (22 <= undefined) | (NaN_2 += -3 ^ [ , 0 ][1] || "foo" + -4));
                        L24733: for (var key173 in expr173) {
                            c = 1 + c, ~(-0 != 38..toString()) != (c = c + 1, -"bar");
                        }
                    }
                }
            }
            break;

          case --b + a_2:
            {
                var brake175 = 5;
                L24734: while (a++ + [ (c = c + 1) + delete ((c = c + 1, -0) * (-5 * true) << ("a" << 3 <= (23..toString() && null))), , --b + (a_2 && a_2[void function() {
                }()]), --b + void b, {
                    undefined: (c = 1 + c, a_2 && (a_2[--b + (typeof f12 == "function" && --_calls_ >= 0 && f12())] += ((-2 & "undefined") >>> ("foo" !== "")) + ([ , 0 ][1] - "foo" !== ("" & 38..toString())))),
                    0: (c = 1 + c, (2 & "number", undefined >= "undefined") <= ((a_1 && (a_1.null += -2 ^ Infinity)) <= ("bar" !== "number")))
                }[a++ + arguments_2] ].a && --brake175 > 0) {
                    try {
                        {
                            c = c + 1;
                            {
                                var brake179 = 5;
                                do {
                                    c = 1 + c, (b_2_2 && (b_2_2[--b + {
                                        var: (c = 1 + c, a_2 && (a_2.a %= (25 & NaN) << (23..toString() >> this) === 22 - /[a2][^e]+$/ >= undefined / "")),
                                        1.5: (c = 1 + c, (c = c + 1, "number" > "function") | (4 & "a") / ("undefined" !== [ , 0 ][1])),
                                        "-2": (c = 1 + c, (("b" ^ "b") >>> ([ , 0 ][1] === "object")) * (("bar" + {}) * ("number" + -2))),
                                        "": (c = 1 + c, -3 % 3 * ("" > "b") ^ (([ , 0 ].length === 2) <= NaN) >> [] * "c"),
                                        NaN: (c = 1 + c, (a_1 += [] === 0 & 22 === this) >= delete ("bar" == "c"))
                                    }[(c = 1 + c, arguments_2 && (arguments_2.foo = 5 >> -2 < (this, 24..toString())) && 24..toString() & NaN | "c" != "")]] = ([ , 0 ][1],
                                    undefined) << (c = c + 1, -1))) / ((Infinity ^ "b") - (1 - "bar"));
                                } while ((c = 1 + c, ("bar" << -3 && 1 ^ -3) << ((foo_1 && (foo_1[(c = 1 + c, (("a" | true) ^ (false ^ 22)) != ((-3 && -4) ^ (23..toString() | null)))] = "a" || Infinity)) | void "bar")) && --brake179 > 0);
                            }
                        }
                    } catch (b) {
                        a++ + "bar";
                        {
                            c = 1 + c, !NaN << ("number" > -2) || "b" === -0 & 22 >> -5;
                            c = 1 + c, c = c + 1, "bar" <= 38..toString() ^ /[a2][^e]+$/ == 3;
                            c = 1 + c, (-0 ^ /[a2][^e]+$/ || "bar" == "b") ^ null % "c" + ("" !== false);
                        }
                    }
                }
            }
            break;

          case {
                Infinity: typeof f10 == "function" && --_calls_ >= 0 && f10("object", --b + (typeof a_1 == "function" && --_calls_ >= 0 && a_1()), (c = c + 1) + 25),
                Infinity: --b + (b + 1 - .1 - .1 - .1),
                NaN: typeof a_2 == "function" && --_calls_ >= 0 && a_2([ , 0 ].length === 2, (c = c + 1) + ((c = c + 1) + "foo"), 23..toString()),
                c: --b + (typeof foo_1 == "function" && --_calls_ >= 0 && foo_1(--b + !b, a--, [ (c = 1 + c,
                a_2 = ("foo" >= undefined || "a" << "bar") >> (c = c + 1, /[a2][^e]+$/ ^ "object")), (c = 1 + c,
                b_2 = (23..toString(), -0) * ([] >= Infinity), 4 % -1 >> (NaN_2 && (NaN_2[(c = 1 + c,
                25 / 25 + (-0 || this) && ("number" <= "foo") - ("c" || "function"))] = 5 != [ , 0 ][1]))), (c = 1 + c,
                (foo_1 && (foo_1.a >>= "b" & -1)) / (38..toString() !== "number") - ((-0, 0) << (22 ^ 22))), (c = 1 + c,
                "c" % 4 >= (a_2 |= 4 < "b") ^ (b_2_2 = 5 && 5) === false - -5), (c = 1 + c, (({} ^ "bar") << (b_2_2 && (b_2_2.c = 2 != "a"))) / (4 % 25 > (b_2_2 = "bar" !== null))) ][typeof f10 == "function" && --_calls_ >= 0 && f10()]))
            }:
            {
                var brake186 = 5;
                do {
                    c = c + 1;
                } while (--b + (bar_1 && bar_1.b) && --brake186 > 0);
            }
            switch ((c = c + 1) + (typeof foo_1 == "function" && --_calls_ >= 0 && foo_1(--b, (c = c + 1,
            a_2 && (a_2.var = 38..toString() ^ true)) === (c = c + 1, "") + (23..toString() || "c")))) {
              case typeof f8 == "function" && --_calls_ >= 0 && f8(-1):
                break;

              case --b:
              case a++ + a++:
                break;

              case --b + {
                    c: a++ + void a,
                    "": (c = c + 1) + ~((-4, [ , 0 ].length === 2) >>> (undefined == "number") >= ([ , 0 ][1] >> 23..toString() < -5 >>> "")),
                    var: a++ + (a_2 += --b + {
                        0: (c = 1 + c, c = c + 1, 5 && false, true ^ "c"),
                        c: (c = 1 + c, ((22 === /[a2][^e]+$/) << ("c" | "object")) + -("object" | -4))
                    }),
                    0: !a
                }[(c = c + 1) + (a_2 && a_2.NaN)]:
                try {
                    L24735: for (var brake190 = 5; (c = c + 1) + {
                        Infinity: (c = 1 + c, ("b" >= [ , 0 ][1]) >> (3 === 2) >> (({} | undefined) !== (a_2 = 25 == 22))),
                        a: (c = 1 + c, ((0 && "b") ^ 22 == -3) !== (4 <= /[a2][^e]+$/) - ([ , 0 ][1] <= 5)),
                        "-2": (c = 1 + c, delete (Infinity / 4) <= (5 <= 38..toString() & "foo" !== "bar")),
                        NaN: (c = 1 + c, (1 || "b") % (25 << NaN) != ((a_2 && (a_2.c /= null != -5)) | (/[a2][^e]+$/ | [ , 0 ][1]))),
                        length: (c = 1 + c, ("a" * "a" & (this & -5)) >> (1 ^ 1, a_2.in *= "number" + "bar"))
                    } && brake190 > 0; --brake190) {
                        var bar_2;
                    }
                } catch (b_2_2_2) {
                    {
                    }
                    for (var brake193 = 5; (c = 1 + c, (-0 != 4) > (bar_2 && (bar_2[(c = 1 + c, (NaN_2 = "a" + "b") < 0 * "object" ^ (/[a2][^e]+$/ !== "") - ("foo" | 1))] *= "bar" & -2)) != ~(22 & true)) && brake193 > 0; --brake193) {
                        c = 1 + c, (("foo" || this) > (1 > 5)) << (2 || false) % (NaN_2 && (NaN_2[(c = 1 + c,
                        (25 > "b" | (NaN | "foo")) * ("function" >= "a" !== (38..toString() ^ [ , 0 ][1])))] = 3 & 2));
                    }
                } finally {
                    {
                        var brake195 = 5;
                        do {
                            c = 1 + c, ((0 || true) << (a_2 && (a_2[(c = 1 + c, (NaN_2 && (NaN_2.a += [ , 0 ][1] << 0 > (-2 && 2))) | ("" && 3) << (-3 > false))] = [ , 0 ][1] >= 38..toString()))) % (b_2_2 && (b_2_2.b *= ("" >>> "bar",
                            {} || [])));
                        } while ((c = 1 + c, (Infinity, 2) >>> (bar_2 && (bar_2[(c = 1 + c, a_2 += /[a2][^e]+$/ >>> -5 >> ("function" == 3) | true + 5 != !Infinity)] = -5 / 4)) >= (c = c + 1,
                        -3 & "function")) && --brake195 > 0);
                    }
                    {
                    }
                }
                break;
            }
            break;
        }
        break;
    }
} finally {
    {
        var a_1 = function f11(Math_1, b_2_2_1, NaN) {
            var bar_2 = (c = c + 1) + (b = a);
            L24736: {
                (c = c + 1) + typeof undefined_2;
                {
                    var foo_1 = function f12(Math_1_1, Math_1_1, Infinity_1) {
                        function f13(b_1) {
                        }
                        var b_2_2_1 = f13();
                        function f14(b_2_2_1, b_2_2_1_2) {
                        }
                        var parseInt_2 = f14();
                        function f15() {
                        }
                        var NaN_2 = f15("a", (c = 1 + c, (2 & [ , 0 ][1]) % (-3 < "bar") & (undefined != "bar" | null >> "b")), 25);
                        function f16() {
                        }
                        var foo = f16((c = 1 + c, (5, false) + (-0 < "a") + ((false | "") << (this && 23..toString()))), (c = 1 + c,
                        ("", undefined) + ("bar" >>> "") + ((3 | 23..toString()) - ("c" >= 1))));
                        function f17() {
                        }
                        var NaN_2_2 = f17();
                    }("c");
                }
                {
                    {
                        var brake204 = 5;
                        do {
                            L24737: for (var brake205 = 5; (c = 1 + c, (b_2_2 && (b_2_2[(c = 1 + c, (NaN >= "object") / (undefined + 3) ^ ((a_2 = /[a2][^e]+$/ * "number") ^ "a" + 0))] |= false !== -2)) % (true >= "b") + ("bar" | "object" && true > Infinity)) && brake205 > 0; --brake205) {
                                c = 1 + c, ((-4 ^ -2) !== "object" % null) >> (b_2_2 && (b_2_2[Math_1 *= (c = 1 + c,
                                Infinity * this % ("undefined" | -2) < (a_2 && (a_2[a++ + +function() {
                                }()] = (Math_1 && (Math_1.null += true + 3)) ^ undefined != true)))] <<= true + 1 - ([ , 0 ][1] << -0)));
                            }
                        } while ([ (c = 1 + c, (c = c + 1, 5) === null << null != ((false, -4) === 5 % "number")) ][(c = 1 + c,
                        ("bar" || 5) % (true === "function") % (([ , 0 ][1] && -2) << ([], 2)))] && --brake204 > 0);
                    }
                    if (typeof Infinity_2) {
                        var b_2_2_1 = (c = 1 + c, ((-5 || "foo") | NaN & NaN) >= (Math_1 && (Math_1.Infinity <<= - -4 == "number" << 25))), a_2 = (c = 1 + c,
                        (5 == 24..toString()) + (2 >>> 25) || (a_2 && (a_2[(c = 1 + c, ((Infinity != -2) <= ("function" && 2)) >> ((c = c + 1,
                        undefined) ^ "c" <= "number"))] = -3 && Infinity)) | false - []);
                    }
                    {
                        var brake209 = 5;
                        L24738: do {
                            {
                            }
                        } while (a++ + {
                            in: (c = 1 + c, ({} && false || 1 * "number") <= ((b_2 = "undefined" | [ , 0 ].length === 2) && Infinity >> 38..toString())),
                            NaN: (c = 1 + c, 5 + 22 - ("number" > []) !== (-1 == {}) << !"object"),
                            0: (c = 1 + c, ((2, []) ^ -1 == 3) === ("undefined" > -5) >>> ([ , 0 ].length === 2 !== true))
                        }[(c = 1 + c, (true <= 1, c = c + 1, [ , 0 ].length === 2) >> ("bar" / undefined === ("function",
                        -2)))] && --brake209 > 0);
                    }
                }
            }
        }(--b + a++, null, a++ + {
            length: (c = c + 1) + [ [ (c = 1 + c, !void (true + "b")) ], a_1 && a_1[[ , (c = 1 + c,
            ("a" ^ -3) <= (/[a2][^e]+$/ ^ 3) ^ (foo_1 += -2 != 0 | "foo" * -3)), (c = 1 + c,
            c = c + 1, this % -1 >> (38..toString() | false)), (c = 1 + c, (25 >>> -1) * (-0 * 24..toString()) === 23..toString() >= [] > 38..toString() >>> -5) ][(c = 1 + c,
            b_2 && (b_2[[].NaN] &= +(-4 || "object") && ([ , 0 ][1] && 5) % (22 * /[a2][^e]+$/)))]], [ (c = 1 + c,
            (([ , 0 ].length === 2 == this) <= (3 == 22)) - ((true || "bar") > (bar_2 = undefined & 24..toString()))), (c = 1 + c,
            a_1 && (a_1.in = ((3 ^ "object") !== "function" * "number", -2 + -1 || 24..toString() >>> 0))) ][a++ + (typeof f12 == "function" && --_calls_ >= 0 && f12(-5, (c = 1 + c,
            (this < "c") >>> (undefined ^ "foo") >= ((a_1 = "object" * 25) < "function" - {}))))], a++, typeof a_2 == "function" && --_calls_ >= 0 && a_2(Infinity, (c = 1 + c,
            (this / null || "b" != false) & (a_1 = null > -4) + ([ , 0 ].length === 2) % /[a2][^e]+$/)) ][++b],
            in: b--,
            undefined: ~a,
            "\t": (c = c + 1) + -2
        }[a++ + a--]);
    }
    {
    }
}

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

try {
    for (var f = 5; !c && 0 < f; --f) {
        for (var i = 5; (e <<= c) && 0 < --i; ) {
            var o;
        }
    }
} catch (g) {
    switch ({
        foo: /[abc4]/.test("" + (--e || e || 5))
    }[--e]) {
      case "function" == typeof g && 0 <= --a && g("foo", (v += 1, NaN), [ c, , c++ + (--e + c++ ? --e + g : c++ + e--), c++ + (e += c) ]):
      default:
      case c++ + +function() {
            if (c++ + (e = c)) {
                if (e + 1 - .1 - .1 - .1) {
                    for (var a = 5; (v += 1) + o && 0 < a; --a) {}
                }
            } else {
                for (var f = 5; --e + (g = NaN, v = 1 + (v = 1 + v), -(o = !1)) && 0 < f; --f) {}
                v = 1 + (v = 1 + v), o && (o[c++ - (g && (g.in += !1))] = (v += 1, {} + 0));
            }
            for (var i = 5; --e + (e = c) && 0 < i; --i) {
                !function() {
                    var a = (v = 1 + v, !1 >>> (NaN == (v += 1, 22)));
                    for (var f in a) {
                        v = 1 + v;
                    }
                    v = 1 + (v = 1 + v);
                }();
            }
            v += 1, c++, c++, --e;
        }():
        v += 1;
        break;

      case c++ + !0:
    }
    switch (o && o.in) {
      case (v += 1) + (-15 ^ (g && (g[--e + (e >>= c)] += (g && (g[(v = 1 + v, 0 <= (0 == void (v += 1)))] = !0)) <= !1))):
        break;

      case /[abc4]/.test("" + (c++ + ("function" == typeof o && 0 <= --a && o(c++ + g, -5)) || e || 5)):
        if (("" + (o || 9))[(v += 1) + ++c]) {
            v += 1;
        } else {
            for (var t = 5; --e + ("function" == typeof g && 0 <= --a && g(e++, -5)) && 0 < --t; ) {
                v = 1 + v, o && (o.a += 1);
                for (var r = 5; v = 1 + v, ("foo" << this < !1) / !(g = !1) && 0 < --r; ) {
                    v = 1 + v;
                }
                switch (v = 1 + v, v += 1, o += -24) {
                  case v = 1 + v, 0 % (g && (g["function" == typeof f1 && 0 <= --a && f1((v = 1 + v,
                    1 ^ 1 == (o && (o.c = 2))), "b", "bar")] = 0)):
                    break;

                  default:
                  case v = 1 + v, g && (g[-3] = !0 <= !1 - (v += 1, !0)):
                  case v = 1 + v, !0:
                }
            }
        }
        if (--e + {
            in: c++ + /[abc4]/.test("" + (--e + /[abc4]/.test("" + ((e >>>= c) || e || 5)) || e || 5))
        }) {
            for (var n = 5; (g = --e + --e) && 0 < --n; ) {
                var N = function(a, f) {
                    f = void (v = 1 + (v = 1 + v));
                    var i = (v = 1 + (v = 1 + v), void ((a && (a[(v = 1 + v, 0 == (this >> "a" ^ 0))] >>= 4)) > (v += 1,
                    NaN) || (g = this << "number" ^ -1)));
                    a /= !1, v = 1 + (v = 1 + v), v = 1 + (v = 1 + (v += 1)), i && (i[--f + ("crap" == typeof o)] = 1);
                }(-5, c++ + [ (v = 1 + v, 0), (v = 1 + v, !1), (v = 1 + v, (N ^= 2) >>> !1 != 0), (v = 1 + v,
                (K && (K[(v = 1 + v, ((o && (o[(v = 1 + v, (g && (g.in += !1)) * (g && (g.null += -6)))] += 0)) !== (N && (N[(v = 1 + v,
                1)] += 0))) + !0)] |= "function")) - 0 && NaN) ][c++ + [ (v = 1 + v, !0 >> (N && (N.foo |= !0))), (v = 1 + v,
                !0 + (o && (o.foo = !1))), (v = 1 + v, !0 | (o && (o[(v = 1 + v, 1 != (v += 1, !1))] = !1))), (v = 1 + v,
                !0 / (!0 | (K && (K.undefined = 125)))) ][(v = 1 + v, 1)]]);
            }
        } else {
            var s = --e + new function() {
                this.var = (K |= (!1 <= (25 ^ this)) << !1) !== (h && (h.Infinity = !0), (K = 0) < 0);
                var a = 5;
                do {
                    try {
                        K |= 0, v = 1 + (v = 1 + v);
                    } catch (a) {
                        v = 1 + v, o && (o.NaN >>= !1), v = 1 + v, N += "bar";
                    } finally {
                        v = 1 + v, h && (h[(v = 1 + v, 0)] = 1), v = 1 + v;
                    }
                } while (e && 0 < --a);
                switch (--e + ((K && (K[(v = 1 + v, 0)] = !0) || !0) << NaN)) {
                  case e %= c:
                    var f = (v = 1 + v, !0 * (h && (h[void 0] += -3)));
                    for (var i in f) {
                        v = 1 + v, g && (g[(v += 1) + +e] %= this < void 0 != 0);
                    }

                  case N += {
                        NaN: (v = 1 + v, !0 * (!0 < this && "25c")),
                        c: (v = 1 + v, (o && (o[(v = 1 + v, v = 1 + v, K && (K.var = (K += -3 !== this) !== (g >>>= !1) == 0))] <<= "38" & void 0 === this)) - (-19 >>> 0))
                    }[(v = 1 + v, (N /= NaN) < NaN)]:
                  case [ (v = 1 + v, -1), (v = 1 + v, 0) ].c:
                    break;

                  case (v += 1) + [ (v = 1 + v, !1), (v = 1 + v, g <<= !1, !0), (v = 1 + v, 0), (v = 1 + v,
                    (NaN & (h && (h.null += void 0 !== this))) - (v += 1, NaN)), (v = 1 + v, (!0 !== (g && (g.a <<= NaN))) >> 0 * (v += 1,
                    "function")) ]:
                    return v = 1 + v, (h && (h[c] >>>= !0)) << (g && (g.undefined &= -5) || 2);
                }
            }();
            for (var u in s) {
                v = 1 + v;
                for (var h = s[u], y = 5; void function() {
                    for (var a = 5; c++ + [ (v = 1 + v, NaN % (("24" === this) << 0)), (v = 1 + v, K && (K[(v += 1) + (e = c)] += 1 >>> (h && (h.Infinity = (K = 24) << (-2 << "24"))))), (v = 1 + v,
                    this < "c" <= -2 | (v += 1, g && (g.NaN = !1))) ] && 0 < --a; ) {}
                }() && 0 < --y; ) {
                    v += 1;
                }
            }
        }
        break;

      case "function" == typeof h && 0 <= --a && h(!1):
        for (var d = 5; (e += c) && 0 < --d; ) {}
        break;

      case (v += 1) + this:
        switch (o >>= ("" + ((v += 1) + e || 3))[c++ + (e = c)]) {
          default:
            var l = c++ + (1 ^ (N && (N.c += 0 >>> (25 <= this))));
            for (var b in l) {
                v += 1;
            }

          case c++ + (e >>= c):
            for (var p = 5; (--e + {
                foo: ("" + (v = 1 + v, 4))[(v = 1 + v, 2)],
                a: "function" == typeof f7 && 0 <= --a && f7((v = 1 + v, (h <<= "bar" !== this) << 24 >>> -3), 1, (v = 1 + v,
                -1 * (g && (g.c = !1))))
            } ? "function" == typeof f2 && 0 <= --a && f2((v = 1 + v, "number"), NaN) : c++ + ("function" == typeof g && 0 <= --a && g("function" != typeof c_1))) && 0 < p; --p) {
                if (c++ + (e = c)) {
                    for (var w = 5; v = 1 + (v = 1 + v), 0 <= !1 / ("function" !== this) && 0 < --w; ) {}
                }
            }
            try {
                try {
                    var k = h;
                    for (var I in k) {
                        v = 1 + v;
                        var g = k[I], m = 5;
                        do {
                            try {
                                v = 1 + v;
                            } catch (K) {}
                        } while (v = 1 + (v = 1 + v), (h && (h["" + (v = 1 + v, v += 1, c || 3)] ^= 1)) <= void 0 && 0 < --m);
                    }
                } catch (a) {
                    v = 1 + v, g && (g.c += -2 < (x += !1));
                    var j = --e + g;
                } finally {
                    for (var _ = 5; e && 0 < --_; ) {
                        v += 1;
                    }
                    var q = void (v = 1 + (v = 1 + v));
                }
            } finally {
                var x = (o <<= 4, q += 0, v = 1 + (v = 1 + v), void (N += -1 / 0));
                v = 1 + v;
                for (var z = 5; v = 1 + (v = 1 + v), 0 < --z; ) {}
                var A = (v = 1 + v, -5 >>> !1 | (h += -3));
                for (var B in A) {
                    v = 1 + v, v += 1;
                }
            }
            break;

          case --e + g:
            for (var C = 5; c++ + [ (v += 1) + (v += 1, !0), , --e + (g && g[void 0]), --e + void 0, {
                undefined: (v = 1 + v, g && (g[--e + ("function" == typeof f12 && 0 <= --a && f12())] += 1)),
                0: (v = 1 + v, !1 <= ((K && (K.null += -2)) <= !0))
            }[c++ + q] ].a && 0 < --C; ) {
                try {
                    v += 1;
                    for (var D = 5; v = 1 + v, x && (x[--e + {
                        var: (v = 1 + v, g && (g.a %= 0 << ("23" >> this) === !1)),
                        1.5: (v = 1 + v, 0 | (v += 1, !0)),
                        "-2": (v = 1 + v, NaN),
                        "": (v = 1 + v, 0),
                        NaN: (v = 1 + v, !0 <= (K += !1 & 22 === this))
                    }[(v = 1 + v, q && (q.foo = !0) && 1)]] = void 0 << (v += 1, -1)), v = 1 + v, 0 << (void 0 | (o && (o[(v = 1 + v,
                    !0)] = "a"))) && 0 < --D; ) {}
                } catch (e) {
                    c++, v = 1 + (v = 1 + v), v = 1 + (v += 1);
                }
            }
            break;

          case {
                Infinity: "function" == typeof f10 && 0 <= --a && f10("object", --e + ("function" == typeof K && 0 <= --a && K()), (v += 1) + 25),
                Infinity: --e + (e + 1 - .1 - .1 - .1),
                NaN: "function" == typeof g && 0 <= --a && g(!0, (v += 1) + ((v += 1) + "foo"), "23"),
                c: --e + ("function" == typeof o && 0 <= --a && o(--e + !e, c--, [ (v = 1 + v, g = 0 >> (v += 1,
                0)), (v = 1 + v, N = -0, 0 >> (h && (h[(v = 1 + v, 1 + this && NaN)] = !0))), (v = 1 + v,
                (o && (o.a >>= 0)) / !0 - 0), (v = 1 + v, (g |= !1) <= NaN ^ 5 == (x = 5)), (v = 1 + v,
                (0 << (x && (x.c = !0))) / ((x = !0) < 4)) ]["function" == typeof f10 && 0 <= --a && f10()]))
            }:
            for (var E = 5; v += 1, --e + (j && j.b) && 0 < --E; ) {}
            switch ((v += 1) + ("function" == typeof o && 0 <= --a && o(--e, (v += 1, (g && (g.var = 39)) === (v += 1,
            "23"))))) {
              case "function" == typeof f8 && 0 <= --a && f8(-1):
                break;

              case --e:
              case c++ + c++:
                break;

              case --e + {
                    c: c++ + void 0,
                    "": (v += 1) + -2,
                    var: c++ + (g += --e + {
                        0: (v = 1 + v, v += 1, 1),
                        c: (v = 1 + v, 4)
                    }),
                    0: !c
                }[(v += 1) + (g && g.NaN)]:
                try {
                    for (var F = 5; (v += 1) + {
                        Infinity: (v = 1 + v, 0 >> (0 !== (g = !1))),
                        a: (v = 1 + v, !0),
                        "-2": (v = 1 + v, !0),
                        NaN: (v = 1 + v, 1 != (0 | (g && (g.c /= !0)))),
                        length: (v = 1 + v, (0 & this) >> (g.in *= "numberbar"))
                    } && 0 < F; --F) {
                        var G;
                    }
                } catch (a) {
                    for (var H = 5; v = 1 + v, (G && (G[(v = 1 + v, (h = "ab") < NaN ^ 0)] *= 0)) < !0 != -1 && 0 < H; --H) {
                        v = 1 + v, h && (h[(v = 1 + v, 0)] = 2);
                    }
                } finally {
                    for (var J = 5; v = 1 + v, g && (g[(v = 1 + v, 0 | (h && (h.a += !1)))] = !1), x && (x.b *= {}),
                    v = 1 + v, 2 >>> (G && (G[(v = 1 + v, g += 1)] = -5 / 4)) >= (v += 1, 0) && 0 < --J; ) {}
                }
            }
        }
    }
} finally {
    var K = function(a, f, i) {
        v += 1, e = c, v = 1 + (v = 1 + (v = 1 + (v += 1)));
        var o = 5;
        do {
            for (var t = 5; v = 1 + v, (x && (x[(v = 1 + v, ("object" <= i) / NaN ^ "a0" ^ (r = NaN))] |= !0)) % !1 + 0 && 0 < t; --t) {
                v = 1 + v, x && (x[a *= (v = 1 + v, 1 / 0 * this % -2 < (r && (r[c++ + NaN] = !0 ^ (a && (a.null += 4)))))] <<= 2);
            }
        } while ([ (v = 1 + v, 0 == (v += 1, 5) != 0) ][(v = 1 + v, NaN)] && 0 < --o);
        v = 1 + v, a && (a.Infinity <<= !1);
        var r = (v = 1 + v, 0 | (r && (r[(v = 1 + v, !0 >> (!0 ^ void (v += 1)))] = 1 / 0))), n = 5;
        do {} while (c++ + {
            in: (v = 1 + v, NaN <= ((N = 1) && 0)),
            NaN: (v = 1 + v, !0),
            0: (v = 1 + v, !0)
        }[(v = 1 + v, v += 1, 1)] && 0 < --n);
    }(--e + c++, 0, c++ + {
        length: (v += 1) + [ [ (v = 1 + v, !0) ], K && K[[ , (v = 1 + v, !0 ^ (o += 1)), (v = 1 + v,
        v += 1, this % -1 >> 38), (v = 1 + v, !1) ][(v = 1 + v, N && (N[[].NaN] &= NaN))]], [ (v = 1 + v,
        ((1 == this) <= !1) - ((G = 0) < !0)), (v = 1 + v, K && (K.in = -3)) ][c++ + ("function" == typeof f12 && 0 <= --a && f12(-5, (v = 1 + v,
        (this < "c") >>> 0 >= ((K = NaN) < NaN))))], c++, 0 <= --a && (void 0)((v = 1 + v,
        K = !0)) ][++e],
        in: e--,
        undefined: ~c,
        "\t": (v += 1) + -2
    }[c++ + c--]);
}

console.log(null, c, e, v, 1 / 0, NaN, void 0);
original result:
null 105 104 23 Infinity NaN undefined

uglified result:
evalmachine.<anonymous>:1
(function(){var a=10,c=100,e=10,v=0;try{for(var f=5;!c&&0<f;--f)for(var i=5;(e<<=c)&&0<--i;)var o}catch(g){switch({foo:/[abc4]/.test(""+(--e||e||5))}[--e]){case"function"==typeof g&&0<=--a&&g("foo",(v+=1,NaN),[c,,c+++(--e+c++?--e+g:c+++e--),c+++(e+=c)]):default:case c+++ +function(){if(c+++(e=c)){if(e+1-.1-.1-.1)for(var a=5;(v+=1)+o&&0<a;--a);}else{for(var f=5;--e+(g=NaN,v=1+(v=1+v),-(o=!1))&&0<f;--f);v=1+(v=1+v),o&&(o[c++-(g&&(g.in+=!1))]=(v+=1,{}+0))}for(var i=5;--e+(e=c)&&0<i;--i)!function(){var a=(v=1+v,!1>>>(NaN==(v+=1,22)));for(var f in a)v=1+v;v=1+(v=1+v)}();v+=1,c++,c++,--e}():v+=1;break;case c+++!0:}switch(o&&o.in){case(v+=1)+(-15^(g&&(g[--e+(e>>=c)]+=(g&&(g[(v=1+v,0<=(0==void(v+=1)))]=!0))<=!1))):break;case/[abc4]/.test(""+(c+++("function"==typeof o&&0<=--a&&o(c+++g,-5))||e||5)):if((""+(o||9))[(v+=1)+ ++c])v+=1;else for(var t=5;--e+("function"==typeof g&&0<=--a&&g(e++,-5))&&0<--t;){v=1+v,o&&(o.a+=1);for(var r=5;v=1+v,("foo"<<this<!1)/!(g=!1)&&0<--r;)v=1+v;switch(v=1+v,v+=

TypeError: (void 0) is not a function
    at evalmachine.<anonymous>:1:6356
    at evalmachine.<anonymous>:1:6464

minify(options):
{
  "compress": {
    "passes": 1000000,
    "unsafe": true
  },
  "toplevel": true
}
@alexlamsl alexlamsl added the bug label Oct 22, 2019
alexlamsl added a commit to alexlamsl/UglifyJS that referenced this issue Oct 22, 2019
alexlamsl added a commit that referenced this issue Oct 22, 2019
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