//-------------------------------------------------------------------------------------------------------
// 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(a) {
  var arrObj0 = {};
  var func2 = function () {
    return arrObj0 != b || arrObj0[typeof (typeof a == 'boolean') != 'undefined' ? typeof (typeof a == 'boolean') : 0];
  };
  var func3 = function (a) {
      var m = func2(a) ? 'caller' : 1;
  };
  var a = -191;
  var b = -2147483647;
  func3(a);
}
test0(1);
test0(1);
test0(1);
WScript.Echo("Passed");