function main() {
        const v1 = {};
        const foo = {}
        v1.p = foo;

        const v3 = [1];
        v3.toString = undefined;
        if (!v3) {
            v4 = {
                get v4(){
                    v4;
                }
            }
        }

        for (const v5 of "a") {
            v1.b = 43;
        }

        const v4 = v1.p;

        let = String.fromCharCode("");
        for (let i = 0; i < 2; i++) {
            r = v4;
        }
}

for (let v0 = 0; v0 < 100000; v0++) {
        main();
}
