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

Closed
alexlamsl opened this issue Nov 22, 2022 · 25 comments
Closed

ufuzz failure #5743

alexlamsl opened this issue Nov 22, 2022 · 25 comments

Comments

@alexlamsl
Copy link
Collaborator

// original code
//

var _calls_ = 10, a = 100, b = 10, c = 0;






var Infinity_2 = ((--b) + ((((!([]))!=(this^"a")) + (("undefined">2)|(this<<"foo")))));
switch (((c = c + 1) + ("function"))) {
case (22):
{var c_2 = function f0(){





}
("function");}
if (((c = c + 1) + ([(c_2 && typeof c_2.b == "function" && --_calls_ >= 0 && c_2.b("foo"))].in)))for (var brake5 = 5; (!((((Infinity_2&=("foo",[]))^("number"==0x26.toString()))*((3^2)==(Infinity_2 && (Infinity_2.done=(25. ===""))))))) && brake5 > 0; --brake5)c = c + 1; else for (var brake7 = 5; (b + 1 - 0.1 - 0.1 - 0.1) && brake7 > 0; --brake7)for (var brake8 = 5; (--(b)) && brake8 > 0; --brake8){var brake9 = 5; do {((--b) + ([((-((c = c + 1, (22%23..toString())))))]));} while (((c = c + 1) + (((c_2=((~(0x26.toString()))^(this - (-2))))>>(("undefined">"function")>>([] - []))))) && --brake9 > 0);}
{var expr11 = (Infinity);  for (var key11 in expr11) {{var brake12 = 5; while ((a++ + ( ((delete ((((25. &({}))>=(NaN - 2)) + ((({})>=({}))===(Infinity_2+=(({})*23..toString())))))) || a || 3).toString() )) && --brake12 > 0){


(typeof f1 == "function" && --_calls_ >= 0 && f1(((--b) + ((-0)))));
}}}}

 break;

case (a++ + (delete b)):

 break;

case ((c = c + 1) + ("b")):
{var brake15 = 5; do {var foo_2 = (1 === 1 ? a : b);} while ((((c = c + 1) + (--/* ignore */b)) ? ((--b) + (({
})[(foo_2 && foo_2[(typeof f2 == "function" && --_calls_ >= 0 && f2())])])) : ((--b) + (foo_2 && typeof foo_2.b == "function" && --_calls_ >= 0 && foo_2.b()))) && --brake15 > 0);}
var Infinity_2 = (a++ + (Infinity_2 && typeof Infinity_2.async == "function" && --_calls_ >= 0 && Infinity_2.async((new function (Infinity){




this[((typeof Infinity_2_1 != "special"))]^=(((((("number"<"object")!==(23..toString()>true))<(foo_2^=(([,0][1]>>>"undefined"),("a"=="foo"))))|(((4>=(-0))==(22<"object")),((!(this))&&(3>>>"number"))))&&((((3^"bar")===(23..toString() - 24 .toString()))&((22||(-4))&(false&&"function"))) + (((foo_2|=(false&[]))^((-1)&"number"))||(foo_2 && (foo_2.get=((foo_2 && (foo_2[(c = 1 + c, ((("b"&3) + (c = c + 1, 23..toString()))>>((false>[])<("foo" + 24 .toString()))))]=([]!="")))&&("b"&"object"))))))),(((((4/4)!==(({})==="number"))<<(Infinity_2 && (Infinity_2[((c = c + 1) + (a++))]&&=((Infinity_2+=("bar"||"c")) + (null>true)))))>>>((c = c + 1, ((-4)^(-1))) - (("c"^false)^(({})|(-3)))))^(((( /[a2][^e]+$/ <4)|(24 .toString()!==[,0][1]))>=((null<<NaN)&(1>=24 .toString())))!=((("b"===({}))===("function"&undefined))>>((([,0].length === 2)^ /[a2][^e]+$/ )<<("object"!=25. ))))));
if ((({
c: ((--b) + (({}))),
})[((c = c + 1) + ([(c = 1 + c, ((Infinity && (Infinity[((c = c + 1) + (typeof f1 == "function" && --_calls_ >= 0 && f1()))]*=((c_2 && (c_2.b=(22<<25. )))<=(null&"a"))))===((c = c + 1, 2)!==(Infinity_2 && (Infinity_2.NaN=([]|"function")))))), (c = 1 + c, (((25. %null)<(([,0].length === 2)||25. )) + ((foo_2 && (foo_2.get=("function"<<"bar")))<((-1)%"b")))), (c = 1 + c, ((("object"|24 .toString())!==((-2)>(-4)))>=((2*null)>((-5)!=0x26.toString()))))]))])){var brake19 = 5; L10069: do {{var Infinity_2_2 = function f1(let_2){




;
}
();}} while (((c = c + 1) + (((c = 1 + c, (c_2 && (c_2.__proto__=(((void ((-2)))<=(NaN>>(-4)))&(!(((-42n).toString()>=0x26.toString()))))))) ? (c = 1 + c, (((Infinity_2=(Infinity^"foo"))*(false&"a")) - (Infinity_2 && (Infinity_2[(a++ + (b = a))]=(("a"==0)==(undefined<"undefined")))))) : (c = 1 + c, (((([,0].length === 2)!=25. )^("object"||null))>=((25. !=this)||("number"%"function"))))) ? ((((([,0].length === 2) + (-1))&(c = c + 1, "number"))==(([,0][1]<(-3))>>>((-2)!==false)))) : (typeof Infinity_2 == "function" && --_calls_ >= 0 && Infinity_2()))) && --brake19 > 0);} else {var foo_2 = function b_2(){




(c = 1 + c, (((([,0].length === 2)<[,0][1])||(+(null))) + ((false<=(-5))|("c",[]))));
(c = 1 + c, (((22!=null)*((-2)!=this))&((23..toString()/Infinity)==((-0)===[]))));
(c = 1 + c, ((( /[a2][^e]+$/ *[])>>>(void (false)))<=((0x26.toString()<<22)!=(1||(-5)))));

}
("c", "object");}

}(1))))), bar = (((("object"*(-1))<<(Infinity_2 && (Infinity_2[(c = 1 + c, (bar && (bar[(a++ + (a--))]=((c_2 && ([ c_2.next ] = [ ((undefined>>(-0))>>(Infinity>>>(-5))) ]))>>>(((-0)>>true)<(({})|2))))))]=("undefined"&&"object"))))!==(("c"*(-4))%((-1) - true))));
;

/* fall-through */

case ((c = c + 1) + (~a)):
{var b = function f2(arguments, foo_1){

class C0 {
Infinity = (--/* ignore */b);
}



{


{var undefined_1 = function f3(bar_1, bar_2, yield_2){




L10070: for (var brake29 = 5; (c = 1 + c, (((""&&0)!==(22===false))!=((foo_1 && ({ '': foo_1[(c = 1 + c, (bar&&=(((5 - 24 .toString())^(0x26.toString()>>>Number(0XDEADn << 16n | 0xbeefn)))>>(("a" + 22) + (5%true)))))] } = { '': ("b">4) }))<<("object">"c")))) && brake29 > 0; --brake29)(c = 1 + c, (((NaN&(-5))&(c = c + 1, 24 .toString()))%(( /[a2][^e]+$/ ^23..toString())===((-4)|(-1)))));
{var brake31 = 5; L10071: while ((c = 1 + c, ((("b"/Infinity)>=(({})!=="number"))>>>((c = c + 1, "a")<=("number"<=(-0))))) && --brake31 > 0)(c = 1 + c, ((("a"===[,0][1])^(([,0].length === 2)^"function"))&&((bar_1 && (bar_1[(c = 1 + c, (((([,0].length === 2)!=="foo"),(([,0].length === 2)<<2))&(-((3<<(-3))))))]=((-5)!==25. )))%((-4)!="bar"))));}
var await_1;

}
();}
{var brake34 = 5; do {{var expr35 = ((--b) + (typeof f3 == "function" && --_calls_ >= 0 && f3((c = 1 + c, (c_2**=(((c = c + 1, 0x26.toString())<("a"??(-4)))<<((2*24 .toString())>>>([]!==[]))))))));  for (var [ key35 ] in expr35) {{var brake36 = 5; while ((a++ + (Infinity_2)) && --brake36 > 0)/*3*/return;}}}} while ((a++ + (2 in [((c = c + 1) + ( ((c = 1 + c, ((("function">=this) + ([]>"a"))<<((undefined<<undefined)&&(([,0].length === 2)&"foo")))) || a || 3).toString() )), ((c = c + 1) + ([]))])) && --brake34 > 0);}
{var brake38 = 5; while ((a++) && --brake38 > 0){var brake39 = 5; L10072: do {{var brake40 = 5; do {{var brake41 = 5; L10073: while ((c = 1 + c, ((c = c + 1, ((-3)&([,0].length === 2)))&&((true<=[,0][1])!=(bar && (bar.c+=(24 .toString()!==1)))))) && --brake41 > 0)(c = 1 + c, (((undefined&"object")*(!([,0][1])))<=((24 .toString()>>"foo")>>(22!== /[a2][^e]+$/ ))));}} while ((a++) && --brake40 > 0);}} while (((--b) + (typeof foo_2 == "function" && --_calls_ >= 0 && foo_2())) && --brake39 > 0);}}
{var brake43 = 5; while (((--b) + (25.  in [])) && --brake43 > 0){


{var brake45 = 5; do {(c = 1 + c, (((void (0x26.toString()))>>>(foo_1 && (foo_1.var=(NaN===23..toString()))))>((22 + null)||(NaN&& /[a2][^e]+$/ ))));} while ((c = 1 + c, ((("b">>>3)%(1<null))/((({})&&"a"),(NaN,(-2))))) && --brake45 > 0);}
}}
}
{var a_2 = function f4(foo_1){





}
(this, ...("" + c_2));}

}
("object");}
if ((Infinity_2 && Infinity_2[([((bar && (bar.in+=(((23..toString()== /[a2][^e]+$/ )>(0>(-0)))/(-((NaN|25. ))))))), ([(b ||= a)][(a++ + (((c = c + 1) + ([((-0) in [(c = 1 + c, (((false??undefined)>>>((-1) - (-0))),((0x26.toString()^undefined)&(0x26.toString()<0))))]), ...("" + Infinity_2)][(a/* ignore */++)]))))])][((c = c + 1) + (-(((c_2 && (c_2.get+=((+((-5)))==("a"%0))))>(b && (b[(c_2)]+=(("undefined"&true)|(c = c + 1, "number"))))))))])]))([(+((((({})>>([3n][0] > 2))|("foo" + (-0)))&&((c = c + 1, ({}))*( /[a2][^e]+$/ >=1)))))][((--b) + (--(b)))]);
switch (((--b) + (({
...(((--b) + ("c"))),
})))) {
default:
try {c = c + 1; } catch (b_1) {


for (var brake53 = 5; (b = a) && brake53 > 0; --brake53)try {{var expr55 = ((c = c + 1) + (foo_2)); L10074:  for (let key55 in expr55) {c = 1 + c; var Infinity_2_2 = expr55[key55]; try {{var brake57 = 5; L10075: do {(c = 1 + c, (((1*5)>("function"<=undefined))*(~(((-4)<=(-3))))));} while ((c = 1 + c, ((!(([,0][1],0)))||(b+=(((-4)^(-4))|(undefined!=="bar"))))) && --brake57 > 0);} } catch (c_2) {


(c = 1 + c, ((((-3)&&({}))>=(true^25. ))||((Infinity - (-5))>(void ((-1))))));
(c = 1 + c, (Infinity_2 && (Infinity_2[((c = c + 1) + ((((!("a"))&(0x26.toString()* /[a2][^e]+$/ ))??(((-0)&&true)<=(({})==1)))))]*=((("undefined"=="c") - ("undefined">"undefined"))/((24 .toString()<=23..toString())===([,0][1]<"object"))))));
 }}} } finally {


L10076: for (var brake61 = 5; ((c = c + 1) + (b_1 && b_1[(c = 1 + c, (b_1 && (b_1[(({
length: (c = 1 + c, (((24 .toString()||undefined)||(!(null)))&((Infinity%23..toString())||( /[a2][^e]+$/ <=(-2))))),
}).var)]&=((("bar"/"") - (Infinity_2>>>=(25. !==(-5))))!==(b && (b.null=(("undefined">>>([,0].length === 2))&(false*25. ))))))))])) && brake61 > 0; --brake61){


;}
 }
 } finally {


for (var brake63 = 5; (a++ + (({
b: (b--),
})[((c = c + 1) + (b))])) && brake63 > 0; --brake63)switch ((a++ + (+b))) {
case ("a" in ({
"       ": (Infinity_2 && typeof Infinity_2.get == "function" && --_calls_ >= 0 && Infinity_2.get`${(c = 1 + c, ((("function"!=23..toString())==("bar"/"b"))&&(([] + true)%(Infinity??5))))}${(c = 1 + c, (((0x26.toString()||5)<=((-5)!==null))/((25. ||"number")<=("c"^""))))}`),
})):
switch ((b+=(c = 1 + c, (((false==0x26.toString())|("number"!== /[a2][^e]+$/ ))<<(("number">"object"),((-2)<=this)))))) {
default:
(c = 1 + c, (((4 + (-0))>("object"!=(-2)))===(("foo"??24 .toString())!==(([,0].length === 2)=="b"))));
(c = 1 + c, ((Infinity_2 && (Infinity_2[(b--)]|=((c = c + 1, "")<=(true=="bar"))))>>((false??5)&(0x26.toString(),"foo"))));
(c = 1 + c, ((((-3)>24 .toString())===(foo_2&=(undefined<<"foo")))<=((24 .toString() - "b")===("object"<"undefined"))));


case ((--b) + (b &= a)):
(c = 1 + c, (((c_2 && (c_2[(c = 1 + c, (((0x26.toString()>>"c")^(Infinity_2 && ([ Infinity_2[(c = 1 + c, ((( /[a2][^e]+$/ ==="foo"),(2??[]))!==(("a"||true)!==(delete ((-0))))))] ] = [ (true^"undefined") ])))<(Infinity_2=((22<"number")^(24 .toString()===2)))))]=(NaN%this)))<=("function">>undefined))!=(("foo"|0) + (0x26.toString()||[]))));

 break;

case (~((((c = c + 1, 25. ) - (undefined??null))<<((c = c + 1, "bar")>("undefined"**24 .toString()))))):
(c = 1 + c, ((((-5)<=Infinity)||((-3)^({})))<(([,0][1]<=true)*(this>=22))));
(c = 1 + c, (Infinity_2 && (Infinity_2[(a++)]-=(((0||undefined)==((-3) + "object"))<(("object"^0)&("undefined"||24 .toString()))))));

/* fall-through */

case (b--):
(c = 1 + c, (c = c + 1, ((this%"bar")<=(b && (b[(c = 1 + c, (((""!="b")>(25. %5)),((23..toString()!=="b")!==(23..toString()&(-0)))))]=(undefined||"undefined"))))));

 break;
}
switch (( /[abc4]/.test(((c = 1 + c, (((22&(-0))<=((-3)>="bar"))/((0===4)>=(22||([3n][0] > 2))))) || b || 5).toString()) )) {
case (a++ + (({
in: (c = 1 + c, (((0x26.toString()===0)^((-1)<=(-2)))==((c = c + 1, "object")>(Infinity_2+=(22,([,0].length === 2)))))),
c: (c = 1 + c, ((c_2^=((0===4)&&((-5)<(-2))))&&(!((c_2=(25. *"")))))),
}).length)):

 break;

case ((--b) + (Infinity_2)):
(c = 1 + c, (Infinity_2 && (Infinity_2.done=(((0x26.toString()==="b")^(Infinity_2 && ({ 0: Infinity_2.done } = { 0: (NaN&1) })))^((undefined*"b") - ((-1)!==this))))));

 break;

case ((c = c + 1) + (24 .toString())):
(c = 1 + c, (((([,0].length === 2)*0x26.toString())*(5<Infinity))<<(((-2)>"b")!==( /[a2][^e]+$/ ===(-3)))));

 break;

case (1 === 1 ? a : b):
(c = 1 + c, (((false<<(-0))<(({}) - (-4)))**((c_2 && (c_2[(c = 1 + c, (((c_2 && (c_2[(c = 1 + c, (bar && (bar[(a++ + (Infinity_2))]=(((25. >>>3)>(24 .toString()==4))*((Infinity_2**=( /[a2][^e]+$/ ??22))*("foo"!=this))))))]+=(3 - (-3))))>(2<""))>>>(("bar"??[])^(c = c + 1, ({})))))]+=(Number(0XDEADn << 16n | 0xbeefn)%23..toString())))<(4==({})))));

 break;
}
(a++ + (Infinity_2 && Infinity_2.__proto__));

 break;

default:


case ([(({
get: (c = 1 + c, ((void (("c" - (-0))))>((3>"foo")>>(3&&false)))),
})[(c = 1 + c, (((this|5)&(!("object")))===((undefined||false)/([]<=([,0].length === 2)))))]), ( ((c = 1 + c, (((c = c + 1, "function")<(({})^24 .toString()))!==(((-3)!==2)^(5&&this)))) || 5).toString()[(c = 1 + c, (((23..toString()>=Infinity)/(NaN==[,0][1]))<=((bar && (bar[(c = 1 + c, ((("bar"/"object")<=( /[a2][^e]+$/ >>([,0].length === 2)))*(Infinity_2 && (Infinity_2.var+=((bar=("bar"===undefined))&&([,0][1]%([,0].length === 2)))))))]=(23..toString()<"foo")))<(24 .toString()/"bar"))))] ), ((c = c + 1) + (a/* ignore */++))].done):
{


}
{var a_1 = function f5(){




;
}
("undefined", "function", 24 .toString());}
c = c + 1;

 break;

case ((--b) + ( ((!b) || 1).toString()[(true)] )):
try {(c = 1 + c, (((c = c + 1, false)^(NaN<<(-2)))!=(c = c + 1, (false - null)))); } catch (await) {


(c = 1 + c, ((foo_2 && (foo_2[(a++ + ( /[abc4]/.test(((c = 1 + c, (bar && (bar.async<<=((("a"%"undefined")<(b && (b.in&&=(NaN<<22))))||((NaN/"object")<=((-1)^(-5))))))) || b || 5).toString()) ))]&=(("a">>[])|(25. <<""))))&((bar && (bar.a-=(23..toString()??Infinity)))===(4==(-3)))));
 }
;

 break;
}
c = c + 1;
 }


case ((--b) + (typeof f4 == "function" && --_calls_ >= 0 && f4("function", (-5), ((--b) + (foo_2 && typeof foo_2.next == "function" && --_calls_ >= 0 && ((c_2), foo_2.next)(5, ((--b) + (b)), 1)))))):
L10077: for (var brake86 = 5; (void function yield_1(){




;
var async;
{var brake89 = 5; do {{var brake90 = 5; L10078: while ((((--b) + (!a)) ? ((c = c + 1) + ((c = 1 + c, (((2>>>"function")/((-0)/undefined))<<((25. >"c") - (null===(-2))))))) : (a++ + (--(b)))) && --brake90 > 0){var brake91 = 5; while ((function yield_1(){




;
}) && --brake91 > 0){ /*2*/ return
(c = 1 + c, (((5%"object") - (5<=(-0)))%((0x26.toString()||(-1)) + ((-5)>=4))))}}}} while (([((--b) + (b++)), (typeof f6 == "function" && --_calls_ >= 0 && f6(NaN))][(a++ + (({
a: (c = 1 + c, ((((-1)<<"bar")<<(23..toString() - (-2)))>=(("object"&&3)||("number"%([,0].length === 2))))),
}).b))]) && --brake89 > 0);}
;
try {for (var brake95 = 5; (({}) in []) && brake95 > 0; --brake95){ return ((--b) + (--(b)))} } catch (c_2) { class C1 {
#foo = ((typeof a_2 == "string"));
3(b_2, await_1){





this.set=((c = c + 1, (Object.isExtensible(b) && (b[(c = 1 + c, ((Infinity_2+=((foo_2=(0x26.toString()!==false))^([,0][1]*Infinity)))&(( /[a2][^e]+$/ <(-2))<=(25. ===[,0][1]))))]=(true>=(-3)))))^(c = c + 1, ("b"!==1)));
this.a=(((5>>undefined)|((-3)<<5))<((5|[,0][1])*(this||"b")));
;

}
}



{var brake98 = 5; L10079: do {try {(c = 1 + c, ((((-5)===0)*((-4)* /[a2][^e]+$/ ))&(("">>2),(0x26.toString()<2)))); } catch (c_2) {


; } finally {


; }} while ((({
get: (c = 1 + c, (((22>Infinity)||(c_2 && (c_2[(c = 1 + c, ((("undefined"==false)/("object", /[a2][^e]+$/ ))<(([,0][1]||5)/(true!==(-4)))))]&=(1!==false))))*((c_2/=(25. &NaN))!=(Infinity_2 && (Infinity_2.var=(3%3)))))),
}).next) && --brake98 > 0);}
{var expr101 = ((--b) + (b /= a));  for (var key101 in expr101) {c = 1 + c; var undefined_2 = expr101[key101]; ;}}
var yield_1;
 } finally {


{


}
for (var brake105 = 5; (a++ + ((function b_1(){




;
}))) && brake105 > 0; --brake105){var brake106 = 5; while ((c = 1 + c, ((c = c + 1, ("object" - 22))||((this!=(-3))&(NaN>="")))) && --brake106 > 0)(c = 1 + c, (b && (b.Infinity=(((0x26.toString()|null)>("bar">>>(-1)))!==(-(((-4)<(-5))))))));}
var b_2 = (typeof f4 == "function" && --_calls_ >= 0 && f4((c = 1 + c, (((2^([,0].length === 2))!==(c = c + 1, "undefined"))>>>(("bar" - "object")!=(a_1 && (a_1[(c = 1 + c, (Infinity_2 && (Infinity_2[((typeof ((--b) + (a/* ignore */++))))]=(((false*(-5))&("" - true))??((!("c"))&&(true>=24 .toString()))))))]&=("c"<=2)))))), 3,)), a_1 = ((typeof (c = 1 + c, (void (((undefined!=5)<<(22,(-4))))))));
{var brake109 = 5; do {(c = 1 + c, ((-((NaN%([,0].length === 2))))==(("number" + 1)|(c = c + 1, "bar"))));} while (((c = c + 1) + (0 in ({
var: (c = 1 + c, (((5||25. )??(true<<(-0)))!==((2||(-2))>=(24 .toString()==="c")))),
"-2": (c = 1 + c, ((Infinity_2 && (Infinity_2[([(c = 1 + c, (~((("number"*23..toString()) - ("b"??Infinity))))), (c = 1 + c, (((""<(-0))&&(true==true))/((false,24 .toString())>>>(yield_1 && (yield_1.var-=(false>>(-4)))))))])]+=((23..toString() - "a")&&(""|"function"))))%(([,0][1]==(-1))%((-5)**([,0].length === 2))))),
null: (c = 1 + c, (((yield_1 && (yield_1.NaN/=(22>>>NaN))),(c_2 && (c_2[(c = 1 + c, (((([,0].length === 2)==Infinity)===((-3)|4))*(("bar">>"function")!==(4*"foo"))))]-=("a">>"object"))))<(("object"<<({}))%("c"!==(-2))))),
}))) && --brake109 > 0);}
var yield_1 = (NaN);
 }

}()) && brake86 > 0; --brake86){var bar = function f6(bar_2, foo){





}
((a++ + (b += a)), (-5), ((c = c + 1) + (b)));}

 break;

case (5 in [(b ^= a)]):
{


try {if (( /[abc4]/.test(((a++ + (-(((((-2)/"")&((-1)*[,0][1]))!=((2|| /[a2][^e]+$/ )??(22=="object")))))) || b || 5).toString()) )){var brake116 = 5; while ((a++ + (b + 1 - 0.1 - 0.1 - 0.1)) && --brake116 > 0)switch (((c = c + 1) + ("foo"))) {
case (a++ + (({
static: (c = 1 + c, (Infinity_2=(((Infinity_2 && (Infinity_2[(c = 1 + c, ((((-4)>=2)==("c"^"b")) + ((~("number"))<(1<<this))))]=(23..toString() + 5)))&("number"===null))!==(([,0][1]^false)==(Number(0XDEADn << 16n | 0xbeefn)>=(-42n).toString()))))),
}).static)):
(c = 1 + c, (((4^"a")&&(23..toString()<"b"))||(("foo"||NaN)>=([]|3))));
(c = 1 + c, (((b && (b.b/=("object",(-5))))===(foo_2=(NaN<=(-0))))<=((2>=null)&&((-5)<"foo"))));
(c = 1 + c, ((((-5)|(-4))==(Infinity_2=(this!=="number"))) - ((NaN===this)<(foo_2 && (foo_2.NaN=("function"^[]))))));

 break;

case ((--b) + ( /[abc4]/.test(((c = 1 + c, (((3%false)==(foo_2=([,0][1]& /[a2][^e]+$/ )))/(c = c + 1, (({})&({}))))) || b || 5).toString()) )):
(c = 1 + c, ((c_2 && (c_2.get+=(("foo"|0x26.toString())??(Infinity_2 && (Infinity_2.b>>>=( /[a2][^e]+$/ >(!0o644n)))))))!=((25. ||"")<(5<"foo"))));
(c = 1 + c, ((("function"<1)>(23..toString()*Infinity)) + (!((([,0].length === 2)===false)))));

 break;

default:
(c = 1 + c, ((c = c + 1, (c = c + 1, "b"))^(((-3)>=NaN)==(null<2))));
(c = 1 + c, (((2|25. )<<( /[a2][^e]+$/ *"number"))<<(("b"|23..toString()),((-1)>>>undefined))));
(c = 1 + c, (c = c + 1, (("a"&&3)>=(bar && (bar.var&=(NaN*1))))));


case (a++ + (({
in: (c = 1 + c, (((c_2 && (c_2[(c = 1 + c, (((true=="c")<(0!=(-1)))??(("b"<22)<<(foo_2=(Infinity^"foo")))))]+=((-4)%"a")))/(c = c + 1, 3))**(("c"||"c")>>>((-0) + null)))),
"-2": (c = 1 + c, ((("number"<<5) - (22===true))*((c = c + 1, "number")&&(void (5))))),
})[(c = 1 + c, (c_2=(((Infinity>>"b")>>>("foo"<"a")) - (((-1)/"function"),((-5)>=(-2))))))])):
(c = 1 + c, (((c_2 && (c_2[(c = 1 + c, ((("c"!=([,0].length === 2)),(4&0x26.toString())) - ((22 + 24 .toString())*((-4)<=23..toString()))))]=(null&&null)))===(2>=true))^((foo_2 && (foo_2.Infinity+=("foo"??true)))??(b=(NaN&"bar")))));

 break;
}} else ((c = c + 1) + (0 === 1 ? a : b)); } catch (c_2_2) {


 } finally {


 }
}

 break;

case (a++ + (typeof bar == "function" && --_calls_ >= 0 && bar("function"))):
{var brake128 = 5; while (((c = c + 1) + ( /[abc4]/g.exec((((c = c + 1) + (foo_2)) || b || 5).toString()) )) && --brake128 > 0)L10080: for (var brake129 = 5; ((--b) + (((bar && (bar[(b+=(c = 1 + c, (((undefined - (-3))%("function"*({})))<<((foo_2=([]^this))>=(2 + true)))))]??=((false==1)^(c_2=("object"?? /[a2][^e]+$/ )))))>(((-5)|"bar")||(true%(-42n).toString()))))) && brake129 > 0; --brake129)continue;}
c = c + 1;
{var brake132 = 5; while (((c = c + 1) + (b--)) && --brake132 > 0)(bar);}

 break;
}

 break;
}
var a_1 = (typeof a_2 == "function" && --_calls_ >= 0 && a_2((++/* ignore */a), (a++ + (foo_2 && typeof foo_2.Infinity == "function" && --_calls_ >= 0 && foo_2.Infinity((1 === 1 ? a : b), "b"))))), a_2 = ((c = c + 1) + ([((c = c + 1) + (b && b.var)), ((c = c + 1) + (foo_2=((typeof foo === "special")))), (typeof bar == "function" && --_calls_ >= 0 && bar((a++ + ((void function c_2_2(){




;
try {if ((b = a))switch ((c = 1 + c, (b>>=((("c"/(-0)) + (({})>[,0][1]))%(((-1)==0x26.toString())||("undefined">>"a")))))) {
case (c = 1 + c, ((("undefined"&&this)%((-5)&&23..toString()))^((25.  + 2) - (!((-0)))))):
;
 break;

default:
;

case (c = 1 + c, ((!(("object"||"bar")))===((22||"number")&&((-2) + 5)))):
;
 break;

case (c = 1 + c, (((Infinity==([,0].length === 2))*(25. ||[,0][1]))^(a_1 && ({ done: a_1.undefined } = { done: (((-0)??(-1))<(c = c + 1, "object")) })))):
;
 break;
} else {var brake139 = 5; do {(c = 1 + c, (((bar && (bar.set+=((-3)!=5)))<(void (""))),(([,0][1]|25. )&("object"!==0))));} while ((c = 1 + c, (((0/"c")<("bar"|({})))>>((1<=5)!=((-2)&&(-5))))) && --brake139 > 0);} } catch (Infinity_2) {


 }
{var a_1 = function f7(Infinity_2_2, Infinity_2_1,){




(c = 1 + c, ((([,0][1]|(-5))^("foo",1))==((({})<22),(c = c + 1, ([,0].length === 2)))));

}
(((c = c + 1) + (b=(c = 1 + c, (((undefined>>NaN)>=("foo"!=="number"))<((0>=2)||(4^([,0].length === 2))))))), "bar");}
c = c + 1;
try {switch (((--b) + ((c = 1 + c, ((b/=((0x26.toString()^"undefined") - (([,0].length === 2),"b")))^((null>>>undefined)*(undefined||""))))))) {
case (a_1 && a_1.value):

 break;

default:


case (((a_2) => {




;
})(false,)):

/* fall-through */

case ((--b) + ([(c = 1 + c, ((((-5)>="b")^(Infinity>=23..toString()))*(((-5)??[])!=(null> /[a2][^e]+$/ )))), (c = 1 + c, (((23..toString()=== /[a2][^e]+$/ )!=("number"^0))^((null||0) + ((-1)<<({}))))), (c = 1 + c, ((c_2 && ([ c_2[((c = c + 1) + ("a" in [...[(c = 1 + c, ((((-1)%23..toString()) + (b=((-1)^2)))*((void ((-2)))*(5>>"function"))))], (c = 1 + c, (((([,0].length === 2)&&[,0][1])==(2/"a")) - ((Infinity_2 && (Infinity_2.a=(5^true)))!==(([,0].length === 2)!="number"))))]))] ] = [ ((""<(-5))||(true!= /[a2][^e]+$/ )) ]))|(b && (b[((--b) + (void ((((bar && (bar.done&&=(({})===24 .toString())))!==((-3)>>({}))) - (( /[a2][^e]+$/ ^({}))===([,0][1],(-5)))))))]+=((([,0].length === 2)*2)==(foo_2=(24 .toString()/"undefined"))))))), (c = 1 + c, ((("c"==="")^(c = c + 1,  /[a2][^e]+$/ ))^(("object">>>1)!==(({})^undefined)))), (c = 1 + c, (c = c + 1, ((delete (0))/(Number(0XDEADn << 16n | 0xbeefn)*({})))))].var)):
(c = 1 + c, (((bar=(4>0)),(2%0x26.toString()))|(((-3),24 .toString())===(1>>25. ))));

 break;
} } catch (bar) {


switch ((c = 1 + c, (((a_1 && (a_1.get-=(""<<Infinity)))!=( /[a2][^e]+$/ <= /[a2][^e]+$/ ))==(a_2=((this - "number"),(2===0)))))) {
case (c = 1 + c, ((-(( /[a2][^e]+$/ ^[,0][1])))===((({})|({}))/([]<<"function")))):
;
 break;

case (c = 1 + c, ((a_1 && (a_1.async=((!("b"))>>(5**24 .toString()))))/((3!==null)>((-1)>>>(-0))))):
;
 break;

case (c = 1 + c, ((("object"^23..toString())!==(([,0].length === 2)>(-3)))^(bar=((void (false))>=(foo_2 && (foo_2[(c = 1 + c, ((([,0][1]/"c")>>(3<="undefined")) + ((c = c + 1, 0x26.toString())/(bar && (bar[(c = 1 + c, ((("foo">>>4)%(NaN&22))^(((-0)?? /[a2][^e]+$/ )??(Infinity<=(-5)))))]+=(({}) + "bar"))))))]^=(false!==([,0].length === 2)))))))):
;
 break;

default:
;
}
 } finally {


(c = 1 + c, (a_1 && (a_1[((--b) + ((typeof bar != "unknown")))]=((((-4)>>>"b")<=(""&&true))||((0|"c")^(b && (b.NaN=([,0][1]%true))))))));
{ /*2*/ return
(c = 1 + c, ((b && (b.value+=(([,0][1]===(-0))??("foo"&&4))))!=((c = c + 1, "")<(3%(-2)))))}
{var brake150 = 5; L10081: do {(c = 1 + c, ((c = c + 1, ("foo"!=false))**(((-0)^"b")<=("b"|undefined))));} while ((c = 1 + c, (((0>=(-2))|([,0][1]^null))&&(("function"^(-1))>(([,0].length === 2)>(-3))))) && --brake150 > 0);}
{ /*2*/ return
(c = 1 + c, ((((-1)|"")||(""||this)) + ((""!=0x26.toString())<<(4>22))))}
 }

}()))), 22, 0x26.toString()))]));

console.log(null, a, b, c, Infinity, NaN, undefined);
@alexlamsl
Copy link
Collaborator Author

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

var Infinity_2 = --b + ((![] != (this ^ "a")) + ("undefined" > 2 | this << "foo"));

switch ((c = c + 1) + "function") {
  case 22:
    {
        var c_2 = function d() {}("function");
    }
    if ((c = c + 1) + [ c_2 && typeof c_2.b == "function" && --_calls_ >= 0 && c_2.b("foo") ].in) {
        for (var brake5 = 5; !(((Infinity_2 &= ("foo", [])) ^ "number" == 38..toString()) * ((3 ^ 2) == (Infinity_2 && (Infinity_2.done = 25 === "")))) && brake5 > 0; --brake5) {
            c = c + 1;
        }
    } else {
        for (var brake7 = 5; b + 1 - .1 - .1 - .1 && brake7 > 0; --brake7) {
            for (var brake8 = 5; --b && brake8 > 0; --brake8) {
                var brake9 = 5;
                do {
                    --b + [ -(c = c + 1, 22 % 23..toString()) ];
                } while ((c = c + 1) + ((c_2 = ~38..toString() ^ this - -2) >> (("undefined" > "function") >> [] - [])) && --brake9 > 0);
            }
        }
    }
    {
        var expr11 = Infinity;
        for (var key11 in expr11) {
            {
                var brake12 = 5;
                while (a++ + (delete (((25 & {}) >= NaN - 2) + ({} >= {} === (Infinity_2 += {} * 23..toString()))) || a || 3).toString() && --brake12 > 0) {
                    typeof f1 == "function" && --_calls_ >= 0 && f1(--b + -0);
                }
            }
        }
    }
    break;

  case a++ + delete b:
    break;

  case (c = c + 1) + "b":
    {
        var brake15 = 5;
        do {
            var foo_2 = 1 === 1 ? a : b;
        } while (((c = c + 1) + --b ? --b + {}[foo_2 && foo_2[typeof f2 == "function" && --_calls_ >= 0 && f2()]] : --b + (foo_2 && typeof foo_2.b == "function" && --_calls_ >= 0 && foo_2.b())) && --brake15 > 0);
    }
    var Infinity_2 = a++ + (Infinity_2 && typeof Infinity_2.async == "function" && --_calls_ >= 0 && Infinity_2.async(new function(e) {
        this[typeof Infinity_2_1 != "special"] ^= (("number" < "object" !== 23..toString() > true) < (h ^= ([ , 0 ][1] >>> "undefined",
        "a" == "foo")) | (4 >= -0 == 22 < "object", !this && 3 >>> "number") && ((3 ^ "bar") === 23..toString() - 24..toString() & ((22 || -4) & (false && "function"))) + ((h |= false & []) ^ -1 & "number" || h && (h.get = h && (h[c = 1 + c,
        ("b" & 3) + (c = c + 1, 23..toString()) >> (false > [] < "foo" + 24..toString())] = [] != "") && "b" & "object")),
        (4 / 4 !== ({} === "number")) << (Infinity_2 && (Infinity_2[(c = c + 1) + a++] &&= (Infinity_2 += "bar" || "c") + (null > true))) >>> (c = c + 1,
        -4 ^ -1) - ("c" ^ false ^ ({} | -3)) ^ (/[a2][^e]+$/ < 4 | 24..toString() !== [ , 0 ][1]) >= (null << NaN & 1 >= 24..toString()) != ("b" === {} === ("function" & undefined)) >> (([ , 0 ].length === 2 ^ /[a2][^e]+$/) << ("object" != 25)));
        if ({
            c: --b + {}
        }[(c = c + 1) + [ (c = 1 + c, (e && (e[(c = c + 1) + (typeof f1 == "function" && --_calls_ >= 0 && f1())] *= (c_2 && (c_2.b = 22 << 25)) <= (null & "a"))) === ((c = c + 1,
        2) !== (Infinity_2 && (Infinity_2.NaN = [] | "function")))), (c = 1 + c,
        (25 % null < ([ , 0 ].length === 2 || 25)) + ((h && (h.get = "function" << "bar")) < -1 % "b")), (c = 1 + c,
        (("object" | 24..toString()) !== -2 > -4) >= (2 * null > (-5 != 38..toString()))) ]]) {
            var f = 5;
            L10069: do {
                {
                    var g = function i(j) {}();
                }
            } while ((c = c + 1) + (((c = 1 + c, c_2 && (c_2.__proto__ = void -2 <= NaN >> -4 & !((-42n).toString() >= 38..toString()))) ? (c = 1 + c,
            (Infinity_2 = e ^ "foo") * (false & "a") - (Infinity_2 && (Infinity_2[a++ + (b = a)] = "a" == 0 == undefined < "undefined"))) : (c = 1 + c,
            ([ , 0 ].length === 2 != 25 ^ ("object" || null)) >= (25 != this || "number" % "function"))) ? (([ , 0 ].length === 2) + -1 & (c = c + 1,
            "number")) == ([ , 0 ][1] < -3) >>> (-2 !== false) : typeof Infinity_2 == "function" && --_calls_ >= 0 && Infinity_2()) && --f > 0);
        } else {
            var h = function k() {
                c = 1 + c, (([ , 0 ].length === 2) < [ , 0 ][1] || +null) + (false <= -5 | ("c",
                []));
                c = 1 + c, (22 != null) * (-2 != this) & 23..toString() / e == (-0 === []);
                c = 1 + c, /[a2][^e]+$/ * [] >>> void false <= (38..toString() << 22 != (1 || -5));
            }("c", "object");
        }
    }(1))), bar = "object" * -1 << (Infinity_2 && (Infinity_2[c = 1 + c, bar && (bar[a++ + a--] = (c_2 && ([ c_2.next ] = [ undefined >> -0 >> (Infinity >>> -5) ])) >>> (-0 >> true < ({} | 2)))] = "undefined" && "object")) !== "c" * -4 % (-1 - true);
    ;

  case (c = c + 1) + ~a:
    {
        var b = function l(arguments, m) {
            class n {
                Infinity = --b;
            }
            {
                {
                    var o = function A(B, C, D) {
                        L10070: for (var E = 5; (c = 1 + c, ("" && 0) !== (22 === false) != (m && ({
                            "": m[c = 1 + c, bar &&= (5 - 24..toString() ^ 38..toString() >>> Number(0xdeadn << 16n | 0xbeefn)) >> "a" + 22 + 5 % true]
                        } = {
                            "": "b" > 4
                        })) << ("object" > "c")) && E > 0; --E) {
                            c = 1 + c, (NaN & -5 & (c = c + 1, 24..toString())) % ((/[a2][^e]+$/ ^ 23..toString()) === (-4 | -1));
                        }
                        {
                            var F = 5;
                            L10071: while ((c = 1 + c, ("b" / Infinity >= ({} !== "number")) >>> ((c = c + 1,
                            "a") <= ("number" <= -0))) && --F > 0) {
                                c = 1 + c, "a" === [ , 0 ][1] ^ ([ , 0 ].length === 2 ^ "function") && (B && (B[c = 1 + c,
                                ([ , 0 ].length === 2 !== "foo", ([ , 0 ].length === 2) << 2) & -(3 << -3)] = -5 !== 25)) % (-4 != "bar");
                            }
                        }
                        var G;
                    }();
                }
                {
                    var p = 5;
                    do {
                        {
                            var q = --b + (typeof f3 == "function" && --_calls_ >= 0 && f3((c = 1 + c,
                            c_2 **= ((c = c + 1, 38..toString()) < ("a" ?? -4)) << (2 * 24..toString() >>> ([] !== [])))));
                            for (var [ r ] in q) {
                                {
                                    var s = 5;
                                    while (a++ + Infinity_2 && --s > 0) {
                                        return;
                                    }
                                }
                            }
                        }
                    } while (a++ + (2 in [ (c = c + 1) + ((c = 1 + c, ("function" >= this) + ([] > "a") << (undefined << undefined && [ , 0 ].length === 2 & "foo")) || a || 3).toString(), (c = c + 1) + [] ]) && --p > 0);
                }
                {
                    var t = 5;
                    while (a++ && --t > 0) {
                        var u = 5;
                        L10072: do {
                            {
                                var v = 5;
                                do {
                                    {
                                        var w = 5;
                                        L10073: while ((c = 1 + c, (c = c + 1, -3 & [ , 0 ].length === 2) && true <= [ , 0 ][1] != (bar && (bar.c += 24..toString() !== 1))) && --w > 0) {
                                            c = 1 + c, (undefined & "object") * ![ , 0 ][1] <= 24..toString() >> "foo" >> (22 !== /[a2][^e]+$/);
                                        }
                                    }
                                } while (a++ && --v > 0);
                            }
                        } while (--b + (typeof foo_2 == "function" && --_calls_ >= 0 && foo_2()) && --u > 0);
                    }
                }
                {
                    var x = 5;
                    while (--b + (25 in []) && --x > 0) {
                        {
                            var y = 5;
                            do {
                                c = 1 + c, void 38..toString() >>> (m && (m.var = NaN === 23..toString())) > (22 + null || NaN && /[a2][^e]+$/);
                            } while ((c = 1 + c, ("b" >>> 3) % (1 < null) / ({} && "a",
                            NaN, -2)) && --y > 0);
                        }
                    }
                }
            }
            {
                var z = function H(I) {}(this, ..."" + c_2);
            }
        }("object");
    }
    if (Infinity_2 && Infinity_2[[ bar && (bar.in += ((23..toString() == /[a2][^e]+$/) > (0 > -0)) / -(NaN | 25)), [ b ||= a ][a++ + ((c = c + 1) + [ -0 in [ (c = 1 + c,
    (false ?? undefined) >>> -1 - -0, (38..toString() ^ undefined) & 38..toString() < 0) ], ..."" + Infinity_2 ][a++])] ][(c = c + 1) + -((c_2 && (c_2.get += + -5 == "a" % 0)) > (b && (b[c_2] += "undefined" & true | (c = c + 1,
    "number"))))]]) {
        [ +({} >> ([ 3n ][0] > 2) | "foo" + -0 && (c = c + 1, {}) * (/[a2][^e]+$/ >= 1)) ][--b + --b];
    }
    switch (--b + {
        ...--b + "c"
    }) {
      default:
        try {
            c = c + 1;
        } catch (J) {
            for (var brake53 = 5; (b = a) && brake53 > 0; --brake53) {
                try {
                    {
                        var expr55 = (c = c + 1) + foo_2;
                        L10074: for (let K in expr55) {
                            c = 1 + c;
                            var Infinity_2_2 = expr55[K];
                            try {
                                {
                                    var brake57 = 5;
                                    L10075: do {
                                        c = 1 + c, (1 * 5 > ("function" <= undefined)) * ~(-4 <= -3);
                                    } while ((c = 1 + c, !([ , 0 ][1], 0) || (b += -4 ^ -4 | undefined !== "bar")) && --brake57 > 0);
                                }
                            } catch (c_2) {
                                c = 1 + c, (-3 && {}) >= (true ^ 25) || Infinity - -5 > void -1;
                                c = 1 + c, Infinity_2 && (Infinity_2[(c = c + 1) + (!"a" & 38..toString() * /[a2][^e]+$/ ?? (-0 && true) <= ({} == 1))] *= (("undefined" == "c") - ("undefined" > "undefined")) / (24..toString() <= 23..toString() === [ , 0 ][1] < "object"));
                            }
                        }
                    }
                } finally {
                    L10076: for (var brake61 = 5; (c = c + 1) + (J && J[c = 1 + c,
                    J && (J[{
                        length: (c = 1 + c, (24..toString() || undefined || !null) & (Infinity % 23..toString() || /[a2][^e]+$/ <= -2))
                    }.var] &= "bar" / "" - (Infinity_2 >>>= 25 !== -5) !== (b && (b.null = "undefined" >>> ([ , 0 ].length === 2) & false * 25)))]) && brake61 > 0; --brake61) {}
                }
            }
        } finally {
            for (var brake63 = 5; a++ + {
                b: b--
            }[(c = c + 1) + b] && brake63 > 0; --brake63) {
                switch (a++ + +b) {
                  case "a" in {
                        "\t": Infinity_2 && typeof Infinity_2.get == "function" && --_calls_ >= 0 && Infinity_2.get`${c = 1 + c,
                        "function" != 23..toString() == "bar" / "b" && ([] + true) % (Infinity ?? 5)}${c = 1 + c,
                        ((38..toString() || 5) <= (-5 !== null)) / ((25 || "number") <= ("c" ^ ""))}`
                    }:
                    switch (b += (c = 1 + c, (false == 38..toString() | "number" !== /[a2][^e]+$/) << ("number" > "object",
                    -2 <= this))) {
                      default:
                        c = 1 + c, 4 + -0 > ("object" != -2) === (("foo" ?? 24..toString()) !== ([ , 0 ].length === 2 == "b"));
                        c = 1 + c, (Infinity_2 && (Infinity_2[b--] |= (c = c + 1,
                        "") <= (true == "bar"))) >> ((false ?? 5) & (38..toString(),
                        "foo"));
                        c = 1 + c, (-3 > 24..toString() === (foo_2 &= undefined << "foo")) <= (24..toString() - "b" === "object" < "undefined");

                      case --b + (b &= a):
                        c = 1 + c, (c_2 && (c_2[c = 1 + c, (38..toString() >> "c" ^ (Infinity_2 && ([ Infinity_2[c = 1 + c,
                        (/[a2][^e]+$/ === "foo", 2 ?? []) !== (("a" || true) !== delete -0)] ] = [ true ^ "undefined" ]))) < (Infinity_2 = 22 < "number" ^ 24..toString() === 2)] = NaN % this)) <= "function" >> undefined != ("foo" | 0) + (38..toString() || []);
                        break;

                      case ~((c = c + 1, 25) - (undefined ?? null) << ((c = c + 1,
                        "bar") > "undefined" ** 24..toString())):
                        c = 1 + c, (-5 <= Infinity || -3 ^ {}) < ([ , 0 ][1] <= true) * (this >= 22);
                        c = 1 + c, Infinity_2 && (Infinity_2[a++] -= ((0 || undefined) == -3 + "object") < (("object" ^ 0) & ("undefined" || 24..toString())));

                      case b--:
                        c = 1 + c, c = c + 1, this % "bar" <= (b && (b[c = 1 + c,
                        ("" != "b") > 25 % 5, 23..toString() !== "b" !== (23..toString() & -0)] = undefined || "undefined"));
                        break;
                    }
                    switch (/[abc4]/.test(((c = 1 + c, ((22 & -0) <= (-3 >= "bar")) / ((0 === 4) >= (22 || [ 3n ][0] > 2))) || b || 5).toString())) {
                      case a++ + {
                            in: (c = 1 + c, (38..toString() === 0 ^ -1 <= -2) == (c = c + 1,
                            "object") > (Infinity_2 += (22, [ , 0 ].length === 2))),
                            c: (c = 1 + c, (c_2 ^= 0 === 4 && -5 < -2) && !(c_2 = 25 * ""))
                        }.length:
                        break;

                      case --b + Infinity_2:
                        c = 1 + c, Infinity_2 && (Infinity_2.done = 38..toString() === "b" ^ (Infinity_2 && ({
                            0: Infinity_2.done
                        } = {
                            0: NaN & 1
                        })) ^ undefined * "b" - (-1 !== this));
                        break;

                      case (c = c + 1) + 24..toString():
                        c = 1 + c, ([ , 0 ].length === 2) * 38..toString() * (5 < Infinity) << (-2 > "b" !== (/[a2][^e]+$/ === -3));
                        break;

                      case 1 === 1 ? a : b:
                        c = 1 + c, (false << -0 < {} - -4) ** ((c_2 && (c_2[c = 1 + c,
                        ((c_2 && (c_2[c = 1 + c, bar && (bar[a++ + Infinity_2] = (25 >>> 3 > (24..toString() == 4)) * ((Infinity_2 **= /[a2][^e]+$/ ?? 22) * ("foo" != this)))] += 3 - -3)) > (2 < "")) >>> (("bar" ?? []) ^ (c = c + 1,
                        {}))] += Number(0xdeadn << 16n | 0xbeefn) % 23..toString())) < (4 == {}));
                        break;
                    }
                    a++ + (Infinity_2 && Infinity_2.__proto__);
                    break;

                  default:
                  case [ {
                        get: (c = 1 + c, void ("c" - -0) > (3 > "foo") >> (3 && false))
                    }[c = 1 + c, ((this | 5) & !"object") === (undefined || false) / ([] <= ([ , 0 ].length === 2))], ((c = 1 + c,
                    (c = c + 1, "function") < ({} ^ 24..toString()) !== (-3 !== 2 ^ (5 && this))) || 5).toString()[c = 1 + c,
                    (23..toString() >= Infinity) / (NaN == [ , 0 ][1]) <= ((bar && (bar[c = 1 + c,
                    ("bar" / "object" <= /[a2][^e]+$/ >> ([ , 0 ].length === 2)) * (Infinity_2 && (Infinity_2.var += (bar = "bar" === undefined) && [ , 0 ][1] % ([ , 0 ].length === 2)))] = 23..toString() < "foo")) < 24..toString() / "bar")], (c = c + 1) + a++ ].done:
                    {}
                    {
                        var a_1 = function L() {}("undefined", "function", 24..toString());
                    }
                    c = c + 1;
                    break;

                  case --b + (!b || 1).toString()[true]:
                    try {
                        c = 1 + c, ((c = c + 1, false) ^ NaN << -2) != (c = c + 1,
                        false - null);
                    } catch (M) {
                        c = 1 + c, (foo_2 && (foo_2[a++ + /[abc4]/.test(((c = 1 + c,
                        bar && (bar.async <<= "a" % "undefined" < (b && (b.in &&= NaN << 22)) || NaN / "object" <= (-1 ^ -5))) || b || 5).toString())] &= "a" >> [] | 25 << "")) & (bar && (bar.a -= 23..toString() ?? Infinity)) === (4 == -3);
                    }
                    ;
                    break;
                }
            }
            c = c + 1;
        }

      case --b + (typeof f4 == "function" && --_calls_ >= 0 && f4("function", -5, --b + (foo_2 && typeof foo_2.next == "function" && --_calls_ >= 0 && (c_2,
        foo_2.next)(5, --b + b, 1)))):
        L10077: for (var brake86 = 5; void function N() {
            var O;
            {
                var P = 5;
                do {
                    {
                        var Q = 5;
                        L10078: while ((--b + !a ? (c = c + 1) + (c = 1 + c, (2 >>> "function") / (-0 / undefined) << (25 > "c") - (null === -2)) : a++ + --b) && --Q > 0) {
                            var R = 5;
                            while (function aa() {} && --R > 0) {
                                return;
                                c = 1 + c, (5 % "object" - (5 <= -0)) % ((38..toString() || -1) + (-5 >= 4));
                            }
                        }
                    }
                } while ([ --b + b++, typeof f6 == "function" && --_calls_ >= 0 && f6(NaN) ][a++ + {
                    a: (c = 1 + c, -1 << "bar" << 23..toString() - -2 >= ("object" && 3 || "number" % ([ , 0 ].length === 2)))
                }.b] && --P > 0);
            }
            try {
                for (var S = 5; {} in [] && S > 0; --S) {
                    return --b + --b;
                }
            } catch (ba) {
                class ca {
                    #foo = typeof a_2 == "string";
                    3(da, ea) {
                        this.set = (c = c + 1, Object.isExtensible(b) && (b[c = 1 + c,
                        (Infinity_2 += (foo_2 = 38..toString() !== false) ^ [ , 0 ][1] * Infinity) & /[a2][^e]+$/ < -2 <= (25 === [ , 0 ][1])] = true >= -3)) ^ (c = c + 1,
                        "b" !== 1);
                        this.a = (5 >> undefined | -3 << 5) < (5 | [ , 0 ][1]) * (this || "b");
                    }
                }
                {
                    var T = 5;
                    L10079: do {
                        try {
                            c = 1 + c, (-5 === 0) * (-4 * /[a2][^e]+$/) & ("" >> 2,
                            38..toString() < 2);
                        } catch (fa) {} finally {}
                    } while ({
                        get: (c = 1 + c, (22 > Infinity || ba && (ba[c = 1 + c,
                        ("undefined" == false) / ("object", /[a2][^e]+$/) < ([ , 0 ][1] || 5) / (true !== -4)] &= 1 !== false)) * ((ba /= 25 & NaN) != (Infinity_2 && (Infinity_2.var = 3 % 3))))
                    }.next && --T > 0);
                }
                {
                    var U = --b + (b /= a);
                    for (var V in U) {
                        c = 1 + c;
                        var W = U[V];
                    }
                }
                var N;
            } finally {
                {}
                for (var X = 5; a++ + function ga() {} && X > 0; --X) {
                    var Y = 5;
                    while ((c = 1 + c, (c = c + 1, "object" - 22) || this != -3 & NaN >= "") && --Y > 0) {
                        c = 1 + c, b && (b.Infinity = (38..toString() | null) > "bar" >>> -1 !== -(-4 < -5));
                    }
                }
                var Z = typeof f4 == "function" && --_calls_ >= 0 && f4((c = 1 + c,
                ((2 ^ [ , 0 ].length === 2) !== (c = c + 1, "undefined")) >>> ("bar" - "object" != ($ && ($[c = 1 + c,
                Infinity_2 && (Infinity_2[typeof (--b + a++)] = false * -5 & "" - true ?? (!"c" && true >= 24..toString()))] &= "c" <= 2)))), 3), $ = typeof (c = 1 + c,
                void ((undefined != 5) << (22, -4)));
                {
                    var _ = 5;
                    do {
                        c = 1 + c, -(NaN % ([ , 0 ].length === 2)) == ("number" + 1 | (c = c + 1,
                        "bar"));
                    } while ((c = c + 1) + (0 in {
                        var: (c = 1 + c, ((5 || 25) ?? true << -0) !== (2 || -2) >= (24..toString() === "c")),
                        "-2": (c = 1 + c, (Infinity_2 && (Infinity_2[[ (c = 1 + c,
                        ~("number" * 23..toString() - ("b" ?? Infinity))), (c = 1 + c,
                        ("" < -0 && true == true) / ((false, 24..toString()) >>> (N && (N.var -= false >> -4)))) ]] += 23..toString() - "a" && "" | "function")) % (([ , 0 ][1] == -1) % (-5) ** ([ , 0 ].length === 2))),
                        null: (c = 1 + c, (N && (N.NaN /= 22 >>> NaN), c_2 && (c_2[c = 1 + c,
                        ([ , 0 ].length === 2 == Infinity === (-3 | 4)) * ("bar" >> "function" !== 4 * "foo")] -= "a" >> "object")) < ("object" << {}) % ("c" !== -2))
                    }) && --_ > 0);
                }
                var N = NaN;
            }
        }() && brake86 > 0; --brake86) {
            var bar = function ha(ia, ja) {}(a++ + (b += a), -5, (c = c + 1) + b);
        }
        break;

      case 5 in [ b ^= a ]:
        {
            try {
                if (/[abc4]/.test((a++ + -((-2 / "" & -1 * [ , 0 ][1]) != ((2 || /[a2][^e]+$/) ?? 22 == "object")) || b || 5).toString())) {
                    var brake116 = 5;
                    while (a++ + (b + 1 - .1 - .1 - .1) && --brake116 > 0) {
                        switch ((c = c + 1) + "foo") {
                          case a++ + {
                                static: (c = 1 + c, Infinity_2 = ((Infinity_2 && (Infinity_2[c = 1 + c,
                                (-4 >= 2 == ("c" ^ "b")) + (~"number" < 1 << this)] = 23..toString() + 5)) & "number" === null) !== (([ , 0 ][1] ^ false) == Number(0xdeadn << 16n | 0xbeefn) >= (-42n).toString()))
                            }.static:
                            c = 1 + c, 4 ^ "a" && 23..toString() < "b" || ("foo" || NaN) >= ([] | 3);
                            c = 1 + c, ((b && (b.b /= ("object", -5))) === (foo_2 = NaN <= -0)) <= (2 >= null && -5 < "foo");
                            c = 1 + c, ((-5 | -4) == (Infinity_2 = this !== "number")) - ((NaN === this) < (foo_2 && (foo_2.NaN = "function" ^ [])));
                            break;

                          case --b + /[abc4]/.test(((c = 1 + c, (3 % false == (foo_2 = [ , 0 ][1] & /[a2][^e]+$/)) / (c = c + 1,
                            {} & {})) || b || 5).toString()):
                            c = 1 + c, (c_2 && (c_2.get += "foo" | 38..toString() ?? (Infinity_2 && (Infinity_2.b >>>= /[a2][^e]+$/ > !0o644n)))) != (25 || "") < (5 < "foo");
                            c = 1 + c, ("function" < 1 > 23..toString() * Infinity) + !([ , 0 ].length === 2 === false);
                            break;

                          default:
                            c = 1 + c, (c = c + 1, c = c + 1, "b") ^ -3 >= NaN == null < 2;
                            c = 1 + c, (2 | 25) << /[a2][^e]+$/ * "number" << ("b" | 23..toString(),
                            -1 >>> undefined);
                            c = 1 + c, c = c + 1, ("a" && 3) >= (bar && (bar.var &= NaN * 1));

                          case a++ + {
                                in: (c = 1 + c, ((c_2 && (c_2[c = 1 + c, (true == "c") < (0 != -1) ?? ("b" < 22) << (foo_2 = Infinity ^ "foo")] += -4 % "a")) / (c = c + 1,
                                3)) ** (("c" || "c") >>> -0 + null)),
                                "-2": (c = 1 + c, (("number" << 5) - (22 === true)) * ((c = c + 1,
                                "number") && void 5))
                            }[c = 1 + c, c_2 = (Infinity >> "b" >>> ("foo" < "a")) - (-1 / "function",
                            -5 >= -2)]:
                            c = 1 + c, (c_2 && (c_2[c = 1 + c, ("c" != ([ , 0 ].length === 2),
                            4 & 38..toString()) - (22 + 24..toString()) * (-4 <= 23..toString())] = null && null)) === 2 >= true ^ ((foo_2 && (foo_2.Infinity += "foo" ?? true)) ?? (b = NaN & "bar"));
                            break;
                        }
                    }
                } else {
                    (c = c + 1) + (0 === 1 ? a : b);
                }
            } catch (ka) {} finally {}
        }
        break;

      case a++ + (typeof bar == "function" && --_calls_ >= 0 && bar("function")):
        {
            var brake128 = 5;
            while ((c = c + 1) + /[abc4]/g.exec(((c = c + 1) + foo_2 || b || 5).toString()) && --brake128 > 0) {
                L10080: for (var brake129 = 5; --b + ((bar && (bar[b += (c = 1 + c,
                (undefined - -3) % ("function" * {}) << ((foo_2 = [] ^ this) >= 2 + true))] ??= false == 1 ^ (c_2 = "object" ?? /[a2][^e]+$/))) > (-5 | "bar" || true % (-42n).toString())) && brake129 > 0; --brake129) {
                    continue;
                }
            }
        }
        c = c + 1;
        {
            var brake132 = 5;
            while ((c = c + 1) + b-- && --brake132 > 0) {
                bar;
            }
        }
        break;
    }
    break;
}

var a_1 = typeof a_2 == "function" && --_calls_ >= 0 && a_2(++a, a++ + (foo_2 && typeof foo_2.Infinity == "function" && --_calls_ >= 0 && foo_2.Infinity(1 === 1 ? a : b, "b"))), a_2 = (c = c + 1) + [ (c = c + 1) + (b && b.var), (c = c + 1) + (foo_2 = typeof foo === "special"), typeof bar == "function" && --_calls_ >= 0 && bar(a++ + void function la() {
    try {
        if (b = a) {
            switch (c = 1 + c, b >>= ("c" / -0 + ({} > [ , 0 ][1])) % (-1 == 38..toString() || "undefined" >> "a")) {
              case c = 1 + c, ("undefined" && this) % (-5 && 23..toString()) ^ 25 + 2 - !-0:
                ;
                break;

              default:
                ;

              case c = 1 + c, !("object" || "bar") === ((22 || "number") && -2 + 5):
                ;
                break;

              case c = 1 + c, (Infinity == ([ , 0 ].length === 2)) * (25 || [ , 0 ][1]) ^ (na && ({
                    done: na.undefined
                } = {
                    done: (-0 ?? -1) < (c = c + 1, "object")
                })):
                ;
                break;
            }
        } else {
            var ma = 5;
            do {
                c = 1 + c, (bar && (bar.set += -3 != 5)) < void "", ([ , 0 ][1] | 25) & "object" !== 0;
            } while ((c = 1 + c, (0 / "c" < ("bar" | {})) >> (1 <= 5 != (-2 && -5))) && --ma > 0);
        }
    } catch (pa) {}
    {
        var na = function qa(ra, sa) {
            c = 1 + c, (([ , 0 ][1] | -5) ^ ("foo", 1)) == ({} < 22, c = c + 1,
            [ , 0 ].length === 2);
        }((c = c + 1) + (b = (c = 1 + c, undefined >> NaN >= ("foo" !== "number") < (0 >= 2 || 4 ^ [ , 0 ].length === 2))), "bar");
    }
    c = c + 1;
    try {
        switch (--b + (c = 1 + c, (b /= (38..toString() ^ "undefined") - ([ , 0 ].length === 2,
        "b")) ^ (null >>> undefined) * (undefined || ""))) {
          case na && na.value:
            break;

          default:
          case (ta => {})(false):
          case --b + [ (c = 1 + c, (-5 >= "b" ^ Infinity >= 23..toString()) * ((-5 ?? []) != null > /[a2][^e]+$/)), (c = 1 + c,
            23..toString() === /[a2][^e]+$/ != ("number" ^ 0) ^ (null || 0) + (-1 << {})), (c = 1 + c,
            (c_2 && ([ c_2[(c = c + 1) + ("a" in [ ...[ (c = 1 + c, (-1 % 23..toString() + (b = -1 ^ 2)) * (void -2 * (5 >> "function"))) ], (c = 1 + c,
            (([ , 0 ].length === 2 && [ , 0 ][1]) == 2 / "a") - ((Infinity_2 && (Infinity_2.a = 5 ^ true)) !== ([ , 0 ].length === 2 != "number"))) ])] ] = [ "" < -5 || true != /[a2][^e]+$/ ])) | (b && (b[--b + void (((bar && (bar.done &&= {} === 24..toString())) !== -3 >> {}) - ((/[a2][^e]+$/ ^ {}) === ([ , 0 ][1],
            -5)))] += ([ , 0 ].length === 2) * 2 == (foo_2 = 24..toString() / "undefined")))), (c = 1 + c,
            "c" === "" ^ (c = c + 1, /[a2][^e]+$/) ^ "object" >>> 1 !== ({} ^ undefined)), (c = 1 + c,
            c = c + 1, delete 0 / (Number(0xdeadn << 16n | 0xbeefn) * {})) ].var:
            c = 1 + c, (bar = 4 > 0, 2 % 38..toString()) | (-3, 24..toString()) === 1 >> 25;
            break;
        }
    } catch (ua) {
        switch (c = 1 + c, (na && (na.get -= "" << Infinity)) != /[a2][^e]+$/ <= /[a2][^e]+$/ == (a_2 = (this - "number",
        2 === 0))) {
          case c = 1 + c, -(/[a2][^e]+$/ ^ [ , 0 ][1]) === ({} | {}) / ([] << "function"):
            ;
            break;

          case c = 1 + c, (na && (na.async = !"b" >> 5 ** 24..toString())) / ((3 !== null) > -1 >>> -0):
            ;
            break;

          case c = 1 + c, ("object" ^ 23..toString()) !== ([ , 0 ].length === 2) > -3 ^ (ua = void false >= (foo_2 && (foo_2[c = 1 + c,
            ([ , 0 ][1] / "c" >> (3 <= "undefined")) + (c = c + 1, 38..toString()) / (ua && (ua[c = 1 + c,
            ("foo" >>> 4) % (NaN & 22) ^ (-0 ?? /[a2][^e]+$/ ?? Infinity <= -5)] += {} + "bar"))] ^= false !== ([ , 0 ].length === 2)))):
            ;
            break;

          default:
            ;
        }
    } finally {
        c = 1 + c, na && (na[--b + (typeof bar != "unknown")] = -4 >>> "b" <= ("" && true) || (0 | "c") ^ (b && (b.NaN = [ , 0 ][1] % true)));
        {
            return;
            c = 1 + c, (b && (b.value += [ , 0 ][1] === -0 ?? ("foo" && 4))) != (c = c + 1,
            "") < 3 % -2;
        }
        {
            var oa = 5;
            L10081: do {
                c = 1 + c, (c = c + 1, "foo" != false) ** ((-0 ^ "b") <= ("b" | undefined));
            } while ((c = 1 + c, 0 >= -2 | [ , 0 ][1] ^ null && ("function" ^ -1) > (([ , 0 ].length === 2) > -3)) && --oa > 0);
        }
        {
            return;
            c = 1 + c, (-1 | "" || ("" || this)) + (("" != 38..toString()) << (4 > 22));
        }
    }
}(), 22, 38..toString()) ];

console.log(null, a, b, c, Infinity, NaN, undefined);
original result:
null 101 9 6 Infinity NaN undefined

uglified result:
null 101 undefined 6 Infinity NaN undefined

@alexlamsl
Copy link
Collaborator Author

// reduced test case (output will differ)


var _calls_ = 10, a = 100, b = 10, c = 0;






var Infinity_2 = ((--b) + ((((!([]))!=(this^"a")) + (("undefined">2)|(this<<"foo")))));
switch (((c = c + 1) + ("function"))) {
case (22):
{var c_2 = function f0(){





}
("function");}
if (((c = c + 1) + ([(c_2 && typeof c_2.b == "function" && --_calls_ >= 0 && c_2.b("foo"))].in)))for (var brake5 = 5; (!((((Infinity_2&=("foo",[]))^("number"==0x26.toString()))*((3^2)==(Infinity_2 && (Infinity_2.done=(25. ===""))))))) && brake5 > 0; --brake5)c = c + 1; else for (var brake7 = 5; (b + 1 - 0.1 - 0.1 - 0.1) && brake7 > 0; --brake7)for (var brake8 = 5; (--(b)) && brake8 > 0; --brake8){var brake9 = 5; do {((--b) + ([((-((c = c + 1, (22%23..toString())))))]));} while (((c = c + 1) + (((c_2=((~(0x26.toString()))^(this - (-2))))>>(("undefined">"function")>>([] - []))))) && --brake9 > 0);}
{var expr11 = (Infinity);  for (var key11 in expr11) {{var brake12 = 5; while ((a++ + ( ((delete ((((25. &({}))>=(NaN - 2)) + ((({})>=({}))===(Infinity_2+=(({})*23..toString())))))) || a || 3).toString() )) && --brake12 > 0){


(typeof f1 == "function" && --_calls_ >= 0 && f1(((--b) + ((-0)))));
}}}}

 break;

case (a++ + (delete b)):

 break;

case ((c = c + 1) + ("b")):
{var brake15 = 5; do {var foo_2 = (1 === 1 ? a : b);} while ((((c = c + 1) + (--/* ignore */b)) ? ((--b) + (({
})[(foo_2 && foo_2[(typeof f2 == "function" && --_calls_ >= 0 && f2())])])) : ((--b) + (foo_2 && typeof foo_2.b == "function" && --_calls_ >= 0 && foo_2.b()))) && --brake15 > 0);}
var Infinity_2 = (a++ + (Infinity_2 && typeof Infinity_2.async == "function" && --_calls_ >= 0 && Infinity_2.async((new function (Infinity){




this[((typeof Infinity_2_1 != "special"))]^=(((((("number"<"object")!==(23..toString()>true))<(foo_2^=(([,0][1]>>>"undefined"),("a"=="foo"))))|(((4>=(-0))==(22<"object")),((!(this))&&(3>>>"number"))))&&((((3^"bar")===(23..toString() - 24 .toString()))&((22||(-4))&(false&&"function"))) + (((foo_2|=(false&[]))^((-1)&"number"))||(foo_2 && (foo_2.get=((foo_2 && (foo_2[(c = 1 + c, ((("b"&3) + (c = c + 1, 23..toString()))>>((false>[])<("foo" + 24 .toString()))))]=([]!="")))&&("b"&"object"))))))),(((((4/4)!==(({})==="number"))<<(Infinity_2 && (Infinity_2[((c = c + 1) + (a++))]&&=((Infinity_2+=("bar"||"c")) + (null>true)))))>>>((c = c + 1, ((-4)^(-1))) - (("c"^false)^(({})|(-3)))))^(((( /[a2][^e]+$/ <4)|(24 .toString()!==[,0][1]))>=((null<<NaN)&(1>=24 .toString())))!=((("b"===({}))===("function"&undefined))>>((([,0].length === 2)^ /[a2][^e]+$/ )<<("object"!=25. ))))));
if ((({
c: ((--b) + (({}))),
})[((c = c + 1) + ([(c = 1 + c, ((Infinity && (Infinity[((c = c + 1) + (typeof f1 == "function" && --_calls_ >= 0 && f1()))]*=((c_2 && (c_2.b=(22<<25. )))<=(null&"a"))))===((c = c + 1, 2)!==(Infinity_2 && (Infinity_2.NaN=([]|"function")))))), (c = 1 + c, (((25. %null)<(([,0].length === 2)||25. )) + ((foo_2 && (foo_2.get=("function"<<"bar")))<((-1)%"b")))), (c = 1 + c, ((("object"|24 .toString())!==((-2)>(-4)))>=((2*null)>((-5)!=0x26.toString()))))]))])){var brake19 = 5; L10069: do {{var Infinity_2_2 = function f1(let_2){




;
}
();}} while (((c = c + 1) + (((c = 1 + c, (c_2 && (c_2.__proto__=(((void ((-2)))<=(NaN>>(-4)))&(!(((-42n).toString()>=0x26.toString()))))))) ? (c = 1 + c, (((Infinity_2=(Infinity^"foo"))*(false&"a")) - (Infinity_2 && (Infinity_2[(a++ + (b = a))]=(("a"==0)==(undefined<"undefined")))))) : (c = 1 + c, (((([,0].length === 2)!=25. )^("object"||null))>=((25. !=this)||("number"%"function"))))) ? ((((([,0].length === 2) + (-1))&(c = c + 1, "number"))==(([,0][1]<(-3))>>>((-2)!==false)))) : (typeof Infinity_2 == "function" && --_calls_ >= 0 && Infinity_2()))) && --brake19 > 0);} else {var foo_2 = function b_2(){




(c = 1 + c, (((([,0].length === 2)<[,0][1])||(+(null))) + ((false<=(-5))|("c",[]))));
(c = 1 + c, (((22!=null)*((-2)!=this))&((23..toString()/Infinity)==((-0)===[]))));
(c = 1 + c, ((( /[a2][^e]+$/ *[])>>>(void (false)))<=((0x26.toString()<<22)!=(1||(-5)))));

}
("c", "object");}

}(1))))), bar = (((("object"*(-1))<<(Infinity_2 && (Infinity_2[(c = 1 + c, (bar && (bar[(a++ + (a--))]=((c_2 && ([ c_2.next ] = [ ((undefined>>(-0))>>(Infinity>>>(-5))) ]))>>>(((-0)>>true)<(({})|2))))))]=("undefined"&&"object"))))!==(("c"*(-4))%((-1) - true))));
;

/* fall-through */

case ((c = c + 1) + (~a)):
{var b = function f2(arguments, foo_1){

class C0 {
Infinity = (--/* ignore */b);
}



{


{var undefined_1 = function f3(bar_1, bar_2, yield_2){




L10070: for (var brake29 = 5; (c = 1 + c, (((""&&0)!==(22===false))!=((foo_1 && ({ '': foo_1[(c = 1 + c, (bar&&=(((5 - 24 .toString())^(0x26.toString()>>>Number(0XDEADn << 16n | 0xbeefn)))>>(("a" + 22) + (5%true)))))] } = { '': ("b">4) }))<<("object">"c")))) && brake29 > 0; --brake29)(c = 1 + c, (((NaN&(-5))&(c = c + 1, 24 .toString()))%(( /[a2][^e]+$/ ^23..toString())===((-4)|(-1)))));
{var brake31 = 5; L10071: while ((c = 1 + c, ((("b"/Infinity)>=(({})!=="number"))>>>((c = c + 1, "a")<=("number"<=(-0))))) && --brake31 > 0)(c = 1 + c, ((("a"===[,0][1])^(([,0].length === 2)^"function"))&&((bar_1 && (bar_1[(c = 1 + c, (((([,0].length === 2)!=="foo"),(([,0].length === 2)<<2))&(-((3<<(-3))))))]=((-5)!==25. )))%((-4)!="bar"))));}
var await_1;

}
();}
{var brake34 = 5; do {{var expr35 = ((--b) + (typeof f3 == "function" && --_calls_ >= 0 && f3((c = 1 + c, (c_2**=(((c = c + 1, 0x26.toString())<("a"??(-4)))<<((2*24 .toString())>>>([]!==[]))))))));  for (var [ key35 ] in expr35) {{var brake36 = 5; while ((a++ + (Infinity_2)) && --brake36 > 0)/*3*/return;}}}} while ((a++ + (2 in [((c = c + 1) + ( ((c = 1 + c, ((("function">=this) + ([]>"a"))<<((undefined<<undefined)&&(([,0].length === 2)&"foo")))) || a || 3).toString() )), ((c = c + 1) + ([]))])) && --brake34 > 0);}
{var brake38 = 5; while ((a++) && --brake38 > 0){var brake39 = 5; L10072: do {{var brake40 = 5; do {{var brake41 = 5; L10073: while ((c = 1 + c, ((c = c + 1, ((-3)&([,0].length === 2)))&&((true<=[,0][1])!=(bar && (bar.c+=(24 .toString()!==1)))))) && --brake41 > 0)(c = 1 + c, (((undefined&"object")*(!([,0][1])))<=((24 .toString()>>"foo")>>(22!== /[a2][^e]+$/ ))));}} while ((a++) && --brake40 > 0);}} while (((--b) + (typeof foo_2 == "function" && --_calls_ >= 0 && foo_2())) && --brake39 > 0);}}
{var brake43 = 5; while (((--b) + (25.  in [])) && --brake43 > 0){


{var brake45 = 5; do {(c = 1 + c, (((void (0x26.toString()))>>>(foo_1 && (foo_1.var=(NaN===23..toString()))))>((22 + null)||(NaN&& /[a2][^e]+$/ ))));} while ((c = 1 + c, ((("b">>>3)%(1<null))/((({})&&"a"),(NaN,(-2))))) && --brake45 > 0);}
}}
}
{var a_2 = function f4(foo_1){





}
(this, ...("" + c_2));}

}
("object");}
if ((Infinity_2 && Infinity_2[([((bar && (bar.in+=(((23..toString()== /[a2][^e]+$/ )>(0>(-0)))/(-((NaN|25. ))))))), ([(b ||= a)][(a++ + (((c = c + 1) + ([((-0) in [(c = 1 + c, (((false??undefined)>>>((-1) - (-0))),((0x26.toString()^undefined)&(0x26.toString()<0))))]), ...("" + Infinity_2)][(a/* ignore */++)]))))])][((c = c + 1) + (-(((c_2 && (c_2.get+=((+((-5)))==("a"%0))))>(b && (b[(c_2)]+=(("undefined"&true)|(c = c + 1, "number"))))))))])]))([(+((((({})>>([3n][0] > 2))|("foo" + (-0)))&&((c = c + 1, ({}))*( /[a2][^e]+$/ >=1)))))][((--b) + (--(b)))]);
switch (((--b) + (({
...(((--b) + ("c"))),
})))) {
default:
try {c = c + 1; } catch (b_1) {


for (var brake53 = 5; (b = a) && brake53 > 0; --brake53)try {{var expr55 = ((c = c + 1) + (foo_2)); L10074:  for (let key55 in expr55) {c = 1 + c; var Infinity_2_2 = expr55[key55]; try {{var brake57 = 5; L10075: do {(c = 1 + c, (((1*5)>("function"<=undefined))*(~(((-4)<=(-3))))));} while ((c = 1 + c, ((!(([,0][1],0)))||(b+=(((-4)^(-4))|(undefined!=="bar"))))) && --brake57 > 0);} } catch (c_2) {


(c = 1 + c, ((((-3)&&({}))>=(true^25. ))||((Infinity - (-5))>(void ((-1))))));
(c = 1 + c, (Infinity_2 && (Infinity_2[((c = c + 1) + ((((!("a"))&(0x26.toString()* /[a2][^e]+$/ ))??(((-0)&&true)<=(({})==1)))))]*=((("undefined"=="c") - ("undefined">"undefined"))/((24 .toString()<=23..toString())===([,0][1]<"object"))))));
 }}} } finally {


L10076: for (var brake61 = 5; ((c = c + 1) + (b_1 && b_1[(c = 1 + c, (b_1 && (b_1[(({
length: (c = 1 + c, (((24 .toString()||undefined)||(!(null)))&((Infinity%23..toString())||( /[a2][^e]+$/ <=(-2))))),
}).var)]&=((("bar"/"") - (Infinity_2>>>=(25. !==(-5))))!==(b && (b.null=(("undefined">>>([,0].length === 2))&(false*25. ))))))))])) && brake61 > 0; --brake61){


;}
 }
 } finally {


for (var brake63 = 5; (a++ + (({
b: (b--),
})[((c = c + 1) + (b))])) && brake63 > 0; --brake63)switch ((a++ + (+b))) {
case ("a" in ({
"       ": (Infinity_2 && typeof Infinity_2.get == "function" && --_calls_ >= 0 && Infinity_2.get`${(c = 1 + c, ((("function"!=23..toString())==("bar"/"b"))&&(([] + true)%(Infinity??5))))}${(c = 1 + c, (((0x26.toString()||5)<=((-5)!==null))/((25. ||"number")<=("c"^""))))}`),
})):
switch ((b+=(c = 1 + c, (((false==0x26.toString())|("number"!== /[a2][^e]+$/ ))<<(("number">"object"),((-2)<=this)))))) {
default:
(c = 1 + c, (((4 + (-0))>("object"!=(-2)))===(("foo"??24 .toString())!==(([,0].length === 2)=="b"))));
(c = 1 + c, ((Infinity_2 && (Infinity_2[(b--)]|=((c = c + 1, "")<=(true=="bar"))))>>((false??5)&(0x26.toString(),"foo"))));
(c = 1 + c, ((((-3)>24 .toString())===(foo_2&=(undefined<<"foo")))<=((24 .toString() - "b")===("object"<"undefined"))));


case ((--b) + (b &= a)):
(c = 1 + c, (((c_2 && (c_2[(c = 1 + c, (((0x26.toString()>>"c")^(Infinity_2 && ([ Infinity_2[(c = 1 + c, ((( /[a2][^e]+$/ ==="foo"),(2??[]))!==(("a"||true)!==(delete ((-0))))))] ] = [ (true^"undefined") ])))<(Infinity_2=((22<"number")^(24 .toString()===2)))))]=(NaN%this)))<=("function">>undefined))!=(("foo"|0) + (0x26.toString()||[]))));

 break;

case (~((((c = c + 1, 25. ) - (undefined??null))<<((c = c + 1, "bar")>("undefined"**24 .toString()))))):
(c = 1 + c, ((((-5)<=Infinity)||((-3)^({})))<(([,0][1]<=true)*(this>=22))));
(c = 1 + c, (Infinity_2 && (Infinity_2[(a++)]-=(((0||undefined)==((-3) + "object"))<(("object"^0)&("undefined"||24 .toString()))))));

/* fall-through */

case (b--):
(c = 1 + c, (c = c + 1, ((this%"bar")<=(b && (b[(c = 1 + c, (((""!="b")>(25. %5)),((23..toString()!=="b")!==(23..toString()&(-0)))))]=(undefined||"undefined"))))));

 break;
}
switch (( /[abc4]/.test(((c = 1 + c, (((22&(-0))<=((-3)>="bar"))/((0===4)>=(22||([3n][0] > 2))))) || b || 5).toString()) )) {
case (a++ + (({
in: (c = 1 + c, (((0x26.toString()===0)^((-1)<=(-2)))==((c = c + 1, "object")>(Infinity_2+=(22,([,0].length === 2)))))),
c: (c = 1 + c, ((c_2^=((0===4)&&((-5)<(-2))))&&(!((c_2=(25. *"")))))),
}).length)):

 break;

case ((--b) + (Infinity_2)):
(c = 1 + c, (Infinity_2 && (Infinity_2.done=(((0x26.toString()==="b")^(Infinity_2 && ({ 0: Infinity_2.done } = { 0: (NaN&1) })))^((undefined*"b") - ((-1)!==this))))));

 break;

case ((c = c + 1) + (24 .toString())):
(c = 1 + c, (((([,0].length === 2)*0x26.toString())*(5<Infinity))<<(((-2)>"b")!==( /[a2][^e]+$/ ===(-3)))));

 break;

case (1 === 1 ? a : b):
(c = 1 + c, (((false<<(-0))<(({}) - (-4)))**((c_2 && (c_2[(c = 1 + c, (((c_2 && (c_2[(c = 1 + c, (bar && (bar[(a++ + (Infinity_2))]=(((25. >>>3)>(24 .toString()==4))*((Infinity_2**=( /[a2][^e]+$/ ??22))*("foo"!=this))))))]+=(3 - (-3))))>(2<""))>>>(("bar"??[])^(c = c + 1, ({})))))]+=(Number(0XDEADn << 16n | 0xbeefn)%23..toString())))<(4==({})))));

 break;
}
(a++ + (Infinity_2 && Infinity_2.__proto__));

 break;

default:


case ([(({
get: (c = 1 + c, ((void (("c" - (-0))))>((3>"foo")>>(3&&false)))),
})[(c = 1 + c, (((this|5)&(!("object")))===((undefined||false)/([]<=([,0].length === 2)))))]), ( ((c = 1 + c, (((c = c + 1, "function")<(({})^24 .toString()))!==(((-3)!==2)^(5&&this)))) || 5).toString()[(c = 1 + c, (((23..toString()>=Infinity)/(NaN==[,0][1]))<=((bar && (bar[(c = 1 + c, ((("bar"/"object")<=( /[a2][^e]+$/ >>([,0].length === 2)))*(Infinity_2 && (Infinity_2.var+=((bar=("bar"===undefined))&&([,0][1]%([,0].length === 2)))))))]=(23..toString()<"foo")))<(24 .toString()/"bar"))))] ), ((c = c + 1) + (a/* ignore */++))].done):
{


}
{var a_1 = function f5(){




;
}
("undefined", "function", 24 .toString());}
c = c + 1;

 break;

case ((--b) + ( ((!b) || 1).toString()[(true)] )):
try {(c = 1 + c, (((c = c + 1, false)^(NaN<<(-2)))!=(c = c + 1, (false - null)))); } catch (await) {


(c = 1 + c, ((foo_2 && (foo_2[(a++ + ( /[abc4]/.test(((c = 1 + c, (bar && (bar.async<<=((("a"%"undefined")<(b && (b.in&&=(NaN<<22))))||((NaN/"object")<=((-1)^(-5))))))) || b || 5).toString()) ))]&=(("a">>[])|(25. <<""))))&((bar && (bar.a-=(23..toString()??Infinity)))===(4==(-3)))));
 }
;

 break;
}
c = c + 1;
 }


case ((--b) + (typeof f4 == "function" && --_calls_ >= 0 && f4("function", (-5), ((--b) + (foo_2 && typeof foo_2.next == "function" && --_calls_ >= 0 && ((c_2), foo_2.next)(5, ((--b) + (b)), 1)))))):
L10077: for (var brake86 = 5; (void function yield_1(){




;
var async;
{var brake89 = 5; do {{var brake90 = 5; L10078: while ((((--b) + (!a)) ? ((c = c + 1) + ((c = 1 + c, (((2>>>"function")/((-0)/undefined))<<((25. >"c") - (null===(-2))))))) : (a++ + (--(b)))) && --brake90 > 0){var brake91 = 5; while ((function yield_1(){




;
}) && --brake91 > 0){ /*2*/ return
(c = 1 + c, (((5%"object") - (5<=(-0)))%((0x26.toString()||(-1)) + ((-5)>=4))))}}}} while (([((--b) + (b++)), (typeof f6 == "function" && --_calls_ >= 0 && f6(NaN))][(a++ + (({
a: (c = 1 + c, ((((-1)<<"bar")<<(23..toString() - (-2)))>=(("object"&&3)||("number"%([,0].length === 2))))),
}).b))]) && --brake89 > 0);}
;
try {for (var brake95 = 5; (({}) in []) && brake95 > 0; --brake95){ return ((--b) + (--(b)))} } catch (c_2) { class C1 {
#foo = ((typeof a_2 == "string"));
3(b_2, await_1){





this.set=((c = c + 1, (Object.isExtensible(b) && (b[(c = 1 + c, ((Infinity_2+=((foo_2=(0x26.toString()!==false))^([,0][1]*Infinity)))&(( /[a2][^e]+$/ <(-2))<=(25. ===[,0][1]))))]=(true>=(-3)))))^(c = c + 1, ("b"!==1)));
this.a=(((5>>undefined)|((-3)<<5))<((5|[,0][1])*(this||"b")));
;

}
}



{var brake98 = 5; L10079: do {try {(c = 1 + c, ((((-5)===0)*((-4)* /[a2][^e]+$/ ))&(("">>2),(0x26.toString()<2)))); } catch (c_2) {


; } finally {


; }} while ((({
get: (c = 1 + c, (((22>Infinity)||(c_2 && (c_2[(c = 1 + c, ((("undefined"==false)/("object", /[a2][^e]+$/ ))<(([,0][1]||5)/(true!==(-4)))))]&=(1!==false))))*((c_2/=(25. &NaN))!=(Infinity_2 && (Infinity_2.var=(3%3)))))),
}).next) && --brake98 > 0);}
{var expr101 = ((--b) + (b /= a));  for (var key101 in expr101) {c = 1 + c; var undefined_2 = expr101[key101]; ;}}
var yield_1;
 } finally {


{


}
for (var brake105 = 5; (a++ + ((function b_1(){




;
}))) && brake105 > 0; --brake105){var brake106 = 5; while ((c = 1 + c, ((c = c + 1, ("object" - 22))||((this!=(-3))&(NaN>="")))) && --brake106 > 0)(c = 1 + c, (b && (b.Infinity=(((0x26.toString()|null)>("bar">>>(-1)))!==(-(((-4)<(-5))))))));}
var b_2 = (typeof f4 == "function" && --_calls_ >= 0 && f4((c = 1 + c, (((2^([,0].length === 2))!==(c = c + 1, "undefined"))>>>(("bar" - "object")!=(a_1 && (a_1[(c = 1 + c, (Infinity_2 && (Infinity_2[((typeof ((--b) + (a/* ignore */++))))]=(((false*(-5))&("" - true))??((!("c"))&&(true>=24 .toString()))))))]&=("c"<=2)))))), 3,)), a_1 = ((typeof (c = 1 + c, (void (((undefined!=5)<<(22,(-4))))))));
{var brake109 = 5; do {(c = 1 + c, ((-((NaN%([,0].length === 2))))==(("number" + 1)|(c = c + 1, "bar"))));} while (((c = c + 1) + (0 in ({
var: (c = 1 + c, (((5||25. )??(true<<(-0)))!==((2||(-2))>=(24 .toString()==="c")))),
"-2": (c = 1 + c, ((Infinity_2 && (Infinity_2[([(c = 1 + c, (~((("number"*23..toString()) - ("b"??Infinity))))), (c = 1 + c, (((""<(-0))&&(true==true))/((false,24 .toString())>>>(yield_1 && (yield_1.var-=(false>>(-4)))))))])]+=((23..toString() - "a")&&(""|"function"))))%(([,0][1]==(-1))%((-5)**([,0].length === 2))))),
null: (c = 1 + c, (((yield_1 && (yield_1.NaN/=(22>>>NaN))),(c_2 && (c_2[(c = 1 + c, (((([,0].length === 2)==Infinity)===((-3)|4))*(("bar">>"function")!==(4*"foo"))))]-=("a">>"object"))))<(("object"<<({}))%("c"!==(-2))))),
}))) && --brake109 > 0);}
var yield_1 = (NaN);
 }

}()) && brake86 > 0; --brake86){var bar = function f6(bar_2, foo){





}
((a++ + (b += a)), (-5), ((c = c + 1) + (b)));}

 break;

case (5 in [(b ^= a)]):
{


try {if (( /[abc4]/.test(((a++ + (-(((((-2)/"")&((-1)*[,0][1]))!=((2|| /[a2][^e]+$/ )??(22=="object")))))) || b || 5).toString()) )){var brake116 = 5; while ((a++ + (b + 1 - 0.1 - 0.1 - 0.1)) && --brake116 > 0)switch (((c = c + 1) + ("foo"))) {
case (a++ + (({
static: (c = 1 + c, (Infinity_2=(((Infinity_2 && (Infinity_2[(c = 1 + c, ((((-4)>=2)==("c"^"b")) + ((~("number"))<(1<<this))))]=(23..toString() + 5)))&("number"===null))!==(([,0][1]^false)==(Number(0XDEADn << 16n | 0xbeefn)>=(-42n).toString()))))),
}).static)):
(c = 1 + c, (((4^"a")&&(23..toString()<"b"))||(("foo"||NaN)>=([]|3))));
(c = 1 + c, (((b && (b.b/=("object",(-5))))===(foo_2=(NaN<=(-0))))<=((2>=null)&&((-5)<"foo"))));
(c = 1 + c, ((((-5)|(-4))==(Infinity_2=(this!=="number"))) - ((NaN===this)<(foo_2 && (foo_2.NaN=("function"^[]))))));

 break;

case ((--b) + ( /[abc4]/.test(((c = 1 + c, (((3%false)==(foo_2=([,0][1]& /[a2][^e]+$/ )))/(c = c + 1, (({})&({}))))) || b || 5).toString()) )):
(c = 1 + c, ((c_2 && (c_2.get+=(("foo"|0x26.toString())??(Infinity_2 && (Infinity_2.b>>>=( /[a2][^e]+$/ >(!0o644n)))))))!=((25. ||"")<(5<"foo"))));
(c = 1 + c, ((("function"<1)>(23..toString()*Infinity)) + (!((([,0].length === 2)===false)))));

 break;

default:
(c = 1 + c, ((c = c + 1, (c = c + 1, "b"))^(((-3)>=NaN)==(null<2))));
(c = 1 + c, (((2|25. )<<( /[a2][^e]+$/ *"number"))<<(("b"|23..toString()),((-1)>>>undefined))));
(c = 1 + c, (c = c + 1, (("a"&&3)>=(bar && (bar.var&=(NaN*1))))));


case (a++ + (({
in: (c = 1 + c, (((c_2 && (c_2[(c = 1 + c, (((true=="c")<(0!=(-1)))??(("b"<22)<<(foo_2=(Infinity^"foo")))))]+=((-4)%"a")))/(c = c + 1, 3))**(("c"||"c")>>>((-0) + null)))),
"-2": (c = 1 + c, ((("number"<<5) - (22===true))*((c = c + 1, "number")&&(void (5))))),
})[(c = 1 + c, (c_2=(((Infinity>>"b")>>>("foo"<"a")) - (((-1)/"function"),((-5)>=(-2))))))])):
(c = 1 + c, (((c_2 && (c_2[(c = 1 + c, ((("c"!=([,0].length === 2)),(4&0x26.toString())) - ((22 + 24 .toString())*((-4)<=23..toString()))))]=(null&&null)))===(2>=true))^((foo_2 && (foo_2.Infinity+=("foo"??true)))??(b=(NaN&"bar")))));

 break;
}} else ((c = c + 1) + (0 === 1 ? a : b)); } catch (c_2_2) {


 } finally {


 }
}

 break;

case (a++ + (typeof bar == "function" && --_calls_ >= 0 && bar("function"))):
{var brake128 = 5; while (((c = c + 1) + ( /[abc4]/g.exec((((c = c + 1) + (foo_2)) || b || 5).toString()) )) && --brake128 > 0)L10080: for (var brake129 = 5; ((--b) + (((bar && (bar[(b+=(c = 1 + c, (((undefined - (-3))%("function"*({})))<<((foo_2=([]^this))>=(2 + true)))))]??=((false==1)^(c_2=("object"?? /[a2][^e]+$/ )))))>(((-5)|"bar")||(true%(-42n).toString()))))) && brake129 > 0; --brake129)continue;}
c = c + 1;
{var brake132 = 5; while (((c = c + 1) + (b--)) && --brake132 > 0)(bar);}

 break;
}

 break;
}
var a_1 = (typeof a_2 == "function" && --_calls_ >= 0 && a_2((++/* ignore */a), (a++ + (foo_2 && typeof foo_2.Infinity == "function" && --_calls_ >= 0 && foo_2.Infinity((1 === 1 ? a : b), "b"))))), a_2 = ((c = c + 1) + ([((c = c + 1) + (b && b.var)), ((c = c + 1) + (foo_2=((typeof foo === "special")))), (typeof bar == "function" && --_calls_ >= 0 && bar((a++ + ((void function c_2_2(){




;
try {if ((b = a))switch ((c = 1 + c, (b>>=((("c"/(-0)) + (({})>[,0][1]))%(((-1)==0x26.toString())||("undefined">>"a")))))) {
case (c = 1 + c, ((("undefined"&&this)%((-5)&&23..toString()))^((25.  + 2) - (!((-0)))))):
;
 break;

default:
;

case (c = 1 + c, ((!(("object"||"bar")))===((22||"number")&&((-2) + 5)))):
;
 break;

case (c = 1 + c, (((Infinity==([,0].length === 2))*(25. ||[,0][1]))^(a_1 && ({ done: a_1.undefined } = { done: (((-0)??(-1))<(c = c + 1, "object")) })))):
;
 break;
} else {var brake139 = 5; do {(c = 1 + c, (((bar && (bar.set+=((-3)!=5)))<(void (""))),(([,0][1]|25. )&("object"!==0))));} while ((c = 1 + c, (((0/"c")<("bar"|({})))>>((1<=5)!=((-2)&&(-5))))) && --brake139 > 0);} } catch (Infinity_2) {


 }
{var a_1 = function f7(Infinity_2_2, Infinity_2_1,){




(c = 1 + c, ((([,0][1]|(-5))^("foo",1))==((({})<22),(c = c + 1, ([,0].length === 2)))));

}
(((c = c + 1) + (b=(c = 1 + c, (((undefined>>NaN)>=("foo"!=="number"))<((0>=2)||(4^([,0].length === 2))))))), "bar");}
c = c + 1;
try {switch (((--b) + ((c = 1 + c, ((b/=((0x26.toString()^"undefined") - (([,0].length === 2),"b")))^((null>>>undefined)*(undefined||""))))))) {
case (a_1 && a_1.value):

 break;

default:


case (((a_2) => {




;
})(false,)):

/* fall-through */

case ((--b) + ([(c = 1 + c, ((((-5)>="b")^(Infinity>=23..toString()))*(((-5)??[])!=(null> /[a2][^e]+$/ )))), (c = 1 + c, (((23..toString()=== /[a2][^e]+$/ )!=("number"^0))^((null||0) + ((-1)<<({}))))), (c = 1 + c, ((c_2 && ([ c_2[((c = c + 1) + ("a" in [...[(c = 1 + c, ((((-1)%23..toString()) + (b=((-1)^2)))*((void ((-2)))*(5>>"function"))))], (c = 1 + c, (((([,0].length === 2)&&[,0][1])==(2/"a")) - ((Infinity_2 && (Infinity_2.a=(5^true)))!==(([,0].length === 2)!="number"))))]))] ] = [ ((""<(-5))||(true!= /[a2][^e]+$/ )) ]))|(b && (b[((--b) + (void ((((bar && (bar.done&&=(({})===24 .toString())))!==((-3)>>({}))) - (( /[a2][^e]+$/ ^({}))===([,0][1],(-5)))))))]+=((([,0].length === 2)*2)==(foo_2=(24 .toString()/"undefined"))))))), (c = 1 + c, ((("c"==="")^(c = c + 1,  /[a2][^e]+$/ ))^(("object">>>1)!==(({})^undefined)))), (c = 1 + c, (c = c + 1, ((delete (0))/(Number(0XDEADn << 16n | 0xbeefn)*({})))))].var)):
(c = 1 + c, (((bar=(4>0)),(2%0x26.toString()))|(((-3),24 .toString())===(1>>25. ))));

 break;
} } catch (bar) {


switch ((c = 1 + c, (((a_1 && (a_1.get-=(""<<Infinity)))!=( /[a2][^e]+$/ <= /[a2][^e]+$/ ))==(a_2=((this - "number"),(2===0)))))) {
case (c = 1 + c, ((-(( /[a2][^e]+$/ ^[,0][1])))===((({})|({}))/([]<<"function")))):
;
 break;

case (c = 1 + c, ((a_1 && (a_1.async=((!("b"))>>(5**24 .toString()))))/((3!==null)>((-1)>>>(-0))))):
;
 break;

case (c = 1 + c, ((("object"^23..toString())!==(([,0].length === 2)>(-3)))^(bar=((void (false))>=(foo_2 && (foo_2[(c = 1 + c, ((([,0][1]/"c")>>(3<="undefined")) + ((c = c + 1, 0x26.toString())/(bar && (bar[(c = 1 + c, ((("foo">>>4)%(NaN&22))^(((-0)?? /[a2][^e]+$/ )??(Infinity<=(-5)))))]+=(({}) + "bar"))))))]^=(false!==([,0].length === 2)))))))):
;
 break;

default:
;
}
 } finally {


(c = 1 + c, (a_1 && (a_1[((--b) + ((typeof bar != "unknown")))]=((((-4)>>>"b")<=(""&&true))||((0|"c")^(b && (b.NaN=([,0][1]%true))))))));
{ /*2*/ return
(c = 1 + c, ((b && (b.value+=(([,0][1]===(-0))??("foo"&&4))))!=((c = c + 1, "")<(3%(-2)))))}
{var brake150 = 5; L10081: do {(c = 1 + c, ((c = c + 1, ("foo"!=false))**(((-0)^"b")<=("b"|undefined))));} while ((c = 1 + c, (((0>=(-2))|([,0][1]^null))&&(("function"^(-1))>(([,0].length === 2)>(-3))))) && --brake150 > 0);}
{ /*2*/ return
(c = 1 + c, ((((-1)|"")||(""||this)) + ((""!=0x26.toString())<<(4>22))))}
 }

}()))), 22, 0x26.toString()))]));

console.log(null, a, b, c, Infinity, NaN, undefined);
// output: null 101 9 6 Infinity NaN undefined
//
// minify: null 101 undefined 6 Infinity NaN undefined
//
// options: {
//   "compress": false,
//   "mangle": false,
//   "module": false,
//   "output": {
//     "beautify": true,
//     "braces": true,
//     "v8": true
//   },
//   "rename": true,
//   "validate": true
// }
minify(options):
{
  "compress": false,
  "mangle": false,
  "module": false,
  "output": {
    "beautify": true,
    "braces": true,
    "v8": true
  },
  "rename": true
}

@alexlamsl
Copy link
Collaborator Author

@kzc this one reproduces on Node.js v18.8.0 but not on v16.17.0 − that whole v18 has been a complete mess (none of my reported issues have been fixed, and apparently it's now in LTS).

I shall leave this as an exercise for the reader 😉

@kzc
Copy link
Contributor

kzc commented Nov 25, 2022

Is this a V8 or NodeJS issue? Can it be repro'd on latest Chrome?

Have you ever tried uglify on https://bun.sh ? It uses the JavaScriptCore engine.

@alexlamsl
Copy link
Collaborator Author

Firefox 103 & Chrome 103 (🤨) both do not reproduce this failure.

bun.sh fails to run on macOS:

~$ echo 'console.log(42)' | bun
dyld: Symbol not found: _ureldatefmt_format
  Referenced from: /.bun/bin/bun
  Expected in: /usr/lib/libicucore.A.dylib
 in /.bun/bin/bun
Trace/BPT trap: 5

@kzc
Copy link
Contributor

kzc commented Nov 28, 2022

Looks like bun needs macos 11 to run...

$ otool -l bun-darwin-x64/bun | egrep -A 4 'LC_BUILD_VERSION|LC_VERSION'
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform 1
       sdk 11.0
     minos 11.0

despite specifying macos 10.14 in the makefile for x64:

https://github.com/oven-sh/bun/blob/51d0c3b79f63e5ca1965cb5280c58fc0a9bc4f73/Makefile#L33-L36

Never mind.

@alexlamsl
Copy link
Collaborator Author

@kzc since bun looks somewhat promising, I decided to bite the bullet and installed Windows Subsystem for Linux to give it a go:

~$ bun run test.js


error: Cannot use "yield" or "await" here.

try {(c = 1 + c, (((c = c + 1, false)^(NaN<<(-2)))!=(c = c + 1, (false - null)))); } catch (await) {
                                                                                            ^
/test.js:217:93 12249


error: Declarations with the name arguments cannot be used with esm due to strict mode

{var b = function f2(arguments, foo_1){
                     ^
/test.js:71:22 4339

Looks like it's even less backward-compatible than v8, to the point of arguably non-compliance.

@alexlamsl
Copy link
Collaborator Author

I've also looked into adding bun to CI testing, but will have to at least wait until child_process is available.

@kzc
Copy link
Contributor

kzc commented Nov 28, 2022

I suspect since bun uses JavascriptCore, designed primarily for Safari, it relies on the most recent versions of macos.

It will probably take a year or two for bun to reach feature parity with NodeJS - or be able to run uglify.

@alexlamsl
Copy link
Collaborator Author

It will probably take a year or two for bun to reach feature parity with NodeJS - or be able to run uglify.

Right you are:

UglifyJS$ bin/uglifyjs
292 |     paths.forEach(function(name) {
293 |         files[convert_path(name)] = read_file(name);
294 |     });
295 |     run();
296 | } else {
297 |     var timerId = process.stdin.isTTY && process.argv.length < 3 && setTimeout(function() {
                      ^
TypeError: undefined is not an object (evaluating 'process.stdin.isTTY')
      at UglifyJS/bin/uglifyjs:297:18
error "uglifyjs" exited with 1 status

@alexlamsl
Copy link
Collaborator Author

FWIW the following patch enables bin/uglifyjs to work most of the time:

diff --git a/bin/uglifyjs b/bin/uglifyjs
index a2a02575..59d4f3bc 100755
--- a/bin/uglifyjs
+++ b/bin/uglifyjs
@@ -1,4 +1,4 @@
-#! /usr/bin/env node
+#! /usr/bin/env bun
 // -*- js -*-

 "use strict";
diff --git a/tools/tty.js b/tools/tty.js
index 395c48ec..4a65d185 100644
--- a/tools/tty.js
+++ b/tools/tty.js
@@ -1,5 +1,5 @@
 // workaround for tty output truncation on Node.js
-try {
+if (process.stdout) try {
     // prevent buffer overflow and other asynchronous bugs
     process.stdout._handle.setBlocking(true);
     process.stderr._handle.setBlocking(true);
@@ -19,4 +19,50 @@ try {
         });
         throw exit;
     };
+} else {
+    var events = {
+        data: [],
+        end: [],
+    };
+    process.stdin = {
+        on: function(name, fn) {
+            events[name].push(fn);
+            return this;
+        },
+        once: function(name, fn) {
+            var fns = events[name];
+            fns.push(function() {
+                fn.apply(null, arguments);
+                fns[fns.indexOf(fn)] = function() {};
+            });
+            return this;
+        },
+        resume: function() {
+            Bun.stdin.stream().getReader().read().then(function(input) {
+                var data = Buffer.from(input.value).toString();
+                events.data.forEach(function(fn) {
+                    fn(data);
+                });
+                events.end.forEach(function(fn) {
+                    fn();
+                });
+                return this;
+            });
+        },
+        setEncoding: function() {
+            return this;
+        },
+    };
+    var SIZE = 4096;
+    function makeWriteStream(blob) {
+        return {
+            write: function(str) {
+                for (var i = 0, len = str.length; i < len; i += SIZE) {
+                    Bun.write(blob, str.slice(i, i + SIZE));
+                }
+            },
+        };
+    }
+    process.stderr = makeWriteStream(Bun.stderr);
+    process.stdout = makeWriteStream(Bun.stdout);
 }
$ bin/uglifyjs --bad
ERROR: invalid option --bad
error "uglifyjs" exited with 1 status
$ bin/uglifyjs -V
uglify-js 3.17.4
$ bin/uglifyjs
<failed to wait, just exits>
$ echo 'console.log(6*7)' | bin/uglifyjs -c
console.log(42);
$ bin/uglifyjs --self -mc
<...>,c.TreeTransformer=Bt,c.TreeWalker=Le;

@kzc
Copy link
Contributor

kzc commented Nov 30, 2022

FWIW the following patch enables bin/uglifyjs to work most of the time:

Good stuff. If there's no downside to NodeJS operation, is that something you want to commit?

Just curious - what sort of timings do you get with bun relative to latest NodeJS?

@alexlamsl
Copy link
Collaborator Author

is that something you want to commit?

I am generally interested in making (the same) code work on the widest possible range of platforms, so this is in exploration phase 😉

what sort of timings do you get with bun relative to latest NodeJS?

According to bin/uglifyjs --self -mc --timings:

Platform Version Timings
bun 0.2.2 4.54 ± 0.15 s
node 19.2.0 4.20 ± 0.16 s

@alexlamsl
Copy link
Collaborator Author

with bun@0.3.0 the patch is now fairly minimal:

diff --git a/bin/uglifyjs b/bin/uglifyjs
index a2a02575..d055e34f 100755
--- a/bin/uglifyjs
+++ b/bin/uglifyjs
@@ -301,9 +301,11 @@ if (specified["in-situ"]) {
     process.stdin.setEncoding("utf8");
     process.stdin.once("data", function() {
         clearTimeout(timerId);
-    }).on("data", function(chunk) {
+    });
+    process.stdin.on("data", function(chunk) {
         chunks.push(chunk);
-    }).on("end", function() {
+    });
+    process.stdin.on("end", function() {
         files = { STDIN: chunks.join("") };
         run();
     });
diff --git a/tools/tty.js b/tools/tty.js
index 395c48ec..d219581c 100644
--- a/tools/tty.js
+++ b/tools/tty.js
@@ -6,7 +6,7 @@ try {
 } catch (e) {
     // ensure output buffers are flushed before process termination
     var exit = process.exit;
-    process.exit = function() {
+    if ("bufferSize" in process.stdout) process.exit = function() {
         var args = [].slice.call(arguments);
         process.once("uncaughtException", function() {
             (function callback() {

A bit of a surprise why their EventEmitter API doesn't chain, but otherwise even stdin seems to work correctly now:

$ bin/uglifyjs -bc <<EOF
> console.log(6*7)
> EOF
console.log(42);
$

@alexlamsl
Copy link
Collaborator Author

Although I kind of expect this to work but it doesn't:

$ bin/uglifyjs
Waiting for input... (use `--help` to print usage information)
console.log("I typed this");
$

i.e. just exits silently without any data or end events fired on process.stdin

@alexlamsl
Copy link
Collaborator Author

With oven-sh/bun@780f7de and 797184f, no further patching is required...

... except for the shebang − on a system with both bun and node installed, I found that even running bun bin/uglifyjs would somehow result in Node.js being executed instead (found while debugging the stdin TTY issue).

Any suggestions on how to proceed? 🤔

@Jarred-Sumner
Copy link

Jarred-Sumner commented Dec 14, 2022

... except for the shebang − on a system with both bun and node installed, I found that even running bun bin/uglifyjs would somehow result in Node.js being executed instead (found while debugging the stdin TTY issue).

Rationale: people use bun run like npm run and Bun's node.js compatibility isn't good enough yet for us to disable respecting the shebang line, so running a file with Bun will actually not run it in Bun if there is a shebang and the file doesn't end with a JS-like extension.

We need a better answer to this though. Maybe something involving "engines" field in package.json and then another bin entry with with some convention like -bun

Platform Version Timings
bun 0.2.2 4.54 ± 0.15 s
node 19.2.0 4.20 ± 0.16 s

JavaScriptCore tracks UglifyJS performance in their JetStream benchmark. The problem is an inline cache issue which will take a lot of engineering work to address

image

Re: this snippet

error: Cannot use "yield" or "await" here.

try {(c = 1 + c, (((c = c + 1, false)^(NaN<<(-2)))!=(c = c + 1, (false - null)))); } catch (await) {
                                                                                            ^
/test.js:217:93 12249

This is a transpiler bug. Bun runs Bun's transpiler on every file (including node_modules).

error: Declarations with the name arguments cannot be used with esm due to strict mode

{var b = function f2(arguments, foo_1){
                     ^
/test.js:71:22 4339

Bun is currently ESM-only, which sounds like a huge compatibility problem but because Bun automatically transpiles CommonJS -> ESM this tends to not be a big problem. There are issues with code that needs loose mode though

To hard-disable the transpiler you can either set BUN_DISABLE_TRANSPILER=1 or you could use eval

@alexlamsl
Copy link
Collaborator Author

Bun is currently ESM-only

AFAICT UglifyJS "production" code should run fine under ESM mode, as I think the last issue was using await as variable name in lib/parse.js

Our fuzzer will occasionally produce test code that causes run-time (or ESM-related compile-time) exceptions, and that's all a balancing act to maximise simplicity (such as it is) and effectiveness for testing purposes.

I think there's an await variable in test/ufuzz/index.js which would upset ESM mode, but if you are interested in retrofitting this for fuzzing bun give me a shout and I will see what I can do 😉

@alexlamsl
Copy link
Collaborator Author

JavaScriptCore tracks UglifyJS performance in their JetStream benchmark.

... and UglifyJS uses JetStream benchmark as part of functional testing 😏

@alexlamsl
Copy link
Collaborator Author

Rationale: people use bun run like npm run and Bun's node.js compatibility isn't good enough yet for us to disable respecting the shebang line

Understandable.

Perhaps a (temporary) flag that forces bun to take charge, especially replacing any mention of node inside "scripts" section of package.json would be nice − otherwise there is currently no way to try out bun without editting source files.

@kzc
Copy link
Contributor

kzc commented Feb 24, 2023

@Jarred-Sumner Is it possible to have bun run on macOS 10.14 Mojave x64?

$ cat test.js
console.log(42)

$ ./bun-darwin-x64/bun -v
0.5.7

$ ./bun-darwin-x64/bun test.js
dyld: lazy symbol binding failed: Symbol not found: _pthread_self_is_exiting_np
  Referenced from: /private/tmp/v0.5.7/./bun-darwin-x64/bun (which was built for Mac OS X 11.0)
  Expected in: /usr/lib/libSystem.B.dylib

dyld: Symbol not found: _pthread_self_is_exiting_np
  Referenced from: /private/tmp/v0.5.7/./bun-darwin-x64/bun (which was built for Mac OS X 11.0)
  Expected in: /usr/lib/libSystem.B.dylib

Killed: 9

It seems to be the intention in bun's Makefile to use DEFAULT_MIN_MACOS_VERSION = 10.14 for x64, but otool says different:

$ otool -l bun-darwin-x64/bun | egrep -A 4 'LC_BUILD_VERSION|LC_VERSION'
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform 1
       sdk 11.0
     minos 11.0

@kzc
Copy link
Contributor

kzc commented Feb 24, 2023

off topic... @alexlamsl noticed this project is dormant - is uglify done? Or is it being rewritten in zig perhaps?

@alexlamsl
Copy link
Collaborator Author

Not at all − just been busy with bun while letting those fuzzer reports pile up a little ;)

Next minor release I'm planning to have --module on by default, WDYT?

@kzc
Copy link
Contributor

kzc commented Feb 24, 2023

Next minor release I'm planning to have --module on by default, WDYT?

Good idea. It's what most people expect/want.

How do you like coding in zig?

Not at all − just been busy with bun while letting those fuzzer reports pile up a little ;)

fwiw, see oven-sh/bun#1266 (comment)

What platform do you use for bun?

@alexlamsl
Copy link
Collaborator Author

How do you like coding in zig?

It's interesting in its capability, though I wouldn't recommend it for anything mission-critical just yet 😅

While it has its fair share of odd corner cases, looks like the language features are developed/evolved in a centralised manner, and they do seem to move fast enough to smooth things out.

fwiw, see oven-sh/bun#1266 (comment)

Yeah I saw that - I develop primarily on Windows, though I do have Linux VMs to cover the rest of my needs. Never really used macOS beyond field testing, and my current 2014 rMBP is running macOS 10.11 I think, so too ancient to be considered useful for compilation tasks.

I think the bun team do own some M1 boxes which explains the level of macOS support (both its existence and lack thereof for older versions).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants