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

function test0() {
  var obj0 = {};
  var obj1 = {};
  var arrObj0 = {};
  var func1 = function () {
  };
  var func2 = function () {
  };
  var func3 = function (argMath4) {
    ({ prop5: func2(ary.unshift(obj1.prop0 *= arrObj0, func1(65535 * argMath4))) });
  };
  var func4 = function () {
    func3(-242);
  };
  
  var ary = Array();
  func4();
  func3(func4());
}
test0();
test0();
WScript.Echo("Passed");