//@ runFTLNoCJIT("--thresholdForFTLOptimizeAfterWarmUp=1000")

// This test should not crash.

let source;
for (__v1 of 'gu') {
    let __v3 = new RegExp(source, __v1);
    let __v0 = 'Over many a quaint and curious volume of forgotten lore,'.replace(__v3, (...__v0) => {
        try {
            try {
                try {
                    for (let __v0 = 27; __v0 < 1000; ++__v0) {}
                } finally {
                    return __v4;
                }
            } finally {
                gc();
            }
        } catch (__v3) {
            try {
            } finally {
                    ({}).__proto__[__v0] = __v3;
                    for (__v1 of 'gu') {
                        let __v3 = new RegExp(source, __v1);
                        let __v0 = 'Over many a quaint and curious volume of forgotten lore,'.replace(__v3, (...__v0) => {
                            try {
                                try {
                                } finally {(((((((((((((((((((((((((((((((((((((('blahblahblahblah' + __v0) + __v0) + __v0) + __v0) + __v0 instanceof __v0) + __v0) + __v0 === __v0) + __v0) + __v0) + __v0) + __v0) + __v0) + __v0 != __v0) + __v1) + __v0) + __v0) + __v0) + __v0) + __v0) + __v0) + __v0) + __v0) + __v0) + __v0) + __v0) + __v0) + __v0) + __v0) + __v0) + __v0) + __v0 === __v0) + __v5) + __v0) + __v0) + __v0) + __v0) + __v0) + __v0) + __v2 + __v0;
                                }
                            } catch (__v3) {
                                try {
                                    eval('tag`Hello\n${v}world`');
                                } finally {
                                    try {
                                    } finally {
                                        try {
                                            eval('tag`Hello\n${v}world`');
                                        } finally {
                                            return;
                                        }
                                    }
                                }
                            }
                        });
                    }
            }
        }
    });
}