//-------------------------------------------------------------------------------------------------------
// 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() {
    function makeArrayLength() {
    }
    var obj0 = {};
    var func0 = function () {
    };
    var func1 = function () {
        func0(obj0.prop0 = 1);
        return 776151980;
    };
    obj0.method0 = func1;
    var FloatArr0 = new Array(-244, 3421873769178130000, -7539078262541710000, 799469805.1, 6863152712358460000);
    var VarArr0 = Array();
    var c = 1;
    function bar0() {
        FloatArr0.pop() ? FloatArr0.pop() : 0;
    }
    FloatArr0[obj0.method0()] = 1;
    c = VarArr0.splice(bar0());
    for (var _strvar0 in obj0) {
        FloatArr0[5] = 1;
        if (!0) {
            makeArrayLength(c++);
        }
    }
}
test0();
test0();
test0();
WScript.Echo("Pass");

