; LLVM IR from facebook/hermes :: API/hermes_sandbox/external (hermes_sandbox_impl_compiled_2)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.w2c_hermes = type { ptr, ptr, ptr, i32, i32, i32, %struct.wasm_rt_memory_t, %struct.wasm_rt_funcref_table_t }
%struct.wasm_rt_memory_t = type { ptr, i64, i64, i64, i8 }
%struct.wasm_rt_funcref_table_t = type { ptr, i32, i32 }

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @i32_store(ptr noundef, i64 noundef, i32 noundef) #1

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: noreturn
declare void @wasm_rt_trap(i32 noundef) #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @i32_load(ptr noundef, i64 noundef) #1

; Function Attrs: inlinehint nounwind uwtable
declare hidden i64 @i64_load(ptr noundef, i64 noundef) #1

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @i64_store(ptr noundef, i64 noundef, i64 noundef) #1

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(none)
declare i64 @llvm.expect.i64(i64, i64) #3

declare void @w2c_hermes_0x5F_assert_fail(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #4

; Function Attrs: nounwind uwtable
define dso_local i32 @w2c_hermes_hermes0x3A0x3Aparser0x3A0x3AJSLexer0x3A0x3ASavePoint0x3A0x3ASavePoint0x28hermes0x3A0x3Aparser0x3A0x3AJSLexer0x2A0x29(ptr noundef %0, i32 noundef %1, i32 noundef %2) #5 {
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i64, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store i32 %1, ptr %5, align 4, !tbaa !9
  store i32 %2, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #6
  store i32 0, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #6
  store i32 0, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #6
  %15 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %15, ptr %9, align 4, !tbaa !9
  %16 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %16, ptr %10, align 4, !tbaa !9
  %17 = load ptr, ptr %4, align 8, !tbaa !5
  %18 = getelementptr inbounds %struct.w2c_hermes, ptr %17, i32 0, i32 6
  %19 = load i32, ptr %9, align 4, !tbaa !9
  %20 = zext i32 %19 to i64
  %21 = load i32, ptr %10, align 4, !tbaa !9
  call void @i32_store(ptr noundef %18, i64 noundef %20, i32 noundef %21)
  %22 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %22, ptr %9, align 4, !tbaa !9
  %23 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %23, ptr %10, align 4, !tbaa !9
  %24 = load ptr, ptr %4, align 8, !tbaa !5
  %25 = getelementptr inbounds %struct.w2c_hermes, ptr %24, i32 0, i32 6
  %26 = load i32, ptr %10, align 4, !tbaa !9
  %27 = zext i32 %26 to i64
  %28 = add i64 %27, 32
  %29 = call i32 @i32_load(ptr noundef %25, i64 noundef %28)
  store i32 %29, ptr %10, align 4, !tbaa !9
  %30 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %30, ptr %7, align 4, !tbaa !9
  %31 = load ptr, ptr %4, align 8, !tbaa !5
  %32 = getelementptr inbounds %struct.w2c_hermes, ptr %31, i32 0, i32 6
  %33 = load i32, ptr %9, align 4, !tbaa !9
  %34 = zext i32 %33 to i64
  %35 = add i64 %34, 4
  %36 = load i32, ptr %10, align 4, !tbaa !9
  call void @i32_store(ptr noundef %32, i64 noundef %35, i32 noundef %36)
  %37 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %37, ptr %9, align 4, !tbaa !9
  store i32 1, ptr %10, align 4, !tbaa !9
  %38 = load i32, ptr %9, align 4, !tbaa !9
  %39 = load i32, ptr %10, align 4, !tbaa !9
  %40 = icmp eq i32 %38, %39
  %41 = zext i1 %40 to i32
  store i32 %41, ptr %9, align 4, !tbaa !9
  %42 = load i32, ptr %9, align 4, !tbaa !9
  %43 = icmp ne i32 %42, 0
  br i1 %43, label %44, label %53

44:                                               ; preds = %3
  %45 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %45, ptr %9, align 4, !tbaa !9
  %46 = load ptr, ptr %4, align 8, !tbaa !5
  %47 = getelementptr inbounds %struct.w2c_hermes, ptr %46, i32 0, i32 6
  %48 = load i32, ptr %9, align 4, !tbaa !9
  %49 = zext i32 %48 to i64
  %50 = add i64 %49, 56
  %51 = call i32 @i32_load(ptr noundef %47, i64 noundef %50)
  store i32 %51, ptr %9, align 4, !tbaa !9
  %52 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %52, ptr %8, align 4, !tbaa !9
  br label %53

53:                                               ; preds = %44, %3
  %54 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %54, ptr %9, align 4, !tbaa !9
  %55 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %55, ptr %10, align 4, !tbaa !9
  %56 = load ptr, ptr %4, align 8, !tbaa !5
  %57 = getelementptr inbounds %struct.w2c_hermes, ptr %56, i32 0, i32 6
  %58 = load i32, ptr %9, align 4, !tbaa !9
  %59 = zext i32 %58 to i64
  %60 = add i64 %59, 8
  %61 = load i32, ptr %10, align 4, !tbaa !9
  call void @i32_store(ptr noundef %57, i64 noundef %60, i32 noundef %61)
  %62 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %62, ptr %9, align 4, !tbaa !9
  %63 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %63, ptr %10, align 4, !tbaa !9
  %64 = load ptr, ptr %4, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.w2c_hermes, ptr %64, i32 0, i32 6
  %66 = load i32, ptr %10, align 4, !tbaa !9
  %67 = zext i32 %66 to i64
  %68 = add i64 %67, 88
  %69 = call i32 @i32_load(ptr noundef %65, i64 noundef %68)
  store i32 %69, ptr %10, align 4, !tbaa !9
  %70 = load ptr, ptr %4, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.w2c_hermes, ptr %70, i32 0, i32 6
  %72 = load i32, ptr %9, align 4, !tbaa !9
  %73 = zext i32 %72 to i64
  %74 = add i64 %73, 12
  %75 = load i32, ptr %10, align 4, !tbaa !9
  call void @i32_store(ptr noundef %71, i64 noundef %74, i32 noundef %75)
  %76 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %76, ptr %9, align 4, !tbaa !9
  %77 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %77, ptr %10, align 4, !tbaa !9
  %78 = load ptr, ptr %4, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.w2c_hermes, ptr %78, i32 0, i32 6
  %80 = load i32, ptr %10, align 4, !tbaa !9
  %81 = zext i32 %80 to i64
  %82 = add i64 %81, 36
  %83 = call i64 @i64_load(ptr noundef %79, i64 noundef %82)
  store i64 %83, ptr %14, align 8, !tbaa !11
  %84 = load ptr, ptr %4, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.w2c_hermes, ptr %84, i32 0, i32 6
  %86 = load i32, ptr %9, align 4, !tbaa !9
  %87 = zext i32 %86 to i64
  %88 = add i64 %87, 16
  %89 = load i64, ptr %14, align 8, !tbaa !11
  call void @i64_store(ptr noundef %85, i64 noundef %88, i64 noundef %89)
  %90 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %90, ptr %9, align 4, !tbaa !9
  %91 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %91, ptr %10, align 4, !tbaa !9
  %92 = load ptr, ptr %4, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.w2c_hermes, ptr %92, i32 0, i32 6
  %94 = load i32, ptr %10, align 4, !tbaa !9
  %95 = zext i32 %94 to i64
  %96 = add i64 %95, 80
  %97 = call i32 @i32_load(ptr noundef %93, i64 noundef %96)
  store i32 %97, ptr %10, align 4, !tbaa !9
  %98 = load ptr, ptr %4, align 8, !tbaa !5
  %99 = getelementptr inbounds %struct.w2c_hermes, ptr %98, i32 0, i32 6
  %100 = load i32, ptr %9, align 4, !tbaa !9
  %101 = zext i32 %100 to i64
  %102 = add i64 %101, 24
  %103 = load i32, ptr %10, align 4, !tbaa !9
  call void @i32_store(ptr noundef %99, i64 noundef %102, i32 noundef %103)
  %104 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %104, ptr %9, align 4, !tbaa !9
  %105 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %105, ptr %10, align 4, !tbaa !9
  %106 = load ptr, ptr %4, align 8, !tbaa !5
  %107 = getelementptr inbounds %struct.w2c_hermes, ptr %106, i32 0, i32 6
  %108 = load i32, ptr %10, align 4, !tbaa !9
  %109 = zext i32 %108 to i64
  %110 = add i64 %109, 840
  %111 = call i32 @i32_load(ptr noundef %107, i64 noundef %110)
  store i32 %111, ptr %10, align 4, !tbaa !9
  %112 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %112, ptr %11, align 4, !tbaa !9
  %113 = load ptr, ptr %4, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.w2c_hermes, ptr %113, i32 0, i32 6
  %115 = load i32, ptr %11, align 4, !tbaa !9
  %116 = zext i32 %115 to i64
  %117 = add i64 %116, 836
  %118 = call i32 @i32_load(ptr noundef %114, i64 noundef %117)
  store i32 %118, ptr %11, align 4, !tbaa !9
  %119 = load i32, ptr %11, align 4, !tbaa !9
  %120 = load i32, ptr %10, align 4, !tbaa !9
  %121 = sub i32 %120, %119
  store i32 %121, ptr %10, align 4, !tbaa !9
  store i32 12, ptr %11, align 4, !tbaa !9
  %122 = load i32, ptr %11, align 4, !tbaa !9
  %123 = icmp eq i32 %122, 0
  %124 = xor i1 %123, true
  %125 = xor i1 %124, true
  %126 = zext i1 %125 to i32
  %127 = sext i32 %126 to i64
  %128 = call i64 @llvm.expect.i64(i64 %127, i64 0)
  %129 = icmp ne i64 %128, 0
  br i1 %129, label %130, label %132

130:                                              ; preds = %53
  call void @wasm_rt_trap(i32 noundef 3) #7
  unreachable

131:                                              ; No predecessors!
  br label %154

132:                                              ; preds = %53
  %133 = load i32, ptr %10, align 4, !tbaa !9
  %134 = icmp eq i32 %133, -2147483648
  br i1 %134, label %135, label %138

135:                                              ; preds = %132
  %136 = load i32, ptr %11, align 4, !tbaa !9
  %137 = icmp eq i32 %136, -1
  br label %138

138:                                              ; preds = %135, %132
  %139 = phi i1 [ false, %132 ], [ %137, %135 ]
  %140 = xor i1 %139, true
  %141 = xor i1 %140, true
  %142 = zext i1 %141 to i32
  %143 = sext i32 %142 to i64
  %144 = call i64 @llvm.expect.i64(i64 %143, i64 0)
  %145 = icmp ne i64 %144, 0
  br i1 %145, label %146, label %148

146:                                              ; preds = %138
  call void @wasm_rt_trap(i32 noundef 2) #7
  unreachable

147:                                              ; No predecessors!
  br label %152

148:                                              ; preds = %138
  %149 = load i32, ptr %10, align 4, !tbaa !9
  %150 = load i32, ptr %11, align 4, !tbaa !9
  %151 = sdiv i32 %149, %150
  br label %152

152:                                              ; preds = %148, %147
  %153 = phi i32 [ 0, %147 ], [ %151, %148 ]
  br label %154

154:                                              ; preds = %152, %131
  %155 = phi i32 [ 0, %131 ], [ %153, %152 ]
  store i32 %155, ptr %10, align 4, !tbaa !9
  %156 = load ptr, ptr %4, align 8, !tbaa !5
  %157 = getelementptr inbounds %struct.w2c_hermes, ptr %156, i32 0, i32 6
  %158 = load i32, ptr %9, align 4, !tbaa !9
  %159 = zext i32 %158 to i64
  %160 = add i64 %159, 28
  %161 = load i32, ptr %10, align 4, !tbaa !9
  call void @i32_store(ptr noundef %157, i64 noundef %160, i32 noundef %161)
  %162 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %162, ptr %9, align 4, !tbaa !9
  %163 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %163, ptr %10, align 4, !tbaa !9
  %164 = load ptr, ptr %4, align 8, !tbaa !5
  %165 = getelementptr inbounds %struct.w2c_hermes, ptr %164, i32 0, i32 6
  %166 = load i32, ptr %10, align 4, !tbaa !9
  %167 = zext i32 %166 to i64
  %168 = add i64 %167, 852
  %169 = call i32 @i32_load(ptr noundef %165, i64 noundef %168)
  store i32 %169, ptr %10, align 4, !tbaa !9
  %170 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %170, ptr %11, align 4, !tbaa !9
  %171 = load ptr, ptr %4, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.w2c_hermes, ptr %171, i32 0, i32 6
  %173 = load i32, ptr %11, align 4, !tbaa !9
  %174 = zext i32 %173 to i64
  %175 = add i64 %174, 848
  %176 = call i32 @i32_load(ptr noundef %172, i64 noundef %175)
  store i32 %176, ptr %11, align 4, !tbaa !9
  %177 = load i32, ptr %11, align 4, !tbaa !9
  %178 = load i32, ptr %10, align 4, !tbaa !9
  %179 = sub i32 %178, %177
  store i32 %179, ptr %10, align 4, !tbaa !9
  store i32 12, ptr %11, align 4, !tbaa !9
  %180 = load i32, ptr %11, align 4, !tbaa !9
  %181 = icmp eq i32 %180, 0
  %182 = xor i1 %181, true
  %183 = xor i1 %182, true
  %184 = zext i1 %183 to i32
  %185 = sext i32 %184 to i64
  %186 = call i64 @llvm.expect.i64(i64 %185, i64 0)
  %187 = icmp ne i64 %186, 0
  br i1 %187, label %188, label %190

188:                                              ; preds = %154
  call void @wasm_rt_trap(i32 noundef 3) #7
  unreachable

189:                                              ; No predecessors!
  br label %212

190:                                              ; preds = %154
  %191 = load i32, ptr %10, align 4, !tbaa !9
  %192 = icmp eq i32 %191, -2147483648
  br i1 %192, label %193, label %196

193:                                              ; preds = %190
  %194 = load i32, ptr %11, align 4, !tbaa !9
  %195 = icmp eq i32 %194, -1
  br label %196

196:                                              ; preds = %193, %190
  %197 = phi i1 [ false, %190 ], [ %195, %193 ]
  %198 = xor i1 %197, true
  %199 = xor i1 %198, true
  %200 = zext i1 %199 to i32
  %201 = sext i32 %200 to i64
  %202 = call i64 @llvm.expect.i64(i64 %201, i64 0)
  %203 = icmp ne i64 %202, 0
  br i1 %203, label %204, label %206

204:                                              ; preds = %196
  call void @wasm_rt_trap(i32 noundef 2) #7
  unreachable

205:                                              ; No predecessors!
  br label %210

206:                                              ; preds = %196
  %207 = load i32, ptr %10, align 4, !tbaa !9
  %208 = load i32, ptr %11, align 4, !tbaa !9
  %209 = sdiv i32 %207, %208
  br label %210

210:                                              ; preds = %206, %205
  %211 = phi i32 [ 0, %205 ], [ %209, %206 ]
  br label %212

212:                                              ; preds = %210, %189
  %213 = phi i32 [ 0, %189 ], [ %211, %210 ]
  store i32 %213, ptr %10, align 4, !tbaa !9
  %214 = load ptr, ptr %4, align 8, !tbaa !5
  %215 = getelementptr inbounds %struct.w2c_hermes, ptr %214, i32 0, i32 6
  %216 = load i32, ptr %9, align 4, !tbaa !9
  %217 = zext i32 %216 to i64
  %218 = add i64 %217, 32
  %219 = load i32, ptr %10, align 4, !tbaa !9
  call void @i32_store(ptr noundef %215, i64 noundef %218, i32 noundef %219)
  %220 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %220, ptr %9, align 4, !tbaa !9
  store i32 49, ptr %10, align 4, !tbaa !9
  %221 = load i32, ptr %10, align 4, !tbaa !9
  %222 = load i32, ptr %9, align 4, !tbaa !9
  %223 = sub i32 %222, %221
  store i32 %223, ptr %9, align 4, !tbaa !9
  %224 = load i32, ptr %9, align 4, !tbaa !9
  switch i32 %224, label %286 [
    i32 0, label %225
    i32 1, label %226
    i32 2, label %227
    i32 3, label %228
    i32 4, label %229
    i32 5, label %230
    i32 6, label %231
    i32 7, label %232
    i32 8, label %233
    i32 9, label %234
    i32 10, label %235
    i32 11, label %236
    i32 12, label %237
    i32 13, label %238
    i32 14, label %239
    i32 15, label %240
    i32 16, label %241
    i32 17, label %242
    i32 18, label %243
    i32 19, label %244
    i32 20, label %245
    i32 21, label %246
    i32 22, label %247
    i32 23, label %248
    i32 24, label %249
    i32 25, label %250
    i32 26, label %251
    i32 27, label %252
    i32 28, label %253
    i32 29, label %254
    i32 30, label %255
    i32 31, label %256
    i32 32, label %257
    i32 33, label %258
    i32 34, label %259
    i32 35, label %260
    i32 36, label %261
    i32 37, label %262
    i32 38, label %263
    i32 39, label %264
    i32 40, label %265
    i32 41, label %266
    i32 42, label %267
    i32 43, label %268
    i32 44, label %269
    i32 45, label %270
    i32 46, label %271
    i32 47, label %272
    i32 48, label %273
    i32 49, label %274
    i32 50, label %275
    i32 51, label %276
    i32 52, label %277
    i32 53, label %278
    i32 54, label %279
    i32 55, label %280
    i32 56, label %281
    i32 57, label %282
    i32 58, label %283
    i32 59, label %284
    i32 60, label %285
  ]

225:                                              ; preds = %212
  br label %323

226:                                              ; preds = %212
  br label %287

227:                                              ; preds = %212
  br label %323

228:                                              ; preds = %212
  br label %287

229:                                              ; preds = %212
  br label %323

230:                                              ; preds = %212
  br label %323

231:                                              ; preds = %212
  br label %323

232:                                              ; preds = %212
  br label %323

233:                                              ; preds = %212
  br label %323

234:                                              ; preds = %212
  br label %323

235:                                              ; preds = %212
  br label %323

236:                                              ; preds = %212
  br label %323

237:                                              ; preds = %212
  br label %323

238:                                              ; preds = %212
  br label %323

239:                                              ; preds = %212
  br label %323

240:                                              ; preds = %212
  br label %287

241:                                              ; preds = %212
  br label %323

242:                                              ; preds = %212
  br label %323

243:                                              ; preds = %212
  br label %323

244:                                              ; preds = %212
  br label %323

245:                                              ; preds = %212
  br label %323

246:                                              ; preds = %212
  br label %323

247:                                              ; preds = %212
  br label %323

248:                                              ; preds = %212
  br label %323

249:                                              ; preds = %212
  br label %323

250:                                              ; preds = %212
  br label %323

251:                                              ; preds = %212
  br label %323

252:                                              ; preds = %212
  br label %323

253:                                              ; preds = %212
  br label %323

254:                                              ; preds = %212
  br label %323

255:                                              ; preds = %212
  br label %323

256:                                              ; preds = %212
  br label %323

257:                                              ; preds = %212
  br label %323

258:                                              ; preds = %212
  br label %323

259:                                              ; preds = %212
  br label %323

260:                                              ; preds = %212
  br label %323

261:                                              ; preds = %212
  br label %323

262:                                              ; preds = %212
  br label %323

263:                                              ; preds = %212
  br label %323

264:                                              ; preds = %212
  br label %287

265:                                              ; preds = %212
  br label %323

266:                                              ; preds = %212
  br label %323

267:                                              ; preds = %212
  br label %323

268:                                              ; preds = %212
  br label %323

269:                                              ; preds = %212
  br label %323

270:                                              ; preds = %212
  br label %323

271:                                              ; preds = %212
  br label %323

272:                                              ; preds = %212
  br label %323

273:                                              ; preds = %212
  br label %323

274:                                              ; preds = %212
  br label %323

275:                                              ; preds = %212
  br label %323

276:                                              ; preds = %212
  br label %323

277:                                              ; preds = %212
  br label %323

278:                                              ; preds = %212
  br label %323

279:                                              ; preds = %212
  br label %323

280:                                              ; preds = %212
  br label %323

281:                                              ; preds = %212
  br label %323

282:                                              ; preds = %212
  br label %323

283:                                              ; preds = %212
  br label %323

284:                                              ; preds = %212
  br label %323

285:                                              ; preds = %212
  br label %323

286:                                              ; preds = %212
  br label %287

287:                                              ; preds = %286, %264, %240, %228, %226
  %288 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %288, ptr %9, align 4, !tbaa !9
  store i32 1, ptr %10, align 4, !tbaa !9
  %289 = load i32, ptr %9, align 4, !tbaa !9
  %290 = load i32, ptr %10, align 4, !tbaa !9
  %291 = icmp eq i32 %289, %290
  %292 = zext i1 %291 to i32
  store i32 %292, ptr %9, align 4, !tbaa !9
  %293 = load i32, ptr %9, align 4, !tbaa !9
  %294 = icmp ne i32 %293, 0
  br i1 %294, label %295, label %296

295:                                              ; preds = %287
  br label %323

296:                                              ; preds = %287
  %297 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %297, ptr %9, align 4, !tbaa !9
  store i32 38, ptr %10, align 4, !tbaa !9
  %298 = load i32, ptr %9, align 4, !tbaa !9
  %299 = load i32, ptr %10, align 4, !tbaa !9
  %300 = icmp eq i32 %298, %299
  %301 = zext i1 %300 to i32
  store i32 %301, ptr %9, align 4, !tbaa !9
  %302 = load i32, ptr %9, align 4, !tbaa !9
  %303 = icmp ne i32 %302, 0
  br i1 %303, label %304, label %305

304:                                              ; preds = %296
  br label %323

305:                                              ; preds = %296
  store i32 0, ptr %9, align 4, !tbaa !9
  %306 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %306, ptr %6, align 4, !tbaa !9
  store i32 173947, ptr %10, align 4, !tbaa !9
  %307 = load i32, ptr %10, align 4, !tbaa !9
  %308 = load i32, ptr %9, align 4, !tbaa !9
  %309 = add i32 %308, %307
  store i32 %309, ptr %9, align 4, !tbaa !9
  %310 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %310, ptr %10, align 4, !tbaa !9
  store i32 80190, ptr %11, align 4, !tbaa !9
  %311 = load i32, ptr %11, align 4, !tbaa !9
  %312 = load i32, ptr %10, align 4, !tbaa !9
  %313 = add i32 %312, %311
  store i32 %313, ptr %10, align 4, !tbaa !9
  store i32 733, ptr %11, align 4, !tbaa !9
  %314 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %314, ptr %12, align 4, !tbaa !9
  store i32 25564, ptr %13, align 4, !tbaa !9
  %315 = load i32, ptr %13, align 4, !tbaa !9
  %316 = load i32, ptr %12, align 4, !tbaa !9
  %317 = add i32 %316, %315
  store i32 %317, ptr %12, align 4, !tbaa !9
  %318 = load ptr, ptr %4, align 8, !tbaa !5
  %319 = load i32, ptr %9, align 4, !tbaa !9
  %320 = load i32, ptr %10, align 4, !tbaa !9
  %321 = load i32, ptr %11, align 4, !tbaa !9
  %322 = load i32, ptr %12, align 4, !tbaa !9
  call void @w2c_hermes_0x5F_assert_fail(ptr noundef %318, i32 noundef %319, i32 noundef %320, i32 noundef %321, i32 noundef %322)
  call void @wasm_rt_trap(i32 noundef 5) #7
  unreachable

323:                                              ; preds = %304, %295, %285, %284, %283, %282, %281, %280, %279, %278, %277, %276, %275, %274, %273, %272, %271, %270, %269, %268, %267, %266, %265, %263, %262, %261, %260, %259, %258, %257, %256, %255, %254, %253, %252, %251, %250, %249, %248, %247, %246, %245, %244, %243, %242, %241, %239, %238, %237, %236, %235, %234, %233, %232, %231, %230, %229, %227, %225
  %324 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %324, ptr %9, align 4, !tbaa !9
  %325 = load i32, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  ret i32 %325
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { noreturn "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind willreturn memory(none) }
attributes #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind }
attributes #7 = { noreturn }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @i32_store(ptr noundef, i64 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: noreturn
declare void @wasm_rt_trap(i32 noundef) local_unnamed_addr #1

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @i32_load(ptr noundef, i64 noundef) local_unnamed_addr #0

; Function Attrs: inlinehint nounwind uwtable
declare hidden i64 @i64_load(ptr noundef, i64 noundef) local_unnamed_addr #0

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @i64_store(ptr noundef, i64 noundef, i64 noundef) local_unnamed_addr #0

declare void @w2c_hermes_0x5F_assert_fail(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @w2c_hermes_hermes0x3A0x3Aparser0x3A0x3AJSLexer0x3A0x3ASavePoint0x3A0x3ASavePoint0x28hermes0x3A0x3Aparser0x3A0x3AJSLexer0x2A0x29(ptr noundef %0, i32 noundef returned %1, i32 noundef %2) local_unnamed_addr #3 {
  %4 = getelementptr inbounds i8, ptr %0, i64 40
  %5 = zext i32 %1 to i64
  tail call void @i32_store(ptr noundef nonnull %4, i64 noundef %5, i32 noundef %2)
  %6 = zext i32 %2 to i64
  %7 = add nuw nsw i64 %6, 32
  %8 = tail call i32 @i32_load(ptr noundef nonnull %4, i64 noundef %7)
  %9 = add nuw nsw i64 %5, 4
  tail call void @i32_store(ptr noundef nonnull %4, i64 noundef %9, i32 noundef %8)
  %10 = icmp eq i32 %8, 1
  br i1 %10, label %11, label %14

11:                                               ; preds = %3
  %12 = add nuw nsw i64 %6, 56
  %13 = tail call i32 @i32_load(ptr noundef nonnull %4, i64 noundef %12)
  br label %14

14:                                               ; preds = %11, %3
  %.0 = phi i32 [ %13, %11 ], [ 0, %3 ]
  %15 = add nuw nsw i64 %5, 8
  tail call void @i32_store(ptr noundef nonnull %4, i64 noundef %15, i32 noundef %.0)
  %16 = add nuw nsw i64 %6, 88
  %17 = tail call i32 @i32_load(ptr noundef nonnull %4, i64 noundef %16)
  %18 = add nuw nsw i64 %5, 12
  tail call void @i32_store(ptr noundef nonnull %4, i64 noundef %18, i32 noundef %17)
  %19 = add nuw nsw i64 %6, 36
  %20 = tail call i64 @i64_load(ptr noundef nonnull %4, i64 noundef %19)
  %21 = add nuw nsw i64 %5, 16
  tail call void @i64_store(ptr noundef nonnull %4, i64 noundef %21, i64 noundef %20)
  %22 = add nuw nsw i64 %6, 80
  %23 = tail call i32 @i32_load(ptr noundef nonnull %4, i64 noundef %22)
  %24 = add nuw nsw i64 %5, 24
  tail call void @i32_store(ptr noundef nonnull %4, i64 noundef %24, i32 noundef %23)
  %25 = add nuw nsw i64 %6, 840
  %26 = tail call i32 @i32_load(ptr noundef nonnull %4, i64 noundef %25)
  %27 = add nuw nsw i64 %6, 836
  %28 = tail call i32 @i32_load(ptr noundef nonnull %4, i64 noundef %27)
  %29 = sub i32 %26, %28
  %30 = sdiv i32 %29, 12
  %31 = add nuw nsw i64 %5, 28
  tail call void @i32_store(ptr noundef nonnull %4, i64 noundef %31, i32 noundef %30)
  %32 = add nuw nsw i64 %6, 852
  %33 = tail call i32 @i32_load(ptr noundef nonnull %4, i64 noundef %32)
  %34 = add nuw nsw i64 %6, 848
  %35 = tail call i32 @i32_load(ptr noundef nonnull %4, i64 noundef %34)
  %36 = sub i32 %33, %35
  %37 = sdiv i32 %36, 12
  %38 = add nuw nsw i64 %5, 32
  tail call void @i32_store(ptr noundef nonnull %4, i64 noundef %38, i32 noundef %37)
  switch i32 %8, label %39 [
    i32 49, label %41
    i32 109, label %41
    i32 51, label %41
    i32 108, label %41
    i32 53, label %41
    i32 54, label %41
    i32 55, label %41
    i32 56, label %41
    i32 57, label %41
    i32 58, label %41
    i32 59, label %41
    i32 60, label %41
    i32 61, label %41
    i32 62, label %41
    i32 63, label %41
    i32 107, label %41
    i32 65, label %41
    i32 66, label %41
    i32 67, label %41
    i32 68, label %41
    i32 69, label %41
    i32 70, label %41
    i32 71, label %41
    i32 72, label %41
    i32 73, label %41
    i32 74, label %41
    i32 75, label %41
    i32 76, label %41
    i32 77, label %41
    i32 78, label %41
    i32 79, label %41
    i32 80, label %41
    i32 81, label %41
    i32 82, label %41
    i32 83, label %41
    i32 84, label %41
    i32 85, label %41
    i32 86, label %41
    i32 87, label %41
    i32 106, label %41
    i32 89, label %41
    i32 90, label %41
    i32 91, label %41
    i32 92, label %41
    i32 93, label %41
    i32 94, label %41
    i32 95, label %41
    i32 96, label %41
    i32 97, label %41
    i32 98, label %41
    i32 99, label %41
    i32 100, label %41
    i32 101, label %41
    i32 102, label %41
    i32 103, label %41
    i32 104, label %41
    i32 105, label %41
  ]

39:                                               ; preds = %14
  switch i32 %8, label %40 [
    i32 38, label %41
    i32 1, label %41
  ]

40:                                               ; preds = %39
  tail call void @w2c_hermes_0x5F_assert_fail(ptr noundef %0, i32 noundef 173947, i32 noundef 80190, i32 noundef 733, i32 noundef 25564) #4
  tail call void @wasm_rt_trap(i32 noundef 5) #5
  unreachable

41:                                               ; preds = %39, %39, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14
  ret i32 %1
}

attributes #0 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { noreturn "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }
attributes #5 = { noreturn nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,LowerExpectIntrinsicPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass