//-------------------------------------------------------------------------------------------------------
// 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');
})();
