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

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

ufuzz failure #3402

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

Comments

@alexlamsl
Copy link
Collaborator

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

try {
    {
        var expr2 = {
            length: a++ + (bar_2 %= --b + (typeof NaN_1 !== "symbol"))
        };
        for (var key2 in expr2) {
            c = 1 + c;
            var bar_2 = expr2[key2];
            if (bar_2) {
                var NaN;
            } else {
                a++ + -2;
            }
        }
    }
} catch (Infinity) {
    {
        var brake6 = 5;
        while ((c = c + 1) + (typeof f1 == "function" && --_calls_ >= 0 && f1((c = c + 1) + {}, a++ + {
            null: a++ + 2,
            "-2": function bar_1() {}
        }.a)) && --brake6 > 0) {
            var a_2 = function f0(bar_2) {
                try {
                    L69716: for (var brake9 = 5; --b + [ a++ + --b, typeof foo_1 !== "function", ((c = 1 + c, 
                    Infinity < NaN <= ("foo" || -2) | (bar_2 && (bar_2.undefined = "undefined" >> 4)) == "a" <= NaN) || a || 3).toString(), --b + ((c = 1 + c, 
                    bar_2 && (bar_2[b = a] = (bar_2 && (bar_2.c ^= 2 >>> Infinity)) + (0 >> /[a2][^e]+$/) >>> ((bar_2 = 0 < "b") >>> (Infinity != null)))) || a || 3).toString(), bar_2 += (c = 1 + c, 
                    (null != "undefined" | 2 << {}) & ("a" !== 22) > (false & 1)) ][{
                        foo: (c = 1 + c, (2 >>> 23..toString()) % ("" | true) <= (/[a2][^e]+$/ != NaN) + (22 << ([ , 0 ].length === 2))),
                        length: (c = 1 + c, void (this != "foo") >= 25 % 24..toString() / (([ , 0 ].length === 2) >= "undefined")),
                        in: (c = 1 + c, ("undefined" | -0) - (1 << 2), (bar_2 && (bar_2[(c = 1 + c, ("object" <= [ , 0 ][1]) >> ("bar" < "undefined") ^ ("number", 
                        Infinity) === -1)] = false !== "number")) < (true !== -0)),
                        length: (c = 1 + c, bar_2 %= ("bar" & {}) != -0 / "undefined" != ((c = c + 1, 22) ^ 0 <= this)),
                        length: (c = 1 + c, (+ -5, bar_2 && (bar_2[(c = 1 + c, (bar_2 && (bar_2[a++ + (bar_2 && bar_2.null)] = -5 - "foo" > ([] && undefined))) - (("b" ^ "function") >> (3, 
                        -0)))] = 2 && 25)) > (38..toString() !== "" !== "b" > 1))
                    }.c] && brake9 > 0; --brake9) {
                        var expr10 = {
                            set in(foo_2) {
                                this.b += 23..toString() == [ , 0 ][1];
                            },
                            "\t": (c = 1 + c, (bar_2 && (bar_2[(c = 1 + c, -0 * 23..toString() << ~"function" != (-1 && -5) >= (this >= {}))] = "a" >>> 5)) << ("foo" !== 4) & 2 / 5 << (c = c + 1, 
                            NaN))
                        }[a++ + true];
                        for (var key10 in expr10) {
                            var foo_2 = (c = c + 1) + void a, Math_1 = {
                                undefined: (c = 1 + c, {} / NaN / ("object" < "") | 23..toString() / "" & true == -0)
                            }[(c = 1 + c, (-5 + 1 == (/[a2][^e]+$/ ^ true)) < Infinity >>> 2 << (38..toString() ^ 4))];
                        }
                    }
                } finally {
                    {
                        var brake12 = 5;
                        do {
                            (c = c + 1) + ++a;
                        } while (typeof Infinity == "crap" && --brake12 > 0);
                    }
                    return (c = c + 1) + !((([ , 0 ].length === 2) / true | false !== "") << ("b" == -3 ^ false << undefined));
                }
                {
                    var brake15 = 5;
                    while (--b + !(([ , 0 ].length === 2 ^ "undefined" || 0 <= 24..toString()) == 4 >> "a" > (3 < 0)) && --brake15 > 0) {
                        var expr16 = (c = c + 1) + 3;
                        for (var key16 in expr16) {
                        }
                    }
                }
            }({});
        }
    }
    c = c + 1;
} finally {
    var arguments_1 = function arguments_1() {
        switch (typeof f1 == "function" && --_calls_ >= 0 && f1()) {
          default:
          case --b + [ b++, a++ + [ a--, (c = c + 1) + [ (c = 1 + c, (a_2 |= (24..toString() && this) / (arguments_1 = [ , 0 ][1] > 0)) == (("object" && -1) != ([ , 0 ].length === 2) >> "a")), (c = 1 + c, 
            (2 % "function" !== !"undefined") % (38..toString() / NaN >> (-3 | -1))), (c = 1 + c, 
            a_2 && (a_2.NaN = (arguments_1 && (arguments_1.foo /= -5 % -1 && "foo" < -0)) * (this - [ , 0 ][1] || 23..toString() ^ -4))), (c = 1 + c, 
            (-2 <= NaN, 2 == 0) != ((c = c + 1, "foo") & (arguments_1 = "bar" <= -3))) ], a++ + (bar_2 && bar_2.length), bar_2 && bar_2.a, typeof arguments_1 == "function" && --_calls_ >= 0 && arguments_1() ].undefined, ,  ][a++ + (typeof f1 == "function" && --_calls_ >= 0 && f1())]:
            var Math = typeof bar_2 == "object" ? ((c = c + 1) + b++ || 2).toString()[a++ + delete a] : (c = c + 1) + (a_2 >>>= (c = c + 1) + ((2 == ([ , 0 ].length === 2)) > (0 < "foo") > ~+undefined));
            break;

          case -((38..toString() != 24..toString()) >= ("function" & "function") ^ (bar_2 += (bar_2 && (bar_2[(c = 1 + c, 
            !-2 * ("object" / "object") > (c = c + 1, null) + (22 || [ , 0 ].length === 2))] += /[a2][^e]+$/ ^ 1)) != (24..toString() && NaN))):
            break;

          case b = a:
            break;
        }
        {
            var brake22 = 5;
            while (arguments_1 && arguments_1.Infinity && --brake22 > 0) {
                for (var brake23 = 5; a++ + new function bar_2() {
                    this.foo = (2 === 0) <= (/[a2][^e]+$/ <= "number") < (25 ^ 3 ^ (NaN | -1)) < (undefined << "" | [ , 0 ][1] - 24..toString()) / void (-0 & /[a2][^e]+$/);
                    try {
                        L69717: for (var brake25 = 5; (c = 1 + c, bar_2 && (bar_2[--b + --b] = (bar_2 = ("" - Infinity) % (bar_2 && (bar_2.null += "a" & -4))) && -1 < -3 ^ (NaN ^ "foo"))) && brake25 > 0; --brake25) {
                            c = 1 + c, !([ , 0 ].length === 2 || "object") > (!"bar" || 1 % 0);
                        }
                    } finally {
                        c = 1 + c, (NaN || 0) != (Infinity & true) | 3 != 23..toString() === ([ , 0 ].length === 2) < -3;
                        c = 1 + c, ({} === "object" ^ 0 % this) > /[a2][^e]+$/ >>> 4 >> ("object" > 38..toString());
                    }
                }() && brake23 > 0; --brake23) {
                    var brake29 = 5;
                    do {
                        try {
                            [ (c = 1 + c, (bar_2 && (bar_2[bar_2] = (22, /[a2][^e]+$/) & 2 - "b")) | (a_2 && (a_2.Infinity = -5 > [])) === 24..toString() <= /[a2][^e]+$/), (c = 1 + c, 
                            (38..toString() << undefined) + ("bar" !== "number") === ("a" && 22) * (-5 >> 23..toString())) ].foo;
                        } finally {
                            var bar_1 = (c = 1 + c, ([ , 0 ].length === 2 ^ "c" && -5 * -4) === (arguments_1 = (-1 << 2) * (25 / "c"))), b_2 = (c = 1 + c, 
                            (("object" == 0) <= (arguments_1 && (arguments_1[(c = 1 + c, c = c + 1, ~"b" ^ (b_2 && (b_2.foo += 2 ^ -0)))] >>>= -0 % 5))) >>> ("" | -1 && 1 !== -5));
                            try {
                                c = 1 + c, (c = c + 1, 5 << "number") != (c = c + 1, bar_2 && (bar_2[(c = 1 + c, 
                                ((-1 != true) >> "bar" + "b") % ((4 | 24..toString()) <= /[a2][^e]+$/ % ([ , 0 ].length === 2)))] += "" != {}));
                            } catch (bar_2) {
                            } finally {
                            }
                        }
                    } while ((c = c + 1) + /[abc4]/.test(((c = c + 1) + {
                        0: (c = 1 + c, "a" << -3 <= (22 >= 0), 38..toString() !== 2 | (null | 22)),
                        3: (c = 1 + c, (bar_1 = (2 + this) / ("" / [])) == "undefined" % ([ , 0 ].length === 2) + ("" | "function")),
                        length: (c = 1 + c, (-3 << [ , 0 ][1], [ , 0 ].length === 2 === 24..toString()) <= (-1 / false > -3 / -3)),
                        0: (c = 1 + c, (-0 && -2) / (arguments_1 && (arguments_1[(c = 1 + c, (true - "object") * (this + true) % (Infinity - "a" != "function" / 1))] = false && -3)) === (([ , 0 ].length === 2) + 23..toString() & ({}, 
                        -3)))
                    } || b || 5).toString()) && --brake29 > 0);
                }
            }
        }
    };
    var a_1 = typeof (1 === 1 ? a : b), a_2 = --b + new function() {
        {
            var bar_1 = function f1(parseInt_1, a_2_2) {
                {
                    var bar_2_1 = function f2(a_2, NaN_2) {
                        c = 1 + c, (-5 >> 5) / (4 & -0) > (4 != "c") >> -3 + "bar";
                        c = 1 + c, "object" & "object" & this === -0 || (bar_2 ^= -0 >= "bar") * (NaN << "b");
                    }((c = 1 + c, a_1 && (a_1[(c = c + 1) + (a_1 -= (c = 1 + c, "foo" % "c", {} / true, 
                    -3 * 3 ^ 1 & -0))] %= ("bar" ^ true) == ([ , 0 ].length === 2 ^ -4)) && ("undefined" !== null) >> (-0 || 0)), this, 22);
                }
            }(-1, -3, a++ + (typeof f2 == "function" && --_calls_ >= 0 && f2(38..toString(), 2)));
        }
        switch (a++ + (--b + (a_1 && (a_1[(bar_1 || a || 3).toString()] += (/[a2][^e]+$/ | "b") / (a_2 && (a_2.in = 22 <= 0)) << ((38..toString() != true) <= (c = c + 1, 
        "undefined")))) ? --b + (function bar_1_1() {} || a || 3).toString() : a++ + a_2)) {
          case --b + (b + 1 - .1 - .1 - .1):
            {
                var a_2_1 = function f3(c_2, arguments_1_1) {
                    function f4(a_1, a_1_1, bar) {
                    }
                    var c_1 = f4((c = 1 + c, -(3 > 24..toString()) + ([ , 0 ][1] & NaN) / (([ , 0 ].length === 2) >>> 2)), "bar");
                    function f5(a_1_2) {
                    }
                    var Math_1 = f5(-3, (c = 1 + c, a_2 && (a_2[typeof a_1 === "symbol"] += (([ , 0 ].length === 2) > 24..toString() || -1 | NaN) + ((true === false) > (-5 != -5)))), -2);
                }((c = c + 1) + ((c = 1 + c, ("a" >> -4) + (5 === null) || (-1 | 0) << (0 && 24..toString())) || a || 3).toString(), a++ + a_2_1, -0);
            }
            {
                var b_2 = function f6() {
                    {
                        var expr44 = (c = 1 + c, (4 <= -5 || NaN & 4) >>> (-0 >= "function" !== -4 >>> false));
                        for (var key44 in expr44) {
                            c = 1 + c;
                            var a_2 = expr44[key44];
                            c = 1 + c, ("object" & 38..toString() & NaN < 5) !== (c = c + 1, "function" != 38..toString());
                        }
                    }
                    c = 1 + c, 24..toString() >= -3 < (bar_1 && (bar_1.undefined |= 4 + Infinity)), 
                    (a_1 = "number" + ([ , 0 ].length === 2)) >>> ("object" >> "foo");
                }((c = c + 1) + typeof (c = 1 + c, "foo" + "c" + (([ , 0 ].length === 2) << this) + (23..toString() || false || "bar" == 22)), typeof bar_1_2 == "number");
            }
            break;

          case --b + b--:
            {
                {
                    var brake48 = 5;
                    L69718: do {
                        {
                            return c = 1 + c, true * 4 * (5 >>> 25) & ("b" ^ -3) > (Infinity & -3);
                        }
                    } while (a++ + [ (c = 1 + c, (false < -4 | ([ , 0 ][1] | 2)) == ("a" | [ , 0 ].length === 2) < (1 || false)) ][(c = 1 + c, 
                    (3 % "object" && 23..toString() >>> -3) << ((3, /[a2][^e]+$/) >>> ("a" <= /[a2][^e]+$/)))] && --brake48 > 0);
                }
                {
                    var a_2 = function f7(b_2, a_1_1) {
                    }(-4, (c = 1 + c, a_2 && (a_2[(Infinity ^ 22) >> "c" - this >> (a_1 && (a_1[-b] -= (24..toString() >> 25) % (-0, 
                    true))) ? (0 - 38..toString() <= (arguments_1 && (arguments_1.null |= 5 > 0))) >> (a_2 += "foo" !== "b" != (c = c + 1, 
                    [ , 0 ].length === 2)) : --b + ((c = 1 + c, (c = c + 1, "function" >> "object") & ("object" | NaN) == (2 === 1)) || 5).toString()[(c = 1 + c, 
                    "" * "undefined" << (24..toString() ^ 38..toString()) & (4 !== "undefined") >> ("undefined" === 1))]] %= (3 <= undefined) / (2 >>> 25) > (b_2 && (b_2.NaN += (24..toString(), 
                    {}))) % (null * Infinity))));
                }
                if (bar_1 && bar_1.null) {
                }
            }
            break;

          case [] ? 1 === 1 ? a : b : [ {
                b: (c = 1 + c, a_2 && (a_2.foo += ("object" >= 38..toString()) << {} * 38..toString() & (4 >= -3) << "number" * 5)),
                1.5: (c = 1 + c, a_2 && (a_2.null += (a_2 && (a_2.b = {} * "a")) >>> ("" !== false) || (22 ^ 25) / (38..toString(), 
                [])))
            }, a_2_1, b--, ((b <<= a) || a || 3).toString(), b += a ].a:
            break;

          case ("c" && undefined) & 23..toString() << "function" ^ -4 + "b" << (-3 ^ 4) ? (c = c + 1) + [][a++ + {
                length: typeof c != "string",
                b: typeof a,
                NaN: a++ + {
                    NaN: (c = 1 + c, (c = c + 1, -5) ^ [] & 1 && -3 - 1 <= ([ , 0 ].length === 2 != this))
                }[(c = 1 + c, undefined * -1 === "function" - undefined ^ (/[a2][^e]+$/ == Infinity || ("" || {})))],
                null: a++ + {
                    length: (c = 1 + c, [] + /[a2][^e]+$/ & 25 - [ , 0 ][1] & (a_2 && (a_2.NaN = "c" % -5)) >> ("undefined" >= -1)),
                    var: (c = 1 + c, (a_2 && (a_2[typeof a_2_1 == "function" && --_calls_ >= 0 && a_2_1(1, -2, 3)] = (22 || false) !== 3 >= 1)) === 25 >>> 3 <= (23..toString() != true)),
                    null: (c = 1 + c, (a_2 += ("a" != false) < (-4 && Infinity)) + (0 >> 2 >= ("c" ^ true))),
                    NaN: (c = 1 + c, void ((-3 & "foo") - ("c" << false)))
                }.c,
                Infinity: (c = c + 1) + bar_1
            }[{
                undefined: (c = 1 + c, ((bar_1 && (bar_1.foo += true + NaN)) != ([ , 0 ][1] || undefined)) << (b_2 && (b_2[--b + (1 === 1 ? a : b)] = -1 + 23..toString() & -3 > [])))
            }[(c = c + 1) + delete a]]] : typeof f4 == "function" && --_calls_ >= 0 && f4((c = c + 1) + a_2_1):
            ;
            L69719: for (var brake54 = 5; (c = c + 1) + a_2 && brake54 > 0; --brake54) {
                for (var brake55 = 5; --b + ~(c = c + 1, ("a" === ([ , 0 ].length === 2)) + (false << -1)) && brake55 > 0; --brake55) {
                    return {};
                }
            }
            break;
        }
        {
            var brake58 = 5;
            while ((c = c + 1) + ~((undefined ^ -1) !== (bar_1 && (bar_1[(c = 1 + c, (("bar", 
            "") !== (-1 ^ [ , 0 ][1])) << (-5 == 2 ^ (a_2_1 && (a_2_1.in += ({}, 2)))))] = -1 << Infinity)) ^ ((/[a2][^e]+$/ | 1) ^ "a" === 1)) && --brake58 > 0) {
                var brake59 = 5;
                L69720: while (typeof arguments_1 == "function" && --_calls_ >= 0 && arguments_1([ , 0 ][1], -2) && --brake59 > 0) {
                    switch (a++ + new function bar() {
                        this[a++ + b--] = ((24..toString() !== "") >= (1 && 3)) >>> ((arguments_1 && (arguments_1[(c = 1 + c, 
                        (1 | {}) << ({} <= -4) === ({} < 0 && 3 - Infinity))] %= 24..toString() - true)) == (25 && false));
                        this.var += (a_2 && (a_2.var >>= ("foo" !== "undefined") >>> -5 % "function")) >>> (a_2 && (a_2[(c = c + 1) + (b += a)] &= -4 >>> "" < ("" != 0)));
                        this.c = (bar_1 = NaN < {} <= true >>> 3) !== (2 % [] === 2 - 25);
                        {
                        }
                    }()) {
                      case a++ + a_2_1:
                        --b + void b;
                        switch ((c = c + 1) + (((bar_1 && (bar_1[(c = 1 + c, "a" / 4 >> 25 * "foo" & (false & /[a2][^e]+$/) << (arguments_1 && (arguments_1.Infinity = "object" == 4)))] = 22 << 4)) & (3, 
                        [ , 0 ].length === 2)) >= (bar_1 && (bar_1.null = ("b" | "bar") * (arguments_1 && (arguments_1[(c = 1 + c, 
                        c = c + 1, (38..toString() && 0) >= 1 + Infinity)] = -4 ^ null)))))) {
                          case a++ + {
                                set NaN(Math) {
                                    this.undefined = NaN ^ 24..toString();
                                },
                                in: (c = 1 + c, (0 + 2, "foo" <= ([ , 0 ].length === 2)) * ((bar_2 && (bar_2[(c = 1 + c, 
                                ((true || [ , 0 ].length === 2) != {} >= -3) <= (bar_1 && (bar_1[((c = 1 + c, (("" && 3) ^ {} << -3) <= (null & "function") >> (-2 << Infinity)) || a || 3).toString()] = [ , 0 ][1] <= "b" < ~4)))] = 22 >= -2)) == "b" > Infinity))
                            }[(c = 1 + c, (null ^ Infinity) * (25 & 25) <= 38..toString() % "undefined" * (24..toString() >> "b"))]:
                            c = 1 + c, + -0 ^ -5 <= [] ^ ("bar", "number") - (-5, "");
                            c = 1 + c, a_2_1 |= -1 << ([ , 0 ].length === 2) > 38..toString() * true ^ 4 <= "function" < (-3 >= {});
                            break;

                          case b_2 = (c = 1 + c, (-5, [ , 0 ][1]) + (-2 && 1) === (38..toString() >> "bar" && (23..toString() || 0))):
                            c = 1 + c, (25 & [ , 0 ][1]) * ("undefined" && 38..toString()) | 2 % {} << ({} <= {});
                            c = 1 + c, (false <= "function") / ({} && "foo") % (c = c + 1, "foo" - -2);

                          case --b + a++:
                            c = 1 + c, "" * "bar" == NaN >= 5 || (-3 == [ , 0 ][1]) >> ("foo" >> "a");

                          case [ (c = 1 + c, {} << "function" < ("number" && -5), this % 38..toString() === 23..toString() <= 24..toString()) ].undefined:
                            c = 1 + c, (c = c + 1, delete "c") != (22 + null) % ("foo" << 24..toString());
                            c = 1 + c, (3 >> -5) % (1 / 0) / (NaN <= ([ , 0 ].length === 2) ^ "c" === -0);
                            break;
                        }
                        break;

                      case typeof foo !== "number":
                        {
                            var expr71 = a++ + (a_2 && a_2[(c = 1 + c, ("c", -3) - (undefined, false) - ("a" > 25 ^ (5, 
                            -3)))]);
                            L69721: for (var key71 in expr71) {
                                c = 1 + c;
                                var a_1 = expr71[key71];
                                {
                                    var brake72 = 5;
                                    do {
                                        c = 1 + c, (4 != "b" !== [ , 0 ][1] << "undefined") * ((Infinity & NaN) < -Infinity);
                                    } while ((c = 1 + c, a_2_1 && (a_2_1.in = ("function" - ([ , 0 ].length === 2), 
                                    {}, this) > ((true == 24..toString()) <= (24..toString() || "foo")))) && --brake72 > 0);
                                }
                            }
                        }
                        break;

                      case (c = c + 1) + typeof bar_1:
                        break;

                      case a--:
                        var b_2;
                        break;
                    }
                }
            }
        }
    }();
}

c = c + 1;

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

try {
    var t = {
        length: s++ + (N %= --v + ("symbol" != typeof NaN_1))
    };
    for (var n in t) {
        d = 1 + d;
        var N = t[n];
        if (N) {
            var y;
        } else {
            s++;
        }
    }
} catch (a) {
    for (var o = 5; (d += 1) + ("function" == typeof f1 && 0 <= --u && f1((d += 1) + {}, s++ + {
        null: 2 + s++,
        "-2": function() {}
    }.a)) && 0 < --o; ) {
        var r = function(t) {
            try {
                for (var n = 5; --v + [ s++ + --v, "function" != typeof foo_1, (d = 1 + d, a < y <= "foo" | 0 == (t && (t.undefined = 0)) || s || 3).toString(), --v + (d = 1 + d, 
                t && (t[v = s] = (t && (t.c ^= 2 >>> a)) + 0 >>> ((t = !1) >>> (null != a))) || s || 3).toString(), t += (d = 1 + d, 
                !0 & (!0 | 2 << {})) ][{
                    foo: (d = 1 + d, (2 >>> 23..toString()) % 1 <= !0 + (22 << (2 === [ , 0 ].length))),
                    length: (d = 1 + d, 25 % 24..toString() / ("undefined" <= (2 === [ , 0 ].length)) <= void 0),
                    in: (d = 1 + d, (t && (t[(d = 1 + d, 0 ^ -1 === a)] = !0)) < !0),
                    length: (d = 1 + d, t %= NaN != ("bar" & {}) != (d += 1, 22 ^ 0 <= this)),
                    length: (d = 1 + d, (t && (t[(d = 1 + d, (t && (t[s++ + (t && t.null)] = !1)) - 0)] = 25)) > ("" !== 38..toString() != !1))
                }.c] && 0 < n; --n) {
                    var o = {
                        set in(t) {
                            this.b += 0 == 23..toString();
                        },
                        "\t": (d = 1 + d, (t && (t[(d = 1 + d, -0 * 23..toString() << -1 != {} <= this <= -5)] = 0)) << !0 & .4 << (d += 1, 
                        y))
                    }[s++ + !0];
                    for (var i in o) {
                        d += 1, d = 1 + d, 23..toString(), d = 1 + d, 38..toString();
                    }
                }
            } finally {
                for (var r = 5; d += 1, ++s, "crap" == typeof a && 0 < --r; ) {}
                return (d += 1) + !(((2 === [ , 0 ].length) / !0 | !0) << 0);
            }
            for (var e = 5; --v + !(1 == (2 === [ , 0 ].length ^ "undefined" || 0 <= 24..toString())) && 0 < --e; ) {
                var g = (d += 1) + 3;
                for (var f in g) {}
            }
        }({});
    }
    d += 1;
} finally {
    function b() {
        switch ("function" == typeof f1 && 0 <= --u && f1()) {
          default:
          case --v + [ v++, s++ + [ s--, (d += 1) + [ (d = 1 + d, (r |= (24..toString() && this) / (b = !1)) == (-1 != (2 === [ , 0 ].length) >> "a")), (d = 1 + d, 
            !0 % (38..toString() / y >> -1)), (d = 1 + d, r && (r.NaN = (b && (b.foo /= -0)) * (this - 0 || -4 ^ 23..toString()))), (d = 1 + d, 
            !1 != (d += 1, "foo" & (b = !1))) ], s++ + (N && N.length), N && N.a, "function" == typeof b && 0 <= --u && b() ].undefined, ,  ][s++ + ("function" == typeof f1 && 0 <= --u && f1())]:
            "object" == typeof N ? ((d += 1) + v++ || 2).toString()[s++ + delete s] : (d += 1, 
            r >>>= (d += 1) + (-1 < (!1 < (2 == (2 === [ , 0 ].length)))));
            break;

          case -(0 <= (38..toString() != 24..toString()) ^ (N += (N && (N[(d = 1 + d, (d += 1, 
            22) < NaN)] += 1)) != (24..toString() && y))):
          case v = s:
        }
        for (var t = 5; b && b.Infinity && 0 < --t; ) {
            for (var n = 5; s++ + new function t() {
                this.foo = !1 < (0 | 0 - 24..toString()) / void 0;
                try {
                    for (var n = 5; d = 1 + d, t && (t[--v + --v] = (t = -1 / 0 % (t && (t.null += 0))) && 0) && 0 < n; --n) {
                        d = 1 + d;
                    }
                } finally {
                    d = 1 + d, 23..toString(), d = 1 + d, 38..toString();
                }
            }() && 0 < n; --n) {
                var o = 5;
                do {
                    try {
                        d = 1 + d, N && (N[N] = 0), r && (r.Infinity = [] < -5), 24..toString(), d = 1 + d, 
                        38..toString(), 23..toString();
                    } finally {
                        d = 1 + d, b = NaN;
                        var i = (d = 1 + d, (!1 <= (b && (b[(d = 1 + d, d += 1, -1 ^ (i && (i.foo += 2)))] >>>= -0))) >>> !0);
                        try {
                            d = 1 + d, d += 1, d += 1, N && (N[(d = 1 + d, 1 % ((4 | 24..toString()) <= /[a2][^e]+$/ % (2 === [ , 0 ].length)))] += "" != {});
                        } catch (t) {}
                    }
                } while ((d += 1) + /[abc4]/.test(((d += 1) + {
                    0: (d = 1 + d, 2 !== 38..toString() | 22),
                    3: (d = 1 + d, (2 + this) / ("" / []) == "undefined" % (2 === [ , 0 ].length) + 0),
                    length: (d = 1 + d, (2 === [ , 0 ].length === 24..toString()) <= !1),
                    0: (d = 1 + d, -0 / (b && (b[(d = 1 + d, NaN * (this + !0) % !0)] = !1)) == ((2 === [ , 0 ].length) + 23..toString() & -3))
                } || v || 5).toString()) && 0 < --o);
            }
        }
    }
    r = --v + new function() {
        var o = (s++, "function" == typeof f2 && 0 <= --u && f2(38..toString(), 2), void function(t, n) {
            d = 1 + (d = 1 + d), 0 & -0 === this || (N ^= !1);
        }((d = 1 + d, h && (h[(d += 1) + (h -= (d = 1 + d, -9))] %= 1 == (2 === [ , 0 ].length ^ -4)))));
        switch (s++ + (--v + (h && (h[(o || s || 3).toString()] += 0 / (r && (r.in = !1)) << ((1 != 38..toString()) <= (d += 1, 
        "undefined")))) ? --v + function() {}.toString() : s++ + r)) {
          case --v + (v + 1 - .1 - .1 - .1):
            var t = function(t, n) {
                d = 1 + d, 24..toString();
                d = 1 + d, r && (r["symbol" == typeof h] += ((2 === [ , 0 ].length) > 24..toString() || -1) + !1);
            }((d = 1 + (d += 1), -1).toString(), s++), n = function() {
                var t = (d = 1 + d, 0);
                for (var n in t) {
                    d = 1 + (d = 1 + d), 38..toString(), d += 1, 38..toString();
                }
                d = 1 + d, 24..toString(), o && (o.undefined |= 1 / 0), h = "number" + (2 === [ , 0 ].length);
            }((d = 1 + (d += 1), 23..toString()));
            break;

          case --v + v--:
            var i = 5;
            do {
                return d = 1 + d, 0;
            } while (s++ + [ (d = 1 + d, 2 == ("a" | 2 === [ , 0 ].length) < 1) ][(d = 1 + d, 
            0)] && 0 < --i);
            var r = (d = 1 + d, void (r && (r[22 >> "c" - this >> (h && (h[-v] -= (24..toString() >> 25) % !0)) ? (0 - 38..toString() <= (b.null |= !0)) >> (r += 1 != (d += 1, 
            2 === [ , 0 ].length)) : --v + (d = 1 + d, !0 & (d += 1, 0) || 5).toString()[(d = 1 + d, 
            NaN << (24..toString() ^ 38..toString()) & 1)]] %= (n && (n.NaN += (24..toString(), 
            {}))) % NaN < NaN)));
            o && o.null;
            break;

          case s:
            break;

          case void 0 & 23..toString() << "function" ^ 0 ? (d += 1) + [][s++ + {
                length: "string" != typeof d,
                b: typeof s,
                NaN: s++ + {
                    NaN: (d = 1 + d, d += 1, -5 ^ 1 & [] && -4 <= (2 === [ , 0 ].length != this))
                }[(d = 1 + d, !1 ^ {})],
                null: s++ + {
                    length: (d = 1 + d, [] + /[a2][^e]+$/ & 25 & (r && (r.NaN = NaN)) >> !1),
                    var: (d = 1 + d, (r && (r["function" == typeof t && 0 <= --u && t(1, -2, 3)] = !0)) === 3 <= (1 != 23..toString())),
                    null: (d = 1 + d, (r += !0) + !1),
                    NaN: void (d = 1 + d)
                }.c,
                Infinity: (d += 1) + o
            }[{
                undefined: (d = 1 + d, (null != (o && (o.foo += NaN))) << (n && (n[--v + s] = -1 + 23..toString() & [] < -3)))
            }[(d += 1) + delete s]]] : "function" == typeof f4 && 0 <= --u && f4((d += 1) + t):
            for (var e = 5; (d += 1) + r && 0 < e; --e) {
                for (var g = 5; --v + (d += 1, ~(("a" === (2 === [ , 0 ].length)) + 0)) && 0 < g; --g) {
                    return {};
                }
            }
        }
        for (var f = 5; (d += 1) + ~(-1 !== (o && (o[(d = 1 + d, !0 << (!1 ^ (t && (t.in += 2))))] = -1)) ^ 1) && 0 < --f; ) {
            for (var a = 5; 0 <= --u && b() && 0 < --a; ) {
                switch (s++ + new function() {
                    this[s++ + v--] = (3 <= ("" !== 24..toString())) >>> (!1 == (b[(d = 1 + d, (1 | {}) << ({} <= -4) === ({} < 0 && -1 / 0))] %= 24..toString() - !0)), 
                    this.var += (r && (r.var >>= 1)) >>> (r && (r[(d += 1) + (v += s)] &= !1)), this.c = (o = y < {} <= 0) != (2 % [] == -23);
                }()) {
                  case s++ + t:
                    switch (--v, (d += 1) + (((o && (o[(d = 1 + d, 0 & 0 << (b.Infinity = !1))] = 352)) & 2 === [ , 0 ].length) >= (o && (o.null = 0 * (b[(d = 1 + d, 
                    d += 1, (38..toString() && 0) >= 1 / 0)] = -4))))) {
                      case s++ + {
                            set NaN(t) {
                                this.undefined = y ^ 24..toString();
                            },
                            in: (d = 1 + d, ("foo" <= (2 === [ , 0 ].length)) * (0 == (N && (N[(d = 1 + d, (!0 != -3 <= {}) <= (o && (o[(d = 1 + d, 
                            ("" ^ {} << -3) <= 0 || s || 3).toString()] = !1)))] = !0))))
                        }[(d = 1 + d, 0 <= 38..toString() % "undefined" * (24..toString() >> "b"))]:
                        d = 1 + (d = 1 + d), t |= -1 << (2 === [ , 0 ].length) > !0 * 38..toString() ^ !1 < ({} <= -3);
                        break;

                      case d = 1 + d, n = 1 === (38..toString() >> "bar" && (23..toString() || 0)):
                        d = 1 + d, 38..toString(), d = 1 + d, d += 1;

                      case --v + s++:
                        d = 1 + d;

                      case [ (d = 1 + d, this % 38..toString() === 23..toString() <= 24..toString()) ].undefined:
                        d = 1 + d, d += 1, 24..toString(), d = 1 + d;
                    }
                    break;

                  case "number" != typeof foo:
                    var l = s++ + (r && r[(d = 1 + d, 0)]);
                    for (var S in l) {
                        d = 1 + d;
                        for (var h = l[S], c = 5; d = 1 + (d = 1 + d), t && (t.in = this > ((1 == 24..toString()) <= (24..toString() || "foo"))) && 0 < --c; ) {}
                    }
                    break;

                  case (d += 1) + typeof o:
                    break;

                  case s--:
                }
            }
        }
    }();
}

d += 1, console.log(null, s, v, d, 1 / 0, y, void 0);
original result:
�[1mnull�[22m �[33m125�[39m �[33m125�[39m �[33m108�[39m �[33mInfinity�[39m �[90mundefined�[39m �[90mundefined�[39m

uglified result:
evalmachine.<anonymous>:2
var u=10,s=100,v=10,d=0;try{var t={length:s+++(N%=--v+("symbol"!=typeof NaN_1))};for(var n in t){d=1+d;var N=t[n];if(N)var y;else s++}}catch(a){for(var o=5;(d+=1)+("function"==typeof f1&&0<=--u&&f1((d+=1)+{},s+++{null:2+s++,"-2":function(){}}.a))&&0<--o;)var r=function(t){try{for(var n=5;--v+[s+++--v,"function"!=typeof foo_1,(d=1+d,a<y<="foo"|0==(t&&(t.undefined=0))||s||3).toString(),--v+(d=1+d,t&&(t[v=s]=(t&&(t.c^=2>>>a))+0>>>((t=!1)>>>(null!=a)))||s||3).toString(),t+=(d=1+d,!0&(!0|2<<{}))][{foo:(d=1+d,(2>>>23..toString())%1<=!0+(22<<(2===[,0].length))),length:(d=1+d,25%24..toString()/("undefined"<=(2===[,0].length))<=void 0),in:(d=1+d,(t&&(t[(d=1+d,0^-1===a)]=!0))<!0),length:(d=1+d,t%=NaN!=("bar"&{})!=(d+=1,22^0<=this)),length:(d=1+d,(t&&(t[(d=1+d,(t&&(t[s+++(t&&t.null)]=!1))-0)]=25))>(""!==38..toString()!=!1))}.c]&&0<n;--n){var o={set in(t){this.b+=0==23..toString()},"\t":(d=1+d,(t&&(t[(d=1+d,-0*23..toString()<<-1!={}<=this<=-5)]=0))<<!0&.4<<(d+=1,y))}[s+++!0];for(var i in o)d+=

TypeError: b is not a function
    at new r (evalmachine.<anonymous>:2:4652)

minify(options):
{
  "toplevel": 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 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