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

Closed
alexlamsl opened this issue Dec 10, 2019 · 0 comments · Fixed by #3635
Closed

ufuzz failure #3634

alexlamsl opened this issue Dec 10, 2019 · 0 comments · Fixed by #3635
Labels

Comments

@alexlamsl
Copy link
Collaborator

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

var foo_2 = typeof f1 == "function" && --_calls_ >= 0 && f1(), foo = ~b;

L16417: for (var brake2 = 5; --b + {
    undefined: --b + foo_2,
    get in() {
        if (--b + (b = a)) {
            L16418: {
                {
                    var foo_1 = function f0(Math_2, parseInt_1, parseInt_1_1) {
                        c = c + 1;
                        c = c + 1;
                    }(--b + +b, typeof (c = 1 + c, (foo_1 && (foo_1[-((38..toString() || false, "a" >= -5) <= ([ , 0 ][1] <= [ , 0 ][1]) + (undefined == NaN))] = -0 === /[a2][^e]+$/ & [ , 0 ].length === 2 !== 25)) <= (-0 != 38..toString() ^ (foo_2 && (foo_2[c = 1 + c, 
                    (38..toString() + 24..toString() < (NaN === [ , 0 ][1])) * ("function" - 0 >> ("bar" !== 2))] &= {} % -3)))), 24..toString());
                }
                try {
                    if (Infinity) {
                        var expr10 = typeof f2 == "function" && --_calls_ >= 0 && f2(23..toString());
                        for (var key10 in expr10) {
                            c = 1 + c;
                            var Infinity = expr10[key10];
                            c = 1 + c, (foo_2 && (foo_2.null = /[a2][^e]+$/ >= [] > ~undefined)) & (foo_1 += "foo" % this) > (5 ^ 1);
                        }
                    } else if (b--) {
                        c = 1 + c, foo_1 *= (foo_1 && (foo_1[c = 1 + c, 4 + ([ , 0 ].length === 2) < (-4 === "number"), 
                        22 >>> null > (undefined > -1)] <<= -4 >>> "number")) / (c = c + 1, -5) << ((-5 == NaN) > (foo_2 &= null * -3));
                    } else {
                        for (var brake14 = 5; (c = 1 + c, c = c + 1, ("function" || 24..toString()) >= ("object", 
                        {})) && brake14 > 0; --brake14) {
                            c = 1 + c, +("" % "a") < (NaN < "c") << (-5 === 1);
                        }
                    }
                } catch (bar) {
                    switch (!((null <= NaN || "a" >>> NaN) == ((3, []) === 23..toString() <= [ , 0 ][1]))) {
                      case --b + {
                            set NaN(Math_1) {
                                this.b = ({}, 1);
                            }
                        }.a:
                        c = 1 + c, ((true && 38..toString()) > (([ , 0 ].length === 2) <= "b")) / (-2 - 4 & 38..toString() << 4);
                        break;

                      case --b + (typeof Math == "special"):
                        break;

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

                      case --b:
                        c = 1 + c, (5, -1) >> (38..toString() !== -5), "" / 24..toString() === NaN >= NaN;
                        break;
                    }
                    var Math_2 = 0 === 1 ? a : b;
                } finally {
                    switch (new function bar_1() {
                        this.var = Infinity < "";
                        this[c = 1 + c, void Infinity !== (foo_2 && (foo_2[c = 1 + c, (this ^ -5) >= (Math_2 && (Math_2.foo >>= NaN !== -2)) <= 22 + "undefined" + ("function" == /[a2][^e]+$/)] += true & "c")) == ((c = c + 1, 
                        "a") ^ (1 ^ "object"))] %= "number" ^ "number";
                    }()) {
                      case --b + (b = a):
                        c = 1 + c, ((c = c + 1, -3) ^ (-3 || 24..toString())) >>> ((null && Infinity) === +"b");
                        c = 1 + c, (-5 && -2) % (foo_2 && (foo_2.Infinity -= 0 != [ , 0 ][1])) == (1 >> "foo") + (foo_1 = "a" | -2);
                        break;

                      case [ (c = 1 + c, (-1 ^ 23..toString()) >>> (c = c + 1, undefined) != (-2 === "b" != (3 ^ 22))), , (c = 1 + c, 
                        Math_2 = ("bar" != 22 && delete 24..toString(), (22, "number") != ("number" !== 38..toString()))) ]:
                        break;

                      case (c = c + 1) + (typeof foo_1 == "function" && --_calls_ >= 0 && foo_1(true, -2)):
                        c = 1 + c, ("bar" >>> -3 !== (foo_2 = [ , 0 ].length === 2 | NaN)) % (false + "number" === -1 <= 25);
                        c = 1 + c, (Math_2 && (Math_2.null += 22 == "number")) + (([ , 0 ].length === 2) >> true) + ("a" >> undefined === 1 >>> {});
                        break;

                      default:
                        c = 1 + c, (this ^ [ , 0 ][1]) < ("foo" ^ [ , 0 ][1]) >= false >> {} >>> ({} === 22);
                        c = 1 + c, Math_2 && (Math_2[Math_2 += (c = 1 + c, (2 !== {}) <= (24..toString() === this) ^ false >>> {} !== "number" >> -1)] = -0 >>> /[a2][^e]+$/ == (-4 & "object")), 
                        +delete "undefined";
                    }
                    try {
                        {
                            var brake30 = 5;
                            L16419: do {
                                c = 1 + c, -5 & -4 ^ Infinity / this && undefined >>> 5 | (foo_1 = ("", "c"));
                            } while ((c = 1 + c, (true | NaN) > (3 != this) && (foo_2 && (foo_2.b = (/[a2][^e]+$/ == "b") << (foo_1 && (foo_1.Infinity = 5 - /[a2][^e]+$/))))) && --brake30 > 0);
                        }
                    } finally {
                        c = 1 + c, (foo_1 && (foo_1.a = 1 || [ , 0 ].length === 2)) == ([ , 0 ].length === 2) % "undefined" && ([ , 0 ].length === 2) - 0 | "object" * ([ , 0 ].length === 2);
                        c = 1 + c, !((5 || null) | (0 | 25));
                    }
                }
                ({
                    0: a++
                })[--b + (foo_2 && foo_2[a++ + "number"])];
            }
        }
        {
            return;
            --b + typeof typeof (--b + ((c = c + 1, Math_2 && (Math_2.var += "foo" <= 2)) === ("c" % this ^ ("c", 
            2))));
        }
    }
} && brake2 > 0; --brake2) {
    if ([ --b + void function NaN_2() {
        L16420: for (var brake37 = 5; (c = c + 1) + typeof (--b + (foo_2 && foo_2[typeof ((c = c + 1) + typeof b_1)])) && brake37 > 0; --brake37) {
            var bar = function f1() {
                {
                    var brake39 = 5;
                    while ((c = 1 + c, +(/[a2][^e]+$/ ^ "c" ^ undefined != 1)) && --brake39 > 0) {
                        c = 1 + c, NaN_2 && (NaN_2[foo_2] = (NaN >>> 2, NaN_2 && (NaN_2[c = 1 + c, +(foo_2 && (foo_2.Infinity = ([ , 0 ].length === 2) - /[a2][^e]+$/)) >= (-5 >> true == (c = c + 1, 
                        24..toString()))] >>>= -5 === -5), NaN >>> 23..toString() < (-0, "number")));
                    }
                }
            }("b");
        }
        {
            var expr42 = b = a;
            for (var key42 in expr42) {
                c = 1 + c;
                var a_2 = expr42[key42];
                switch (--b + (((c = 1 + c, (foo_2 && (foo_2.in ^= 3 * 38..toString())) >> (-4 | "object") >> ((3 || -5) !== "c" >>> "bar")) ? (c = 1 + c, 
                "undefined" == [] !== 24..toString() >= 3 ^ void (38..toString() < /[a2][^e]+$/)) : (c = 1 + c, 
                5 * 2 >> (NaN_2 && (NaN_2.b <<= -2 >>> this)) != (NaN_2 && (NaN_2.Infinity += (foo_2 = 22 * Infinity) * (NaN_2 && (NaN_2[c = 1 + c, 
                (NaN & undefined) > [] << 22 == ("" || "b") + (4 || undefined)] += "undefined" & true)))))) ? a++ + (b = a) : NaN_2)) {
                  case foo_2 && foo_2.in:
                    {
                        var expr44 = (c = c + 1) + +function() {
                        }();
                        for (var key44 in expr44) {
                            {
                            }
                        }
                    }
                    {
                        var brake46 = 5;
                        while ("object" && --brake46 > 0) {}
                    }
                    break;

                  case NaN_2 && NaN_2.Infinity:
                  case b = a:
                    break;

                  case a++ + ++a:
                    break;
                }
            }
        }
        try {
            {
                var brake49 = 5;
                do {
                    typeof a_2 !== "string";
                } while ((c = c + 1) + a++ && --brake49 > 0);
            }
        } catch (Infinity_2) {
            var NaN_2 = (c = c + 1) + void a, bar = {}[--b + (Infinity_2 && Infinity_2[c = 1 + c, 
            0 + "" + delete -3 ^ (/[a2][^e]+$/ || undefined) >= (1, "bar")])];
            for (var brake52 = 5; a++ + ((NaN_2 = undefined > -2 && -0 >> "foo") < "bar" << "" << true % -2) && brake52 > 0; --brake52) {
                for (var brake53 = 5; (c = c + 1) + a-- && brake53 > 0; --brake53) {
                    try {
                        c = 1 + c, this >>> "c" << ("number" !== []) !== (4 === undefined & (1 ^ 0));
                    } catch (a_2) {
                    }
                }
            }
        }
    }(), --b + ((c = c + 1) + +function() {
        var parseInt_1;
    }()), (c = c + 1) + /[abc4]/.test(((c = c + 1) + !("bar" * "b" <= 1 % 25, foo_2 = ("number" >> "number", 
    delete this)) || b || 5).toString()), --b + void (((foo_2 && (foo_2[c = 1 + c, foo_2 += this == 5 === this % undefined != this % "object" * ("c" + 24..toString())] = Infinity !== "undefined")) | "object" ^ -1) != (foo_2 && (foo_2.Infinity = "object" === 4 & (-0, 
    -3)))) ].undefined) {
        switch (--b + ~((-1 != 23..toString() ^ (23..toString() ^ -5)) - (-1 - 0) / (c = c + 1, 
        [ , 0 ][1]))) {
          case (c = c + 1) + ((0 === 1 ? a : b) || 6).toString()[typeof foo_2 == "function" && --_calls_ >= 0 && foo_2((c = c + 1) + void void (true >= -0 === ([ , 0 ].length === 2 !== 3)))]:
            ((b += a) || 6).toString()[a++ + (foo_2 && foo_2.Infinity)];
            break;

          case (c = c + 1) + a++:
          case foo_2:
            var bar_1 = a++ + (b = a);
            {
                var brake60 = 5;
                while (void function() {}() && --brake60 > 0) {
                    var brake61 = 5;
                    while (--b + (b |= a) && --brake61 > 0) {
                        for (var brake62 = 5; a++ + (typeof f1 == "function" && --_calls_ >= 0 && f1([ (c = 1 + c, 
                        ("" <= -5) << ([] === [ , 0 ][1]) ^ (foo_2 ^= ({} | [ , 0 ][1]) ^ true + -1)) ].c, 2)) && brake62 > 0; --brake62) {
                            c = c + 1;
                        }
                    }
                }
            }
            break;

          default:
            switch (--b + a--) {
              case "c":
                if ((a++ + (foo_2 = --b + (typeof f2 == "function" && --_calls_ >= 0 && f2(23..toString(), (c = 1 + c, 
                ((foo_2 |= null ^ 23..toString()) !== [] < /[a2][^e]+$/) - (c = c + 1, -1) % (-4 + 1)), "b"))) || 9).toString()[0 === 1 ? a : b]) {
                    c = c + 1;
                }
                if (((c = c + 1) + [] || a || 3).toString()) {
                    c = c + 1;
                    {
                        var expr70 = ~((5 !== true) > (4 == -0) ^ 22 + "foo" <= (Infinity ^ true));
                        L16421: for (var key70 in expr70) {
                            c = 1 + c;
                            var b_2 = expr70[key70];
                            {
                            }
                        }
                    }
                    {
                        var brake72 = 5;
                        L16422: do {
                            {
                            }
                        } while (+function a_1() {
                        }() && --brake72 > 0);
                    }
                    {
                        var Infinity_1 = function f2() {
                        }();
                    }
                }
                break;

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

              case --b + (typeof foo_2 == "function" && --_calls_ >= 0 && foo_2(typeof f3 == "function" && --_calls_ >= 0 && f3(!function b_2() {
                    c = 1 + c, ([ , 0 ].length === 2 ^ -4) === (foo_2 && (foo_2.var >>= 0 ^ -0)) != (Infinity !== 0) << [] * "foo";
                    c = 1 + c, foo_2 && (foo_2.null <<= [] % 22 > (5 <= undefined) | (-1 && -2) > (undefined | undefined));
                    c = 1 + c, (-2 - 2 > (2 < [ , 0 ][1])) / (Infinity_1 *= "c" * NaN | (c = c + 1, 
                    "function"));
                }(), /[a2][^e]+$/, this), b = a, --b + (typeof foo_2 == "function" && --_calls_ >= 0 && foo_2(b++, "object", delete b)))):
                break;

              case --b:
                try {
                    {
                        var brake83 = 5;
                        L16423: while ((c = c + 1) + {
                            3: (c = c + 1) + ++b,
                            c: (c = c + 1) + {
                                "-2": (c = 1 + c, (-5 === "b") * - -3 / ((this != 23..toString()) << ("bar" >> 1))),
                                b: (c = 1 + c, (c = c + 1, 25) % (3 != "function") <= (null < "foo" >= 5 - undefined))
                            },
                            in: b + 1 - .1 - .1 - .1
                        }[a++ + ((this | "object") < ("number" ^ [ , 0 ].length === 2)) % ((foo_2 = "undefined" > "foo") || foo_2 && (foo_2.NaN &= -4 >> "object"))] && --brake83 > 0) {
                            var expr84 = --b + [ (c = 1 + c, (0 % -5, [ , 0 ][1] || "function") ^ (5 <= -1 ^ "number" == "function")), (c = 1 + c, 
                            ((bar_1 && (bar_1.b = -0 > 25)) & 4 > "number") == (b_2 && (b_2.a = /[a2][^e]+$/ === NaN)) * (undefined >>> /[a2][^e]+$/)), (c = 1 + c, 
                            ((b_2 = 25 || this) <= "function" + 25) * (Infinity_1 && (Infinity_1.undefined >>= -3 % -4 !== ("c" !== null)))), (c = 1 + c, 
                            ((false ^ "bar") & "bar" >= /[a2][^e]+$/) <= (b_2 && (b_2.NaN += (3 ^ -2) >> (-5 < 1)))) ];
                            for (var key84 in expr84) {
                                c = 1 + c;
                                var bar_2 = expr84[key84];
                                0 === 1 ? a : b;
                            }
                        }
                    }
                } catch (c_1) {
                    var bar_1 = (c = c + 1) + -b;
                    for (var brake87 = 5; --b + [ (c = 1 + c, (-3 == 1) < (-5 ^ -2) ^ (b_2 && (b_2.b <<= 24..toString() % NaN)) == -3 / ([ , 0 ].length === 2)), , (c = 1 + c, 
                    (b_2 && (b_2.NaN >>= (1 && "bar") - ("a" << -1))) === (null === "number") << (this << undefined)) ][(c = c + 1) + (b_2 && b_2[c = 1 + c, 
                    (-3 !== NaN) >= (bar_2 = -5 != -5) & (-5 <= /[a2][^e]+$/) >>> "undefined" - NaN])] && brake87 > 0; --brake87) {
                        var b_1 = function f3() {
                        }(23..toString(), []);
                    }
                } finally {
                    {
                        var expr89 = new function b_2() {
                            this.foo = (1 !== [ , 0 ][1]) % (0 || 0);
                            this.in += (c = c + 1, 0) * (true % NaN);
                            this[--b + (typeof bar_1 == "function" && --_calls_ >= 0 && bar_1(-4))] = "function" >>> Infinity !== "foo" >= "";
                            c = 1 + c, c = c + 1, 23..toString() > "number" !== ("b" & "function");
                            c = 1 + c, b_2 && (b_2[(c = c + 1) + -3] = ((2 !== -1) > (-0 === 22)) + (24..toString() >>> 23..toString() << (3 >>> "number")));
                            c = 1 + c, (bar_2 && (bar_2.in = 5 >>> Infinity <= (NaN ^ /[a2][^e]+$/))) ^ -0 <= [ , 0 ][1] === (this == 22);
                            c = 1 + c, (-3 % [] ^ NaN + "foo") >= ("number" + -2) % (1 >>> "number");
                        }();
                        L16424: for (var key89 in expr89) {
                            c = 1 + c;
                            var undefined_2 = expr89[key89];
                            {
                                var brake94 = 5;
                                do {
                                    c = 1 + c, (undefined > 0) - ("" >>> -0) < (1 != "object") << (-2 ^ 4);
                                } while (a++ + {
                                    a: (c = 1 + c, void (24..toString() > 4) === (("a", "object") & -5 >= "number"))
                                }[c = 1 + c, b_1 && (b_1[(c = c + 1) + (b += a) ? (c = c + 1) + (1 === 1 ? a : b) : typeof f0 == "function" && --_calls_ >= 0 && f0()] = (-2 & "") != (-1 == "a") != (c = c + 1, 
                                38..toString()) / ("function" % "c"))] && --brake94 > 0);
                            }
                        }
                    }
                    {
                        var foo_2 = function f4(foo, b_2_1, b_1) {
                        }("b", (c = 1 + c, (22 != "b" | "object" ^ -5) !== ("bar" == this) + (/[a2][^e]+$/ + "bar")));
                    }
                }
                if (new function NaN_1() {
                    {
                        c = 1 + c, (false <= 2 | 23..toString() << 0) / ((Infinity === -0) / (c = c + 1, 
                        "bar"));
                    }
                    L16425: for (var brake100 = 5; b_1 && brake100 > 0; --brake100) {
                        for (var brake101 = 5; (c = 1 + c, (undefined_2 && (undefined_2[c = 1 + c, c = c + 1, 
                        (c = c + 1, {}) >> ("c" >> {})] = ("a", this))) * (bar_2 && (bar_2.Infinity |= NaN << "")) > ({} > 22 != ("undefined" ^ 0))) && brake101 > 0; --brake101) {
                            c = 1 + c, -(b_2 = this * [ , 0 ][1]) <= false / 2 >>> ("b" <= -1);
                        }
                    }
                    switch ({
                        var: (c = 1 + c, (bar_2 && (bar_2.b = 3 <= [] <= (3 == true))) * ((NaN_1 && (NaN_1.Infinity = Infinity <= 38..toString())) < (38..toString() ^ [ , 0 ][1]))),
                        get NaN() {
                            c = 1 + c, ((foo_2 = 0 << -0) || NaN << "object") | ("a" >= -1 && void null);
                        },
                        "-2": (c = 1 + c, (5, "a") % (25 === -3) >>> (38..toString() | "object" && (Infinity_1 && (Infinity_1.undefined = Infinity + "object")))),
                        "": (c = 1 + c, (-4 == false) >>> (Infinity, "") === (Infinity & -3) <= (false & [ , 0 ].length === 2)),
                        "-2": (c = 1 + c, ((c = c + 1, "object") > "c" >>> 23..toString()) * (undefined_2 && (undefined_2.foo >>>= (false == "a") - 24..toString() * "bar")))
                    }) {
                      case delete ((NaN_1 && (NaN_1[c = 1 + c, (this ^ NaN) << ("b" !== 1) >> ("function" / "", 
                        "object" != /[a2][^e]+$/)] += /[a2][^e]+$/ <= -3)) >= null - "bar" === (3 === -4) >= (this >= "foo")):
                        c = 1 + c, ({} == "a") % ("" >> "function") >= ((Infinity && -1) == "function" + this);
                        c = 1 + c, ((NaN <= this) << null % "number") % ((24..toString() & "object") - (this <= "object"));
                        break;

                      case a++ + b--:
                        break;

                      default:
                        c = 1 + c, b_2 && (b_2.in *= (Infinity != ([ , 0 ].length === 2) & 24..toString() % this) == ("b" * true == -1 + 4));
                        c = 1 + c, foo_2 && (foo_2.null += (b_2 += "bar" < 23..toString() == NaN % 4) != {} - null <= 23..toString() >> -0);

                      case undefined_2 /= (c = 1 + c, delete (5 << 5) << ("object" + 2) / delete "a"):
                        c = 1 + c, ((Infinity_1 = -0 & [ , 0 ].length === 2) || void 23..toString()) ^ (undefined & 38..toString() | true === ([ , 0 ].length === 2));
                        c = 1 + c, Infinity_1 && (Infinity_1.c >>>= 2 < "undefined" && null <= false && "undefined" / 38..toString() * (-3 - 23..toString()));
                        break;
                    }
                    c = c + 1;
                }()) {
                    switch ((c = c + 1) + (typeof f5 == "function" && --_calls_ >= 0 && f5([ (c = 1 + c, 
                    -1 / [ , 0 ][1] >= 0 - "c" >= (-2 % 1 != (null == []))), (c = 1 + c, (25 < 23..toString()) % ("number", 
                    "b") || (foo_2 -= -4 || null) && NaN | "function") ].c, 22, a++ + {
                        undefined: (c = 1 + c, 2 - NaN < 24..toString() << true === (-"b" != (24..toString() ^ Infinity))),
                        a: (c = 1 + c, (c = c + 1, 5 <= -4) > ("object" ^ [ , 0 ][1]) >> (Infinity_1 && (Infinity_1.in += 24..toString() === "foo"))),
                        "": (c = 1 + c, c = c + 1, ~("bar" || /[a2][^e]+$/)),
                        1.5: (c = 1 + c, ("b" === this) + (2 & 23..toString()) || 25 / 0 !== (undefined & -5)),
                        undefined: (c = 1 + c, -3 << "a" >= +2 || (-3 < -2) >>> (bar_1 && (bar_1[c = 1 + c, 
                        (Infinity_1 && (Infinity_1.c = (24..toString() <= "foo") * (([ , 0 ].length === 2) * -2))) + (undefined < "c", 
                        [ , 0 ].length === 2 == -0)] = -5 !== 1)))
                    }[c = 1 + c, (1 !== "b" | 5 != "number") === (3 | 3) >= 3 + this]))) {
                      default:
                        {
                            var expr113 = 0 === 1 ? a : b;
                            for (var key113 in expr113) {
                                c = 1 + c;
                                var bar_2_2 = expr113[key113];
                                {
                                    var expr114 = (c = 1 + c, false << -2 !== "undefined" <= 1 == (undefined_2 = 0 === -3, 
                                    "b", 3));
                                    L16426: for (var key114 in expr114) {
                                        c = 1 + c, (3 < 23..toString(), -2 - 5) >>> (null << ([ , 0 ].length === 2) == ("function" !== "a"));
                                    }
                                }
                            }
                        }

                      case {
                            Infinity: [ , (c = 1 + c, (4 & "object") !== this < -1 === (38..toString() << -2 && true >> -2)), (c = 1 + c, 
                            (1 < "function") * (c = c + 1, "undefined") >= ("b" & 22) - (0 ^ -1)), (c = 1 + c, 
                            bar_2 += (/[a2][^e]+$/ ^ -5) > ([] && [ , 0 ].length === 2) | ("foo" == 1) >>> (NaN === 0)), (c = 1 + c, 
                            ("" === false & 3 / 24..toString()) == (0 % -1 & null != 0)) ][c = 1 + c, (5 || 4) === (b_2 && (b_2[c = 1 + c, 
                            ((foo_2 += ("b", "a")) == (undefined_2 && (undefined_2[c = 1 + c, (-4 ^ [ , 0 ][1]) > "c" + [] !== ((23..toString(), 
                            -0) || (c = c + 1, 22))] = 25 >>> 0))) + (bar_1 && (bar_1[b >>>= a] = (NaN >> "foo", 
                            23..toString() === undefined)))] = null == [ , 0 ][1])) != (4 + "foo" || Infinity << "undefined")],
                            "": typeof bar_2 !== "object",
                            3: --b + b--,
                            "-2": a++ + (b += a)
                        }[-((bar_2_2 && (bar_2_2.foo = (bar_2 += -3 > "object") % ~"object")) <= (bar_1 && (bar_1.Infinity = [] + "object" >> (undefined != -4))))]:
                        {
                            var expr116 = --b + {
                                0: (c = 1 + c, (undefined, "b") - (22 > "bar"), -3 / [] <= NaN - undefined),
                                a: (c = 1 + c, (22 >= -1) * (24..toString() >= false) & "b" + this >= (Infinity ^ [ , 0 ].length === 2)),
                                "-2": (c = 1 + c, (38..toString() < this) / (c = c + 1, 22) >>> ((this ^ -0) >> (true << 4))),
                                Infinity: (c = 1 + c, (({} ^ "object") << (4 << "function")) % (("undefined" >= 22) * (bar_1 && (bar_1[c = 1 + c, 
                                Infinity_1 ^= ((bar_1 && (bar_1[c = 1 + c, 1 >= null == ("c" & -5) ^ (-0 === NaN, 
                                "a" >>> -2)] = {} + 25)) !== (bar_1 += "b" - "c")) > (foo_2 && (foo_2.Infinity += {} >>> this >> (-4 | 5)))] = 24..toString() && [ , 0 ][1]))))
                            }.b;
                            for (var key116 in expr116) {
                                c = 1 + c;
                                var b_1_2 = expr116[key116];
                                for (var brake117 = 5; (c = 1 + c, b_1 = (c = c + 1, -4 >> "function") >> ((bar_2_2 = "bar" / [ , 0 ][1]) >> (22 != "object"))) && brake117 > 0; --brake117) {
                                    c = 1 + c, (true != undefined) >= (undefined != "b") === ([ , 0 ][1] !== null) / (22 >= ([ , 0 ].length === 2));
                                }
                            }
                        }

                      case "b":
                        ({});
                        break;

                      case b >>>= a:
                        L16427: {
                            c = 1 + c, (([ , 0 ][1] & this) >>> (b_2 = ([ , 0 ].length === 2) < [ , 0 ][1])) * (("foo" & 5) - 25 % 1);
                            c = 1 + c, ([ , 0 ][1] ^ [ , 0 ][1]) * (Infinity << "c") + ("" - "c" & + -0);
                            c = 1 + c, ~(null | 4) != null <= ([ , 0 ].length === 2) < 3 << "";
                            c = 1 + c, [] >> undefined | (25 | -3) && ([ , 0 ][1] >= null) - (bar_2 && (bar_2.b += 22 ^ "undefined"));
                        }
                        for (var brake125 = 5; a++ + {
                            Infinity: (c = 1 + c, undefined_2 && (undefined_2[/[abc4]/.test((b_2 && b_2[c = 1 + c, 
                            ("foo" | -1) >>> 2 * ([ , 0 ].length === 2) == (bar_1 && (bar_1.foo = "number" < [ , 0 ][1]) && 25 / 23..toString())] || b || 5).toString())] = ((25 !== "") >>> (0 && "bar")) % ((24..toString(), 
                            {}) < 2 - 0)))
                        } && brake125 > 0; --brake125) {
                        }
                        break;
                    }
                }
                break;
            }
        }
    } else {
        for (var brake127 = 5; (c = c + 1) + (("function", "c") >>> (38..toString() >>> 3) >>> ([] >= "a" ^ "a" >= ([ , 0 ].length === 2))) && brake127 > 0; --brake127) {
            for (var brake128 = 5; (c = c + 1) + !a && brake128 > 0; --brake128) {
                break L16417;
            }
        }
    }
}

console.log(null, a, b, c, Infinity, NaN, undefined);
// uglified code
// (beautified)
for (var r = 10, c = 100, s = 10, v = 0, N = "function" == typeof f1 && 0 <= --r && f1(), i = 5; --s + {
    undefined: --s + N,
    get in() {
        if (--s + (s = c)) {
            var a = (--s, v = 1 + v, a && (a[-1] = 0), N && (N[v = 1 + v, 0] &= NaN), v += 1, 
            void (v += 1));
            try {
                if (t) {
                    var i = "function" == typeof f2 && 0 <= --r && f2("23");
                    for (var f in i) {
                        v = 1 + v;
                        var t = i[f];
                        v = 1 + v, N && (N.null = !0), a += "foo" % this;
                    }
                } else if (s--) {
                    v = 1 + v, a *= (a && (a[v = 1 + v, !0] <<= 4294967292)) / (v += 1, -5) << ((N &= -0) < !1);
                } else {
                    for (var n = 5; v = 1 + v, v += 1, 0 < n; --n) {
                        v = 1 + v;
                    }
                }
            } catch (i) {
                switch (!1) {
                  case --s + {
                        set NaN(i) {
                            this.b = 1;
                        }
                    }.a:
                    v = 1 + v;
                    break;

                  case --s + ("special" == typeof Math):
                    break;

                  case (v += 1) + ("" + (1 * (!1 | (N = !0)) || 4))[v = 1 + (v = 1 + v), (NaN < (N && (N[v = 1 + v, 
                    ((a *= NaN & (N &= !0)) && (a.foo = 3)) << !1] <<= NaN))) >>> (!0 | (a = -2))]:
                    a = !1, v = 1 + (v = 1 + v);

                  case --s:
                    v = 1 + v;
                }
                var o = s;
            } finally {
                switch (new function() {
                    this.var = t < "", this[v = 1 + v, void 0 !== (N && (N[v = 1 + v, (-5 ^ this) >= (o && (o.foo >>= !0)) <= "22undefined" + !1] += 0)) == (1 ^ (v += 1, 
                    "a"))] %= 0;
                }()) {
                  case --s + (s = c):
                    v = 1 + v, v = 1 + (v += 1), N && (N.Infinity -= !1), a = -2;
                    break;

                  case [ (v = 1 + v, -24 >>> void (v += 1) != 1), , (v = 1 + v, o = !0) ]:
                    break;

                  case (v += 1) + ("function" == typeof a && 0 <= --r && a(!0, -2)):
                    v = (N = 1) + (v = 1 + v), o && (o.null += !1);
                    break;

                  default:
                    v = 1 + (v = 1 + v), o && (o[o += (v = 1 + v, !0 <= ("24" === this) ^ !1)] = !0);
                }
                try {
                    for (var e = 5; -8 ^ t / this && (a = "c"), v = 1 + (v = 1 + v), (3 != this) < 1 && N && (N.b = !1 << (a && (a.Infinity = NaN))) && 0 < --e; ) {}
                } finally {
                    v = 1 + v, a && (a.a = 1), v = 1 + v;
                }
            }
            c++, --s, N && N[c++ + "number"];
        }
    }
} && 0 < i; --i) {
    if ([ --s + void function() {
        for (var i = 5; (v += 1) + typeof (--s + (N && N[typeof ((v += 1) + typeof b)])) && 0 < i; --i) {
            !function() {
                for (var i = 5; v = 1 + v, 0 < --i; ) {
                    v = 1 + v, o && (o[N] = (o && (o[v = 1 + v, +(N && (N.Infinity = NaN)) >= (-3 == (v += 1, 
                    "24"))] >>>= !0), !1));
                }
            }();
        }
        var a = s = c;
        for (var f in a) {
            switch (v = 1 + v, a[f], --s + (v = 1 + v, ((N && (N.in ^= 114)) >> -4 >> !0 ? (v = 1 + v, 
            1) : (v = 1 + v, 10 >> (o && (o.b <<= -2 >>> this)) != (o && (o.Infinity += (N = 1 / 0) * (o && (o[v = 1 + v, 
            !1] += 0)))))) ? c++ + (s = c) : o)) {
              case N && N.in:
                v += 1;
                for (var t = 5; 0 < --t; ) {}
                break;

              case o && o.Infinity:
              case s = c:
              case c++ + ++c:
            }
        }
        try {
            var n = 5;
            do {} while ((v += 1) + c++ && 0 < --n);
        } catch (i) {
            for (var o = (v += 1) + void 0, e = (--s, i && i[v = 1 + v, 0], 5); c++ + ((o = !1) < 0) && 0 < e; --e) {
                for (var r = 5; (v += 1) + c-- && 0 < r; --r) {
                    try {
                        v = 1 + v;
                    } catch (i) {}
                }
            }
        }
    }(), --s + ((v += 1) + NaN), (v += 1) + /[abc4]/.test("" + ((v += 1) + !(N = !0) || s || 5)), --s + (N && (N[v = 1 + v, 
    N += 5 == this === this % void 0 != this % "object" * "c24"] = !0), void (N && (N.Infinity = 0))) ].undefined) {
        switch (--s + ~(-19 - -1 / (v += 1, 0))) {
          case (v += 1) + ("" + (s || 6))["function" == typeof N && 0 <= --r && N((v += 1) + void 0)]:
            s += c, c++, N && N.Infinity;
            break;

          case (v += 1) + c++:
          case N:
            var a = c++ + (s = c);
            break;

          default:
            switch (--s + c--) {
              case "c":
                if (("" + (c++ + (N = --s + ("function" == typeof f2 && 0 <= --r && f2("23", (v = 1 + v, 
                (!0 !== (N |= 23)) - (v += 1, -1)), "b"))) || 9))[s] && (v += 1), "" + ((v += 1) + [] || c || 3)) {
                    for (var f in v += 1, -2) {
                        v = 1 + v;
                        var t = (-2)[f];
                    }
                    var n = void 0;
                }
                break;

              case c++ + [ --s + a, c++ + "bar", c++ + {
                    3: ("" + ("function" == typeof t && 0 <= --r && t((v = 1 + v, t && (t[c++ + N] += (t && (t[(v += 1) + ("function" == typeof f4 && 0 <= --r && f4())] += 0 ^ (t = !0))) > (n = NaN) >>> 2)), -0) || 9))[v = 1 + v, 
                    (2 === (v += 1, this)) < -2 ? (v = 1 + v, v += 1, this % -3 % -2) : (v = 1 + v, 
                    0 == !0 < (v += 1, !0))],
                    "-2": +function() {
                        v = 1 + v, a && (a[v = 1 + v, (t && (t.foo += !0)) !== (N = 0 ^ (v += 1, []))] |= 0), 
                        v = 1 + v, n && (n.a = !1 / (a = (a = this >> "number") - !0)), v = 1 + v, n && (n[c++ + "" + (c || 3)] = (N *= -5) >>> void 0 <= !1);
                    }(),
                    null: c++ + ("function" == typeof a && 0 <= --r && a("bar", "c")),
                    var: --s + --s,
                    in: a
                } ].foo:
                a && (a[v = 1 + v, !1] -= 5);
                break;

              case --s + ("function" == typeof N && 0 <= --r && N("function" == typeof f3 && 0 <= --r && f3((v = 1 + v, 
                N && (N.var >>= 0), v = 1 + v, N && (N.null <<= 0), v = 1 + v, !void (n *= NaN | (v += 1, 
                "function"))), /[a2][^e]+$/, this), s = c, --s + ("function" == typeof N && 0 <= --r && N(s++, "object", delete s)))):
                break;

              case --s:
                try {
                    for (var o = 5; (v += 1) + {
                        3: (v += 1) + ++s,
                        c: (v += 1) + {
                            "-2": 0 / (("23" != this) << 0),
                            b: (v = 1 + (v = 1 + v), v += 1, !0)
                        },
                        in: s + 1 - .1 - .1 - .1
                    }[c++ + (("object" | this) < 1) % ((N = !0) || N && (N.NaN &= -4))] && 0 < --o; ) {
                        var e = --s + [ 0, (v = 1 + (v = 1 + v), (!1 & (a && (a.b = !1))) == 0 * (t && (t.a = !1))), (v = 1 + v, 
                        ((t = 25) <= "function25") * (n && (n.undefined >>= !0))), (v = 1 + v, 0 <= (t && (t.NaN += -2))) ];
                        for (var h in e) {
                            v = 1 + v;
                            var u = e[h];
                        }
                    }
                } catch (i) {
                    a = (v += 1) + -s;
                    for (var y = 5; --s + [ (v = 1 + v, !0 ^ -3 == (t && (t.b <<= NaN))), , (v = 1 + v, 
                    (t && (t.NaN >>= NaN)) === !1 << (this << void 0)) ][(v += 1) + (t && t[v = 1 + v, 
                    (u = !1) <= !0 & 0])] && 0 < y; --y) {
                        var b = void 0;
                    }
                } finally {
                    var d = new function i() {
                        this.foo = NaN, this.in += NaN * (v += 1, 0), this[--s + ("function" == typeof a && 0 <= --r && a(-4))] = !0, 
                        v = 1 + v, v = 1 + (v += 1), v = (i[(v += 1) + -3] = 1) + v, u && (u.in = !1), v = 1 + v;
                    }();
                    for (var l in d) {
                        v = 1 + v;
                        for (var p = d[l], k = 5; c++ + {
                            a: !1
                        }[v = 1 + (v = 1 + (v = 1 + v)), b && (b[(v += 1) + (s += c) ? (v += 1) + c : "function" == typeof f0 && 0 <= --r && f0()] = 0 != (v += 1, 
                        NaN))] && 0 < --k; ) {}
                    }
                    N = void (v = 1 + v);
                }
                if (new function i() {
                    v = 1 + v, v += 1;
                    for (var a = 5; b && 0 < a; --a) {
                        for (var f = 5; v = 1 + v, !1 < (p && (p[v = 1 + v, v += 1, v += 1, 0] = this)) * (u && (u.Infinity |= 0)) && 0 < f; --f) {
                            v = 1 + v, t = 0 * this;
                        }
                    }
                    switch ({
                        var: (v = 1 + v, (u && (u.b = !0)) * ((i.Infinity = !1) < 38)),
                        get NaN() {
                            v = 1 + v, N = 0;
                        },
                        "-2": (v = 1 + v, NaN >>> (n && (n.undefined = 1 / 0 + "object"))),
                        "": !1,
                        "-2": (v = 1 + (1 + v), v += 1, !1 * (p && (p.foo >>>= NaN)))
                    }) {
                      case i[v = 1 + v, (NaN ^ this) << !0 >> !0] += !1, !0:
                        v = 1 + (1 + v);
                        break;

                      case c++ + s--:
                        break;

                      default:
                        v = 1 + v, t && (t.in *= 0 == (!0 & "24" % this)), v = 1 + v, N && (N.null += 0 != (t += !1));

                      case p /= (v = 1 + v, 1):
                        v = 1 + (1 + v), (n = 0) && (n.c >>>= !1);
                    }
                    v += 1;
                }()) {
                    switch ((v += 1) + ("function" == typeof f5 && 0 <= --r && f5([ (v = 1 + v, !0), (v = 1 + v, 
                    (N -= -4) && 0) ].c, 22, c++ + {
                        undefined: (v = 1 + v, !1),
                        a: (v = 1 + v, v += 1, 0 >> (n && (n.in += !1)) < !1),
                        "": (v = 1 + v, v += 1, -1),
                        1.5: (v = 1 + v, ("b" === this) + 2 || !0),
                        undefined: (v = 1 + v, !0 >>> (a && (a[v = 1 + v, (n && (n.c = -2)) + !1] = !0)))
                    }[v = 1 + v, 1 === 3 + this <= 3]))) {
                      default:
                        var I = s;
                        for (var w in I) {
                            v = 1 + v;
                            var j = I[w], g = (v = 1 + v, 1 == (p = !1, 3));
                            for (var m in g) {
                                v = 1 + v;
                            }
                        }

                      case {
                            Infinity: [ , (v = 1 + v, 0 !== this < -1 === 0), (v = 1 + v, 1 <= !1 * (v += 1, 
                            "undefined")), (v = 1 + v, u += 0), (v = 1 + v, !0) ][v = 1 + v, 5 === (t && (t[v = 1 + v, 
                            ((N += "a") == (p && (p[v = 1 + v, !1 !== (v += 1, 22)] = 25))) + (a && (a[s >>>= c] = !1))] = !1)) != "4foo"],
                            "": "object" != typeof u,
                            3: --s + s--,
                            "-2": c++ + (s += c)
                        }[-((j && (j.foo = (u += !1) % -1)) <= (a && (a.Infinity = 0)))]:
                        var M = --s + {
                            0: !1,
                            a: 1 & 1 <= "b" + this,
                            "-2": ("38" < this) / 22 >>> ((-0 ^ this) >> 16),
                            Infinity: (v = 1 + ((v = 1 + (1 + (1 + v))) + 1), 0 % (!1 * (a && (a[v = 1 + v, 
                            n ^= ((a && (a[v = 1 + v, 0] = {} + 25)) !== (a += NaN)) > (N && (N.Infinity += {} >>> this >> -3))] = 0))))
                        }.b;
                        for (var $ in M) {
                            v = 1 + v;
                            for (var q = 5; v = 1 + v, v += 1, (b = -4 >> ((j = NaN) >> !0)) && 0 < q; --q) {
                                v = 1 + v;
                            }
                        }

                      case "b":
                        break;

                      case s >>>= c:
                        t = !1, v = 1 + (1 + (1 + (1 + v))), u && (u.b += 22);
                        for (var x = 5; c++ + {
                            Infinity: (v = 1 + v, p && (p[/[abc4]/.test("" + (t && t[v = 1 + v, -1 >>> 2 == (a && (a.foo = !1) && 25 / "23")] || s || 5))] = NaN))
                        } && 0 < x; --x) {}
                    }
                }
            }
        }
    } else {
        for (var z = 5; (v += 1) + 0 && 0 < z && !((v += 1) + !c); --z) {}
    }
}

console.log(null, c, s, v, 1 / 0, NaN, void 0);
original result:
null 105 98 62 Infinity NaN undefined

uglified result:
null 125 116 334 Infinity NaN undefined

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