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

function foo(i1)
{
  var d2 = 16777217;
  return (!i1 >>> ((d2 % ~~295147905179352830000) + 4268133759)) | 0;  
}
print(foo());
print(foo());
print(foo());

function test0() {
}
var arrObj0 = {};
var func2 = function () {
  Object;
  function v0() {
    for (var v1 = 0; v1 < 8; v1++) {
      function func9() {
        Object.prototype;
      }
      obj7 = func9();
    }
  }
  v0();
};

var ary = Array(2);
var VarArr0 = [];
var __loopvar0 = 4;
func2()
func2()

for (var _strvar65 of ary) {
  prop5 = test0;
  litObj9 = { prop7: VarArr0.unshift(func2(), func2()) };
}