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

Closed
alexlamsl opened this issue Dec 4, 2019 · 0 comments · Fixed by #3623
Closed

ufuzz failure #3622

alexlamsl opened this issue Dec 4, 2019 · 0 comments · Fixed by #3623
Labels

Comments

@alexlamsl
Copy link
Collaborator

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

{
    var brake1 = 5;
    while (a && --brake1 > 0) {
        switch (function a_2() {
            c = c + 1;
            {
                return --b + (a++ + {
                    c: (c = c + 1) + -((4 !== null != ("a" ^ {})) / (c = c + 1, this - 0)),
                    null: a++ + (1 === 1 ? a : b),
                    in: typeof a_2 == "function" && --_calls_ >= 0 && a_2(--b + (0 === 1 ? a : b), (c = c + 1) + a_2),
                    var: a_2,
                    3: [ (c = c + 1) + (0 === 1 ? a : b) ]
                } || 2).toString()[a++ + a--];
            }
            c = c + 1;
            {
                var brake6 = 5;
                do {
                    switch ((c = c + 1) + /[abc4]/.test((b-- || b || 5).toString())) {
                      default:
                        if (--b + +(this ^ 22 && "b" / "undefined" && 25 % "b" > -2 >>> NaN)) {
                            var a_1 = function f0(Infinity_2, bar_2) {
                                c = 1 + c, (Infinity_2 && (Infinity_2[c = 1 + c, delete (22 / 25) | (true || 24..toString()) % (4 ^ 23..toString())] += 1 !== "b")) < (undefined != "") || !("" * "object");
                                c = 1 + c, (c = c + 1, 5) % (23..toString() << 3) ^ ("number" ^ 0) != ([ , 0 ].length === 2 === 23..toString());
                            }("c", (c = 1 + c, (a_2 = (-0 > 1) - "object" / false) << (null % [ , 0 ][1] && 1 === "object")), (c = 1 + c, 
                            (a_1 >>>= ("b" > "a") >>> "c" % null) !== (0 & 24..toString() | ([ , 0 ][1] || Infinity))));
                        } else {
                            switch (void ((-3 !== "function") <= (a_1 && (a_1[c = 1 + c, a_1 = "bar" + ([ , 0 ].length === 2) >= "b" - Infinity && (c = c + 1, 
                            -0) < ("foo" || 25)] <<= 5 >>> null)) === (false < []) + (3 << "undefined"))) {
                              case b--:
                                {
                                    return c = 1 + c, (1 !== -1 ^ (c = c + 1, "function")) != ((NaN & null) !== (-1 !== []));
                                }
                                c = 1 + c, (22 ^ "object") % (null + this) <= (-3 * 22, 38..toString() != 38..toString());
                                break;

                              case --b + [].null:
                                if (c = 1 + c, (-2 & {}) <= (5 ^ true) < (38..toString() === 23..toString() || -3 > /[a2][^e]+$/)) {
                                    c = 1 + c, (-4 === "bar") << (a_1 -= [] != null) == (-4 === 24..toString() !== (a_1 && (a_1[c = 1 + c, 
                                    ((a_2 && (a_2.foo += true + "number")) << (true >>> "foo")) - (a_1 && (a_1.Infinity = 22 | "") || undefined != Infinity)] -= 1 + "undefined")));
                                }
                                break;

                              default:
                              case --b + b--:
                                {
                                }
                                {
                                }
                                break;
                            }
                        }
                        for (var brake19 = 5; (c = c + 1) + (void function() {
                            c = 1 + c, ([ , 0 ][1] !== 2) + ("number" && []) + (this > false ^ 24..toString() - 25);
                            c = 1 + c, (-5 ^ []) % (true == "undefined") * ((this << "a") - (a_1 && (a_1.b = [ , 0 ][1] >= [])));
                        }() || a || 3).toString() && brake19 > 0; --brake19) {
                            L25565: {
                                {
                                    var brake23 = 5;
                                    while ((c = 1 + c, ("number" | {}) + (2 | "undefined") + (("b" || 38..toString()) | 0 <= "c")) && --brake23 > 0) {
                                        c = 1 + c, a_1 && (a_1.a += ("" < NaN && 23..toString() > 38..toString()) << (Infinity * this & 22 > [ , 0 ][1]));
                                    }
                                }
                                {
                                    var expr25 = (c = 1 + c, (c = c + 1, c_2 && (c_2[c = 1 + c, a_1 && (a_1[--b + +function b() {
                                        c = 1 + c, 24..toString() == undefined == ("a" || undefined) & 24..toString() + [] < ([] & [ , 0 ][1]);
                                        c = 1 + c, (null < "bar" && -4 - Infinity) !== (false << "b") / (a_2 && (a_2[c = 1 + c, 
                                        c = c + 1, ("object" && 24..toString()) ^ (this || /[a2][^e]+$/)] += true << 38..toString()));
                                        c = 1 + c, (/[a2][^e]+$/ ^ [ , 0 ][1]) * (5 > "c") ^ (c_2 = "c" | 25) === (c_2 && (c_2[c = 1 + c, 
                                        (a_1 = 3 | 5) > {} >> "function" ^ ({}, 23..toString()) >> ("" & 1)] ^= 4 >= 2));
                                    }()] += (c_2 && (c_2[c = 1 + c, (3 !== "function" || -3 ^ 3) && 3 / Infinity !== (c = c + 1, 
                                    3)] += "b" <= 2)) >>> (c = c + 1, [ , 0 ][1]) < ((23..toString() ^ -1) !== ("number" == -3)))] >>= -0 << /[a2][^e]+$/)) == (false >> "c" || /[a2][^e]+$/ !== "b"));
                                    L25566: for (var key25 in expr25) {
                                        c = 1 + c;
                                        var c_2 = expr25[key25];
                                        c = 1 + c, (a_1 = this > 5 == (a_2 && (a_2.Infinity = false != null))) + (a_1 += ("function", 
                                        -1) / delete this);
                                    }
                                }
                                {
                                    var expr30 = (c = 1 + c, c_2 && (c_2.var += ("object" | undefined) - undefined * 1 >= (a_1 && (a_1[c = 1 + c, 
                                    (("foo" | "number") ^ true !== 38..toString()) >> (("bar" < "c") >>> (c_2 += [ , 0 ][1] / 25))] <<= "foo" >= 3)) << (a_2 && (a_2[c = 1 + c, 
                                    (delete "bar", this - "c") % void ("c" >= 4)] = [ , 0 ][1] * 22))));
                                    L25567: for (var key30 in expr30) {
                                        c = 1 + c, (-0 && "bar") >>> "" % "foo" ^ (c_2 && (c_2[c = 1 + c, "foo" / this == (a_2 && (a_2[c = 1 + c, 
                                        ("undefined" / /[a2][^e]+$/, a_2 && (a_2.in = -4 === 1)) ^ (-0 ^ null) > (null === 0)] += 25 ^ 24..toString())) && -4 < /[a2][^e]+$/ === (25 ^ true)] = 0 >= 5)) - (1 !== false);
                                    }
                                }
                            }
                        }

                      case --b + [ (c = c + 1) + (--b + void function Infinity() {
                            c = 1 + c, ("bar" + [] >= (0 >= 2)) * ((23..toString() ^ -1) != 3 >> {});
                            c = 1 + c, a_1 && (a_1.c >>>= (a_2 += (-0 >>> this) * ("a" / {})) | -0 % "a" - (NaN << "a"));
                        }()) ][void 5 ^ 23..toString() - "foo" | false >>> -5 >> (c = c + 1, 2)]:
                        {
                            var foo = function f1(a_1, a_1) {
                                c = c + 1;
                                var bar_1 = (c = 1 + c, "b" + 0 >>> (a_1 && (a_1.NaN = "object" * 22)) << (("a" & 2) >>> (-5 !== 0))), parseInt = (c = 1 + c, 
                                (25 && "a") <= "foo" + 2 && (bar_1 && (bar_1.null = (a_1 && (a_1.a -= "undefined" != "b")) !== ~"a")));
                            }({}, 2);
                        }
                        {
                            {
                                var brake38 = 5;
                                L25568: while (a++ + {
                                    c: (c = 1 + c, (5 % Infinity !== -3 >>> -1) + ((c_2 && (c_2[c = 1 + c, ("number" > 5) * (a_1 >>>= 24..toString() === "b") - ((5 && 38..toString()) >>> 3 % 1)] += "function" > 38..toString())) ^ ("object" || true))),
                                    foo: (c = 1 + c, (a_1 && (a_1[a++ + a_2] ^= "c" >>> 38..toString() < +this)) === (c = c + 1, 
                                    -4 && 1))
                                }[c = 1 + c, (1 >= [] & -0 > ([ , 0 ].length === 2)) > (true % 23..toString() < (23..toString() === this))] && --brake38 > 0) {
                                    L25569: {
                                    }
                                }
                            }
                        }
                        break;

                      case typeof undefined == "object":
                        try {
                            var Infinity_1 = {}.c, a_2 = a++ + {
                                "\t": (c = 1 + c, (undefined ^ [ , 0 ].length === 2) + (Infinity < /[a2][^e]+$/) & ((c_2 = -2 >>> 2) ^ (a_2 && (a_2[c = 1 + c, 
                                a_2 && (a_2.NaN -= ("" === 0 ^ 38..toString() >> /[a2][^e]+$/) * (Infinity === undefined ^ (4 && "c")))] >>>= 25 >= "bar")))),
                                length: (c = 1 + c, (2 > -4 | 23..toString() & 38..toString()) != ("function" != 3) * (/[a2][^e]+$/ * 3)),
                                null: (c = 1 + c, (23..toString() >>> 24..toString(), 22 >>> "b") <= (-3 < "undefined" < (undefined || "object")))
                            }[a++ + a_2];
                        } catch (b_2) {
                            {
                                return --b + (b *= a);
                            }
                            c = c + 1;
                        }
                        --b + /[abc4]/.test(((c = c + 1) + [ (c = 1 + c, (a_1 = (delete 22, undefined >= "object")) ^ -4 / Infinity / (NaN ^ 1)), (c = 1 + c, 
                        a_2 += ("foo" || undefined) * (true << "undefined") ^ ("bar" >> "undefined" && "undefined" ^ Infinity)), (c = 1 + c, 
                        (a_2 += "function" == undefined) && NaN <= false, ("a", "object") & 2 / -0), (c = 1 + c, 
                        ("undefined" != "foo" ^ (a_2 && (a_2[c = 1 + c, (a_2 += -2 > -4) > void "foo" !== (c = c + 1, 
                        1 % "c")] += "function" + "b"))) & (-3 & [ , 0 ][1]) >= (38..toString(), 5)), (c = 1 + c, 
                        25 <= "" && (a_2 = [] * "undefined"), false % {} != 0 / {}) ][function Infinity_1() {
                        }] || b || 5).toString());
                        break;

                      case c_2 = {}[(c = c + 1) + (1 === 1 ? a : b)]:
                        break;
                    }
                } while (--b + (typeof f2 == "function" && --_calls_ >= 0 && f2(typeof f0 == "function" && --_calls_ >= 0 && f0(), b = a)) && --brake6 > 0);
            }
        }) {
          default:
            {
                var a = function f2(undefined, b_2, a_1) {
                    var parseInt = a++ + ++a;
                    if (a_1) {
                        var foo = function f3(bar_2, a_1_1, parseInt_2) {
                            switch (c = 1 + c, a_1 && (a_1[--b + (typeof bar_2_2 != "crap")] = ("undefined" << 3 !== "b" <= "function") / ({} && -2 || (Infinity || Infinity)))) {
                              case c = 1 + c, +(("c" >= null) - (this | 24..toString())):
                                ;
                                break;

                              case c = 1 + c, (2 * 3 || "undefined" | 0) ^ "c" - 0 & 24..toString() / -0:
                                ;

                              default:
                                ;

                              case c = 1 + c, (c = c + 1, "foo" * "function") > (bar_2 = 5 >> 1 != (a_1_1 && (a_1_1[c = 1 + c, 
                                ("object" != 23..toString()) << ("bar" !== "object") < (true >> "undefined" >= (bar_2 && (bar_2.c += -3 == false)))] += -4 <= -2))):
                                ;
                                break;
                            }
                            {
                                var expr50 = (c = 1 + c, (-0 & "function") % ~"function" != (a_1 && (a_1[c = 1 + c, 
                                parseInt_2 && (parseInt_2[((c = 1 + c, (24..toString() !== "b" ^ void "foo") > (4 % this <= (true < null))) || a || 3).toString()] += (c = c + 1, 
                                null) == [] + false) && (-2 !== 22) < (a_1_1 = -1 || null)] = (a_1_1 && (a_1_1[c = 1 + c, 
                                (bar_2 && (bar_2[c = 1 + c, (b_2 && (b_2[c = 1 + c, (([ , 0 ].length === 2) >>> 1) + ([ , 0 ][1] >>> 22) != ((22 || -5) && 38..toString() << 3)] = null & 22)) % ("undefined" << -2) >>> (c = c + 1, 
                                1 << /[a2][^e]+$/)] += 22 << "c")) != "number" < 3 && NaN !== 23..toString() != undefined % -5] += [ , 0 ][1] & Infinity)) > 2 >> 2)));
                                for (var key50 in expr50) {
                                    c = 1 + c, "bar" != -5 != (c = c + 1, 38..toString()), ("bar" || [ , 0 ].length === 2) / (Infinity || 0);
                                }
                            }
                        }([ , 0 ].length === 2, 5, ~a);
                    }
                }("a", ([ ([ , 0 ][1] || a || 3).toString(), a--, a++ + a, a, a && a[(c = c + 1) + a++] ] || a || 3).toString(), this);
            }

          case [ a++ + {
                "\t": (--b + b++ || 9).toString()[(c = c + 1) + [ 24..toString() ][a++ + (void (false > /[a2][^e]+$/) >= ((a && (a[c = 1 + c, 
                (NaN != "c") - -5 / 24..toString() << !("b" * "b")] = undefined != "b")) ^ -0 & "bar"))]],
                1.5: a && a[(typeof f5 == "function" && --_calls_ >= 0 && f5(a++ + {
                    1.5: (c = 1 + c, (a && (a[c = 1 + c, ([ , 0 ].length === 2) < undefined <= (5 ^ {}) ^ (a && (a.NaN += +undefined >= (0 <= "b")))] += "number" ^ false)) >>> (a && (a.undefined = "object" >> "undefined")) > (0 ^ false) >> (-2 >>> /[a2][^e]+$/)),
                    a: (c = 1 + c, (a && (a[a++] += "a" > true == (c = c + 1, 4))) % (-3 * -1 === (a && (a.Infinity += null !== 22)))),
                    c: (c = 1 + c, (false !== null, {} / -3) % (({}, "a") != "foo" + this)),
                    1.5: (c = 1 + c, c = c + 1, -2 % 38..toString() == "object" << true),
                    NaN: (c = 1 + c, "b" * "number" > (a && (a[c = 1 + c, a && (a[/[abc4]/.test(((c = 1 + c, 
                    c = c + 1, (this | [ , 0 ][1]) * (Infinity & this)) || b || 5).toString())] += (c = c + 1, 
                    "undefined") ^ void 25) || (5 / "bar" || a && (a[c = 1 + c, (a |= NaN * 4 < 24..toString() - 23..toString()) > (+NaN ^ -3 << [])] >>= "function" != "number"))] += "foo" % "")) && 23..toString() <= -1 != 4 % 22)
                }, +b, -1) || 9).toString()[--b + (typeof f5 == "function" && --_calls_ >= 0 && f5(3, (c = 1 + c, 
                ((5, {}) ^ ([ , 0 ].length === 2 ^ -3)) + !([] || -3)), (c = 1 + c, 2 / [] != ("number" ^ [ , 0 ][1]) ^ (undefined != "number") * (-2 % 2))) || a || 3).toString()]]
            }, --b + {
                1.5: a++ + {
                    undefined: b >>= a,
                    length: -a,
                    null: a++ + {
                        c: typeof foo_1 === "object"
                    }.foo,
                    0: 0 === 1 ? a : b
                }[{
                    Infinity: --b + (!function() {
                    }() ? (c = c + 1) + (a = (c = 1 + c, (c = c + 1, [ , 0 ].length === 2 || [ , 0 ].length === 2) === (a = [ , 0 ][1] > 0) * ("b" >= "undefined"))) : (c = c + 1) + [ (c = 1 + c, 
                    ("object" <= "number" ^ (c = c + 1, 3)) === (-2 !== "bar" ^ 25 + "undefined")), (c = 1 + c, 
                    4 >>> false > (c = c + 1, "c") || false != "undefined" ^ (/[a2][^e]+$/ | "number")), (c = 1 + c, 
                    (~undefined && 25 - Infinity) !== ({}, "number") - (c = c + 1, "undefined")), (c = 1 + c, 
                    (c = c + 1, Infinity === "") > (/[a2][^e]+$/ & false) << (false == NaN)) ].a),
                    Infinity: [ (c = 1 + c, (a && (a.null += 3 ^ 3 || -0 && -0)) << ((undefined ^ this) & (2 ^ 24..toString()))), (c = 1 + c, 
                    a += (a && (a.c += ([] ^ this) - (true || -1))) << (-5 ^ /[a2][^e]+$/ && "number" >= {})), (c = 1 + c, 
                    (c = c + 1, 5 * "bar") ^ !(undefined / "function")) ].NaN,
                    "-2": a && a.undefined,
                    3: a++ + !function() {}(),
                    "": a++ + (a && a[-b])
                }.a]
            }, (c = c + 1) + (true === -0 == (-5 && this)) / (("" <= Infinity) >>> (this | "object")), (c = c + 1) + [][(c = c + 1) + (typeof f2 == "function" && --_calls_ >= 0 && f2())], typeof a == "crap" ].length:
            if ((--b + (--b + (a && (a.foo = (c = c + 1, 4) / ("undefined" * 22) % (2 === /[a2][^e]+$/ || {} <= 3))) ? (c = c + 1) + /[abc4]/.test((a++ + (typeof a == "function" && --_calls_ >= 0 && a()) || b || 5).toString()) : 25) || a || 3).toString()) {
                try {
                    try {
                        {
                            var brake55 = 5;
                            while (--b + (a && a.foo) && --brake55 > 0) {
                                var undefined = function arguments_1(Infinity_1, parseInt_2, b_2) {
                                    if (c = 1 + c, void {} + ("undefined" ^ [ , 0 ][1]) >>> (0 == 0 ^ false % this)) {
                                        c = 1 + c, c = c + 1, ("bar" < "undefined") + (c = c + 1, null);
                                    }
                                    var b_2 = (c = 1 + c, b_2 && (b_2[a++ + a--] = ({} & -1) - ("a" <= 25) || (c = c + 1, 
                                    1) * (-5 >= this)));
                                }("b", -0, -3);
                            }
                        }
                    } catch (undefined) {
                        switch ((c = c + 1) + (b = a)) {
                          case b++:
                            switch ((c = c + 1) + /[abc4]/.test(((c = 1 + c, a && (a.foo = (c = c + 1, this) % (false ^ "object") || (25 == "") - (-5 | undefined))) || b || 5).toString())) {
                              case typeof bar_2 == "function":
                                c = 1 + c, ("bar" > "b") % (a && (a[c = 1 + c, a += 25 * "function" <= 22 / -4 || NaN <= 2 ^ (a += "undefined" >>> false)] += -1 === /[a2][^e]+$/)) - (NaN ^ 1 ^ Infinity << null);
                                break;

                              default:
                                c = 1 + c, (-4 >> ([] & -1)) * (true * true >>> (23..toString() >>> Infinity));

                              case (c = c + 1) + a:
                                c = 1 + c, delete -0 >> (-5 ^ "object") <= (null >= null && -5 < "foo");
                                break;

                              case --b + /[abc4]/.test(((c = 1 + c, !(a && (a.in += -4 && "undefined")) != (a && (a.b = ("number" & -2) - (5 << 4)))) || b || 5).toString()):
                                c = 1 + c, (38..toString() | -0) < ({}, 3) != (-4 ^ "b") >>> (-4 ^ -0);
                                break;
                            }
                            {
                                var brake66 = 5;
                                do {
                                    try {
                                        c = 1 + c, (2 || false) % (-2 >>> -5) >= (25 !== -3, "foo" !== 0);
                                    } catch (undefined_1) {
                                    }
                                } while (--b + a-- && --brake66 > 0);
                            }
                            break;

                          case (c = c + 1) + ((c = c + 1) + a || a || 3).toString():
                            break;

                          case a++ + +((null >>> [] ^ 24..toString() / null) != ("bar" * false == [ , 0 ][1] <= this)):
                            var b_1;
                            break;

                          case (b_1 += -2 + "undefined") << (b_1 && (b_1.a = 4 ^ 38..toString())) & -0 !== 1 != "a" + "bar":
                            {
                                var brake70 = 5;
                                L25570: do {
                                    {
                                    }
                                } while (typeof b_1 == "function" && --_calls_ >= 0 && b_1(undefined, (c = 1 + c, 
                                b_1 = NaN % true << ("" >>> false) < ("object" >= "foo") >> (-3 <= 22))) && --brake70 > 0);
                            }
                            if (--b + a++) {
                                var brake73 = 5;
                                while ((c = 1 + c, "undefined" >>> "number" != (b_1 && (b_1[c = 1 + c, (22 << "foo" >> (38..toString() || "foo")) + (b_1 && (b_1.Infinity = -5 < 2 != (Infinity ^ 25)))] *= "" !== undefined)) === (/[a2][^e]+$/ & 0) >= ("bar" != /[a2][^e]+$/)) && --brake73 > 0) {
                                    c = 1 + c, (Infinity << Infinity) % ("a" << "b") * (b_1 = (b_1 && (b_1[c = 1 + c, 
                                    (true == 5) >= (b_1 && (b_1[c = 1 + c, b_1 && (b_1[typeof f3 == "function" && --_calls_ >= 0 && f3(-0, (c = 1 + c, 
                                    "c" > "a" === (b_1 && (b_1.NaN = "bar" << [ , 0 ][1])) ^ (b_1 && (b_1[c = 1 + c, 
                                    b_1 && (b_1.c = 22 << [] >>> (25 > {}) != (c = c + 1, 23..toString() > 4))] = "a" || this)) + (b_1 && (b_1[c = 1 + c, 
                                    (("number" && null) ^ (24..toString() || 38..toString())) & (b_1 += (c = c + 1, 
                                    /[a2][^e]+$/) ^ "object" != 3)] &= "a" == true))), (c = 1 + c, ((c = c + 1, -5) ^ "b" >= 24..toString()) !== ("a" & [ , 0 ].length === 2 | -undefined)))] = ("function" * null > (undefined == -2)) % ((-4 != 3) <= ([ , 0 ].length === 2) >> 24..toString()))] = Infinity << "b")) ^ (c = c + 1, 
                                    "c") >= (b_1 <<= 4 - 2)] = [ , 0 ].length === 2 && "c")) + (b_1 && (b_1[c = 1 + c, 
                                    (-2 || 5) / ("bar" & 23..toString()) == (false << ([ , 0 ].length === 2)) / (38..toString() - null)] += 1 == true)));
                                }
                            } else {
                                var brake75 = 5;
                                while ((c = 1 + c, undefined / 38..toString() < ({} >= /[a2][^e]+$/) <= ("number" + "bar") * (-2 | "a")) && --brake75 > 0) {
                                    c = 1 + c, (38..toString() || -4) > -"bar" != (-1 / -3 && "" - 0);
                                }
                            }
                            break;
                        }
                    } finally {
                        {
                            var expr79 = (--b + /[abc4]/.test((((c = 1 + c, ([] && "undefined") === "number" >= "" == ((foo_1 && (foo_1.c = -0 || "function")) == (-1 | 0))) || 2).toString()[c = 1 + c, 
                            ("" | "function") ^ 2 > "object" ^ -4 + "" <= (-0 ^ -4)] || b || 5).toString()) || 8).toString()[((foo_1 && (foo_1.b += {} > "bar")) & [ , 0 ][1] != NaN) / (NaN >>> "c", 
                            1 == 38..toString())];
                            for (var key79 in expr79) {
                                c = 1 + c;
                                var foo_1 = expr79[key79];
                                switch (--b + typeof foo_1) {
                                  case --b + -2:
                                    {
                                    }
                                    {
                                    }
                                    break;

                                  case a++ + ("a" % {} + (b_1 && (b_1.undefined = 25 !== "number")) << ("a" | "c" || this != "foo")):
                                    try {
                                        c = 1 + c, c = c + 1, (false >= 23..toString()) >> "bar" - 23..toString();
                                    } catch (foo) {
                                    } finally {
                                    }
                                    {
                                        var brake85 = 5;
                                        L25571: do {
                                            c = 1 + c, -(("bar" ^ this) + (-3 == 38..toString()));
                                        } while ((c = 1 + c, ("a" ^ "number") * ("function" >> "") + ((38..toString() !== Infinity) << (b_1 && (b_1.undefined = Infinity - [ , 0 ][1])))) && --brake85 > 0);
                                    }
                                    break;

                                  case a--:
                                    break;

                                  case (a++ + [ (c = 1 + c, (b_1 |= true >= "undefined") / (0 >> /[a2][^e]+$/) ^ {} >> "object" <= -5 + null), (c = 1 + c, 
                                    (foo_1 = "object" / this >>> ("bar" || [ , 0 ].length === 2)) & (null || /[a2][^e]+$/) >>> (undefined >>> -2)), (c = 1 + c, 
                                    (38..toString() === 22) % ([] || "") <= (25 << -0 || "" % "number")) ] || a || 3).toString():
                                    for (var brake87 = 5; (c = 1 + c, 22 * "" | (c = c + 1, -5) || (23..toString() - "a") % ({} >>> "")) && brake87 > 0; --brake87) {
                                        c = 1 + c, b_1 && (b_1.Infinity = ([] ^ {}) / ("object" === 3)) || b_1 && (b_1[(c = c + 1) + (typeof foo_1 == "function" && --_calls_ >= 0 && foo_1("foo", (c = 1 + c, 
                                        b_1 && (b_1[a++ + a++] += ((2 > 2) >>> (-0 || undefined)) + (("number" || "bar") == /[a2][^e]+$/ >= ([ , 0 ].length === 2)))), (c = 1 + c, 
                                        foo_1 && (foo_1.NaN += (b_1 += ("foo" >>> "foo") * ~25) == ((b_1 && (b_1.in = this ^ {})) | (foo_1 += -1 - "undefined"))))))] = ([ , 0 ][1] / 3, 
                                        24..toString() * 0));
                                    }
                                    break;
                                }
                            }
                        }
                    }
                } finally {
                    {
                        var expr89 = --b;
                        for (var key89 in expr89) {
                            a++ + ((b <<= a) || a || 3).toString();
                        }
                    }
                    {
                        typeof foo_1 == "function" && --_calls_ >= 0 && foo_1((c = 1 + c, -2 * false + (22 ^ "object") + (-1 % "" == false - "function")), "b", (c = 1 + c, 
                        ~(b_1 && (b_1[c = 1 + c, (foo_1 && (foo_1.undefined = (-4 !== true) / ("object" % 38..toString()))) & (25 > NaN) + "object" / -4] += ([ , 0 ].length === 2, 
                        0)), this * -1)));
                        {
                            var brake93 = 5;
                            do {
                                if ((c = 1 + c, 23..toString() >>> 25 < (foo_1 && (foo_1[c = 1 + c, ("b" || "undefined") >> NaN % ([ , 0 ].length === 2) ^ (b_1 = {} & -5) & (false ^ "a")] = null * "bar")), 
                                /[a2][^e]+$/ <= -3 !== 0 < 22) ? (c = 1 + c, ("function" >> this != 3 > 0) * (NaN + "function" > ("b" || 22))) : (c = 1 + c, 
                                (-5 >= []) % ("foo" + [ , 0 ][1]) >= (b_1 && (b_1[--b] += 24..toString() >> -5 >>> ("undefined" && 24..toString()))))) {
                                    var expr95 = (c = 1 + c, (b_1 && (b_1[c = 1 + c, ("a" <= "a") % (-2 - -5) * ((b_1 && (b_1[c = 1 + c, 
                                    null / "b" >> (23..toString() <= [ , 0 ][1]), b_1 = (undefined || NaN) << ([ , 0 ][1] ^ 25)] = 1 === -1)) >= (undefined == true))] = 38..toString() * /[a2][^e]+$/)) <= [ , 0 ][1] * 23..toString() > (5 << [] ^ "c" + /[a2][^e]+$/));
                                    L25572: for (var key95 in expr95) {
                                        c = 1 + c;
                                        var arguments = expr95[key95];
                                        c = 1 + c, (foo_1 &= 4 >> 23..toString()) < (0 > 1) == (2 * "function" ^ [] === "");
                                    }
                                }
                            } while (/[abc4]/.test((--b + [ (c = 1 + c, (c = c + 1, [ , 0 ].length === 2) > (-4 > {}) >= (foo_1 && (foo_1.null *= foo_1 && (foo_1.foo += "undefined" == 22) || (b_1 <<= "" & 3)))) ][c = 1 + c, 
                            (b_1 && (b_1[c = 1 + c, (null - 22 || [] && 24..toString()) >= (-5 >= NaN ^ -2 % 3)] = 5 % ([ , 0 ].length === 2))) & (foo_1 && (foo_1[c = 1 + c, 
                            (-0 != NaN) / (-5 <= -2) || (Infinity <= "c") / (null && "bar")] += "bar" >= -5)), 
                            -5 * "function" >>> 4 + -1] || b || 5).toString()) && --brake93 > 0);
                        }
                        {
                            if (c = 1 + c, ([] | 2) < (c = c + 1, 22) && (23..toString() || "") > (3 & "undefined")) {
                                c = 1 + c, (NaN >> Infinity) - (c = c + 1, [ , 0 ].length === 2) && ("bar" | true) >>> ("" != "b");
                            } else {
                                c = 1 + c, foo_1 && (foo_1.b = (0 % 24..toString() && -2 >> "") != ("object" | /[a2][^e]+$/ || 1 >> 25));
                            }
                            {
                            }
                            {
                                var brake102 = 5;
                                while ((c = 1 + c, (1 === -0 || "b" && "a") & ((foo_1 && (foo_1.undefined = [ , 0 ].length === 2 != NaN)) & ([ , 0 ][1] ^ -5))) && --brake102 > 0) {
                                    c = 1 + c, foo_1 && (foo_1[--b + (c = 1 + c, (25 != []) - (0 <= NaN) + ((-5 === -2) > Infinity + ([ , 0 ].length === 2)))] = NaN ^ [] | 38..toString() < 5) || b_1 && (b_1[a++ + (foo_1 += (c = 1 + c, 
                                    (5 ^ 23..toString()) << (false ^ /[a2][^e]+$/) << -(3 !== -3)))] = -4 / ([ , 0 ].length === 2) && 24..toString() ^ -0);
                                }
                            }
                        }
                        {
                            var brake104 = 5;
                            while (foo_1 && --brake104 > 0) {
                                var brake105 = 5;
                                do {
                                    {
                                    }
                                } while ((c = c + 1) + {
                                    get foo() {
                                        c = 1 + c, b_1 && (b_1.c = (4 == -2 & null != [], NaN === false, -5 === 2));
                                    },
                                    1.5: (c = 1 + c, !((b_1 += [] >> undefined) | -0 * 22))
                                } && --brake105 > 0);
                            }
                        }
                    }
                }
            }
            try {
                var parseInt = (c = c + 1) + +function() {
                    {
                    }
                    {
                        var expr112 = void ((23..toString() <= []) * ("" && -3) ^ (foo_1 && (foo_1[a++ + (b_1 && b_1.NaN)] = (-3 >= "b") >> "bar" - undefined)));
                        for (var key112 in expr112) {
                            c = 1 + c;
                            var foo_2 = expr112[key112];
                            switch (typeof b_1 == "function" && --_calls_ >= 0 && b_1(2, (c = 1 + c, (/[a2][^e]+$/ ^ 22) << 25 % "a" ^ "undefined" * undefined !== ("a" != 4)), (c = 1 + c, 
                            (foo_1 += (2 || "number") && 0 % null) << (0 >>> Infinity >= (-3 != -1))))) {
                              case a++ + function b() {
                                    c = 1 + c, (-3 ^ "foo") > (b_1 &= -4 ^ -1) > ~(22 || /[a2][^e]+$/);
                                }:
                                L25573: for (var brake115 = 5; (c = 1 + c, ([ , 0 ].length === 2 || "number") != (24..toString() ^ -1) != ("bar" & "foo") << ("" >> 25)) && brake115 > 0; --brake115) {
                                    c = 1 + c, 3 < undefined <= (Infinity ^ "c") !== (undefined, [ , 0 ][1]) % (c = c + 1, 
                                    true);
                                }
                                break;

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

                              case (3 * null ^ (-2 && 1)) / (-3 > NaN | +24..toString()):
                                break;

                              case -4:
                                switch (c = 1 + c, (c = c + 1, 38..toString() >> ([ , 0 ].length === 2)) + (("function" ^ 3) + (foo_1 && (foo_1[c = 1 + c, 
                                (b_1 = "undefined" % this || true % "function") & "foo" >> false > (foo_2 && (foo_2[c = 1 + c, 
                                ("function" >>> 1 || 25 ^ "undefined") * ([] == 5 | /[a2][^e]+$/ >>> false)] *= "" <= 5))] >>= 3 << undefined)))) {
                                  case c = 1 + c, ("object" ^ 5) <= ("b" !== "b") < "number" % {} - (5 >= 1):
                                    ;
                                    break;

                                  default:
                                    ;

                                  case c = 1 + c, ("object" << 4 || [ , 0 ].length === 2 !== "b") < (false == [] | /[a2][^e]+$/ + 25):
                                    ;
                                    break;

                                  case c = 1 + c, (-2 !== 1) >>> (-5 !== 2) & 4 > 2 === (c = c + 1, "foo"):
                                    ;
                                    break;
                                }
                                {
                                }
                                break;
                            }
                        }
                    }
                    {
                        var Infinity = function f4(undefined_1, b_2, a_1) {
                            {
                                var brake125 = 5;
                                L25574: while ((c = 1 + c, c = c + 1, -2 << -5 | null == 3) && --brake125 > 0) {
                                    c = 1 + c, (b_1 && (b_1.var = NaN + "b")) % (Infinity + 23..toString()) << (25 == "a") / (4 ^ null);
                                }
                            }
                            c = c + 1;
                        }(-((b_1[NaN] = (3 === "bar") + (-0 === 38..toString())) < (foo_2 += "bar" >= 2 && -0 - /[a2][^e]+$/)), (c = c + 1) + foo_2, foo_2);
                    }
                    if (([ , (c = 1 + c, c = c + 1, (-1, -2) >= (-4 == null)), (c = 1 + c, 24..toString() / "a" > (5 ^ NaN) | !("a" && 0)) ][--b + ((foo_1 && (foo_1[c = 1 + c, 
                    ("a" != -2 & ("bar" ^ "foo")) >= (foo_1 = (-0 >> "") + 3 * NaN)] = 0 << 25) || [] & "") ^ !"number" == (this, 
                    2))] || a || 3).toString()) {
                        try {
                            a++ + ((c = 1 + c, c = c + 1, foo_1 /= -4 < Infinity, /[a2][^e]+$/ << -3) || a || 3).toString();
                        } catch (a_2) {
                            for (var brake131 = 5; (c = 1 + c, -0 * -3 - !2 == (null <= 3) + (-3 != -2)) && brake131 > 0; --brake131) {
                                c = 1 + c, (this | "function") << (0 & 25) >= ({} < 38..toString() != (a_2 &= "object" / this));
                            }
                            try {
                                c = 1 + c, b_1 && (b_1[a++ + new function a_2_1() {
                                    this.Infinity += [] << -2 << (this >>> "undefined");
                                }()] %= (-0 === ([ , 0 ].length === 2) && (38..toString(), "object")) === -0 % "" << (b_1 && (b_1[c = 1 + c, 
                                (this === "a", NaN != 1) & (NaN <= -3) - ("number" <= 4)] -= 4 != true)));
                            } catch (b_1) {
                            }
                        }
                    } else {
                        var NaN_1;
                    }
                }(), b = --b + b--;
            } catch (a) {
                {
                    var brake136 = 5;
                    do {
                        {
                            {
                                var brake138 = 5;
                                while (foo_1 && foo_1[b_1 && b_1.NaN] && --brake138 > 0) {
                                    --b + ((c = 1 + c, (24..toString() || -5) / (22 < -2) >= (("number" | []) !== (/[a2][^e]+$/ ^ true))) ? (c = 1 + c, 
                                    (22 ^ 3) >= "c" + this != ("a" > Infinity & "function" / this)) : (c = 1 + c, 1 / 25 >= "a" % -3 != (([ , 0 ].length === 2) <= {} === (true == false))));
                                }
                            }
                            L25575: {}
                            {
                                {
                                    var expr142 = (c = 1 + c, ((c = c + 1, "bar") ^ -5 !== "") / ([ , 0 ].length === 2 | "a", 
                                    [ , 0 ][1] + "a"));
                                    L25576: for (var key142 in expr142) {
                                        c = 1 + c;
                                        var b_2 = expr142[key142];
                                        c = 1 + c, ([ , 0 ][1] < -2, false / {}) >> ("a" >> "object" > (2 | -2));
                                    }
                                }
                                var Math_2;
                            }
                        }
                    } while ((b &= a) && --brake136 > 0);
                }
            }
            break;

          case foo_1 && foo_1.NaN:
            a++ + (typeof arguments_1 == "special");
            break;

          case a++ + (typeof b_2 == "function" && --_calls_ >= 0 && b_2((c = c + 1) + b++)):
            {
                var expr147 = a++ + (a++ + b_2 || 9).toString()[a++ + {
                    3: void function parseInt_1() {}(),
                    undefined: --b + void ((4 > -4) + ("object" << null) ^ (1 & "foo") * ({} ^ false)),
                    "\t": (c = c + 1) + bar_1 ? b-- : function Infinity_2() {}(),
                    undefined: --b + (b /= a),
                    0: --b + +a
                }];
                for (var key147 in expr147) {
                    c = 1 + c;
                    var bar_1 = expr147[key147];
                    {
                        var a_1 = function f5() {
                        }([], b--);
                    }
                }
            }
            break;
        }
    }
}

{
    var expr151 = a++ + ~((25 | "number") == ("a" ^ "foo") != (-4 >> 3 | ([ , 0 ].length === 2) / /[a2][^e]+$/));
    for (var key151 in expr151) {
        {
            var expr152 = b += a;
            for (var key152 in expr152) {
                --b + (b += a);
            }
        }
    }
}

console.log(null, a, b, c, Infinity, NaN, undefined);
// uglified code
// (beautified)
for (var o = 10, r = 100, c = 10, N = 0, a = 5; r && 0 < --a; ) {
    switch (function() {
        return N += 1, --c + ("" + (r++ + {
            c: (N += 1) + -1 / (N += 1, this - 0),
            null: r++ + r,
            in: !1,
            var: void 0,
            3: [ (N += 1) + c ]
        } || 2))[r++ + r--];
    }) {
      default:
        r--, ++r && r[(N += 1) + r++], r++, r = void ++r;

      case [ r++ + {
            "\t": ("" + (--c + c++ || 9))[(N += 1) + [ "24" ][r++ + ((0 ^ (r && (r[N = 1 + N, 
            2] = "b" != s))) <= void 0)]],
            1.5: r && r[("" + ("function" == typeof f5 && 0 <= --o && f5(r++ + {
                1.5: (N = 1 + N, 0 < (r && (r[N = 1 + N, !0 < s <= 5 ^ (r && (r.NaN += !1 <= +s))] += 0)) >>> (r && (r.undefined = 0))),
                a: (N = 1 + N, (r && (r[r++] += 0 == (N += 1, 4))) % (3 === (r && (r.Infinity += !0)))),
                c: (N = 1 + N, NaN % ("a" != "foo" + this)),
                1.5: (N = 1 + N, N += 1, !1),
                NaN: (N = 1 + N, (r && (r[N = 1 + N, r && (r[/[abc4]/.test("" + (N = 1 + N, N += 1, 
                (0 | this) * (1 / 0 & this) || c || 5))] += void 0 ^ (N += 1, "undefined")) || r && (r[N = 1 + N, 
                -3 < (r |= !1)] >>= !0)] += NaN)) < NaN && !0)
            }, +c, -1) || 9))[--c + "" + ("function" == typeof f5 && 0 <= --o && f5(3, (N = 1 + N, 
            -4), (N = 1 + N, !0 ^ -0 * ("number" != s))) || r || 3)]]
        }, --c + {
            1.5: r++ + {
                undefined: c >>= r,
                length: -r,
                null: r++ + {
                    c: "object" == typeof h
                }.foo,
                0: c
            }[{
                Infinity: --c + ((N += 1) + (N = 1 + N, N += 1, r = !1)),
                Infinity: [ (N = 1 + N, (r && (r.null += -0)) << (26 & (s ^ this))), (N = 1 + N, 
                r += (r && (r.c += ([] ^ this) - !0)) << !0), (N = 1 + N, N += 1, NaN ^ !(s / "function")) ].NaN,
                "-2": r && r.undefined,
                3: r++ + !0,
                "": r++ + (r && r[-c])
            }.a]
        }, (N += 1) + (0 == this) / (!0 >>> ("object" | this)), (N += 1) + [][(N += 1) + ("function" == typeof f2 && 0 <= --o && f2())], "crap" == typeof r ].length:
        if ("" + (--c + (--c + (r && (r.foo = (N += 1, NaN))) ? (N += 1) + /[abc4]/.test("" + (r++ + ("function" == typeof r && 0 <= --o && r()) || c || 5)) : 25) || r || 3)) {
            try {
                try {
                    for (var n = 5; --c + (r && r.foo) && 0 < --n; ) {
                        var s = function(a) {
                            N = 1 + N, NaN >>> (!0 ^ !1 % this) && (N = 1 + N, N += 1, N += 1), N = 1 + N, a = a && (a[r++ + r--] = (N += 1, 
                            1 * (this <= -5)));
                        }(-3);
                    }
                } catch (s) {
                    switch ((N += 1) + (c = r)) {
                      case c++:
                        switch ((N += 1) + /[abc4]/.test("" + (N = 1 + N, r && (r.foo = (N += 1, this % 0 || !1 - (-5 | s))) || c || 5))) {
                          case "function" == typeof bar_2:
                            N = 1 + N, r && (r[N = 1 + N, r += !1 ^ (r += 0)] += !1);
                            break;

                          default:
                            N = 1 + N;

                          case (N += 1) + r:
                          case --c + /[abc4]/.test("" + (N = 1 + N, !(r && (r.in += "undefined")) != (r && (r.b = -80)) || c || 5)):
                            N = 1 + N;
                        }
                        var e = 5;
                        do {
                            try {
                                N = 1 + N;
                            } catch (a) {}
                        } while (--c + r-- && 0 < --e);
                        break;

                      case (N += 1) + "" + ((N += 1) + r || r || 3):
                        break;

                      case r++ + +(0 != (NaN == 0 <= this)):
                        var v;
                        break;

                      case (v += "-2undefined") << (v && (v.a = 34)) & !0:
                        var i = 5;
                        do {} while ("function" == typeof v && 0 <= --o && v(s, (N = 1 + N, v = !1)) && 0 < --i);
                        if (--c + r++) {
                            for (var t = 5; N = 1 + N, 0 != (v && (v[N = 1 + N, 0 + (v && (v.Infinity = !0))] *= "" !== s)) == 0 && 0 < --t; ) {
                                N = 1 + N, v = (v && (v[N = 1 + N, (v && (v[N = 1 + N, v && (v["function" == typeof f3 && 0 <= --o && f3(-0, (N = 1 + N, 
                                !0 === (v && (v.NaN = 0)) ^ (v && (v[N = 1 + N, v && (v.c = 22 != (N += 1, !0))] = "a")) + (v && (v[N = 1 + N, 
                                24 & (v += !0 ^ (N += 1, /[a2][^e]+$/))] &= !1))), (N = 1 + N, (!0 ^ (N += 1, -5)) != (0 | -s)))] = ((-2 == s) < NaN) % !1)] = 0)) <= !1 ^ (N += 1, 
                                (v <<= 2) <= "c")] = "c")) + (v && (v[N = 1 + N, !1] += !0));
                            }
                        } else {
                            for (var f = 5; N = 1 + N, s / "38" < !0 <= NaN && 0 < --f; ) {
                                N = 1 + N;
                            }
                        }
                    }
                } finally {
                    var d = ("" + (--c + /[abc4]/.test("" + (("" + (N = 1 + N, 0 == (-1 == (h && (h.c = "function"))) || 2))[N = 1 + N, 
                    1] || c || 5)) || 8))[(!0 & (h && (h.b += !1))) / !1];
                    for (var u in d) {
                        N = 1 + N;
                        var h = d[u];
                        switch (--c + typeof h) {
                          case --c - 2:
                            break;

                          case r++ + (NaN + (v && (v.undefined = !0)) << ("foo" != this)):
                            try {
                                N = 1 + N, N += 1;
                            } catch (a) {}
                            for (var b = 5; N = 1 + (N = 1 + N), 0 + (!0 << (v && (v.undefined = 1 / 0))) && 0 < --b; ) {}
                            break;

                          case r--:
                            break;

                          case "" + (r++ + [ (v |= !1) / 0 ^ !1, (h = "object" / this >>> "bar") & /[a2][^e]+$/ >>> (s >>> -2), (N = 1 + (N = 1 + (N = 1 + N)), 
                            !1) ] || r || 3):
                            for (var y = 5; N = 1 + N, 0 | (N += 1, -5) && 0 < y; --y) {
                                N = 1 + N, v && (v.Infinity = NaN) || v && (v[(N += 1) + ("function" == typeof h && 0 <= --o && h("foo", (N = 1 + N, 
                                v && (v[r++ + r++] += (!1 >>> s) + !1)), (N = 1 + N, h && (h.NaN += (v += -0) == ((v && (v.in = this ^ {})) | (h += NaN))))))] = 0);
                            }
                        }
                    }
                }
            } finally {
                var l = --c;
                for (var p in l) {
                    c <<= ++r;
                }
                "function" == typeof h && 0 <= --o && h(22, "b", (N = 1 + (N = 1 + N), v && (v[N = 1 + N, 
                NaN & (h && (h.undefined = NaN))] += 0), ~(-1 * this)));
                var k = 5;
                do {
                    if (N = 1 + N, h && (h[N = 1 + N, 0 ^ 0 & (v = 0)] = NaN), N = 1 + N, !1 * ("function" >> this != 1)) {
                        var w = (N = 1 + N, 5 < ((v && (v[N = 1 + N, 1 * ((v && (v[N = 1 + N, v = (s || NaN) << 25] = !1)) >= (1 == s))] = NaN)) <= 0));
                        for (var I in w) {
                            N = 1 + (N = 1 + N), h &= 0;
                        }
                    }
                } while (/[abc4]/.test("" + (--c + [ (N = 1 + N, N += 1, (h && (h.null *= h && (h.foo += !1) || (v <<= 0))) <= !0) ][N = 1 + N, 
                v && (v[N = 1 + N, !1] = 0), h && (h[N = 1 + N, 1] += !1), 0] || c || 5)) && 0 < --k);
                N = 1 + N, 2 < (N += 1, 22) ? (N = 1 + N, N += 1) : (N = 1 + N, h && (h.b = !1));
                for (var g = 5; N = 1 + N, 0 & (h && (h.undefined = !0)) && 0 < --g; ) {
                    N = 1 + N, h && (h[--c + (N = 1 + N, 1)] = 0) || v && (v[r++ + (h += (N = 1 + N, 
                    0))] = 24);
                }
                for (var j = 5; h && 0 < --j; ) {
                    var $ = 5;
                    do {} while ((N += 1) + {
                        get foo() {
                            N = 1 + N, v && (v.c = !1);
                        },
                        1.5: (N = 1 + N, !(-0 | (v += [] >> s)))
                    } && 0 < --$);
                }
            }
        }
        try {
            N += 1, function() {
                var a = void (h && (h[r++ + (v && v.NaN)] = !1 >> "bar" - s));
                for (var n in a) {
                    N = 1 + N;
                    var e = a[n];
                    switch ("function" == typeof v && 0 <= --o && v(2, 22 ^ "undefined" * s !== !0, (N = 1 + (1 + N), 
                    (h += NaN) << (!0 <= 0 >>> f)))) {
                      case r++ + function() {
                            N = 1 + N, v &= 3;
                        }:
                        for (var i = 5; N = 1 + N, 0 < i; --i) {
                            N = 1 + N, N += 1;
                        }
                        break;

                      case function() {
                            N = 1 + (1 + (1 + N)), h && (h.b = (/[a2][^e]+$/ & this) / (v = {}));
                        }:
                        for (var t = 5; N = 1 + N, (h += NaN) <= -3 && 0 < --t; ) {
                            N = 1 + N, N += 1, N += 1;
                        }
                        break;

                      case 1 / 24:
                        break;

                      case -4:
                        switch (N = 1 + N, N += 1, 19 + (3 + (h && (h[N = 1 + N, (v = "undefined" % this || NaN) & (e && (e[N = 1 + N, 
                        0] *= !0)) < 0] >>= 3 << s)))) {
                          case N = 1 + N, !1:
                            break;

                          default:
                          case N = 1 + N, !1:
                          case N = 1 + N, 0 & !0 === (N += 1, "foo"):
                        }
                    }
                }
                var f = function() {
                    for (var a = 5; N = 1 + N, N += 1, 0 < --a; ) {
                        N = 1 + N, v && (v.var = "NaNb");
                    }
                    N += 1;
                }((v.NaN = 0, e += !1, N += 1));
                if ("" + ([ , !1, (N = 1 + ((N = 1 + N) + 1), 1) ][--c + (!1 ^ (h && (h[N = 1 + N, 
                (h = NaN) <= 0] = 0) || 0))] || r || 3)) {
                    try {
                        r++, N = 1 + N, N += 1, h /= -4 < f;
                    } catch (a) {
                        N = 1 + N;
                        try {
                            N = 1 + N, v && (v[r++ + new function() {
                                this.Infinity += 0 << (this >>> "undefined");
                            }()] %= !1 === NaN << (v && (v[N = 1 + N, 0] -= !0)));
                        } catch (a) {}
                    }
                }
            }(), c = --c + c--;
        } catch (r) {
            var m = 5;
            do {
                for (var _ = 5; h && h[v && v.NaN] && 0 < --_; ) {
                    --c, N = 1 + (1 + N);
                }
                var q = (N = 1 + N, (!0 ^ (N += 1, "bar")) / "0a");
                for (var x in q) {
                    var z = q[x];
                    N = 1 + (1 + N);
                }
            } while ((c &= r) && 0 < --m);
        }
        break;

      case h && h.NaN:
        r++;
        break;

      case r++ + ("function" == typeof z && 0 <= --o && z((N += 1) + c++)):
        var A = r++ + ("" + (r++ + z || 9))[r++ + {
            3: void 0,
            undefined: --c + void 0,
            "\t": (N += 1) + C ? c-- : void 0,
            undefined: --c + (c /= r),
            0: --c + +r
        }];
        for (var B in A) {
            N = 1 + N;
            var C = A[B];
            c--;
        }
    }
}

var D = r++ - 2;

for (var E in D) {
    var F = c += r;
    for (var G in F) {
        --c, c += r;
    }
}

console.log(null, r, c, N, 1 / 0, NaN, s);
original result:
null NaN 0 42 Infinity NaN undefined

uglified result:
null NaN 0 28 Infinity NaN undefined

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