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

function makeArrayLength() {
}
function leaf() {
}
var arrObj0 = {};
var func0 = function (argFunc0, argArr1) {
    for (var _strvar0 in argArr1) {
        argArr1[_strvar0] = typeof f32[argArr1.pop() & 255];
    }
};
var func3 = function () {
    func0(leaf, ary);
};
arrObj0.method1 = func3;
var ary = new Array();
var f32 = new Float32Array();
var FloatArr0 = Array;
makeArrayLength({ prop1: arrObj0.method1(ary.splice(12, 14, arrObj0.method1())) });
try {
} catch (ex) {
} finally {
    try {
        obj6();
    } catch (ex) {
        var id32 = FloatArr0({ prop1: arrObj0.method1() });
    } finally {
    }
}

WScript.Echo('pass');