//-------------------------------------------------------------------------------------------------------
// 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 = -15685;
b = 37138;
c = -61833;
d = 43374;
e = -56240;
f = 12829;
g = -963;
h = -17895;
obj0.a = 29220;
obj0.b = -63504;
obj0.c = -11443;
obj0.d = 40146;
obj0.e = 60851;
ary[0] = -10981;
ary[1] = 57821;
ary[100] = 49333;
g = ((((c - c) > g) ^ ((50254 ^ 33989) & (-35510 ^ -11348))) - (56721 * obj0.e));
if(((e | (! b)) == (((-48432 != h) ? (40523 & obj0.a) : (-43112 & obj0.b)) ^ (-23068 - (f != h))))) {
  if((((b & (obj0.e ^ c)) | g) >= (10257 - obj0.a))) {
  } else {
    if(((obj0.d - b) == (4436 * ((35769 ^ 48838) < h)))) {
      obj0.c = a;
    } else {
    }
    f = ((((47197 + -13951) * (obj0.c - 45211)) | ((g + c) - g)) >= ((h * 5638) | c));
    f = f;
  }
  b = obj0.e;
} else {
}
obj0.b = -60078;
f = b;
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');
})();
