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

Closed
alexlamsl opened this issue Oct 15, 2019 · 0 comments · Fixed by #3485
Closed

ufuzz failure #3484

alexlamsl opened this issue Oct 15, 2019 · 0 comments · Fixed by #3485
Labels

Comments

@alexlamsl
Copy link
Collaborator

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

{
    var expr1 = (c = c + 1) + --b;
    L11588: for (var key1 in expr1) {
        try {
            if (b++) {
                for (var brake4 = 5; (b = a) && brake4 > 0; --brake4) {
                    0 === 1 ? a : b;
                }
            } else {
                --b + (typeof NaN_2 === "undefined");
            }
        } finally {
            for (var brake7 = 5; (c = c + 1) + ++a && brake7 > 0; --brake7) {
                for (var brake8 = 5; a++ + (a && a[a++]) && brake8 > 0; --brake8) {
                    switch (a++ + -((a = (5 <= "object") * ("number", 24..toString())) == (("a" && 5) === 5 << NaN))) {
                      case [ (c = c + 1) + 0, a++ + (a && a.a), a++ + typeof foo_2, a--, --b + -((a && (a[void function() {
                        }()] /= (c = c + 1, 38..toString()) != ~"bar")) !== ([ , 0 ][1] ^ "object" ^ Infinity != 2)) ]:
                        break;

                      case (c = c + 1) + (typeof a == "function" && --_calls_ >= 0 && a()):
                      case (c = c + 1) + (a && a.NaN):
                        break;

                      case b = a:
                        {
                            var brake10 = 5;
                            while ((Infinity << "number" != ([ , 0 ].length === 2) / -1 || a && (a[-b] <<= ("function" & "c") == -0 <= "c")) && --brake10 > 0) {
                                var brake11 = 5;
                                L11589: do {
                                    L11590: for (var brake12 = 5; (c = c + 1) + function() {
                                    }() && brake12 > 0; --brake12) {
                                        var brake13 = 5;
                                        while ((c = 1 + c, (~"undefined", -3 !== true) % (("number" < 23..toString()) - ("bar" | "foo"))) && --brake13 > 0) {
                                            c = 1 + c, undefined == null ^ "undefined" == true ^ (0 <= [] | true < this);
                                        }
                                    }
                                } while (--b + /[abc4]/.test((((c = 1 + c, (a && (a.undefined += -3 * 1 < ("foo" !== false))) >= (a && (a[--b + (typeof f1 == "function" && --_calls_ >= 0 && f1())] = "" - null && +"number"))) || a || 3).toString() || b || 5).toString()) && --brake11 > 0);
                            }
                        }
                        break;
                    }
                }
            }
            L11591: for (var brake15 = 5; [ --b + a, new function Infinity() {
                for (var brake16 = 5; (a++ + --b ? a : a++) && brake16 > 0; --brake16) {
                    try {
                        var Infinity;
                    } catch (arguments) {
                        c = 1 + c, (NaN ^ "function") != (4 == 25) == (NaN === this) > "function" * "b";
                        c = 1 + c, ("b" << -3) + ("object" && "bar") ^ (!24..toString() | 22 != "foo");
                    } finally {
                        c = 1 + c, (~"number" !== ("function" & "c")) >> (38..toString() >= false ^ -4 >> false);
                        c = 1 + c, ("number" != 38..toString()) / (3 * []) && (-1 && "") >>> "bar" * 1;
                    }
                }
            }(), b++, --b + (a++ + delete (a && (a[--b + (a && a.in)] = (38..toString() == -1) < (a && (a.undefined /= 5 || "")) < (false + 0) * (-5 != 5))) || 8).toString()[--b + (typeof f1 == "function" && --_calls_ >= 0 && f1(b++))] ][a++] && brake15 > 0; --brake15) {
                {
                    var b_1 = function Math_2(arguments_2) {
                        function f0(Infinity) {
                            c = 1 + c, ("foo" ^ undefined) + 2 % [ , 0 ][1] > (25 === 3 == [] - 23..toString());
                            c = 1 + c, c = c + 1, ({} | /[a2][^e]+$/) !== 5 <= "a";
                        }
                        var arguments_2_1 = f0();
                        function f1() {
                            c = 1 + c, (25 != 4) % (3 || 1) == (38..toString() <= "c") % ("a" >>> 4);
                            c = 1 + c, (arguments_2 += NaN / -1 !== Infinity <= {}) || {} >>> 38..toString() ^ [] % "object";
                        }
                        var Math = f1((c = 1 + c, (-4 && 38..toString()) >> ("" >>> "undefined") >>> ("foo" & 23..toString() && (1 || "number"))), (c = 1 + c, 
                        (4 != []) >>> (arguments_2_1 && (arguments_2_1[(c = 1 + c, -3 - "object" <= ("bar" | null) == void (-3 * ""))] += "object" ^ this)) ^ (-3 && {}) + ("bar" ^ true)), [ , 0 ].length === 2);
                    }();
                }
                switch ((c = c + 1) + (b_1 && b_1.NaN)) {
                  case a++ + (b_1 && b_1.c):
                    var a = !(b_1 += ((c = c + 1, "object") && "bar" ^ 5) - ((2 ^ -5) === ([ , 0 ].length === 2) / -1));
                    {
                        var b_1 = function f2(b, parseInt_1) {
                            c = 1 + c, ((b_1 && (b_1.in += 4 < {})) ^ (b_1 && (b_1[(c = 1 + c, "a" / 3 != (b_1 && (b_1[(c = 1 + c, 
                            ([ , 0 ].length === 2 || [ , 0 ][1]) >> (2 & 25), (Infinity === /[a2][^e]+$/) >= (-5 & "foo"))] = 24..toString() ^ -0)) ^ (undefined & -4 || false >> -1))] = -5 % ([ , 0 ].length === 2)))) - (NaN !== "foo" == "bar" >>> 25);
                            c = 1 + c, 38..toString() >> "bar" >> 2 + 5 > ((b_1 && (b_1.a += 3 >> "c")) >= 2 << /[a2][^e]+$/);
                        }();
                    }
                    break;

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

                  case typeof f3 == "function" && --_calls_ >= 0 && f3({
                        foo: (c = 1 + c, b_1 = (25 << 0) - ("a" !== -3) - (this & "function") / (b_1 && (b_1.null = 0 <= "foo"))),
                        in: (c = 1 + c, (b_1 && (b_1.undefined += "c" !== [ , 0 ][1] != (-0 == 3))) >= (23..toString() || 25, 
                        null >= this))
                    }[a++ + {
                        "\t": (c = 1 + c, (b_1 && (b_1[b = a] += (-3 >> "a") + (23..toString() > 3))) === ((c = c + 1, 
                        38..toString()) & (3 && NaN))),
                        a: (c = 1 + c, c = c + 1, Infinity < "undefined" & "undefined" << 24..toString()),
                        c: (c = 1 + c, (/[a2][^e]+$/, NaN, Infinity + -1) << (this >>> null && NaN & "a"))
                    }]):
                    break;
                }
                switch (a--) {
                  case typeof f2 == "function" && --_calls_ >= 0 && f2((c = c + 1) + [ (c = 1 + c, (b_1 && (b_1[--b + -b] |= 38..toString() - "bar" >= (b_1 && (b_1.null = 22 || 2)))) / ((c = c + 1, 
                    "c") + (undefined == true))), (c = 1 + c, "b" == "foo" === void "c", 23..toString() <= 1 == "function" >>> "object"), (c = 1 + c, 
                    ((b_1 && (b_1[(c = 1 + c, (24..toString() + 24..toString() >= -3 >>> {}) >> !(null ^ false))] = 2 << -2)) === "foo" >>> "undefined") % ((5 || undefined) >> (4 >>> []))), (c = 1 + c, 
                    (b_1 && (b_1[[ (c = 1 + c, (c = c + 1, 24..toString() || [ , 0 ].length === 2) >= (-3 || -4) >>> ("a", 
                    -5)) ].Infinity] = ([ , 0 ].length === 2 ^ [ , 0 ].length === 2) % void [ , 0 ][1])) != ("foo" >> 24..toString() && [ , 0 ][1] ^ {})) ].NaN):
                    break;

                  default:
                    var b_2;
                    ;

                  case ([ , (c = c + 1) + typeof (c = 1 + c, ("bar" ^ 22 ^ -4 >> /[a2][^e]+$/) >> ((1 && 38..toString()) & !false)), (c = c + 1) + [ (c = 1 + c, 
                    (c = c + 1, 38..toString(), -4) << delete ("function" % this)), (c = 1 + c, ~(b_1 && (b_1.in = 22 ^ "b") || ("a" || {}))) ], (c = c + 1) + b--, (c = c + 1) + ("function" >>> false << (Infinity || "c") || -1 + 3 > (false === ([ , 0 ].length === 2))) ] || a || 3).toString():
                    break;

                  case 1 === 1 ? a : b:
                    var a_1 = b--;
                    break;
                }
            }
        }
    }
}

if (b_1 && b_1[a--]) {
    switch ((c = c + 1) + delete ((24..toString() || -2) + ([ , 0 ].length === 2 ^ 2) || (Infinity !== 1) * ([ , 0 ][1] && "c"))) {
      default:
        {
            var brake47 = 5;
            do {
                break;
            } while ((c = c + 1) + a_1 && --brake47 > 0);
        }
        L11592: {
            {
                var brake50 = 5;
                while (--b + a-- && --brake50 > 0) {
                    var brake51 = 5;
                    L11593: do {
                        {
                            var expr52 = 1 === 1 ? a : b;
                            for (var key52 in expr52) {
                                c = 1 + c;
                                var Infinity_2 = expr52[key52];
                                {
                                    var bar_1 = function f3(b_1) {
                                        c = 1 + c, ~(b_1 && (b_1[a++] += 1 <= "b" && {} == 2));
                                        c = 1 + c, ((b_1 && (b_1[(c = 1 + c, (Infinity_2 = (24..toString() != "function") > (undefined >= Infinity)) & (- -5 && [ , 0 ][1] !== false))] += /[a2][^e]+$/ % -3)) ^ ([ , 0 ][1], 
                                        1)) >= (Infinity_2 && (Infinity_2.c ^= "undefined" != 38..toString())) >>> "b" + -0;
                                    }((c = 1 + c, (bar_1 && (bar_1.undefined = 1 >> "object")) > (a_1 && (a_1[(c = 1 + c, 
                                    (b_1 && (b_1[--b + (b + 1 - .1 - .1 - .1)] -= (null === 5) > (null, NaN))) >>> (("number" ^ -4) > (b_1 = "" != null)))] >>>= -2 / "")) === (4 > "undefined" != ("bar" == 4))), (c = 1 + c, 
                                    Infinity_2 && (Infinity_2.Infinity = (c = c + 1, 4 >> this) << (4 << "b") % ("object" >> 24..toString()))), (c = 1 + c, 
                                    a_1 && (a_1[(c = c + 1) + a--] += (null != this) - (false >>> false) === [] % {} * (-4 >> Infinity))));
                                }
                            }
                        }
                    } while (a++ + typeof (a++ + a++) && --brake51 > 0);
                }
            }
            try {
                {
                    var expr57 = Infinity_2;
                    for (var key57 in expr57) {
                        c = 1 + c;
                        var bar_1 = expr57[key57];
                        if (!~(c = c + 1, 1 === true)) {
                            for (var brake60 = 5; (c = 1 + c, c = c + 1, (Infinity_2 && (Infinity_2.Infinity &= "object" == {})) <= undefined << 4) && brake60 > 0; --brake60) {
                                c = 1 + c, (a_1 *= "c" == "") != (24..toString() !== -4) || ~(b_1 && (b_1.Infinity = Infinity >> false));
                            }
                            {
                            }
                            c = c + 1;
                            {
                            }
                        } else {
                            var expr65 = [ (c = 1 + c, (1 % {} | "" ^ -1) + (-0 - []) * ([ , 0 ].length === 2 ^ 4)) ].in;
                            for (var key65 in expr65) {
                                {
                                    var brake66 = 5;
                                    do {
                                        {
                                        }
                                    } while (typeof f0 == "function" && --_calls_ >= 0 && f0((c = 1 + c, b_1 && (b_1.b = ([ , 0 ][1] - "function") / (-4 >>> Infinity) <= (c = c + 1, 
                                    false & 4)))) && --brake66 > 0);
                                }
                            }
                        }
                    }
                }
            } finally {
                if (a++ + {
                    c: (c = c + 1) + --b
                }) {
                    var brake69 = 5;
                    L11594: while ((c = c + 1) + (b = a) && --brake69 > 0) {
                        --b + delete a;
                    }
                }
                c = c + 1;
            }
            (c = c + 1) + (b_2 && b_2.in);
            L11595: for (var brake73 = 5; [][{
                in: typeof ((c = c + 1) + --b)
            }.c] && brake73 > 0; --brake73) {
                var brake74 = 5;
                do {
                    switch ([ --b + (c = 1 + c, delete ("foo" + "a" >= ([ , 0 ].length === 2 === "object"))), (c = c + 1) + b_1, (c = c + 1) + (0 === 1 ? a : b), /[abc4]/.test(((c = 1 + c, 
                    "" - 5 > 22 / "function" <= (4 && "object" || "bar" ^ {})) || b || 5).toString()) ]) {
                      default:
                        {
                            var b_1 = function f4(bar_1_1) {
                            }("function", 25, (c = 1 + c, a_1 && (a_1[(c = c + 1) + (typeof f5 == "function" && --_calls_ >= 0 && f5())] += ([ , 0 ].length === 2) >> null ^ (a_1 && (a_1[(c = 1 + c, 
                            this % "number" !== ({} ^ "foo") | 4 * "function" > (Infinity || "c"))] -= "" || -0))) || (-2, 
                            [ , 0 ][1]) - (-5 >>> -0)));
                        }
                        var Math_1;

                      case typeof bar_2 != "special":
                        {
                            var brake78 = 5;
                            while (delete (25 > -5 < (c = c + 1, [ , 0 ].length === 2) === 0 + 5 >> (4 | -4)) && --brake78 > 0) {
                                var expr79 = (c = 1 + c, (false + 2 ^ (24..toString(), "a")) >= ((Infinity & "bar") == (b_1 && (b_1[(c = 1 + c, 
                                ((Math_1 && (Math_1.undefined = 38..toString() | null)) !== (c = c + 1, NaN)) / (b_2 && (b_2[b = a] = this >= NaN != 0 > ([ , 0 ].length === 2))))] += ("function", 
                                "foo")))));
                                for (var key79 in expr79) {
                                    c = 1 + c;
                                    var b_2 = expr79[key79];
                                    c = 1 + c, Infinity_2 && (Infinity_2.foo |= {} / -5 < (c = c + 1, 3) && (5 >= 23..toString()) >>> (5 ^ [ , 0 ].length === 2));
                                }
                            }
                        }
                        {
                            var brake81 = 5;
                            while (typeof f0 == "function" && --_calls_ >= 0 && f0(0) && --brake81 > 0) {
                                if (c = 1 + c, (true >>> null ^ null % "a") >> (25 << "" > ("function" === undefined))) {
                                    c = 1 + c, Math_1 && (Math_1[--b + void function b_1_1() {
                                        c = 1 + c, ((NaN && 38..toString()) ^ false * 24..toString()) & (Infinity_2 && (Infinity_2[(c = 1 + c, 
                                        c = c + 1, (0 == 3) << (([ , 0 ].length === 2) << [ , 0 ][1]))] += "foo" + "number")) == ([ , 0 ].length === 2 ^ 2);
                                        c = 1 + c, "c" / 5 >>> (-4 >> false) & ([ , 0 ][1] ^ "bar") > (22 < 1);
                                        c = 1 + c, (25 >>> "function" && Infinity > 0) > (b_1 = (22 * 25, 22 ^ [ , 0 ].length === 2));
                                        c = 1 + c, (([] | 25) == (bar_1 %= undefined < -0)) <= (3 <= 2) + ("number" != [ , 0 ][1]);
                                    }()] += "b" - -1 == (b_2 && (b_2.b = 23..toString() * 22)) & (38..toString() ^ Infinity) >> (b_2 && (b_2.Infinity += Infinity >> "object")));
                                } else {
                                    c = 1 + c, -2 > true != ([ , 0 ][1] != true) === (2 & -3 | Infinity <= 0);
                                }
                            }
                        }
                        break;

                      case 0:
                        for (var brake89 = 5; (b += a) && brake89 > 0; --brake89) {
                            if (c = 1 + c, (Math_1 = [ , 0 ][1] * "bar" % (/[a2][^e]+$/ + -2)) * ((-1 > 4) + (-4 - "bar"))) {
                                c = 1 + c, (null === -0, "bar" && -4) !== ("a" && []) > undefined - "undefined";
                            } else {
                                c = 1 + c, (/[a2][^e]+$/ >= 4 <= ("a" !== "c")) * ((c = c + 1, -0) != ([] & ""));
                            }
                        }
                        break;

                      case typeof a_1 == "function" && --_calls_ >= 0 && a_1(4, -4):
                        {
                            var brake93 = 5;
                            L11596: while (a++ + b-- && --brake93 > 0) {
                                var expr94 = (c = 1 + c, b_1 && (b_1[b_1] = (true >>> 1 <= (25, -3)) + (true % /[a2][^e]+$/ === (Math_1 && (Math_1[(c = 1 + c, 
                                "object" + 25 + "object" % "undefined" << (this << "function" >= ("b" == 23..toString())))] += Infinity / "undefined")))));
                                L11597: for (var key94 in expr94) {
                                    c = 1 + c;
                                    var b_2 = expr94[key94];
                                    c = 1 + c, -({} + "") ^ ({} === [ , 0 ][1]) << (-0 <= [ , 0 ][1]);
                                }
                            }
                        }
                        break;
                    }
                } while (a++ + delete (b_2 &= (Math_1 && (Math_1.a = 0 << "c")) - (Infinity_2 += null || null) >= ("number" ^ 5 ^ 1 < "b")) && --brake74 > 0);
            }
        }

      case (c = c + 1) + ((c = c + 1) + (0 === 1 ? a : b) || 6).toString()[a_1 && a_1.b]:
      case --b + (0 === 1 ? a : b):
        break;

      case a++ + ("foo" << {} ^ true === ([ , 0 ].length === 2) ^ undefined >= "a" != 4 <= Infinity):
        L11598: for (var brake96 = 5; --b + (typeof f4 == "function" && --_calls_ >= 0 && f4()) && brake96 > 0; --brake96) {}
        {
            var brake98 = 5;
            while (--b + delete b && --brake98 > 0) {
                var brake99 = 5;
                while (a++ + (1 === 1 ? a : b) && --brake99 > 0) {
                    var brake100 = 5;
                    L11599: while (void function() {
                        try {
                            try {
                                return c = 1 + c, ("number" | true) > (0 | "c") < ("undefined" > 0 ^ -3 * 38..toString());
                            } finally {
                                c = 1 + c, (bar_1 && (bar_1[a++ + (b_2 && (b_2[--b + (typeof Math_2 === "unknown")] += (b_1 && (b_1[--b + (typeof f0 == "function" && --_calls_ >= 0 && f0((c = 1 + c, 
                                "" * -2 + (b_1 && (b_1.NaN = 2 > -4)) == (b_2 && (b_2.var = 2 | "" || -3 === 22)))))] = ("a" & false) > -3 - "c")) >>> (b_1 && (b_1[--b + (0 === 1 ? a : b)] += ([], 
                                "undefined") / (c = c + 1, true)))))] = [ , 0 ][1] <= [] >= (NaN == "c"))) + (({}, 
                                "a") ^ ([ , 0 ][1] ^ "bar"));
                                c = 1 + c, (c = c + 1, 5 / /[a2][^e]+$/) === (NaN + "foo") / (3 % /[a2][^e]+$/);
                            }
                        } catch (bar_1_2) {
                            var b;
                            for (var brake107 = 5; (c = 1 + c, bar_1_2 && (bar_1_2["number"] += ((0 || {}) ^ this >= 2) + (2 <= "c" & null >> "object"))) && brake107 > 0; --brake107) {
                                c = 1 + c, (Infinity >> "function", "" <= -3) > (-4 + 22 & [] >= "");
                            }
                        } finally {
                            c = c + 1;
                        }
                    }() && --brake100 > 0) {
                        var expr112 = (a++ || a || 3).toString();
                        L11600: for (var key112 in expr112) {
                            c = 1 + c;
                            var parseInt = expr112[key112];
                            if ((5, NaN, null + NaN) * ((4 ^ "b") << -3 - -3)) {
                                try {
                                    {
                                        var a = function Math(b_1_2) {
                                        }((c = 1 + c, +("b" << [ , 0 ][1] ^ 4 * NaN)));
                                    }
                                } catch (b_1_2) {
                                    {
                                        var brake116 = 5;
                                        while ((c = 1 + c, ((/[a2][^e]+$/ || "bar") | Infinity - "b") + (false && "") % (0, 
                                        -3)) && --brake116 > 0) {
                                            c = 1 + c, -2 >>> NaN ^ -3 >= this ^ true / false % (false / null);
                                        }
                                    }
                                    var b_1 = (c = 1 + c, ([] || 0) / (25 | -1) || +[] > (-4 & "")), a_1 = (c = 1 + c, 
                                    (24..toString() ^ -3) === (a_1 && (a_1.undefined /= "number" & -2)) || "number" >> -5 ^ (Infinity_2 && (Infinity_2[(c = 1 + c, 
                                    ("a" ^ 24..toString() || -0 - 2) === ("foo" !== "object") + (-2 + 5))] = "b" % -4)));
                                } finally {
                                    if (c = 1 + c, ("b" == "function") < (b_1 && (b_1.var = "" === 22)) !== (-0 / -4 || 5 <= 0)) {
                                        c = 1 + c, c = c + 1, (-4 != "foo") >> (24..toString() == 0);
                                    }
                                    {
                                        var brake121 = 5;
                                        while ((c = 1 + c, (~null, [ , 0 ].length === 2 !== 3) ^ (-3 < -4 ^ ([ , 0 ].length === 2) < "a")) && --brake121 > 0) {
                                            c = 1 + c, "b" >> 23..toString() | "a" & 1 || (2 ^ 3) % ("object" | 0);
                                        }
                                    }
                                }
                            } else {
                                c = c + 1;
                            }
                        }
                    }
                }
            }
        }
        break;
    }
}

console.log(null, a, b, c, Infinity, NaN, undefined);
// uglified code
// (beautified)
var o = 10, r = 100, n = 10, a = 0, t = (a += 1) + --n;

for (var i in t) {
    try {
        if (n++) {
            for (var f = 5; (n = r) && 0 < f; --f) {}
        } else {
            --n;
        }
    } finally {
        for (var e = 5; (a += 1) + ++r && 0 < e; --e) {
            for (var N = 5; r++ + (r && r[r++]) && 0 < N; --N) {
                switch (r++ - ((r = !1 * 24..toString()) == (5 == 5 << NaN))) {
                  case [ (a += 1) + 0, r++ + (r && r.a), r++ + typeof foo_2, r--, --n - (1 !== (r && (r[void 0] /= -1 != (a += 1, 
                    38..toString())))) ]:
                    break;

                  case (a += 1) + ("function" == typeof r && 0 <= --o && r()):
                  case (a += 1) + (r && r.NaN):
                    break;

                  case n = r:
                    for (var g = 5; (0 != (2 === [ , 0 ].length) / -1 || r && (r[-n] <<= !0)) && 0 < --g; ) {
                        var c = 5;
                        do {
                            for (var d = 5; (a += 1) + void 0 && 0 < d; --d) {
                                for (var l = 5; a = 1 + a, !0 % (("number" < 23..toString()) - 0) && 0 < --l; ) {
                                    a = 1 + a, undefined;
                                }
                            }
                        } while (--n + /[abc4]/.test(((a = 1 + a, (r && (r.undefined += !0)) >= (r && (r[--n + ("function" == typeof f1 && 0 <= --o && f1())] = 0)) || r || 3).toString() || n || 5).toString()) && 0 < --c);
                    }
                }
            }
        }
        t: for (var u = 5; [ --n + r, new function U() {
            for (var t = 5; (r++ + --n ? r : r++) && 0 < t; --t) {
                try {} catch (arguments) {
                    a = 1 + a, NaN, NaN, a = 1 + a, 24..toString();
                } finally {
                    a = 1 + a, 38..toString(), a = 1 + a, 38..toString();
                }
            }
        }(), n++, --n + (r++ + (r && (r[--n + (r && r["in"])] = (-1 == 38..toString()) < (r && (r.undefined /= 5)) < 0), 
        !0) || 8).toString()[--n + ("function" == typeof f1 && 0 <= --o && f1(n++))] ][r++] && 0 < u; --u) {
            var v = function Math_2(t) {
                var n = function i() {
                    a = 1 + a, undefined, 23..toString(), a = 1 + a, a += 1;
                }();
                (function o() {
                    a = 1 + a, 38..toString(), a = 1 + a, (t += NaN / -1 !== void 0 <= {}) || 38..toString();
                })((a = 1 + a, 38..toString(), 23..toString()), (a = 1 + a, n && (n[(a = 1 + a, 
                !1)] += "object" ^ this)));
            }();
            switch ((a += 1) + (v && v.NaN)) {
              case r++ + (v && v.c):
                r = !(v += (a += 1, 5 - (-7 == (2 === [ , 0 ].length) / -1))), v = function f2(t, n) {
                    a = 1 + a, v && (v["in"] += 4 < {}), v && (v[(a = 1 + a, NaN != (v && (v[(a = 1 + a, 
                    !0)] = -0 ^ 24..toString())) ^ (-4 & undefined || 0))] = -5 % (2 === [ , 0 ].length)), 
                    NaN, a = 1 + a, 38..toString(), v && (v.a += 3);
                }();
                break;

              case {
                    3: v && (v["in"] = 38..toString() % /[a2][^e]+$/ <= !1 | (5 & []) != "b" << []),
                    var: n += r,
                    0: (a = 1 + a, a = 1 + (a += 1), 38..toString(), NaN, a = 1 + (a = 1 + a), undefined, 
                    void (v && (v.NaN += -4))),
                    null: r++ + ((v && (v[r++ + {
                        a: (a = 1 + a, v &= !1 == this <= -2 === (v && (v["in"] = 5 >>> 38..toString())) - (a += 1, 
                        NaN)),
                        0: (a = 1 + a, 0 == (v && (v[(a += 1) + n++] = -4 >> 24..toString() ^ !0))),
                        b: (a = 1 + a, 0 <= (v <<= 3 == 24..toString()) ^ (v && (v[(a = 1 + a, v && (v.foo = 0 - 24..toString()), 
                        -4 == 23..toString() == 0)] &= !1) || 3)),
                        "-2": (a = 1 + a, (v && (v.b += 0)) <= 0)
                    }] += ([] <= []) << 0)) < (23..toString() + void 0 && !1)),
                    in: (a += 1) + [ (a = 1 + a, (0 != (v && (v.a += -2 - []))) - NaN), (a = 1 + a, 
                    ("b" & NaN & "c" % {}) >>> !1), (a = 1 + a, NaN % (a += 1, {} >>> -4)), (a = 1 + a, 
                    (("function" | undefined) <= 0) / !1) ]
                }[!n]:
              case !0:
                continue t;

              case "function" == typeof f3 && 0 <= --o && f3({
                    foo: (a = 1 + a, v = 24 - ("function" & this) / (v && (v["null"] = !1))),
                    in: (a = 1 + a, (v && (v.undefined += !0)) >= (23..toString(), this <= null))
                }[r++ + {
                    "\t": (a = 1 + a, (v && (v[n = r] += -3 + (3 < 23..toString()))) === (a += 1, 38..toString() & NaN)),
                    a: (a = 1 + a, a += 1, !1 & "undefined" << 24..toString()),
                    c: (a = 1 + a, NaN, NaN << (this >>> null && "a" & NaN))
                }]):
            }
            switch (r--) {
              case "function" == typeof f2 && 0 <= --o && f2((a += 1) + [ (a = 1 + a, (v && (v[--n - n] |= 38..toString() - "bar" >= (v && (v["null"] = 22)))) / (a += 1, 
                "c" + (1 == undefined))), (a = 1 + a, 23..toString() <= 1 == 0), (a = 1 + a, (0 === (v && (v[(a = 1 + a, 
                (24..toString() + 24..toString() >= -3 >>> {}) >> !0)] = 2 << -2))) % (5 >> (4 >>> []))), (a = 1 + a, 
                (v && (v[[ (a = 1 + a, a += 1, 31 <= (24..toString() || 2 === [ , 0 ].length)) ].Infinity] = (2 === [ , 0 ].length ^ 2 === [ , 0 ].length) % void 0)) != ("foo" >> 24..toString() && 0 ^ {})) ].NaN):
                break;

              default:
              case [ , (a += 1) + (a = 1 + a, typeof (-22 >> (!0 & 38..toString()))), (a += 1) + [ (a = 1 + a, 
                a += 1, 38..toString(), -8), (a = 1 + a, ~(v && (v["in"] = 22) || "a")) ], (a += 1) + n--, (a += 1) + ((!1 == (2 === [ , 0 ].length)) < 2) ].toString():
                break;

              case r:
                var S = n--;
            }
        }
    }
}

if (v && v[r--]) {
    switch ((a += 1) + (24..toString(), !0)) {
      default:
        var h = 5;
        do {
            break;
        } while ((a += 1) + S && 0 < --h);
        for (var s = 5; --n + r-- && 0 < --s; ) {
            var y = 5;
            do {
                var b = r;
                for (var p in b) {
                    a = 1 + a;
                    var w = b[p], k = function f3(t) {
                        a = 1 + a, t && (t[r++] += !1), a = 1 + a, t && (t[(a = 1 + a, !0 & (w = ("function" != 24..toString()) > (void 0 <= undefined)))] += NaN), 
                        w && (w.c ^= "undefined" != 38..toString());
                    }((a = 1 + a, (k && (k.undefined = 1)) > (S && (S[(a = 1 + a, (v && (v[--n + (n + 1 - .1 - .1 - .1)] -= NaN < !1)) >>> ((v = !0) < -4))] >>>= -1 / 0)) == !1), (a = 1 + a, 
                    w && (w.Infinity = (a += 1, 4 >> this << 4 % ("object" >> 24..toString())))), (a = 1 + a, 
                    S && (S[(a += 1) + r--] += (null != this) - 0 == [] % {} * -4)));
                }
            } while (r++ + typeof (r++ + r++) && 0 < --y);
        }
        try {
            var m = w;
            for (var _ in m) {
                a = 1 + a;
                k = m[_];
                var j = [ (a = 1 + (a += 1), (1 % {} | -1) + (-0 - []) * (2 === [ , 0 ].length ^ 4)) ]["in"];
                for (var I in j) {
                    var M = 5;
                    do {} while ("function" == typeof f0 && 0 <= --o && f0((a = 1 + a, v && (v.b = NaN <= (a += 1, 
                    0)))) && 0 < --M);
                }
            }
        } finally {
            if (r++ + {
                c: (a += 1) + --n
            }) {
                for (var $ = 5; (a += 1) + (n = r) && 0 < --$; ) {
                    --n, delete r;
                }
            }
            a += 1;
        }
        a += 1, D && D["in"];
        for (var q = 5; [][{
            in: typeof ((a += 1) + --n)
        }.c] && 0 < q; --q) {
            var x = 5;
            do {
                switch ([ --n + (a = 1 + a, !0), (a += 1) + v, (a += 1) + n, /[abc4]/.test((a = 1 + a, 
                n || 5).toString()) ]) {
                  default:
                    var z;
                    v = (a = 1 + a, void (S && (S[(a += 1) + ("function" == typeof f5 && 0 <= --o && f5())] += (2 === [ , 0 ].length) >> null ^ (S && (S[(a = 1 + a, 
                    this % "number" != ("foo" ^ {}) | !1)] -= -0)))));

                  case "special" != typeof bar_2:
                    for (var A = 5; a += 1, 0 < --A; ) {
                        var B = (a = 1 + a, (2 ^ (24..toString(), "a")) >= (0 == (v && (v[(a = 1 + a, ((z && (z.undefined = null | 38..toString())) !== (a += 1, 
                        NaN)) / (D && (D[n = r] = this >= NaN != (2 === [ , 0 ].length) < 0)))] += "foo"))));
                        for (var C in B) {
                            var D = B[C];
                            a = 1 + (a = 1 + a), w && (w.foo |= {} / -5 < (a += 1, 3) && (23..toString() <= 5) >>> (5 ^ 2 === [ , 0 ].length));
                        }
                    }
                    for (var E = 5; "function" == typeof f0 && 0 <= --o && f0(0) && 0 < --E; ) {
                        a = 1 + a, 1 >> (("function" === undefined) < 25) ? (a = 1 + a, z && (z[--n + (a = 1 + a, 
                        NaN && 38..toString(), 24..toString(), w && (w[(a = 1 + a, a += 1, !1 << ((2 === [ , 0 ].length) << 0))] += "foonumber"), 
                        v = 22 ^ 2 === [ , 0 ].length, a = 1 + (a = 1 + (a = 1 + a)), void (k %= undefined < -0))] += NaN == (D && (D.b = 22 * 23..toString())) & (void 0 ^ 38..toString()) >> (D && (D.Infinity += 0)))) : a = 1 + a;
                    }
                    break;

                  case 0:
                    for (var F = 5; (n += r) && 0 < F; --F) {
                        a = 1 + a, NaN * (z = NaN) ? (a = 1 + a, undefined) : (a = 1 + a, a += 1);
                    }
                    break;

                  case "function" == typeof S && 0 <= --o && S(4, -4):
                    for (var G = 5; r++ + n-- && 0 < --G; ) {
                        var H = (a = 1 + a, v && (v[v] = !1 + (NaN === (z && (z[(a = 1 + a, "object25NaN" << (this << "function" >= ("b" == 23..toString())))] += NaN)))));
                        for (var J in H) {
                            a = 1 + a;
                            D = H[J];
                            a = 1 + a;
                        }
                    }
                }
            } while (r++ + (D &= 5 <= (z && (z.a = 0)) - (w += null), !0) && 0 < --x);
        }

      case (a += 1) + ((a += 1) + n || 6).toString()[S && S.b]:
      case --n + n:
        break;

      case r++ + ("foo" << {} ^ !0 == (2 === [ , 0 ].length) ^ "a" <= undefined != 0):
        for (var K = 5; --n + ("function" == typeof f4 && 0 <= --o && f4()) && 0 < K; --K) {}
        for (var L = 5; --n + delete n && 0 < --L; ) {
            for (var O = 5; r++ + r && 0 < --O; ) {
                for (var P = 5; void function() {
                    try {
                        try {
                            a = 1 + a, 38..toString();
                        } finally {
                            a = 1 + a, k && (k[r++ + (D && (D[--t + ("unknown" == typeof Math_2)] += (v && (v[--t + ("function" == typeof f0 && 0 <= --o && f0((a = 1 + a, 
                            -0 + (v && (v.NaN = !0)) == (D && (D["var"] = 2)))))] = !1)) >>> (v && (v[--t + t] += "undefined" / (a += 1, 
                            !0)))))] = 0 <= [] >= ("c" == NaN)), a = 1 + a, a += 1, NaN;
                        }
                    } catch (i) {
                        for (var t, n = 5; a = 1 + a, i && (i.number += 0 + ({} ^ 2 <= this)) && 0 < n; --n) {
                            a = 1 + a;
                        }
                    } finally {
                        a += 1;
                    }
                }() && 0 < --P; ) {
                    var Q = (r++ || r || 3).toString();
                    for (var R in Q) {
                        a = 1 + a;
                        Q[R];
                        if (4 * (NaN, null + NaN)) {
                            try {
                                r = (a = 1 + a, void NaN);
                            } catch (V) {
                                0;
                                v = (a = 1 + (a = 1 + a), [] / -1 || 0 < +[]), S = (a = 1 + a, (-3 ^ 24..toString()) === (S && (S.undefined /= 0)) || 0 ^ (w && (w[(a = 1 + a, 
                                4 === ("a" ^ 24..toString() || -2))] = NaN)));
                            } finally {
                                a = 1 + a, !1 < (v && (v["var"] = !1)) != !1 && (a = 1 + a, a += 1, 24..toString());
                                for (var T = 5; a = 1 + a, 2 === [ , 0 ].length !== 3 ^ !1 ^ (2 === [ , 0 ].length) < "a" && 0 < --T; ) {
                                    a = 1 + a, 23..toString();
                                }
                            }
                        } else {
                            a += 1;
                        }
                    }
                }
            }
        }
    }
}

console.log(null, r, n, a, void 0, NaN, undefined);
original result:
�[1mnull�[22m �[33m100�[39m �[33m9�[39m �[33m1�[39m �[33mInfinity�[39m �[33mNaN�[39m �[90mundefined�[39m

uglified result:
�[1mnull�[22m �[33m100�[39m �[33m9�[39m �[33m1�[39m �[90mundefined�[39m �[33mNaN�[39m �[90mundefined�[39m

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