~600kFuzz
// original code
// (beautified)
var _calls_ = 10, a = 100, b = 10, c = 0;
function f0(foo_1, parseInt) {
function f1(foo_1, b_1) {
L22890: for (var brake1 = 5; !(b_1 && (b_1[+(([ , 0 ][1] == -5) + (true >= [ , 0 ][1]) & (0 - {}) % (1 + ""))] <<= (+3 & -2 === "undefined") != (-3 + 3) % ("function" > 23..toString()))) && brake1 > 0; --brake1) {
var b = a++ + (/[a2][^e]+$/ << this === (24..toString() & 22) !== ((false & 22) === (NaN == Infinity))), bar_2 = b--;
}
for (var brake3 = 5; --b + (b = a) && brake3 > 0; --brake3) {
var brake4 = 5;
do {
{
var brake5 = 5;
L22891: do {
{
var expr6 = (c = 1 + c, ({} > 25) + 25 % 23..toString() > (bar_2 = "" / 3 % (38..toString() + [ , 0 ][1])));
for (var key6 in expr6) {
c = 1 + c, (foo_1 && (foo_1.NaN = 38..toString() | 24..toString())) < -5 - null & (b_1 && (b_1[a++ + a--] = (false !== 5) / ("undefined" ^ 4)));
}
}
} while ((1 === 1 ? a : b) && --brake5 > 0);
}
} while (a++ + (typeof f2 == "function" && --_calls_ >= 0 && f2((c = 1 + c, ([ , 0 ][1] % "foo" <= (1 || Infinity)) << (b_1 += 1 > "" == Infinity << true)))) && --brake4 > 0);
}
}
var arguments_1 = f1((c = c + 1) + (foo_1 && foo_1[--b + (typeof f3 == "function" && --_calls_ >= 0 && f3((c = 1 + c,
c = c + 1, (/[a2][^e]+$/ || 38..toString()) <= ("function" == ([ , 0 ].length === 2)))))]), 22, 24..toString());
function f2(foo_2, Infinity, a) {
var arguments_1 = a++ + --b, foo_2_2 = (c = c + 1) + Infinity;
{
var Math_1 = function f3(foo_2, foo_1, foo_1_1) {
function f4(bar_1) {
}
var bar_1 = f4((c = 1 + c, (3 || 22, "function" % "foo") ^ this + "number" != (2 != 38..toString())));
function f5(bar) {
}
var a = f5();
}([ (c = 1 + c, (delete this ^ 23..toString() << 22) << ("number" & "function",
-1 !== "bar")) ], /[abc4]/.test(((c = 1 + c, (5 > -1) << (c = c + 1, []) & ("" << NaN & {} === [])) || b || 5).toString()));
}
}
function f6(NaN) {
{
var brake10 = 5;
while (a++ + 3 && --brake10 > 0) {
if (c = 1 + c, (-0 | /[a2][^e]+$/ | "number" ^ 23..toString()) * (("function" != {}) >= 5 * false)) {
c = 1 + c, ("foo" ^ 1) <= 4 - -3 || foo_1 && (foo_1.var ^= 23..toString() == "object" != "undefined" >>> undefined);
}
{
}
}
}
{
var expr15 = a++ + 5;
L22892: for (var key15 in expr15) {
{
if (c = 1 + c, c = c + 1, ([ , 0 ][1] ^ 24..toString()) != (arguments_1 && (arguments_1[(c = 1 + c,
(24..toString() + 24..toString() || 38..toString() & true) / ([ , 0 ].length === 2 != true | (arguments_1 && (arguments_1[(c = 1 + c,
(22 > -4 ^ true >> 38..toString()) >> (23..toString() && 22) - ("object" & -0))] <<= (-5,
[ , 0 ][1])))))] = 38..toString() % "object"))) {
c = 1 + c, (-0 || [] || ([ , 0 ].length === 2) <= /[a2][^e]+$/) < ({} + 5 > (-3 | "object"));
}
}
}
}
}
var b = f6();
function f7(bar, bar_1) {
c = c + 1;
for (var brake20 = 5; --b + foo_1 && brake20 > 0; --brake20) {
c = c + 1;
}
}
var b_1 = f7(null, -1);
function f8(arguments_1_1, arguments_1_1_2) {
{
var brake22 = 5;
L22893: while (function() {
switch (c = 1 + c, -0 >= 2 > [] % 0 ^ false % [] >>> (Infinity != "undefined")) {
default:
;
case c = 1 + c, ~(this * null) ^ ("number" | []) + (true <= 2):
;
break;
case c = 1 + c, true / 5 ^ ([ , 0 ][1] | "foo") | delete ("number" < 0):
;
break;
case c = 1 + c, (b_1 && (b_1[/[abc4]/.test(((c = 1 + c, (25 !== 3 || (null, this)) >= (-2 / "" > (foo_1 += ([ , 0 ].length === 2) * -5))) || b || 5).toString())] ^= [] % {} >= 5 % true)) << (24..toString() >> true & 3 * 38..toString()):
;
break;
}
var Math;
var foo_1_1 = (c = 1 + c, arguments_1_1_2 = "foo" + [ , 0 ][1] << (-4 >>> 5) ^ (24..toString() ^ "undefined" | [] / 24..toString()));
} && --brake22 > 0) {
L22894: {
}
}
}
{
var foo_1 = function f9(bar_2) {
{
}
{
}
}(--b + typeof (c = 1 + c, (/[a2][^e]+$/ != 5 || -3 & 0) == "foo" >> false < 22 << this), a++ + (foo_1 && foo_1.null), "object");
}
}
var NaN_1 = f8(--b + arguments_1, a++ + (--b + (typeof parseInt_2 === "function") || 6).toString()[(c = c + 1) + (foo_1 && foo_1[a++ + [ (c = 1 + c,
((c = c + 1, /[a2][^e]+$/) & 4 < "number") === "number" <= "function" <= 3 * ([ , 0 ].length === 2)), (c = 1 + c,
(2 < undefined) / (-2 % "bar") << ((-3 ^ undefined) <= (3 | this))), (c = 1 + c,
foo_1 && (foo_1[--b + b_1] = (arguments_1 ^= (-2 && Infinity) * (23..toString(),
"object")) * (-1 < "undefined" ^ (foo_1 /= true << 24..toString())))) ]])], --b + arguments_1);
}
var b_2 = f0(-0, false, [ , 0 ][1]);
console.log(null, a, b, c);
```js
// uglified code
// (beautified)
var _calls_ = 10, a = 100, b = 10, c = 0;
function f0(t) {
var n = function(t, n) {
for (var r = 5; (!n || !(n[+(1 & (0 - {}) % "1")] <<= 0 != 0 % ("function" > 23..toString()))) && r > 0; --r) {
var i = a++ + (/[a2][^e]+$/ << this == (22 & 24..toString()) != 0);
i--;
}
for (var g = 5; --i + (i = a) && g > 0; --g) {
var S = 5;
do {
var f = 5;
do {
var e = (c = 1 + c, ({} > 25) + 25 % 23..toString() > 0 % (38..toString() + 0));
for (var l in e) {
c = 1 + c, t && (t.NaN = 38..toString() | 24..toString()), n && (n[a++ + a--] = .25);
}
} while (a && --f > 0);
} while (a++ + (--_calls_ >= 0 && (c = 1 + c, n += !1, --o, c += 1, c = 1 + (c += 1),
23..toString(), /[abc4]/.test((c = 1 + c, !0 << (c += 1, []) & 0 & {} === [] || o || 5).toString()),
c = 1 + c, void 38..toString())) && --S > 0);
}
}((c += 1) + (t && t[--o + ("function" == typeof f3 && --_calls_ >= 0 && f3((c = 1 + c,
c += 1, /[a2][^e]+$/ <= ("function" == (2 === [ , 0 ].length)))))]), 22, 24..toString()), o = function() {
for (var t = 5; 3 + a++ && --t > 0; ) {
c = 1 + c, (0 | "number" ^ 23..toString()) * (("function" != {}) >= 0) && (c = 1 + c);
}
var o = 5 + a++;
for (var r in o) {
c = 1 + c, c += 1, (0 ^ 24..toString()) != (n && (n[(c = 1 + c, (24..toString() + 24..toString() || !0 & 38..toString()) / (2 === [ , 0 ].length != 1 | (n && (n[(c = 1 + c,
(!0 ^ !0 >> 38..toString()) >> (23..toString() && 22) - 0)] <<= 0))))] = 38..toString() % "object")) && (c = 1 + c);
}
}(), r = function() {
c += 1;
for (var n = 5; --o + t && n > 0; --n) {
c += 1;
}
}();
!function() {
for (var t = 5; function() {
switch (c = 1 + c, !1 > [] % 0 ^ !1 % [] >>> !0) {
default:
case c = 1 + c, ~(null * this) ^ ("number" | []) + !0:
case c = 1 + c, 1:
case c = 1 + c, (r && (r[/[abc4]/.test((c = 1 + c, !0 >= (-1 / 0 > (n += -5 * (2 === [ , 0 ].length))) || o || 5).toString())] ^= [] % {} >= 0)) << (24..toString() >> !0 & 3 * 38..toString()):
}
c = 1 + c, 24..toString(), 24..toString();
} && --t > 0; ) {}
var n = (--o, c = 1 + c, a++, void (n && n.null));
}(--o, (a++, (--o + ("function" == typeof parseInt_2) || 6).toString()[(c += 1) + (t && t[a++ + [ (c = 1 + c,
(!1 & (c += 1, /[a2][^e]+$/)) === !1 <= 3 * (2 === [ , 0 ].length)), (c = 1 + c,
NaN << (-3 <= (3 | this))), (c = 1 + c, t && (t[--o + r] = (n ^= 1 / 0 * (23..toString(),
"object")) * (!1 ^ (t /= !0 << 24..toString())))) ]])]), --o);
}
var b_2 = f0(-0, !1, 0);
console.log(null, a, b, c);
```js
original result:
null 118 10 67
uglified result:
null 118 10 72
minify(options):
{
"compress": {
"keep_fargs": false,
"passes": 100
}
}
Suspicious compress options:
collapse_vars
evaluate
inline
join_vars
passes
reduce_vars
side_effects
typeofs
unused
Possibly related:
// original code
// (beautified)
var _calls_ = 10, a = 100, b = 10, c = 0;
L67352: {
{
var brake2 = 5;
while (--b + {}.NaN && --brake2 > 0) {
switch (function() {
switch (--b + ((c = c + 1) + -0)) {
case a++ + a:
if (--b + /[abc4]/.test((((c = 1 + c, (a && (a[a++ + +((c = c + 1, 25, "number" - 3) == ((a = [ , 0 ].length === 2 | -2) ^ delete -2))] = true * ([ , 0 ].length === 2) == (-2 == /[a2][^e]+$/))) / ((null,
0) != (2, -5))) || 1).toString()[(c = 1 + c, (true != 38..toString()) << ([ , 0 ].length === 2 !== false) !== (false != [] === ([ , 0 ].length === 2) >= -0))] || b || 5).toString())) {
var brake6 = 5;
L67353: while (a && a.foo && --brake6 > 0) {
c = c + 1;
}
} else {
var expr8 = a++ + {}[(c = 1 + c, (c = c + 1, {} || /[a2][^e]+$/) > (NaN <= 3 && (a = -0 || this)))];
L67354: for (var key8 in expr8) {
c = 1 + c;
var b = expr8[key8];
{
var brake9 = 5;
do {
c = 1 + c, a && (a.Infinity -= (undefined == 4) * ([] == -0) >> (c = c + 1, [ , 0 ][1] || false));
} while ((c = 1 + c, (a && (a[(c = 1 + c, (4 || false) >= ("number" & 0) === (-3 != 38..toString() ^ -3 >> false))] = -5 >>> -5) && (a %= 1 >>> 23..toString())) & ("" ^ [ , 0 ][1]) == (3 !== -5)) && --brake9 > 0);
}
}
}
if (b = a) {
switch (typeof (c = 1 + c, a && (a[typeof f1 == "function" && --_calls_ >= 0 && f1([])] += (/[a2][^e]+$/ || {}) !== ([ , 0 ][1] & this)),
(-5 !== "undefined") + (-5 + 5))) {
default:
c = 1 + c, (-3 ^ /[a2][^e]+$/) >= "function" >>> "bar" === ((0 ^ 38..toString()) !== (c = c + 1,
22));
c = 1 + c, (a && (a.c += ({} >= Infinity) >>> (Infinity != "undefined"))) >= (("function" & 38..toString()) !== ([ , 0 ][1] | -1));
case undefined:
c = 1 + c, a && (a.b = 22 >> 3 < 22 % null != (a && (a.NaN >>>= undefined ^ -1)) <= (false & 1));
c = 1 + c, (1 << "undefined" >= void -4) >>> ((0 | NaN) ^ "foo" == this);
break;
case (c = c + 1) + a++:
c = 1 + c, ("object" === 0) + (undefined >>> {}) !== ((-1 | "function") == (a >>= NaN ^ 24..toString()));
break;
case a:
break;
}
}
break;
default:
case a++ + delete b:
{
var brake18 = 5;
do {
if (function() {
}()) {
var brake20 = 5;
while ((c = 1 + c, ({} - []) / (4 * -1) != (a = delete 3 << (([ , 0 ].length === 2) >> [ , 0 ][1]))) && --brake20 > 0) {
c = 1 + c, a += (24..toString() | true) << ("function" ^ -5) != 3 - 25 >> (-2, undefined);
}
} else {
var brake22 = 5;
do {
c = 1 + c, c = c + 1, "undefined" % 25 >= ("bar" > -1);
} while ((c = 1 + c, (c = c + 1, 22 >>> -0) || ("" < NaN || -3 >> -4)) && --brake22 > 0);
}
} while ({
var: (c = 1 + c, (a && (a.Infinity += ("undefined" << "bar", 23..toString() !== 22))) >= (this == 23..toString() !== (-3 && 4))),
NaN: (c = 1 + c, ((-4 == 1) - (a && (a.c = -1 - "function"))) / (([ , 0 ].length === 2) / false / (a = [ , 0 ].length === 2 & true))),
"-2": (c = 1 + c, 5 - "" >= (a && (a.Infinity = this && 3)) && 2 < -0 | 23..toString() * /[a2][^e]+$/),
null: (c = 1 + c, (2 === false) % (null % -5) ^ (null - "function", Infinity != 2)),
NaN: (c = 1 + c, +("foo" == 25) * ((false ^ 0) != (a && (a.b += 1 < "foo"))))
}[(c = c + 1) + {
Infinity: (c = 1 + c, ("function" * "number" == -1 < "function") + ("undefined" % "foo" - (4 ^ Infinity))),
set a(b_2) {
this.null = {} <= 24..toString();
}
}] && --brake18 > 0);
}
c = c + 1;
break;
case a++ + a++:
return --b;
L67355: {
c = 1 + c, (-0 < 4) % ("function" > -0) | (-5 & 23..toString()) != 22 / -3;
}
break;
}
}) {
case a:
[ a++ + (1 === 1 ? a : b), [ ((c = 1 + c, ("number" / 1 | "undefined" ^ -0) * ((3 || 24..toString()) && 5 < 2)) || 9).toString()[(c = 1 + c,
(-5 <= 4) >> (([ , 0 ].length === 2) << [ , 0 ][1]) ^ (a && (a.null += (true === 0) < (0 && ""))))], a++ + (c = 1 + c,
("foo" == [] !== /[a2][^e]+$/ > 38..toString()) <= (/[a2][^e]+$/ > -2 | -1 + 5)), [] ][--b + (b |= a)], (c = c + 1) + ++a, , ].NaN;
break;
case b <<= a:
{
var expr30 = [ foo_2 && foo_2.b ];
for (var key30 in expr30) {
c = 1 + c;
var foo_2 = expr30[key30];
L67356: for (var brake31 = 5; --b && brake31 > 0; --brake31) {
for (var brake32 = 5; typeof a_1 == "special" && brake32 > 0; --brake32) {
(c = c + 1) + {}.in;
}
}
}
}
try {
{
var brake35 = 5;
do {
try {
break;
} catch (foo_2_2) {
var Math_1;
{
var brake39 = 5;
do {
{
var brake40 = 5;
do {
c = 1 + c, true % 0 > (Math_1 && (Math_1.undefined = Infinity < 24..toString())) & this <= this <= (foo_2_2 && (foo_2_2[(c = 1 + c,
((22 | /[a2][^e]+$/) ^ "number" >>> []) < (1 >> [] <= ("bar" ^ 22)))] += Infinity - "number"));
} while ((c = 1 + c, c = c + 1, ({} & 3) !== Infinity >> "function") && --brake40 > 0);
}
} while (delete a && --brake39 > 0);
}
} finally {
for (var brake42 = 5; (false - [ , 0 ][1] & {} > 0) / (null < 0 !== ("function" && 5)) && brake42 > 0; --brake42) {
for (var brake43 = 5; (c = 1 + c, /[a2][^e]+$/ > -5 === {} < 24..toString() != (undefined + ([ , 0 ].length === 2) || this >= 22)) && brake43 > 0; --brake43) {
c = 1 + c, -(this >>> "foo"), 38..toString() / -4, 2 >= ([ , 0 ].length === 2);
}
}
{
var expr45 = ~(3 - 0 === ("foo" | -5) != ([] <= 3 != (Math_1 && (Math_1.a += Infinity * NaN))));
for (var key45 in expr45) {
c = 1 + c;
var undefined_1 = expr45[key45];
{
}
}
}
}
} while (b++ && --brake35 > 0);
}
} finally {
if (--b + delete ((undefined_1 && (undefined_1.undefined = -5 >= [ , 0 ][1])) + NaN * -0 || Math_1 && (Math_1.in = (22,
-4) + (-1 || "foo")))) {
try {
{
var brake49 = 5;
do {
c = 1 + c, (/[a2][^e]+$/ ^ this) === ([ , 0 ].length === 2 || null) && -(false !== /[a2][^e]+$/);
} while (--b + b++ && --brake49 > 0);
}
} catch (c) {
var b = (c = 1 + c, (c = c + 1, 3 | 25) >= (-3 || 38..toString()) * (5 + [ , 0 ][1])), c_1 = (c = 1 + c,
foo_2 && (foo_2[[ (c = 1 + c, (c = c + 1, c = c + 1, "object") ^ (24..toString() === "number" && [ , 0 ][1] | "foo")), (c = 1 + c,
25 - 22 + (25 >>> 22) << (undefined & 5) % ([ , 0 ][1] + "")), (c = 1 + c, 5 + 24..toString() > (5 || -4) <= (foo_2 && (foo_2[typeof f0 == "function" && --_calls_ >= 0 && f0()] >>>= (this - true) % ("" === 5)))), (c = 1 + c,
([] || {}) >= ("number" >= 25) || c_1 && (c_1[a++ + typeof undefined_1] = ("function" >= [ , 0 ][1]) << (false <= -5))), (c = 1 + c,
38..toString() % undefined ^ (-3, "object") && ([ , 0 ].length === 2 && -2) * (-4 - /[a2][^e]+$/)) ]] <<= ("undefined" === false && 24..toString() < /[a2][^e]+$/) >> ((0 && -4) < ("bar" > "number"))));
try {
c = 1 + c, (c_1 /= true >>> 23..toString()) % (c_1 |= Infinity <= [ , 0 ][1]) && -0 % 3 === (3,
false);
} finally {
}
} finally {
L67357: for (var brake54 = 5; (c = 1 + c, (Infinity == 1 | (-5 || {})) << (this >> /[a2][^e]+$/ !== 23..toString() << 25)) && brake54 > 0; --brake54) {
c = 1 + c, (2 & -1) << [] / 24..toString() >> ((24..toString() | undefined) > (24..toString() == "function"));
}
var NaN_1;
}
}
{
var expr57 = --b + (a++ + (foo_2 && foo_2[a++ + [ (c = 1 + c, 22 * [ , 0 ][1] !== ([ , 0 ][1] === -0) !== (3,
/[a2][^e]+$/) << -1 * this), (c = 1 + c, (arguments_1 = 4 <= {} >= ("undefined" != -0)) >>> (("object",
"number") && "bar" === [ , 0 ][1])), (c = 1 + c, NaN / "bar" == (NaN, 25) === (Math_1 && (Math_1[(c = 1 + c,
c_1 && (c_1[a++ + typeof (c = 1 + c, (null !== {}) >= (undefined_1 = -2 >> "bar") <= Infinity - 22 - (-0 === null))] += "" >> true && (foo_2 && (foo_2[(c = 1 + c,
([] === true ^ (38..toString() ^ "foo")) == (!1 != (NaN | NaN)))] += 5 & "function"))) && (-0,
NaN) > ("number" > ([ , 0 ].length === 2)))] /= 1 - "function"), "bar", 5)), , ][(c = 1 + c,
(/[a2][^e]+$/ == 4) - (c = c + 1, 38..toString()) === ((4 || -3) !== (false ^ [ , 0 ].length === 2)))]]) || 9).toString()[(c = c + 1) + (new function parseInt_2() {
this.undefined = -4 || 1;
this.b = -3 + [ , 0 ][1];
this[(c = 1 + c, (NaN_1 && (NaN_1[foo_2 && foo_2[(c = 1 + c, NaN_1 && (NaN_1[--b + {
c: (c = 1 + c, (-1 >> {}) * ("number" << this) && undefined ^ 24..toString() ^ 2 - 38..toString()),
"": (c = 1 + c, (this * undefined && (true || 3)) != ((parseInt_2 && (parseInt_2.undefined += 0 * -4)) ^ ("foo" ^ -3))),
null: (c = 1 + c, ((-5 === -5) >>> (Infinity ^ "foo")) / (("function" || "number") + (5,
/[a2][^e]+$/))),
c: (c = 1 + c, (~0 ^ /[a2][^e]+$/ >= -2) / ((foo_2 && (foo_2[(c = 1 + c, (c = c + 1,
null ^ NaN) >= ((c = c + 1, -5) != ({} != 24..toString())))] %= 2 << null)) ^ (-2 ^ 25))),
a: (c = 1 + c, (4 - "undefined") * (foo_2 && (foo_2.a = -5 !== ([ , 0 ].length === 2))) & (foo_2 && (foo_2.NaN = /[a2][^e]+$/ >> 4 ^ (c = c + 1,
-2))))
}.in] += (-0 >= []) - (undefined_1 = 0 ^ /[a2][^e]+$/) || "object" != [] ^ NaN < [ , 0 ][1]))]] /= "number" << 1 ^ -4 - true)) >= (-3 & true) * ({} | []))] >>= "" <= 3;
}() || a || 3).toString()];
for (var key57 in expr57) {
c = 1 + c;
var arguments_1 = expr57[key57];
c = c + 1;
}
}
}
case --b + (undefined_1 && undefined_1.b):
{
var brake59 = 5;
L67358: do {
{
var expr60 = a++;
for (var key60 in expr60) {
c = 1 + c;
var b_1 = expr60[key60];
{
var arguments_1 = function f0(Math_1_2, b_2, NaN_1_1) {
function f1(NaN_1_1_2) {
}
var foo_2_1 = f1(23..toString(), (c = 1 + c, (null - this > (NaN <= {})) >>> ("" !== "bar" & +"undefined")));
function f2(c_1_2, foo_2_2) {
}
var foo_2_1_1 = f2(2, 24..toString(), 5);
function f3(foo, bar_1) {
}
var Math_1 = f3(Infinity, (c = 1 + c, 23..toString() >> NaN !== "number" % 38..toString(),
undefined && -1 && ([ , 0 ].length === 2) * []), "function");
function f4(a_2) {
}
var arguments_1 = f4();
}(NaN);
}
}
}
} while (--b + (b /= a) && --brake59 > 0);
}
break;
case --b + (0 === 1 ? a : b):
break;
}
}
}
if ({
undefined: a++ + a++,
c: -a,
Infinity: 0 === 1 ? a : b
}) {
switch (a++ + typeof null) {
case [ (c = c + 1) + (0 === 1 ? a : b), , (c = c + 1) + /[abc4]/.test(({}.null || b || 5).toString()), a++ + (typeof c_1 == "function" && --_calls_ >= 0 && c_1(false, 2)), a++ + ~b ].a:
arguments_1 && arguments_1.length;
var b_2 = (c = c + 1) + void function() {}(), Math_1 = --b + ~(-(5 % Infinity) * (Infinity != "number" || -4 > /[a2][^e]+$/));
break;
default:
{
var expr66 = (c = c + 1) + (b = a);
for (var key66 in expr66) {
c = 1 + c;
var b_1_1 = expr66[key66];
{
var expr67 = 1 === 1 ? a : b;
for (var key67 in expr67) {
c = 1 + c;
var parseInt = expr67[key67];
var foo_2 = a++, c_1_1 = +b;
}
}
}
}
;
case a++ + --b:
void (((undefined_1 = [] - -2) | [ , 0 ].length === 2 ^ true) == ((c_1_1 && (c_1_1.b += {} != true)) & /[a2][^e]+$/ >>> [ , 0 ][1]));
{
var b_2_2 = function b_2(NaN_1_2) {
if (b_2 && b_2.length) {
var b_1 = function f5(arguments_1, arguments_1_2, a) {
}((c = 1 + c, (-0 >= {}) - (25 | {}) >>> (Math_1 && (Math_1[--b + arguments_1] += ("" != "bar") * (b_1_1 &= null << {})))));
} else {
4;
}
c = c + 1;
}(--b + (typeof Math_1 == "function" && --_calls_ >= 0 && Math_1(typeof f1 == "function" && --_calls_ >= 0 && f1(24..toString(), (c = 1 + c,
b_2 &= (~38..toString(), -2 <= 0) - (-3 >= 24..toString()) % (Infinity % "foo"))), a++ + (Math_1 && Math_1.null))), -5, --b + delete ([] / 24..toString() - ("undefined" < "") + ((25 | 22) >> [ , 0 ][1] / /[a2][^e]+$/)));
}
break;
case -b:
c = c + 1;
break;
}
} else {
var brake77 = 5;
while (a++ + (--b + b--) && --brake77 > 0) {
var Infinity_2;
}
}
{
var expr79 = {
3: a++ + "object",
"\t": 0 === 1 ? a : b
};
L67359: for (var key79 in expr79) {
if ((c = c + 1) + (typeof b_2_2_2 !== "special")) {
try {
switch (a++ + a++) {
case --b + {}.undefined:
for (var brake83 = 5; a++ + {
length: +function() {
}()
} && brake83 > 0; --brake83) {
(c = c + 1) + -2;
}
{
var foo_2 = function b_2_2_2() {
{
var expr86 = (c = 1 + c, ([ , 0 ][1] >= ([ , 0 ].length === 2) ^ 0 >> {}) << (-2 >= 38..toString() | "bar" * true));
L67360: for (var key86 in expr86) {
c = 1 + c;
var Math_1_2 = expr86[key86];
c = 1 + c, (38..toString() === 25) >> (-5 < {}) & ({} !== 4) * (-2 - "foo");
}
}
var a_2;
}(-1);
}
break;
case undefined_1:
{
var brake89 = 5;
do {
switch ({
"\t": (c = 1 + c, (c_1 && (c_1.foo = (/[a2][^e]+$/ * 38..toString(), 25 >> Infinity))) == (-0 >= Infinity) - (2 > "number")),
var: (c = 1 + c, 23..toString() % "foo" | (c = c + 1, 5) || "object" % "number" >> (b_1_1 %= 1 > Infinity)),
undefined: (c = 1 + c, (0 < 5 & (38..toString() & "undefined")) < (("" || [ , 0 ].length === 2) > (NaN < "")))
}) {
case typeof f2 == "function" && --_calls_ >= 0 && f2((c = 1 + c, (undefined_1 && (undefined_1[a++ + (typeof f2 == "function" && --_calls_ >= 0 && f2())] = (Math_1 && (Math_1[(c = 1 + c,
b_2_2 && (b_2_2[typeof b_2 == "function" && --_calls_ >= 0 && b_2([ , 0 ].length === 2, [ , 0 ][1], (c = 1 + c,
(4 >= 25, null >= 1) === (this >= -3) >> (3 == "undefined")))] = ((this || /[a2][^e]+$/) == "bar" / -4) >> ((2 ^ -4) >> (4 ^ "number"))))] = undefined << 23..toString())) >>> (foo_2.c = 38..toString() % null))) & (Infinity | 0 | Infinity ^ true))):
if (c = 1 + c, "undefined" > "object" & (Infinity ^ -2) ^ void "bar" >> (24..toString() >= 25)) {
c = 1 + c, (0 < "bar" === (undefined | "")) <= ((-3, 38..toString()) > (0 > 3));
}
;
break;
case (c = c + 1) + /[a2][^e]+$/:
break;
case [][a++ + typeof (c = 1 + c, (Math_1 && (Math_1.Infinity += 2 / 2 || null + Infinity)) === ("" && -1) <= (undefined_1 && (undefined_1.c = 3 >= 38..toString())))]:
{
var brake94 = 5;
L67361: do {
c = 1 + c, ([ , 0 ][1] == this != ({} && 25)) + ({} !== undefined ^ (b_2 && (b_2.b += null ^ Infinity)));
} while ((c = 1 + c, -3 / {} < (-0 >= "foo") ^ (NaN || [ , 0 ].length === 2) === "object" << 38..toString()) && --brake94 > 0);
}
break;
default:
}
} while ((0 === 1 ? a : b) && --brake89 > 0);
}
L67362: {
1 === 1 ? a : b;
for (var brake98 = 5; (c = c + 1) + (((/[a2][^e]+$/ | -5) & (null && -5)) > 1 * 23..toString() * (false << 25)) && brake98 > 0; --brake98) {
for (var brake99 = 5; (c = 1 + c, ((-5 && -3) > ("bar" || null)) + ((-1 ^ -4) <= (b_1 |= (-3,
38..toString())))) && brake99 > 0; --brake99) {
c = 1 + c, (-0 & true) !== ({} | 2) || [ , 0 ][1] !== -2 != (c = c + 1, "number");
}
}
{
var brake101 = 5;
do {
{
var expr102 = (c = 1 + c, b_2 && (b_2.NaN |= ("number" && -5) >> ("" !== 38..toString())) && -0 * false ^ "undefined" / "foo");
L67363: for (var key102 in expr102) {
c = 1 + c, ("bar" % ([ , 0 ].length === 2) >> ([] || 24..toString())) * (null >>> "" << ("object",
-0));
}
}
} while ((1 === 1 ? a : b) && --brake101 > 0);
}
}
case --b + function Math_1_2() {
{
var c = function f6() {
c = 1 + c, Infinity_2[(c = c + 1) + [ (c = 1 + c, /[a2][^e]+$/ / 22 ^ (-0 && "foo") || (2 < NaN) - (2 ^ {})), (c = 1 + c,
(NaN_1 && (NaN_1[[ (c = 1 + c, 24..toString() * -0 >>> (foo_2 /= -1 ^ -5) > -2 - 3 - (true - 1)), (c = 1 + c,
(25 ^ undefined) + ("bar" ^ 24..toString()) !== (c = c + 1, -0 - 24..toString())), (c = 1 + c,
b_1 && (b_1.c += (c = c + 1, [ , 0 ].length === 2) == (-1 || "bar") === 25 >> 22 >>> (22 || Infinity))), (c = 1 + c,
!NaN <= ("" >= "function") || (c = c + 1, 3) >= (24..toString() && "object")), (c = 1 + c,
(24..toString() & "number") === (undefined | 4), null != null && "bar" << "function") ][(c = 1 + c,
(b_1 %= [] >= undefined ^ -4 % /[a2][^e]+$/) >= ((b_1_1 && (b_1_1[(c = 1 + c, false / 24..toString() === (23..toString() ^ 2) === -5 >> 25 << -2 % "undefined")] /= 38..toString() || "object")) <= (this && "undefined")))]] = ("function" === -1) * (b_2_2 && (b_2_2[(c = 1 + c,
(Math_1 = 4 || 22) - ("bar" <= 3) & ("number", -3) % ({} - 0))] = null === 24..toString())))) >> ([ , 0 ][1] / 1 !== "function" >>> /[a2][^e]+$/)), (c = 1 + c,
(this & []) << -1 % ([ , 0 ].length === 2) >>> (+ -2 > (-2 !== this))) ].b] += (38..toString() != 4) % (23..toString() >>> 3) % ((24..toString() ^ 22) / (-2 === {}));
c = 1 + c, (-4 == 1) >>> ("function" !== -5) ^ (false * 25 | -3 - "foo");
}();
}
({
"\t": (c = 1 + c, (-3 % 5 || -0 * 4) >= (({} | -2) !== 1 << /[a2][^e]+$/)),
b: (c = 1 + c, (/[a2][^e]+$/ > ([ , 0 ].length === 2) ^ 2 > "") - (c = c + 1, "" > -2)),
"\t": (c = 1 + c, 25 * 3 === {} + "foo" ^ 0 * "number" & 38..toString() % 3)
}).null;
{
var b_2_2_1 = function f7(parseInt) {
c = 1 + c, -4 / {} - (2 & "bar") || (3 ^ false) >>> 3 % [];
c = 1 + c, -25 * (38..toString() == -3) / (c = c + 1, NaN_1 = 3 ^ undefined);
}("foo");
}
{
var a_2 = function f8() {
c = 1 + c, !((true < "foo") % (Math_1_2 = -3 && this));
c = 1 + c, (Infinity_2 && (Infinity_2.a += (25 & -3) != Infinity > {})) ^ -3 + 23..toString() + -2 % 23..toString();
}((c = 1 + c, arguments_1 = (2 != 23..toString()) < 2 >> -5 === (23..toString() | {},
b_1[(c = 1 + c, 3 >>> Infinity >= ([] == -5) <= ("bar" || 5) >> 22 + -0)] = "bar" || [ , 0 ].length === 2)), (c = 1 + c,
"function" - "number" + (true || null) ^ "undefined" % -2 + (-4 != 25)), (c = 1 + c,
(3 >> this | (1 | {})) == (-0 < 2 & (24..toString() || 2))));
}
}():
var b_2_2 = ((c = 1 + c, (b_2_2 = "function" >= 5 !== (b_1_1 += 5 & "bar")) / ((false & 23..toString()) << true % -3)) ? (c = 1 + c,
((-5 || "undefined") && [] << ([ , 0 ].length === 2)) | delete true ^ (false ^ 38..toString())) : (c = 1 + c,
(-1 % 5 && undefined > "") !== (5 <= 22 == (-0 && /[a2][^e]+$/)))) ? {
c: (c = 1 + c, NaN_1 &= (b_2_2 && (b_2_2.null = (24..toString() | false, "" <= -0))) !== ([ , 0 ].length === 2 !== 38..toString() ^ NaN < -5)),
3: (c = 1 + c, c = c + 1, this % 24..toString() !== 23..toString() * undefined),
1.5: (c = 1 + c, arguments_1 >>= (NaN * null >= (b_1 && (b_1.undefined = 3 - undefined))) * ((0,
"function") ^ (24..toString(), false))),
null: (c = 1 + c, ("" << -0) * (24..toString() !== "undefined") < (-5 + ([ , 0 ].length === 2) == ("object" === "bar"))),
"\t": (c = 1 + c, ("undefined" && 0) !== [] > 5 ^ -2 % 24..toString() <= ("bar" ^ 1))
} : typeof f9 == "function" && --_calls_ >= 0 && f9(23..toString(), (c = 1 + c,
/[a2][^e]+$/ + 1 != "number" <= "bar" || -2 - -3 ^ (true ^ 5)), (c = 1 + c, ((true,
{}) || this ^ true) - ("undefined" !== Infinity) / ("function" >= 5)));
for (var brake115 = 5; (c = c + 1) + (typeof f2 == "function" && --_calls_ >= 0 && f2()) && brake115 > 0; --brake115) {
switch (a++ + -a) {
case {
3: (c = 1 + c, undefined_1 && (undefined_1[typeof undefined_1 == "function" && --_calls_ >= 0 && undefined_1((c = 1 + c,
((c = c + 1, -4) | 38..toString() < /[a2][^e]+$/) !== delete (undefined % undefined)), (c = 1 + c,
("foo" == true) + "undefined" * "number" !== (-0 == -4) >= (3 && -1)), "undefined")] += ((/[a2][^e]+$/ >= 38..toString()) + (22 <= -0)) % ~(/[a2][^e]+$/ ^ -1))),
b: (c = 1 + c, (22 >= 1, -2 && Infinity) & ((false, "undefined") & (-4 ^ null))),
"-2": (c = 1 + c, -3 * 1 >> (2 == []) || 4 * "undefined" > "object" >>> Infinity)
}.var:
{
var brake117 = 5;
L67364: while ((c = 1 + c, void (5 ^ "") * (("bar" ^ "bar") * (/[a2][^e]+$/ | [ , 0 ][1]))) && --brake117 > 0) {
c = 1 + c, ({} ^ false ^ 4 - 24..toString()) << ((b_1 = 24..toString() - Infinity) !== -0 <= 2);
}
}
break;
case (c = c + 1) + (Math_1 && Math_1[typeof arguments_1 == "function" && --_calls_ >= 0 && arguments_1((c = 1 + c,
(/[a2][^e]+$/ - 2) % (true % 5) < ({} !== [ , 0 ][1] === (23..toString() | -5))), 5, "number")]):
case a++ + (b_2_2 && b_2_2.length):
if (c = 1 + c, (c = c + 1, arguments_1 && (arguments_1[(c = 1 + c, (4 > 3 >= (null ^ 2)) << (b_2_2 && (b_2_2[(c = c + 1) + !function b_1_1_1() {
}()] -= 24..toString() % "function" !== (4 || 24..toString()))))] += ([ , 0 ].length === 2) + undefined)) >> (b_2 && (b_2[0 === 1 ? a : b] = [ , 0 ][1] - 2 >>> (this ^ 25)))) {
c = 1 + c, ("bar" >= "bar") << (-5 ^ 38..toString()) ^ (-3 !== Infinity) > (25,
Infinity);
} else {
c = 1 + c, (23..toString() != this) - (NaN_1 += ([ , 0 ].length === 2) < null) & ("object" % -1 && "undefined" % false);
}
{
}
break;
case (c = c + 1) + (a++ + Math_1 ? undefined_1 : typeof Math_1 == "function" && --_calls_ >= 0 && Math_1((c = 1 + c,
"object" % 38..toString() > (this != -2) === -38..toString() % (-0 == {})))):
{
var brake123 = 5;
do {
c = 1 + c, ({} << 4) / ("undefined" % "function") !== (NaN % this != ([] & -5));
} while ((c = 1 + c, ((38..toString() & {}) > "" % "undefined") / ((c = c + 1, "number") <= (b_2_2 &= /[a2][^e]+$/ > -2))) && --brake123 > 0);
}
c = c + 1;
break;
}
}
break;
case (c = c + 1) + (b_1 = -3 && NaN && "number" >= this) % ((undefined >> -0) - ("" == -4)):
try {
b = a;
} catch (c_1) {
{
var expr128 = ((c = 1 + c, c = c + 1, ([ , 0 ][1] & 38..toString()) >>> (true || "undefined")) || 4).toString()[(c = 1 + c,
"undefined" % /[a2][^e]+$/ + ("" === "object") >= ([ , 0 ][1] - "bar") * (-3 != this))];
for (var key128 in expr128) {
c = 1 + c;
var NaN_1_2 = expr128[key128];
c = 1 + c, ("bar" == "bar") - ("object" ^ -5) || (Infinity & "function") <= ("undefined" !== NaN);
}
}
(c = c + 1) + ((c = 1 + c, (-0 >> -2 <= "bar" % ([ , 0 ].length === 2)) - ((-3 & -3) - ({},
22))) || a || 3).toString();
} finally {
if (NaN_1) {
try {
c = 1 + c, (1, null) + (Infinity >> "bar") != ((arguments_1 && (arguments_1[(c = 1 + c,
(arguments_1 && (arguments_1[((b_1 && (b_1[(c = 1 + c, b_1 = (-3 | -4) >> (24..toString() == 0) <= (23..toString() % "bar" || -1 | [ , 0 ].length === 2))] = /[a2][^e]+$/ % /[a2][^e]+$/)) ^ (b_2_2 && (b_2_2[(c = 1 + c,
(1 | 25) == ("number" && 25), arguments_1 >>= ("foo" & NaN) >= /[a2][^e]+$/ << [])] %= {} >= true))) >= (NaN ^ "") - (/[a2][^e]+$/ - NaN)] = (4 !== undefined) / ("number" >> this))) <= (25 | [ , 0 ].length === 2) + (c = c + 1,
-3))] += [ , 0 ][1] >>> null)) == void "bar");
} catch (undefined) {
}
}
c = c + 1;
}
break;
}
} catch (b_2_2_1) {
a++ + a++;
}
} else {
var brake137 = 5;
L67365: while (function() {
c = c + 1;
for (var brake139 = 5; --b + (b += a) && brake139 > 0; --brake139) {
L67366: for (var brake140 = 5; NaN_1_2 && NaN_1_2[--b + b_1_1] && brake140 > 0; --brake140) {
var bar_1;
}
}
} && --brake137 > 0) {}
}
}
}
{
var bar_1 = function f9(b) {
function f10() {
c = c + 1;
{
var brake145 = 5;
L67367: while (--b + b-- && --brake145 > 0) {
switch (c = 1 + c, "foo" != -4 & 3 >= "foo", (22 || -0) === (-1, undefined)) {
default:
;
case c = 1 + c, (4 !== {} | (0 && -3)) >> (undefined % "function" < ([ , 0 ].length === 2 ^ Infinity)):
;
break;
case c = 1 + c, (-1 === "number") << false - this == (([ , 0 ].length === 2) * 3 && -3 < 5):
;
break;
case c = 1 + c, (false & 5) <= delete -5 | (foo_2 && (foo_2[(c = 1 + c, c_1_1 && (c_1_1.in /= [] % -1 != (-5 === []) | (c = c + 1,
+"foo")))] <<= "bar" && 1)) * ("object" ^ true):
;
break;
}
}
}
}
var Infinity_2_1 = f10(-2);
function f11(foo_1, b_1_2, b) {
L67368: {}
}
var b_2_2 = f11(-1);
}(a++ + (b = a), -3 & 23..toString() ^ [ , 0 ][1] + 1 ^ undefined % -0 < (2 == true), undefined);
}
}
{
var brake149 = 5;
do {
(c = c + 1) + (foo_2 && foo_2.Infinity);
} while (--b + typeof foo_2_1 && --brake149 > 0);
}
console.log(null, a, b, c);
```js
// uglified code
// (beautified)
for (var _calls_ = 10, a = 100, b = 10, c = 0, brake2 = 5; --b + {}.NaN && --brake2 > 0; ) {
switch (function() {
switch (--n + ((c += 1) + -0)) {
case a++ + a:
if (--n + /[abc4]/.test(((c = 1 + c, (a && (a[a++ + (c += 1, +(NaN == (!0 ^ (a = 2 === [ , 0 ].length | -2))))] = !0 * (2 === [ , 0 ].length) == 0)) / !0 || 1).toString()[(c = 1 + c,
(1 != 38..toString()) << (2 === [ , 0 ].length != 0) !== (0 != [] == (2 === [ , 0 ].length) >= -0))] || n || 5).toString())) {
for (var t = 5; a && a.foo && --t > 0; ) {
c += 1;
}
} else {
var e = a++ + {}[(c = 1 + c, c += 1, ({} || /[a2][^e]+$/) > !1)];
for (var r in e) {
c = 1 + c;
var n = e[r], o = 5;
do {
c = 1 + c, a && (a.Infinity -= !1 * (-0 == []) >> (c += 1, !1));
} while (c = 1 + c, !1 & (a && (a[(c = 1 + c, !0 === (-3 != 38..toString() ^ -3))] = 31) && (a %= 1 >>> 23..toString())) && --o > 0);
}
}
if (n = a) {
switch (c = 1 + c, a && (a["function" == typeof f1 && --_calls_ >= 0 && f1([])] += /[a2][^e]+$/ !== (0 & this)),
"number") {
default:
c = 1 + c, 38..toString(), c = 1 + (c += 1), a && (a.c += ({} >= 1 / 0) >>> !0),
38..toString(), c = 1 + c, a && (a.b = 0 != (a && (a.NaN >>>= -1)) <= 0), c = 1 + c;
break;
case (c += 1) + a++:
c = 1 + c, a >>= NaN ^ 24..toString();
break;
case a:
}
}
break;
default:
case a++ + delete n:
var i = 5;
do {
var _ = 5;
do {
c = 1 + c, c += 1;
} while (c = 1 + c, c += 1, --_ > 0);
} while ({
var: (c = 1 + c, (a && (a.Infinity += 22 !== 23..toString())) >= (this == 23..toString() !== 4)),
NaN: (c = 1 + c, (!1 - (a && (a.c = NaN))) / ((2 === [ , 0 ].length) / !1 / (a = 2 === [ , 0 ].length & !0))),
"-2": (c = 1 + c, 5 >= (a && (a.Infinity = this && 3)) && !1 | 23..toString() * /[a2][^e]+$/),
null: (c = 1 + c, 1),
NaN: (c = 1 + c, 0 * (0 != (a && (a.b += !1))))
}[(c += 1) + {
Infinity: (c = 1 + c, NaN),
set a(c) {
this.null = {} <= 24..toString();
}
}] && --i > 0);
c += 1;
break;
case a++ + a++:
return --n;
}
}) {
case a:
a++, (c = 1 + c, 9).toString()[(c = 1 + c, !0 >> ((2 === [ , 0 ].length) << 0) ^ (a && (a.null += !1)))],
a++, c = 1 + c, 38..toString(), --b, b |= a, c += 1, ++a;
break;
case b <<= a:
var expr30 = [ foo_2 && foo_2.b ];
for (var key30 in expr30) {
c = 1 + c;
for (var foo_2 = expr30[key30], brake31 = 5; --b && brake31 > 0; --brake31) {
for (var brake32 = 5; "special" == typeof a_1 && brake32 > 0; --brake32) {
c += 1;
}
}
}
try {
var brake35 = 5;
do {
try {
break;
} catch (t) {
var brake39 = 5;
do {
var brake40 = 5;
do {
c = 1 + c, Math_1 && (Math_1.undefined = 1 / 0 < 24..toString()), t && (t[(c = 1 + c,
(22 ^ "number" >>> []) < (1 >> [] <= 22))] += NaN);
} while (c = 1 + c, c += 1, 0 != (3 & {}) && --brake40 > 0);
} while (delete a && --brake39 > 0);
} finally {
for (var brake42 = 5; (0 & {} > 0) / !0 && brake42 > 0; --brake42) {
for (var brake43 = 5; c = 1 + c, 0 == {} < 24..toString() != (void 0 + (2 === [ , 0 ].length) || this >= 22) && brake43 > 0; --brake43) {
c = 1 + c, 38..toString();
}
}
var expr45 = ~(0 != ([] <= 3 != (Math_1 && (Math_1.a += NaN))));
for (var key45 in expr45) {
c = 1 + c;
var undefined_1 = expr45[key45];
}
}
} while (b++ && --brake35 > 0);
} finally {
if (--b + ((undefined_1 && (undefined_1.undefined = !1)) + NaN || Math_1 && (Math_1.in = -5),
!0)) {
try {
var brake49 = 5;
do {
c = 1 + c;
} while (--b + b++ && --brake49 > 0);
} catch (c) {
c = 1 + c, b = !0;
var c_1 = (c = 1 + (c += 1), foo_2 && (foo_2[[ (c = 1 + c, c += 1, c += 1, "object" ^ ("number" === 24..toString() && 0)), (c = 1 + c,
3), (c = 1 + c, 5 + 24..toString() > 5 <= (foo_2 && (foo_2["function" == typeof f0 && --_calls_ >= 0 && f0()] >>>= (this - !0) % !1))), (c = 1 + c,
([] || {}) >= !1 || c_1 && (c_1[a++ + typeof undefined_1] = 0)), (c = 1 + c, 38..toString() % void 0 ^ "object" && NaN * (2 === [ , 0 ].length && -2)) ]] <<= 0));
try {
c = 1 + c, c_1 /= !0 >>> 23..toString(), c_1 |= !1;
} finally {}
} finally {
for (var brake54 = 5; c = 1 + c, -5 << (this >> /[a2][^e]+$/ != 23..toString() << 25) && brake54 > 0; --brake54) {
c = 1 + c, 24..toString(), 24..toString(), 24..toString();
}
var NaN_1;
}
}
var expr57 = --b + (a++ + (foo_2 && foo_2[a++ + [ (c = 1 + c, !0 !== /[a2][^e]+$/ << -1 * this), (c = 1 + c,
(arguments_1 = 4 <= {} >= !0) >>> !1), (c = 1 + c, !1 === (Math_1 && (Math_1[(c = 1 + c,
c_1 && (c_1[a++ + (c = 1 + c, typeof ((null !== {}) >= (undefined_1 = -2) <= 1 / 0))] += 0) && NaN > ("number" > (2 === [ , 0 ].length)))] /= NaN),
5)), , ][(c = 1 + c, !1 - (c += 1, 38..toString()) === (4 != (!1 ^ 2 === [ , 0 ].length)))]]) || 9).toString()[(c += 1) + (new function t() {
this.undefined = -4, this.b = -3, this[(c = 1 + c, (NaN_1 && (NaN_1[foo_2 && foo_2[(c = 1 + c,
NaN_1 && (NaN_1[--b + {
c: (c = 1 + c, (-1 >> {}) * ("number" << this) && void 0 ^ 24..toString() ^ 2 - 38..toString()),
"": (c = 1 + c, (void 0 * this && !0) != (-3 ^ (t && (t.undefined += -0)))),
null: (c = 1 + c, NaN),
c: (c = 1 + c, -1 / (-25 ^ (foo_2 && (foo_2[(c = 1 + c, c += 1, 0 >= (c += 1, -5 != ({} != 24..toString())))] %= 2)))),
a: (c = 1 + c, NaN * (foo_2 && (foo_2.a = -5 !== (2 === [ , 0 ].length))) & (foo_2 && (foo_2.NaN = 0 ^ (c += 1,
-2))))
}.in] += (-0 >= []) - (undefined_1 = 0) || "object" != [] ^ !1))]] /= -5)) >= 1 * ({} | []))] >>= !0;
}() || a || 3).toString()];
for (var key57 in expr57) {
c = 1 + c;
var arguments_1 = expr57[key57];
c += 1;
}
}
case --b + (undefined_1 && undefined_1.b):
var brake59 = 5;
do {
var expr60 = a++;
for (var key60 in expr60) {
c = 1 + c;
var b_1 = expr60[key60];
23..toString(), c = 1 + c, 24..toString(), c = 1 + c, 23..toString(), arguments_1 = void 38..toString();
}
} while (--b + (b /= a) && --brake59 > 0);
break;
case --b + b:
}
}
var brake77, Infinity_2;
switch (a++, a++, a++ + "object") {
case [ (c += 1) + b, , (c += 1) + /[abc4]/.test(({}.null || b || 5).toString()), a++ + ("function" == typeof c_1 && --_calls_ >= 0 && c_1(!1, 2)), a++ + ~b ].a:
arguments_1 && arguments_1.length;
var b_2 = (c += 1) + void 0, Math_1 = 4 + --b;
break;
default:
var expr66 = (c += 1) + (b = a);
for (var key66 in expr66) {
c = 1 + c;
var b_1_1 = expr66[key66], expr67 = a;
for (var key67 in expr67) {
c = 1 + c;
var parseInt = expr67[key67], c_1_1 = (foo_2 = a++, +b);
}
}
case a++ + --b:
undefined_1 = [] - -2, c_1_1 && (c_1_1.b += 1 != {});
var b_2_2 = function t() {
t && t.length && (c = 1 + c, Math_1 && (Math_1[--b + arguments_1] += !0 * (b_1_1 &= null << {}))),
c += 1;
}((--b, "function" == typeof Math_1 && --_calls_ >= 0 && Math_1("function" == typeof f1 && --_calls_ >= 0 && f1(24..toString(), (c = 1 + c,
b_2 &= (38..toString(), !0 - (-3 >= 24..toString()) % NaN))), a++ + (Math_1 && Math_1.null))), (--b,
24..toString()));
break;
case -b:
c += 1;
}
var expr79 = {
3: a++ + "object",
"t": b
};
for (var key79 in expr79) {
if ((c += 1) + ("special" != typeof b_2_2_2)) {
try {
switch (a++ + a++) {
case --b + {}.undefined:
for (var brake83 = 5; a++ + {
length: NaN
} && brake83 > 0; --brake83) {
c += 1;
}
foo_2 = function() {
var t = (c = 1 + c, (0 >= (2 === [ , 0 ].length) ^ 0 >> {}) << (-2 >= 38..toString() | NaN));
for (var a in t) {
c = 1 + (c = 1 + c), 38..toString();
}
}();
break;
case undefined_1:
var brake89 = 5;
do {
switch ({
"\t": (c = 1 + c, 0 == (c_1 && (c_1.foo = (38..toString(), 25)))),
var: (c = 1 + c, 23..toString() % "foo" | (c += 1, 5) || NaN >> (b_1_1 %= !1)),
undefined: (c = 1 + c, (0 & 38..toString()) < ((2 === [ , 0 ].length) > !1))
}) {
case "function" == typeof f2 && --_calls_ >= 0 && f2((c = 1 + c, 1 & (undefined_1 && (undefined_1[a++ + ("function" == typeof f2 && --_calls_ >= 0 && f2())] = (Math_1 && (Math_1[(c = 1 + c,
b_2_2 && (b_2_2["function" == typeof b_2 && --_calls_ >= 0 && b_2(2 === [ , 0 ].length, 0, (c = 1 + c,
!1 === (this >= -3) >> !1))] = (NaN == (this || /[a2][^e]+$/)) >> -1))] = void 0 << 23..toString())) >>> (foo_2.c = 38..toString() % null))))):
c = 1 + c, 0 ^ void 0 >> (24..toString() >= 25) && (c = 1 + c, 38..toString());
break;
case (c += 1) + /[a2][^e]+$/:
break;
case [][a++ + (c = 1 + c, typeof ((Math_1 && (Math_1.Infinity += 1)) === "" <= (undefined_1 && (undefined_1.c = 3 >= 38..toString()))))]:
var brake94 = 5;
do {
c = 1 + c, b_2 && (b_2.b += 0);
} while (c = 1 + c, -3 / {} < !1 ^ 2 === [ , 0 ].length === "object" << 38..toString() && --brake94 > 0);
}
} while (b && --brake89 > 0);
for (var brake98 = 5; (c += 1) + (0 > 1 * 23..toString() * 0) && brake98 > 0; --brake98) {
for (var brake99 = 5; c = 1 + c, !1 + (3 <= (b_1 |= 38..toString())) && brake99 > 0; --brake99) {
c = 1 + c, 0 != (2 | {}) || (c += 1);
}
}
var brake101 = 5;
do {
var expr102 = (c = 1 + c, b_2 && (b_2.NaN |= -5 >> ("" !== 38..toString())) && 0);
for (var key102 in expr102) {
c = 1 + c;
}
} while (a && --brake101 > 0);
case --b + function() {
var c = function() {
c = 1 + c, Infinity_2[(c += 1) + [ (c = 1 + c, !1 - (2 ^ {})), (c = 1 + c, (NaN_1 && (NaN_1[[ (c = 1 + c,
-0 * 24..toString() >>> (foo_2 /= 4) > -5), (c = 1 + c, 25 + ("bar" ^ 24..toString()) != (c += 1,
-0 - 24..toString())), (c = 1 + c, b_1 && (b_1.c += -1 == (c += 1, 2 === [ , 0 ].length) === 0)), (c = 1 + c,
c += 1, 3 >= (24..toString() && "object")), (c = 1 + c, 24..toString(), !1) ][(c = 1 + c,
(b_1 %= [] >= void 0 ^ NaN) >= ((b_1_1 && (b_1_1[(c = 1 + c, !1 / 24..toString() == (2 ^ 23..toString()) === -1)] /= 38..toString() || "object")) <= (this && "undefined")))]] = !1 * (b_2_2 && (b_2_2[(c = 1 + c,
(Math_1 = 4) - !1 & -3 % ({} - 0))] = null === 24..toString())))) >> !1), (c = 1 + c,
(this & []) << -1 % (2 === [ , 0 ].length) >>> (-2 > (-2 !== this))) ].b] += (4 != 38..toString()) % (23..toString() >>> 3) % ((22 ^ 24..toString()) / (-2 === {})),
c = 1 + c;
}();
c = 1 + (c = 1 + c), c = 1 + (c += 1), 38..toString(), c = 1 + (c = 1 + c), 38..toString(),
NaN_1 = 3, c = 1 + (c += 1), arguments_1 = (2 != 23..toString()) < 0 === (23..toString(),
b_1[(c = 1 + c, 3 >= (-5 == []) <= 0)] = "bar"), c = 1 + (c = 1 + c), 24..toString(),
c = 1 + (c = 1 + c), Infinity_2 && (Infinity_2.a += 25 != 1 / 0 > {}), 23..toString(),
23..toString();
}():
c = 1 + c, b_2_2 = ((b_2_2 = !1 !== (b_1_1 += 0)) / ((!1 & 23..toString()) << 1) ? (c = 1 + c,
[] << (2 === [ , 0 ].length) | 1 ^ 38..toString()) : (c = 1 + c, 0)) ? {
c: (c = 1 + c, NaN_1 &= (b_2_2 && (b_2_2.null = (24..toString(), !0))) !== (2 === [ , 0 ].length !== 38..toString() ^ !1)),
3: (c = 1 + c, c += 1, this % 24..toString() != void 0 * 23..toString()),
1.5: (c = 1 + c, arguments_1 >>= (NaN >= (b_1 && (b_1.undefined = NaN))) * ("function" ^ (24..toString(),
!1))),
null: (c = 1 + c, 0 * ("undefined" !== 24..toString()) < (-5 + (2 === [ , 0 ].length) == 0)),
"\t": (c = 1 + c, 0 !== [] > 5 ^ -2 % 24..toString() <= 1)
} : "function" == typeof f9 && --_calls_ >= 0 && f9(23..toString(), (c = 1 + c,
!0), (c = 1 + c, ({} || !0 ^ this) - 1 / 0));
for (var brake115 = 5; (c += 1) + ("function" == typeof f2 && --_calls_ >= 0 && f2()) && brake115 > 0; --brake115) {
switch (a++ - a) {
case {
3: (c = 1 + c, undefined_1 && (undefined_1["function" == typeof undefined_1 && --_calls_ >= 0 && undefined_1((c = 1 + c,
!0 !== (c += 1, -4 | 38..toString() < /[a2][^e]+$/)), (c = 1 + c, !0), "undefined")] += ((/[a2][^e]+$/ >= 38..toString()) + !1) % 0)),
b: (c = 1 + c, 0),
"-2": (c = 1 + c, -3 >> (2 == []) || !1)
}.var:
var brake117 = 5;
c = 1 + c;
break;
case (c += 1) + (Math_1 && Math_1["function" == typeof arguments_1 && --_calls_ >= 0 && arguments_1((c = 1 + c,
NaN < (0 !== {} === (-5 | 23..toString()))), 5, "number")]):
case a++ + (b_2_2 && b_2_2.length):
c = 1 + c, c += 1, (arguments_1 && (arguments_1[(c = 1 + c, !1 << (b_2_2 && (b_2_2[(c += 1) + !0] -= 24..toString() % "function" != 4)))] += (2 === [ , 0 ].length) + void 0)) >> (b_2 && (b_2[b] = -2 >>> (25 ^ this))) ? (c = 1 + c,
38..toString()) : (c = 1 + c, 23..toString(), NaN_1 += (2 === [ , 0 ].length) < null);
break;
case (c += 1) + (a++ + Math_1 ? undefined_1 : "function" == typeof Math_1 && --_calls_ >= 0 && Math_1((c = 1 + c,
"object" % 38..toString() > (-2 != this) === -38..toString() % (-0 == {})))):
var brake123 = 5;
do {
c = 1 + c;
} while (c = 1 + c, ((38..toString() & {}) > NaN) / (c += 1, "number" <= (b_2_2 &= !1)) && --brake123 > 0);
c += 1;
}
}
break;
case (c += 1) + (b_1 = NaN) % 0:
try {
b = a;
} catch (c_1) {
var expr128 = (c = 1 + c, c += 1, (0 & 38..toString()) >>> !0 || 4).toString()[(c = 1 + c,
NaN >= NaN * (-3 != this))];
for (var key128 in expr128) {
c = 1 + c;
var NaN_1_2 = expr128[key128];
c = 1 + c;
}
(c = 1 + (c += 1), (0 <= "bar" % (2 === [ , 0 ].length)) - -25 || a || 3).toString();
} finally {
if (NaN_1) {
try {
c = 1 + c, arguments_1 && (arguments_1[(c = 1 + c, (arguments_1 && (arguments_1[((b_1 && (b_1[(c = 1 + c,
b_1 = -3 >> (0 == 24..toString()) <= (23..toString() % "bar" || -1 | 2 === [ , 0 ].length))] = NaN)) ^ (b_2_2 && (b_2_2[(c = 1 + c,
arguments_1 >>= 0 >= /[a2][^e]+$/ << [])] %= {} >= !0))) >= NaN] = !0 / ("number" >> this))) <= (25 | 2 === [ , 0 ].length) + (c += 1,
-3))] += 0);
} catch (c) {}
}
c += 1;
}
}
} catch (c) {
a++, a++;
}
} else {
for (var brake137 = 5; function() {
c += 1;
for (var t = 5; --b + (b += a) && t > 0; --t) {
for (var e = 5; NaN_1_2 && NaN_1_2[--b + b_1_1] && e > 0; --e) {}
}
} && --brake137 > 0; ) {}
}
}
var bar_1 = function(t) {
!function() {
c += 1;
for (var a = 5; --t + t-- && --a > 0; ) {
switch (c = 1 + c, !1) {
default:
case c = 1 + c, (4 !== {} | 0) >> (NaN < (2 === [ , 0 ].length ^ 1 / 0)):
case c = 1 + c, !1 << !1 - this == (3 * (2 === [ , 0 ].length) && !0):
case c = 1 + c, !0 | 1 * (foo_2 && (foo_2[(c = 1 + c, c_1_1 && (c_1_1.in /= [] % -1 != (-5 === []) | (c += 1,
NaN)))] <<= 1)):
}
}
}();
}(a++ + (b = a), 23..toString()), brake149 = 5;
do {
c += 1, foo_2 && foo_2.Infinity;
} while (--b + typeof foo_2_1 && --brake149 > 0);
console.log(null, a, b, c);
```js
original result:
null 116 111 25
uglified result:
null 116 111 24
minify(options):
{
"compress": {
"keep_fargs": false,
"passes": 100
}
}
Suspicious compress options:
unused
I can't reproduce the first test case:
$ cat 600k.js | node
null 118 10 67
$ cat 600k.js | bin/uglifyjs -mc keep_fargs=0,passes=100 -b | node
null 118 10 67
I can reproduce the second test case:
$ cat second.js | node
null 116 111 25
$ cat second.js | bin/uglifyjs -mc keep_fargs=0,passes=100 -b | node
null 116 111 24
Another 1.2MFuzz yields four cases...
// original code
// (beautified)
var _calls_ = 10, a = 100, b = 10, c = 0;
function f0(foo_1, a_1, b_2) {
function f1() {
for (var brake1 = 5; delete ((foo_1 && (foo_1[(c = 1 + c, +((this >= -3) >> (3 || 2)))] = -3 % undefined)) / (undefined >>> NaN) !== (true == -4) < -5 - "number") && brake1 > 0; --brake1) {
var brake2 = 5;
while (typeof f2 == "function" && --_calls_ >= 0 && f2((c = 1 + c, (b_2 && (b_2.var = "" << 3 >>> (b_2 && (b_2[(c = 1 + c,
b_2 && (b_2.foo >>= ("function" === -4) >> -2 / -0 >= ((c = c + 1, 38..toString()) >= (false === 1))))] >>>= /[a2][^e]+$/ < 5)))) << (this || -4) / ("undefined" - "undefined"))) && --brake2 > 0) {}
}
c = c + 1;
}
var b_2 = f1([ (c = c + 1) + (typeof f1 == "function" && --_calls_ >= 0 && f1(-0, (c = 1 + c,
b_2 = (25 % "bar" ^ -5 > this) === (22 ^ 25) >> (-1 ^ 4)))), , typeof b_2_2 != "boolean", a++ + a--, {
NaN: (c = 1 + c, b_2 && (b_2.NaN = (undefined | false) - 22 * 5 !== (("foo", -2) | (-1 || 25)))),
var: (c = 1 + c, ("undefined" > -3 < "function" >> 4) * ((b_2 && (b_2[(c = 1 + c,
(([ , 0 ].length === 2) % undefined ^ (this | 3)) + (0 != undefined ^ 23..toString() == 5))] = ([ , 0 ].length === 2) % null)) | -5 + 22)),
"\t": (c = 1 + c, 24..toString() === 4 == 2 / true | this > 38..toString() === 3 >= 4),
length: (c = 1 + c, ("foo" == /[a2][^e]+$/ || 23..toString() - "undefined") > (foo_1 && (foo_1[/[a2][^e]+$/] %= 22 == 24..toString() | (b_2 = "" !== "number")))),
3: (c = 1 + c, ([ , 0 ][1] == -4 !== /[a2][^e]+$/ >= true) >>> (-1 << true) / ({} != -0))
}.Infinity ].length, function() {
{
var undefined_1 = function b_2(Infinity_2, a_2, undefined) {
}(-5, "");
}
c = c + 1;
{
var expr7 = typeof a != "boolean";
for (var key7 in expr7) {
c = 1 + c;
var undefined_1 = expr7[key7];
{
}
}
}
{
return;
(c = c + 1) + ((c = 1 + c, ~(foo_1 && (foo_1.NaN = [ , 0 ][1] + 23..toString() + (a_1 && (a_1.in = -1 & [ , 0 ][1]))))) ? (c = 1 + c,
([ , 0 ][1] < 0) * (/[a2][^e]+$/ - -2) >>> ((b_2 += -4 << -5) !== (undefined !== 1))) : (c = 1 + c,
(38..toString() != ([ , 0 ].length === 2) | -2 ^ 38..toString()) % (([ , 0 ].length === 2) / 4 | 25 >> "number")));
}
}());
function f2(a) {
{
var a = function f3(b_1, NaN) {
try {
c = 1 + c, b_2 = (38..toString() || -0) <= (b_2 && (b_2[(c = 1 + c, delete ((Infinity & true) == (c = c + 1,
"")))] += 24..toString() % -0)) !== (foo_1 &= 25 === "foo") + (true >>> true);
} catch (b_2_2) {
}
{
}
}(--b, ((c = 1 + c, ("foo" ^ [ , 0 ][1]) >= (a_1 && (a_1.var = -2 + undefined)) != (-0 <= "number" ^ delete Infinity)) || 1).toString()[(c = 1 + c,
(0 > "bar") / (23..toString() == Infinity) === +(foo_1 && (foo_1.null = (-2, 24..toString()))))]);
}
{
var a_2 = function b_2_2(a_1, a_1_1) {
function f4() {
}
var foo_1_2 = f4();
function f5(foo_1_2_1) {
}
var b = f5();
function f6(bar_2, foo_1, a_1_1) {
}
var NaN = f6();
function f7(b_1) {
}
var a_1 = f7(false);
function f8(a_1_2, b_1) {
}
var Math_1 = f8((c = 1 + c, (foo_1 && (foo_1.undefined = undefined & "function")) * (22 & Infinity) != (b_2 += 38..toString() && []) <= (false | false)));
}(22, (c = c + 1) + foo_1, []);
}
}
function f9(arguments_1) {
var a = (c = c + 1) + (typeof f1 == "function" && --_calls_ >= 0 && f1(a++ + /[abc4]/.test(((c = 1 + c,
(c = c + 1, 5 & "") <= (/[a2][^e]+$/ + "" & ("bar" ^ true))) || b || 5).toString()), -0)), a_2 = --b + ((c = c + 1) + a++ || a || 3).toString();
a++ + new function() {
this.foo >>>= ((this && "function") ^ -"bar") >> (0 << true != (b_2 >>>= "bar" == 3));
this[a++ + (--b + [] || 7).toString()[arguments_1 && arguments_1[(c = 1 + c, "foo" * "bar" * (NaN + "bar") % (c = c + 1,
Infinity / "foo"))]]] = (23..toString() <= [ , 0 ][1]) << (c = c + 1, "foo") ^ (24..toString(),
-2) & (a_2 *= undefined - 23..toString());
c = 1 + c, Infinity >= 2 == -5 < 24..toString() ^ 38..toString() / 0 * (24..toString() ^ "object");
}();
}
var parseInt_2 = f9();
function f10() {
{
var brake18 = 5;
do {
try {
{
c = 1 + c, (c = c + 1, -0 <= 5) || (38..toString() << /[a2][^e]+$/) + true * 22;
c = 1 + c, ("bar" & true) === Infinity / NaN ^ (parseInt_2 && (parseInt_2[b = a] = "undefined" << 23..toString() <= ([ , 0 ].length === 2 === "function")));
}
} catch (b_2_1) {
{
var expr23 = (c = 1 + c, (parseInt_2 && (parseInt_2.var = -1 || "")) >>> (undefined == []) <= -5 + null << (parseInt_2 >>= 38..toString() * this));
for (var key23 in expr23) {
c = 1 + c, +(24..toString() >= "bar" ^ undefined === []);
}
}
{
}
} finally {
try {
c = 1 + c, (parseInt_2 && (parseInt_2[(c = 1 + c, 3 << undefined >> Infinity - 0 > ("number" && [ , 0 ].length === 2) % (c = c + 1,
"bar"))] += 3 / -0), "foo" != 38..toString()) - (2 ^ 2 | [ , 0 ][1] ^ 1);
} catch (b_1) {
} finally {
}
try {
c = 1 + c, (5 * "undefined" ^ (-4 ^ -2)) != (4 & 23..toString()) >= (22 <= undefined);
} finally {
}
}
} while (a++ && --brake18 > 0);
}
L142681: {}
}
var Infinity_1 = f10(38..toString(), this, 23..toString());
}
var c_1 = f0();
console.log(null, a, b, c);
```js
// uglified code
// (beautified)
var _calls_ = 10, a = 100, b = 10, c = 0;
function f0(t, n, o) {
function i() {
for (var i = 5; t && (t[(c = 1 + c, +((this >= -3) >> 3))] = NaN), i > 0; --i) {
for (var r = 5; --_calls_ >= 0 && (c = 1 + c, o && (o.var = 0 >>> (o && (o[(c = 1 + c,
o && (o.foo >>= 0 >= (c += 1, 38..toString() >= !1)))] >>>= !1))), function() {
try {
c = 1 + c, o = (38..toString() || -0) <= (o && (o[(c = 1 + c, c += 1, !0)] += 24..toString() % -0)) !== 0 + (t &= !1);
} catch (t) {}
}(--b, (c = 1 + c, 0 >= (n && (n.var = NaN)) != (!1 ^ delete Infinity) || 1).toString()[(c = 1 + c,
!1 / (23..toString() == 1 / 0) == +(t && (t.null = 24..toString())))]), c += 1,
c = 1 + (c += 1), t && (t.undefined = 0), void (o += 38..toString() && [])) && --r > 0; ) {}
}
c += 1;
}
o = i((c += 1, --_calls_ >= 0 && i((c = 1 + c, o = 0 == (NaN ^ -5 > this))), a++,
a--, c = 1 + c, o && (o.NaN = !0), c = 1 + c, o && (o[(c = 1 + c, ((2 === [ , 0 ].length) % void 0 ^ (3 | this)) + (!0 ^ 5 == 23..toString()))] = (2 === [ , 0 ].length) % null),
c = 1 + c, 24..toString(), 38..toString(), c = 1 + c, 23..toString(), t && (t[/[a2][^e]+$/] %= 22 == 24..toString() | (o = !0)),
c = 1 + c), function() {
c += 1;
var t = "boolean" != typeof a;
for (var n in t) {
c = 1 + c;
}
}());
var r = function() {
var t = (c += 1) + (--_calls_ >= 0 && i((t++, /[abc4]/.test((c = 1 + c, c += 1,
!0).toString())))), n = --b + ((c += 1) + t++ || t || 3).toString();
t++, new function() {
this.foo >>>= (NaN ^ (this && "function")) >> (0 != (o >>>= !1)), this[t++ + (--b + [] || 7).toString()[void 0]] = (23..toString() <= 0) << (c += 1,
"foo") ^ (24..toString(), -2 & (n *= void 0 - 23..toString())), c = 1 + c, 24..toString(),
38..toString(), 24..toString();
}();
}();
!function() {
var t = 5;
do {
try {
c = 1 + c, c = 1 + (c += 1), r && (r[b = a] = "undefined" << 23..toString() <= (2 === [ , 0 ].length === "function"));
} catch (t) {
var n = (c = 1 + c, (r && (r.var = -1)) >>> (void 0 == []) <= -5 << (r >>= 38..toString() * this));
for (var o in n) {
c = 1 + c, 24..toString();
}
} finally {
try {
c = 1 + c, r && (r[(c = 1 + c, 3 > (2 === [ , 0 ].length) % (c += 1, "bar"))] += -1 / 0),
38..toString();
} catch (t) {}
try {
c = 1 + c, 23..toString();
} finally {}
}
} while (a++ && --t > 0);
}(38..toString(), 23..toString());
}
var c_1 = f0();
console.log(null, a, b, c);
```js
original result:
null 105 -1 130
uglified result:
null 105 -1 139
minify(options):
{
"compress": {
"keep_fargs": false,
"passes": 100
}
}
Suspicious compress options:
collapse_vars
evaluate
inline
join_vars
passes
reduce_vars
side_effects
typeofs
unused
// original code
// (beautified)
var _calls_ = 10, a = 100, b = 10, c = 0;
function f0(a_2, a_1) {
function f1(a_1, parseInt_1) {
for (var brake1 = 5; (c = c + 1) + [ 25, a_2 && a_2[(c = 1 + c, a_1 && (a_1.Infinity += (parseInt_1 && (parseInt_1[{}] = (c = c + 1,
{}) === !/[a2][^e]+$/)) <= ((null == 0) < (0 & "number"))))], --a ][typeof f2 == "function" && --_calls_ >= 0 && f2(0)] && brake1 > 0; --brake1) {
c = c + 1;
}
c = c + 1;
}
var a_1 = f1(1);
function f2() {
var arguments = a++ + (b += a);
var bar_2 = a++ + (a_1 && a_1.in);
}
function f3(NaN_1, c_1) {
function f4() {
c = c + 1;
var a_2 = (c = 1 + c, undefined > 25 ^ [] >>> -4 || c_1 && (c_1.c = Infinity % 5 === -0 * -4));
}
var c_2 = f4();
function f5(Infinity_2) {
function f6(a, b_1, Infinity_2_2) {
}
var b_2 = f6();
function f7(b_2_1, foo_1) {
}
var b = f7();
}
var arguments_1 = f5([ , 0 ][1], 2);
function f8() {
switch (c = 1 + c, c_1 && (c_1.in ^= (5 >>> "") * (Infinity <= false) + (false >>> this >> (23..toString(),
3)))) {
case c = 1 + c, (("function" | null) > (false < -2)) / (-undefined !== ("function" ^ 1)):
;
break;
case c = 1 + c, (-0 !== -5 ^ [] / -4) * ((3 !== -4) * ({} ^ false)):
;
break;
case c = 1 + c, (c = c + 1, "undefined") << ("number" === 4) == ([ , 0 ][1] !== "" && 5 - 25):
;
case c = 1 + c, (38..toString() >= /[a2][^e]+$/) >>> (c = c + 1, 38..toString()) << ((3 | NaN) > (null <= -4)):
;
break;
}
{
var brake9 = 5;
while ((c = 1 + c, ((arguments_1 && (arguments_1[(c = 1 + c, this >>> [] === false > [] ^ ("number" == this) >= (c_1 && (c_1.c += ([ , 0 ].length === 2) % 24..toString())))] = [ , 0 ][1] != ([ , 0 ].length === 2))) == 3 <= 38..toString()) % (-5 >>> "number" === (arguments_1 && (arguments_1[(c = 1 + c,
(a_1 *= (22 == -4) >>> (25 >>> ([ , 0 ].length === 2))) <= (24..toString() || 2 || "number" && 25))] = "function" / "object")))) && --brake9 > 0) {
c = 1 + c, ([] == "number", 23..toString() ^ "number") ^ 1 !== true != (c = c + 1,
null);
}
}
}
var a_1_1 = f8(-4, (c = c + 1) + (typeof f5 == "function" && --_calls_ >= 0 && f5()), "");
}
var b_2 = f3();
function f9(a_1) {
function f10() {
{
return c = 1 + c, (c = c + 1, 38..toString()) >> "bar" + -1 === ([ , 0 ][1] != 24..toString()) <= (a_1 && (a_1[(c = 1 + c,
([ , 0 ][1] < "object" == (a_1 && (a_1[(c = 1 + c, void (("function" && 1) !== NaN / ([ , 0 ].length === 2)))] = 5 >>> -0))) % (-0 < {} !== this << 1))] >>>= "number" & 3));
}
}
var parseInt_1 = f10();
function f11(b) {
c = 1 + c, a_2 && (a_2.NaN += (parseInt_1 && (parseInt_1[--b + (b_2 && b_2[(c = 1 + c,
a_1 && (a_1.b %= (a_1 && (a_1[a++ + typeof (c = 1 + c, a_2 = (/[a2][^e]+$/ / [] >= (true > [ , 0 ][1])) - ((a_1 && (a_1.null = -0 <= "number")) !== ("number" != -0)))] = (-0,
[], "bar" || [ , 0 ][1]))) >= (-5 & 4 && (22, 24..toString()))))])] = "function" < ([ , 0 ].length === 2) !== (true | 4))) ^ (2 < {}) >> (Infinity >= true));
for (var brake14 = 5; (c = 1 + c, (-1 ^ {}) >> ![ , 0 ][1] < (5 || -3) + (a_2 ^= 22 === /[a2][^e]+$/)) && brake14 > 0; --brake14) {
c = 1 + c, 22 - 25 == (a_1 && (a_1[(c = 1 + c, (c = c + 1, -2) >= (([ , 0 ][1] & null) == (/[a2][^e]+$/ == null)))] = "function" && 4)),
a_1 && (a_1[a++ + void function parseInt_1_2() {
}()] = ("number" != 24..toString()) << (-2 & -5));
}
}
var b = f11();
function f12(a_2, a_2, c) {
function f13(Math_1) {
}
var a = f13(2, (c = 1 + c, ((false && 38..toString()) >> 22 * 22) - (-1 >= 23..toString() && (3,
Infinity))), (c = 1 + c, [ , 0 ][1] > 24..toString() === [] >> 0 && this != "number" != "function" << 25));
function f14(arguments_1, parseInt_1_1) {
}
var b_1 = f14("function", [ , 0 ].length === 2);
function f15(a_2) {
}
var a_2 = f15((c = 1 + c, (0 != 23..toString()) >= (4 || /[a2][^e]+$/) & ~("number",
NaN)), "function", (c = 1 + c, ([ , 0 ].length === 2) % true > ("function" != 25) != (a_1 && (a_1.Infinity = -4 ^ -4) || "foo" < "")));
function f16(bar_1, bar) {
}
var foo = f16((c = 1 + c, !(a_1 = ({} << 23..toString(), delete "foo"))));
function f17() {
}
var b_2 = f17();
}
var a_1 = f12(23..toString(), /[a2][^e]+$/, "");
function f18(a_1, a_1_1, NaN) {
{
var expr16 = (c = 1 + c, (3 > [ , 0 ][1] && [] <= 22) <= (4 <= "bar") + ("object" == 23..toString()));
L304354: for (var key16 in expr16) {
c = 1 + c, (a_1 && (a_1[(c = 1 + c, (1 === NaN) % (4 ^ 1) ^ (parseInt_1 && (parseInt_1.a = (true | /[a2][^e]+$/,
/[a2][^e]+$/ != 24..toString()))))] = undefined >>> -4)) + (-4 - 25) !== (parseInt_1 && (parseInt_1[(c = 1 + c,
(c = c + 1, null && Infinity) > ("foo" | -3 || 23..toString() <= "undefined"))] *= 38..toString() > NaN)) - (23..toString() >= "object");
}
}
switch (c = 1 + c, ((3 === 22) < (Infinity ^ "number")) >> 38..toString() % false % (2 >>> 24..toString())) {
case c = 1 + c, (/[a2][^e]+$/ >>> 2) - (2 + 22) << (Infinity < Infinity == ("object" != -4)):
;
break;
case c = 1 + c, (-2 > 22 && (a_1 += {} >>> [])) | (a_1 && (a_1[(c = 1 + c, (25 / this && null % 23..toString()) !== (-2 >= [] ^ (b_2 && (b_2.NaN = 22 > true))))] = -3 << 4)) * ({} !== -2):
;
break;
case c = 1 + c, (-4 <= this < (c = c + 1, undefined)) / ((a_1 && (a_1[(c = 1 + c,
a_1_1 && (a_1_1[(c = c + 1) + (a_1 && a_1.foo)] = (~[] & /[a2][^e]+$/ > "bar") <= (-"number" === /[a2][^e]+$/ * -3)))] = undefined * Infinity)) <= (22 & 1)):
;
break;
case c = 1 + c, (a_1_1 = (Infinity ^ [ , 0 ][1]) % ([] < false)) | (a_2 && (a_2[b = a] = 5 != 2 != (c = c + 1,
/[a2][^e]+$/))):
;
break;
}
}
var b_2 = f18(-4, typeof parseInt_1 != "unknown");
}
var b_2 = f9(/[a2][^e]+$/, 0, (c = c + 1) + [ --b + {
"": (c = 1 + c, ("number" > this != Infinity / {}) << ("" & 24..toString()) / ("object" << 24..toString()))
}[(c = c + 1) + b_2], (c = c + 1) + !(("object" !== "") >= (-0 & true) <= (-1 >>> 3 >= false - 23..toString())) ][a++ + {
"-2": --b + {
undefined: (c = 1 + c, "undefined" % Infinity >>> (b_2 && (b_2[(c = 1 + c, (1 % -5 & null == "function") === (b_2 = -1 >>> -5 ^ ("" ^ null)))] += this || 4)) >= (-4 != ([ , 0 ].length === 2),
"function" / 24..toString()))
}.NaN
}[(c = c + 1) + null]]);
}
var b_2 = f0(b_2 && b_2.Infinity);
console.log(null, a, b, c);
```js
// uglified code
// (beautified)
var _calls_ = 10, a = 100, b = 10, c = 0;
function f0(t, n) {
n = function() {
for (var i = 5; (c += 1) + [ 25, t && t[(c = 1 + c, 1..Infinity += !1)], --a ][--_calls_ >= 0 && (a++,
b += ++a, a++, void (n && n.in))] && i > 0; --i) {
c += 1;
}
c += 1;
}();
var i = (c = 1 + (c += 1), void function() {
switch (void (c = 1 + c)) {
case c = 1 + c, 0:
case c = 1 + c, !0 * (!1 ^ {}) * (!0 ^ [] / -4):
break;
case c = 1 + c, -20 == (c += 1, 0):
case c = 1 + c, (38..toString() >= /[a2][^e]+$/) >>> (c += 1, 38..toString()) << !0:
}
for (var t = 5; c = 1 + c, (void 0 == 3 <= 38..toString()) % !1 && --t > 0; ) {
c = 1 + c, 23..toString(), c += 1;
}
}((c += 1, --_calls_)));
i = function(n) {
var i = function() {
return c = 1 + c, c += 1, 38..toString() >> "bar-1" === (0 != 24..toString()) <= (n && (n[(c = 1 + c,
(0 == (n && (n[void (c = 1 + c)] = 5))) % (-0 < {} !== this << 1))] >>>= 0));
}();
!function(o) {
c = 1 + c, t && (t.NaN += (i && (i[--o + (r && r[(c = 1 + c, n && (n.b %= (n && (n[a++ + (c = 1 + c,
typeof (t = (/[a2][^e]+$/ / [] >= !0) - (!0 !== (n && (n.null = !1)))))] = "bar")) >= 0))])] = "function" < (2 === [ , 0 ].length) !== 5)) ^ (2 < {}) >> !0);
for (var g = 5; c = 1 + c, (-1 ^ {}) >> !0 < 5 + (t ^= !1) && g > 0; --g) {
c = 1 + c, n && (n[(c = 1 + c, c += 1, !1)] = 4), n && (n[a++ + void 0] = ("number" != 24..toString()) << -6);
}
}();
var o;
23..toString(), o = 1 + (o = ""), 23..toString(), o = 1 + o, 24..toString(), o = 1 + o,
23..toString(), o = 1 + o, n && (n.Infinity = 0), o = 1 + o, 23..toString(), n = void (n = !0);
var r = function(n, o) {
var g = (c = 1 + c, [] <= 22 <= !1 + ("object" == 23..toString()));
for (var S in g) {
c = 1 + c, (-4)[(c = 1 + c, 0 ^ (i && (i.a = /[a2][^e]+$/ != 24..toString())))] = 0,
i && (i[(c = 1 + c, c += 1, !0)] *= 38..toString() > void 0), 23..toString();
}
switch (c = 1 + c, !1 >> 38..toString() % !1 % (2 >>> 24..toString())) {
case c = 1 + c, -24:
case !1 | ((-4)[(c = 1 + (c = 1 + c), (25 / this && null % 23..toString()) !== (-2 >= [] ^ (r && (r.NaN = !0))))] = -48) * (-2 !== {}):
case c = 1 + c, (-4 <= this < void (c += 1)) / (((-4)[(c = 1 + c, o && (o[(c += 1) + (-4).foo] = (!1 & ~[]) <= !1))] = NaN) <= 0):
case c = 1 + c, (o = 0 % ([] < !1)) | (t && (t[a] = 1 != (c += 1, /[a2][^e]+$/))):
}
}(0, "unknown" != typeof i);
}(/[a2][^e]+$/, (c += 1, --b, c = 1 + c, 24..toString(), 24..toString(), c += 1,
c += 1, 23..toString(), a++, --b, c = 1 + c, i && (i[(c = 1 + c, 0 == (i = 31))] += this || 4),
24..toString(), c += 1));
}
var b_2 = f0(b_2 && b_2.Infinity);
console.log(null, a, b, c);
```js
original result:
null 107 108 55
uglified result:
null 108 109 55
minify(options):
{
"compress": {
"keep_fargs": false,
"passes": 100
}
}
Suspicious compress options:
collapse_vars
evaluate
inline
join_vars
passes
reduce_vars
sequences
typeofs
unused
// original code
// (beautified)
var _calls_ = 10, a = 100, b = 10, c = 0;
function f0(b_1, b, b_2) {
function f1(a) {
for (var brake1 = 5; {
in: [ (c = 1 + c, (3 ^ -1 | ("bar" | "bar")) >= (("number" | null) & 23..toString() % -2)), (c = 1 + c,
"number" / "object" >> (3 || /[a2][^e]+$/) === 22 / 4 >> (-1 >> 5)), (c = 1 + c,
(-5 >= this ^ 22 + -3) !== ((b_2 += "" << "function") && + -3)), (c = 1 + c, b_2 && (b_2.Infinity += (null >>> true | 23..toString() > -2) << ("object" + "function") % ("" + -2))) ][(c = 1 + c,
(4 << -4) / (([ , 0 ].length === 2) > 38..toString()) !== ([] >> NaN, -0 & 25))],
foo: a++ + ((c = 1 + c, c = c + 1, (b_2 += 23..toString() & 3) - (b_2 && (b_2.in |= 5 >> 22))) || 3).toString()[(c = 1 + c,
undefined + "undefined" > "undefined" + {} | (undefined && [ , 0 ].length === 2) ^ /[a2][^e]+$/ * true)],
c: /[abc4]/.test(((c = 1 + c, (-0 || -1) >>> (-4 > "bar") != (b_2 && (b_2.in = ([ , 0 ].length === 2) >>> 0 >>> ("object" != "number")))) || b || 5).toString())
}[--b + (typeof f2 == "function" && --_calls_ >= 0 && f2("object", (c = 1 + c, (b_1 && (b_1.NaN = (c = c + 1,
"function") ^ {} >= 5)) * ((-3 != undefined) - ([ , 0 ][1] >>> null))), (c = 1 + c,
(c = c + 1, ([ , 0 ].length === 2) < -3) % ([ , 0 ][1] % true | (true || NaN)))))] && brake1 > 0; --brake1) {
var brake2 = 5;
L255899: while (--b + b++ && --brake2 > 0) {
try {
{
var brake4 = 5;
do {
c = 1 + c, (-2 ^ Infinity || 5 && "number") & ("foo" & -5 && -3 ^ 23..toString());
} while ((c = 1 + c, (b_1 && (b_1[typeof b_1 == "function" && --_calls_ >= 0 && b_1("function", (c = 1 + c,
(-2 == "undefined", false, 22) << (b_2 = null <= -1 ^ ("bar" || -1))))] |= 24..toString() - Infinity != (25 !== 25))) + (true < false & Infinity >>> "bar")) && --brake4 > 0);
}
} finally {
c = 1 + c, (2 >>> "undefined") - (-4 >= "object") & ("" + -1 && -2 <= -5);
c = 1 + c, ((b_2 && (b_2[(c = 1 + c, ("" % "number" <= (b_1 += {} !== "object")) % ((1 || 25) / (23..toString() << -0)))] /= NaN + "bar")) !== null > undefined) > (([ , 0 ][1],
"") && {} > this);
}
}
}
return (a++ + (typeof f1 == "function" && --_calls_ >= 0 && f1({})) || a || 3).toString();
}
var b = f1(2, a++ + (b_1 && b_1.c));
function f2(foo_2) {
var b_1_2 = a++ + --b;
var foo_1 = 0 === 1 ? a : b, foo_2 = b += a;
}
function f3(parseInt_1, parseInt_1_1) {
switch (--b + parseInt_1_1) {
case a++ + (0 === 1 ? a : b):
try {
switch (c = 1 + c, ("number" >> 2, null + NaN) !== (c = c + 1, "") < /[a2][^e]+$/ / "function") {
case c = 1 + c, (parseInt_1 = false < 1 >= null << "function") < ((b_2 && (b_2[(c = 1 + c,
(24..toString() - 4 >>> (Infinity <= "foo")) + (+[ , 0 ][1] <= ([ , 0 ][1] === -0)))] += {} ^ [])) === (-4 == null)):
;
break;
default:
;
case c = 1 + c, +(2 << 5) % ((true != 1) >>> this + this):
;
break;
case c = 1 + c, ("number" >> -5) + (true && 4) == (c = c + 1, "bar") <= (23..toString() != 5):
;
break;
}
} catch (undefined_1) {
c = 1 + c, ((24..toString() && 23..toString()) == "undefined" > "") >> (4 + -3) / (-4 << 5);
c = 1 + c, (38..toString() / -5 ^ (b_2 += 5 >= 4)) !== ([ , 0 ][1] === "bar") < (c = c + 1,
23..toString());
}
{
var brake16 = 5;
do {
{
}
} while (a++ + (b += a) && --brake16 > 0);
}
break;
default:
case --b + typeof b--:
c = c + 1;
break;
case (1 & "bar") < undefined % -0 ^ false !== 1 == 2 * "undefined":
{
var brake19 = 5;
do {
{
}
} while (!b && --brake19 > 0);
}
{
c = 1 + c, 22 / false === (c = c + 1, "") !== (0 < false === (4 !== -2));
c = 1 + c, (parseInt_1 && (parseInt_1[--b] += (parseInt_1 = "function" % 5) % (null + 2))) >> ((23..toString(),
undefined) >> 0 * {});
c = 1 + c, (-1, {}) != [] * /[a2][^e]+$/ != {} >= 25 < "object" - -0;
}
break;
}
switch (a--) {
case a++ + typeof parseInt_1_1:
c = c + 1;
break;
case a++:
break;
case a++ + [ b_1 && b_1[(c = 1 + c, parseInt_1_1 && (parseInt_1_1.null = ((b_1 && (b_1.a >>>= ([],
-5))) | 0 * 0) - ((-5, undefined) | -4 >= 38..toString())))], (c = 1 + c, (c = c + 1,
"number" || 24..toString()) >>> ((false !== -0) <= ([ , 0 ].length === 2 || -4))), --b + ((c = 1 + c,
(0 ^ [] | (2, "foo")) & ((parseInt_1_1 += -5 & -5) | NaN === 5)) || 0).toString()[(c = 1 + c,
([ , 0 ][1] * NaN && "number" >= 1) >= (parseInt_1 && (parseInt_1[(c = 1 + c, ([ , 0 ].length === 2) / 24..toString() * +3 + (([ , 0 ].length === 2 || -0) <= 23..toString() * -0))] = true * "object")) + (1 === -0))], a++ + (b = a), a++ + /[abc4]/.test(((c = 1 + c,
c = c + 1, this < "" >= -3 + Infinity) || b || 5).toString()) ][a++ + (typeof f3 == "function" && --_calls_ >= 0 && f3("undefined"))]:
break;
case typeof f2 == "function" && --_calls_ >= 0 && f2(25, --b + (parseInt_1 && parseInt_1[(c = 1 + c,
(22 ^ [] ^ true < "undefined") & -2 + {} !== (5 == "function"))]), 23..toString()):
return (c = c + 1) + {
in: (c = 1 + c, (4 === "") < (true, 1) <= (-5 >= 2 ^ -5 !== 3)),
0: (c = 1 + c, (parseInt_1_1 && (parseInt_1_1.undefined = false - "function")) >> (-5 ^ 3) || void /[a2][^e]+$/ | 3 & -3),
null: (c = 1 + c, (2 << 2) / (2 <= "number") === ~(null > Infinity)),
in: (c = 1 + c, (parseInt_1_1 && (parseInt_1_1.b >>= 0 < 5)) > (/[a2][^e]+$/ === 3) | undefined >= -2 <= ("function" !== []))
};
break;
}
}
}
var bar_2 = f0(this, [ , 0 ].length === 2, [ -1 ][a++ + void ((bar_2 && (bar_2.NaN += 4 / 3 * (1 >> "bar"))) % (2 % NaN !== 0 + []))]);
console.log(null, a, b, c);
```js
// uglified code
// (beautified)
var _calls_ = 10, a = 100, b = 10, c = 0;
function f0(n, t, i) {
function o(r) {
for (var l = 5; {
in: [ (c = 1 + c, -4 >= (0 & 23..toString() % -2)), (c = 1 + c, !0), (c = 1 + c,
(-5 >= this ^ 19) !== ((i += 0) && -3)), (c = 1 + c, i && (i.Infinity += (0 | 23..toString() > -2) << NaN)) ][(c = 1 + c,
(4 << -4) / ((2 === [ , 0 ].length) > 38..toString()) != 0)],
foo: r++ + (c = 1 + c, c += 1, (i += 3 & 23..toString()) - (i && (i.in |= 0)) || 3).toString()[(c = 1 + c,
void 0 + "undefined" > "undefined" + {} | 0)],
c: /[abc4]/.test((c = 1 + c, -1 >>> !1 != (i && (i.in = (2 === [ , 0 ].length) >>> 0 >>> !0)) || t || 5).toString())
}[--t + (--_calls_ >= 0 && (c = 1 + c, n && (n.NaN = (c += 1, "function" ^ {} >= 5)),
c = 1 + c, c += 1, a++, --t, void (t += ++a)))] && l > 0; --l) {
for (var f = 5; --t + t++ && --f > 0; ) {
try {
var e = 5;
do {
c = 1 + c;
} while (c = 1 + c, (n && (n["function" == typeof n && --_calls_ >= 0 && n("function", (c = 1 + c,
22 << (i = 0)))] |= 24..toString() - 1 / 0 != 0)) + 0 && --e > 0);
} finally {
c = 1 + (c = 1 + c), i && (i[(c = 1 + c, (NaN <= (n += "object" !== {})) % (1 / (23..toString() << -0)))] /= "NaNbar");
}
}
}
return (r++ + (--_calls_ >= 0 && o({})) || r || 3).toString();
}
t = o(2, (a++, n && n.c));
}
var bar_2 = f0(this, 2 === [ , 0 ].length, [ -1 ][a++ + void (bar_2 && (bar_2.NaN += 4 / 3 * 1))]);
console.log(null, a, b, c);
```js
original result:
null 107 10 74
uglified result:
null 112 10 74
minify(options):
{
"compress": {
"keep_fargs": false,
"passes": 100
}
}
Suspicious compress options:
collapse_vars
evaluate
inline
join_vars
passes
reduce_vars
sequences
typeofs
unused
// original code
// (beautified)
var _calls_ = 10, a = 100, b = 10, c = 0;
function f0(Math_1) {
function f1() {
{
var brake1 = 5;
do {
} while (typeof f2 == "function" && --_calls_ >= 0 && f2(a++ + "undefined", 24..toString()) && --brake1 > 0);
}
{
switch (+(1 !== [ , 0 ][1] != (undefined == 23..toString()) ^ -(23..toString() || NaN))) {
case --b + (b *= a):
c = 1 + c, (Math_1 && (Math_1.a += undefined + -5 >> (23..toString() ^ 24..toString()))) * (NaN << {} ^ "foo" == -3);
break;
case (c = c + 1) + (typeof f3 == "function" && --_calls_ >= 0 && f3("", (c = 1 + c,
delete ((1 === ([ , 0 ].length === 2)) > (([ , 0 ].length === 2) > ([ , 0 ].length === 2)))), true)):
c = 1 + c, ("undefined" <= 22 <= (c = c + 1, -2)) + ("bar" * "" >> ("object" == Infinity));
c = 1 + c, (c = c + 1, ([ , 0 ].length === 2) * 22) || Math_1 && (Math_1.NaN = "foo" & -2) && -5 ^ true;
break;
case a++ + a--:
c = 1 + c, (-4 && -2) + (Math_1 && (Math_1.null = [] ^ 1)) | (3 >>> "object" || (-3 || 38..toString()));
c = 1 + c, (this == "foo") >>> ("undefined" >> -3) < ((-1 | NaN) >= (Math_1 && (Math_1[(c = 1 + c,
Math_1 && (Math_1[--b + (b = a)] -= (false << -1 | (22 | -0)) - (3 < NaN === (false || "bar"))))] = this < "foo")));
break;
default:
c = 1 + c, ((/[a2][^e]+$/ || 25) && (3 || -2)) << ((-1 != "function") > (/[a2][^e]+$/ ^ "number"));
c = 1 + c, 5 <= "bar" !== 2 << -4 ^ (2 === 5) << true + ([ , 0 ].length === 2);
}
}
}
var parseInt_1 = f1();
function f2(bar_2) {
{
var b_1 = function f3(parseInt_1_1, bar_2) {
var Infinity_1 = (c = 1 + c, 2 <= 3 > -"foo" === this * "" <= (NaN & {})), parseInt_1 = (c = 1 + c,
3 == this == 0 > "object" & (c = c + 1, -5 !== "object"));
}();
}
return;
}
function f4() {
c = c + 1;
c = c + 1;
}
var Math_1_1 = f4(a++ + {
a: /[abc4]/.test((--b + ([ , 0 ].length === 2) || b || 5).toString())
}[[ b--, --b + "function", {
b: (c = 1 + c, (-3 & "function") / ("bar" === -0) ^ ("bar" ^ "undefined") >> (-3,
Infinity)),
"": (c = 1 + c, ("function", 3) === -3 * "bar", ("object" ^ "object") >> -5 + undefined),
b: (c = 1 + c, (NaN << 22) % (this > 0) - ((25 ^ Infinity) !== (parseInt_1 && (parseInt_1.NaN = [ , 0 ][1] && this))))
}[(c = 1 + c, (-0 > NaN) >> -4 % -5 || "function" / /[a2][^e]+$/ << (-2 ^ 22))], --b + (Math_1_1 && Math_1_1.c) ][a++]], false, {});
function f5(b_2, a_1, parseInt) {
for (var brake18 = 5; a++ + (typeof f6 == "function" && --_calls_ >= 0 && f6(typeof parseInt_1 == "function" && --_calls_ >= 0 && parseInt_1((c = 1 + c,
c = c + 1, [] <= true <= -4 << {}), 25, -2), !b, "foo")) && brake18 > 0; --brake18) {
c = c + 1;
}
{
var brake20 = 5;
L186734: while ((b = a) && --brake20 > 0) {
try {
L186735: {
c = 1 + c, ([ , 0 ][1] >= [] <= -0 >>> -3) + ((38..toString() ^ true) & (-4 ^ 5));
}
} finally {
c = 1 + c, (-4 >> "number" == ([ , 0 ].length === 2) + -0) >> (Infinity << null < this / 5);
}
}
}
}
var bar = f5([], typeof a_1 === "crap");
}
var b_2 = f0(-(/[a2][^e]+$/ << true, [ , 0 ][1] << 5, b_2 = (-3 ^ -2) <= "number" + ([ , 0 ].length === 2)), --b, b + 1 - .1 - .1 - .1);
console.log(null, a, b, c);
```js
// uglified code
// (beautified)
var _calls_ = 10, a = 100, b = 10, c = 0;
function f0(t) {
var o = function() {
var o = 5;
do {} while (--_calls_ >= 0 && (a++, 24..toString(), c = 1 + c, c = 1 + (c = 1 + c),
void (c += 1)) && --o > 0);
switch (+(1 != (void 0 == 23..toString()) ^ -(23..toString() || NaN))) {
case --b + (b *= a):
c = 1 + c, t && (t.a += NaN >> (23..toString() ^ 24..toString()));
break;
case (c += 1) + ("function" == typeof f3 && --_calls_ >= 0 && f3("", (c = 1 + c, !0), !0)):
c = 1 + c, c = 1 + (c += 1), c += 1, 22 * (2 === [ , 0 ].length) || t && (t.NaN = 0);
break;
case a++ + a--:
c = 1 + c, t && (t.null = 1 ^ []), c = 1 + c, t && (t[(c = 1 + c, t && (t[--b + (b = a)] -= 22))] = this < "foo");
break;
default:
c = 1 + (c = 1 + c);
}
}(), n = (a++, /[abc4]/.test((--b + (2 === [ , 0 ].length) || b || 5).toString()),
b--, --b, c = 1 + c, c = 1 + c, c = 1 + c, o && (o.NaN = 0), c = 1 + c, --b, n && n.c,
a++, c += 1, void (c += 1));
!function() {
for (var t = 5; a++ + ("function" == typeof f6 && --_calls_ >= 0 && f6("function" == typeof o && --_calls_ >= 0 && o((c = 1 + c,
c += 1, [] <= !0 <= -4 << {}), 25, -2), !b, "foo")) && t > 0; --t) {
c += 1;
}
for (var n = 5; (b = a) && --n > 0; ) {
try {
c = 1 + c, 38..toString();
} finally {
c = 1 + c;
}
}
}();
}
var b_2 = f0(-(b_2 = 3 <= "number" + (2 === [ , 0 ].length)), --b, b + 1 - .1 - .1 - .1);
console.log(null, a, b, c);
```js
original result:
null 109 109 25
uglified result:
null 109 109 26
minify(options):
{
"compress": {
"keep_fargs": false,
"passes": 100
}
}
Suspicious compress options:
collapse_vars
evaluate
if_return
inline
passes
reduce_vars
sequences
typeofs
unused
Sorry, schoolboy error - that last one is just your average unused false positive.
Only four cases in 1.2MFuzz
I can't reproduce the first test case:
That's weird - I can. Hopefully this isn't OS-dependent... :see_no_evil:
That's weird - I can. Hopefully this isn't OS-dependent...
I tried a few node versions with various options and could not get the first test case to fail. Once you reduce the test case I can try again.
My current test case:
issue_2630: {
options = {
collapse_vars: true,
inline: true,
passes: 2,
reduce_funcs: true,
reduce_vars: true,
sequences: true,
side_effects: true,
unused: true,
}
input: {
var c = 0;
(function() {
while (f());
function f() {
var a = function() {
var b = c++, d = c = 1 + c;
}();
}
})();
console.log(c);
}
expect: {
var c = 0;
(function() {
while (c++, void (c = 1 + ++c)) ;
})(),
console.log(c);
}
expect_stdout: "2"
}
I saved your reduced test case, renamed it and tried to run it with node and got this baffling result:
$ cat test1reduced.js | node
Galloping...
Tommy the Palomino moved 34m.
It turns out I had an old test program by the same name (I'm not very inventive) and the file move had failed and I didn't see the error.
The reduced test case does indeed fail here:
$ cat test1b.js | node
2
$ cat test1b.js | bin/uglifyjs --toplevel -c passes=9 | node
3
while (f()); function f() {
Was this a forward call generated by the most recent ufuzz changes?
Tommy the Palomino moved 34m.
You've made my day! :rofl:
Was this a forward call generated by the most recent ufuzz changes?
Yup - and single-use to boot 😎
I thought I'd reduce the third test case, but it appears similar to the one already reduced above. You might make a test of it anyway.
$ cat tc3.js
var c = 0;
!function() {
while (f()) {}
function f() {
var not_used = function() {
c = 1 + c;
}(c = c + 1);
}
}();
console.log(c);
$ cat tc3.js | node
2
md5-83a03272ee61cfa3b07dc28bb990ddaa
$ cat tc3.js | bin/uglifyjs -c passes=2 | node
3
It'd be easier if a new issue was created for each fuzz failure.
Test case 5 reduced:
$ cat tc5.js
var x = 2, a = 1;
(function() {
function f1(a) {
f2();
--x >= 0 && f1({});
}
f1(a++);
function f2() {
a++;
}
})();
console.log(a);
```
$ cat tc5.js | node
5
$ cat tc5.js | bin/uglifyjs -bc | node
2
```js
$ cat tc5.js | bin/uglifyjs -bc
var x = 2, a = 1;
!function() {
function f1(a) {
a++, --x >= 0 && f1({});
}
f1(a++);
}(), console.log(a);
Test case 4 reduced:
$ cat tc4.js
var x = 3, a = 1, b = 2;
(function() {
(function f1() {
for (; --x >= 0 && f2();) {}
}());
function f2() {
a++ + (b += a);
}
})();
console.log(a);
```
$ cat tc4.js | node
2
$ cat tc4.js | bin/uglifyjs -bc | node
3
```js
$ cat tc4.js | bin/uglifyjs -bc
var x = 3, a = 1, b = 2;
!function() {
!function() {
for (;--x >= 0 && void (a++, b += ++a); ) ;
}();
}(), console.log(a);
Thanks for the test cases – I'm under the impression that they are all of the same bug, hence the single report.
Though now that I have to scroll through it, I think I shall make a separate issue for each ufuzz report in the future...
do/while test variation:
$ cat tc3c.js
var c = 1;
!function() {
do {
c *= 10;
} while (f()) {}
function f() {
return function() {
return (c = 2 + c) < 100;
}(c = c + 3);
}
}();
console.log(c);
```
$ cat tc3c.js | node
155
$ cat tc3c.js | bin/uglifyjs -bc passes=2 | node
188
```js
$ cat tc3c.js | bin/uglifyjs -bc passes=2
var c = 1;
!function() {
do {
c *= 10;
} while (c += 3, (c = 2 + (c += 3)) < 100);
}(), console.log(c);
I'm under the impression that they are all of the same bug, hence the single report.
Did that impression hold true?
What's the current fuzz count or will you reset?
Did that impression hold true?
Sort of - there are three different bugs, but the failed cases overlap between what they've tripped over :sweat:
What's the current fuzz count or will you reset?
I always reset when master got (code) changes.
... and without #2636 the fix for this issue would trip over a whole can of worms as well.
What's the new fuzz iteration target before release?
I'm aiming for 5MFuzz - hopefully the extra day is going to help :wink: