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

Closed
alexlamsl opened this issue May 11, 2019 · 0 comments · Fixed by #3407
Closed

ufuzz failure #3406

alexlamsl opened this issue May 11, 2019 · 0 comments · Fixed by #3407
Labels

Comments

@alexlamsl
Copy link
Collaborator

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

switch (--b + (1 === 1 ? a : b)) {
  case typeof (typeof c_1 !== "object"):
    break;

  default:
  case --b + function NaN_2() {}():
    switch (a++ + new function() {
        this[(c = c + 1) + function NaN_1() {
            {
                var brake3 = 5;
                while ([ b = a, -((NaN_1 && (NaN_1.null = null || [ , 0 ].length === 2 || this != /[a2][^e]+$/)) + ((24..toString() != "function") >> ("bar" == 3))) ].in && --brake3 > 0) {
                    var brake4 = 5;
                    do {
                    } while (b-- && --brake4 > 0);
                }
            }
            {
                if (typeof f0 == "function" && --_calls_ >= 0 && f0((c = 1 + c, (c = c + 1, undefined >>> 1) % ((c = c + 1, 
                NaN) <= ({} === Infinity))), (c = 1 + c, (NaN_1 && (NaN_1.null = (NaN_1 && (NaN_1[(c = 1 + c, 
                ("undefined" ^ []) + (3 >> 4) != (NaN_1 += -4 * "b" != 4 >> NaN))] = 1 > 3)) >>> -2 / 24..toString())) <= (4 << "b" || Infinity == 0)))) {
                    switch (typeof f0 == "function" && --_calls_ >= 0 && f0()) {
                      case (c = c + 1) + NaN_1:
                        c = 1 + c, NaN_1 && (NaN_1.foo = (c = c + 1, 0) ^ undefined <= -4 || (NaN_1 = "function" > "undefined" ^ (23..toString() && -4)));
                        break;

                      case /[abc4]/.test(((c = 1 + c, ((undefined >= 3) >> 38..toString() - 23..toString()) * (38..toString() / NaN < (38..toString() == null))) || b || 5).toString()):
                        break;

                      default:
                        c = 1 + c, ([ , 0 ][1] <= "bar") * (c = c + 1, 23..toString()) !== (1 != -4 ^ ("number" ^ 22));
                        c = 1 + c, ([ , 0 ][1] - 4 > true - -3) % (NaN_1 && (NaN_1.c = "b" != 0 === "b" << 22));

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

                  case c = 1 + c, (3 == null) * (null === ([ , 0 ].length === 2)) !== (24..toString() != 1) - (0 | -4):
                    ;
                    break;

                  case c = 1 + c, ((undefined == [ , 0 ][1]) < (22 ^ "bar")) >>> ((22 !== -5) >= "number" >>> [ , 0 ][1]):
                    ;
                    break;

                  case c = 1 + c, ((null ^ false) != ("" ^ "a")) <= (null % 5 | (/[a2][^e]+$/ | 3)):
                    ;
                    break;
                }
            };
            1 === 1 ? a : b;
            break;

          case typeof f0 == "function" && --_calls_ >= 0 && f0():
            {
                var brake28 = 5;
                while ((c = c + 1) + ++a && --brake28 > 0) {
                    return a++ + void function foo() {
                        c = 1 + c, Infinity_2 = ("object" > "function") << (Infinity_2 = Infinity >= "object") & (bar_1 = 22 != 4) - ([], 
                        []);
                    }();
                }
            }
            c = c + 1;

          case a++ + (typeof f0 == "function" && --_calls_ >= 0 && f0(2, a++ + new function foo_1() {
                this.c = (Infinity_2 && (Infinity_2.var += 2 === ([ , 0 ].length === 2))) == "undefined" + -0 ^ (bar_1 %= (this ^ "function") < ("undefined", 
                "a"));
                {
                    var brake32 = 5;
                    do {
                        c = 1 + c, ((Infinity != "bar") >= null << false) + (Infinity_2 && (Infinity_2[((c = 1 + c, 
                        ([ , 0 ][1] % "foo" | 1 * 4) === (false / -0 === (Infinity_2 && (Infinity_2.NaN /= -4 >= "c")))) || 1).toString()[(c = 1 + c, 
                        c = c + 1, "function" ^ 1, -0 <= "function" <= (this || "c"))]] >>>= ("undefined" * 3, 
                        null, false)));
                    } while ((c = 1 + c, !(this !== 0) - (("" && false) >>> (-5 ^ 3))) && --brake32 > 0);
                }
                {
                }
                c = 1 + c, (Infinity_2 <<= -2 < 1 > "" >> /[a2][^e]+$/) + (0 % 3 != ("number", "b"));
                {
                    var expr36 = (c = 1 + c, ([ , 0 ].length === 2 ^ "object" && [] - "undefined") == null % "" - ("function" - -3));
                    for (var key36 in expr36) {
                        c = 1 + c;
                        var foo_1 = expr36[key36];
                        c = 1 + c, ([] << "bar" ^ 1 !== "function") + ((foo_1 && (foo_1[(c = 1 + c, foo_1 && (foo_1[a++ + {
                            0: (c = 1 + c, foo_1 && (foo_1[(c = c + 1) + "foo"] *= (bar_1 && (bar_1[foo_1] += ("c" ^ false, 
                            25 || -3))) - (0 / 4 - (-0 || [ , 0 ].length === 2))))
                        }] = (5 == 4 || "c" % 4) && 4 % -1 >> (22 ^ "b")))] *= -0 * -5)) ^ false >> 24..toString());
                    }
                }
            }())):
            {
                var brake38 = 5;
                do {
                    {
                        var expr39 = {
                            "": (c = 1 + c, bar_1 && (bar_1[a++ + (b += a)] = (2 != 23..toString() | NaN >>> this) !== (3 << [ , 0 ][1] != true + Infinity))),
                            "\t": (c = 1 + c, Infinity_2 && (Infinity_2.b >>= (Infinity_2 && (Infinity_2[Infinity_2] %= Infinity == undefined === (25 !== "c"))) | ("function" == 22) * ("b" > 3))),
                            in: (c = 1 + c, this - 1 >= (-0 > "a"), +(undefined && -0)),
                            length: (c = 1 + c, (c = c + 1, 24..toString()) ^ (Infinity_2 && (Infinity_2.foo += ([ , 0 ].length === 2) < ([ , 0 ].length === 2))), 
                            undefined >= 25 >= (true, 38..toString()))
                        }.length;
                        for (var key39 in expr39) {
                            for (var brake40 = 5; (c = c + 1) + +function() {
                            }() && brake40 > 0; --brake40) {
                                var brake41 = 5;
                                L31723: do {
                                    c = 1 + c, (5 | [ , 0 ].length === 2 | (bar_1 && (bar_1.null &= false << 2))) ^ -(null != ([ , 0 ].length === 2));
                                } while ((c = 1 + c, void (Infinity_2 = 2 - -1) !== (Infinity_2 && (Infinity_2[a++ + {
                                    0: (c = 1 + c, ~(Infinity ^ 3) ^ (Infinity_2 && (Infinity_2[--b + (typeof f1 == "function" && --_calls_ >= 0 && f1())] += (Infinity_2 && (Infinity_2[(c = 1 + c, 
                                    (c = c + 1, Infinity >> 2) - ("undefined" * -2 > -1 >>> 38..toString()))] = {} ^ "a")) | 0 < false)))
                                }.length] += delete Infinity >>> "" * -3))) && --brake41 > 0);
                            }
                        }
                    }
                } while (a++ + [ b = a ][22] && --brake38 > 0);
            }
            {
                var foo = (c = c + 1) + (b <<= a), parseInt_1 = (c = c + 1) + ((c = 1 + c, (2 < "number") + ("number" ^ 38..toString()) >>> (Infinity_2 && (Infinity_2[(c = 1 + c, 
                (3 && []) % (25 == -5) | 3 === -3 == [ , 0 ][1] < null)] >>>= 23..toString() * 22)) - (Infinity & -5)) ? (c = 1 + c, 
                !undefined - (/[a2][^e]+$/ == 25) === (bar_1 += -"b" | "c" * -0)) : (c = 1 + c, 
                ((undefined !== -2) + ("undefined" <= 4)) * (bar_1 && (bar_1[(c = c + 1) + +("b" >>> "b" >>> (true & -1) == (parseInt_1 && (parseInt_1[(c = 1 + c, 
                false + -0 & 4 + [] | (/[a2][^e]+$/ ^ /[a2][^e]+$/) > 38..toString() >>> "foo")] = 38..toString() < "undefined")) >>> ("object" ^ []))] ^= ([ , 0 ][1] | [ , 0 ][1]) < ("undefined" | -3)))));
            }
            break;
        }
        {
            var undefined = function f0(b, parseInt_1) {
                var Math_1;
                c = c + 1;
            }(b = a);
        }
        if (~b) {
            var brake50 = 5;
            while (-("number" < ([ , 0 ].length === 2) & 24..toString() < "number" && 3 == 24..toString() | ("a", 
            false)) && --brake50 > 0) {
                try {
                    {
                        var Infinity_2_1 = function f1(undefined, foo_1, parseInt) {
                            c = 1 + c, (bar_1 && (bar_1.undefined += -0 <= 0 && this ^ "number")) === (Infinity_2 && (Infinity_2.var = ("undefined" != 2) / ("number" != -1)));
                            c = 1 + c, (false == -2) * (Infinity * "foo") << (-5 == true ^ (foo_1 = -4 && [ , 0 ][1]));
                        }(-1);
                    }
                } catch (bar_2) {
                    {
                        var expr55 = [ (c = 1 + c, (/[a2][^e]+$/ <= ([ , 0 ].length === 2)) << ({} === -3) || Infinity_2 && (Infinity_2.c += "foo" - "b") && "c" + []), (c = 1 + c, 
                        ([ , 0 ].length === 2 & "object") / -"function" / ("a" - 22 === (38..toString(), 
                        true))), (c = 1 + c, 25 % 3 >>> (null !== "foo") && (1 === 22, NaN == "object")), (c = 1 + c, 
                        undefined << [] <= (4 && 2) < (([] == "object") <= ("object" == 23..toString()))) ];
                        L31724: for (var key55 in expr55) {
                            c = 1 + c;
                            var bar_2 = expr55[key55];
                            switch (c = 1 + c, (-1 + "function" && NaN - -3) >> ((Infinity, "object") == (parseInt_1 && (parseInt_1.a += 3 >> 2)))) {
                              default:
                                ;

                              case c = 1 + c, (22 / 3 > 4 << -0) >> (([ , 0 ].length === 2) <= "function" ^ false << -2):
                                ;
                                break;

                              case c = 1 + c, !(undefined || "a") * (undefined | 23..toString() && -3 != 1):
                                ;
                                break;

                              case c = 1 + c, ((-3 || null) & [ , 0 ][1] << 23..toString()) % ((undefined != "object") > (undefined <= [])):
                                ;
                                break;
                            }
                        }
                    }
                    -5;
                } finally {
                    {}
                    {
                        var expr59 = (c = c + 1) + (1 === 1 ? a : b);
                        for (var key59 in expr59) {
                            c = 1 + c;
                            var foo = expr59[key59];
                            var a_2 = (c = 1 + c, +((4 && null) === -5 / 2));
                        }
                    }
                }
            }
        }
    }()) {
      case (c = c + 1) + [ /[abc4]/.test((typeof ((c = c + 1) + [ b = a, a++ + a++, --b + (a && a.null) ][a++ + (b = a)]) || b || 5).toString()), a++ + void a, (c = c + 1) + delete b, a--, (c = c + 1) + a-- ].a:
        switch ((c = c + 1) + {
            b: 0 === 1 ? a : b,
            3: delete b,
            c: (null === -1 || ~-4) | ("b" + 0 || 25 >= 3),
            Infinity: new function a_2() {
                this[(c = c + 1) + +((c = c + 1, a_2 && (a_2[(c = 1 + c, (void -4, -4 >> Infinity) === ("a" | -2) / (-3 * undefined))] <<= 24..toString() ^ [])) | (a_2 && (a_2.b += -0 - 1)) != "" >= "undefined")] += ((([], 
                "foo") != -5 < {}) <= (([ , 0 ].length === 2 || -3) !== (false ^ 2))) - ((a_2 && (a_2.c = "c" << 1)) >> ("bar" & "c") < ("foo" | 23..toString() && "number" * 2));
                this.in = ((a_2 && (a_2[(c = 1 + c, ("a" != 4 !== -4 - true) < ((NaN || -1) != (NaN ^ /[a2][^e]+$/)))] >>>= 38..toString() | true)) - ([] == "function")) * ({} % null + null / 4) != (a_2 /= (22 <= "undefined" ^ (c = c + 1, 
                -3)) & "number" >>> this != -4 / -2);
                this.Infinity >>>= ((undefined * true > (c = c + 1, "object")) >> ("number" << []) + "b" * "c") / ((c = c + 1, 
                "") | "bar" + 3 || a_2 && (a_2[--b + ((c = 1 + c, a_2 += (undefined >>> 38..toString() && Infinity ^ {}) << ((-3, 
                5) !== (Infinity | 25))) ? (c = 1 + c, (38..toString() > {} ^ (a_2 && (a_2.undefined /= this * 3))) <= ("b" >= null) / (1 * 24..toString())) : (c = 1 + c, 
                (-2 >= "bar" < (Infinity !== 38..toString())) + (("b" && -1) ^ (true && [ , 0 ].length === 2))))] += (c = c + 1, 
                23..toString()) >> undefined * 1));
                {
                    var brake62 = 5;
                    while (function() {
                    }() && --brake62 > 0) {
                        L31725: for (var brake63 = 5; (c = 1 + c, (undefined | [ , 0 ].length === 2) - (undefined !== 4) | -5 === "object" !== (0 !== -3)) && brake63 > 0; --brake63) {
                            c = 1 + c, - -("number" != 23..toString());
                        }
                    }
                }
                switch (typeof foo_1 === "object") {
                  case b += a:
                    c = 1 + c, void Infinity - ("" + -4) == "c" < undefined < (this >= true);
                    break;

                  case 0 + false === (c = c + 1, 3) == (4 ^ false) + 24..toString() / 23..toString():
                    break;

                  case (c = c + 1) + a_2:
                    break;

                  case (c = c + 1) + (a_2 && a_2.undefined):
                    c = 1 + c, (-3 >> -5 && [ , 0 ][1] << "undefined") & [ , 0 ][1] >> 22 << (Infinity & "object");
                    break;
                }
            }(),
            "": typeof f2 == "function" && --_calls_ >= 0 && f2()
        }.b) {
          case --b + b--:
            {
                var brake69 = 5;
                L31726: do {
                    if (a++ + ((c = c + 1, -5 * null) === ("bar" - "b" ^ "function" < "number"))) {
                        c = c + 1;
                    } else {
                        switch (--b + (b = a)) {
                          default:
                          case --b + new function bar_1() {
                                c = 1 + c, (bar_1 && (bar_1[(c = 1 + c, (25 % "function" || "foo" - null) + (-5 + null >= "a" / "c"))] &= "bar" + 23..toString())) + (24..toString() ^ 0) << (("", 
                                2) | !"foo");
                            }():
                            c = c + 1;
                            switch (c = 1 + c, -((a && (a[(c = 1 + c, a = ((22 && "b") + (a && (a.c += "function" < Infinity)), 
                            -0 + "foo" == (23..toString() != "bar")))] &= [ , 0 ][1] >> "bar")) >= this >> undefined)) {
                              case c = 1 + c, "undefined" - 25 < ([ , 0 ][1] > "number") | null - "undefined" ^ "foo" - false:
                                ;
                                break;

                              case c = 1 + c, (a && (a.foo += delete 25 & (c = c + 1, 22))) < ((24..toString() || /[a2][^e]+$/) && "b" > "b"):
                                ;
                                break;

                              case c = 1 + c, a *= "b" <= "object" === (/[a2][^e]+$/ ^ undefined) & (/[a2][^e]+$/ > "" ^ 3 % "b"):
                                ;
                                break;

                              case c = 1 + c, ~(a && (a[(c = 1 + c, a && (a.foo += [ , 0 ][1] * "" - (2 & []) ^ (a && (a.in = (3 || 25) && (1 && "c")))))] += [] ^ "")) > ((c = c + 1, 
                                Infinity) < (c = c + 1, "object")):
                                ;
                                break;
                            }
                            break;

                          case a++:
                            try {
                                c = 1 + c, -(([ , 0 ][1] | 1) < (a && (a.c = Infinity * this)));
                            } finally {
                            }
                            break;

                          case (b-- || a || 3).toString():
                            break;
                        }
                    }
                } while (++b && --brake69 > 0);
            }
            for (var brake78 = 5; a++ + (a && a[--b + typeof Math_1]) && brake78 > 0; --brake78) {
                c = c + 1;
            }
            break;

          case b--:
            {
                var expr80 = b--;
                for (var key80 in expr80) {
                    {
                        var brake81 = 5;
                        L31727: do {
                            {
                                var foo = function parseInt(undefined_2) {
                                    c = 1 + c, (undefined_2 && (undefined_2.null <<= (22 & 2) / (-5 === 0))) % ((3, 
                                    "number") !== ([ , 0 ].length === 2) >> "c");
                                    c = 1 + c, (("b" & "function") != "number" + 4) + ((this, -0) << (-1 < 1));
                                }(23..toString(), (c = 1 + c, ((a && (a.undefined += 24..toString() % -2)) === (-2 == 25)) > (undefined == 24..toString() == (a && (a[(c = 1 + c, 
                                (4 - 22 == (-4 || true)) + (a && (a.foo += ("b" > "undefined") - (this ^ undefined))))] = -1 < [ , 0 ][1])))));
                            }
                        } while (--b + (0 === 1 ? a : b) && --brake81 > 0);
                    }
                }
            }
            {
                var brake85 = 5;
                while ((c = c + 1) + b-- && --brake85 > 0) {
                    try {
                        {
                            var brake87 = 5;
                            do {
                                {
                                    var brake88 = 5;
                                    do {
                                        c = c + 1;
                                    } while ({} && --brake88 > 0);
                                }
                            } while ((c = c + 1) + function() {
                                c = 1 + c, (a >>= -5 - /[a2][^e]+$/ == (/[a2][^e]+$/, 2)) ^ ("" ^ undefined) !== "foo" < 23..toString();
                            }() && --brake87 > 0);
                        }
                    } catch (arguments_1) {
                        var NaN = void ((/[a2][^e]+$/ & -0) % ("bar" >> 3) < ~(0 | NaN));
                        c = c + 1;
                    } finally {
                        switch (a) {
                          default:
                          case 1 === 1 ? a : b:
                            break;

                          case a++:
                            break;

                          case ((a = "b" || "undefined") >>> ([ , 0 ][1] == -1)) + ((a && (a[(c = 1 + c, ((5 !== -3) <= ("number" & /[a2][^e]+$/)) << ("" > [] != [ , 0 ][1] * Infinity))] = {} - false)) < -4 >>> 24..toString()):
                            break;
                        }
                        {
                            var expr94 = (c = c + 1) + [ (c = 1 + c, ((a += "object" !== -3) !== ([] != 22)) - ("" && NaN) / (2 ^ -5)), (c = 1 + c, 
                            (2 * /[a2][^e]+$/ > (false > 24..toString())) - ((-1 != "function") >= ({} || "undefined"))) ];
                            L31728: for (var key94 in expr94) {
                                {
                                    var brake95 = 5;
                                    do {
                                        c = 1 + c, (([ , 0 ][1] === "foo") + ("number" < [ , 0 ][1])) * (0 > "bar" <= ({} > ([ , 0 ].length === 2)));
                                    } while ((c = 1 + c, (3 / [] && 2 - 25) ^ ("object" & -3) << ("object" >= 25)) && --brake95 > 0);
                                }
                            }
                        }
                    }
                }
            }
            break;

          case +function Infinity_1() {
                try {
                    if (--b + (b = a)) {
                        c = c + 1;
                    }
                } catch (bar_2) {
                    for (var brake100 = 5; typeof f1 == "function" && --_calls_ >= 0 && f1((c = 1 + c, 
                    c = c + 1, (false & "foo") != (Infinity, "object")), (c = 1 + c, bar_2 += ("b" <= null) % (NaN >>> 23..toString()) < ([] == 24..toString() != (NaN !== 3)))) && brake100 > 0; --brake100) {
                        for (var brake101 = 5; (c = 1 + c, (-4 / "b" == (24..toString() || "")) >>> ("a" % "object" > (0 && 24..toString()))) && brake101 > 0; --brake101) {
                            c = 1 + c, !-5 >>> (c = c + 1, Infinity) !== (c = c + 1, -3 < undefined);
                        }
                    }
                    return (c = c + 1) + (typeof f1 == "function" && --_calls_ >= 0 && f1());
                }
            }():
            L31729: {
                {
                    var brake105 = 5;
                    while (((c = c + 1) + --b || 9).toString()[(c = c + 1) + (a ^= (c = 1 + c, (-4 ^ -2) - -5 % "function" + (true >> "function" >= "a" >> 2)))] && --brake105 > 0) {
                        var brake106 = 5;
                        while ([][(c = 1 + c, ((a = {} && "a") ^ (undefined, [ , 0 ][1])) >>> ("" != {} | 1 % "bar"))] && --brake106 > 0) {
                        }
                    }
                }
            }
            break;

          default:
            var c_1 = c_1 = c_1;
            {
                var brake109 = 5;
                while (b++ && --brake109 > 0) {
                    var brake110 = 5;
                    do {
                        switch (b--) {
                          case (c = c + 1) + c_1:
                            break;

                          case (c = c + 1) + (c_1 += a++ + function() {
                            }()):
                            {
                            }
                            if (c = 1 + c, this * ([ , 0 ].length === 2) & Infinity - "function" || 1 % "foo" + (c = c + 1, 
                            "undefined")) {
                                c = 1 + c, ((/[a2][^e]+$/ !== "b") >> "foo" * 2) - ("undefined" < 2 > (false, "foo"));
                            }
                            break;

                          case --b + -4:
                            {
                            }
                            var foo = (c = 1 + c, ("number" != 1) < (23..toString() ^ 4) ^ (true ^ 4) << -0 + 25), a_1 = (c = 1 + c, 
                            ((a_1 && (a_1.undefined *= -3 >> 5)) ^ (a_1 && (a_1.a += 5 !== 0))) * ("" * "a" || -5 | 24..toString()));
                            break;

                          default:
                        }
                    } while ((c = c + 1, [ , 0 ][1] <= 38..toString() != (a_1 && (a_1.c = 38..toString() >>> Infinity))) && --brake110 > 0);
                }
            }
        }
        ;
        break;

      default:
        var foo_1 = (c = c + 1, 2 && "undefined") << ((-5 || -3) ^ ("c" ^ "undefined"));
        {
            var expr119 = --b + (a++ + !b || 0).toString()[(c = c + 1) + typeof "c"];
            for (var key119 in expr119) {
                c = 1 + c;
                var foo_1 = expr119[key119];
            }
        }

      case --b + 0:
        {
            var a_2 = function f2() {
                c = c + 1;
                try {
                    return (c = c + 1) + a++;
                } finally {
                    return (c = c + 1) + ((c = 1 + c, (null, "undefined") << (a_1 && (a_1.NaN += /[a2][^e]+$/ !== this)) ^ (3 || "c") <= "bar" << -4) || a || 3).toString();
                    L31730: for (var brake126 = 5; {} && brake126 > 0; --brake126) {
                        if (c = 1 + c, (c = c + 1, -5) - Infinity / -0 ^ ("", -4) >> (-1 ^ 2)) {
                            c = 1 + c, (c_1 && (c_1[--b + ("c" >>> -3 << ([] ^ undefined) & "undefined" == "c" != ([ , 0 ].length === 2) % [ , 0 ][1])] >>>= "object" !== ([ , 0 ].length === 2) & -2 >>> 24..toString())) >> ("bar" !== "undefined" != (c = c + 1, 
                            "number"));
                        }
                    }
                }
            }("function", --b + (a_2 = "object"), "undefined");
        }
        c = c + 1;
        break;

      case --b + (typeof f0 == "function" && --_calls_ >= 0 && f0("number", "c")):
        L31731: {
            c = c + 1;
            {
                for (var brake133 = 5; +b && brake133 > 0; --brake133) {
                    var bar_1 = function f3(a_2_2, arguments_1, bar) {
                    }("c", 0);
                }
                {
                    var brake135 = 5;
                    do {
                        c = c + 1;
                    } while (--b + (bar_1 && bar_1[a++ + (typeof f5 == "function" && --_calls_ >= 0 && f5(-1, (c = 1 + c, 
                    (bar_1 && (bar_1[(c = 1 + c, (undefined - -2) * (-1 === -5) ^ ([ , 0 ].length === 2 || 0) >> (a_1 && (a_1[(c = 1 + c, 
                    -4 ^ null ^ (a_1 && (a_1.in /= 2 | /[a2][^e]+$/)) ^ (NaN, 1) >> 0 / true)] += -1 < [ , 0 ][1])))] -= 23..toString() != null)) >= ([ , 0 ][1] ^ 0) < (-4 ^ "undefined") >>> (a_2 && (a_2.c = {} - this)))))]) && --brake135 > 0);
                }
                if (typeof f2 == "function" && --_calls_ >= 0 && f2((c = 1 + c, foo_1 && (foo_1[b--] = (null << -3 ^ 25 << 1) >>> ((c = c + 1, 
                24..toString()) && "undefined" >= -2))), "a", (c = 1 + c, this >= 3 <= (bar_1 && (bar_1[(c = 1 + c, 
                (([ , 0 ].length === 2) < false) / ("foo" != 24..toString()) >= (foo_1 && (foo_1[--b + a_2] += + -5 | 22 != "object")))] %= "b" || "undefined")) < (-3 == null | NaN <= "bar")))) {}
            }
            L31732: {
                a++ + {
                    0: (c = 1 + c, ((c_1 && (c_1[(c = 1 + c, ((38..toString() || "a") + -1 * "function") / ((-5 > -2) - -3 % "number"))] = "number" << -1)) === {} / 4) % ((foo_1 && (foo_1.b += 38..toString() + -5)) !== 1 - {})),
                    length: (c = 1 + c, ([ , 0 ].length === 2 != 23..toString() || [] * "function") * (/[a2][^e]+$/ >>> 3 >> (24..toString() > "foo")))
                }.length;
            }
        }
        try {
            --b + ~a;
        } catch (a) {
            L31733: for (var brake145 = 5; --b + {
                "": a++ + (--b + {
                    1.5: (c = 1 + c, (23..toString() < 4 == ([ , 0 ].length === 2) << "c") > (NaN << null && [ , 0 ][1] != 24..toString())),
                    undefined: (c = 1 + c, (foo_1 && (foo_1[foo_1 && foo_1.b] = [ , 0 ][1] && 1 || 24..toString() < "bar")) ^ (true && 0) * ("bar" !== 0))
                }.c ? (c = c + 1) + (1 === 1 ? a : b) : (c = c + 1) + (0 === 1 ? a : b)),
                "": (this - this >> ("function" || 1)) / (2 * "foo" ^ true * null) ? a++ + {
                    3: (c = 1 + c, (c = c + 1, "undefined" != -0) > ([ , 0 ][1] === Infinity ^ "" >>> 23..toString())),
                    1.5: (c = 1 + c, (c = c + 1, 38..toString() > []) % (!23..toString() % ([ , 0 ][1] != []))),
                    var: (c = 1 + c, (-2 % true < -0 / "undefined") % ((this ^ "a") + (foo_1 && (foo_1[(c = 1 + c, 
                    (1 <= 1) << (null <= -3) >= (Infinity % "bar" || true | [ , 0 ].length === 2))] += -4 != 4)))),
                    undefined: (c = 1 + c, (-0 !== 22 ^ (a_1 && (a_1.in += null !== /[a2][^e]+$/))) & (-4 ^ NaN) < (22 && false)),
                    c: (c = 1 + c, ("c" << /[a2][^e]+$/ | 24..toString() + "a") & (bar_1 && (bar_1[(c = c + 1) + delete ((({}, 
                    -2) ^ 4 >= -2) / (38..toString() - NaN === (-2 & undefined)))] >>= (foo_1 >>= 3 === -3) / (-3 > ([ , 0 ].length === 2)))))
                }[(c = 1 + c, (foo_1 /= (5 == this, "object" | false)) >> ("object" * "object" > ([ , 0 ][1] === 22)))] : --b + (typeof bar_1 == "unknown"),
                in: [ (c = 1 + c, (c = c + 1, []) !== 3 >>> "foo" !== (("undefined" | 1) == (this !== undefined))) ],
                1.5: a++ + ((c = c + 1) + ((c = 1 + c, (24..toString() >> 22 ^ 5 * 24..toString()) === {} / "" - (c = c + 1, 
                "number")) ? (c = 1 + c, a_1 && (a_1.null += (foo_1 && (foo_1[[ (c = 1 + c, (undefined === 1) <= (false > undefined), 
                true ^ [] ^ void ""), (c = 1 + c, ([ , 0 ].length === 2) / 25 - (NaN >> "number") ^ ("foo" ^ 1) >> (a_2 && (a_2[(c = 1 + c, 
                ([ , 0 ].length === 2) > 5 < Infinity * NaN <= (bar_1 && (bar_1[--b + bar_1] = "a" % Infinity + (38..toString() != [ , 0 ][1]))))] = this % true))) ]] = ("b" && "function") << -5 - 22)) >> (1 >> "number" & (-2 ^ 25)))) : (c = 1 + c, 
                (c_1 && (c_1.null = (this >= 0) >>> ("object" !== Infinity))) >> ((Infinity & false) == 3 >>> NaN))) || a || 3).toString()
            } && brake145 > 0; --brake145) {
                (c = c + 1) + (typeof c_1 == "function" && --_calls_ >= 0 && c_1("undefined", false, undefined));
            }
            var a_1 = (c = c + 1) + !function foo_2() {}(), a_1 = b++;
        }
    }
    break;

  case typeof f4 == "function" && --_calls_ >= 0 && f4(25):
    {
        var expr148 = a_1 && a_1.null;
        L31734: for (var key148 in expr148) {
            c = 1 + c;
            var bar = expr148[key148];
        }
    }
    if (delete (+"" / ("a" >>> NaN) >= (foo_1 && (foo_1.b -= null ^ 3), 24..toString() > 0))) {} else {
        switch (-{} - (foo_1 && (foo_1[(c = 1 + c, a_1 && (a_1[typeof c_1 == "function" && --_calls_ >= 0 && c_1()] >>>= (5 + this ^ -0 != {}) == ((c_1 && (c_1.NaN = "c" * 5)) !== -2 * -1)))] -= this > 25)) >> (("number", 
        24..toString()) << (bar_1 && (bar_1.undefined = 25 % false)))) {
          case void (24..toString() > -0 === ("object" | []) & (1 & this) !== (38..toString() && 25)):
            {
                var brake153 = 5;
                do {
                    L31735: {
                        {
                            var a_1 = function a_1_2() {
                            }((c = 1 + c, ("foo" < -1) >> (c = c + 1, "undefined") || 5 == 4 !== 4 * 1), (c = 1 + c, 
                            4 != undefined ^ "b" % true ^ (0 ^ []) !== (a_2 = {} < -4)), (c = 1 + c, (c = c + 1, 
                            -5 - "c") % ("undefined" < true !== ([ , 0 ].length === 2) <= 23..toString())));
                        }
                    }
                } while (a++ && --brake153 > 0);
            }
            break;

          case a++ + (-undefined >= (23..toString() & NaN)) * (-2 - 1 == NaN * 5):
            for (var brake156 = 5; a++ + (bar_1 %= {
                var: 22,
                1.5: a++ + (b += a)
            }[--b + {
                NaN: {
                    1.5: (c = 1 + c, (c_1 && (c_1.undefined -= (c = c + 1, "c") % (foo_1 && (foo_1.in = [] - this)))) >>> ("a" >>> this << 38..toString() / "c"))
                }.in,
                NaN: bar_1 %= (c = 1 + c, -((c = c + 1, -3) === (/[a2][^e]+$/, {})))
            }[(c = c + 1) + !function() {
                c = 1 + c, undefined < NaN >= 3 / [] >= ((/[a2][^e]+$/ ^ -0) < (Infinity !== 2));
                c = 1 + c, 2 << "" >> (22 > -0) < ("foo" > -2) - (-0 || "bar");
            }()]]) && brake156 > 0; --brake156) {
                var b_1;
            }
            break;

          case a++ + --b:
            switch (("a" ^ [], [ , 0 ][1] / 1) + (true && null && "foo" === 4)) {
              case bar_1:
                break;

              case --b + (b = a):
                break;

              default:
                if ((c = c + 1) + (typeof f5 == "function" && --_calls_ >= 0 && f5(-3, 24..toString()))) {
                    var parseInt = a++ + [ (c = 1 + c, c = c + 1, -0 >= 1, -5 % -5 & !-0), (c = 1 + c, 
                    ("" == 25) >= (c = c + 1, "foo") || "foo" / 4 < "number" << -5) ][(c = c + 1) + a_1];
                }
                for (var brake163 = 5; a++ + 0 && brake163 > 0; --brake163) {
                    var a_1_1;
                }

              case (c = c + 1) + [ --b + (c_1 && c_1.var), /[abc4]/.test((--b + (1 === 1 ? a : b) || b || 5).toString()), a++ + {
                    length: --b + (typeof f3 == "function" && --_calls_ >= 0 && f3("bar", 3)),
                    "\t": (c = c + 1) + ++a,
                    0: "b",
                    NaN: --b + {}.undefined
                }.c ].foo:
                var b_2 = b + 1 - .1 - .1 - .1;
                for (var brake166 = 5; a++ + --b && brake166 > 0; --brake166) {
                    switch ((c = c + 1) + delete ((c_1 = -3 + Infinity | -"c") & ("function" !== 5) * ("number" >>> null))) {
                      case [ (c = 1 + c, (22 & 4) != !24..toString(), (-4 ^ NaN) & 5 - "number") ].foo:
                        switch (c = 1 + c, (38..toString() !== -5) * (25 !== Infinity) ^ (2 == "undefined") <= (a_1 && (a_1.a = 24..toString() != 4))) {
                          case c = 1 + c, 23..toString() % "undefined" == ("b" && "b") && 1 * 25 - ("b" & "bar"):
                            ;

                          case c = 1 + c, (null === -3) * (undefined != Infinity) - ("a" * Infinity ^ +([ , 0 ].length === 2)):
                            ;
                            break;

                          case c = 1 + c, (3 & "b") == (c = c + 1, "a") | "c" + Infinity ^ undefined >> 3:
                            ;
                            break;

                          case c = 1 + c, ((2 || 25) > (-3 | -5)) * ((/[a2][^e]+$/ || 5) == 38..toString() >= 4):
                            ;
                            break;
                        }
                        switch (c = 1 + c, (a_2 && (a_2.NaN = -4 + 25 || [ , 0 ].length === 2 != 38..toString())) - (+4 + -4 / "object")) {
                          case c = 1 + c, c = c + 1, [] / ([ , 0 ].length === 2) >= (24..toString() && NaN):
                            ;
                            break;

                          case c = 1 + c, (0 ^ {}) * ("object" != -4) === (b_2 && (b_2[(c = 1 + c, (-0 ^ undefined) >> ("object" <= Infinity) >= (([ , 0 ].length === 2) >> "undefined" ^ "number" - "a"))] += "function" === {})) / ("a" === -5):
                            ;
                            break;

                          default:
                            ;

                          case c = 1 + c, (a_1 && (a_1[(c = 1 + c, (a_1 += (a_1 && (a_1[(c = 1 + c, (2 >= "b" < undefined >>> [ , 0 ][1]) >>> ("function" >= "number" > ([ , 0 ][1] ^ 0)))] += Infinity ^ /[a2][^e]+$/)) - void "function") == (this < true === this <= 1))] = 2 != ([ , 0 ].length === 2))) + (2 !== 5) < ("bar" % true == (a_1 &= Infinity % -5)):
                            ;
                            break;
                        }
                        break;

                      case {
                            length: (c = 1 + c, 38..toString() == false & (bar_1 = [ , 0 ][1] ^ -4) ^ [] << 22 < (false !== "c")),
                            "\t": (c = 1 + c, foo_1 && (foo_1.NaN = (4 % "number" & +"") <= ("a" || 24..toString()) * (c_1 && (c_1[(c = 1 + c, 
                            a_1 && (a_1.in = (+ -3 | 0 == /[a2][^e]+$/) << (undefined === -1 | (c = c + 1, "function"))))] = {} <= "a")))),
                            "-2": (c = 1 + c, ((c = c + 1, "function") || 23..toString() === "a") >> (this >>> "bar" >>> (24..toString() && Infinity)))
                        }.null:
                      default:
                      case a++ + a++:
                        break;
                    }
                }
                break;
            }
            break;

          case ++b:
            for (var brake170 = 5; (c = c + 1) + (0 === 1 ? a : b) && brake170 > 0; --brake170) {
                var expr171 = (c = c + 1) + {
                    null: typeof foo_1 === "boolean",
                    undefined: (c = c + 1) + [ (c = 1 + c, -4 < [ , 0 ][1] <= 3 - NaN & [] << "object" == (a_1 = "a" < {})), (c = 1 + c, 
                    (b_2 && (b_2["b"] = ([ , 0 ][1] <= this) * ("undefined", "b"))) !== (a_1 -= ("function" == [ , 0 ][1]) >> 22 + 23..toString())), (c = 1 + c, 
                    (5 & "function") << (-0 >>> 3) != (a_1 && (a_1[(c = c + 1) + {
                        var: (c = 1 + c, c = c + 1, {} - "object", ("number" >= "function") * (false ^ 3)),
                        Infinity: (c = 1 + c, (1 == [ , 0 ][1]) * (NaN >> 24..toString()) << (false + 4 || (c_1 = 3 - 38..toString())))
                    }.NaN] += void 25 / (-4 && 24..toString())))), , (c = 1 + c, (-5 | true, -4 && "bar") ^ "number" - {} > ([ , 0 ][1] <= "c")) ].foo,
                    3: {
                        b: (c = 1 + c, ("foo" % -2 | ("object" || -2)) == (/[a2][^e]+$/ && -5) <= delete 23..toString()),
                        length: (c = 1 + c, NaN <= this != (true & "undefined") ^ (({}, 25) && (foo_1 && (foo_1[(c = 1 + c, 
                        ("b" ^ /[a2][^e]+$/) & (2 && NaN), Infinity * "bar" - ([ , 0 ][1] && undefined))] = "a" * "")))),
                        "": (c = 1 + c, a_1 && (a_1.var += (-1 % this > 24..toString() / undefined) + (22 % 5 >= void "number"))),
                        length: (c = 1 + c, "a" * 4 >> "c" + "function" !== (c = c + 1, foo_1 = "a" < /[a2][^e]+$/)),
                        c: (c = 1 + c, delete 5 <= (a_1 && (a_1.undefined >>= undefined >>> -2)) == ([ , 0 ].length === 2 & /[a2][^e]+$/, 
                        "b" <= "c"))
                    }.a
                }[(c = c + 1) + (b_2 && b_2[""])];
                for (var key171 in expr171) {
                    c = 1 + c;
                    var a_2 = expr171[key171];
                    [ --b + (typeof f2 == "function" && --_calls_ >= 0 && f2(this, "foo")), --b + ++a, , a_1 ].b;
                }
            }
            break;
        }
    }
    break;
}

c = c + 1;

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

switch (--b + a) {
  case typeof ("object" != typeof c_1):
    break;

  default:
  case --b + void 0:
    switch (a++ + new function() {
        switch (this[(c += 1) + function e() {
            for (var r = 5; [ b = a, -((e.null = !0) + 1) ].in && 0 < --r; ) {
                var o = 5;
                do {} while (b-- && 0 < --o);
            }
            if ("function" == typeof f0 && 0 <= --_calls_ && f0((c = 1 + c, c += 1, (l >>> 1) % (c += 1, 
            NaN <= !1)), (e.null = (e[(c = 1 + (c = 1 + c), 0 != e + (0 / 0 != 4 >> NaN))] = !1) >>> -2 / "24") <= 4)) {
                switch ("function" == typeof f0 && 0 <= --_calls_ && f0()) {
                  case (c += 1) + e:
                    c = 1 + c, e.foo = (c += 1, 0 ^ l <= -4 || -4);
                    break;

                  case /[abc4]/.test((c = 1 + c, ((3 <= l) >> 15) * ("38" / NaN < !1) || b || 5).toString()):
                    break;

                  default:
                    c = 1 + c, c = 1 + (c += 1), e.c = !1;

                  case --b + {
                        null: (c = 1 + c, -1),
                        c: (c = 1 + c, 0 != (c += 1, 0 / 0))
                    }:
                }
            } else {
                c += 1, b += a;
            }
            return a--;
        }] *= (c += 1, !((25 ^ this ^ !0 ^ l) << !1 == (0 ^ (3 != l || 0)) <= (0 != (c += 1, 
        -5) | (a += !1) >> !0)) % ((2 !== (a |= 0 / 0) >= (a && (a.Infinity += 0 / 0)) ^ (void (a = 0) || -(a && (a[(c = 1 + c, 
        0 - ((a && (a[(c = 1 + c, a /= 0 / 0 < (a && (a.foo = 25)) ^ !1)] += !0)) < 38))] = -2)))) >>> (a && (a[[ --b + [ (c = 1 + c, 
        !0), (c = 1 + c, !0), (c = 1 + c, (a && (a.null = "a-4")) % !1 % (0 & (a -= !0))), (c = 1 + c, 
        !1 === !1 % (this - -3)), (c = 1 + c, "c" < NaN < (c += 1, 3) ^ !1) ].null, (c = 1 + c, 
        !1 * (1 ^ l) && (c += 1, !1)), (c = 1 + c, 0 | (a %= 0 == (c += 1, -0)) || a || 3).toString(), a++ + new function a() {
            this[(c = 1 + c, (a.undefined = "" != this) % !1 !== (-5 != l != "undefined"))] += 1 == this, 
            this[(c = 1 + c, c += 1, 0 / 0)] += !0, this.NaN |= 0;
        }() ][a++ + ("function" == typeof a && 0 <= --_calls_ && a((c = 1 + c, 1 == (c += 1, 
        !0) !== (1 ^ (a && (a.var += 0)))), (c = 1 + c, ("" & NaN) << 0 === (this <= !1 == 1)), !0))]] = (!1 <= (this >> 4 <= 0)) << ("number" >>> (-4 < l) != (-12 != !1 >>> l)))) ^ (a += -6 < (a && (a[(c = 1 + c, 
        5 >>> (this >>> "b") < .5 + ("" ^ l))] = !0) || NaN >>> !0) === (0 != (a && (a[(c = 1 + c, 
        c += 1, -3 / (a && (a.Infinity ^= 0)) < !1 * (l << -3))] = !1)) & 0) && !1 >> (!0 >>> (!1 >>> -3 - NaN)))) >> ((1 + ((1 == (2 != l << 1)) >>> ((a && (a[{
            3: (c = 1 + c, a && (a.var = 0 / 0) || -0),
            c: (c = 1 + c, (a && (a.Infinity += 3 << -4)) + !0 || !1),
            a: (c = 1 + c, 0 + (a = 0)),
            length: (c = 1 + c, 0),
            c: (c = 1 + c, (1 == ("object" === NaN)) <= 1)
        }[(c = 1 + c, !1 & (c += 1, -4) ^ (c += 1, !0))]] = !0)) >> !0)) || NaN % -5 != (c += 1, 
        !1) !== 0 && 1 / 0 == (a && (a[(c += 1) + (c = 1 + c, !0)] += !1)) / (a && (a.foo += 1))) > (((0 ^ (c += 1, 
        0)) >>> 8) / ((a = !1) / (a && (a[(c = 1 + c, 1)] += 5)) ^ 0 / 0 != (3 & NaN)) >> (a && (a[a += (c = 1 + c, 
        0)] = 22 * (l && "b") < (25 != (-0 | this)))) * ((a = (a = !1) < 1) >= (a && (a[(c = 1 + c, 
        (a |= !1) != (a && (a[(c = 1 + c, -0 ^ -3 << -2)] ^= !0)) ^ 0 / 0 <= (NaN && 5))] = 0))) || ((0 ^ (c += 1, 
        4)) != 0 < (l <= /[a2][^e]+$/)) % 1 >> (a += !1 + !l << !0) - (a = (a && (a[(c = 1 + c, 
        0)] >>>= "23" != l)) >> !0 !== !1)))), void (this.Infinity += (((a &= (1 != (114 & (a && (a[(c = 1 + c, 
        4 >>> (a && (a[(c = 1 + c, typeof (("23" % NaN == 0) - (a = (a = "a") & (a = !1))))] = 0)))] = /[a2][^e]+$/ + 22)))) > (18 ^ "a" << (-5 < NaN)) < (0 / 0 >= (c += 1, 
        -15) == 0)) & (c += 1, !0)) != (((a && (a[(c = 1 + c, !0 ^ !(l % 22))] >>>= 39)) - "undefined" && !1) >>> (0 | (a &= 21)) >= ("undefinedobject" <= (-1 | this && 0)) + ((26 | l >>> "38") << (1 == (a && (a[(c = 1 + c, 
        a && (a[(c += 1) + (a && (a.foo += !1 === (l & /[a2][^e]+$/) ^ 0))] = (c += 1, (a && (a.a = !1)) >= (this < 0))))] >>= 0 / 0)))) == ((a && (a[b >>>= a] = (l || "foo") >> (c += 1, 
        "b" << NaN))) ^ -0 * (a && (a[(c = 1 + c, (1 == l >> l) >= (0 < (c += 1, -1)))] = 23)) & (0 | (a && (a[--b - 0] += "undefined" < NaN < (a && (a[(c = 1 + c, 
        (a = 0) <= 2 != 1)] ^= -3)))))))) % (a += !1 >>> (!0 < (c += 1, -4)), (a = -1 >>> 5) && (a.in = /[a2][^e]+$/ ^ this || -1), 
        a && (a[a /= (c = 1 + c, !0)] &= !1), c += 1, a && (a[b = a] = -1), a && (a.null += (c += 1, 
        (l + !1 || 369098753) <= !0)), c += 1, ((0 | (a && (a[(c = 1 + c, !0 === (2 < this ^ this < "number"))] = !0))) < "23") * (0 == 0 / 0 < (a && (a.undefined += !1)) ^ ("" % NaN && 24) == -this / (a && (a[(c = 1 + c, 
        !0 !== (c += 1, "undefined") ^ (c += 1, !1))] = {}))) != (c += 1, !1 === ((a = l % {} ^ !0) && (a.var *= !1)) | 0 ^ 5 == (c += 1, 
        ""))))) {
          case +function e() {
                var r = 5;
                do {
                    if (!((c += 1) + (b >>>= a))) {
                        return ((e[(c = 1 + (c = 1 + c), c += 1, !1)] += 0 / 0) <= 25) << !1;
                    }
                    for (var o = 5; c = 1 + (c = 1 + c), delete l == (l & NaN) < !0 && 0 < --o; ) {}
                } while ([ (c = 1 + c, !1 ^ (c += 1, c += 1, 3)), (c = 1 + c, 0 ^ (e.b = 0) && !0), (c = 1 + c, 
                ((e.a += 0 / 0) && !1) / (-1 / 0)) ][a] && 0 < --r);
            }():
          case a++ + a--:
            var i = a--, n = a++ + function() {
                switch (c = 1 + c, !0 ^ (n = (n /= -2) >>> !1)) {
                  default:
                  case c = 1 + c, !0:
                  case c = 1 + c, ((0 == l) < 22) >>> !0:
                  case c = 1 + c, !0:
                }
            };
            break;

          case "function" == typeof f0 && 0 <= --_calls_ && f0():
            for (var e = 5; (c += 1) + ++a && 0 < --e; ) {
                return a++ + (c = 1 + c, void (n = !0 << (n = !1) & (i = !0) - []));
            }
            c += 1;

          case a++ + ("function" == typeof f0 && 0 <= --_calls_ && f0(2, a++ + new function() {
                this.c = "undefined0" == (n && (n.var += !1)) ^ (i %= ("function" ^ this) < "a");
                for (var e = 5; c = 1 + c, n && (n[("" + (c = 1 + c, 4 === (0 / 0 === (n && (n.NaN /= !1))) || 1))[(c = 1 + c, 
                c += 1, !1 <= (this || "c"))]] >>>= !1), c = 1 + c, !(0 !== this) - 0 && 0 < --e; ) {}
                n <<= !0;
                var r = (c = 1 + (c = 1 + c), !1);
                for (var o in r) {
                    var f = r[o];
                    c = 1 + (c = 1 + c), f && (f[(c = 1 + c, f && (f[a++ + {
                        0: (c = 1 + c, f && (f[(c += 1) + "foo"] *= (i && (i[f] += 25)) - -1))
                    }] = 0 / 0))] *= 0);
                }
            }())):
            var r = 5;
            do {
                var o = (c = 1 + c, i && (i[a++ + (b += a)] = !0 !== (!0 | NaN >>> this)), c = 1 + c, 
                n && (n.b >>= 0 | (n && (n[n] %= 1 / 0 == l == 1))), c = 1 + (c = 1 + c), c += 1, 
                n && (n.foo += !1), "38" <= (25 <= l));
                for (var f in o) {
                    for (var t = 5; (c += 1) + 0 / 0 && 0 < t; --t) {
                        for (var s = 5; c = 1 + c, i && (i.null &= 0), c = 1 + c, void (n = 3) !== (n && (n[a++ + {
                            0: (c = 1 + c, -4 ^ (n && (n[--b + ("function" == typeof f1 && 0 <= --_calls_ && f1())] += !1 | (n && (n[(c = 1 + c, 
                            c += 1, 0)] = 0)))))
                        }.length] += delete Infinity >>> -0)) && 0 < --s; ) {}
                    }
                }
            } while (a++ + [ b = a ][22] && 0 < --r);
            c += 1, b <<= a;
            var _ = (c += 1) + (c = 1 + c, 38 >>> (n && (n[(c = 1 + c, 1)] >>>= 506)) - 0 ? (c = 1 + c, 
            !l - !1 === (i += 0)) : (c = 1 + c, ((-2 !== l) + !1) * (i && (i[(c += 1) + +(0 == (_ && (_[(c = 1 + c, 
            0)] = !0)) >>> 0)] ^= !1))));
        }
        var l = (b = a, void (c += 1));
    }()) {
      case (c += 1) + [ /[abc4]/.test((typeof ((c += 1) + [ b = a, a++ + a++, --b + (a && a.null) ][a++ + (b = a)]) || b || 5).toString()), a++ + void 0, (c += 1) + delete b, a--, (c += 1) + a-- ].a:
        switch ((c += 1) + {
            b: b,
            3: delete b,
            c: 3,
            Infinity: new function e() {
                switch (this[(c += 1) + +((e[(c = 1 + (c += 1), !1)] <<= 24) | 0 != (e.b += -1))] += !0 - ((e.c = 0) >> 0 < 0 / 0), 
                this.in = ((e[(c = 1 + c, !0 < ((NaN || -1) != (NaN ^ /[a2][^e]+$/)))] >>>= 39) - !1) * (0 / 0) != e / ((!1 ^ (c += 1, 
                -3)) & "number" >>> this != 2), this.Infinity >>>= ((0 / 0 > (c += 1, "object")) >> 0 / 0) / ("bar3" | (c += 1, 
                "") || (e[--b + (c = 1 + (c = 1 + c), (!1 ^ (e.undefined /= 3 * this)) <= 0)] += (c += 1, 
                23))), "object" == typeof foo_1) {
                  case b += a:
                    c = 1 + c;
                    break;

                  case 0 == (c += 1, 3) == 4 + "24" / "23":
                  case (c += 1) + e:
                    break;

                  case (c += 1) + e.undefined:
                    c = 1 + c;
                }
            }(),
            "": "function" == typeof f2 && 0 <= --_calls_ && f2()
        }.b) {
          case --b + b--:
            var brake69 = 5;
            do {
                if (a++ + (1 == (c += 1, -0))) {
                    c += 1;
                } else {
                    switch (--b + (b = a)) {
                      default:
                      case --b + new function a() {
                            a[(c = 1 + (c = 1 + c), 0 / 0)] &= "bar23";
                        }():
                        switch (c = 1 + (c += 1), -((a && (a[(c = 1 + c, a && (a.c += !1), a = !1)] &= 0)) >= this >> void 0)) {
                          case c = 1 + c, 0:
                          case c = 1 + c, (a && (a.foo += !0 & (c += 1, 22))) < !1:
                          case c = 1 + c, a *= 0:
                          case c = 1 + c, ~(a && (a[(c = 1 + c, a && (a.foo += 0 ^ (a && (a.in = "c"))))] += 0)) > (c += 1, 
                            1 / 0 < (c += 1, "object")):
                        }
                        break;

                      case a++:
                        try {
                            c = 1 + c, a && (a.c = 1 / 0 * this);
                        } finally {}
                        break;

                      case (b-- || a || 3).toString():
                    }
                }
            } while (++b && 0 < --brake69);
            for (var brake78 = 5; a++ + (a && a[--b + typeof Math_1]) && 0 < brake78; --brake78) {
                c += 1;
            }
            break;

          case b--:
            var expr80 = b--;
            for (var key80 in expr80) {
                var brake81 = 5;
                do {
                    var foo = (c = 1 + c, a && (a.undefined += 0), a && (a[(c = 1 + c, !1 + (a && (a.foo += !1 - (void 0 ^ this))))] = !0), 
                    void (c = 1 + (c = 1 + c)));
                } while (--b + b && 0 < --brake81);
            }
            for (var brake85 = 5; (c += 1) + b-- && 0 < --brake85; ) {
                try {
                    var brake87 = 5;
                    do {
                        for (var brake88 = 5; c += 1, 0 < --brake88; ) {}
                    } while ((c += 1) + (c = 1 + c, void (a >>= !1)) && 0 < --brake87);
                } catch (a) {
                    var NaN = void 0;
                    c += 1;
                } finally {
                    switch (a) {
                      default:
                      case a:
                      case a++:
                      case ((a = "b") >>> !1) + ((a && (a[(c = 1 + c, 0)] = 0 / 0)) < 255):
                    }
                    var expr94 = (c += 1) + [ (c = 1 + c, (!0 !== (a += !0)) - -0), (c = 1 + c, 0) ];
                    for (var key94 in expr94) {
                        for (var brake95 = 5; c = 1 + (c = 1 + c), 0 < --brake95; ) {}
                    }
                }
            }
            break;

          case +function() {
                try {
                    --b + (b = a) && (c += 1);
                } catch (a) {
                    for (var e = 5; "function" == typeof f1 && 0 <= --_calls_ && f1((c = 1 + c, c += 1, 
                    !0), (c = 1 + c, a += !1 % (NaN >>> "23") < (0 != (3 !== NaN)))) && 0 < e; --e) {
                        c = 1 + c;
                    }
                    return (c += 1) + ("function" == typeof f1 && 0 <= --_calls_ && f1());
                }
            }():
            for (var brake105 = 5; ("" + ((c += 1) + --b || 9))[(c += 1) + (a ^= (c = 1 + c, 
            0 / 0))] && 0 < --brake105; ) {
                for (var brake106 = 5; [][(c = 1 + c, (0 ^ (a = "a")) >>> 1)] && 0 < --brake106; ) {}
            }
            break;

          default:
            for (var c_1 = c_1 = c_1, brake109 = 5; b++ && 0 < --brake109; ) {
                var brake110 = 5;
                do {
                    switch (b--) {
                      case (c += 1) + c_1:
                        break;

                      case (c += 1) + (c_1 += a++ + void 0):
                        c = 1 + c, (!0 * this & 0 / 0 || 0 / 0 + (c += 1, "undefined")) && (c = 1 + c);
                        break;

                      case --b - 4:
                        foo = !0 ^ 5 << 25;
                        var a_1 = (c = 1 + (c = 1 + c), -5 * ((a_1 && (a_1.undefined *= -1)) ^ (a_1 && (a_1.a += !0))));
                    }
                } while (c += 1, 1 != (a_1 && (a_1.c = 38)) && 0 < --brake110);
            }
        }
        break;

      default:
        var foo_1 = (c += 1, 0), expr119 = --b + ("" + (a++ + !b || 0))[(c += 1) + "string"];
        for (var key119 in expr119) {
            c = 1 + c, foo_1 = expr119[key119];
        }

      case 0 + --b:
        var a_2 = function() {
            c += 1;
            try {
                return (c += 1) + a++;
            } finally {
                return (c += 1) + (c = 1 + c, "undefined" << (a_1 && (a_1.NaN += /[a2][^e]+$/ !== this)) ^ !1 || a || 3).toString();
            }
        }((--b, a_2 = "object"));
        c += 1;
        break;

      case --b + ("function" == typeof f0 && 0 <= --_calls_ && f0("number", "c")):
        c += 1;
        for (var brake133 = 5; +b && 0 < brake133; --brake133) {
            var bar_1 = void 0;
        }
        for (var brake135 = 5; c += 1, --b + (bar_1 && bar_1[a++ + ("function" == typeof f5 && 0 <= --_calls_ && f5(-1, (c = 1 + c, 
        0 <= (bar_1 && (bar_1[(c = 1 + c, 0 / 0 ^ !0 >> (a_1 && (a_1[(c = 1 + c, -4 ^ (a_1 && (a_1.in /= 2)) ^ 1)] += !0)))] -= !0)) < -4 >>> (a_2 && (a_2.c = {} - this)))))]) && 0 < --brake135; ) {}
        "function" == typeof f2 && 0 <= --_calls_ && f2((c = 1 + c, foo_1 && (foo_1[b--] = 50 >>> (c += 1, 
        !1))), "a", (c = 1 + c, 3 <= this <= (bar_1 && (bar_1[(c = 1 + c, (foo_1 && (foo_1[--b + a_2] += -5)) <= 0)] %= "b")) < (!1 | NaN <= "bar"))), 
        a++, c = 1 + c, c_1 && (c_1[(c = 1 + c, 0 / 0)] = 0), foo_1 && (foo_1.b += "38-5"), 
        c = 1 + c;
        try {
            --b;
        } catch (a) {
            for (var brake145 = 5; --b + {
                "": a++ + (--b + {
                    1.5: (c = 1 + c, (NaN << null && !0) < !1),
                    undefined: (c = 1 + c, 0 ^ (foo_1 && (foo_1[foo_1 && foo_1.b] = !0)))
                }.c ? (c += 1) + a : (c += 1) + b),
                "": (this - this >> "function") / 0 ? a++ + {
                    3: (c = 1 + c, c += 1, !0),
                    1.5: (c = 1 + c, c += 1, 0 / 0),
                    var: (c = 1 + c, !1 % (("a" ^ this) + (foo_1 && (foo_1[(c = 1 + c, !0)] += !0)))),
                    undefined: (c = 1 + c, (!0 ^ (a_1 && (a_1.in += !0))) & (-4 ^ NaN) < !1),
                    c: (c = 1 + c, 0 & (bar_1 && (bar_1[(c += 1) + !0] >>= (foo_1 >>= !1) / !1)))
                }[(c = 1 + c, (foo_1 /= 0) >> !1)] : --b + ("unknown" == typeof bar_1),
                in: [ (c = 1 + c, 3 !== (c += 1, []) != (1 == (void 0 !== this))) ],
                1.5: a++ + ((c += 1) + (c = 1 + c, 120 == 0 / 0 - (c += 1, "number") ? (c = 1 + c, 
                a_1 && (a_1.null += (foo_1 && (foo_1[[ (c = 1 + c, 1), (c = 1 + c, .04 - (NaN >> "number") ^ 1 >> (a_2 && (a_2[(c = 1 + c, 
                !1 < 1 / 0 * NaN <= (bar_1 && (bar_1[--b + bar_1] = 0 / 0)))] = this % !0))) ]] = 0)) >> 1)) : (c = 1 + c, 
                (c_1 && (c_1.null = (0 <= this) >>> !0)) >> (0 == 3 >>> NaN))) || a || 3).toString()
            } && 0 < brake145; --brake145) {
                c += 1, "function" == typeof c_1 && 0 <= --_calls_ && c_1("undefined", !1, void 0);
            }
            a_1 = (c += 1) + !0, a_1 = b++;
        }
    }
    break;

  case "function" == typeof f4 && 0 <= --_calls_ && f4(25):
    var brake153, brake156, b_1, parseInt, brake163, a_1_1, b_2, brake166, brake170, expr171, key171, expr148 = a_1 && a_1.null;
    for (var key148 in expr148) {
        c = 1 + c;
        var bar = expr148[key148];
    }
    foo_1 && (foo_1.b -= 3);
}

console.log(null, a, b, c += 1, 1 / 0, NaN, void 0);
original result:
�[1mnull�[22m �[33m6�[39m �[33m1�[39m �[33m60�[39m �[33mInfinity�[39m �[90mundefined�[39m �[90mundefined�[39m

uglified result:
�[1mnull�[22m �[33m6�[39m �[33m1�[39m �[33m52�[39m �[33mInfinity�[39m �[90mundefined�[39m �[90mundefined�[39m

minify(options):
{
  "compress": {
    "keep_fargs": false,
    "passes": 1000000,
    "sequences": 1000000,
    "unsafe": true,
    "unsafe_Function": true,
    "unsafe_math": true,
    "unsafe_proto": true,
    "unsafe_regexp": true
  }
}
@alexlamsl alexlamsl added the bug label May 11, 2019
alexlamsl added a commit to alexlamsl/UglifyJS that referenced this issue May 11, 2019
alexlamsl added a commit to alexlamsl/UglifyJS that referenced this issue May 11, 2019
alexlamsl added a commit to alexlamsl/UglifyJS that referenced this issue May 11, 2019
alexlamsl added a commit that referenced this issue May 11, 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