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

(0, (function()
{
    var obj4 = 1;
    var __loopvar0 = 0;
    while (obj4.c && __loopvar0 < 3)
    {
        __loopvar0++;
        for (var __loopvar1 = 0; obj1.e < d && __loopvar1 < 3; obj1.e++ + __loopvar1++)
        {
            LABEL0:LABEL1:for (var __loopvar2 = 0; obj2.j < (obj3.length |= obj4.c) && __loopvar2 < 3; obj2.j++ + __loopvar2++);
            d = obj4.c
        }
        WScript.Echo("obj0.c = " + (obj0.c | 0));
    }
    WScript.Echo("PASS");
}))()
