//-------------------------------------------------------------------------------------------------------
// 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 = 21984;
b = 63031;
c = -20916;
d = -9346;
e = -32699;
f = -51062;
g = -5322;
h = -12026;
obj0.a = -340;
obj0.b = 40520;
obj0.c = -12944;
obj0.d = -49215;
obj0.e = -39425;
ary[0] = -30684;
ary[1] = -3031;
ary[100] = -58793;
if((((+ f) ^ ((d + -23168) & b)) != (((h & obj0.a) & (-43356 + -30138)) * (+ (obj0.e | g))))) {
  b = e;
  if(((27267 & e) >= (((+ 65316) <= (662 ? 2604 : obj0.e)) & (obj0.c | 43589)))) {
    b = c;
  } else {
    c = ((obj0.d | ((-30640 == obj0.e) + (obj0.d < d))) + (b + h));
  }
} else {
  e = ((26674 + c) * ((+ obj0.d) + (h > (-62902 & obj0.b))));
  if(((f ^ obj0.b) == (((-56082 - -25357) & (h + 18447)) - (g & a)))) {
    if(((((58426 & 64850) | (-50195 ? 31681 : 13755)) + (c & c)) > (a + -16406))) {
      obj0.e = f;
      obj0.e = b;
      obj0.e = ((a ^ ((-44945 & -7684) + e)) ? (d & obj0.c) : ((h + (obj0.b * 16718)) | (obj0.e | a)));
    } else {
    }
    c = d;
    d = c;
  } else {
  }
  b = ((b - (c ^ c)) * (obj0.b + (a + a)));
}
d = f;
obj0.c = b;
e = ((44617 | ((-64251 < -32526) * obj0.e)) ? ((e | obj0.c) * obj0.a) : (-54183 ^ ((obj0.c ^ -36076) == (obj0.a ^ 1062))));
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');
})();
