//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------

(function() {
var ary = new Array(10);
var obj0 = new Object();
var a;
var b;
var c;
var d;
var e;
var f;
var g;
var h;
a = 4199;
b = -4437;
c = -54934;
d = 7989;
e = 37231;
f = -27363;
g = 25736;
h = -43345;
obj0.a = -27905;
obj0.b = 16761;
obj0.c = 19076;
obj0.d = 61576;
obj0.e = 42440;
ary[0] = -33686;
ary[1] = 13764;
ary[100] = -36818;
if(((obj0.c - obj0.c) == ((d + (b & b)) & (d++ )))) {
  h = 59048;
  g = (((+ (-5854 & -16664)) - e) & (c + obj0.c));
  obj0.e = ((((-62550 - 42383) - obj0.d) | ((-17079 != 48283) ? 14332 : (h + -43881))) - (a - (obj0.c - d)));
} else {
  h = (((obj0.d * (47073 ^ 4532)) + e) - ((! (-42640 - obj0.e)) - ((-61264 > c) * (13596 + 19612))));
  obj0.a = ((((58006 ? -40635 : c) - e) | obj0.d) ? ((f & -2391) & (a & h)) : (d + ((+ d) + a)));
}
obj0.c = ((h + (f != -24273)) - (-57268 - ((! -932) * (-63603 + g))));
obj0.d = ((((-34635 ? -55181 : f) * a) - ((obj0.e & obj0.e) + (b++ ))) + (obj0.b * ((h | h) * obj0.b)));
if(((obj0.e & (++ obj0.c)) > (obj0.b ^ (51026 + obj0.d)))) {
  f = (((-49811 ^ (18217 ^ -8443)) ^ (+ b)) - (((52447 > -34196) ? f : 22832) | e));
} else {
}
WScript.Echo("a = " + (a>>3));
WScript.Echo("b = " + (b>>3));
WScript.Echo("c = " + (c>>3));
WScript.Echo("d = " + (d>>3));
WScript.Echo("e = " + (e>>3));
WScript.Echo("f = " + (f>>3));
WScript.Echo("g = " + (g>>3));
WScript.Echo("h = " + (h>>3));
WScript.Echo("obj0.a = " + (obj0.a>>3));
WScript.Echo("obj0.b = " + (obj0.b>>3));
WScript.Echo("obj0.c = " + (obj0.c>>3));
WScript.Echo("obj0.d = " + (obj0.d>>3));
WScript.Echo("obj0.e = " + (obj0.e>>3));
WScript.Echo("ary[0] = " + (ary[0]>>3));
WScript.Echo("ary[1] = " + (ary[1]>>3));
WScript.Echo("ary[100] = " + (ary[100]>>3));
WScript.Echo('done');
})();
