//-------------------------------------------------------------------------------------------------------
// 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 = -26334;
b = -16262;
c = 12399;
d = 59332;
e = 14142;
f = -51596;
g = -56381;
h = 58721;
obj0.a = 40223;
obj0.b = -22743;
obj0.c = 15417;
obj0.d = -44090;
obj0.e = 13852;
ary[0] = -26540;
ary[1] = 10742;
ary[100] = 50581;
h = obj0.a;
if(((obj0.e & ((h - a) - (h ? f : 60003))) >= (((obj0.a - a) | obj0.b) - ((+ h) ^ -5262)))) {
  g = f;
} else {
  e = (((obj0.b != obj0.d) + (! b)) > (-2949 & d));
  if(((((! obj0.a) & (53652 > obj0.d)) ^ ((+ 11248) | (47506 <= -30453))) == (((+ -8935) ^ (64652 ? b : e)) & ((34738 == obj0.b) < (d & -52759))))) {
  } else {
    b = g;
    if(((obj0.b + ((-25993 >= d) ? obj0.a : b)) >= (h - -5753))) {
      g = ((4461 | ((h > d) - (++ obj0.d))) ^ (((a | g) | (- 57805)) - ((41879 == f) ? obj0.e : obj0.d)));
      d = e;
    } else {
    }
    h = (((+ (! e)) & 47759) * (((41590 < b) + (b | d)) + (a + 22948)));
  }
}
f = ((((-34602 ^ -17630) ^ obj0.c) & b) & ((-64024 - a) - (g <= obj0.b)));
obj0.a = (((-33556 + (b != 11462)) * obj0.b) - ((obj0.a * (g - -5858)) | a));
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');
})();
