//-------------------------------------------------------------------------------------------------------
// 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 = -1136;
b = 46910;
c = -27562;
d = -4316;
e = -4695;
f = -24782;
g = -53821;
h = -63351;
obj0.a = -10585;
obj0.b = -42450;
obj0.c = 39387;
obj0.d = -9687;
obj0.e = -5144;
ary[0] = -9395;
ary[1] = 43553;
ary[100] = 25628;
f = c;
obj0.e = (((b - 51368) & (-6677 + (obj0.b ? c : f))) - (((f <= 56281) ? (7385 ^ 58526) : b) - b));
d = obj0.c;
if(((((h - e) * (f | e)) + ((+ b) ^ (-48093 ? -40725 : obj0.e))) == ((e ^ (-24840 + 37130)) + ((d - obj0.d) ^ (h ? c : obj0.c))))) {
} else {
  if(((((9693 > -65098) ? (b ? obj0.c : e) : (d & -42397)) ^ ((-24064 * -43320) - -29667)) > (d | ((-18785 | 2269) - obj0.c)))) {
  } else {
    if((((b <= (d * c)) * (obj0.d + (41051 ^ 42544))) <= (h * ((4248 ? obj0.a : g) + (obj0.e ^ 10136))))) {
      b = g;
    } else {
      obj0.a = ((h + obj0.e) == (obj0.e ^ (g - (-33883 + f))));
      obj0.d = (h++ );
      a = ((b & (f * (g > c))) | ((obj0.d ^ (h ^ c)) ^ -59152));
    }
    b = obj0.e;
  }
}
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');
})();
