//-------------------------------------------------------------------------------------------------------
// 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 = -25346;
b = 36583;
c = -40094;
d = -4701;
e = -17289;
f = 65518;
g = 49167;
h = 34960;
obj0.a = 10508;
obj0.b = 51431;
obj0.c = -40425;
obj0.d = -59368;
obj0.e = -61109;
ary[0] = 44004;
ary[1] = 15399;
ary[100] = 22256;
obj0.b = ((obj0.e - b) | ((h > c) ^ (-23118 | -35115)));
if(((((-2650 - h) != (39021 - -24208)) - obj0.b) == (((10782 ? f : -37982) - b) & -1740))) {
  obj0.b = h;
  obj0.d = ((c * c) & ((g >= -16174) ^ ((-15142 | a) * h)));
  h = (((++ f) - (obj0.a != (63246 ? e : 42472))) & (b + d));
} else {
  e = ((((43309 & a) ^ (36893 * 41563)) & h) ? (((-29094 ? -64501 : b) + (3439 | 54539)) & f) : (obj0.b + (-38734 - (b & 14870))));
}
if(((d * (! (-24130 * -26643))) <= (((-8520 <= d) ? (-29951 ? obj0.a : obj0.a) : e) ^ (f >= (-60967 & 14815))))) {
  obj0.d = (((-43666 - (obj0.c & 35490)) + g) ? (d & obj0.b) : (((g ^ f) + b) ^ ((obj0.a * obj0.c) & (! -38926))));
  obj0.e = d;
  obj0.c = h;
} else {
  obj0.a = ((58922 ^ obj0.d) | (((g + obj0.d) & (obj0.b ? d : obj0.a)) ^ ((obj0.d | d) ^ (e * -31145))));
  f = f;
}
c = ((c + ((h | 50246) & obj0.e)) + (52079 & obj0.c));
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');
})();
