//-------------------------------------------------------------------------------------------------------
// 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 = -43806;
b = 31174;
c = -59451;
d = -50169;
e = -60315;
f = 65358;
g = 21455;
h = 21779;
obj0.a = -45617;
obj0.b = 17888;
obj0.c = -12096;
obj0.d = 43035;
obj0.e = -30876;
ary[0] = -5027;
ary[1] = -57754;
ary[100] = -32670;
obj0.c = ((f | (27276 | (g + obj0.b))) + ((c >= (a ? -35234 : -56220)) - ((56533 <= obj0.a) | (h > b))));
obj0.c = ((obj0.d & (- (-16622 != 60132))) ^ (((g * obj0.e) + obj0.d) ^ ((59810 + h) == obj0.c)));
d = ((obj0.c & (g ^ obj0.a)) ? ((53686 & obj0.c) & (- b)) : (obj0.e - -15407));
h = c;
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');
})();
