//-------------------------------------------------------------------------------------------------------
// 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 = 18629;
b = -55767;
c = -24106;
d = 43486;
e = 29996;
f = 43622;
g = -20658;
h = 30269;
obj0.a = 37100;
obj0.b = -47190;
obj0.c = 58547;
obj0.d = -59117;
obj0.e = 44676;
ary[0] = -48295;
ary[1] = 57326;
ary[100] = -33585;
obj0.e = -44690;
e = (((++ g) * e) ? (obj0.a - ((-26043 * 10367) + (obj0.c | e))) : ((f ^ (-48110 != b)) ^ f));
obj0.b = 43948;
if(((25604 ^ ((-23925 | e) * h)) <= (((-38649 <= g) ^ (obj0.c <= 58984)) & obj0.d))) {
  a = obj0.c;
  d = ((((21614 != obj0.c) | (-64255 | -19677)) & ((b > 28742) ? f : (+ obj0.e))) ^ ((g - (-51937 != obj0.e)) | (obj0.e | c)));
} else {
  if(((h - (e + (39680 * c))) > (((-61629 ^ 37135) * (54892 & e)) * b))) {
  } else {
    d = b;
    h = a;
  }
  d = ((((obj0.c <= obj0.c) ? (34926 & 63025) : (++ a)) & (a + c)) - (h * (481 - (f | a))));
}
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');
})();
