//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------

// -forcenative -prejit 
(function(){
  function makeArrayLength(x) { if(x < 1 || x > 4294967295 || x != x || isNaN(x) || !isFinite(x)) return 1; else return Math.floor(x); };;
  function leaf(x) { return x; };
  var obj0 = new Object();
  var func0 = function(){
    e = e & 110606202;
    e = e & 4552246;
    WScript.Echo("obj0.length = " + (obj0.length|0));;
    return a;
  }
  var func1 = function(p0){
    c *=d;
    WScript.Echo("p0 = " + (p0|0));;
    obj0.b = obj0.b & 78947782;
    return (((((c > (((c &= -131) * ((obj0.b = ary[(1)]) - d)) / (d == 0 ? 1 : d))) ? (obj0.a-- ) : a) !== ((((++ b) == (obj0.b ^= 1855731637.1)) ? 2 : (((obj0.a != a) * ((a == b) + (e = (162 === a)))) * ary[(3)] - (e ? e : obj0.b))) % -1179683303)) ? (((obj0.length = c) >= e) < (obj0.length = (obj0.length = 0))) : (ui8[((f32[(ary[(7)]) % 256] >>> ((825286085.1 * (794299771.1 >= e) + f32[(8.45396570501783E+18) % 256]) == (-987166410 ? c : e)))) % 256] > ((((e /= (-192 << -1034655212)) + i16[(-263821955.9) % 256]) * d + ary[(4)]) > (~ ((464970288 ? c : -179) * (ui8[(obj0.length) % 256] - 362882146)))))) != (obj0.a /= i8[(f64[(((((+ 1647381545.1) * (ary[(5)] - (-- obj0.b))) !== ary[((0 >= 0 ? 0 : 0))]) ? ((+ -8.79339434212106E+18) * (((d ? 6.93451720957807E+17 : 1151182360) * (-- c) - obj0.a) + ((947347848.1 <= -859290544) * ui16[(171) % 256] - (c ? 1709754175 : c)))) : (((++ c) * (d |= -2) - b) <= (-1073741824 ? obj0.b : 1073741823)))) % 256]) % 256]));
  }
  var func2 = function(p0,p1,p2,p3){
    WScript.Echo("obj0.a = " + (obj0.a|0));;
    e = e & 126659986;
    e = -1027208076;
    return (129 != obj0.length);
  }
  var ary = new Array(100);
  var i8 = new Int8Array(256);
  var i16 = new Int16Array(256);
  var i32 = new Int32Array(256);
  var ui8 = new Uint8Array(256);
  var ui16 = new Uint16Array(256);
  var ui32 = new Uint32Array(256);
  var f32 = new Float32Array(256);
  var f64 = new Float64Array(256);
  var a = -1041069204;
  var b = 16120609;
  var c = -1002023641;
  var d = -1758430212;
  var e = -967384607;
  obj0.a = 409060009.1;
  obj0.b = -1042467714;
  obj0.length = 1853273065.1;
  ary[0] = 1073741823;
  ary[1] = -1181222211;
  ary[100] = -1692007726;
  ary[ary.length-1] = 1.56172147906074E+18;
  ary.length = makeArrayLength(979754422);
  if((((obj0.a-- ) && (((-1057253331 * (a + ((! b) >= (b == d)))) !== 1312393531.1) ? d : a)) > (- ((506684139 <= (~ (a -= ary[((obj0.a >= 0 ? obj0.a : 0))]))) ? ((b *= 2089056098.1) * (((i8[(2.00271900198517E+18) % 256] * (obj0.a = (b == -6.67556149190768E+18)) - (-1031128599 ? 456950442 : b)) > (-944209483 ? -963682250 : 8)) ? f64[((b | d)) % 256] : (a ^= (a *= -2078660174.9))) + ((-65405033.9 < i8[(c) % 256]) <= 0)) : -1622506626.9)))) {
    if((-1016648206 >= (i32[(((c = 0) * ((-- a) - (e += (((-- a) * (-1059929134 !== c) + (obj0.length ? a : e)) * a + (obj0.a = (-951339733 & obj0.length))))))) % 256] * ((c <<= a) < (((d = (++ obj0.a)) ^ obj0.a) > (((-123 !== 1513723688.1) > (d ? a : obj0.b)) * (! -1129330357) + ((obj0.b <= a) ? (271773481 >= e) : (c >= a))))) + ((ary[(8)] * ui16[((++ d)) % 256] - f32[(((-6.1881757480213E+18 ? -1094894681.9 : obj0.a) * ((e = (c >>= f32[(1269917975.1) % 256])) + (-8.96114060526282E+18 == 0)))) % 256]) > (-1063985662 | (d++ )))))) {
      d = d & 3257039;
      e = e & 7737973;
    }
    else {
    }
    obj0.b = obj0.b & 1978318;
    if((((ui32[((c = ((obj0.a /= ui8[(4.76832128425601E+18) % 256]) * (((3.8482416742016E+18 > obj0.b) * (d &= i8[(e) % 256]) - (2 ? -7 : d)) - (obj0.b >>= (e |= (obj0.b < 6))))))) % 256] === e) ? (~ (-953362469 * (ary[((-1 >= 0 ? -1 : 0))] + (c |= 926953666.1)))) : (obj0.b /= obj0.a)) > (b = ((((~ f32[(-1055472663) % 256]) != ((e ? d : a) >= (e ? b : 80))) ? ((~ (-988203037 > obj0.b)) * ((obj0.b++ ) - obj0.b)) : (c <= ((-1011508426 ? d : -1045400988) < (-968053667 ? d : -6.57540103135981E+18)))) <= (i32[((obj0.a * (ui16[(-951742421) % 256] - (d ? -9707925.9 : obj0.b)))) % 256] < ui32[((d <<= i16[(b) % 256])) % 256]))))) {
      var __loopvar2 = 0;
      LABEL0: 
      do {
        __loopvar2++;
        if((d >= obj0.a)) {
          break LABEL0;
        }
        else {
          e = ((! f64[(((d >>= (((e |= ((obj0.length ? -84 : 68) * (a != -6.50608518242317E+18) - (obj0.length ? -944053256 : -1010808352))) * (-1048520303 === obj0.b) + (e-- )) == 0)) * (((obj0.a ? c : obj0.b) * ((-- c) + (-150 ? obj0.b : 912000184))) * ((c < 5.10270172781181E+18) ? -1053161348 : (obj0.a & c)) - (-- a)) + 2)) % 256]) === (+ (e * ((((d = (b ? obj0.b : 1837975729)) < obj0.a) ? ary[(((f32[(e) % 256] * (e-- ) - (obj0.a ^= f32[(a) % 256])) >= 0 ? (f32[(e) % 256] * (e-- ) - (obj0.a ^= f32[(a) % 256])) : 0))] : (-- e)) + f32[(c) % 256]))));
        }
        var __loopvar3 = 0;
        while(((((-1930508048.9 ? d : obj0.a) <= -996361819) ? i32[((obj0.b <<= (-182110231.9 ? 194312758 : e))) % 256] : i16[((a += (++ obj0.a))) % 256])) && __loopvar3 < 3) {
          __loopvar3++;
          b >>=-2.00225915256806E+18;
          obj0.b =((d = a) != e);
          e = ((-946200633 == ui32[(((ui8[((b -= (245 ? obj0.a : obj0.length))) % 256] > (1199381558.1 < (c %= (-1073741824 * ((b != a) - (obj0.b++ )))))) ? 1425162655 : a)) % 256]) >= f32[((((obj0.length = -1561526158.9) > e) ? ((((27 * b - (obj0.b ? c : -5.98456818074446E+18)) === ui32[(-993056801) % 256]) ? ((-1073741824 != obj0.a) * (d /= (c++ )) + b) : i8[((obj0.a != b)) % 256]) % ((-- obj0.length) * ((ui32[(-6.00265064937279E+18) % 256] == (! -1597265842)) + (a = (-1030853152 ? -480971938.9 : 190))))) : obj0.b)) % 256]);
        }
        obj0.length = i16[(ui32[(e) % 256]) % 256];
        break LABEL0;
        c ^=(c = ui32[((e * ((d == (ui32[((2 <= obj0.length)) % 256] * (obj0.b - (4.93211165430767E+18 * ui32[(d) % 256] - (b >>>= (58 < -9.00431095443273E+18)))))) - ((((340283462 != -1) ? (- -959857256) : ((-710638405 ? 154 : -778219823.9) * (a + (c >>= (e ? e : 244))))) == 59) ? (((-1630557418 > 1) - b) % ((994689190.1 + -8.84663556176144E+18) / (-960668947 == 0 ? 1 : -960668947))) : obj0.length)))) % 256]);
        if(((- (++ e)) === (e <<= (((b /= ((obj0.length *= ((-736809332 * (b++ ) - (obj0.b ? a : c)) * ((+ obj0.a) - -162))) < i8[(657339110.1) % 256])) <= (d != ((c *= (464707767.1 <= -596851690)) < (obj0.b ? b : c)))) <= (a = (obj0.b /= ((b != c) < (obj0.length-- )))))))) {
          WScript.Echo("e = " + (e|0));;
          c &=(obj0.b * ((++ a) + ((c |= (++ e)) / (-1802682796 == 0 ? 1 : -1802682796))));
          c = c & 69462288;
          e = -1;
          WScript.Echo("b = " + (b|0));;
          d = -2;
        }
        else {
          WScript.Echo("obj0.b = " + (obj0.b|0));;
          e = e & 73637128;
        }
      } while((((~ ((-956384212 < 92) ? i32[(-7.44004984019377E+18) % 256] : f64[(obj0.b) % 256])) == (695439701.1 - (i16[(-1062619128) % 256] <= (3.22550693156426E+18 <= -25410918.9))))) && __loopvar2 < 3)
      var __loopvar2 = 0;
      do {
        __loopvar2++;
        a = a & 115971105;
        if((ary[((obj0.a >= 0 ? obj0.a : 0))] < obj0.length)) {
          c = c & 60936890;
          a = (b >>= (d = ((++ obj0.b) * ui16[((((101 % -2147483648) <= ui32[(a) % 256]) ? obj0.a : ((obj0.length *= (b = (a = (-1033083240 ? -963517660 : a)))) % -1985296114.9))) % 256] - obj0.a)));
        }
        else {
          obj0.a = 1450519409;
          b =(((- ((f64[((-6.06048365755418E+18 * (96 ? 107812186.1 : obj0.a) + (~ -1029794235))) % 256] !== (ui32[(d) % 256] != (! a))) ? ((-1001887062 == (c > 19)) << (e <= (d %= (e === 2147483647)))) : i32[((obj0.b *= obj0.a)) % 256])) !== (++ obj0.a)) ? ((ui16[(((-2 == ui32[(d) % 256]) ? ((b === -1026278560) * (++ d) - ui8[(e) % 256]) : i32[((obj0.a * ((e <<= (a !== -4.29703163339169E+17)) - a))) % 256])) % 256] == obj0.length) ? (b * ((((125 !== -4.9199942706093E+18) ? (obj0.a | 1326471020.1) : -1019371704) >= c) ? (ary[(2)] >> ((b |= (! -1703205822.9)) != (-70 ? obj0.a : -2))) : (~ 1.25711624777663E+18)) + (a-- )) : f32[(((((-1387738179.9 >= -952698572) ? (~ d) : -1) === 129) ? (~ (1073741823 === (obj0.b === 2.80772353332863E+18))) : ((~ (- -2)) >= ((2147483647 ? d : -2040112895) > (a === d))))) % 256]) : (-- obj0.b));
        }
        obj0.a &=(((obj0.length *= (b -= (((b-- ) != -558010372.9) !== ((obj0.length |= (1508001307.1 != e)) * (f64[(1232180502) % 256] / (2 == 0 ? 1 : 2)) - ((a & obj0.b) * ((obj0.a >>= e) - d)))))) === obj0.a) ? (e = (e ^= obj0.b)) : ((-2.38816670751848E+18 / (6.40553370954639E+18 == 0 ? 1 : 6.40553370954639E+18)) * ((obj0.a /= a) * (((-3.84168285378669E+18 <= (obj0.b * ((-171 === c) - (d ? 1742886919 : a)))) === d) + 1063091284)) + -1025211428));
      } while((-1980864616) && __loopvar2 < 3)
      var __loopvar2 = 0;
      LABEL0: 
      do {
        __loopvar2++;
        var __loopvar3 = 0;
        LABEL1: 
        LABEL2: 
        while(((e <= -368182344.9)) && __loopvar3 < 3) {
          __loopvar3++;
          obj0.length /=f64[((- (! i8[((((f32[(189) % 256] * (obj0.a - ui16[(obj0.length) % 256])) !== ui16[(obj0.b) % 256]) ? ui32[((e ^= (1538324255 ? b : obj0.b))) % 256] : (b != c))) % 256]))) % 256];
          a = (e++ );
          d = d & 126886169;
        }
      } while((ui32[((((- 101) == ((-1038532626 || -613410505.9) * (e /= ui8[(-961210400) % 256]) - 196)) ? -977823983 : (d ^= (-1525490445 > c)))) % 256]) && __loopvar2 < 3)
      obj0.a /=(++ obj0.length);
    }
    else {
      var __loopvar2 = 0;
      while((((~ (+ d)) * ((e >>>= (++ obj0.length)) + (((obj0.length > -760600785.9) ? (e ? c : d) : (-- obj0.b)) > 1)))) && __loopvar2 < 3) {
        __loopvar2++;
        c = c & 92167013;
        obj0.length = obj0.length & 66530492;
      }
      e = i16[(((obj0.b = ((d += (ary[((e >= 0 ? e : 0))] | (a ? a : obj0.a))) != (e &= 229))) * ((((-568550122.9 <= (245758951.1 ? a : 131)) >= (obj0.a = ((+ b) * ((-- d) - (ui8[(-1235824952.9) % 256] * ((a |= ((~ d) * ((-5.00778803262376E+17 ? -1.70526521028007E+18 : obj0.b) - (obj0.a ? a : -1.52105886056018E+18)))) + (a ? b : obj0.b))))))) !== (a >= ((-956315357 >= b) ? (-792419819 > obj0.a) : obj0.b))) ? ary[(0)] : (obj0.b /= (i8[(0) % 256] === f64[((obj0.length << obj0.a)) % 256]))) + (188 * (76 + (-- obj0.a))))) % 256];
      if(((d /= (obj0.a != (++ c))) >= ary[(5)])) {
        obj0.b = obj0.b & 49275131;
        eval("");
        obj0.a = obj0.a & 46376287;
        b = ui8[(d) % 256];
      }
      else {
        if((((++ obj0.b) >= ui32[((c *= ((++ obj0.a) | ui32[((++ obj0.a)) % 256]))) % 256]) <= (((obj0.a-- ) !== obj0.a) != (obj0.length >>>= ui8[(-1.14219423722415E+18) % 256])))) {
          b =(ui16[(f32[(140) % 256]) % 256] !== ((~ (((obj0.length = (b === 2.62803418185121E+18)) == ((-5.4654501391555E+18 <= a) % -964815463)) ^ 8.28495192997205E+17)) ^ ui32[(905982469.1) % 256]));
          e = ((c-- ) * ((a-- ) + (((1.50564857672044E+18 << -996848917) === (b !== (e -= ((e > -835315129) ? (2.46120377257974E+18 <= -663205190) : obj0.length)))) ? 7.32121592344845E+17 : (ui8[((-1758513619.9 === ui8[((c |= (obj0.a %= -1047435543))) % 256])) % 256] || (((i16[(c) % 256] * (++ obj0.length) - (++ e)) == ((obj0.a ? obj0.a : obj0.length) * (a ? -452143299 : obj0.length) - (5.37304147269E+18 === obj0.length))) ? -1218273746 : b)))));
          obj0.length = ((i16[((obj0.length = ((e !== i32[(a) % 256]) === (- -976117639)))) % 256] * (obj0.b + ((c = (((+ b) > (- -1813230671.9)) ^ ((obj0.b != d) * (obj0.b + 1766468983.1)))) && b))) == (ui8[(i8[(a) % 256]) % 256] < ((i8[(-1024717258) % 256] * (c - (e >>>= i8[((d || -4.68571774239019E+18)) % 256]))) * ((~ ((d &= ui16[(a) % 256]) !== -31983845.9)) + c))));
          obj0.a = (((((((e = -1472198100) > (c ? obj0.b : 1073741823)) ? -1 : ((obj0.length || -2.46774032885726E+18) > (obj0.length * ((obj0.length <<= (2 ^ c)) + b)))) != (((d ? 1129603829.1 : -1030105957) * ((c / (d == 0 ? 1 : d)) + (d >= e))) >>> ((a !== -1009833533) ? -5.06602064004714E+17 : (d == a)))) * ((a -= (((obj0.length < e) > (~ -1)) ? obj0.length : ui16[((-2.89657423492027E+18 * 2070493241.1)) % 256])) + (b >= (obj0.length >= (obj0.length > (obj0.a |= f32[(-7.1109727586682E+18) % 256])))))) !== ((~ ((-18 < (obj0.a == -1)) ? -1073737662 : ((c === -1) ? ((a >>>= (obj0.b < e)) * (-971677399 + (-2100894899 > -1016960966))) : (e * d - ui16[(a) % 256])))) ^ (obj0.a * ((ary[(4)] == i32[(c) % 256]) ? (f32[(obj0.length) % 256] === (+ -2)) : ((e = ((616980795.1 ? b : d) * (d *= (obj0.b -= b)) - ((-746731998.9 < 7.1120644958587E+18) * (-- a) - (-1 ? obj0.b : 457141075)))) * (i32[(-1004844549.9) % 256] - b)))))) ? i32[((~ ui32[((! (- b))) % 256])) % 256] : ((ui8[(-983319475) % 256] >= ((-- e) >= ((ui16[(obj0.b) % 256] !== (7.79636232121146E+18 * ((obj0.length <= obj0.a) - obj0.length))) ? obj0.b : ((c *= (obj0.length * (-819261232 + (a >= 1888620130)))) * ((d ? 54 : c) * (obj0.a <= 2101911050.1) - obj0.b) + (a > 1))))) ? (obj0.b = ((obj0.a ^= (! obj0.length)) % (e >>>= ui8[(((~ -1026664367) * ((-1050413328 <= -425375659.9) + (b %= (! 2.29893472666125E+18))))) % 256]))) : ui8[(e) % 256]));
          obj0.a = obj0.a & 12545058;
        }
        else {
          obj0.a >>=(e = (b += ((((-2147483648 >= (a <<= (obj0.length ? d : -4))) ? f32[((852093323.1 ? e : 9.08026374714443E+18)) % 256] : ui8[(1498189001.1) % 256]) * ((((191 - -2.6939529830959E+18) == i8[(a) % 256]) ? f32[((ui8[(-977552376) % 256] * 2)) % 256] : (~ ary[((obj0.length >= 0 ? obj0.length : 0))])) - ((f64[(-665927579) % 256] === (-2 !== b)) ? 9.11031757745835E+18 : ((-989819087 > obj0.length) > ((c = (-817347619.9 != -2)) * (obj0.length ? -6.0751994023887E+18 : 110390710.1) + (2147483647 !== -24)))))) != (d *= ui16[((obj0.length = (obj0.a = (obj0.b = (c + 186))))) % 256]))));
          eval("");
          c = c & 6525641;
          obj0.length &=ui8[(((((ui32[((-1 >= 7.51158979865019E+18)) % 256] < ((e ? c : d) <= (+ d))) ? f64[((-2027794608.9 && (d ^ 156))) % 256] : ((a <= obj0.b) ? (obj0.length = ary[((4.64147446610946E+18 >= 0 ? 4.64147446610946E+18 : 0))]) : (e = (-1031909803 ^ a)))) * (-94 - (obj0.b + i16[(((-220 ? obj0.a : e) < (obj0.a > e))) % 256]))) !== e)) % 256];
          d +=(b = (ui16[(1073741823) % 256] * (9.14774723339696E+18 * (((-1045613238 * -6.10258466064975E+18 - (obj0.a /= (++ c))) * ((-1124740288 < 378332638.1) ? c : (-2 ? 20 : -3.48732257719226E+18)) - (+ (-1067478474 <= obj0.b))) * (-8.37785186827551E+18 * (((16 ? e : -8.89779324262729E+18) * -2048541645 + 6697107.1) + ((b ^ 173) != 1113830678.1)))) + (((b += (obj0.length %= ((obj0.a += (-- obj0.length)) * ((obj0.length = e) + (322154651 * (1 + (ui8[(obj0.b) % 256] * ((-958473170 ? obj0.b : d) - (! 2147483647))))))))) * ((e * e) * (obj0.length % 214) + (d !== 1847781471.1)) + (obj0.a = (- d))) < -1043879357.9)) + (((((0 == c) <= obj0.b) !== 7.6609514526738E+18) < (obj0.length ^ ((obj0.length << 1511756555.1) % (-1062632470 * (c && d) + (1703241181.1 ? obj0.a : -1054732102))))) ? a : ui32[(c) % 256])));
        }
        d /=804771513.1;
      }
      LABEL0: 
      for(var __loopvar2 = 0; b < ((((b |= d) >= ((-1468993887 !== obj0.b) ? (obj0.a == -57) : obj0.b)) ? c : ui32[(b) % 256])) && __loopvar2 < 3; b++ + __loopvar2++) {
        continue LABEL0;
        c = d;
        e <<=-158;
        if((-1896924333.9 === (-159 <= (-1026374386 <= ((+ 1616599204.1) >= ui8[((986730035 !== (-1007671067.9 === e))) % 256]))))) {
          obj0.length = f64[(-5.6741401967231E+18) % 256];
          obj0.a = ((a - (((a !== ((-1.41333089719498E+18 !== a) ? (obj0.a < c) : (~ -1138405440.9))) ? (((b === obj0.a) ? (~ c) : (+ -1245877100)) - (- (b %= (obj0.length ? -958960849 : obj0.a)))) : b) * (((b < ui8[(i8[(-1124493039) % 256]) % 256]) < (((obj0.length %= (6.81713028408771E+18 < c)) < (b++ )) ? ((++ d) == (c >> obj0.length)) : (a++ ))) + c))) === ((++ c) * ((((i16[(-5.3169466103935E+18) % 256] !== d) ? (((((-724502383 != obj0.a) * ((a ? -86374692.9 : 3.74184267045708E+18) + (9.01535792942166E+18 && obj0.a))) * (((-- b) * (d < obj0.a) + (obj0.b * ui32[(-2) % 256] - (a <= obj0.length))) + (b >>>= (obj0.b >>= (-947518228 <= obj0.length))))) * (d == obj0.b) + i32[(a) % 256]) <= (-4.26757038021907E+18 ? 4.93983946778427E+17 : e)) : (c += (-942113597 - -2))) != (((-1042940941 * (b * (-2147483648 + (obj0.b += (- 1395022935.1)))) + (obj0.a !== 5.01820577078629E+18)) !== c) ? ((obj0.b ? a : -204) <= (obj0.a-- )) : (-- e))) || (a ^= (((- c) * ((e |= (a > 3.95221383365452E+18)) - (obj0.b %= (obj0.a = i32[(obj0.a) % 256])))) != ((ary[((d >= 0 ? d : 0))] * f32[(-945037420) % 256] - ary[(6)]) !== (c ? a : obj0.a))))) - ((((+ ui16[(c) % 256]) <= ((obj0.a <<= -919118181.9) != (-8.7376432021762E+17 <= 581439431.1))) ? ((obj0.a !== (b == c)) ? (obj0.length >>>= (1870810706 == c)) : ary[((i32[(d) % 256] >= 0 ? i32[(d) % 256] : 0))]) : (ui8[((c ? -1 : a)) % 256] != (-1026453709 * ((d | -2043693038.9) + ui8[(-2147483648) % 256])))) <= ((ui32[((e-- )) % 256] < ((d != -1665382231) ? (e >>>= -2125578813) : (b & obj0.b))) === ui8[(((-251 ? 72307090.1 : obj0.a) * ui16[(d) % 256] - (1073741823 !== -65932579))) % 256]))));
          a = a & 67903905;
        }
        else {
          d +=(((((obj0.b >>= ((-- obj0.length) * ((c = (obj0.length = a)) + (++ e)))) == -87) == (a <<= ((d & (2077862241.1 || -1443080871)) * (e = obj0.a) - ui32[((-5.71576362526095E+18 <= 1673710169)) % 256]))) ? (~ ((121 <= a) ? c : e)) : ((a !== f64[(b) % 256]) - obj0.length)) * (obj0.length + e));
          d %=(((- i8[((c = ((d = obj0.length) > (3.18464300854646E+18 > -81)))) % 256]) * e - (-- c)) === -1651168833);
          obj0.a = obj0.a & 10948064;
          continue LABEL0;
        }
        LABEL1: 
        for(var __loopvar3 = 0; b < ((e -= i32[((obj0.b << -1018145100)) % 256])) && __loopvar3 < 3; b++ + __loopvar3++) {
          obj0.a = obj0.a & 48997869;
          a &=(++ obj0.length);
          d = d & 102555861;
          a +=(((+ (i16[(i8[(ui32[(b) % 256]) % 256]) % 256] === (obj0.length-- ))) * (((ary[(7)] * ((obj0.a == 1806219973.1) ? (7.73067671833379E+18 ? obj0.a : obj0.a) : (b >>>= (-- obj0.length))) + (obj0.b = f64[(2087930591) % 256])) * (b &= (-- obj0.length)) + (e &= obj0.length)) != ((obj0.a === -1972775937) * (a + f64[((obj0.b += (obj0.b *= (++ obj0.length)))) % 256]))) + (++ a)) * ((obj0.b += (((((-996475139 ? d : a) * ((-- e) + i8[(obj0.b) % 256])) * obj0.b + obj0.length) <= (((a++ ) !== (obj0.a * ((e = obj0.b) * (ui32[(-203) % 256] - (obj0.a != obj0.length))) - (a < -1439718024))) ? (obj0.a != ((2.83562003205251E+18 ? obj0.b : obj0.a) * ((-1016715704 == obj0.length) + (e &= (obj0.b * f32[(obj0.length) % 256] - 1.54205878898642E+18))))) : c)) >= (c !== 125))) + ary[(6)]));
          obj0.b &=(a-- );
        }
        var __loopvar3 = 0;
        do {
          __loopvar3++;
          break LABEL0;
          obj0.length = obj0.length & 7727476;
          b |=((obj0.length /= (((((obj0.b > 7.99860094307075E+18) == (e = -1782085041.9)) ? ((4 ? -1073741824 : 254) >= (- -2)) : ((-236 != -6.65985515747755E+18) ? (3.86157817899371E+18 * ((28480291.1 <= 5.73296648497737E+18) - 1073741823)) : -1553204038)) != (c = ary[((ui16[(b) % 256] >= 0 ? ui16[(b) % 256] : 0))])) ? obj0.b : ((obj0.a-- ) * (((0 !== -1383595372.9) != (c ? a : b)) ? (c >>= (-1805135936 || e)) : ((1518927881 ? c : b) === 661365285.1)) - i32[(c) % 256]))) === f64[((((((-1011897821 == -974707794) <= ui8[(1174558651) % 256]) | ((+ b) <= (obj0.b >= c))) > (b == ((-979052215.9 > 209) ? -1857429389.9 : (-236 ? -1016864660 : d)))) ? (obj0.b = (! ui32[((949048640.1 * (-1483176529.9 ? -989104515 : d) + -1073741824)) % 256])) : (a -= ary[((((b ^= (obj0.b * ((obj0.a ? 489230469.1 : d) + ((194 ? 842512773 : c) * b + (+ -1022543802))))) * ((a = (-998327845 ? 2 : -1073741824)) - ui8[(-1277289445) % 256])) >= 0 ? ((b ^= (obj0.b * ((obj0.a ? 489230469.1 : d) + ((194 ? 842512773 : c) * b + (+ -1022543802))))) * ((a = (-998327845 ? 2 : -1073741824)) - ui8[(-1277289445) % 256])) : 0))]))) % 256]);
          obj0.b = obj0.b & 21260613;
        } while(((++ a)) && __loopvar3 < 3)
      }
    }
    var __loopvar1 = 0;
    LABEL0: 
    while((ui16[(a) % 256]) && __loopvar1 < 3) {
      __loopvar1++;
      d = d & 59456626;
      c >>>=((d < (obj0.a >>= ((f64[((b >>> 1)) % 256] == ((-63 < obj0.length) ? (obj0.b == e) : (a = (2147483647 !== obj0.a)))) * (((2.42144943859417E+18 == obj0.a) === (obj0.b ? 0 : 231093864.1)) ? ((d >>= (-1500127182 ? -1007139018.9 : obj0.length)) * (+ e) + (e ? -5 : obj0.b)) : (b += ui8[(obj0.a) % 256])) - (((-742996655 > -133) ? b : (c / (obj0.a == 0 ? 1 : obj0.a))) << ((e == -684123764) ? (obj0.a = ui16[(859232285) % 256]) : (obj0.length++ )))))) ? ary[(6)] : i32[((b * i16[((((2146049192.1 && obj0.length) * 5.26416283997514E+18 + (e != a)) >>> (d <<= -1025980805))) % 256] - 38)) % 256]);
    }
    WScript.Echo("a = " + (a|0));;
    obj0.b = (((- (-- obj0.a)) * (((ui32[((! (-1072943038 == 2))) % 256] !== (a %= i32[((~ -2.66181822353056E+18)) % 256])) ? ((obj0.b-- ) < -964990948) : (- (obj0.length - (obj0.length = ui32[(341926844) % 256])))) + ui8[(e) % 256])) >= (-- obj0.b));
  }
  else {
    obj0.b = obj0.b & 127007775;
    if(((obj0.length ^= -943321848) === c)) {
      if(((((d * (((-1 ? 1282350244.1 : -2.32529805533488E+18) >> i32[(b) % 256]) > (++ c)) + (obj0.length = ((obj0.b++ ) * ((ary[(9)] * (c < -22) - ((-960871538 != -1.08080143742208E+18) * 2)) + -964695784)))) >= (obj0.a ^= obj0.length)) & (b >>= ((-8.39149093053655E+18 !== (ary[(6)] * ((- -5.01103572336792E+18) - (e %= obj0.length)))) ? i16[((d >>= i8[(obj0.b) % 256])) % 256] : ((i32[(e) % 256] < (e |= (c > obj0.length))) >>> (! (+ e)))))) == 20)) {
      }
      else {
        c = c & 45180673;
        var __loopvar3 = 0;
        while(((f64[(-1012471868) % 256] * ((obj0.length *= f64[(524072413.1) % 256]) + ((c == b) ? 2.31826772682673E+18 : a)))) && __loopvar3 < 3) {
          __loopvar3++;
          obj0.length = obj0.length & 110128447;
        }
        b = b & 22730445;
      }
      var __loopvar2 = 0;
      do {
        __loopvar2++;
        LABEL0: 
        LABEL1: 
        for(var __loopvar3 = 0; b < (ui8[(((a = ((obj0.length <<= (c ? -1164555308.9 : -1019260005)) * ((obj0.length ? e : c) + (-343193236 != -62)))) ^ (-- a))) % 256]) && __loopvar3 < 3; b++ + __loopvar3++) {
          obj0.a = obj0.a & 124382894;
          WScript.Echo("b = " + (b|0));;
          continue LABEL0;
        }
        var __loopvar3 = 0;
        LABEL0: 
        LABEL1: 
        do {
          __loopvar3++;
          e = (1335520855 * ((! (obj0.length -= -2)) + (((f64[(154) % 256] <= (b = ((e !== -1073741824) ? (3.15789901337251E+17 <= -986003597) : (1 ? 1891354787.1 : 1.90657750621999E+18)))) == (obj0.b++ )) * ((f64[(i8[((obj0.length ? -1646443201.9 : -1059805611)) % 256]) % 256] * i8[(((obj0.length <= 184) ? (d <<= (e != e)) : ui16[(1.72696237297068E+18) % 256])) % 256] + obj0.length) !== i32[(-437380721) % 256]) + (c -= (obj0.b++ )))));
          obj0.a = (((b >>>= (((b &= (++ e)) >> obj0.b) != (((obj0.b = f32[(d) % 256]) > ui32[(126) % 256]) ? 4.93687155645246E+18 : (e >= (b > 3.09039954889425E+18))))) >= 2) ? (c = (((((-224 <= c) << 164) >= (e <<= ((c = c) * (d * (e ? 2073385188 : 1043748771.1) - b) - ((-- a) * ((-2147483648 != -5.92906018758129E+18) + (obj0.length != d)))))) ? (1220431247.1 * ((240 >= -4.29003163888768E+18) < obj0.a) + b) : ((obj0.b += f32[(obj0.length) % 256]) ^ -178)) / (ui32[(ui32[((a &= obj0.b)) % 256]) % 256] == 0 ? 1 : ui32[(ui32[((a &= obj0.b)) % 256]) % 256]))) : ary[(0)]);
          obj0.a = (((obj0.a != ((obj0.length++ ) >= -958640145)) ? ((ui16[(i16[((c++ )) % 256]) % 256] < (((++ obj0.b) <= i8[(5.93400791880734E+17) % 256]) ? ((d ? -2.38062630075845E+17 : b) > obj0.length) : ary[((7.18233447656206E+18 >= 0 ? 7.18233447656206E+18 : 0))])) !== (((obj0.length *= i32[(2.11997694408481E+18) % 256]) ^ 2) * (-1038865354 - -5.59043787740208E+18))) : e) % (c >>>= (b << i16[((obj0.a == (+ (-1055919377 >= a)))) % 256])));
          obj0.length = obj0.length & 48604346;
          a = a & 20656253;
          WScript.Echo("obj0.length = " + (obj0.length|0));;
        } while((((++ c) != ((e += i8[(obj0.a) % 256]) ^ obj0.length))) && __loopvar3 < 3)
        if(((((+ e) < 1) ? ui32[(((~ -987458333) > (- (+ obj0.b)))) % 256] : ((ary[(5)] === ((-948205064 * (e-- ) - (a /= (obj0.length = (-4.78561559250763E+18 ? -250 : b)))) != (~ obj0.length))) ? (b = (- 131)) : (- (((e ^= (obj0.b != a)) >= (-826422474.9 >= b)) * ((e ^= f32[(2) % 256]) - ary[(4)]))))) !== (- ((((! (b-- )) !== (d = (-- obj0.length))) ? (1482831961 * (((obj0.length <= 156) * ((a |= 1521704214.1) + obj0.length)) + (f64[(-953790135) % 256] === obj0.b))) : ((ary[(6)] <= (((! 1197571363) * (1193031502 + obj0.a)) * ((obj0.length == d) + 199562576))) ? i8[((c >>= obj0.length)) % 256] : (i32[(-1359965008) % 256] * (ui32[(c) % 256] - f32[(-1020724923) % 256])))) > (+ (((-- e) > (c >>>= (-1072873699 < obj0.b))) | 710445357.1)))))) {
          break ;
        }
        else {
          break ;
        }
      } while((1536616431) && __loopvar2 < 3)
      d = (~ (c < (((((obj0.length > 1450865754) !== e) != (ui32[(e) % 256] * (a + (d -= (-660717309 * (obj0.length ? a : obj0.length) - (3.48923353172391E+18 > obj0.length)))))) >= ui32[((d === obj0.a)) % 256]) ? (c %= i8[(i32[((b !== 162)) % 256]) % 256]) : -1.14054304968681E+17)));
    }
    else {
      d <<=f64[(i16[(c) % 256]) % 256];
      var __loopvar2 = 0;
      LABEL0: 
      while((((((-1073741824 && e) * (-1788274426 == -2147483648) - (-1020673444 > 2147483647)) != ary[(8)]) ? -1011623726 : (0 !== -2.1557508713543E+17))) && __loopvar2 < 3) {
        __loopvar2++;
        for(var __loopvar3 = 0; obj0.a < ((((obj0.b <= -4.85516336626264E+18) ? (-226 == -1887726982) : (970795962.1 ? 304241834.1 : -61467708.9)) & ((obj0.length === obj0.b) >= (-142 <= 1144176618.1)))) && __loopvar3 < 3; obj0.a++ + __loopvar3++) {
          e = (2063304811.1 | ((((((-14 ? obj0.b : -2) == (1922038279.1 <= 152)) ? (! ary[((e >= 0 ? e : 0))]) : ((((-1 == obj0.b) * ((a = 1884435170.1) - (b != c))) * (obj0.a &= (obj0.b <<= -1886331802)) + 1419830373) >= -1)) * (i32[(-79) % 256] + f32[((d = (obj0.b %= ary[(7)]))) % 256])) === (e * ((((obj0.b <<= b) >= (-1851913279 > d)) ? (+ (~ -977814688)) : (252 != (obj0.b % a))) + b))) ? ary[(((694578357 % d) >= 0 ? (694578357 % d) : 0))] : 185));
          obj0.a = obj0.a & 8579673;
        }
        b = b & 109055898;
        break LABEL0;
      }
    }
    obj0.length =((((obj0.length-- ) * (((obj0.length++ ) === ((d <<= a) - ((~ 541957150) == 0))) - 1691221992)) !== (a += ((e-- ) == ((ui16[(b) % 256] == (ary[(4)] * ary[(9)] + 251)) ? ((obj0.length++ ) > (obj0.b ? -5.77348416044579E+18 : 7.41669951040901E+18)) : ((1747774986.1 > obj0.b) == obj0.a))))) !== (ui16[(((++ obj0.length) >= ui16[(i16[((-1504062177.9 ^ obj0.a)) % 256]) % 256])) % 256] * ((d * (5.40351358435971E+18 >>> (((c === b) ? (6.73935469782625E+18 >= obj0.a) : (obj0.a >>= obj0.a)) * c + ((-2 == d) <= a))) + f64[((d * ((126 * c - 2) - ui32[((obj0.a ^= (! -997748623))) % 256]))) % 256]) + ((d < -968463553) ? (c |= ((obj0.a = (obj0.length-- )) * (8.98048771010952E+18 - -1911394808))) : (195 * (d + (((-6.29031910766061E+18 ? -1846839024.9 : -1073741824) * f64[(-1002740796) % 256] + (a ^= (b |= f32[(e) % 256]))) <= 137)))))));
  }
  var f = (((((ui32[((1960087423.1 ? e : c)) % 256] == ((1445458830 != 1159368977.1) ? (b |= (-1077911484.9 == -2)) : (5.44121649014263E+18 > 1))) ? d : ui16[((-- obj0.a)) % 256]) < f32[((ary[((d >= 0 ? d : 0))] >> -1.97793182764923E+18)) % 256]) > 190) ? (1073741823 % i8[(((((f = -1048249434) * (c - f64[(c) % 256])) === ((ui8[(1) % 256] * (obj0.length >> obj0.b) + obj0.a) + (a -= ((obj0.a <= -5.5497332224604E+17) * obj0.b - -3.13164504612606E+18)))) > obj0.a)) % 256]) : ((-4.63908174184305E+17 == obj0.b) ? (((i8[((c -= ui16[(-1034645052) % 256])) % 256] / (((~ 1073741823) * ((-- a) + f64[(-2.3813050891305E+18) % 256])) == 0 ? 1 : ((~ 1073741823) * ((-- a) + f64[(-2.3813050891305E+18) % 256])))) * ((d -= (-9.02524356518541E+18 * ((obj0.a ? 225 : 226) - (163 <= 2147483647)))) * (f + (~ obj0.length))) + (++ d)) * ((f32[(f64[(i8[(-118) % 256]) % 256]) % 256] <= (+ (++ f))) + (e - -940765131))) : f64[((ui32[(((((obj0.a >>>= (d !== -897214109.9)) * ui8[(-978922931) % 256] + -1416135577.9) * (1.68615791337879E+18 - c)) >>> (-1067806047 ? 1.76955163612587E+18 : 2147483647))) % 256] * i8[((! (~ -7.60821232624929E+18))) % 256] - (((++ obj0.length) <= (obj0.a = (-2.97429713163435E+17 + -1003894428.9))) * (903208727 + ((e / (0 == 0 ? 1 : 0)) * obj0.b - (3.29390203463839E+17 < obj0.length)))))) % 256]));
  f = f & 5767678;
  var __loopvar0 = 0;
  LABEL0: 
  while((obj0.b) && __loopvar0 < 3) {
    __loopvar0++;
  }
  a %=((d-- ) * (a ^= (! (((c += (~ obj0.a)) >= (f += b)) ? (222 * (ary[(((obj0.a ? 1537913716.1 : c) >= 0 ? (obj0.a ? 1537913716.1 : c) : 0))] - ((~ -1) < (b ? -1058258336 : 304859165)))) : (((-990431729 <= -1266686020) ? (e == obj0.length) : (-1918384290.9 ? b : -972235533)) >> f32[(ui8[(-1577448753.9) % 256]) % 256])))) - ary[(((((((f ? a : -2147483648) <= 1481594952.1) ? (ui32[(6.25262130335544E+18) % 256] <= (f >>>= (-- d))) : c) <= (((-942326803 ? -1073741824 : 46) || ((b >= obj0.length) * ((1002559871.1 == obj0.length) + (-1.0741100522576E+18 ? c : f)))) & (a %= (-8.47273657613575E+18 < -1073741824)))) ? (- (ary[(((obj0.length <= obj0.length) >= 0 ? (obj0.length <= obj0.length) : 0))] >> ((f ? a : -238) / (i8[(-141) % 256] == 0 ? 1 : i8[(-141) % 256])))) : (((obj0.b * ((! obj0.length) - (-1 / (d == 0 ? 1 : d)))) >> (d === (((d < 546344874) / (2 == 0 ? 1 : 2)) * (i32[(f) % 256] - (-101983048 ? obj0.b : -55))))) + (obj0.b === ((f < b) == -7.45147231400504E+18)))) >= 0 ? (((((f ? a : -2147483648) <= 1481594952.1) ? (ui32[(6.25262130335544E+18) % 256] <= (f >>>= (-- d))) : c) <= (((-942326803 ? -1073741824 : 46) || ((b >= obj0.length) * ((1002559871.1 == obj0.length) + (-1.0741100522576E+18 ? c : f)))) & (a %= (-8.47273657613575E+18 < -1073741824)))) ? (- (ary[(((obj0.length <= obj0.length) >= 0 ? (obj0.length <= obj0.length) : 0))] >> ((f ? a : -238) / (i8[(-141) % 256] == 0 ? 1 : i8[(-141) % 256])))) : (((obj0.b * ((! obj0.length) - (-1 / (d == 0 ? 1 : d)))) >> (d === (((d < 546344874) / (2 == 0 ? 1 : 2)) * (i32[(f) % 256] - (-101983048 ? obj0.b : -55))))) + (obj0.b === ((f < b) == -7.45147231400504E+18)))) : 0))]);
  var __loopvar0 = 0;
  while(((c >>>= ((ary[((i8[((b ? 1216995792 : 1)) % 256] >= 0 ? i8[((b ? 1216995792 : 1)) % 256] : 0))] !== ui32[(((c != 2116167749.1) === (f = ary[((c >= 0 ? c : 0))]))) % 256]) ? obj0.b : ((obj0.b++ ) * (((f32[(-981353424) % 256] <= (-1073741824 !== -1.88817295699437E+18)) ? -1921062939.9 : obj0.a) - (((b <= obj0.a) > (1 === b)) ? a : (++ c))))))) && __loopvar0 < 3) {
    __loopvar0++;
    var __loopvar1 = 0;
    LABEL0: 
    LABEL1: 
    do {
      __loopvar1++;
    } while(((obj0.length !== ((-1955382796.9 !== ((2147483647 | obj0.b) * (-1596625029.9 - (-957294919 * (((obj0.b ? -77 : 451524931) * (f64[(5.68884857721587E+18) % 256] - e)) - b))))) ? (! -1038614028) : (~ (obj0.a-- ))))) && __loopvar1 < 3)
    if((877695220.1 === ui32[(obj0.b) % 256])) {
      continue ;
      d = d & 66327503;
      obj0.a >>>=(((((((- c) > a) ? (~ ((~ 1313812020) * f32[(f) % 256] + (b < f))) : (obj0.b -= (-243 === -978217867))) || -975996941) != ui8[(((a %= ui8[(586300181.1) % 256]) >= ((-3.16467136715542E+18 <= obj0.a) >= (-- obj0.length)))) % 256]) * (-1065995714 <= (++ f)) - (b <<= (+ ((~ ((-2 ? obj0.a : 168) * (599387473.1 + f))) * (obj0.b = obj0.a) - ((b >> obj0.length) <= (obj0.length /= 932817611.1)))))) == 0);
      LABEL0: 
      LABEL1: 
      for(var __loopvar2 = 0; obj0.a < (f) && __loopvar2 < 3; obj0.a++ + __loopvar2++) {
        var g = -1097700825;
        d = 1.81955854693906E+15;
        if((f32[(((f * (((c++ ) & ((c >>= (obj0.b-- )) === obj0.a)) - (((1073741823 > -4.84118375951339E+18) == a) * ary[((((a %= (a ? c : f)) * ((2147483647 ? 691687661 : b) + (a && b))) >= 0 ? ((a %= (a ? c : f)) * ((2147483647 ? 691687661 : b) + (a && b))) : 0))] - (~ ((obj0.length-- ) * ((f & -1673182085) + (- 1607791421.1))))))) - i32[((- (219 <= a))) % 256])) % 256] < ((((a = c) * (~ (-1022609506 ^ (obj0.a = -7.28124672225577E+18))) + (((-1212146798 != d) ? -2147483648 : -242) && ((obj0.a += i16[(a) % 256]) >= (-- f)))) === (a += -946233923)) & (a += obj0.b)))) {
        }
        else {
          var h = (-1050043412 * (h && (ary[(4)] > (-1062956308 > (ui8[(c) % 256] !== -1068092408)))) + a);
          WScript.Echo("e = " + (e|0));;
          f = f & 125564605;
        }
      }
    }
    else {
      var __loopvar2 = 0;
      while(((+ 2147483647)) && __loopvar2 < 3) {
        __loopvar2++;
        if((obj0.b <= ((((b | (-948009568 <= ui8[(-1059420370) % 256])) > (((d /= i8[(-46) % 256]) < (-47 * (d ? -2137126507 : -1.72788547183102E+18) - (obj0.length %= a))) <= e)) ? e : ((-- c) * i16[(d) % 256] + (((-155 <= a) === (obj0.length += f32[(obj0.a) % 256])) == ui32[(ary[(4)]) % 256]))) <= i32[(-160) % 256]))) {
          continue ;
          g -=h;
          c = c & 113697416;
          e = (! (++ f));
        }
        else {
          g ^=i16[(1) % 256];
          obj0.b =h;
          WScript.Echo("f = " + (f|0));;
          var i = (((((h = (obj0.length >= obj0.b)) >= (((+ 1647826773) != f32[(2) % 256]) ? -1036890838 : f32[(ui16[(b) % 256]) % 256])) >= ary[((g >= 0 ? g : 0))]) >= ((h !== (((-2147483648 > g) ? (7.37321767339293E+18 >> h) : obj0.length) * (i = 1295967512) + ((a == i) ? (- 7.71883845387819E+18) : (g | f)))) ? ary[(((i = i8[(-680859639) % 256]) >= 0 ? (i = i8[(-680859639) % 256]) : 0))] : (ary[((-962532284 >= 0 ? -962532284 : 0))] || g))) * d - (-303706216 * i8[((+ ((ui32[(d) % 256] !== (1562518041.1 * ((234 >= a) + c))) ? ((obj0.a > e) ? ui8[(-1292602093) % 256] : -986080649) : (((c = (a - obj0.a)) * ((717524569.1 + 9.09667155124832E+18) - (a !== obj0.length))) / ((++ b) == 0 ? 1 : (++ b)))))) % 256] + (obj0.b = (i16[((((220 * ((e <= -1712831000) + (obj0.length !== 226))) * ((c *= (c ? -1060964431 : -1042923310)) + (-- obj0.length))) * g)) % 256] < ((((e * ((obj0.b = (1689554685 > -238)) - ui8[(2147483647) % 256])) * (i32[(-2147483648) % 256] * (obj0.length + (-1033029503 >> h))) - f32[(1630210943) % 256]) !== (a -= i)) ? ((-6.00549387049277E+18 * (e = b) - (e = (~ g))) * (h = ui16[(-7.73829057649892E+18) % 256])) : (e = i32[(h) % 256]))))));
          e = e & 72432105;
        }
        obj0.a = (g = (((-- obj0.b) > i) ? ((((+ (-2147483648 - obj0.b)) - f64[((++ obj0.b)) % 256]) >= (d += (ary[((i >= 0 ? i : 0))] >= (f32[(c) % 256] / (2 == 0 ? 1 : 2))))) ? 2 : (obj0.a /= (++ obj0.a))) : ui32[((e |= (++ h))) % 256]));
        var __loopvar3 = 0;
        LABEL0: 
        LABEL1: 
        do {
          __loopvar3++;
          f = f & 41745567;
          a *=((i8[(((((f !== i) > (! -944661501)) ? (~ (! d)) : (b >>>= (obj0.a ? -1073741824 : 5.32483188924335E+18))) > ((d < (obj0.a < a)) ? -1 : (6.12715268363123E+18 / (-1066204397 == 0 ? 1 : -1066204397))))) % 256] >= ((ui16[((g = (2 * (i16[(d) % 256] - (b >= -954499052))))) % 256] >= ary[((-988277450 >= 0 ? -988277450 : 0))]) ? (-1009617228 || ((obj0.a = -946861967) * ui16[((f != 1382611966.1)) % 256] + b)) : (h * ((++ e) - (obj0.length <<= ((-1006730069 ? d : 2098407677.1) ^ 1370852472.1)))))) ? ((((! -994920423) * -1058848739 + i) * ((-104 && ary[(((h != (h -= (2147483647 ? 180 : obj0.a))) >= 0 ? (h != (h -= (2147483647 ? 180 : obj0.a))) : 0))]) + (-1073741824 % 244467647))) <= (- ui16[((((c <= h) < (e && a)) ? ((d === -2.02352804026786E+18) ? (1073741823 >= -88) : -926378488.9) : ((+ e) * h + -1783308457.9))) % 256])) : c);
          e >>=(((a++ ) * ((((f >>= (g >>= ((a ? i : obj0.a) * (~ h) + (((h -= (c === 492235807.1)) * (++ c) - 201) * ((ui16[(-110) % 256] * ((~ -93588401) + 1322850721.1)) + ui32[(h) % 256]))))) === (ui8[(h) % 256] * ((116 <= -986611993) + (-1168076229.9 ^ obj0.a)))) * (296178114 + (-- i))) * (-113597008.9 + ((((obj0.a == c) <= 1073741823) ? -68 : (~ (ary[(0)] * ((~ e) - d)))) * (2147483647 == ui8[(ui32[(a) % 256]) % 256]) + ((- obj0.length) != ((-1878155495 == i) ? (obj0.b >> 1092164436.1) : (b |= ((f ^ obj0.b) * ((obj0.a++ ) - (-1025083174 ? -1034078182 : 132275327.1))))))))) - i8[((1073741823 * (d + i16[(i32[(((obj0.b ? d : -6.18680740352503E+17) * ((d = d) + i32[(-1024726238) % 256]))) % 256]) % 256]))) % 256]) * ((obj0.a++ ) != d) + ((-2 != ((((i >> a) !== -5.52651366266998E+18) ? (++ obj0.b) : b) <= -409474891)) ? (+ ui16[((((b >= -3.03197645509832E+18) === (b >= obj0.length)) ? -2147483648 : ((-1062394141 / (g == 0 ? 1 : g)) >>> obj0.a))) % 256]) : i16[(-2) % 256]));
        } while(((((! -4) > (-- d)) ? (obj0.a %= ((g >>= a) * h - (obj0.b = (d ? f : obj0.length)))) : ((+ i) != (obj0.length >>= (g *= ((c ? -2 : 802317706.1) * (-981211858 + (-1006010353 | d)))))))) && __loopvar3 < 3)
        a = e;
        var __loopvar3 = 0;
        do {
          __loopvar3++;
          i =i16[(i8[(((2147483647 == (i * ((i < a) ? (1.48918159243015E+18 == a) : ((479820742 - c) * (-2141359481.9 - f64[(c) % 256]))))) ? f : (- f))) % 256]) % 256];
          f = (((+ (- (+ (obj0.length * ((-1181047571 === f) + ((-545198744 >= -342421779) * ((e ? c : i) - (g ? -1070982196 : c)))))))) > (0 > (f = i16[(i8[((ui32[(a) % 256] * (a += ((obj0.a ^= (++ c)) * (d >>>= -112291706.9) - (obj0.b * (e + -241736657.9)))) + (- 1))) % 256]) % 256]))) ? (obj0.length <= obj0.a) : i);
          a *=-222;
          a &=1;
          WScript.Echo("a = " + (a|0));;
          continue ;
        } while((ui32[(f32[(i16[(-9.80586224303985E+17) % 256]) % 256]) % 256]) && __loopvar3 < 3)
        obj0.length =-921845956.9;
      }
      var __loopvar2 = 0;
      LABEL0: 
      do {
        __loopvar2++;
        b %=((obj0.length %= (a-- )) * f64[((~ (0 * ((((b += (f >= g)) !== (g | -1043569366)) ? d : ((i !== 2058725689.1) ? e : (-1069546190 ? -1322358370.9 : -2.43700706541633E+18))) + (++ obj0.length))))) % 256] - (i16[(-161) % 256] * ((((0 == 1620515023) ? (((f++ ) >= (e === g)) ? (obj0.b & f) : ui32[((h ? obj0.a : obj0.length)) % 256]) : ((i != (++ i)) ? i16[((c |= (obj0.a * (obj0.length - (-566738933 === -965500637))))) % 256] : ((7.21448579863241E+18 ? c : obj0.a) * ((-5.60530239068082E+18 >= -2114589369.9) * ((-952744839 <= c) + (c ^= i16[(g) % 256]))) + (e ? c : d)))) > obj0.b) - ((! 1809566076.1) * (((obj0.a <= ((i >= 77) ? ((- -148) / (2 == 0 ? 1 : 2)) : (h ? obj0.b : 8.62754575349966E+18))) ? ary[((ary[(9)] >= 0 ? ary[(9)] : 0))] : (g *= -363977981)) + i32[(-1073741824) % 256])))));
        obj0.length = ((obj0.length >= ui32[((((- (e -= a)) >= ((-- a) < (2021925596.1 < -1024979154))) ? (((obj0.b == c) ? (a && -2) : (obj0.length ? a : h)) !== ((~ 0) * ((- -597395422) + 1755285395.1))) : (b-- ))) % 256]) ? ((-- a) * h + (i8[((g = (e++ ))) % 256] !== f64[(i) % 256])) : ui32[(((((f-- ) * i32[((- -663423175)) % 256] + f64[((g %= obj0.b)) % 256]) < ((~ (7.49608969704699E+18 <= h)) === ary[((i16[(a) % 256] >= 0 ? i16[(a) % 256] : 0))])) ? (++ h) : f)) % 256]);
        obj0.a +=1810484860.1;
      } while(((i-- )) && __loopvar2 < 3)
    }
    var __loopvar1 = 0;
    LABEL0: 
    do {
      __loopvar1++;
      break ;
      continue ;
      if((((i8[(-736561133.9) % 256] >= f64[(((++ g) < (c * (e ? -598497364 : i) + ui16[(5.83447623276852E+18) % 256]))) % 256]) ? (ui16[(i) % 256] * (((i === (-125 ? obj0.length : h)) ? (c ^= (-- obj0.length)) : h) % ((+ e) / (87458410.1 == 0 ? 1 : 87458410.1)))) : (((e === 9.18635503100609E+18) ? (h >>= ((-835704167.9 - e) ^ (-220 ? c : c))) : 50663147) < (obj0.b-- ))) < (++ e))) {
        WScript.Echo("obj0.a = " + (obj0.a|0));;
        h >>>=(++ g);
        a *=((((((i8[(d) % 256] * ((++ h) - (e >>>= (h ? e : g)))) !== (obj0.length -= ary[((obj0.a >= 0 ? obj0.a : 0))])) * (((-1256201251.9 == (++ g)) ? (-- d) : f32[((-- obj0.b)) % 256]) + (obj0.a >>= f32[(((e ? 1 : d) * ((obj0.b -= ui8[(-761045168) % 256]) - (1722587266.1 != obj0.a)))) % 256]))) * (h++ ) + i16[((h-- )) % 256]) < (((obj0.a *= f) == (-1001158158 !== (f < (~ b)))) ? ((-1010483247 <= (obj0.a-- )) ? (g != -1041994431) : obj0.a) : f)) != (((a++ ) * ((((obj0.b &= (obj0.length++ )) == (! (-249 === -1073741824))) ? (((a %= b) == i8[(h) % 256]) ? (-1021908206 * (c != obj0.length) + (ary[((-1036718726 >= 0 ? -1036718726 : 0))] * ((i ? -987765470 : -785226949) - (f ? h : 5.57321929384003E+18)))) : i32[((-1063664963 & 2147483647)) % 256]) : ((-- b) != (! (obj0.length >= 2)))) + (f64[(1397032574.1) % 256] >= (g ^= ((1624453650.1 === obj0.length) * ((d ? a : a) - ((a ? obj0.a : e) * 1755115760.1 - ((obj0.length * (c = c) + ui8[(h) % 256]) * (2.46040860226726E+18 ? obj0.length : i) - (1073741823 ? 2147483647 : 155))))))))) <= (((c++ ) > -6.93049204940227E+18) ? (f &= (i16[((-- b)) % 256] ^ ((-67 ? obj0.a : f) !== 622324386.1))) : i8[(((obj0.a++ ) >= ((g * (obj0.length /= ui16[(-2) % 256]) + (-132 ^ obj0.b)) * ((1089274334.1 === a) + (-1066078070 != obj0.b))))) % 256])));
        break LABEL0;
        if((ui8[((((((obj0.length /= (d ? -976496499 : -1041084056)) * ui16[(-1382198194) % 256] + b) * (((d ? -999377225 : obj0.a) < (a === -2147483648)) - (g = (e = ((++ c) * (ary[((c >= 0 ? c : 0))] * ((obj0.a++ ) + (c *= (-985056.9 * f)))) - (f ? c : b)))))) >> (((c == 2) * (-1050902229 << -402298215.9) + f64[(g) % 256]) & (i %= -8.34993113160063E+18))) === f)) % 256] <= ((obj0.b * (1319166856 - ((f32[((-- g)) % 256] * (i16[((c *= (f = (++ e)))) % 256] + -992176620)) <= (++ g)))) * c - 0))) {
          d = ((-1058320867 > e) ? ((f64[((! (obj0.b-- ))) % 256] >= obj0.length) ? (((obj0.a ^= ((1.40888709704827E+18 >= obj0.length) * obj0.a - (-1.80783582910833E+18 << d))) === f64[((i32[(d) % 256] > -1072812121)) % 256]) ? (- ((d !== (i === -971418579)) ? ((212629770.1 === 1170869498) ? c : (-177489278.9 == -5.03797594856013E+17)) : ((-1009989394 > obj0.length) <= f32[(e) % 256]))) : ((((-136 == h) ? (obj0.b <<= -1) : (2147483647 ? 3.79856945209647E+18 : d)) ^ ((d <= 1091546898) ? (~ d) : (- 2))) * (((h != obj0.a) ? (-151384269.9 / (-2 == 0 ? 1 : -2)) : (504523350 ^ obj0.b)) < d) - (((+ -3.48034301858583E+18) * (b >>= (27860131 * 7.10992518396524E+18)) + (f * (i++ ) - (-3.99554100828859E+18 / (1336525470 == 0 ? 1 : 1336525470)))) != ((obj0.b == 8.66877851819282E+18) || (d ^ -1.58983435759201E+17))))) : (~ (c |= ((c-- ) !== i16[((- -978973069)) % 256])))) : (((obj0.a <= b) ? (f >>= (+ ((c !== i) ? (a = (d || d)) : ((+ 2.08330090777558E+18) * ((a * (545653933.1 ? a : -1072762686) + 2022251292) + (g /= (1 ? 1.38318885911373E+18 : d))))))) : (((i <<= (1730083565 / (-1480735902 == 0 ? 1 : -1480735902))) * (((i * ((-980775597 < obj0.length) - (i %= -1372091114))) === (d ? 217 : d)) + f64[((obj0.length === h)) % 256])) * (c = ((i <= g) ? (g = (ui8[(-951844449) % 256] * (-2147483648 / (g == 0 ? 1 : g)) + -333473301.9)) : (f != -2147483648))))) == ui16[(((++ b) === (ui8[((-6.23050189863346E+17 || c)) % 256] * ui32[(f64[(-166016435) % 256]) % 256] - ((-1047135083 == 643276221) ? i : b)))) % 256]));
          e = e & 73943901;
          obj0.b = 0;
        }
        else {
          e = e & 106544016;
          obj0.a = obj0.a & 87911844;
          e = f32[((-5.54993747213745E+18 / ((d %= (~ (((a /= ui32[(1488615774.1) % 256]) == (e ? -954690955 : 2147483647)) ? 960176822 : (d = 1242301982)))) == 0 ? 1 : (d %= (~ (((a /= ui32[(1488615774.1) % 256]) == (e ? -954690955 : 2147483647)) ? 960176822 : (d = 1242301982))))))) % 256];
          obj0.b = ((198 === ((((i8[(c) % 256] === g) ? (f &= (- h)) : (obj0.length |= 0)) === (e += (((c ? 107 : 8.42962984049383E+18) * ((e ^= (- -975187771)) * (f64[(-40) % 256] + (0 ? 127 : -1038059995))) - ary[(7)]) * (h >= obj0.b) - (-1061432565 || -996814280)))) >= (((h++ ) == i) >= 109))) ? -1028678200 : (obj0.length != a));
          obj0.length = (h *= ((- (+ (763405703.1 * ((-2 <= -1069413237) ? ui8[(e) % 256] : h) - ui8[((f ? c : b)) % 256]))) * (-2147483648 - ((((ary[((264258634 >= 0 ? 264258634 : 0))] == (-138 == d)) << ((h != obj0.b) <= ui32[(-1) % 256])) * (! (- (-8.17589389925016E+18 <= e))) + 1168465796) & (((h + (e++ )) * (((e ^= (-1026854324 !== i)) == (a++ )) - (i16[(4.89001490542874E+18) % 256] < (a ^= ui8[(-555310202) % 256])))) * (obj0.b - ((733106809.1 >= (! g)) < 2024476108)))))));
        }
        c = a;
      }
      else {
        i = i & 116226166;
        break LABEL0;
        a = (obj0.length > ((-6.64226517757024E+18 * (((h++ ) === 6.26848312449388E+17) ? ((949423773.1 > (- 1172679023)) ? -978643855 : ((i = i8[(75) % 256]) * (g * ((-1009905883 << 1631842049) + -955688253)))) : (-9.95102376033834E+17 > i32[(i) % 256])) + -1023460093) < ((-1289949062.9 | (((++ obj0.b) * (-1572622596 + (obj0.b = (c ? obj0.a : 2.53290527724409E+17)))) <= ((- -141) > (2 < -1034157256)))) & (obj0.a >>>= (h |= ((-1027552619 == 40) ? (obj0.length <<= (obj0.length *= (f %= (g *= (-1072303097 ? i : obj0.length))))) : -1243000762.9))))));
        if(((a >= (~ (-- f))) == ary[(3)])) {
        }
        else {
        }
      }
      c =(((obj0.length -= i32[(ary[((i >= 0 ? i : 0))]) % 256]) + (a >>= ui16[((((a ^= (~ e)) < (obj0.length >>= -169070668)) ? ((-993202235 ? 6.58790588599817E+18 : obj0.a) > (d++ )) : (+ (i = (2 !== f))))) % 256])) != g);
      var __loopvar2 = 0;
      LABEL1: 
      while(((ui16[((obj0.b-- )) % 256] * (obj0.a-- ) - 1330224966)) && __loopvar2 < 3) {
        __loopvar2++;
        break ;
        h = (((((((c > obj0.a) < (g += e)) ? (d %= (1080211715.1 == 145)) : ((1442419222 || obj0.b) !== (i16[(h) % 256] * (obj0.b ? h : e) - (! 44)))) | ui16[(((275640331.1 != e) ? e : (-1073741824 !== h))) % 256]) !== f32[(g) % 256]) != -1011158567) > (b <= (ui16[((((16 !== g) !== (-955390563 ? h : 1395095945)) && ((240 ? -1057315704 : 286715559.1) > (2.53302630008715E+18 >> f)))) % 256] != ((((c << b) * ((1073741823 - e) - ui8[(-1002318164) % 256])) === -971580180) ? ((c /= (f64[(2) % 256] * (-1045876103 < e) + (obj0.length != 478051970))) >= g) : ((i = (! c)) >= ui32[(2.48531753982752E+18) % 256])))));
        b = b & 56905931;
        i = i & 37546182;
      }
    } while((b) && __loopvar1 < 3)
  }
  var __loopvar0 = 0;
  LABEL0: 
  LABEL1: 
  do {
    __loopvar0++;
    c =((((1114465357.1 == ((d ^= -4.07831962799605E+18) > ((obj0.length ? -2147483648 : obj0.b) !== i32[(i) % 256]))) ? ((c -= ((3.14480543427981E+18 >= obj0.b) ? c : ((obj0.a = f) * (2 - (c = (h-- )))))) >> i16[(((f !== -2060122946) >> (obj0.b++ ))) % 256]) : ((((obj0.length > -1056093475) ? (-6.96555384452011E+18 === 0) : (obj0.b ? f : -2147483648)) != (((obj0.length * (i16[(obj0.length) % 256] + (e ^ -967574262))) * (-8.72994431158076E+18 - obj0.a)) * ((i8[(e) % 256] * ((obj0.a = -1849301528) - (6.74169986222219E+17 <= d))) + -6.90928671518167E+18))) ? (a = b) : d)) === 2) ? 292301845.1 : (++ obj0.b));
    if(((((ary[(((obj0.length -= ((~ -1214166293) * (f32[(-1) % 256] - 245))) >= 0 ? (obj0.length -= ((~ -1214166293) * (f32[(-1) % 256] - 245))) : 0))] * (h > (ui32[(d) % 256] != 1649113456)) + e) * ((ary[(7)] == b) ? (((a-- ) - 188) == -292299792) : (((-82 == 645955934.1) ? (-963386447 * ((~ obj0.b) + (-1073741824 * -1043540189.9 + (++ g)))) : ((1.22721918892553E+18 ? d : b) * (((((i32[(e) % 256] * ((g ^= (-1073741824 !== g)) + (-1036867898 != 504812077.1))) * ((~ obj0.length) - (i ^= ary[(6)]))) * -4.78666157124024E+18 + (a >= 1073741823)) * (97 !== b) - ((f / (a == 0 ? 1 : a)) * (i8[(-26832713.9) % 256] + ary[((a >= 0 ? a : 0))]))) + obj0.b))) >= 4.06304316837926E+18)) + (obj0.length - ui8[(((i-- ) | -99)) % 256])) * ((f -= ((d === ((8 >= obj0.b) ? (-55628366.9 ? -1.05084529882389E+18 : obj0.b) : (-1 ? -1039404519.9 : i))) ? (! (h /= (a-- ))) : i32[((-- c)) % 256])) + (obj0.b++ ))) > (a = f32[(ui16[((((h <= 4.50087607375744E+18) * ((g >= -3.71755873505005E+18) - (obj0.b *= (e < -1047940750)))) * (ui32[(5.25502305851296E+18) % 256] * (i32[(1765269077) % 256] - ary[((-162 >= 0 ? -162 : 0))])))) % 256]) % 256]))) {
    }
    else {
      WScript.Echo("d = " + (d|0));;
      c = c & 82443542;
      continue LABEL0;
      var __loopvar2 = 0;
      do {
        __loopvar2++;
        f = f & 76979462;
      } while(((i32[(f32[((h++ )) % 256]) % 256] > ((((-8.18426618862528E+18 != d) * (obj0.a = (d = (+ e))) + (h === g)) < (g * -867721855.9 + (+ a))) | d))) && __loopvar2 < 3)
      var __loopvar2 = 0;
      LABEL2: 
      while((((-341660018 <= i8[(h) % 256]) ? ((i16[(192) % 256] >>> i) <= (obj0.a * f64[(obj0.length) % 256] + obj0.a)) : ui8[(e) % 256])) && __loopvar2 < 3) {
        __loopvar2++;
      }
      obj0.b = (g /= ((((ui8[((8.00069639025228E+18 > g)) % 256] || (b++ )) !== ((f /= ary[(7)]) === i8[((((-- obj0.a) * ary[((e >= 0 ? e : 0))] + (-197 * ((++ i) + ((obj0.a-- ) * (f ^= (~ obj0.a)) - (-135 ? i : -3.32443818274466E+18))))) * ((obj0.length > -999110304) + -1070530349))) % 256])) ? f32[((f64[(a) % 256] * (obj0.a * ui8[(-1009317935) % 256] + -1071476091) - (h ^= (d -= (c >> 2))))) % 256] : (f32[((+ (c ? obj0.length : i))) % 256] >>> (+ ((i ? 358774961 : 198904297.1) > 1056593240)))) >= i));
    }
    b &=(((+ f64[(((ui16[(d) % 256] > (d *= (-1026350611 > obj0.length))) ? (e <= f64[(c) % 256]) : f64[((i32[(28038780) % 256] * (d > i) + (-1071099488 ? -1073741824 : e))) % 256])) % 256]) >= (-- obj0.length)) ? -1061529233 : (-193 >= (i-- )));
    WScript.Echo("c = " + (c|0));;
  } while((-3.73961564302253E+18) && __loopvar0 < 3)
  WScript.Echo("a = " + (a|0));;
  WScript.Echo("b = " + (b|0));;
  WScript.Echo("c = " + (c|0));;
  WScript.Echo("d = " + (d|0));;
  WScript.Echo("e = " + (e|0));;
  WScript.Echo("f = " + (f|0));;
  WScript.Echo("g = " + (g|0));;
  WScript.Echo("h = " + (h|0));;
  WScript.Echo("i = " + (i|0));;
  WScript.Echo("obj0 = " + (obj0|0));;
  WScript.Echo("obj0.a = " + (obj0.a|0));;
  WScript.Echo("obj0.b = " + (obj0.b|0));;
  WScript.Echo("obj0.length = " + (obj0.length|0));;
  WScript.Echo("ary[0] = " + (ary[0]|0));;
  WScript.Echo("ary[1] = " + (ary[1]|0));;
  WScript.Echo("ary[100] = " + (ary[100]|0));;
  WScript.Echo("ary[ary.length-1] = " + (ary[ary.length-1]|0));;
  WScript.Echo("ary.length = " + (ary.length|0));;
})();
