//-------------------------------------------------------------------------------------------------------
// 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 = 27874;
b = 2512;
c = -24792;
d = 55206;
e = -620;
f = 37260;
g = 41045;
h = -39974;
obj0.a = -12159;
obj0.b = 17853;
obj0.c = -23990;
obj0.d = -42464;
obj0.e = 34212;
ary[0] = -29136;
ary[1] = 24602;
ary[100] = -5145;
obj0.a = (+ (((+ -57532) & obj0.b) - ((-57086 <= d) ? (obj0.b | obj0.b) : (-31155 - 23308))));
if(((c + ((a * b) <= (obj0.c != -17139))) < (((obj0.b >= h) ? (+ g) : (g ? 31270 : 49759)) - b))) {
  if((((obj0.d + obj0.b) | (obj0.c++ )) != (((h - 13426) >= (a + -25532)) + obj0.b))) {
    if((((-10962 - (-46815 | obj0.e)) ^ (d < -4029)) == (obj0.a | ((b++ ) <= a)))) {
    } else {
      a = ((g - obj0.c) | ((! (-60835 - obj0.b)) & ((f & 409) + obj0.e)));
      h = (((+ (-15447 * 26890)) * (++ obj0.d)) ? (obj0.d + a) : (g ^ ((-17154 + -40581) - obj0.b)));
    }
  } else {
  }
  obj0.b = ((((f == 57362) ? (39848 + 54387) : (46449 * -48930)) + obj0.c) & (((2008 < obj0.b) ? (-19265 == -8046) : d) + e));
} else {
}
obj0.d = ((((g < 27399) ^ (obj0.c | 1913)) | (+ (-61744 & h))) - (-23933 ^ c));
obj0.a = ((59953 ^ obj0.e) | (obj0.d & ((e ^ obj0.c) < 30949)));
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');
})();
