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

Closed
alexlamsl opened this issue Jun 25, 2024 · 0 comments · Fixed by #5864
Closed

ufuzz failure #5863

alexlamsl opened this issue Jun 25, 2024 · 0 comments · Fixed by #5864
Labels

Comments

@alexlamsl
Copy link
Collaborator

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

function f0(foo_1, a_2, b_2) {
    var a = (25 & "foo") > false * {} === ([ , 0 ][1] !== null) * ("undefined" && 3);
    {
        var brake2 = 5;
        L69950: do {
            for (var brake3 = 5; a++ + 1 && brake3 > 0; --brake3) {
                L69951: {
                    switch (a++ + "c") {
                      case a++ + a:
                        switch (a++ + a--) {
                          case -a:
                            ;
                            {
                                var expr8 = (c = 1 + c, (Object.isExtensible(foo_1) && (foo_1.then = "function" ^ 38..toString())) !== (25 | "function") ^ (-3 ^ 1) / (c = c + 1, 
                                2));
                                for (var key8 in expr8) {
                                    c = 1 + c, a = (Object.isExtensible(foo_1) && (foo_1[foo_1] ^= [ , 0 ][1] === {} ^ 5 / 2)) - (("b" ?? "function") >= (true, 
                                    this));
                                }
                            }
                            switch (c = 1 + c, (Object.isExtensible(foo_1) && (foo_1.b = "number" / ([ , 0 ].length === 2) & "foo" >> 0)) >> ("object" < "number" || - -1)) {
                              default:
                                ;

                              case c = 1 + c, b_2 += ("function" >> 24..toString() & (NaN ?? undefined)) == (null === -4 & 24..toString() >> 23..toString()):
                                ;

                              case c = 1 + c, ((c = c + 1, "object") !== (23..toString() != 38..toString())) <= ("undefined" >> NaN) * (24..toString() + -5):
                                ;
                                break;

                              case c = 1 + c, "function" % -5 >>> (foo_1 = "" >> -2) == (b_2 = -2 <= "bar") % (Object.isExtensible(a) && (a.c = "function" ^ "object")):
                                ;
                                break;
                            }
                            break;

                          case (c = c + 1) + [ (c = 1 + c, (25 - false === ([ , 0 ].length === 2) > ([ , 0 ].length === 2)) - (this !== "c" || 0 / {})) ][(c = c + 1) + (foo_1 = (c = 1 + c, 
                            -(-5 >> false) * ((Object.isExtensible(a_2) && (a_2[c = 1 + c, 
                            (Object.isExtensible(b_2) && (b_2.async = (38..toString() || "function") == "function" - false)) | (this >= "undefined" && "a" >= false)] = {} == 25)) === "object" + false)))]:
                            c = 1 + c, ("object" - "function" ^ (-4 || 25)) > ([ , 0 ][1] * 24..toString() == "function" > 38..toString());

                          default:
                            L69952: {
                            }

                          case --b + (--b + ("object" in {
                                done: (c = 1 + c, (foo_1 += -1 * 24..toString() ^ (this, 
                                -1)) != ((-42n).toString() < []) / (null != 22))
                            }) ? a && a[c = 1 + c, (-5, [ , 0 ].length === 2) >> "number" * 0 != (-3 < "undefined") << 25 / 38..toString()] : ((c = 1 + c, 
                            Object.isExtensible(a) && (a.var = ("function" == /[a2][^e]+$/ ^ (Object.isExtensible(a) && (a[c = 1 + c, 
                            (-2 + false & "bar" > "number") >>> (true >> 1 && (2, 
                            0))] = null || 2))) >= (-false || -0 % 25))) || 3).toString()[c = 1 + c, 
                            ("c" + 25) * (23..toString() >> 5) ^ 0 === "object" == (a_2 = ([ , 0 ].length === 2) < -1)]):
                            c = 1 + c, "bar" ^ [ , 0 ].length === 2 && (Object.isExtensible(a_2) && (a_2.done += -3 >= 4)) && !(4, 
                            "c");
                            {
                                var brake14 = 5;
                                do {
                                    c = 1 + c, (([ , 0 ].length === 2) < -2) >>> ("function" >= this) <= ((-2 || -2) === 24..toString() * [ , 0 ][1]);
                                } while ((c = 1 + c, void (null * this) <= (22 + "undefined" || NaN | "")) && --brake14 > 0);
                            }
                            return c = 1 + c, (c = c + 1, Object.isExtensible(a) && (a.set |= "foo" <= 22)) / (([] ^ "c") < (-0 > "number"));
                            break;
                        }
                        {
                            var brake17 = 5;
                            L69953: while (--b + [ ...[ (c = 1 + c, (0 >> "") % ("bar" % -0) | (3 !== "a") * (38..toString() > true)) ], (c = 1 + c, 
                            {} == ([ , 0 ].length === 2) !== ("bar" || /[a2][^e]+$/), 
                            3 !== 24..toString() !== (3 === ([ , 0 ].length === 2))), (c = 1 + c, 
                            (a_2 = 25 / undefined != 5 - this) | 4 != "a" ^ ("bar" || -1)), (c = 1 + c, 
                            (4, undefined) == ("number" == -2) ^ Infinity <= 23..toString() === (-1 ^ "object")) ].null && --brake17 > 0) {
                                c = c + 1;
                            }
                        }
                        {
                            {
                            }
                            {
                            }
                        }
                        break;

                      default:
                      case (c = c + 1) + (typeof f1 == "function" && --_calls_ >= 0 && f1()):
                        if (a++ + {
                            a: (c = 1 + c, void "c" - (null >= "a") === (Infinity >> 1 == ("" ^ -0))),
                            NaN: (c = 1 + c, (Object.isExtensible(a) && (a[a++ + function c_1() {
                            }] = null > ([ , 0 ].length === 2) <= [] >> "object")) << ("number" - [ , 0 ][1] & 4 % -3))
                        }[a++ + (b + 1 - .1 - .1 - .1)]) {
                            c = c + 1;
                        } else {
                            var brake24 = 5;
                            do {
                                L69954: {
                                }
                            } while (a_2 && typeof a_2.value == "function" && --_calls_ >= 0 && a_2.value() && --brake24 > 0);
                        }
                        {
                            {
                                var expr27 = (c = 1 + c, Object.isExtensible(a) && (a.value &= (a = (NaN, 
                                38..toString())) >>> ("foo" > -1)) || -2 >= ([ , 0 ].length === 2) <= (-5 ^ [ , 0 ].length === 2));
                                L69955: for (var key27 in expr27) {
                                    c = 1 + c, b_2 |= ((Object.isExtensible(key27) && (key27[c = 1 + c, 
                                    (c = c + 1, {} < 23..toString()) > ((-1 ^ []) >= (c = c + 1, 
                                    24..toString()))] **= 0 % 4)) ?? -2 / -4, ("bar" !== 1) >> (c = c + 1, 
                                    -2));
                                }
                            }
                            {
                                var brake29 = 5;
                                while ((c = 1 + c, ("number", this) >= !"object" ^ ~(undefined | -1)) && --brake29 > 0) {
                                    c = 1 + c, (("c" | null) ^ (c = c + 1, -3)) > ("function" !== -1) + (0 + "");
                                }
                            }
                        }
                        if (a++ + ((a = (c = 1 + c, true - 5 > (-3 <= undefined) >= ((-1, 
                        "function") !== Infinity % 5))) ? a-- : --b + (c = 1 + c, 
                        (-1 << 38..toString() == 1 - this) > "foo" / true << ("undefined" < "bar")))) {
                            c = 1 + c, -(0 !== 23..toString()) & (c = c + 1, - -2);
                            c = 1 + c, (undefined % false, undefined > 38..toString()) == ("" && {} || -3 !== ([ , 0 ].length === 2));
                        } else {
                            switch ((c = c + 1) + (a_2 += (c = 1 + c, ((NaN, 22) == ("foo" == {})) >>> (25 + -5 >> (null >> "c"))))) {
                              case 1 === 1 ? a : b:
                                c = 1 + c, (23..toString() >= /[a2][^e]+$/) + (NaN ^ true) >= (-2 | 25 || true > 23..toString());
                                c = 1 + c, (false / 3 || undefined ^ -5) << (-2 >> -2 && (Object.isExtensible(b_2) && (b_2[c = 1 + c, 
                                Object.isExtensible(a_2) && (a_2.foo <<= null * -4 >= (Object.isExtensible(a) && (a.null >>= "function" * "a")) != (4 << /[a2][^e]+$/ && (Object.isExtensible(a) && (a[c = 1 + c, 
                                void (-3 < ([ , 0 ].length === 2)) >> ((Object.isExtensible(foo_1) && (foo_1[c = 1 + c, 
                                ("" >= this) + ("" >= -4) < (("c" ^ 1) >= ("c" & undefined))] = 4 !== 25)) >> ((-42n).toString() || -4))] += [] ^ -5))))] += 3 !== [])));
                                c = 1 + c, !({} != Infinity ^ (c = c + 1, true));

                              default:
                                c = 1 + c, ~"a" < (-3 !== 2) ^ (1, NaN) << NaN * undefined;

                              case /[abc4]/g.exec(((c = 1 + c, Object.isExtensible(foo_1) && (foo_1.var = void "b" % (23..toString() & -0) >>> (foo_1 >>= Infinity ^ "a") / (4 ^ Number(0xdeadn << 16n | 0xbeefn)))) || b || 5).toString()):
                                c = 1 + c, Object.isExtensible(a_2) && (a_2[[]] += ("object" <= "a") / ([ , 0 ][1] ^ !0o644n) != (Object.isExtensible(a_2) && (a_2[a] += 5 < 5 & "function" !== "b")));
                                break;

                              case {
                                    done: (c = 1 + c, (a_2 = (false ^ "b") + (23..toString() <= "number")) >>> +(null, 
                                    NaN))
                                }.b:
                                c = 1 + c, undefined - 2 < (Infinity ^ 23..toString()) != (c = c + 1, 
                                "c" && "number");
                                break;
                            }
                        }
                        break;

                      case (c = c + 1) + (0 === 1 ? a : b):
                        {
                            var brake42 = 5;
                            L69956: do {
                                switch ({
                                    set: (c = 1 + c, [] >>> this <= (0 < [ , 0 ][1]) == "object" > 2 < -1 + 38..toString()),
                                    static: (c = 1 + c, -4 * [ , 0 ][1] === (b_2 ^= "function" - -3) ^ (c = c + 1, 
                                    b_2 -= true && -1))
                                }) {
                                  default:
                                  case /[abc4]/g.exec(((c = 1 + c, Object.isExtensible(a_2) && (a_2[(c = c + 1) + (a && a[c = 1 + c, 
                                    ((38..toString() || this) === (24..toString() == false)) * (Object.isExtensible(a_2) && (a_2[--a] = (a_2 += 5 <= ([ , 0 ].length === 2)) + +22))] || 8).toString()[--b + (a **= (c = 1 + c, 
                                    c = c + 1, Object.isExtensible(b_2) && (b_2.done = "c" === 23..toString()), 
                                    -2 < "a", "b" / -5))]] = (22 && this) >= (Object.isExtensible(foo_1) && (foo_1.c -= this | 24..toString())) <= (Object.isExtensible(a_2) && (a_2[c = 1 + c, 
                                    (22 % "bar" !== "b" < []) <= (Object.isExtensible(a) && (a[((c = 1 + c, 
                                    Object.isExtensible(a) && (a[a++ + a ? --b + (() => {
                                    }) : typeof (c = 1 + c, (("a" ?? "function") & "bar" / "a") >>> (4 < null == (22 == "function")))] = (-1 << {}) - (2 <= -5) !== (c = c + 1, 
                                    this + 2))) || 9).toString()[c = 1 + c, ([ , 0 ][1] | -2, 
                                    undefined & "function") * ((c = c + 1, {}) >= ("bar" ?? 0))]] = ("" || -5) && "c" ^ 22))] >>>= {} << -0)) * ~null)) || b || 5).toString()):
                                    c = 1 + c, ((c = c + 1, false) <= "b" - ([ , 0 ].length === 2)) * (0 >= /[a2][^e]+$/ == (25 == 3));
                                    c = 1 + c, (Infinity === /[a2][^e]+$/ | !0o644n % "function") & -1 - false != 38..toString() >> "object";
                                    c = 1 + c, (false !== "undefined") % (b_2 >>>= "bar" % Infinity) < 24..toString() >>> null >> ("bar" !== 38..toString());
                                    break;

                                  case --b + {}.Infinity:
                                    break;

                                  case (c = 1 + c, Object.isExtensible(a) && (a[(c = c + 1) + --b] = (38..toString() & NaN ^ -2 * []) >>> (NaN << [] ^ (Object.isExtensible(a_2) && (a_2.set = "number" | [ 3n ][0] > 2))))) ? (c = 1 + c, 
                                    c = c + 1, "a" / ([ , 0 ].length === 2) > void [ , 0 ][1]) : (c = 1 + c, 
                                    -(-3 >= ([ , 0 ].length === 2)) == ((Object.isExtensible(b_2) && (b_2.b = "function" ?? 38..toString())) ?? [] <= /[a2][^e]+$/)):
                                    break;
                                }
                            } while ((a++ + (b_2 && typeof b_2.undefined == "function" && --_calls_ >= 0 && (c = 1 + c, 
                            (24..toString() * 24..toString() === ("bar" || "number")) >> (foo_1 += +Infinity >= (Infinity == "bar")), 
                            b_2.undefined)()) ? a_2 : b = a) && --brake42 > 0);
                        }
                        {
                            var brake47 = 5;
                            while (a++ + (b_2 && typeof b_2.done == "function" && --_calls_ >= 0 && (a++ + (typeof a_2 == "function" && --_calls_ >= 0 && a_2("foo")), 
                            b_2.done)("b", "number")) && --brake47 > 0) {
                                c = c + 1;
                            }
                        }
                        break;
                    }
                    {
                        var bar_2 = function foo_1({
                            [!function() {
                                c = 1 + c, ((a = ("number", "")) | (foo_1 = "bar" != "b")) * ((Object.isExtensible(foo_1) && (foo_1[c = 1 + c, 
                                (this <= -1) * (NaN % "undefined"), "b" % 22 - (null <= /[a2][^e]+$/)] = (/[a2][^e]+$/, 
                                "a"))) & 2 === "number");
                            }()]: foo,
                            static: a_2_2
                        }, bar) {
                            function f1(b_2) {
                                c = 1 + c, -0 === /[a2][^e]+$/ == ("bar" & 3) | (/[a2][^e]+$/ & {}) + (undefined || "a");
                                c = 1 + c, (Object.isExtensible(a) && (a.get = 23..toString() === Infinity)) <= (5 || "b") >= (c = c + 1, 
                                c = c + 1, 3);
                            }
                            var foo_1 = f1(-0, -3, {});
                            function f2(let_2, let_1, bar_1) {
                                c = 1 + c, (([ 3n ][0] > 2) >> 23..toString() <= ("" < 24..toString())) >> (1 > "b" >= (23..toString() && [ , 0 ].length === 2));
                            }
                            var foo_1 = f2((c = c + 1) + []);
                        }({
                            0: [],
                            "": [],
                            null: (c = c + 1) + (a && typeof a.a == "function" && --_calls_ >= 0 && a.a((c = 1 + c, 
                            (Object.isExtensible(b_2) && (b_2[c = 1 + c, (24..toString() / 5 && ("c", 
                            "")) - ((a_2 ^= (-4, /[a2][^e]+$/)) == 5 > "")] = (-42n).toString() === 4)) << (c = c + 1, 
                            -1) || ("function" || false) > (false >= "b"))))
                        }, "", 3);
                    }
                    if ({
                        1.5: "function" in {
                            0: (c = 1 + c, ~+(/[a2][^e]+$/ ?? 23..toString()))
                        },
                        [(c = c + 1) + [ (c = 1 + c, (25 <= 38..toString()) + (this === -1) != (Number(0xdeadn << 16n | 0xbeefn) !== 23..toString()) >>> {} + -3), (c = 1 + c, 
                        (-4 != -0) / (Infinity - false) ^ Infinity - -1 & (Object.isExtensible(b_2) && (b_2.b ??= 23..toString() < true))), (c = 1 + c, 
                        (c = c + 1, "object" < "b") - ((foo_1 = -1 < "c") <= (c = c + 1, 
                        "foo"))), , (c = 1 + c, (null ^ 0 ^ 5 <= Infinity) & (Object.isExtensible(bar_2) && (bar_2[c = 1 + c, 
                        (("undefined" || true) <= ("number" >= "bar")) << (25 && /[a2][^e]+$/) * (true ^ "")] = -0 - Infinity)) <= 2 - "a") ].done]: --b + !((24..toString() !== Infinity) >> (0 << ([ , 0 ].length === 2)) << (("object" ?? "function") <= (1 == 23..toString()))),
                        var: new function(b_1) {
                            if (this) {
                                this.static = (undefined ?? 25) & (false || -4);
                            }
                            c = 1 + c, c = c + 1, "b" > -1 & 3 >= -1;
                            c = 1 + c, (23..toString() ^ -4) / (-5 | -2) !== null / ([ , 0 ].length === 2) << (null === 4);
                            c = 1 + c, +(("a" << "foo") + (4 != 24..toString()));
                            c = 1 + c, (4 << 25 <= (24..toString() < true)) << (b_2 = (c = c + 1, 
                            -3) & 0 * "number");
                            c = 1 + c, (NaN | null) <= ("object" === 1) && "function" << "c" | "a" - undefined;
                        }((c = 1 + c, - -(0 * -2)))
                    }[(c = c + 1) + (b = a)]) {
                        var b_1 = function async_2() {
                            const foo = {
                                "-2": (c = 1 + c, -2 % 2 / ("a", 22) <= ("function" == "" ?? (Object.isExtensible(a) && (a[c = 1 + c, 
                                (Object.isExtensible(a) && (a[c = 1 + c, Object.isExtensible(foo_1) && (foo_1[-b] %= (foo_1 = 3 >>> -5) == ((-42n).toString() !== 5) != (c = c + 1, 
                                +"number"))] %= "a" !== "function")) & [ , 0 ][1] + NaN | (undefined << Number(0xdeadn << 16n | 0xbeefn)) + Infinity % "undefined"] = -0 ?? 38..toString()))))
                            }[(c = 1 + c, (Infinity >>> false) % (2 === /[a2][^e]+$/) + +("bar", 
                            -0)) ? (c = 1 + c, (-4 >> {} ^ (4 ^ -2)) / ((NaN | 23..toString()) == ([ , 0 ][1] == true))) : (c = 1 + c, 
                            ((38..toString() | "number") == ("undefined" && [ , 0 ].length === 2)) << (foo_1 = (38..toString() < ([ , 0 ].length === 2)) * (a_2 %= 24..toString() !== 3)))];
                        }("number");
                    }
                }
            }
        } while (+(((-3 && Infinity) & "number" !== -2) >>> !-5 - (1 | 3)) && --brake2 > 0);
    }
}

var bar = f0(38..toString());

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

(function f0(foo_1, a_2, b_2) {
    for (var e, t, n, i, b, s, o, a, c = !1, _ = 5; 1 + c++ && 0 < _; --_) {
        switch (c++ + "c") {
          case c++ + c:
            switch (c++ + c--) {
              case -c:
                for (e in x = 1 + x, 25 !== (Object.isExtensible(foo_1) && (foo_1.then = 38)) ^ -4 / (x += 1, 
                2)) {
                    x = 1 + x, c = (Object.isExtensible(foo_1) && (foo_1[foo_1] ^= 2)) - (this <= "b");
                }
                switch (x = 1 + x, (Object.isExtensible(foo_1) && (foo_1.b = "number" / (2 === [ , 0 ].length) & 0)) >> 1) {
                  default:
                  case x = 1 + x, b_2 += !0:
                  case x = 1 + x, (!0 !== (x += 1, "object")) <= NaN:
                  case x = 1 + x, NaN >>> (foo_1 = 0) == (b_2 = !1) % (Object.isExtensible(c) && (c.c = 0)):
                }
                break;

              case (x += 1) + [ (x = 1 + x, (25 === (2 === [ , 0 ].length) < (2 === [ , 0 ].length)) - ("c" !== this || NaN)) ][(x += 1) + (x = 1 + x, 
                foo_1 = 5 * ((Object.isExtensible(a_2) && (a_2[x = 1 + x, (Object.isExtensible(b_2) && (b_2.async = !1)) | ("undefined" <= this && !1)] = !1)) === "object" + !1))]:
                x = 1 + x;

              default:
              case --l + (--l + ("object" in {
                    done: (x = 1 + x, (foo_1 += 23) != ("" + -42n < []) / !0)
                }) ? c && c[x = 1 + x, (2 === [ , 0 ].length) >> NaN != 0] : (x = 1 + x, 
                (Object.isExtensible(c) && (c.var = -0 <= (!1 ^ (Object.isExtensible(c) && (c[x = 1 + x, 
                0] = 2)))) || 3).toString()[x = 1 + x, NaN ^ 0 == (a_2 = (2 === [ , 0 ].length) < -1)])):
                return x = 1 + x, "bar" ^ 2 === [ , 0 ].length && Object.isExtensible(a_2) && (a_2.done += !1), 
                x = 1 + (x = 1 + (x = 1 + x)), x += 1, Object.isExtensible(c) && (c.set |= !1);
            }
            for (t = 5; --l + [ 1, (x = 1 + (x = 1 + x), 1 != (3 === (2 === [ , 0 ].length))), 1 | (a_2 = NaN != 5 - this), (x = 1 + (x = 1 + x), 
            0) ].null && 0 < --t; ) {
                x += 1;
            }
            break;

          default:
          case (x += 1) + ("function" == typeof f1 && 0 <= --f && f1()):
            if (c++ + {
                a: !1,
                NaN: (x = 1 + (x = 1 + x), (Object.isExtensible(c) && (c[c++ + function c_1() {}] = (2 === [ , 0 ].length) < null <= 0)) << 0)
            }[c++ + (l + 1 - .1 - .1 - .1)]) {
                x += 1;
            } else {
                for (n = 5; a_2 && "function" == typeof a_2.value && 0 <= --f && a_2.value() && 0 < --n; ) {}
            }
            for (i in x = 1 + x, Object.isExtensible(c) && (c.value &= (c = "38") >>> !1) || (2 === [ , 0 ].length) <= -2 <= (-5 ^ 2 === [ , 0 ].length)) {
                x = 1 + x, b_2 |= (Object.isExtensible(i) && (i[x = (x = 1 + x) + 1 + 1, 
                !1] **= 0), !0 >> (x += 1, -2));
            }
            for (b = 5; x = 1 + x, !1 <= this ^ 0 && 0 < --b; ) {
                x = 1 + x, x += 1;
            }
            if (c++ + (c = !1, --l + (x = 1 + (x = 1 + x), 0 < (-64 == 1 - this)))) {
                x = 1 + x, x = 1 + (x += 1);
            } else {
                switch ((x += 1) + (a_2 += (x = 1 + x, 0))) {
                  case c:
                    x = 1 + (x = 1 + x), Object.isExtensible(b_2) && (b_2[x = 1 + x, 
                    Object.isExtensible(a_2) && (a_2.foo <<= (Object.isExtensible(c) && (c.null >>= NaN)) <= -0 != (Object.isExtensible(c) && (c[x = 1 + x, 
                    void 0 >> ((Object.isExtensible(foo_1) && (foo_1[x = 1 + x, 
                    (this <= "") + !0 < !0] = !0)) >> ("" + -42n || -4))] += -5)))] += !0), 
                    x = 1 + x, x += 1;

                  default:
                    x = 1 + x;

                  case /[abc4]/g.exec((x = 1 + x, (Object.isExtensible(foo_1) && (foo_1.var = NaN >>> (foo_1 >>= 0) / (4 ^ +("" + (0xdeadn << 16n | 0xbeefn)))) || l || 5).toString())):
                    x = 1 + x, Object.isExtensible(a_2) && (a_2[[]] += !1 / (0 ^ !0o644n) != (Object.isExtensible(a_2) && (a_2[c] += 0)));
                    break;

                  case {
                        done: (x = 1 + x, (a_2 = 1) >>> NaN)
                    }.b:
                    x = 1 + x, x += 1;
                }
            }
            break;

          case (x += 1) + l:
            s = 5;
            do {
                switch ({
                    set: [] >>> this <= !1 == 0,
                    static: (x = 1 + (x = 1 + x), -0 == (b_2 ^= NaN) ^ (x += 1, 
                    b_2 -= -1))
                }) {
                  default:
                  case /[abc4]/g.exec((x = 1 + x, (Object.isExtensible(a_2) && (a_2[(x += 1) + (c && c[x = 1 + x, 
                    !1 * (Object.isExtensible(a_2) && (a_2[--c] = (a_2 += 5 <= (2 === [ , 0 ].length)) + 22))] || 8).toString()[--l + (c **= (x = 1 + x, 
                    x += 1, Object.isExtensible(b_2) && (b_2.done = !1), NaN))]] = this >= (Object.isExtensible(foo_1) && (foo_1.c -= "24" | this)) <= -1 * (Object.isExtensible(a_2) && (a_2[x = 1 + x, 
                    !0 <= (Object.isExtensible(c) && (c[x = 1 + x, (Object.isExtensible(c) && (c[c++ + c ? --l + (() => {}) : (x = 1 + x, 
                    "number")] = -1 !== (x += 1, this + 2)) || 9).toString()[x = 1 + x, 
                    0 * (x += 1, !1)]] = 22))] >>>= 0))) || l || 5).toString())):
                    x = 1 + x, x = 1 + (x = 1 + (x += 1)), b_2 >>>= NaN;
                    break;

                  case --l + {}.Infinity:
                  case x = 1 + x, Object.isExtensible(c) && (c[(x += 1) + --l] = 0 >>> (0 ^ (Object.isExtensible(a_2) && (a_2.set = "number" | 2 < 3n)))) ? (x = 1 + x, 
                    x += 1, void 0 < "a" / (2 === [ , 0 ].length)) : (x = 1 + x, 
                    -((2 === [ , 0 ].length) <= -3) == ((Object.isExtensible(b_2) && (b_2.b = "function")) ?? !0)):
                }
            } while ((c++ + (b_2 && "function" == typeof b_2.undefined && 0 <= --f && (x = 1 + x, 
            foo_1 += !0, b_2.undefined)()) ? a_2 : l = c) && 0 < --s);
            for (o = 5; c++ + (b_2 && "function" == typeof b_2.done && 0 <= --f && (c++, 
            "function" == typeof a_2 && 0 <= --f && a_2("foo"), b_2.done)("b", "number")) && 0 < --o; ) {
                x += 1;
            }
        }
        a = function foo_1({
            [(x = 1 + x, !void (c = ""))]: foo
        }, bar) {
            (function f1(b_2) {
                x = 1 + (x = 1 + x), Object.isExtensible(c) && (c.get = !1), x = x + 1 + 1;
            })(), function f2(let_2, let_1, bar_1) {
                x = 1 + x;
            }(x += 1);
        }({
            0: [],
            "": [],
            null: (x += 1) + (c && "function" == typeof c.a && 0 <= --f && c.a((x = 1 + x, 
            (Object.isExtensible(b_2) && (b_2[x = 1 + x, "" - (1 == (a_2 ^= /[a2][^e]+$/))] = "" + -42n === 4)) << (x += 1, 
            -1) || !1)))
        }), {
            1.5: "function" in {
                0: (x = 1 + x, -1)
            },
            [(x += 1) + [ !0 + (-1 === this) != ("23" !== +("" + (0xdeadn << 16n | 0xbeefn))) >>> {} + -3, (x = 1 + (x = 1 + x), 
            0 ^ Infinity & (Object.isExtensible(b_2) && (b_2.b ??= !1))), !1 - ((foo_1 = !1) <= "foo"), , (x = 1 + (x = (x = 1 + x) + 1 + 1), 
            1 & (Object.isExtensible(a) && (a[x = 1 + x, 0] = -Infinity)) <= NaN) ].done]: --l + !(!0 >> (0 << (2 === [ , 0 ].length)) << !1),
            var: new function(b_1) {
                this && (this.static = 24), x = 1 + x, x = 1 + (x = 1 + (x = 1 + (x += 1))), 
                b_2 = 0, x = 1 + (x += 1);
            }(x = 1 + x)
        }[(x += 1) + (l = c)] && function async_2() {
            x = 1 + (x = 1 + (x = 1 + x)), foo_1 = ("38" < (2 === [ , 0 ].length)) * (a_2 %= !0);
        }();
    }
})("38"), console.log(null, 100, l, x, Infinity, NaN, void 0);
original result:
null 100  185 Infinity NaN undefined

uglified result:
null 100  180 Infinity NaN undefined
// reduced test case (output will differ)

// (beautified)
(function foo_1({
    [function() {
        (foo_1 = 0) * console.log(foo_1);
    }()]: foo
}) {
    var foo_1;
    var foo_1;
})(3);
// output: function(){}
// 
// minify: 0
// 
// options: {
//   "compress": {
//     "hoist_vars": true,
//     "keep_infinity": true,
//     "passes": 1000000,
//     "unsafe": true
//   },
//   "keep_fargs": true,
//   "keep_fnames": true,
//   "module": false,
//   "toplevel": true,
//   "output": {
//     "v8": true
//   },
//   "validate": true
// }
minify(options):
{
  "compress": {
    "hoist_vars": true,
    "keep_infinity": true,
    "passes": 1000000,
    "unsafe": true
  },
  "keep_fargs": true,
  "keep_fnames": true,
  "module": false,
  "toplevel": true,
  "output": {
    "v8": true
  }
}

Suspicious compress options:
  collapse_vars
  hoist_vars
  side_effects
  unsafe
@alexlamsl alexlamsl added the bug label Jun 25, 2024
alexlamsl added a commit to alexlamsl/UglifyJS that referenced this issue Jun 25, 2024
alexlamsl added a commit to alexlamsl/UglifyJS that referenced this issue Jun 25, 2024
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