//-------------------------------------------------------------------------------------------------------
// 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 = 48418;
b = -57274;
c = 10494;
d = -16942;
e = 26420;
f = 57903;
g = -41652;
h = 28473;
obj0.a = -32127;
obj0.b = -31903;
obj0.c = 641;
obj0.d = 8911;
obj0.e = -59719;
ary[0] = 62533;
ary[1] = 53923;
ary[100] = -19159;
h = (f++ );
if(((((obj0.a & 39512) + (-5142 & 64663)) & d) != (-13575 | (-35891 + (obj0.d * h))))) {
} else {
  if((((-29854 * (-42393 | obj0.c)) & obj0.d) != (((- f) + (obj0.d | c)) + ((-55863 ^ 52686) ^ (-7688 > 15903))))) {
    if(((obj0.e ^ ((f & -49457) + g)) < (obj0.e - (d ^ (e ? -51494 : 10332))))) {
    } else {
      f = -35113;
      d = obj0.e;
      c = ((a * obj0.c) | ((f >= (obj0.d - -16448)) * (! (f ? 23373 : -15607))));
    }
    obj0.b = (((+ (-63402 > h)) * 26528) - (((53958 <= -2801) == f) & (b * (f & obj0.a))));
  } else {
    b = f;
  }
  c = obj0.e;
  obj0.c = 3670;
}
if(((-10289 ^ obj0.d) != (obj0.a | a))) {
  obj0.d = -43649;
} else {
}
d = ((f + h) & (((f + 13631) * (-47507 ? obj0.e : 64765)) ^ ((d ? obj0.c : b) + (f ? -18086 : 17240))));
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');
})();
