//-------------------------------------------------------------------------------------------------------
// 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 = -60678;
b = 62860;
c = -57038;
d = 27210;
e = -50266;
f = 8721;
g = -13824;
h = 27272;
obj0.a = 62497;
obj0.b = -34416;
obj0.c = 36296;
obj0.d = 35428;
obj0.e = -61921;
ary[0] = -33620;
ary[1] = 20325;
ary[100] = -15094;
a = (((g >= (638 ^ -7350)) + ((d++ ) >= (-3051 | f))) - (((a == d) | g) + d));
c = obj0.b;
d = ((e | ((+ e) * (obj0.d++ ))) - (((c * g) * (d ^ -26611)) | b));
if(((b | (g < (-64161 & 32781))) > (((h == d) | (-9748 * 49112)) * obj0.e))) {
  if(((((e < -17086) ? (-37880 ^ -50964) : (g | -12903)) - obj0.a) <= ((- (h | 7768)) * obj0.c))) {
    if(((((a == -34835) ? obj0.c : -21169) ^ ((35099 <= d) ? obj0.c : obj0.a)) <= (-53356 | (f ^ (+ -7479))))) {
      d = 9609;
      c = a;
    } else {
      f = a;
      c = f;
    }
  } else {
    obj0.b = ((((obj0.e ^ 44868) ^ (-18517 ? d : obj0.d)) * ((c < 30251) ? (-21534 * -50798) : (-33331 - obj0.b))) * (obj0.c | ((-7773 & f) * (-34848 < -56963))));
    if((((+ (f ? d : -968)) * (g - g)) < (obj0.d ^ (d++ )))) {
      obj0.b = ((c | obj0.d) ^ (((obj0.c >= 668) ? (c > b) : obj0.e) | ((-53857 == e) - (63139 & h))));
    } else {
    }
  }
  obj0.d = (obj0.d++ );
} else {
}
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');
})();
