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

; 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 }
%struct.wasm_rt_funcref_t = type { ptr, ptr, ptr }

@w2c_hermes_t0 = external constant ptr, align 8
@w2c_hermes_t3 = external constant ptr, align 8

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

declare void @w2c_hermes_operator0x20delete0x28void0x2A0x29(ptr 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 void @i32_store(ptr noundef, i64 noundef, i32 noundef) #3

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden zeroext i1 @func_types_eq(ptr noundef, ptr noundef) #3

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

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

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

declare void @w2c_hermes_dlfree(ptr noundef, i32 noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @w2c_hermes_hermes0x3A0x3Avm0x3A0x3ARuntimeModule0x3A0x3A0x7ERuntimeModule0x280x29(ptr noundef, i32 noundef) #5

declare void @w2c_hermes_std0x3A0x3A_0x5F20x3A0x3A_0x5Fshared_weak_count0x3A0x3A_0x5Frelease_weak0x280x29(ptr noundef, i32 noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local void @w2c_hermes_hermes0x3A0x3Avm0x3A0x3ARuntimeModule0x3A0x3AprepareForRuntimeShutdown0x280x29(ptr noundef, i32 noundef) #5

; Function Attrs: nounwind uwtable
declare dso_local void @w2c_hermes_hermes0x3A0x3Avm0x3A0x3ATimeLimitMonitor0x3A0x3AunwatchRuntime0x28hermes0x3A0x3Avm0x3A0x3ARuntime0x260x29(ptr noundef, i32 noundef, i32 noundef) #5

; Function Attrs: nounwind uwtable
define dso_local i32 @w2c_hermes_hermes0x3A0x3Avm0x3A0x3ARuntime0x3A0x3A0x7ERuntime0x280x29(ptr noundef %0, i32 noundef %1) #5 {
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %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 i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store i32 %1, ptr %4, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #6
  store i32 0, ptr %5, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #6
  store i32 0, 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
  store i32 0, ptr %9, align 4, !tbaa !9
  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 4, ptr %14) #6
  %15 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %15, ptr %10, align 4, !tbaa !9
  store i32 277608, ptr %11, align 4, !tbaa !9
  %16 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %16, ptr %5, align 4, !tbaa !9
  store i32 76, ptr %12, align 4, !tbaa !9
  %17 = load i32, ptr %12, align 4, !tbaa !9
  %18 = load i32, ptr %11, align 4, !tbaa !9
  %19 = add i32 %18, %17
  store i32 %19, ptr %11, align 4, !tbaa !9
  %20 = load ptr, ptr %3, align 8, !tbaa !5
  %21 = getelementptr inbounds %struct.w2c_hermes, ptr %20, i32 0, i32 6
  %22 = load i32, ptr %10, align 4, !tbaa !9
  %23 = zext i32 %22 to i64
  %24 = add i64 %23, 12
  %25 = load i32, ptr %11, align 4, !tbaa !9
  call void @i32_store(ptr noundef %21, i64 noundef %24, i32 noundef %25)
  %26 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %26, ptr %10, align 4, !tbaa !9
  %27 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %27, ptr %11, align 4, !tbaa !9
  store i32 8, ptr %12, align 4, !tbaa !9
  %28 = load i32, ptr %12, align 4, !tbaa !9
  %29 = load i32, ptr %11, align 4, !tbaa !9
  %30 = add i32 %29, %28
  store i32 %30, ptr %11, align 4, !tbaa !9
  %31 = load ptr, ptr %3, align 8, !tbaa !5
  %32 = getelementptr inbounds %struct.w2c_hermes, ptr %31, i32 0, i32 6
  %33 = load i32, ptr %10, align 4, !tbaa !9
  %34 = zext i32 %33 to i64
  %35 = load i32, ptr %11, align 4, !tbaa !9
  call void @i32_store(ptr noundef %32, i64 noundef %34, i32 noundef %35)
  %36 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %36, ptr %10, align 4, !tbaa !9
  store i32 808, ptr %11, align 4, !tbaa !9
  %37 = load i32, ptr %11, align 4, !tbaa !9
  %38 = load i32, ptr %10, align 4, !tbaa !9
  %39 = add i32 %38, %37
  store i32 %39, ptr %10, align 4, !tbaa !9
  %40 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %40, ptr %9, align 4, !tbaa !9
  %41 = load ptr, ptr %3, align 8, !tbaa !5
  %42 = load i32, ptr %10, align 4, !tbaa !9
  call void @w2c_hermes_hermes0x3A0x3Avm0x3A0x3AHadesGC0x3A0x3AfinalizeAll0x280x29(ptr noundef %41, i32 noundef %42)
  %43 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %43, ptr %10, align 4, !tbaa !9
  store i32 1208, ptr %11, align 4, !tbaa !9
  %44 = load i32, ptr %11, align 4, !tbaa !9
  %45 = load i32, ptr %10, align 4, !tbaa !9
  %46 = add i32 %45, %44
  store i32 %46, ptr %10, align 4, !tbaa !9
  %47 = load ptr, ptr %3, align 8, !tbaa !5
  %48 = load i32, ptr %10, align 4, !tbaa !9
  %49 = call i32 @w2c_hermes_hermes0x3A0x3Avm0x3A0x3AGCBase0x3A0x3AIDTracker0x3A0x3AhasNativeIDs0x280x29(ptr noundef %47, i32 noundef %48)
  store i32 %49, ptr %10, align 4, !tbaa !9
  %50 = load i32, ptr %10, align 4, !tbaa !9
  %51 = icmp ne i32 %50, 0
  %52 = xor i1 %51, true
  %53 = zext i1 %52 to i32
  store i32 %53, ptr %10, align 4, !tbaa !9
  %54 = load i32, ptr %10, align 4, !tbaa !9
  %55 = icmp ne i32 %54, 0
  br i1 %55, label %56, label %309

56:                                               ; preds = %2
  %57 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %57, ptr %10, align 4, !tbaa !9
  %58 = load ptr, ptr %3, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.w2c_hermes, ptr %58, i32 0, i32 6
  %60 = load i32, ptr %10, align 4, !tbaa !9
  %61 = zext i32 %60 to i64
  %62 = add i64 %61, 5640
  %63 = call i32 @i32_load(ptr noundef %59, i64 noundef %62)
  store i32 %63, ptr %10, align 4, !tbaa !9
  %64 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %64, ptr %5, align 4, !tbaa !9
  %65 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %65, ptr %11, align 4, !tbaa !9
  %66 = load ptr, ptr %3, align 8, !tbaa !5
  %67 = getelementptr inbounds %struct.w2c_hermes, ptr %66, i32 0, i32 6
  %68 = load i32, ptr %11, align 4, !tbaa !9
  %69 = zext i32 %68 to i64
  %70 = add i64 %69, 5804
  %71 = call i32 @i32_load(ptr noundef %67, i64 noundef %70)
  store i32 %71, ptr %11, align 4, !tbaa !9
  %72 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %72, ptr %12, align 4, !tbaa !9
  %73 = load ptr, ptr %3, align 8, !tbaa !5
  %74 = getelementptr inbounds %struct.w2c_hermes, ptr %73, i32 0, i32 6
  %75 = load i32, ptr %12, align 4, !tbaa !9
  %76 = zext i32 %75 to i64
  %77 = call i32 @i32_load(ptr noundef %74, i64 noundef %76)
  store i32 %77, ptr %12, align 4, !tbaa !9
  %78 = load ptr, ptr %3, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.w2c_hermes, ptr %78, i32 0, i32 6
  %80 = load i32, ptr %12, align 4, !tbaa !9
  %81 = zext i32 %80 to i64
  %82 = add i64 %81, 28
  %83 = call i32 @i32_load(ptr noundef %79, i64 noundef %82)
  store i32 %83, ptr %12, align 4, !tbaa !9
  %84 = load i32, ptr %12, align 4, !tbaa !9
  %85 = load ptr, ptr %3, align 8, !tbaa !5
  %86 = getelementptr inbounds %struct.w2c_hermes, ptr %85, i32 0, i32 7
  %87 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %86, i32 0, i32 2
  %88 = load i32, ptr %87, align 4, !tbaa !11
  %89 = icmp ult i32 %84, %88
  br i1 %89, label %90, label %113

90:                                               ; preds = %56
  %91 = load ptr, ptr %3, align 8, !tbaa !5
  %92 = getelementptr inbounds %struct.w2c_hermes, ptr %91, i32 0, i32 7
  %93 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %92, i32 0, i32 0
  %94 = load ptr, ptr %93, align 8, !tbaa !17
  %95 = load i32, ptr %12, align 4, !tbaa !9
  %96 = zext i32 %95 to i64
  %97 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %94, i64 %96
  %98 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %97, i32 0, i32 1
  %99 = load ptr, ptr %98, align 8, !tbaa !18
  %100 = icmp ne ptr %99, null
  br i1 %100, label %101, label %113

101:                                              ; preds = %90
  %102 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !5
  %103 = load ptr, ptr %3, align 8, !tbaa !5
  %104 = getelementptr inbounds %struct.w2c_hermes, ptr %103, i32 0, i32 7
  %105 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %104, i32 0, i32 0
  %106 = load ptr, ptr %105, align 8, !tbaa !17
  %107 = load i32, ptr %12, align 4, !tbaa !9
  %108 = zext i32 %107 to i64
  %109 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %106, i64 %108
  %110 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %109, i32 0, i32 0
  %111 = load ptr, ptr %110, align 8, !tbaa !20
  %112 = call zeroext i1 @func_types_eq(ptr noundef %102, ptr noundef %111)
  br label %113

113:                                              ; preds = %101, %90, %56
  %114 = phi i1 [ false, %90 ], [ false, %56 ], [ %112, %101 ]
  %115 = xor i1 %114, true
  %116 = xor i1 %115, true
  %117 = zext i1 %116 to i32
  %118 = sext i32 %117 to i64
  %119 = call i64 @llvm.expect.i64(i64 %118, i64 1)
  %120 = icmp ne i64 %119, 0
  br i1 %120, label %123, label %121

121:                                              ; preds = %113
  call void @wasm_rt_trap(i32 noundef 6) #7
  unreachable

122:                                              ; No predecessors!
  br label %123

123:                                              ; preds = %122, %113
  %124 = phi i1 [ true, %113 ], [ false, %122 ]
  %125 = zext i1 %124 to i32
  %126 = load ptr, ptr %3, align 8, !tbaa !5
  %127 = getelementptr inbounds %struct.w2c_hermes, ptr %126, i32 0, i32 7
  %128 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %127, i32 0, i32 0
  %129 = load ptr, ptr %128, align 8, !tbaa !17
  %130 = load i32, ptr %12, align 4, !tbaa !9
  %131 = zext i32 %130 to i64
  %132 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %129, i64 %131
  %133 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %132, i32 0, i32 1
  %134 = load ptr, ptr %133, align 8, !tbaa !18
  %135 = load ptr, ptr %3, align 8, !tbaa !5
  %136 = getelementptr inbounds %struct.w2c_hermes, ptr %135, i32 0, i32 7
  %137 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %136, i32 0, i32 0
  %138 = load ptr, ptr %137, align 8, !tbaa !17
  %139 = load i32, ptr %12, align 4, !tbaa !9
  %140 = zext i32 %139 to i64
  %141 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %138, i64 %140
  %142 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %141, i32 0, i32 2
  %143 = load ptr, ptr %142, align 8, !tbaa !21
  %144 = load i32, ptr %10, align 4, !tbaa !9
  %145 = load i32, ptr %11, align 4, !tbaa !9
  call void %134(ptr noundef %143, i32 noundef %144, i32 noundef %145)
  %146 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %146, ptr %10, align 4, !tbaa !9
  store i32 5624, ptr %11, align 4, !tbaa !9
  %147 = load i32, ptr %11, align 4, !tbaa !9
  %148 = load i32, ptr %10, align 4, !tbaa !9
  %149 = add i32 %148, %147
  store i32 %149, ptr %10, align 4, !tbaa !9
  %150 = load ptr, ptr %3, align 8, !tbaa !5
  %151 = getelementptr inbounds %struct.w2c_hermes, ptr %150, i32 0, i32 6
  %152 = load i32, ptr %10, align 4, !tbaa !9
  %153 = zext i32 %152 to i64
  %154 = call i32 @i32_load(ptr noundef %151, i64 noundef %153)
  store i32 %154, ptr %10, align 4, !tbaa !9
  %155 = load i32, ptr %10, align 4, !tbaa !9
  %156 = icmp ne i32 %155, 0
  br i1 %156, label %157, label %264

157:                                              ; preds = %123
  %158 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %158, ptr %10, align 4, !tbaa !9
  %159 = load ptr, ptr %3, align 8, !tbaa !5
  %160 = getelementptr inbounds %struct.w2c_hermes, ptr %159, i32 0, i32 6
  %161 = load i32, ptr %10, align 4, !tbaa !9
  %162 = zext i32 %161 to i64
  %163 = add i64 %162, 5640
  %164 = call i32 @i32_load(ptr noundef %160, i64 noundef %163)
  store i32 %164, ptr %10, align 4, !tbaa !9
  %165 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %165, ptr %5, align 4, !tbaa !9
  %166 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %166, ptr %11, align 4, !tbaa !9
  %167 = load ptr, ptr %3, align 8, !tbaa !5
  %168 = getelementptr inbounds %struct.w2c_hermes, ptr %167, i32 0, i32 6
  %169 = load i32, ptr %11, align 4, !tbaa !9
  %170 = zext i32 %169 to i64
  %171 = add i64 %170, 5620
  %172 = call i32 @i32_load(ptr noundef %168, i64 noundef %171)
  store i32 %172, ptr %11, align 4, !tbaa !9
  %173 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %173, ptr %12, align 4, !tbaa !9
  %174 = load ptr, ptr %3, align 8, !tbaa !5
  %175 = getelementptr inbounds %struct.w2c_hermes, ptr %174, i32 0, i32 6
  %176 = load i32, ptr %12, align 4, !tbaa !9
  %177 = zext i32 %176 to i64
  %178 = call i32 @i32_load(ptr noundef %175, i64 noundef %177)
  store i32 %178, ptr %12, align 4, !tbaa !9
  %179 = load ptr, ptr %3, align 8, !tbaa !5
  %180 = getelementptr inbounds %struct.w2c_hermes, ptr %179, i32 0, i32 6
  %181 = load i32, ptr %12, align 4, !tbaa !9
  %182 = zext i32 %181 to i64
  %183 = add i64 %182, 4
  %184 = call i32 @i32_load(ptr noundef %180, i64 noundef %183)
  store i32 %184, ptr %12, align 4, !tbaa !9
  %185 = load i32, ptr %12, align 4, !tbaa !9
  %186 = load ptr, ptr %3, align 8, !tbaa !5
  %187 = getelementptr inbounds %struct.w2c_hermes, ptr %186, i32 0, i32 7
  %188 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %187, i32 0, i32 2
  %189 = load i32, ptr %188, align 4, !tbaa !11
  %190 = icmp ult i32 %185, %189
  br i1 %190, label %191, label %214

191:                                              ; preds = %157
  %192 = load ptr, ptr %3, align 8, !tbaa !5
  %193 = getelementptr inbounds %struct.w2c_hermes, ptr %192, i32 0, i32 7
  %194 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %193, i32 0, i32 0
  %195 = load ptr, ptr %194, align 8, !tbaa !17
  %196 = load i32, ptr %12, align 4, !tbaa !9
  %197 = zext i32 %196 to i64
  %198 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %195, i64 %197
  %199 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %198, i32 0, i32 1
  %200 = load ptr, ptr %199, align 8, !tbaa !18
  %201 = icmp ne ptr %200, null
  br i1 %201, label %202, label %214

202:                                              ; preds = %191
  %203 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !5
  %204 = load ptr, ptr %3, align 8, !tbaa !5
  %205 = getelementptr inbounds %struct.w2c_hermes, ptr %204, i32 0, i32 7
  %206 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %205, i32 0, i32 0
  %207 = load ptr, ptr %206, align 8, !tbaa !17
  %208 = load i32, ptr %12, align 4, !tbaa !9
  %209 = zext i32 %208 to i64
  %210 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %207, i64 %209
  %211 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %210, i32 0, i32 0
  %212 = load ptr, ptr %211, align 8, !tbaa !20
  %213 = call zeroext i1 @func_types_eq(ptr noundef %203, ptr noundef %212)
  br label %214

214:                                              ; preds = %202, %191, %157
  %215 = phi i1 [ false, %191 ], [ false, %157 ], [ %213, %202 ]
  %216 = xor i1 %215, true
  %217 = xor i1 %216, true
  %218 = zext i1 %217 to i32
  %219 = sext i32 %218 to i64
  %220 = call i64 @llvm.expect.i64(i64 %219, i64 1)
  %221 = icmp ne i64 %220, 0
  br i1 %221, label %224, label %222

222:                                              ; preds = %214
  call void @wasm_rt_trap(i32 noundef 6) #7
  unreachable

223:                                              ; No predecessors!
  br label %224

224:                                              ; preds = %223, %214
  %225 = phi i1 [ true, %214 ], [ false, %223 ]
  %226 = zext i1 %225 to i32
  %227 = load ptr, ptr %3, align 8, !tbaa !5
  %228 = getelementptr inbounds %struct.w2c_hermes, ptr %227, i32 0, i32 7
  %229 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %228, i32 0, i32 0
  %230 = load ptr, ptr %229, align 8, !tbaa !17
  %231 = load i32, ptr %12, align 4, !tbaa !9
  %232 = zext i32 %231 to i64
  %233 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %230, i64 %232
  %234 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %233, i32 0, i32 1
  %235 = load ptr, ptr %234, align 8, !tbaa !18
  %236 = load ptr, ptr %3, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.w2c_hermes, ptr %236, i32 0, i32 7
  %238 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %237, i32 0, i32 0
  %239 = load ptr, ptr %238, align 8, !tbaa !17
  %240 = load i32, ptr %12, align 4, !tbaa !9
  %241 = zext i32 %240 to i64
  %242 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %239, i64 %241
  %243 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %242, i32 0, i32 2
  %244 = load ptr, ptr %243, align 8, !tbaa !21
  %245 = load i32, ptr %10, align 4, !tbaa !9
  %246 = load i32, ptr %11, align 4, !tbaa !9
  call void %235(ptr noundef %244, i32 noundef %245, i32 noundef %246)
  %247 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %247, ptr %10, align 4, !tbaa !9
  %248 = load ptr, ptr %3, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.w2c_hermes, ptr %248, i32 0, i32 6
  %250 = load i32, ptr %10, align 4, !tbaa !9
  %251 = zext i32 %250 to i64
  %252 = add i64 %251, 5620
  %253 = call i32 @i32_load(ptr noundef %249, i64 noundef %252)
  store i32 %253, ptr %10, align 4, !tbaa !9
  %254 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %254, ptr %11, align 4, !tbaa !9
  %255 = load ptr, ptr %3, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.w2c_hermes, ptr %255, i32 0, i32 6
  %257 = load i32, ptr %11, align 4, !tbaa !9
  %258 = zext i32 %257 to i64
  %259 = add i64 %258, 5624
  %260 = call i32 @i32_load(ptr noundef %256, i64 noundef %259)
  store i32 %260, ptr %11, align 4, !tbaa !9
  %261 = load ptr, ptr %3, align 8, !tbaa !5
  %262 = load i32, ptr %10, align 4, !tbaa !9
  %263 = load i32, ptr %11, align 4, !tbaa !9
  call void @w2c_hermes_hermes0x3A0x3Aoscompat0x3A0x3Avm_free0x28void0x2A0x2C0x20unsigned0x20long0x29(ptr noundef %261, i32 noundef %262, i32 noundef %263)
  br label %264

264:                                              ; preds = %224, %123
  %265 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %265, ptr %10, align 4, !tbaa !9
  store i32 5612, ptr %11, align 4, !tbaa !9
  %266 = load i32, ptr %11, align 4, !tbaa !9
  %267 = load i32, ptr %10, align 4, !tbaa !9
  %268 = add i32 %267, %266
  store i32 %268, ptr %10, align 4, !tbaa !9
  %269 = load ptr, ptr %3, align 8, !tbaa !5
  %270 = getelementptr inbounds %struct.w2c_hermes, ptr %269, i32 0, i32 6
  %271 = load i32, ptr %10, align 4, !tbaa !9
  %272 = zext i32 %271 to i64
  %273 = call i32 @i32_load(ptr noundef %270, i64 noundef %272)
  store i32 %273, ptr %10, align 4, !tbaa !9
  %274 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %274, ptr %6, align 4, !tbaa !9
  %275 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %275, ptr %11, align 4, !tbaa !9
  store i32 5608, ptr %12, align 4, !tbaa !9
  %276 = load i32, ptr %12, align 4, !tbaa !9
  %277 = load i32, ptr %11, align 4, !tbaa !9
  %278 = add i32 %277, %276
  store i32 %278, ptr %11, align 4, !tbaa !9
  %279 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %279, ptr %5, align 4, !tbaa !9
  %280 = load i32, ptr %10, align 4, !tbaa !9
  %281 = load i32, ptr %11, align 4, !tbaa !9
  %282 = icmp eq i32 %280, %281
  %283 = zext i1 %282 to i32
  store i32 %283, ptr %10, align 4, !tbaa !9
  %284 = load i32, ptr %10, align 4, !tbaa !9
  %285 = icmp ne i32 %284, 0
  br i1 %285, label %286, label %287

286:                                              ; preds = %264
  br label %327

287:                                              ; preds = %264
  br label %288

288:                                              ; preds = %307, %287
  %289 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %289, ptr %10, align 4, !tbaa !9
  %290 = load ptr, ptr %3, align 8, !tbaa !5
  %291 = load i32, ptr %10, align 4, !tbaa !9
  call void @w2c_hermes_hermes0x3A0x3Avm0x3A0x3ARuntimeModule0x3A0x3AprepareForRuntimeShutdown0x280x29(ptr noundef %290, i32 noundef %291)
  %292 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %292, ptr %10, align 4, !tbaa !9
  %293 = load ptr, ptr %3, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.w2c_hermes, ptr %293, i32 0, i32 6
  %295 = load i32, ptr %10, align 4, !tbaa !9
  %296 = zext i32 %295 to i64
  %297 = add i64 %296, 4
  %298 = call i32 @i32_load(ptr noundef %294, i64 noundef %297)
  store i32 %298, ptr %10, align 4, !tbaa !9
  %299 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %299, ptr %6, align 4, !tbaa !9
  %300 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %300, ptr %11, align 4, !tbaa !9
  %301 = load i32, ptr %10, align 4, !tbaa !9
  %302 = load i32, ptr %11, align 4, !tbaa !9
  %303 = icmp ne i32 %301, %302
  %304 = zext i1 %303 to i32
  store i32 %304, ptr %10, align 4, !tbaa !9
  %305 = load i32, ptr %10, align 4, !tbaa !9
  %306 = icmp ne i32 %305, 0
  br i1 %306, label %307, label %308

307:                                              ; preds = %288
  br label %288

308:                                              ; preds = %288
  br label %327

309:                                              ; preds = %2
  store i32 0, ptr %10, align 4, !tbaa !9
  %310 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %310, ptr %5, align 4, !tbaa !9
  store i32 187120, 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
  %314 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %314, ptr %11, align 4, !tbaa !9
  store i32 60884, ptr %12, align 4, !tbaa !9
  %315 = load i32, ptr %12, align 4, !tbaa !9
  %316 = load i32, ptr %11, align 4, !tbaa !9
  %317 = add i32 %316, %315
  store i32 %317, ptr %11, align 4, !tbaa !9
  store i32 430, ptr %12, align 4, !tbaa !9
  %318 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %318, ptr %13, align 4, !tbaa !9
  store i32 95736, ptr %14, align 4, !tbaa !9
  %319 = load i32, ptr %14, align 4, !tbaa !9
  %320 = load i32, ptr %13, align 4, !tbaa !9
  %321 = add i32 %320, %319
  store i32 %321, ptr %13, align 4, !tbaa !9
  %322 = load ptr, ptr %3, align 8, !tbaa !5
  %323 = load i32, ptr %10, align 4, !tbaa !9
  %324 = load i32, ptr %11, align 4, !tbaa !9
  %325 = load i32, ptr %12, align 4, !tbaa !9
  %326 = load i32, ptr %13, align 4, !tbaa !9
  call void @w2c_hermes_0x5F_assert_fail(ptr noundef %322, i32 noundef %323, i32 noundef %324, i32 noundef %325, i32 noundef %326)
  call void @wasm_rt_trap(i32 noundef 5) #7
  unreachable

327:                                              ; preds = %308, %286
  %328 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %328, ptr %10, align 4, !tbaa !9
  %329 = load ptr, ptr %3, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.w2c_hermes, ptr %329, i32 0, i32 6
  %331 = load i32, ptr %10, align 4, !tbaa !9
  %332 = zext i32 %331 to i64
  %333 = add i64 %332, 5353
  %334 = call i32 @i32_load8_u(ptr noundef %330, i64 noundef %333)
  store i32 %334, ptr %10, align 4, !tbaa !9
  %335 = load i32, ptr %10, align 4, !tbaa !9
  %336 = icmp ne i32 %335, 0
  %337 = xor i1 %336, true
  %338 = zext i1 %337 to i32
  store i32 %338, ptr %10, align 4, !tbaa !9
  %339 = load i32, ptr %10, align 4, !tbaa !9
  %340 = icmp ne i32 %339, 0
  br i1 %340, label %341, label %513

341:                                              ; preds = %327
  %342 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %342, ptr %10, align 4, !tbaa !9
  %343 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %343, ptr %11, align 4, !tbaa !9
  %344 = load ptr, ptr %3, align 8, !tbaa !5
  %345 = getelementptr inbounds %struct.w2c_hermes, ptr %344, i32 0, i32 6
  %346 = load i32, ptr %11, align 4, !tbaa !9
  %347 = zext i32 %346 to i64
  %348 = call i32 @i32_load(ptr noundef %345, i64 noundef %347)
  store i32 %348, ptr %11, align 4, !tbaa !9
  %349 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %349, ptr %6, align 4, !tbaa !9
  %350 = load i32, ptr %10, align 4, !tbaa !9
  %351 = load i32, ptr %11, align 4, !tbaa !9
  %352 = icmp ne i32 %350, %351
  %353 = zext i1 %352 to i32
  store i32 %353, ptr %10, align 4, !tbaa !9
  %354 = load i32, ptr %10, align 4, !tbaa !9
  %355 = icmp ne i32 %354, 0
  br i1 %355, label %356, label %380

356:                                              ; preds = %341
  br label %357

357:                                              ; preds = %378, %356
  %358 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %358, ptr %10, align 4, !tbaa !9
  %359 = load ptr, ptr %3, align 8, !tbaa !5
  %360 = load i32, ptr %10, align 4, !tbaa !9
  %361 = call i32 @w2c_hermes_hermes0x3A0x3Avm0x3A0x3ARuntimeModule0x3A0x3A0x7ERuntimeModule0x280x29(ptr noundef %359, i32 noundef %360)
  store i32 %361, ptr %10, align 4, !tbaa !9
  %362 = load ptr, ptr %3, align 8, !tbaa !5
  %363 = load i32, ptr %10, align 4, !tbaa !9
  call void @w2c_hermes_operator0x20delete0x28void0x2A0x29(ptr noundef %362, i32 noundef %363)
  %364 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %364, ptr %10, align 4, !tbaa !9
  %365 = load ptr, ptr %3, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.w2c_hermes, ptr %365, i32 0, i32 6
  %367 = load i32, ptr %10, align 4, !tbaa !9
  %368 = zext i32 %367 to i64
  %369 = call i32 @i32_load(ptr noundef %366, i64 noundef %368)
  store i32 %369, ptr %10, align 4, !tbaa !9
  %370 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %370, ptr %6, align 4, !tbaa !9
  %371 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %371, ptr %11, align 4, !tbaa !9
  %372 = load i32, ptr %10, align 4, !tbaa !9
  %373 = load i32, ptr %11, align 4, !tbaa !9
  %374 = icmp ne i32 %372, %373
  %375 = zext i1 %374 to i32
  store i32 %375, ptr %10, align 4, !tbaa !9
  %376 = load i32, ptr %10, align 4, !tbaa !9
  %377 = icmp ne i32 %376, 0
  br i1 %377, label %378, label %379

378:                                              ; preds = %357
  br label %357

379:                                              ; preds = %357
  br label %380

380:                                              ; preds = %379, %341
  %381 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %381, ptr %10, align 4, !tbaa !9
  %382 = load ptr, ptr %3, align 8, !tbaa !5
  %383 = getelementptr inbounds %struct.w2c_hermes, ptr %382, i32 0, i32 6
  %384 = load i32, ptr %10, align 4, !tbaa !9
  %385 = zext i32 %384 to i64
  %386 = add i64 %385, 800
  %387 = call i32 @i32_load(ptr noundef %383, i64 noundef %386)
  store i32 %387, ptr %10, align 4, !tbaa !9
  %388 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %388, ptr %5, align 4, !tbaa !9
  %389 = load i32, ptr %10, align 4, !tbaa !9
  %390 = icmp ne i32 %389, 0
  br i1 %390, label %391, label %397

391:                                              ; preds = %380
  %392 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %392, ptr %10, align 4, !tbaa !9
  %393 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %393, ptr %11, align 4, !tbaa !9
  %394 = load ptr, ptr %3, align 8, !tbaa !5
  %395 = load i32, ptr %10, align 4, !tbaa !9
  %396 = load i32, ptr %11, align 4, !tbaa !9
  call void @w2c_hermes_hermes0x3A0x3Avm0x3A0x3ATimeLimitMonitor0x3A0x3AunwatchRuntime0x28hermes0x3A0x3Avm0x3A0x3ARuntime0x260x29(ptr noundef %394, i32 noundef %395, i32 noundef %396)
  br label %397

397:                                              ; preds = %391, %380
  %398 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %398, ptr %10, align 4, !tbaa !9
  %399 = load ptr, ptr %3, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.w2c_hermes, ptr %399, i32 0, i32 6
  %401 = load i32, ptr %10, align 4, !tbaa !9
  %402 = zext i32 %401 to i64
  %403 = add i64 %402, 5640
  %404 = call i32 @i32_load(ptr noundef %400, i64 noundef %403)
  store i32 %404, ptr %10, align 4, !tbaa !9
  %405 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %405, ptr %5, align 4, !tbaa !9
  %406 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %406, ptr %11, align 4, !tbaa !9
  %407 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %407, ptr %12, align 4, !tbaa !9
  %408 = load ptr, ptr %3, align 8, !tbaa !5
  %409 = getelementptr inbounds %struct.w2c_hermes, ptr %408, i32 0, i32 6
  %410 = load i32, ptr %12, align 4, !tbaa !9
  %411 = zext i32 %410 to i64
  %412 = call i32 @i32_load(ptr noundef %409, i64 noundef %411)
  store i32 %412, ptr %12, align 4, !tbaa !9
  %413 = load ptr, ptr %3, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct.w2c_hermes, ptr %413, i32 0, i32 6
  %415 = load i32, ptr %12, align 4, !tbaa !9
  %416 = zext i32 %415 to i64
  %417 = add i64 %416, 4
  %418 = call i32 @i32_load(ptr noundef %414, i64 noundef %417)
  store i32 %418, ptr %12, align 4, !tbaa !9
  %419 = load i32, ptr %12, align 4, !tbaa !9
  %420 = load ptr, ptr %3, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct.w2c_hermes, ptr %420, i32 0, i32 7
  %422 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %421, i32 0, i32 2
  %423 = load i32, ptr %422, align 4, !tbaa !11
  %424 = icmp ult i32 %419, %423
  br i1 %424, label %425, label %448

425:                                              ; preds = %397
  %426 = load ptr, ptr %3, align 8, !tbaa !5
  %427 = getelementptr inbounds %struct.w2c_hermes, ptr %426, i32 0, i32 7
  %428 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %427, i32 0, i32 0
  %429 = load ptr, ptr %428, align 8, !tbaa !17
  %430 = load i32, ptr %12, align 4, !tbaa !9
  %431 = zext i32 %430 to i64
  %432 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %429, i64 %431
  %433 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %432, i32 0, i32 1
  %434 = load ptr, ptr %433, align 8, !tbaa !18
  %435 = icmp ne ptr %434, null
  br i1 %435, label %436, label %448

436:                                              ; preds = %425
  %437 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !5
  %438 = load ptr, ptr %3, align 8, !tbaa !5
  %439 = getelementptr inbounds %struct.w2c_hermes, ptr %438, i32 0, i32 7
  %440 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %439, i32 0, i32 0
  %441 = load ptr, ptr %440, align 8, !tbaa !17
  %442 = load i32, ptr %12, align 4, !tbaa !9
  %443 = zext i32 %442 to i64
  %444 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %441, i64 %443
  %445 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %444, i32 0, i32 0
  %446 = load ptr, ptr %445, align 8, !tbaa !20
  %447 = call zeroext i1 @func_types_eq(ptr noundef %437, ptr noundef %446)
  br label %448

448:                                              ; preds = %436, %425, %397
  %449 = phi i1 [ false, %425 ], [ false, %397 ], [ %447, %436 ]
  %450 = xor i1 %449, true
  %451 = xor i1 %450, true
  %452 = zext i1 %451 to i32
  %453 = sext i32 %452 to i64
  %454 = call i64 @llvm.expect.i64(i64 %453, i64 1)
  %455 = icmp ne i64 %454, 0
  br i1 %455, label %458, label %456

456:                                              ; preds = %448
  call void @wasm_rt_trap(i32 noundef 6) #7
  unreachable

457:                                              ; No predecessors!
  br label %458

458:                                              ; preds = %457, %448
  %459 = phi i1 [ true, %448 ], [ false, %457 ]
  %460 = zext i1 %459 to i32
  %461 = load ptr, ptr %3, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.w2c_hermes, ptr %461, i32 0, i32 7
  %463 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %462, i32 0, i32 0
  %464 = load ptr, ptr %463, align 8, !tbaa !17
  %465 = load i32, ptr %12, align 4, !tbaa !9
  %466 = zext i32 %465 to i64
  %467 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %464, i64 %466
  %468 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %467, i32 0, i32 1
  %469 = load ptr, ptr %468, align 8, !tbaa !18
  %470 = load ptr, ptr %3, align 8, !tbaa !5
  %471 = getelementptr inbounds %struct.w2c_hermes, ptr %470, i32 0, i32 7
  %472 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %471, i32 0, i32 0
  %473 = load ptr, ptr %472, align 8, !tbaa !17
  %474 = load i32, ptr %12, align 4, !tbaa !9
  %475 = zext i32 %474 to i64
  %476 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %473, i64 %475
  %477 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %476, i32 0, i32 2
  %478 = load ptr, ptr %477, align 8, !tbaa !21
  %479 = load i32, ptr %10, align 4, !tbaa !9
  %480 = load i32, ptr %11, align 4, !tbaa !9
  call void %469(ptr noundef %478, i32 noundef %479, i32 noundef %480)
  %481 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %481, ptr %10, align 4, !tbaa !9
  store i32 5848, ptr %11, align 4, !tbaa !9
  %482 = load i32, ptr %11, align 4, !tbaa !9
  %483 = load i32, ptr %10, align 4, !tbaa !9
  %484 = add i32 %483, %482
  store i32 %484, ptr %10, align 4, !tbaa !9
  %485 = load ptr, ptr %3, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.w2c_hermes, ptr %485, i32 0, i32 6
  %487 = load i32, ptr %10, align 4, !tbaa !9
  %488 = zext i32 %487 to i64
  %489 = call i32 @i32_load(ptr noundef %486, i64 noundef %488)
  store i32 %489, ptr %10, align 4, !tbaa !9
  %490 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %490, ptr %6, align 4, !tbaa !9
  %491 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %491, ptr %11, align 4, !tbaa !9
  store i32 5832, ptr %12, align 4, !tbaa !9
  %492 = load i32, ptr %12, align 4, !tbaa !9
  %493 = load i32, ptr %11, align 4, !tbaa !9
  %494 = add i32 %493, %492
  store i32 %494, ptr %11, align 4, !tbaa !9
  %495 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %495, ptr %5, align 4, !tbaa !9
  %496 = load i32, ptr %10, align 4, !tbaa !9
  %497 = load i32, ptr %11, align 4, !tbaa !9
  %498 = icmp ne i32 %496, %497
  %499 = zext i1 %498 to i32
  store i32 %499, ptr %10, align 4, !tbaa !9
  %500 = load i32, ptr %10, align 4, !tbaa !9
  %501 = icmp ne i32 %500, 0
  br i1 %501, label %502, label %503

502:                                              ; preds = %458
  br label %531

503:                                              ; preds = %458
  %504 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %504, ptr %10, align 4, !tbaa !9
  %505 = load ptr, ptr %3, align 8, !tbaa !5
  %506 = getelementptr inbounds %struct.w2c_hermes, ptr %505, i32 0, i32 6
  %507 = load i32, ptr %10, align 4, !tbaa !9
  %508 = zext i32 %507 to i64
  %509 = call i32 @i32_load(ptr noundef %506, i64 noundef %508)
  store i32 %509, ptr %10, align 4, !tbaa !9
  store i32 16, ptr %11, align 4, !tbaa !9
  %510 = load i32, ptr %11, align 4, !tbaa !9
  %511 = load i32, ptr %10, align 4, !tbaa !9
  %512 = add i32 %511, %510
  store i32 %512, ptr %10, align 4, !tbaa !9
  br label %551

513:                                              ; preds = %327
  store i32 0, ptr %10, align 4, !tbaa !9
  %514 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %514, ptr %5, align 4, !tbaa !9
  store i32 178360, ptr %11, align 4, !tbaa !9
  %515 = load i32, ptr %11, align 4, !tbaa !9
  %516 = load i32, ptr %10, align 4, !tbaa !9
  %517 = add i32 %516, %515
  store i32 %517, ptr %10, align 4, !tbaa !9
  %518 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %518, ptr %11, align 4, !tbaa !9
  store i32 60884, ptr %12, align 4, !tbaa !9
  %519 = load i32, ptr %12, align 4, !tbaa !9
  %520 = load i32, ptr %11, align 4, !tbaa !9
  %521 = add i32 %520, %519
  store i32 %521, ptr %11, align 4, !tbaa !9
  store i32 444, ptr %12, align 4, !tbaa !9
  %522 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %522, ptr %13, align 4, !tbaa !9
  store i32 95736, ptr %14, align 4, !tbaa !9
  %523 = load i32, ptr %14, align 4, !tbaa !9
  %524 = load i32, ptr %13, align 4, !tbaa !9
  %525 = add i32 %524, %523
  store i32 %525, ptr %13, align 4, !tbaa !9
  %526 = load ptr, ptr %3, align 8, !tbaa !5
  %527 = load i32, ptr %10, align 4, !tbaa !9
  %528 = load i32, ptr %11, align 4, !tbaa !9
  %529 = load i32, ptr %12, align 4, !tbaa !9
  %530 = load i32, ptr %13, align 4, !tbaa !9
  call void @w2c_hermes_0x5F_assert_fail(ptr noundef %526, i32 noundef %527, i32 noundef %528, i32 noundef %529, i32 noundef %530)
  call void @wasm_rt_trap(i32 noundef 5) #7
  unreachable

531:                                              ; preds = %502
  %532 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %532, ptr %10, align 4, !tbaa !9
  %533 = load i32, ptr %10, align 4, !tbaa !9
  %534 = icmp ne i32 %533, 0
  %535 = xor i1 %534, true
  %536 = zext i1 %535 to i32
  store i32 %536, ptr %10, align 4, !tbaa !9
  %537 = load i32, ptr %10, align 4, !tbaa !9
  %538 = icmp ne i32 %537, 0
  br i1 %538, label %539, label %540

539:                                              ; preds = %531
  br label %621

540:                                              ; preds = %531
  %541 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %541, ptr %10, align 4, !tbaa !9
  %542 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %542, ptr %5, align 4, !tbaa !9
  %543 = load ptr, ptr %3, align 8, !tbaa !5
  %544 = getelementptr inbounds %struct.w2c_hermes, ptr %543, i32 0, i32 6
  %545 = load i32, ptr %10, align 4, !tbaa !9
  %546 = zext i32 %545 to i64
  %547 = call i32 @i32_load(ptr noundef %544, i64 noundef %546)
  store i32 %547, ptr %10, align 4, !tbaa !9
  store i32 20, ptr %11, align 4, !tbaa !9
  %548 = load i32, ptr %11, align 4, !tbaa !9
  %549 = load i32, ptr %10, align 4, !tbaa !9
  %550 = add i32 %549, %548
  store i32 %550, ptr %10, align 4, !tbaa !9
  br label %551

551:                                              ; preds = %540, %503
  %552 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %552, ptr %8, align 4, !tbaa !9
  %553 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %553, ptr %10, align 4, !tbaa !9
  %554 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %554, ptr %11, align 4, !tbaa !9
  %555 = load ptr, ptr %3, align 8, !tbaa !5
  %556 = getelementptr inbounds %struct.w2c_hermes, ptr %555, i32 0, i32 6
  %557 = load i32, ptr %11, align 4, !tbaa !9
  %558 = zext i32 %557 to i64
  %559 = call i32 @i32_load(ptr noundef %556, i64 noundef %558)
  store i32 %559, ptr %11, align 4, !tbaa !9
  %560 = load i32, ptr %11, align 4, !tbaa !9
  %561 = load ptr, ptr %3, align 8, !tbaa !5
  %562 = getelementptr inbounds %struct.w2c_hermes, ptr %561, i32 0, i32 7
  %563 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %562, i32 0, i32 2
  %564 = load i32, ptr %563, align 4, !tbaa !11
  %565 = icmp ult i32 %560, %564
  br i1 %565, label %566, label %589

566:                                              ; preds = %551
  %567 = load ptr, ptr %3, align 8, !tbaa !5
  %568 = getelementptr inbounds %struct.w2c_hermes, ptr %567, i32 0, i32 7
  %569 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %568, i32 0, i32 0
  %570 = load ptr, ptr %569, align 8, !tbaa !17
  %571 = load i32, ptr %11, align 4, !tbaa !9
  %572 = zext i32 %571 to i64
  %573 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %570, i64 %572
  %574 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %573, i32 0, i32 1
  %575 = load ptr, ptr %574, align 8, !tbaa !18
  %576 = icmp ne ptr %575, null
  br i1 %576, label %577, label %589

577:                                              ; preds = %566
  %578 = load ptr, ptr @w2c_hermes_t3, align 8, !tbaa !5
  %579 = load ptr, ptr %3, align 8, !tbaa !5
  %580 = getelementptr inbounds %struct.w2c_hermes, ptr %579, i32 0, i32 7
  %581 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %580, i32 0, i32 0
  %582 = load ptr, ptr %581, align 8, !tbaa !17
  %583 = load i32, ptr %11, align 4, !tbaa !9
  %584 = zext i32 %583 to i64
  %585 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %582, i64 %584
  %586 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %585, i32 0, i32 0
  %587 = load ptr, ptr %586, align 8, !tbaa !20
  %588 = call zeroext i1 @func_types_eq(ptr noundef %578, ptr noundef %587)
  br label %589

589:                                              ; preds = %577, %566, %551
  %590 = phi i1 [ false, %566 ], [ false, %551 ], [ %588, %577 ]
  %591 = xor i1 %590, true
  %592 = xor i1 %591, true
  %593 = zext i1 %592 to i32
  %594 = sext i32 %593 to i64
  %595 = call i64 @llvm.expect.i64(i64 %594, i64 1)
  %596 = icmp ne i64 %595, 0
  br i1 %596, label %599, label %597

597:                                              ; preds = %589
  call void @wasm_rt_trap(i32 noundef 6) #7
  unreachable

598:                                              ; No predecessors!
  br label %599

599:                                              ; preds = %598, %589
  %600 = phi i1 [ true, %589 ], [ false, %598 ]
  %601 = zext i1 %600 to i32
  %602 = load ptr, ptr %3, align 8, !tbaa !5
  %603 = getelementptr inbounds %struct.w2c_hermes, ptr %602, i32 0, i32 7
  %604 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %603, i32 0, i32 0
  %605 = load ptr, ptr %604, align 8, !tbaa !17
  %606 = load i32, ptr %11, align 4, !tbaa !9
  %607 = zext i32 %606 to i64
  %608 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %605, i64 %607
  %609 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %608, i32 0, i32 1
  %610 = load ptr, ptr %609, align 8, !tbaa !18
  %611 = load ptr, ptr %3, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct.w2c_hermes, ptr %611, i32 0, i32 7
  %613 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %612, i32 0, i32 0
  %614 = load ptr, ptr %613, align 8, !tbaa !17
  %615 = load i32, ptr %11, align 4, !tbaa !9
  %616 = zext i32 %615 to i64
  %617 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %614, i64 %616
  %618 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %617, i32 0, i32 2
  %619 = load ptr, ptr %618, align 8, !tbaa !21
  %620 = load i32, ptr %10, align 4, !tbaa !9
  call void %610(ptr noundef %619, i32 noundef %620)
  br label %621

621:                                              ; preds = %599, %539
  %622 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %622, ptr %10, align 4, !tbaa !9
  %623 = load ptr, ptr %3, align 8, !tbaa !5
  %624 = getelementptr inbounds %struct.w2c_hermes, ptr %623, i32 0, i32 6
  %625 = load i32, ptr %10, align 4, !tbaa !9
  %626 = zext i32 %625 to i64
  %627 = add i64 %626, 5816
  %628 = call i32 @i32_load(ptr noundef %624, i64 noundef %627)
  store i32 %628, ptr %10, align 4, !tbaa !9
  %629 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %629, ptr %7, align 4, !tbaa !9
  %630 = load i32, ptr %10, align 4, !tbaa !9
  %631 = icmp ne i32 %630, 0
  br i1 %631, label %632, label %804

632:                                              ; preds = %621
  %633 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %633, ptr %10, align 4, !tbaa !9
  store i32 5820, ptr %11, align 4, !tbaa !9
  %634 = load i32, ptr %11, align 4, !tbaa !9
  %635 = load i32, ptr %10, align 4, !tbaa !9
  %636 = add i32 %635, %634
  store i32 %636, ptr %10, align 4, !tbaa !9
  %637 = load ptr, ptr %3, align 8, !tbaa !5
  %638 = getelementptr inbounds %struct.w2c_hermes, ptr %637, i32 0, i32 6
  %639 = load i32, ptr %10, align 4, !tbaa !9
  %640 = zext i32 %639 to i64
  %641 = call i32 @i32_load(ptr noundef %638, i64 noundef %640)
  store i32 %641, ptr %10, align 4, !tbaa !9
  %642 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %642, ptr %5, align 4, !tbaa !9
  %643 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %643, ptr %11, align 4, !tbaa !9
  %644 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %644, ptr %6, align 4, !tbaa !9
  %645 = load i32, ptr %10, align 4, !tbaa !9
  %646 = load i32, ptr %11, align 4, !tbaa !9
  %647 = icmp ne i32 %645, %646
  %648 = zext i1 %647 to i32
  store i32 %648, ptr %10, align 4, !tbaa !9
  %649 = load i32, ptr %10, align 4, !tbaa !9
  %650 = icmp ne i32 %649, 0
  br i1 %650, label %651, label %792

651:                                              ; preds = %632
  br label %652

652:                                              ; preds = %782, %651
  %653 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %653, ptr %10, align 4, !tbaa !9
  store i32 8, ptr %11, align 4, !tbaa !9
  %654 = load i32, ptr %11, align 4, !tbaa !9
  %655 = load i32, ptr %10, align 4, !tbaa !9
  %656 = sub i32 %655, %654
  store i32 %656, ptr %10, align 4, !tbaa !9
  %657 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %657, ptr %5, align 4, !tbaa !9
  %658 = load ptr, ptr %3, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.w2c_hermes, ptr %658, i32 0, i32 6
  %660 = load i32, ptr %10, align 4, !tbaa !9
  %661 = zext i32 %660 to i64
  %662 = add i64 %661, 4
  %663 = call i32 @i32_load(ptr noundef %659, i64 noundef %662)
  store i32 %663, ptr %10, align 4, !tbaa !9
  %664 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %664, ptr %6, align 4, !tbaa !9
  %665 = load i32, ptr %10, align 4, !tbaa !9
  %666 = icmp ne i32 %665, 0
  %667 = xor i1 %666, true
  %668 = zext i1 %667 to i32
  store i32 %668, ptr %10, align 4, !tbaa !9
  %669 = load i32, ptr %10, align 4, !tbaa !9
  %670 = icmp ne i32 %669, 0
  br i1 %670, label %671, label %672

671:                                              ; preds = %652
  br label %773

672:                                              ; preds = %652
  %673 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %673, ptr %10, align 4, !tbaa !9
  %674 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %674, ptr %11, align 4, !tbaa !9
  %675 = load ptr, ptr %3, align 8, !tbaa !5
  %676 = getelementptr inbounds %struct.w2c_hermes, ptr %675, i32 0, i32 6
  %677 = load i32, ptr %11, align 4, !tbaa !9
  %678 = zext i32 %677 to i64
  %679 = add i64 %678, 4
  %680 = call i32 @i32_load(ptr noundef %676, i64 noundef %679)
  store i32 %680, ptr %11, align 4, !tbaa !9
  %681 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %681, ptr %8, align 4, !tbaa !9
  store i32 1, ptr %12, align 4, !tbaa !9
  %682 = load i32, ptr %12, align 4, !tbaa !9
  %683 = load i32, ptr %11, align 4, !tbaa !9
  %684 = sub i32 %683, %682
  store i32 %684, ptr %11, align 4, !tbaa !9
  %685 = load ptr, ptr %3, align 8, !tbaa !5
  %686 = getelementptr inbounds %struct.w2c_hermes, ptr %685, i32 0, i32 6
  %687 = load i32, ptr %10, align 4, !tbaa !9
  %688 = zext i32 %687 to i64
  %689 = add i64 %688, 4
  %690 = load i32, ptr %11, align 4, !tbaa !9
  call void @i32_store(ptr noundef %686, i64 noundef %689, i32 noundef %690)
  %691 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %691, ptr %10, align 4, !tbaa !9
  %692 = load i32, ptr %10, align 4, !tbaa !9
  %693 = icmp ne i32 %692, 0
  br i1 %693, label %694, label %695

694:                                              ; preds = %672
  br label %773

695:                                              ; preds = %672
  %696 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %696, ptr %10, align 4, !tbaa !9
  %697 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %697, ptr %11, align 4, !tbaa !9
  %698 = load ptr, ptr %3, align 8, !tbaa !5
  %699 = getelementptr inbounds %struct.w2c_hermes, ptr %698, i32 0, i32 6
  %700 = load i32, ptr %11, align 4, !tbaa !9
  %701 = zext i32 %700 to i64
  %702 = call i32 @i32_load(ptr noundef %699, i64 noundef %701)
  store i32 %702, ptr %11, align 4, !tbaa !9
  %703 = load ptr, ptr %3, align 8, !tbaa !5
  %704 = getelementptr inbounds %struct.w2c_hermes, ptr %703, i32 0, i32 6
  %705 = load i32, ptr %11, align 4, !tbaa !9
  %706 = zext i32 %705 to i64
  %707 = add i64 %706, 8
  %708 = call i32 @i32_load(ptr noundef %704, i64 noundef %707)
  store i32 %708, ptr %11, align 4, !tbaa !9
  %709 = load i32, ptr %11, align 4, !tbaa !9
  %710 = load ptr, ptr %3, align 8, !tbaa !5
  %711 = getelementptr inbounds %struct.w2c_hermes, ptr %710, i32 0, i32 7
  %712 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %711, i32 0, i32 2
  %713 = load i32, ptr %712, align 4, !tbaa !11
  %714 = icmp ult i32 %709, %713
  br i1 %714, label %715, label %738

715:                                              ; preds = %695
  %716 = load ptr, ptr %3, align 8, !tbaa !5
  %717 = getelementptr inbounds %struct.w2c_hermes, ptr %716, i32 0, i32 7
  %718 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %717, i32 0, i32 0
  %719 = load ptr, ptr %718, align 8, !tbaa !17
  %720 = load i32, ptr %11, align 4, !tbaa !9
  %721 = zext i32 %720 to i64
  %722 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %719, i64 %721
  %723 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %722, i32 0, i32 1
  %724 = load ptr, ptr %723, align 8, !tbaa !18
  %725 = icmp ne ptr %724, null
  br i1 %725, label %726, label %738

726:                                              ; preds = %715
  %727 = load ptr, ptr @w2c_hermes_t3, align 8, !tbaa !5
  %728 = load ptr, ptr %3, align 8, !tbaa !5
  %729 = getelementptr inbounds %struct.w2c_hermes, ptr %728, i32 0, i32 7
  %730 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %729, i32 0, i32 0
  %731 = load ptr, ptr %730, align 8, !tbaa !17
  %732 = load i32, ptr %11, align 4, !tbaa !9
  %733 = zext i32 %732 to i64
  %734 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %731, i64 %733
  %735 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %734, i32 0, i32 0
  %736 = load ptr, ptr %735, align 8, !tbaa !20
  %737 = call zeroext i1 @func_types_eq(ptr noundef %727, ptr noundef %736)
  br label %738

738:                                              ; preds = %726, %715, %695
  %739 = phi i1 [ false, %715 ], [ false, %695 ], [ %737, %726 ]
  %740 = xor i1 %739, true
  %741 = xor i1 %740, true
  %742 = zext i1 %741 to i32
  %743 = sext i32 %742 to i64
  %744 = call i64 @llvm.expect.i64(i64 %743, i64 1)
  %745 = icmp ne i64 %744, 0
  br i1 %745, label %748, label %746

746:                                              ; preds = %738
  call void @wasm_rt_trap(i32 noundef 6) #7
  unreachable

747:                                              ; No predecessors!
  br label %748

748:                                              ; preds = %747, %738
  %749 = phi i1 [ true, %738 ], [ false, %747 ]
  %750 = zext i1 %749 to i32
  %751 = load ptr, ptr %3, align 8, !tbaa !5
  %752 = getelementptr inbounds %struct.w2c_hermes, ptr %751, i32 0, i32 7
  %753 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %752, i32 0, i32 0
  %754 = load ptr, ptr %753, align 8, !tbaa !17
  %755 = load i32, ptr %11, align 4, !tbaa !9
  %756 = zext i32 %755 to i64
  %757 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %754, i64 %756
  %758 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %757, i32 0, i32 1
  %759 = load ptr, ptr %758, align 8, !tbaa !18
  %760 = load ptr, ptr %3, align 8, !tbaa !5
  %761 = getelementptr inbounds %struct.w2c_hermes, ptr %760, i32 0, i32 7
  %762 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %761, i32 0, i32 0
  %763 = load ptr, ptr %762, align 8, !tbaa !17
  %764 = load i32, ptr %11, align 4, !tbaa !9
  %765 = zext i32 %764 to i64
  %766 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %763, i64 %765
  %767 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %766, i32 0, i32 2
  %768 = load ptr, ptr %767, align 8, !tbaa !21
  %769 = load i32, ptr %10, align 4, !tbaa !9
  call void %759(ptr noundef %768, i32 noundef %769)
  %770 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %770, ptr %10, align 4, !tbaa !9
  %771 = load ptr, ptr %3, align 8, !tbaa !5
  %772 = load i32, ptr %10, align 4, !tbaa !9
  call void @w2c_hermes_std0x3A0x3A_0x5F20x3A0x3A_0x5Fshared_weak_count0x3A0x3A_0x5Frelease_weak0x280x29(ptr noundef %771, i32 noundef %772)
  br label %773

773:                                              ; preds = %748, %694, %671
  %774 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %774, ptr %10, align 4, !tbaa !9
  %775 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %775, ptr %11, align 4, !tbaa !9
  %776 = load i32, ptr %10, align 4, !tbaa !9
  %777 = load i32, ptr %11, align 4, !tbaa !9
  %778 = icmp ne i32 %776, %777
  %779 = zext i1 %778 to i32
  store i32 %779, ptr %10, align 4, !tbaa !9
  %780 = load i32, ptr %10, align 4, !tbaa !9
  %781 = icmp ne i32 %780, 0
  br i1 %781, label %782, label %783

782:                                              ; preds = %773
  br label %652

783:                                              ; preds = %773
  %784 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %784, ptr %10, align 4, !tbaa !9
  %785 = load ptr, ptr %3, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct.w2c_hermes, ptr %785, i32 0, i32 6
  %787 = load i32, ptr %10, align 4, !tbaa !9
  %788 = zext i32 %787 to i64
  %789 = add i64 %788, 5816
  %790 = call i32 @i32_load(ptr noundef %786, i64 noundef %789)
  store i32 %790, ptr %10, align 4, !tbaa !9
  %791 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %791, ptr %6, align 4, !tbaa !9
  br label %792

792:                                              ; preds = %783, %632
  %793 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %793, ptr %10, align 4, !tbaa !9
  %794 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %794, ptr %11, align 4, !tbaa !9
  %795 = load ptr, ptr %3, align 8, !tbaa !5
  %796 = getelementptr inbounds %struct.w2c_hermes, ptr %795, i32 0, i32 6
  %797 = load i32, ptr %10, align 4, !tbaa !9
  %798 = zext i32 %797 to i64
  %799 = add i64 %798, 5820
  %800 = load i32, ptr %11, align 4, !tbaa !9
  call void @i32_store(ptr noundef %796, i64 noundef %799, i32 noundef %800)
  %801 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %801, ptr %10, align 4, !tbaa !9
  %802 = load ptr, ptr %3, align 8, !tbaa !5
  %803 = load i32, ptr %10, align 4, !tbaa !9
  call void @w2c_hermes_operator0x20delete0x28void0x2A0x29(ptr noundef %802, i32 noundef %803)
  br label %804

804:                                              ; preds = %792, %621
  %805 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %805, ptr %10, align 4, !tbaa !9
  %806 = load ptr, ptr %3, align 8, !tbaa !5
  %807 = getelementptr inbounds %struct.w2c_hermes, ptr %806, i32 0, i32 6
  %808 = load i32, ptr %10, align 4, !tbaa !9
  %809 = zext i32 %808 to i64
  %810 = add i64 %809, 5808
  %811 = call i32 @i32_load(ptr noundef %807, i64 noundef %810)
  store i32 %811, ptr %10, align 4, !tbaa !9
  %812 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %812, ptr %5, align 4, !tbaa !9
  %813 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %813, ptr %10, align 4, !tbaa !9
  store i32 0, ptr %11, align 4, !tbaa !9
  %814 = load ptr, ptr %3, align 8, !tbaa !5
  %815 = getelementptr inbounds %struct.w2c_hermes, ptr %814, i32 0, i32 6
  %816 = load i32, ptr %10, align 4, !tbaa !9
  %817 = zext i32 %816 to i64
  %818 = add i64 %817, 5808
  %819 = load i32, ptr %11, align 4, !tbaa !9
  call void @i32_store(ptr noundef %815, i64 noundef %818, i32 noundef %819)
  %820 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %820, ptr %10, align 4, !tbaa !9
  %821 = load i32, ptr %10, align 4, !tbaa !9
  %822 = icmp ne i32 %821, 0
  br i1 %822, label %823, label %830

823:                                              ; preds = %804
  %824 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %824, ptr %10, align 4, !tbaa !9
  %825 = load ptr, ptr %3, align 8, !tbaa !5
  %826 = load i32, ptr %10, align 4, !tbaa !9
  %827 = call i32 @w2c_hermes_hermes0x3A0x3Avm0x3A0x3ACodeCoverageProfiler0x3A0x3A0x7ECodeCoverageProfiler0x280x29(ptr noundef %825, i32 noundef %826)
  store i32 %827, ptr %10, align 4, !tbaa !9
  %828 = load ptr, ptr %3, align 8, !tbaa !5
  %829 = load i32, ptr %10, align 4, !tbaa !9
  call void @w2c_hermes_operator0x20delete0x28void0x2A0x29(ptr noundef %828, i32 noundef %829)
  br label %830

830:                                              ; preds = %823, %804
  %831 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %831, ptr %10, align 4, !tbaa !9
  store i32 5776, ptr %11, align 4, !tbaa !9
  %832 = load i32, ptr %11, align 4, !tbaa !9
  %833 = load i32, ptr %10, align 4, !tbaa !9
  %834 = add i32 %833, %832
  store i32 %834, ptr %10, align 4, !tbaa !9
  %835 = load ptr, ptr %3, align 8, !tbaa !5
  %836 = load i32, ptr %10, align 4, !tbaa !9
  %837 = call i32 @w2c_hermes_std0x3A0x3A_0x5F20x3A0x3A_0x5Fdeque_base0x3Chermes0x3A0x3Avm0x3A0x3ACallable0x2A0x2C0x20std0x3A0x3A_0x5F20x3A0x3Aallocator0x3Chermes0x3A0x3Avm0x3A0x3ACallable0x2A0x3E0x3E0x3A0x3A0x7E_0x5Fdeque_base0x280x29(ptr noundef %835, i32 noundef %836)
  store i32 %837, ptr %10, align 4, !tbaa !9
  %838 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %838, ptr %10, align 4, !tbaa !9
  %839 = load ptr, ptr %3, align 8, !tbaa !5
  %840 = getelementptr inbounds %struct.w2c_hermes, ptr %839, i32 0, i32 6
  %841 = load i32, ptr %10, align 4, !tbaa !9
  %842 = zext i32 %841 to i64
  %843 = add i64 %842, 5760
  %844 = call i32 @i32_load(ptr noundef %840, i64 noundef %843)
  store i32 %844, ptr %10, align 4, !tbaa !9
  %845 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %845, ptr %5, align 4, !tbaa !9
  %846 = load i32, ptr %10, align 4, !tbaa !9
  %847 = icmp ne i32 %846, 0
  br i1 %847, label %848, label %862

848:                                              ; preds = %830
  %849 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %849, ptr %10, align 4, !tbaa !9
  store i32 5764, ptr %11, align 4, !tbaa !9
  %850 = load i32, ptr %11, align 4, !tbaa !9
  %851 = load i32, ptr %10, align 4, !tbaa !9
  %852 = add i32 %851, %850
  store i32 %852, ptr %10, align 4, !tbaa !9
  %853 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %853, ptr %11, align 4, !tbaa !9
  %854 = load ptr, ptr %3, align 8, !tbaa !5
  %855 = getelementptr inbounds %struct.w2c_hermes, ptr %854, i32 0, i32 6
  %856 = load i32, ptr %10, align 4, !tbaa !9
  %857 = zext i32 %856 to i64
  %858 = load i32, ptr %11, align 4, !tbaa !9
  call void @i32_store(ptr noundef %855, i64 noundef %857, i32 noundef %858)
  %859 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %859, ptr %10, align 4, !tbaa !9
  %860 = load ptr, ptr %3, align 8, !tbaa !5
  %861 = load i32, ptr %10, align 4, !tbaa !9
  call void @w2c_hermes_operator0x20delete0x28void0x2A0x29(ptr noundef %860, i32 noundef %861)
  br label %862

862:                                              ; preds = %848, %830
  %863 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %863, ptr %10, align 4, !tbaa !9
  %864 = load ptr, ptr %3, align 8, !tbaa !5
  %865 = getelementptr inbounds %struct.w2c_hermes, ptr %864, i32 0, i32 6
  %866 = load i32, ptr %10, align 4, !tbaa !9
  %867 = zext i32 %866 to i64
  %868 = add i64 %867, 5748
  %869 = call i32 @i32_load(ptr noundef %865, i64 noundef %868)
  store i32 %869, ptr %10, align 4, !tbaa !9
  %870 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %870, ptr %5, align 4, !tbaa !9
  %871 = load i32, ptr %10, align 4, !tbaa !9
  %872 = icmp ne i32 %871, 0
  br i1 %872, label %873, label %887

873:                                              ; preds = %862
  %874 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %874, ptr %10, align 4, !tbaa !9
  store i32 5752, ptr %11, align 4, !tbaa !9
  %875 = load i32, ptr %11, align 4, !tbaa !9
  %876 = load i32, ptr %10, align 4, !tbaa !9
  %877 = add i32 %876, %875
  store i32 %877, ptr %10, align 4, !tbaa !9
  %878 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %878, ptr %11, align 4, !tbaa !9
  %879 = load ptr, ptr %3, align 8, !tbaa !5
  %880 = getelementptr inbounds %struct.w2c_hermes, ptr %879, i32 0, i32 6
  %881 = load i32, ptr %10, align 4, !tbaa !9
  %882 = zext i32 %881 to i64
  %883 = load i32, ptr %11, align 4, !tbaa !9
  call void @i32_store(ptr noundef %880, i64 noundef %882, i32 noundef %883)
  %884 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %884, ptr %10, align 4, !tbaa !9
  %885 = load ptr, ptr %3, align 8, !tbaa !5
  %886 = load i32, ptr %10, align 4, !tbaa !9
  call void @w2c_hermes_operator0x20delete0x28void0x2A0x29(ptr noundef %885, i32 noundef %886)
  br label %887

887:                                              ; preds = %873, %862
  %888 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %888, ptr %10, align 4, !tbaa !9
  %889 = load ptr, ptr %3, align 8, !tbaa !5
  %890 = getelementptr inbounds %struct.w2c_hermes, ptr %889, i32 0, i32 6
  %891 = load i32, ptr %10, align 4, !tbaa !9
  %892 = zext i32 %891 to i64
  %893 = add i64 %892, 5736
  %894 = call i32 @i32_load(ptr noundef %890, i64 noundef %893)
  store i32 %894, ptr %10, align 4, !tbaa !9
  %895 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %895, ptr %5, align 4, !tbaa !9
  %896 = load i32, ptr %10, align 4, !tbaa !9
  %897 = icmp ne i32 %896, 0
  br i1 %897, label %898, label %912

898:                                              ; preds = %887
  %899 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %899, ptr %10, align 4, !tbaa !9
  store i32 5740, ptr %11, align 4, !tbaa !9
  %900 = load i32, ptr %11, align 4, !tbaa !9
  %901 = load i32, ptr %10, align 4, !tbaa !9
  %902 = add i32 %901, %900
  store i32 %902, ptr %10, align 4, !tbaa !9
  %903 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %903, ptr %11, align 4, !tbaa !9
  %904 = load ptr, ptr %3, align 8, !tbaa !5
  %905 = getelementptr inbounds %struct.w2c_hermes, ptr %904, i32 0, i32 6
  %906 = load i32, ptr %10, align 4, !tbaa !9
  %907 = zext i32 %906 to i64
  %908 = load i32, ptr %11, align 4, !tbaa !9
  call void @i32_store(ptr noundef %905, i64 noundef %907, i32 noundef %908)
  %909 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %909, ptr %10, align 4, !tbaa !9
  %910 = load ptr, ptr %3, align 8, !tbaa !5
  %911 = load i32, ptr %10, align 4, !tbaa !9
  call void @w2c_hermes_operator0x20delete0x28void0x2A0x29(ptr noundef %910, i32 noundef %911)
  br label %912

912:                                              ; preds = %898, %887
  %913 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %913, ptr %10, align 4, !tbaa !9
  store i32 5644, ptr %11, align 4, !tbaa !9
  %914 = load i32, ptr %11, align 4, !tbaa !9
  %915 = load i32, ptr %10, align 4, !tbaa !9
  %916 = add i32 %915, %914
  store i32 %916, ptr %10, align 4, !tbaa !9
  %917 = load ptr, ptr %3, align 8, !tbaa !5
  %918 = getelementptr inbounds %struct.w2c_hermes, ptr %917, i32 0, i32 6
  %919 = load i32, ptr %10, align 4, !tbaa !9
  %920 = zext i32 %919 to i64
  %921 = call i32 @i32_load(ptr noundef %918, i64 noundef %920)
  store i32 %921, ptr %10, align 4, !tbaa !9
  %922 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %922, ptr %5, align 4, !tbaa !9
  %923 = load i32, ptr %10, align 4, !tbaa !9
  %924 = icmp ne i32 %923, 0
  %925 = xor i1 %924, true
  %926 = zext i1 %925 to i32
  store i32 %926, ptr %10, align 4, !tbaa !9
  %927 = load i32, ptr %10, align 4, !tbaa !9
  %928 = icmp ne i32 %927, 0
  br i1 %928, label %929, label %930

929:                                              ; preds = %912
  br label %1031

930:                                              ; preds = %912
  %931 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %931, ptr %10, align 4, !tbaa !9
  %932 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %932, ptr %11, align 4, !tbaa !9
  %933 = load ptr, ptr %3, align 8, !tbaa !5
  %934 = getelementptr inbounds %struct.w2c_hermes, ptr %933, i32 0, i32 6
  %935 = load i32, ptr %11, align 4, !tbaa !9
  %936 = zext i32 %935 to i64
  %937 = add i64 %936, 4
  %938 = call i32 @i32_load(ptr noundef %934, i64 noundef %937)
  store i32 %938, ptr %11, align 4, !tbaa !9
  %939 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %939, ptr %6, align 4, !tbaa !9
  store i32 1, ptr %12, align 4, !tbaa !9
  %940 = load i32, ptr %12, align 4, !tbaa !9
  %941 = load i32, ptr %11, align 4, !tbaa !9
  %942 = sub i32 %941, %940
  store i32 %942, ptr %11, align 4, !tbaa !9
  %943 = load ptr, ptr %3, align 8, !tbaa !5
  %944 = getelementptr inbounds %struct.w2c_hermes, ptr %943, i32 0, i32 6
  %945 = load i32, ptr %10, align 4, !tbaa !9
  %946 = zext i32 %945 to i64
  %947 = add i64 %946, 4
  %948 = load i32, ptr %11, align 4, !tbaa !9
  call void @i32_store(ptr noundef %944, i64 noundef %947, i32 noundef %948)
  %949 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %949, ptr %10, align 4, !tbaa !9
  %950 = load i32, ptr %10, align 4, !tbaa !9
  %951 = icmp ne i32 %950, 0
  br i1 %951, label %952, label %953

952:                                              ; preds = %930
  br label %1031

953:                                              ; preds = %930
  %954 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %954, ptr %10, align 4, !tbaa !9
  %955 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %955, ptr %11, align 4, !tbaa !9
  %956 = load ptr, ptr %3, align 8, !tbaa !5
  %957 = getelementptr inbounds %struct.w2c_hermes, ptr %956, i32 0, i32 6
  %958 = load i32, ptr %11, align 4, !tbaa !9
  %959 = zext i32 %958 to i64
  %960 = call i32 @i32_load(ptr noundef %957, i64 noundef %959)
  store i32 %960, ptr %11, align 4, !tbaa !9
  %961 = load ptr, ptr %3, align 8, !tbaa !5
  %962 = getelementptr inbounds %struct.w2c_hermes, ptr %961, i32 0, i32 6
  %963 = load i32, ptr %11, align 4, !tbaa !9
  %964 = zext i32 %963 to i64
  %965 = add i64 %964, 8
  %966 = call i32 @i32_load(ptr noundef %962, i64 noundef %965)
  store i32 %966, ptr %11, align 4, !tbaa !9
  %967 = load i32, ptr %11, align 4, !tbaa !9
  %968 = load ptr, ptr %3, align 8, !tbaa !5
  %969 = getelementptr inbounds %struct.w2c_hermes, ptr %968, i32 0, i32 7
  %970 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %969, i32 0, i32 2
  %971 = load i32, ptr %970, align 4, !tbaa !11
  %972 = icmp ult i32 %967, %971
  br i1 %972, label %973, label %996

973:                                              ; preds = %953
  %974 = load ptr, ptr %3, align 8, !tbaa !5
  %975 = getelementptr inbounds %struct.w2c_hermes, ptr %974, i32 0, i32 7
  %976 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %975, i32 0, i32 0
  %977 = load ptr, ptr %976, align 8, !tbaa !17
  %978 = load i32, ptr %11, align 4, !tbaa !9
  %979 = zext i32 %978 to i64
  %980 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %977, i64 %979
  %981 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %980, i32 0, i32 1
  %982 = load ptr, ptr %981, align 8, !tbaa !18
  %983 = icmp ne ptr %982, null
  br i1 %983, label %984, label %996

984:                                              ; preds = %973
  %985 = load ptr, ptr @w2c_hermes_t3, align 8, !tbaa !5
  %986 = load ptr, ptr %3, align 8, !tbaa !5
  %987 = getelementptr inbounds %struct.w2c_hermes, ptr %986, i32 0, i32 7
  %988 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %987, i32 0, i32 0
  %989 = load ptr, ptr %988, align 8, !tbaa !17
  %990 = load i32, ptr %11, align 4, !tbaa !9
  %991 = zext i32 %990 to i64
  %992 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %989, i64 %991
  %993 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %992, i32 0, i32 0
  %994 = load ptr, ptr %993, align 8, !tbaa !20
  %995 = call zeroext i1 @func_types_eq(ptr noundef %985, ptr noundef %994)
  br label %996

996:                                              ; preds = %984, %973, %953
  %997 = phi i1 [ false, %973 ], [ false, %953 ], [ %995, %984 ]
  %998 = xor i1 %997, true
  %999 = xor i1 %998, true
  %1000 = zext i1 %999 to i32
  %1001 = sext i32 %1000 to i64
  %1002 = call i64 @llvm.expect.i64(i64 %1001, i64 1)
  %1003 = icmp ne i64 %1002, 0
  br i1 %1003, label %1006, label %1004

1004:                                             ; preds = %996
  call void @wasm_rt_trap(i32 noundef 6) #7
  unreachable

1005:                                             ; No predecessors!
  br label %1006

1006:                                             ; preds = %1005, %996
  %1007 = phi i1 [ true, %996 ], [ false, %1005 ]
  %1008 = zext i1 %1007 to i32
  %1009 = load ptr, ptr %3, align 8, !tbaa !5
  %1010 = getelementptr inbounds %struct.w2c_hermes, ptr %1009, i32 0, i32 7
  %1011 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1010, i32 0, i32 0
  %1012 = load ptr, ptr %1011, align 8, !tbaa !17
  %1013 = load i32, ptr %11, align 4, !tbaa !9
  %1014 = zext i32 %1013 to i64
  %1015 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1012, i64 %1014
  %1016 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1015, i32 0, i32 1
  %1017 = load ptr, ptr %1016, align 8, !tbaa !18
  %1018 = load ptr, ptr %3, align 8, !tbaa !5
  %1019 = getelementptr inbounds %struct.w2c_hermes, ptr %1018, i32 0, i32 7
  %1020 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1019, i32 0, i32 0
  %1021 = load ptr, ptr %1020, align 8, !tbaa !17
  %1022 = load i32, ptr %11, align 4, !tbaa !9
  %1023 = zext i32 %1022 to i64
  %1024 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1021, i64 %1023
  %1025 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1024, i32 0, i32 2
  %1026 = load ptr, ptr %1025, align 8, !tbaa !21
  %1027 = load i32, ptr %10, align 4, !tbaa !9
  call void %1017(ptr noundef %1026, i32 noundef %1027)
  %1028 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1028, ptr %10, align 4, !tbaa !9
  %1029 = load ptr, ptr %3, align 8, !tbaa !5
  %1030 = load i32, ptr %10, align 4, !tbaa !9
  call void @w2c_hermes_std0x3A0x3A_0x5F20x3A0x3A_0x5Fshared_weak_count0x3A0x3A_0x5Frelease_weak0x280x29(ptr noundef %1029, i32 noundef %1030)
  br label %1031

1031:                                             ; preds = %1006, %952, %929
  %1032 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %1032, ptr %10, align 4, !tbaa !9
  %1033 = load ptr, ptr %3, align 8, !tbaa !5
  %1034 = getelementptr inbounds %struct.w2c_hermes, ptr %1033, i32 0, i32 6
  %1035 = load i32, ptr %10, align 4, !tbaa !9
  %1036 = zext i32 %1035 to i64
  %1037 = add i64 %1036, 5592
  %1038 = call i32 @i32_load(ptr noundef %1034, i64 noundef %1037)
  store i32 %1038, ptr %10, align 4, !tbaa !9
  %1039 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1039, ptr %5, align 4, !tbaa !9
  %1040 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %1040, ptr %10, align 4, !tbaa !9
  store i32 0, ptr %11, align 4, !tbaa !9
  %1041 = load ptr, ptr %3, align 8, !tbaa !5
  %1042 = getelementptr inbounds %struct.w2c_hermes, ptr %1041, i32 0, i32 6
  %1043 = load i32, ptr %10, align 4, !tbaa !9
  %1044 = zext i32 %1043 to i64
  %1045 = add i64 %1044, 5592
  %1046 = load i32, ptr %11, align 4, !tbaa !9
  call void @i32_store(ptr noundef %1042, i64 noundef %1045, i32 noundef %1046)
  %1047 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1047, ptr %10, align 4, !tbaa !9
  %1048 = load i32, ptr %10, align 4, !tbaa !9
  %1049 = icmp ne i32 %1048, 0
  br i1 %1049, label %1050, label %1057

1050:                                             ; preds = %1031
  %1051 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1051, ptr %10, align 4, !tbaa !9
  %1052 = load ptr, ptr %3, align 8, !tbaa !5
  %1053 = load i32, ptr %10, align 4, !tbaa !9
  %1054 = call i32 @w2c_hermes_hermes0x3A0x3Avm0x3A0x3AJSLibStorage0x3A0x3A0x7EJSLibStorage0x280x29(ptr noundef %1052, i32 noundef %1053)
  store i32 %1054, ptr %10, align 4, !tbaa !9
  %1055 = load ptr, ptr %3, align 8, !tbaa !5
  %1056 = load i32, ptr %10, align 4, !tbaa !9
  call void @w2c_hermes_operator0x20delete0x28void0x2A0x29(ptr noundef %1055, i32 noundef %1056)
  br label %1057

1057:                                             ; preds = %1050, %1031
  %1058 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %1058, ptr %10, align 4, !tbaa !9
  store i32 5576, ptr %11, align 4, !tbaa !9
  %1059 = load i32, ptr %11, align 4, !tbaa !9
  %1060 = load i32, ptr %10, align 4, !tbaa !9
  %1061 = add i32 %1060, %1059
  store i32 %1061, ptr %10, align 4, !tbaa !9
  %1062 = load ptr, ptr %3, align 8, !tbaa !5
  %1063 = getelementptr inbounds %struct.w2c_hermes, ptr %1062, i32 0, i32 6
  %1064 = load i32, ptr %10, align 4, !tbaa !9
  %1065 = zext i32 %1064 to i64
  %1066 = call i32 @i32_load(ptr noundef %1063, i64 noundef %1065)
  store i32 %1066, ptr %10, align 4, !tbaa !9
  %1067 = load ptr, ptr %3, align 8, !tbaa !5
  %1068 = load i32, ptr %10, align 4, !tbaa !9
  call void @w2c_hermes_operator0x20delete0x28void0x2A0x29(ptr noundef %1067, i32 noundef %1068)
  %1069 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %1069, ptr %10, align 4, !tbaa !9
  store i32 5548, ptr %11, align 4, !tbaa !9
  %1070 = load i32, ptr %11, align 4, !tbaa !9
  %1071 = load i32, ptr %10, align 4, !tbaa !9
  %1072 = add i32 %1071, %1070
  store i32 %1072, ptr %10, align 4, !tbaa !9
  %1073 = load ptr, ptr %3, align 8, !tbaa !5
  %1074 = getelementptr inbounds %struct.w2c_hermes, ptr %1073, i32 0, i32 6
  %1075 = load i32, ptr %10, align 4, !tbaa !9
  %1076 = zext i32 %1075 to i64
  %1077 = call i32 @i32_load(ptr noundef %1074, i64 noundef %1076)
  store i32 %1077, ptr %10, align 4, !tbaa !9
  %1078 = load ptr, ptr %3, align 8, !tbaa !5
  %1079 = load i32, ptr %10, align 4, !tbaa !9
  call void @w2c_hermes_dlfree(ptr noundef %1078, i32 noundef %1079)
  %1080 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %1080, ptr %10, align 4, !tbaa !9
  store i32 5528, ptr %11, align 4, !tbaa !9
  %1081 = load i32, ptr %11, align 4, !tbaa !9
  %1082 = load i32, ptr %10, align 4, !tbaa !9
  %1083 = add i32 %1082, %1081
  store i32 %1083, ptr %10, align 4, !tbaa !9
  %1084 = load ptr, ptr %3, align 8, !tbaa !5
  %1085 = getelementptr inbounds %struct.w2c_hermes, ptr %1084, i32 0, i32 6
  %1086 = load i32, ptr %10, align 4, !tbaa !9
  %1087 = zext i32 %1086 to i64
  %1088 = call i32 @i32_load(ptr noundef %1085, i64 noundef %1087)
  store i32 %1088, ptr %10, align 4, !tbaa !9
  %1089 = load ptr, ptr %3, align 8, !tbaa !5
  %1090 = load i32, ptr %10, align 4, !tbaa !9
  call void @w2c_hermes_dlfree(ptr noundef %1089, i32 noundef %1090)
  %1091 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %1091, ptr %10, align 4, !tbaa !9
  %1092 = load ptr, ptr %3, align 8, !tbaa !5
  %1093 = getelementptr inbounds %struct.w2c_hermes, ptr %1092, i32 0, i32 6
  %1094 = load i32, ptr %10, align 4, !tbaa !9
  %1095 = zext i32 %1094 to i64
  %1096 = add i64 %1095, 5516
  %1097 = call i32 @i32_load(ptr noundef %1093, i64 noundef %1096)
  store i32 %1097, ptr %10, align 4, !tbaa !9
  %1098 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1098, ptr %5, align 4, !tbaa !9
  %1099 = load i32, ptr %10, align 4, !tbaa !9
  %1100 = icmp ne i32 %1099, 0
  br i1 %1100, label %1101, label %1115

1101:                                             ; preds = %1057
  %1102 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %1102, ptr %10, align 4, !tbaa !9
  store i32 5520, ptr %11, align 4, !tbaa !9
  %1103 = load i32, ptr %11, align 4, !tbaa !9
  %1104 = load i32, ptr %10, align 4, !tbaa !9
  %1105 = add i32 %1104, %1103
  store i32 %1105, ptr %10, align 4, !tbaa !9
  %1106 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1106, ptr %11, align 4, !tbaa !9
  %1107 = load ptr, ptr %3, align 8, !tbaa !5
  %1108 = getelementptr inbounds %struct.w2c_hermes, ptr %1107, i32 0, i32 6
  %1109 = load i32, ptr %10, align 4, !tbaa !9
  %1110 = zext i32 %1109 to i64
  %1111 = load i32, ptr %11, align 4, !tbaa !9
  call void @i32_store(ptr noundef %1108, i64 noundef %1110, i32 noundef %1111)
  %1112 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1112, ptr %10, align 4, !tbaa !9
  %1113 = load ptr, ptr %3, align 8, !tbaa !5
  %1114 = load i32, ptr %10, align 4, !tbaa !9
  call void @w2c_hermes_operator0x20delete0x28void0x2A0x29(ptr noundef %1113, i32 noundef %1114)
  br label %1115

1115:                                             ; preds = %1101, %1057
  %1116 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %1116, ptr %10, align 4, !tbaa !9
  %1117 = load ptr, ptr %3, align 8, !tbaa !5
  %1118 = getelementptr inbounds %struct.w2c_hermes, ptr %1117, i32 0, i32 6
  %1119 = load i32, ptr %10, align 4, !tbaa !9
  %1120 = zext i32 %1119 to i64
  %1121 = add i64 %1120, 5332
  %1122 = call i32 @i32_load(ptr noundef %1118, i64 noundef %1121)
  store i32 %1122, ptr %10, align 4, !tbaa !9
  %1123 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1123, ptr %7, align 4, !tbaa !9
  %1124 = load i32, ptr %10, align 4, !tbaa !9
  %1125 = icmp ne i32 %1124, 0
  br i1 %1125, label %1126, label %1298

1126:                                             ; preds = %1115
  %1127 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %1127, ptr %10, align 4, !tbaa !9
  store i32 5336, ptr %11, align 4, !tbaa !9
  %1128 = load i32, ptr %11, align 4, !tbaa !9
  %1129 = load i32, ptr %10, align 4, !tbaa !9
  %1130 = add i32 %1129, %1128
  store i32 %1130, ptr %10, align 4, !tbaa !9
  %1131 = load ptr, ptr %3, align 8, !tbaa !5
  %1132 = getelementptr inbounds %struct.w2c_hermes, ptr %1131, i32 0, i32 6
  %1133 = load i32, ptr %10, align 4, !tbaa !9
  %1134 = zext i32 %1133 to i64
  %1135 = call i32 @i32_load(ptr noundef %1132, i64 noundef %1134)
  store i32 %1135, ptr %10, align 4, !tbaa !9
  %1136 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1136, ptr %5, align 4, !tbaa !9
  %1137 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1137, ptr %11, align 4, !tbaa !9
  %1138 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %1138, ptr %6, align 4, !tbaa !9
  %1139 = load i32, ptr %10, align 4, !tbaa !9
  %1140 = load i32, ptr %11, align 4, !tbaa !9
  %1141 = icmp ne i32 %1139, %1140
  %1142 = zext i1 %1141 to i32
  store i32 %1142, ptr %10, align 4, !tbaa !9
  %1143 = load i32, ptr %10, align 4, !tbaa !9
  %1144 = icmp ne i32 %1143, 0
  br i1 %1144, label %1145, label %1286

1145:                                             ; preds = %1126
  br label %1146

1146:                                             ; preds = %1276, %1145
  %1147 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1147, ptr %10, align 4, !tbaa !9
  store i32 24, ptr %11, align 4, !tbaa !9
  %1148 = load i32, ptr %11, align 4, !tbaa !9
  %1149 = load i32, ptr %10, align 4, !tbaa !9
  %1150 = sub i32 %1149, %1148
  store i32 %1150, ptr %10, align 4, !tbaa !9
  %1151 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1151, ptr %5, align 4, !tbaa !9
  %1152 = load ptr, ptr %3, align 8, !tbaa !5
  %1153 = getelementptr inbounds %struct.w2c_hermes, ptr %1152, i32 0, i32 6
  %1154 = load i32, ptr %10, align 4, !tbaa !9
  %1155 = zext i32 %1154 to i64
  %1156 = add i64 %1155, 16
  %1157 = call i32 @i32_load(ptr noundef %1153, i64 noundef %1156)
  store i32 %1157, ptr %10, align 4, !tbaa !9
  %1158 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1158, ptr %6, align 4, !tbaa !9
  %1159 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1159, ptr %11, align 4, !tbaa !9
  %1160 = load i32, ptr %10, align 4, !tbaa !9
  %1161 = load i32, ptr %11, align 4, !tbaa !9
  %1162 = icmp eq i32 %1160, %1161
  %1163 = zext i1 %1162 to i32
  store i32 %1163, ptr %10, align 4, !tbaa !9
  %1164 = load i32, ptr %10, align 4, !tbaa !9
  %1165 = icmp ne i32 %1164, 0
  br i1 %1165, label %1166, label %1178

1166:                                             ; preds = %1146
  %1167 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1167, ptr %10, align 4, !tbaa !9
  %1168 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1168, ptr %6, align 4, !tbaa !9
  %1169 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1169, ptr %10, align 4, !tbaa !9
  %1170 = load ptr, ptr %3, align 8, !tbaa !5
  %1171 = getelementptr inbounds %struct.w2c_hermes, ptr %1170, i32 0, i32 6
  %1172 = load i32, ptr %10, align 4, !tbaa !9
  %1173 = zext i32 %1172 to i64
  %1174 = call i32 @i32_load(ptr noundef %1171, i64 noundef %1173)
  store i32 %1174, ptr %10, align 4, !tbaa !9
  store i32 16, ptr %11, align 4, !tbaa !9
  %1175 = load i32, ptr %11, align 4, !tbaa !9
  %1176 = load i32, ptr %10, align 4, !tbaa !9
  %1177 = add i32 %1176, %1175
  store i32 %1177, ptr %10, align 4, !tbaa !9
  br label %1197

1178:                                             ; preds = %1146
  %1179 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1179, ptr %10, align 4, !tbaa !9
  %1180 = load i32, ptr %10, align 4, !tbaa !9
  %1181 = icmp ne i32 %1180, 0
  %1182 = xor i1 %1181, true
  %1183 = zext i1 %1182 to i32
  store i32 %1183, ptr %10, align 4, !tbaa !9
  %1184 = load i32, ptr %10, align 4, !tbaa !9
  %1185 = icmp ne i32 %1184, 0
  br i1 %1185, label %1186, label %1187

1186:                                             ; preds = %1178
  br label %1267

1187:                                             ; preds = %1178
  %1188 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1188, ptr %10, align 4, !tbaa !9
  %1189 = load ptr, ptr %3, align 8, !tbaa !5
  %1190 = getelementptr inbounds %struct.w2c_hermes, ptr %1189, i32 0, i32 6
  %1191 = load i32, ptr %10, align 4, !tbaa !9
  %1192 = zext i32 %1191 to i64
  %1193 = call i32 @i32_load(ptr noundef %1190, i64 noundef %1192)
  store i32 %1193, ptr %10, align 4, !tbaa !9
  store i32 20, ptr %11, align 4, !tbaa !9
  %1194 = load i32, ptr %11, align 4, !tbaa !9
  %1195 = load i32, ptr %10, align 4, !tbaa !9
  %1196 = add i32 %1195, %1194
  store i32 %1196, ptr %10, align 4, !tbaa !9
  br label %1197

1197:                                             ; preds = %1187, %1166
  %1198 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1198, ptr %8, align 4, !tbaa !9
  %1199 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1199, ptr %10, align 4, !tbaa !9
  %1200 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1200, ptr %11, align 4, !tbaa !9
  %1201 = load ptr, ptr %3, align 8, !tbaa !5
  %1202 = getelementptr inbounds %struct.w2c_hermes, ptr %1201, i32 0, i32 6
  %1203 = load i32, ptr %11, align 4, !tbaa !9
  %1204 = zext i32 %1203 to i64
  %1205 = call i32 @i32_load(ptr noundef %1202, i64 noundef %1204)
  store i32 %1205, ptr %11, align 4, !tbaa !9
  %1206 = load i32, ptr %11, align 4, !tbaa !9
  %1207 = load ptr, ptr %3, align 8, !tbaa !5
  %1208 = getelementptr inbounds %struct.w2c_hermes, ptr %1207, i32 0, i32 7
  %1209 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1208, i32 0, i32 2
  %1210 = load i32, ptr %1209, align 4, !tbaa !11
  %1211 = icmp ult i32 %1206, %1210
  br i1 %1211, label %1212, label %1235

1212:                                             ; preds = %1197
  %1213 = load ptr, ptr %3, align 8, !tbaa !5
  %1214 = getelementptr inbounds %struct.w2c_hermes, ptr %1213, i32 0, i32 7
  %1215 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1214, i32 0, i32 0
  %1216 = load ptr, ptr %1215, align 8, !tbaa !17
  %1217 = load i32, ptr %11, align 4, !tbaa !9
  %1218 = zext i32 %1217 to i64
  %1219 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1216, i64 %1218
  %1220 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1219, i32 0, i32 1
  %1221 = load ptr, ptr %1220, align 8, !tbaa !18
  %1222 = icmp ne ptr %1221, null
  br i1 %1222, label %1223, label %1235

1223:                                             ; preds = %1212
  %1224 = load ptr, ptr @w2c_hermes_t3, align 8, !tbaa !5
  %1225 = load ptr, ptr %3, align 8, !tbaa !5
  %1226 = getelementptr inbounds %struct.w2c_hermes, ptr %1225, i32 0, i32 7
  %1227 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1226, i32 0, i32 0
  %1228 = load ptr, ptr %1227, align 8, !tbaa !17
  %1229 = load i32, ptr %11, align 4, !tbaa !9
  %1230 = zext i32 %1229 to i64
  %1231 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1228, i64 %1230
  %1232 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1231, i32 0, i32 0
  %1233 = load ptr, ptr %1232, align 8, !tbaa !20
  %1234 = call zeroext i1 @func_types_eq(ptr noundef %1224, ptr noundef %1233)
  br label %1235

1235:                                             ; preds = %1223, %1212, %1197
  %1236 = phi i1 [ false, %1212 ], [ false, %1197 ], [ %1234, %1223 ]
  %1237 = xor i1 %1236, true
  %1238 = xor i1 %1237, true
  %1239 = zext i1 %1238 to i32
  %1240 = sext i32 %1239 to i64
  %1241 = call i64 @llvm.expect.i64(i64 %1240, i64 1)
  %1242 = icmp ne i64 %1241, 0
  br i1 %1242, label %1245, label %1243

1243:                                             ; preds = %1235
  call void @wasm_rt_trap(i32 noundef 6) #7
  unreachable

1244:                                             ; No predecessors!
  br label %1245

1245:                                             ; preds = %1244, %1235
  %1246 = phi i1 [ true, %1235 ], [ false, %1244 ]
  %1247 = zext i1 %1246 to i32
  %1248 = load ptr, ptr %3, align 8, !tbaa !5
  %1249 = getelementptr inbounds %struct.w2c_hermes, ptr %1248, i32 0, i32 7
  %1250 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1249, i32 0, i32 0
  %1251 = load ptr, ptr %1250, align 8, !tbaa !17
  %1252 = load i32, ptr %11, align 4, !tbaa !9
  %1253 = zext i32 %1252 to i64
  %1254 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1251, i64 %1253
  %1255 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1254, i32 0, i32 1
  %1256 = load ptr, ptr %1255, align 8, !tbaa !18
  %1257 = load ptr, ptr %3, align 8, !tbaa !5
  %1258 = getelementptr inbounds %struct.w2c_hermes, ptr %1257, i32 0, i32 7
  %1259 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1258, i32 0, i32 0
  %1260 = load ptr, ptr %1259, align 8, !tbaa !17
  %1261 = load i32, ptr %11, align 4, !tbaa !9
  %1262 = zext i32 %1261 to i64
  %1263 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1260, i64 %1262
  %1264 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1263, i32 0, i32 2
  %1265 = load ptr, ptr %1264, align 8, !tbaa !21
  %1266 = load i32, ptr %10, align 4, !tbaa !9
  call void %1256(ptr noundef %1265, i32 noundef %1266)
  br label %1267

1267:                                             ; preds = %1245, %1186
  %1268 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1268, ptr %10, align 4, !tbaa !9
  %1269 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1269, ptr %11, align 4, !tbaa !9
  %1270 = load i32, ptr %10, align 4, !tbaa !9
  %1271 = load i32, ptr %11, align 4, !tbaa !9
  %1272 = icmp ne i32 %1270, %1271
  %1273 = zext i1 %1272 to i32
  store i32 %1273, ptr %10, align 4, !tbaa !9
  %1274 = load i32, ptr %10, align 4, !tbaa !9
  %1275 = icmp ne i32 %1274, 0
  br i1 %1275, label %1276, label %1277

1276:                                             ; preds = %1267
  br label %1146

1277:                                             ; preds = %1267
  %1278 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %1278, ptr %10, align 4, !tbaa !9
  %1279 = load ptr, ptr %3, align 8, !tbaa !5
  %1280 = getelementptr inbounds %struct.w2c_hermes, ptr %1279, i32 0, i32 6
  %1281 = load i32, ptr %10, align 4, !tbaa !9
  %1282 = zext i32 %1281 to i64
  %1283 = add i64 %1282, 5332
  %1284 = call i32 @i32_load(ptr noundef %1280, i64 noundef %1283)
  store i32 %1284, ptr %10, align 4, !tbaa !9
  %1285 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1285, ptr %6, align 4, !tbaa !9
  br label %1286

1286:                                             ; preds = %1277, %1126
  %1287 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %1287, ptr %10, align 4, !tbaa !9
  %1288 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1288, ptr %11, align 4, !tbaa !9
  %1289 = load ptr, ptr %3, align 8, !tbaa !5
  %1290 = getelementptr inbounds %struct.w2c_hermes, ptr %1289, i32 0, i32 6
  %1291 = load i32, ptr %10, align 4, !tbaa !9
  %1292 = zext i32 %1291 to i64
  %1293 = add i64 %1292, 5336
  %1294 = load i32, ptr %11, align 4, !tbaa !9
  call void @i32_store(ptr noundef %1290, i64 noundef %1293, i32 noundef %1294)
  %1295 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1295, ptr %10, align 4, !tbaa !9
  %1296 = load ptr, ptr %3, align 8, !tbaa !5
  %1297 = load i32, ptr %10, align 4, !tbaa !9
  call void @w2c_hermes_operator0x20delete0x28void0x2A0x29(ptr noundef %1296, i32 noundef %1297)
  br label %1298

1298:                                             ; preds = %1286, %1115
  %1299 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %1299, ptr %10, align 4, !tbaa !9
  %1300 = load ptr, ptr %3, align 8, !tbaa !5
  %1301 = getelementptr inbounds %struct.w2c_hermes, ptr %1300, i32 0, i32 6
  %1302 = load i32, ptr %10, align 4, !tbaa !9
  %1303 = zext i32 %1302 to i64
  %1304 = add i64 %1303, 5320
  %1305 = call i32 @i32_load(ptr noundef %1301, i64 noundef %1304)
  store i32 %1305, ptr %10, align 4, !tbaa !9
  %1306 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1306, ptr %7, align 4, !tbaa !9
  %1307 = load i32, ptr %10, align 4, !tbaa !9
  %1308 = icmp ne i32 %1307, 0
  br i1 %1308, label %1309, label %1481

1309:                                             ; preds = %1298
  %1310 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %1310, ptr %10, align 4, !tbaa !9
  store i32 5324, ptr %11, align 4, !tbaa !9
  %1311 = load i32, ptr %11, align 4, !tbaa !9
  %1312 = load i32, ptr %10, align 4, !tbaa !9
  %1313 = add i32 %1312, %1311
  store i32 %1313, ptr %10, align 4, !tbaa !9
  %1314 = load ptr, ptr %3, align 8, !tbaa !5
  %1315 = getelementptr inbounds %struct.w2c_hermes, ptr %1314, i32 0, i32 6
  %1316 = load i32, ptr %10, align 4, !tbaa !9
  %1317 = zext i32 %1316 to i64
  %1318 = call i32 @i32_load(ptr noundef %1315, i64 noundef %1317)
  store i32 %1318, ptr %10, align 4, !tbaa !9
  %1319 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1319, ptr %5, align 4, !tbaa !9
  %1320 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1320, ptr %11, align 4, !tbaa !9
  %1321 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %1321, ptr %6, align 4, !tbaa !9
  %1322 = load i32, ptr %10, align 4, !tbaa !9
  %1323 = load i32, ptr %11, align 4, !tbaa !9
  %1324 = icmp ne i32 %1322, %1323
  %1325 = zext i1 %1324 to i32
  store i32 %1325, ptr %10, align 4, !tbaa !9
  %1326 = load i32, ptr %10, align 4, !tbaa !9
  %1327 = icmp ne i32 %1326, 0
  br i1 %1327, label %1328, label %1469

1328:                                             ; preds = %1309
  br label %1329

1329:                                             ; preds = %1459, %1328
  %1330 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1330, ptr %10, align 4, !tbaa !9
  store i32 24, ptr %11, align 4, !tbaa !9
  %1331 = load i32, ptr %11, align 4, !tbaa !9
  %1332 = load i32, ptr %10, align 4, !tbaa !9
  %1333 = sub i32 %1332, %1331
  store i32 %1333, ptr %10, align 4, !tbaa !9
  %1334 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1334, ptr %5, align 4, !tbaa !9
  %1335 = load ptr, ptr %3, align 8, !tbaa !5
  %1336 = getelementptr inbounds %struct.w2c_hermes, ptr %1335, i32 0, i32 6
  %1337 = load i32, ptr %10, align 4, !tbaa !9
  %1338 = zext i32 %1337 to i64
  %1339 = add i64 %1338, 16
  %1340 = call i32 @i32_load(ptr noundef %1336, i64 noundef %1339)
  store i32 %1340, ptr %10, align 4, !tbaa !9
  %1341 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1341, ptr %6, align 4, !tbaa !9
  %1342 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1342, ptr %11, align 4, !tbaa !9
  %1343 = load i32, ptr %10, align 4, !tbaa !9
  %1344 = load i32, ptr %11, align 4, !tbaa !9
  %1345 = icmp eq i32 %1343, %1344
  %1346 = zext i1 %1345 to i32
  store i32 %1346, ptr %10, align 4, !tbaa !9
  %1347 = load i32, ptr %10, align 4, !tbaa !9
  %1348 = icmp ne i32 %1347, 0
  br i1 %1348, label %1349, label %1361

1349:                                             ; preds = %1329
  %1350 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1350, ptr %10, align 4, !tbaa !9
  %1351 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1351, ptr %6, align 4, !tbaa !9
  %1352 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1352, ptr %10, align 4, !tbaa !9
  %1353 = load ptr, ptr %3, align 8, !tbaa !5
  %1354 = getelementptr inbounds %struct.w2c_hermes, ptr %1353, i32 0, i32 6
  %1355 = load i32, ptr %10, align 4, !tbaa !9
  %1356 = zext i32 %1355 to i64
  %1357 = call i32 @i32_load(ptr noundef %1354, i64 noundef %1356)
  store i32 %1357, ptr %10, align 4, !tbaa !9
  store i32 16, ptr %11, align 4, !tbaa !9
  %1358 = load i32, ptr %11, align 4, !tbaa !9
  %1359 = load i32, ptr %10, align 4, !tbaa !9
  %1360 = add i32 %1359, %1358
  store i32 %1360, ptr %10, align 4, !tbaa !9
  br label %1380

1361:                                             ; preds = %1329
  %1362 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1362, ptr %10, align 4, !tbaa !9
  %1363 = load i32, ptr %10, align 4, !tbaa !9
  %1364 = icmp ne i32 %1363, 0
  %1365 = xor i1 %1364, true
  %1366 = zext i1 %1365 to i32
  store i32 %1366, ptr %10, align 4, !tbaa !9
  %1367 = load i32, ptr %10, align 4, !tbaa !9
  %1368 = icmp ne i32 %1367, 0
  br i1 %1368, label %1369, label %1370

1369:                                             ; preds = %1361
  br label %1450

1370:                                             ; preds = %1361
  %1371 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1371, ptr %10, align 4, !tbaa !9
  %1372 = load ptr, ptr %3, align 8, !tbaa !5
  %1373 = getelementptr inbounds %struct.w2c_hermes, ptr %1372, i32 0, i32 6
  %1374 = load i32, ptr %10, align 4, !tbaa !9
  %1375 = zext i32 %1374 to i64
  %1376 = call i32 @i32_load(ptr noundef %1373, i64 noundef %1375)
  store i32 %1376, ptr %10, align 4, !tbaa !9
  store i32 20, ptr %11, align 4, !tbaa !9
  %1377 = load i32, ptr %11, align 4, !tbaa !9
  %1378 = load i32, ptr %10, align 4, !tbaa !9
  %1379 = add i32 %1378, %1377
  store i32 %1379, ptr %10, align 4, !tbaa !9
  br label %1380

1380:                                             ; preds = %1370, %1349
  %1381 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1381, ptr %8, align 4, !tbaa !9
  %1382 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1382, ptr %10, align 4, !tbaa !9
  %1383 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1383, ptr %11, align 4, !tbaa !9
  %1384 = load ptr, ptr %3, align 8, !tbaa !5
  %1385 = getelementptr inbounds %struct.w2c_hermes, ptr %1384, i32 0, i32 6
  %1386 = load i32, ptr %11, align 4, !tbaa !9
  %1387 = zext i32 %1386 to i64
  %1388 = call i32 @i32_load(ptr noundef %1385, i64 noundef %1387)
  store i32 %1388, ptr %11, align 4, !tbaa !9
  %1389 = load i32, ptr %11, align 4, !tbaa !9
  %1390 = load ptr, ptr %3, align 8, !tbaa !5
  %1391 = getelementptr inbounds %struct.w2c_hermes, ptr %1390, i32 0, i32 7
  %1392 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1391, i32 0, i32 2
  %1393 = load i32, ptr %1392, align 4, !tbaa !11
  %1394 = icmp ult i32 %1389, %1393
  br i1 %1394, label %1395, label %1418

1395:                                             ; preds = %1380
  %1396 = load ptr, ptr %3, align 8, !tbaa !5
  %1397 = getelementptr inbounds %struct.w2c_hermes, ptr %1396, i32 0, i32 7
  %1398 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1397, i32 0, i32 0
  %1399 = load ptr, ptr %1398, align 8, !tbaa !17
  %1400 = load i32, ptr %11, align 4, !tbaa !9
  %1401 = zext i32 %1400 to i64
  %1402 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1399, i64 %1401
  %1403 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1402, i32 0, i32 1
  %1404 = load ptr, ptr %1403, align 8, !tbaa !18
  %1405 = icmp ne ptr %1404, null
  br i1 %1405, label %1406, label %1418

1406:                                             ; preds = %1395
  %1407 = load ptr, ptr @w2c_hermes_t3, align 8, !tbaa !5
  %1408 = load ptr, ptr %3, align 8, !tbaa !5
  %1409 = getelementptr inbounds %struct.w2c_hermes, ptr %1408, i32 0, i32 7
  %1410 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1409, i32 0, i32 0
  %1411 = load ptr, ptr %1410, align 8, !tbaa !17
  %1412 = load i32, ptr %11, align 4, !tbaa !9
  %1413 = zext i32 %1412 to i64
  %1414 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1411, i64 %1413
  %1415 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1414, i32 0, i32 0
  %1416 = load ptr, ptr %1415, align 8, !tbaa !20
  %1417 = call zeroext i1 @func_types_eq(ptr noundef %1407, ptr noundef %1416)
  br label %1418

1418:                                             ; preds = %1406, %1395, %1380
  %1419 = phi i1 [ false, %1395 ], [ false, %1380 ], [ %1417, %1406 ]
  %1420 = xor i1 %1419, true
  %1421 = xor i1 %1420, true
  %1422 = zext i1 %1421 to i32
  %1423 = sext i32 %1422 to i64
  %1424 = call i64 @llvm.expect.i64(i64 %1423, i64 1)
  %1425 = icmp ne i64 %1424, 0
  br i1 %1425, label %1428, label %1426

1426:                                             ; preds = %1418
  call void @wasm_rt_trap(i32 noundef 6) #7
  unreachable

1427:                                             ; No predecessors!
  br label %1428

1428:                                             ; preds = %1427, %1418
  %1429 = phi i1 [ true, %1418 ], [ false, %1427 ]
  %1430 = zext i1 %1429 to i32
  %1431 = load ptr, ptr %3, align 8, !tbaa !5
  %1432 = getelementptr inbounds %struct.w2c_hermes, ptr %1431, i32 0, i32 7
  %1433 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1432, i32 0, i32 0
  %1434 = load ptr, ptr %1433, align 8, !tbaa !17
  %1435 = load i32, ptr %11, align 4, !tbaa !9
  %1436 = zext i32 %1435 to i64
  %1437 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1434, i64 %1436
  %1438 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1437, i32 0, i32 1
  %1439 = load ptr, ptr %1438, align 8, !tbaa !18
  %1440 = load ptr, ptr %3, align 8, !tbaa !5
  %1441 = getelementptr inbounds %struct.w2c_hermes, ptr %1440, i32 0, i32 7
  %1442 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1441, i32 0, i32 0
  %1443 = load ptr, ptr %1442, align 8, !tbaa !17
  %1444 = load i32, ptr %11, align 4, !tbaa !9
  %1445 = zext i32 %1444 to i64
  %1446 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1443, i64 %1445
  %1447 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1446, i32 0, i32 2
  %1448 = load ptr, ptr %1447, align 8, !tbaa !21
  %1449 = load i32, ptr %10, align 4, !tbaa !9
  call void %1439(ptr noundef %1448, i32 noundef %1449)
  br label %1450

1450:                                             ; preds = %1428, %1369
  %1451 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1451, ptr %10, align 4, !tbaa !9
  %1452 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1452, ptr %11, align 4, !tbaa !9
  %1453 = load i32, ptr %10, align 4, !tbaa !9
  %1454 = load i32, ptr %11, align 4, !tbaa !9
  %1455 = icmp ne i32 %1453, %1454
  %1456 = zext i1 %1455 to i32
  store i32 %1456, ptr %10, align 4, !tbaa !9
  %1457 = load i32, ptr %10, align 4, !tbaa !9
  %1458 = icmp ne i32 %1457, 0
  br i1 %1458, label %1459, label %1460

1459:                                             ; preds = %1450
  br label %1329

1460:                                             ; preds = %1450
  %1461 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %1461, ptr %10, align 4, !tbaa !9
  %1462 = load ptr, ptr %3, align 8, !tbaa !5
  %1463 = getelementptr inbounds %struct.w2c_hermes, ptr %1462, i32 0, i32 6
  %1464 = load i32, ptr %10, align 4, !tbaa !9
  %1465 = zext i32 %1464 to i64
  %1466 = add i64 %1465, 5320
  %1467 = call i32 @i32_load(ptr noundef %1463, i64 noundef %1466)
  store i32 %1467, ptr %10, align 4, !tbaa !9
  %1468 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1468, ptr %6, align 4, !tbaa !9
  br label %1469

1469:                                             ; preds = %1460, %1309
  %1470 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %1470, ptr %10, align 4, !tbaa !9
  %1471 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1471, ptr %11, align 4, !tbaa !9
  %1472 = load ptr, ptr %3, align 8, !tbaa !5
  %1473 = getelementptr inbounds %struct.w2c_hermes, ptr %1472, i32 0, i32 6
  %1474 = load i32, ptr %10, align 4, !tbaa !9
  %1475 = zext i32 %1474 to i64
  %1476 = add i64 %1475, 5324
  %1477 = load i32, ptr %11, align 4, !tbaa !9
  call void @i32_store(ptr noundef %1473, i64 noundef %1476, i32 noundef %1477)
  %1478 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1478, ptr %10, align 4, !tbaa !9
  %1479 = load ptr, ptr %3, align 8, !tbaa !5
  %1480 = load i32, ptr %10, align 4, !tbaa !9
  call void @w2c_hermes_operator0x20delete0x28void0x2A0x29(ptr noundef %1479, i32 noundef %1480)
  br label %1481

1481:                                             ; preds = %1469, %1298
  %1482 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %1482, ptr %10, align 4, !tbaa !9
  %1483 = load ptr, ptr %3, align 8, !tbaa !5
  %1484 = getelementptr inbounds %struct.w2c_hermes, ptr %1483, i32 0, i32 6
  %1485 = load i32, ptr %10, align 4, !tbaa !9
  %1486 = zext i32 %1485 to i64
  %1487 = add i64 %1486, 5308
  %1488 = call i32 @i32_load(ptr noundef %1484, i64 noundef %1487)
  store i32 %1488, ptr %10, align 4, !tbaa !9
  %1489 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1489, ptr %7, align 4, !tbaa !9
  %1490 = load i32, ptr %10, align 4, !tbaa !9
  %1491 = icmp ne i32 %1490, 0
  br i1 %1491, label %1492, label %1664

1492:                                             ; preds = %1481
  %1493 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %1493, ptr %10, align 4, !tbaa !9
  store i32 5312, ptr %11, align 4, !tbaa !9
  %1494 = load i32, ptr %11, align 4, !tbaa !9
  %1495 = load i32, ptr %10, align 4, !tbaa !9
  %1496 = add i32 %1495, %1494
  store i32 %1496, ptr %10, align 4, !tbaa !9
  %1497 = load ptr, ptr %3, align 8, !tbaa !5
  %1498 = getelementptr inbounds %struct.w2c_hermes, ptr %1497, i32 0, i32 6
  %1499 = load i32, ptr %10, align 4, !tbaa !9
  %1500 = zext i32 %1499 to i64
  %1501 = call i32 @i32_load(ptr noundef %1498, i64 noundef %1500)
  store i32 %1501, ptr %10, align 4, !tbaa !9
  %1502 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1502, ptr %5, align 4, !tbaa !9
  %1503 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1503, ptr %11, align 4, !tbaa !9
  %1504 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %1504, ptr %6, align 4, !tbaa !9
  %1505 = load i32, ptr %10, align 4, !tbaa !9
  %1506 = load i32, ptr %11, align 4, !tbaa !9
  %1507 = icmp ne i32 %1505, %1506
  %1508 = zext i1 %1507 to i32
  store i32 %1508, ptr %10, align 4, !tbaa !9
  %1509 = load i32, ptr %10, align 4, !tbaa !9
  %1510 = icmp ne i32 %1509, 0
  br i1 %1510, label %1511, label %1652

1511:                                             ; preds = %1492
  br label %1512

1512:                                             ; preds = %1642, %1511
  %1513 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1513, ptr %10, align 4, !tbaa !9
  store i32 24, ptr %11, align 4, !tbaa !9
  %1514 = load i32, ptr %11, align 4, !tbaa !9
  %1515 = load i32, ptr %10, align 4, !tbaa !9
  %1516 = sub i32 %1515, %1514
  store i32 %1516, ptr %10, align 4, !tbaa !9
  %1517 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1517, ptr %5, align 4, !tbaa !9
  %1518 = load ptr, ptr %3, align 8, !tbaa !5
  %1519 = getelementptr inbounds %struct.w2c_hermes, ptr %1518, i32 0, i32 6
  %1520 = load i32, ptr %10, align 4, !tbaa !9
  %1521 = zext i32 %1520 to i64
  %1522 = add i64 %1521, 16
  %1523 = call i32 @i32_load(ptr noundef %1519, i64 noundef %1522)
  store i32 %1523, ptr %10, align 4, !tbaa !9
  %1524 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1524, ptr %6, align 4, !tbaa !9
  %1525 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1525, ptr %11, align 4, !tbaa !9
  %1526 = load i32, ptr %10, align 4, !tbaa !9
  %1527 = load i32, ptr %11, align 4, !tbaa !9
  %1528 = icmp eq i32 %1526, %1527
  %1529 = zext i1 %1528 to i32
  store i32 %1529, ptr %10, align 4, !tbaa !9
  %1530 = load i32, ptr %10, align 4, !tbaa !9
  %1531 = icmp ne i32 %1530, 0
  br i1 %1531, label %1532, label %1544

1532:                                             ; preds = %1512
  %1533 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1533, ptr %10, align 4, !tbaa !9
  %1534 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1534, ptr %6, align 4, !tbaa !9
  %1535 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1535, ptr %10, align 4, !tbaa !9
  %1536 = load ptr, ptr %3, align 8, !tbaa !5
  %1537 = getelementptr inbounds %struct.w2c_hermes, ptr %1536, i32 0, i32 6
  %1538 = load i32, ptr %10, align 4, !tbaa !9
  %1539 = zext i32 %1538 to i64
  %1540 = call i32 @i32_load(ptr noundef %1537, i64 noundef %1539)
  store i32 %1540, ptr %10, align 4, !tbaa !9
  store i32 16, ptr %11, align 4, !tbaa !9
  %1541 = load i32, ptr %11, align 4, !tbaa !9
  %1542 = load i32, ptr %10, align 4, !tbaa !9
  %1543 = add i32 %1542, %1541
  store i32 %1543, ptr %10, align 4, !tbaa !9
  br label %1563

1544:                                             ; preds = %1512
  %1545 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1545, ptr %10, align 4, !tbaa !9
  %1546 = load i32, ptr %10, align 4, !tbaa !9
  %1547 = icmp ne i32 %1546, 0
  %1548 = xor i1 %1547, true
  %1549 = zext i1 %1548 to i32
  store i32 %1549, ptr %10, align 4, !tbaa !9
  %1550 = load i32, ptr %10, align 4, !tbaa !9
  %1551 = icmp ne i32 %1550, 0
  br i1 %1551, label %1552, label %1553

1552:                                             ; preds = %1544
  br label %1633

1553:                                             ; preds = %1544
  %1554 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1554, ptr %10, align 4, !tbaa !9
  %1555 = load ptr, ptr %3, align 8, !tbaa !5
  %1556 = getelementptr inbounds %struct.w2c_hermes, ptr %1555, i32 0, i32 6
  %1557 = load i32, ptr %10, align 4, !tbaa !9
  %1558 = zext i32 %1557 to i64
  %1559 = call i32 @i32_load(ptr noundef %1556, i64 noundef %1558)
  store i32 %1559, ptr %10, align 4, !tbaa !9
  store i32 20, ptr %11, align 4, !tbaa !9
  %1560 = load i32, ptr %11, align 4, !tbaa !9
  %1561 = load i32, ptr %10, align 4, !tbaa !9
  %1562 = add i32 %1561, %1560
  store i32 %1562, ptr %10, align 4, !tbaa !9
  br label %1563

1563:                                             ; preds = %1553, %1532
  %1564 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1564, ptr %8, align 4, !tbaa !9
  %1565 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1565, ptr %10, align 4, !tbaa !9
  %1566 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1566, ptr %11, align 4, !tbaa !9
  %1567 = load ptr, ptr %3, align 8, !tbaa !5
  %1568 = getelementptr inbounds %struct.w2c_hermes, ptr %1567, i32 0, i32 6
  %1569 = load i32, ptr %11, align 4, !tbaa !9
  %1570 = zext i32 %1569 to i64
  %1571 = call i32 @i32_load(ptr noundef %1568, i64 noundef %1570)
  store i32 %1571, ptr %11, align 4, !tbaa !9
  %1572 = load i32, ptr %11, align 4, !tbaa !9
  %1573 = load ptr, ptr %3, align 8, !tbaa !5
  %1574 = getelementptr inbounds %struct.w2c_hermes, ptr %1573, i32 0, i32 7
  %1575 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1574, i32 0, i32 2
  %1576 = load i32, ptr %1575, align 4, !tbaa !11
  %1577 = icmp ult i32 %1572, %1576
  br i1 %1577, label %1578, label %1601

1578:                                             ; preds = %1563
  %1579 = load ptr, ptr %3, align 8, !tbaa !5
  %1580 = getelementptr inbounds %struct.w2c_hermes, ptr %1579, i32 0, i32 7
  %1581 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1580, i32 0, i32 0
  %1582 = load ptr, ptr %1581, align 8, !tbaa !17
  %1583 = load i32, ptr %11, align 4, !tbaa !9
  %1584 = zext i32 %1583 to i64
  %1585 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1582, i64 %1584
  %1586 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1585, i32 0, i32 1
  %1587 = load ptr, ptr %1586, align 8, !tbaa !18
  %1588 = icmp ne ptr %1587, null
  br i1 %1588, label %1589, label %1601

1589:                                             ; preds = %1578
  %1590 = load ptr, ptr @w2c_hermes_t3, align 8, !tbaa !5
  %1591 = load ptr, ptr %3, align 8, !tbaa !5
  %1592 = getelementptr inbounds %struct.w2c_hermes, ptr %1591, i32 0, i32 7
  %1593 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1592, i32 0, i32 0
  %1594 = load ptr, ptr %1593, align 8, !tbaa !17
  %1595 = load i32, ptr %11, align 4, !tbaa !9
  %1596 = zext i32 %1595 to i64
  %1597 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1594, i64 %1596
  %1598 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1597, i32 0, i32 0
  %1599 = load ptr, ptr %1598, align 8, !tbaa !20
  %1600 = call zeroext i1 @func_types_eq(ptr noundef %1590, ptr noundef %1599)
  br label %1601

1601:                                             ; preds = %1589, %1578, %1563
  %1602 = phi i1 [ false, %1578 ], [ false, %1563 ], [ %1600, %1589 ]
  %1603 = xor i1 %1602, true
  %1604 = xor i1 %1603, true
  %1605 = zext i1 %1604 to i32
  %1606 = sext i32 %1605 to i64
  %1607 = call i64 @llvm.expect.i64(i64 %1606, i64 1)
  %1608 = icmp ne i64 %1607, 0
  br i1 %1608, label %1611, label %1609

1609:                                             ; preds = %1601
  call void @wasm_rt_trap(i32 noundef 6) #7
  unreachable

1610:                                             ; No predecessors!
  br label %1611

1611:                                             ; preds = %1610, %1601
  %1612 = phi i1 [ true, %1601 ], [ false, %1610 ]
  %1613 = zext i1 %1612 to i32
  %1614 = load ptr, ptr %3, align 8, !tbaa !5
  %1615 = getelementptr inbounds %struct.w2c_hermes, ptr %1614, i32 0, i32 7
  %1616 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1615, i32 0, i32 0
  %1617 = load ptr, ptr %1616, align 8, !tbaa !17
  %1618 = load i32, ptr %11, align 4, !tbaa !9
  %1619 = zext i32 %1618 to i64
  %1620 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1617, i64 %1619
  %1621 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1620, i32 0, i32 1
  %1622 = load ptr, ptr %1621, align 8, !tbaa !18
  %1623 = load ptr, ptr %3, align 8, !tbaa !5
  %1624 = getelementptr inbounds %struct.w2c_hermes, ptr %1623, i32 0, i32 7
  %1625 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1624, i32 0, i32 0
  %1626 = load ptr, ptr %1625, align 8, !tbaa !17
  %1627 = load i32, ptr %11, align 4, !tbaa !9
  %1628 = zext i32 %1627 to i64
  %1629 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1626, i64 %1628
  %1630 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1629, i32 0, i32 2
  %1631 = load ptr, ptr %1630, align 8, !tbaa !21
  %1632 = load i32, ptr %10, align 4, !tbaa !9
  call void %1622(ptr noundef %1631, i32 noundef %1632)
  br label %1633

1633:                                             ; preds = %1611, %1552
  %1634 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1634, ptr %10, align 4, !tbaa !9
  %1635 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1635, ptr %11, align 4, !tbaa !9
  %1636 = load i32, ptr %10, align 4, !tbaa !9
  %1637 = load i32, ptr %11, align 4, !tbaa !9
  %1638 = icmp ne i32 %1636, %1637
  %1639 = zext i1 %1638 to i32
  store i32 %1639, ptr %10, align 4, !tbaa !9
  %1640 = load i32, ptr %10, align 4, !tbaa !9
  %1641 = icmp ne i32 %1640, 0
  br i1 %1641, label %1642, label %1643

1642:                                             ; preds = %1633
  br label %1512

1643:                                             ; preds = %1633
  %1644 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %1644, ptr %10, align 4, !tbaa !9
  %1645 = load ptr, ptr %3, align 8, !tbaa !5
  %1646 = getelementptr inbounds %struct.w2c_hermes, ptr %1645, i32 0, i32 6
  %1647 = load i32, ptr %10, align 4, !tbaa !9
  %1648 = zext i32 %1647 to i64
  %1649 = add i64 %1648, 5308
  %1650 = call i32 @i32_load(ptr noundef %1646, i64 noundef %1649)
  store i32 %1650, ptr %10, align 4, !tbaa !9
  %1651 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1651, ptr %6, align 4, !tbaa !9
  br label %1652

1652:                                             ; preds = %1643, %1492
  %1653 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %1653, ptr %10, align 4, !tbaa !9
  %1654 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1654, ptr %11, align 4, !tbaa !9
  %1655 = load ptr, ptr %3, align 8, !tbaa !5
  %1656 = getelementptr inbounds %struct.w2c_hermes, ptr %1655, i32 0, i32 6
  %1657 = load i32, ptr %10, align 4, !tbaa !9
  %1658 = zext i32 %1657 to i64
  %1659 = add i64 %1658, 5312
  %1660 = load i32, ptr %11, align 4, !tbaa !9
  call void @i32_store(ptr noundef %1656, i64 noundef %1659, i32 noundef %1660)
  %1661 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1661, ptr %10, align 4, !tbaa !9
  %1662 = load ptr, ptr %3, align 8, !tbaa !5
  %1663 = load i32, ptr %10, align 4, !tbaa !9
  call void @w2c_hermes_operator0x20delete0x28void0x2A0x29(ptr noundef %1662, i32 noundef %1663)
  br label %1664

1664:                                             ; preds = %1652, %1481
  %1665 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %1665, ptr %10, align 4, !tbaa !9
  %1666 = load ptr, ptr %3, align 8, !tbaa !5
  %1667 = getelementptr inbounds %struct.w2c_hermes, ptr %1666, i32 0, i32 6
  %1668 = load i32, ptr %10, align 4, !tbaa !9
  %1669 = zext i32 %1668 to i64
  %1670 = add i64 %1669, 5296
  %1671 = call i32 @i32_load(ptr noundef %1667, i64 noundef %1670)
  store i32 %1671, ptr %10, align 4, !tbaa !9
  %1672 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1672, ptr %7, align 4, !tbaa !9
  %1673 = load i32, ptr %10, align 4, !tbaa !9
  %1674 = icmp ne i32 %1673, 0
  br i1 %1674, label %1675, label %1847

1675:                                             ; preds = %1664
  %1676 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %1676, ptr %10, align 4, !tbaa !9
  store i32 5300, ptr %11, align 4, !tbaa !9
  %1677 = load i32, ptr %11, align 4, !tbaa !9
  %1678 = load i32, ptr %10, align 4, !tbaa !9
  %1679 = add i32 %1678, %1677
  store i32 %1679, ptr %10, align 4, !tbaa !9
  %1680 = load ptr, ptr %3, align 8, !tbaa !5
  %1681 = getelementptr inbounds %struct.w2c_hermes, ptr %1680, i32 0, i32 6
  %1682 = load i32, ptr %10, align 4, !tbaa !9
  %1683 = zext i32 %1682 to i64
  %1684 = call i32 @i32_load(ptr noundef %1681, i64 noundef %1683)
  store i32 %1684, ptr %10, align 4, !tbaa !9
  %1685 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1685, ptr %5, align 4, !tbaa !9
  %1686 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1686, ptr %11, align 4, !tbaa !9
  %1687 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %1687, ptr %6, align 4, !tbaa !9
  %1688 = load i32, ptr %10, align 4, !tbaa !9
  %1689 = load i32, ptr %11, align 4, !tbaa !9
  %1690 = icmp ne i32 %1688, %1689
  %1691 = zext i1 %1690 to i32
  store i32 %1691, ptr %10, align 4, !tbaa !9
  %1692 = load i32, ptr %10, align 4, !tbaa !9
  %1693 = icmp ne i32 %1692, 0
  br i1 %1693, label %1694, label %1835

1694:                                             ; preds = %1675
  br label %1695

1695:                                             ; preds = %1825, %1694
  %1696 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1696, ptr %10, align 4, !tbaa !9
  store i32 24, ptr %11, align 4, !tbaa !9
  %1697 = load i32, ptr %11, align 4, !tbaa !9
  %1698 = load i32, ptr %10, align 4, !tbaa !9
  %1699 = sub i32 %1698, %1697
  store i32 %1699, ptr %10, align 4, !tbaa !9
  %1700 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1700, ptr %5, align 4, !tbaa !9
  %1701 = load ptr, ptr %3, align 8, !tbaa !5
  %1702 = getelementptr inbounds %struct.w2c_hermes, ptr %1701, i32 0, i32 6
  %1703 = load i32, ptr %10, align 4, !tbaa !9
  %1704 = zext i32 %1703 to i64
  %1705 = add i64 %1704, 16
  %1706 = call i32 @i32_load(ptr noundef %1702, i64 noundef %1705)
  store i32 %1706, ptr %10, align 4, !tbaa !9
  %1707 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1707, ptr %6, align 4, !tbaa !9
  %1708 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1708, ptr %11, align 4, !tbaa !9
  %1709 = load i32, ptr %10, align 4, !tbaa !9
  %1710 = load i32, ptr %11, align 4, !tbaa !9
  %1711 = icmp eq i32 %1709, %1710
  %1712 = zext i1 %1711 to i32
  store i32 %1712, ptr %10, align 4, !tbaa !9
  %1713 = load i32, ptr %10, align 4, !tbaa !9
  %1714 = icmp ne i32 %1713, 0
  br i1 %1714, label %1715, label %1727

1715:                                             ; preds = %1695
  %1716 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1716, ptr %10, align 4, !tbaa !9
  %1717 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1717, ptr %6, align 4, !tbaa !9
  %1718 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1718, ptr %10, align 4, !tbaa !9
  %1719 = load ptr, ptr %3, align 8, !tbaa !5
  %1720 = getelementptr inbounds %struct.w2c_hermes, ptr %1719, i32 0, i32 6
  %1721 = load i32, ptr %10, align 4, !tbaa !9
  %1722 = zext i32 %1721 to i64
  %1723 = call i32 @i32_load(ptr noundef %1720, i64 noundef %1722)
  store i32 %1723, ptr %10, align 4, !tbaa !9
  store i32 16, ptr %11, align 4, !tbaa !9
  %1724 = load i32, ptr %11, align 4, !tbaa !9
  %1725 = load i32, ptr %10, align 4, !tbaa !9
  %1726 = add i32 %1725, %1724
  store i32 %1726, ptr %10, align 4, !tbaa !9
  br label %1746

1727:                                             ; preds = %1695
  %1728 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1728, ptr %10, align 4, !tbaa !9
  %1729 = load i32, ptr %10, align 4, !tbaa !9
  %1730 = icmp ne i32 %1729, 0
  %1731 = xor i1 %1730, true
  %1732 = zext i1 %1731 to i32
  store i32 %1732, ptr %10, align 4, !tbaa !9
  %1733 = load i32, ptr %10, align 4, !tbaa !9
  %1734 = icmp ne i32 %1733, 0
  br i1 %1734, label %1735, label %1736

1735:                                             ; preds = %1727
  br label %1816

1736:                                             ; preds = %1727
  %1737 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1737, ptr %10, align 4, !tbaa !9
  %1738 = load ptr, ptr %3, align 8, !tbaa !5
  %1739 = getelementptr inbounds %struct.w2c_hermes, ptr %1738, i32 0, i32 6
  %1740 = load i32, ptr %10, align 4, !tbaa !9
  %1741 = zext i32 %1740 to i64
  %1742 = call i32 @i32_load(ptr noundef %1739, i64 noundef %1741)
  store i32 %1742, ptr %10, align 4, !tbaa !9
  store i32 20, ptr %11, align 4, !tbaa !9
  %1743 = load i32, ptr %11, align 4, !tbaa !9
  %1744 = load i32, ptr %10, align 4, !tbaa !9
  %1745 = add i32 %1744, %1743
  store i32 %1745, ptr %10, align 4, !tbaa !9
  br label %1746

1746:                                             ; preds = %1736, %1715
  %1747 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1747, ptr %8, align 4, !tbaa !9
  %1748 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1748, ptr %10, align 4, !tbaa !9
  %1749 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1749, ptr %11, align 4, !tbaa !9
  %1750 = load ptr, ptr %3, align 8, !tbaa !5
  %1751 = getelementptr inbounds %struct.w2c_hermes, ptr %1750, i32 0, i32 6
  %1752 = load i32, ptr %11, align 4, !tbaa !9
  %1753 = zext i32 %1752 to i64
  %1754 = call i32 @i32_load(ptr noundef %1751, i64 noundef %1753)
  store i32 %1754, ptr %11, align 4, !tbaa !9
  %1755 = load i32, ptr %11, align 4, !tbaa !9
  %1756 = load ptr, ptr %3, align 8, !tbaa !5
  %1757 = getelementptr inbounds %struct.w2c_hermes, ptr %1756, i32 0, i32 7
  %1758 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1757, i32 0, i32 2
  %1759 = load i32, ptr %1758, align 4, !tbaa !11
  %1760 = icmp ult i32 %1755, %1759
  br i1 %1760, label %1761, label %1784

1761:                                             ; preds = %1746
  %1762 = load ptr, ptr %3, align 8, !tbaa !5
  %1763 = getelementptr inbounds %struct.w2c_hermes, ptr %1762, i32 0, i32 7
  %1764 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1763, i32 0, i32 0
  %1765 = load ptr, ptr %1764, align 8, !tbaa !17
  %1766 = load i32, ptr %11, align 4, !tbaa !9
  %1767 = zext i32 %1766 to i64
  %1768 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1765, i64 %1767
  %1769 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1768, i32 0, i32 1
  %1770 = load ptr, ptr %1769, align 8, !tbaa !18
  %1771 = icmp ne ptr %1770, null
  br i1 %1771, label %1772, label %1784

1772:                                             ; preds = %1761
  %1773 = load ptr, ptr @w2c_hermes_t3, align 8, !tbaa !5
  %1774 = load ptr, ptr %3, align 8, !tbaa !5
  %1775 = getelementptr inbounds %struct.w2c_hermes, ptr %1774, i32 0, i32 7
  %1776 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1775, i32 0, i32 0
  %1777 = load ptr, ptr %1776, align 8, !tbaa !17
  %1778 = load i32, ptr %11, align 4, !tbaa !9
  %1779 = zext i32 %1778 to i64
  %1780 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1777, i64 %1779
  %1781 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1780, i32 0, i32 0
  %1782 = load ptr, ptr %1781, align 8, !tbaa !20
  %1783 = call zeroext i1 @func_types_eq(ptr noundef %1773, ptr noundef %1782)
  br label %1784

1784:                                             ; preds = %1772, %1761, %1746
  %1785 = phi i1 [ false, %1761 ], [ false, %1746 ], [ %1783, %1772 ]
  %1786 = xor i1 %1785, true
  %1787 = xor i1 %1786, true
  %1788 = zext i1 %1787 to i32
  %1789 = sext i32 %1788 to i64
  %1790 = call i64 @llvm.expect.i64(i64 %1789, i64 1)
  %1791 = icmp ne i64 %1790, 0
  br i1 %1791, label %1794, label %1792

1792:                                             ; preds = %1784
  call void @wasm_rt_trap(i32 noundef 6) #7
  unreachable

1793:                                             ; No predecessors!
  br label %1794

1794:                                             ; preds = %1793, %1784
  %1795 = phi i1 [ true, %1784 ], [ false, %1793 ]
  %1796 = zext i1 %1795 to i32
  %1797 = load ptr, ptr %3, align 8, !tbaa !5
  %1798 = getelementptr inbounds %struct.w2c_hermes, ptr %1797, i32 0, i32 7
  %1799 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1798, i32 0, i32 0
  %1800 = load ptr, ptr %1799, align 8, !tbaa !17
  %1801 = load i32, ptr %11, align 4, !tbaa !9
  %1802 = zext i32 %1801 to i64
  %1803 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1800, i64 %1802
  %1804 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1803, i32 0, i32 1
  %1805 = load ptr, ptr %1804, align 8, !tbaa !18
  %1806 = load ptr, ptr %3, align 8, !tbaa !5
  %1807 = getelementptr inbounds %struct.w2c_hermes, ptr %1806, i32 0, i32 7
  %1808 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1807, i32 0, i32 0
  %1809 = load ptr, ptr %1808, align 8, !tbaa !17
  %1810 = load i32, ptr %11, align 4, !tbaa !9
  %1811 = zext i32 %1810 to i64
  %1812 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1809, i64 %1811
  %1813 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1812, i32 0, i32 2
  %1814 = load ptr, ptr %1813, align 8, !tbaa !21
  %1815 = load i32, ptr %10, align 4, !tbaa !9
  call void %1805(ptr noundef %1814, i32 noundef %1815)
  br label %1816

1816:                                             ; preds = %1794, %1735
  %1817 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1817, ptr %10, align 4, !tbaa !9
  %1818 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1818, ptr %11, align 4, !tbaa !9
  %1819 = load i32, ptr %10, align 4, !tbaa !9
  %1820 = load i32, ptr %11, align 4, !tbaa !9
  %1821 = icmp ne i32 %1819, %1820
  %1822 = zext i1 %1821 to i32
  store i32 %1822, ptr %10, align 4, !tbaa !9
  %1823 = load i32, ptr %10, align 4, !tbaa !9
  %1824 = icmp ne i32 %1823, 0
  br i1 %1824, label %1825, label %1826

1825:                                             ; preds = %1816
  br label %1695

1826:                                             ; preds = %1816
  %1827 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %1827, ptr %10, align 4, !tbaa !9
  %1828 = load ptr, ptr %3, align 8, !tbaa !5
  %1829 = getelementptr inbounds %struct.w2c_hermes, ptr %1828, i32 0, i32 6
  %1830 = load i32, ptr %10, align 4, !tbaa !9
  %1831 = zext i32 %1830 to i64
  %1832 = add i64 %1831, 5296
  %1833 = call i32 @i32_load(ptr noundef %1829, i64 noundef %1832)
  store i32 %1833, ptr %10, align 4, !tbaa !9
  %1834 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1834, ptr %6, align 4, !tbaa !9
  br label %1835

1835:                                             ; preds = %1826, %1675
  %1836 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %1836, ptr %10, align 4, !tbaa !9
  %1837 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1837, ptr %11, align 4, !tbaa !9
  %1838 = load ptr, ptr %3, align 8, !tbaa !5
  %1839 = getelementptr inbounds %struct.w2c_hermes, ptr %1838, i32 0, i32 6
  %1840 = load i32, ptr %10, align 4, !tbaa !9
  %1841 = zext i32 %1840 to i64
  %1842 = add i64 %1841, 5300
  %1843 = load i32, ptr %11, align 4, !tbaa !9
  call void @i32_store(ptr noundef %1839, i64 noundef %1842, i32 noundef %1843)
  %1844 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1844, ptr %10, align 4, !tbaa !9
  %1845 = load ptr, ptr %3, align 8, !tbaa !5
  %1846 = load i32, ptr %10, align 4, !tbaa !9
  call void @w2c_hermes_operator0x20delete0x28void0x2A0x29(ptr noundef %1845, i32 noundef %1846)
  br label %1847

1847:                                             ; preds = %1835, %1664
  %1848 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %1848, ptr %10, align 4, !tbaa !9
  %1849 = load ptr, ptr %3, align 8, !tbaa !5
  %1850 = load i32, ptr %10, align 4, !tbaa !9
  %1851 = call i32 @w2c_hermes_hermes0x3A0x3Avm0x3A0x3AHadesGC0x3A0x3A0x7EHadesGC0x280x29(ptr noundef %1849, i32 noundef %1850)
  store i32 %1851, ptr %10, align 4, !tbaa !9
  %1852 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %1852, ptr %10, align 4, !tbaa !9
  %1853 = load ptr, ptr %3, align 8, !tbaa !5
  %1854 = getelementptr inbounds %struct.w2c_hermes, ptr %1853, i32 0, i32 6
  %1855 = load i32, ptr %10, align 4, !tbaa !9
  %1856 = zext i32 %1855 to i64
  %1857 = add i64 %1856, 804
  %1858 = call i32 @i32_load(ptr noundef %1854, i64 noundef %1857)
  store i32 %1858, ptr %10, align 4, !tbaa !9
  %1859 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1859, ptr %5, align 4, !tbaa !9
  %1860 = load i32, ptr %10, align 4, !tbaa !9
  %1861 = icmp ne i32 %1860, 0
  %1862 = xor i1 %1861, true
  %1863 = zext i1 %1862 to i32
  store i32 %1863, ptr %10, align 4, !tbaa !9
  %1864 = load i32, ptr %10, align 4, !tbaa !9
  %1865 = icmp ne i32 %1864, 0
  br i1 %1865, label %1866, label %1867

1866:                                             ; preds = %1847
  br label %1968

1867:                                             ; preds = %1847
  %1868 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1868, ptr %10, align 4, !tbaa !9
  %1869 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1869, ptr %11, align 4, !tbaa !9
  %1870 = load ptr, ptr %3, align 8, !tbaa !5
  %1871 = getelementptr inbounds %struct.w2c_hermes, ptr %1870, i32 0, i32 6
  %1872 = load i32, ptr %11, align 4, !tbaa !9
  %1873 = zext i32 %1872 to i64
  %1874 = add i64 %1873, 4
  %1875 = call i32 @i32_load(ptr noundef %1871, i64 noundef %1874)
  store i32 %1875, ptr %11, align 4, !tbaa !9
  %1876 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %1876, ptr %6, align 4, !tbaa !9
  store i32 1, ptr %12, align 4, !tbaa !9
  %1877 = load i32, ptr %12, align 4, !tbaa !9
  %1878 = load i32, ptr %11, align 4, !tbaa !9
  %1879 = sub i32 %1878, %1877
  store i32 %1879, ptr %11, align 4, !tbaa !9
  %1880 = load ptr, ptr %3, align 8, !tbaa !5
  %1881 = getelementptr inbounds %struct.w2c_hermes, ptr %1880, i32 0, i32 6
  %1882 = load i32, ptr %10, align 4, !tbaa !9
  %1883 = zext i32 %1882 to i64
  %1884 = add i64 %1883, 4
  %1885 = load i32, ptr %11, align 4, !tbaa !9
  call void @i32_store(ptr noundef %1881, i64 noundef %1884, i32 noundef %1885)
  %1886 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1886, ptr %10, align 4, !tbaa !9
  %1887 = load i32, ptr %10, align 4, !tbaa !9
  %1888 = icmp ne i32 %1887, 0
  br i1 %1888, label %1889, label %1890

1889:                                             ; preds = %1867
  br label %1968

1890:                                             ; preds = %1867
  %1891 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1891, ptr %10, align 4, !tbaa !9
  %1892 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1892, ptr %11, align 4, !tbaa !9
  %1893 = load ptr, ptr %3, align 8, !tbaa !5
  %1894 = getelementptr inbounds %struct.w2c_hermes, ptr %1893, i32 0, i32 6
  %1895 = load i32, ptr %11, align 4, !tbaa !9
  %1896 = zext i32 %1895 to i64
  %1897 = call i32 @i32_load(ptr noundef %1894, i64 noundef %1896)
  store i32 %1897, ptr %11, align 4, !tbaa !9
  %1898 = load ptr, ptr %3, align 8, !tbaa !5
  %1899 = getelementptr inbounds %struct.w2c_hermes, ptr %1898, i32 0, i32 6
  %1900 = load i32, ptr %11, align 4, !tbaa !9
  %1901 = zext i32 %1900 to i64
  %1902 = add i64 %1901, 8
  %1903 = call i32 @i32_load(ptr noundef %1899, i64 noundef %1902)
  store i32 %1903, ptr %11, align 4, !tbaa !9
  %1904 = load i32, ptr %11, align 4, !tbaa !9
  %1905 = load ptr, ptr %3, align 8, !tbaa !5
  %1906 = getelementptr inbounds %struct.w2c_hermes, ptr %1905, i32 0, i32 7
  %1907 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1906, i32 0, i32 2
  %1908 = load i32, ptr %1907, align 4, !tbaa !11
  %1909 = icmp ult i32 %1904, %1908
  br i1 %1909, label %1910, label %1933

1910:                                             ; preds = %1890
  %1911 = load ptr, ptr %3, align 8, !tbaa !5
  %1912 = getelementptr inbounds %struct.w2c_hermes, ptr %1911, i32 0, i32 7
  %1913 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1912, i32 0, i32 0
  %1914 = load ptr, ptr %1913, align 8, !tbaa !17
  %1915 = load i32, ptr %11, align 4, !tbaa !9
  %1916 = zext i32 %1915 to i64
  %1917 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1914, i64 %1916
  %1918 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1917, i32 0, i32 1
  %1919 = load ptr, ptr %1918, align 8, !tbaa !18
  %1920 = icmp ne ptr %1919, null
  br i1 %1920, label %1921, label %1933

1921:                                             ; preds = %1910
  %1922 = load ptr, ptr @w2c_hermes_t3, align 8, !tbaa !5
  %1923 = load ptr, ptr %3, align 8, !tbaa !5
  %1924 = getelementptr inbounds %struct.w2c_hermes, ptr %1923, i32 0, i32 7
  %1925 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1924, i32 0, i32 0
  %1926 = load ptr, ptr %1925, align 8, !tbaa !17
  %1927 = load i32, ptr %11, align 4, !tbaa !9
  %1928 = zext i32 %1927 to i64
  %1929 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1926, i64 %1928
  %1930 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1929, i32 0, i32 0
  %1931 = load ptr, ptr %1930, align 8, !tbaa !20
  %1932 = call zeroext i1 @func_types_eq(ptr noundef %1922, ptr noundef %1931)
  br label %1933

1933:                                             ; preds = %1921, %1910, %1890
  %1934 = phi i1 [ false, %1910 ], [ false, %1890 ], [ %1932, %1921 ]
  %1935 = xor i1 %1934, true
  %1936 = xor i1 %1935, true
  %1937 = zext i1 %1936 to i32
  %1938 = sext i32 %1937 to i64
  %1939 = call i64 @llvm.expect.i64(i64 %1938, i64 1)
  %1940 = icmp ne i64 %1939, 0
  br i1 %1940, label %1943, label %1941

1941:                                             ; preds = %1933
  call void @wasm_rt_trap(i32 noundef 6) #7
  unreachable

1942:                                             ; No predecessors!
  br label %1943

1943:                                             ; preds = %1942, %1933
  %1944 = phi i1 [ true, %1933 ], [ false, %1942 ]
  %1945 = zext i1 %1944 to i32
  %1946 = load ptr, ptr %3, align 8, !tbaa !5
  %1947 = getelementptr inbounds %struct.w2c_hermes, ptr %1946, i32 0, i32 7
  %1948 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1947, i32 0, i32 0
  %1949 = load ptr, ptr %1948, align 8, !tbaa !17
  %1950 = load i32, ptr %11, align 4, !tbaa !9
  %1951 = zext i32 %1950 to i64
  %1952 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1949, i64 %1951
  %1953 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1952, i32 0, i32 1
  %1954 = load ptr, ptr %1953, align 8, !tbaa !18
  %1955 = load ptr, ptr %3, align 8, !tbaa !5
  %1956 = getelementptr inbounds %struct.w2c_hermes, ptr %1955, i32 0, i32 7
  %1957 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1956, i32 0, i32 0
  %1958 = load ptr, ptr %1957, align 8, !tbaa !17
  %1959 = load i32, ptr %11, align 4, !tbaa !9
  %1960 = zext i32 %1959 to i64
  %1961 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1958, i64 %1960
  %1962 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1961, i32 0, i32 2
  %1963 = load ptr, ptr %1962, align 8, !tbaa !21
  %1964 = load i32, ptr %10, align 4, !tbaa !9
  call void %1954(ptr noundef %1963, i32 noundef %1964)
  %1965 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1965, ptr %10, align 4, !tbaa !9
  %1966 = load ptr, ptr %3, align 8, !tbaa !5
  %1967 = load i32, ptr %10, align 4, !tbaa !9
  call void @w2c_hermes_std0x3A0x3A_0x5F20x3A0x3A_0x5Fshared_weak_count0x3A0x3A_0x5Frelease_weak0x280x29(ptr noundef %1966, i32 noundef %1967)
  br label %1968

1968:                                             ; preds = %1943, %1889, %1866
  %1969 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %1969, ptr %10, align 4, !tbaa !9
  store i32 12, ptr %11, align 4, !tbaa !9
  %1970 = load i32, ptr %11, align 4, !tbaa !9
  %1971 = load i32, ptr %10, align 4, !tbaa !9
  %1972 = add i32 %1971, %1970
  store i32 %1972, ptr %10, align 4, !tbaa !9
  %1973 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1973, ptr %5, align 4, !tbaa !9
  %1974 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %1974, ptr %10, align 4, !tbaa !9
  %1975 = load ptr, ptr %3, align 8, !tbaa !5
  %1976 = getelementptr inbounds %struct.w2c_hermes, ptr %1975, i32 0, i32 6
  %1977 = load i32, ptr %10, align 4, !tbaa !9
  %1978 = zext i32 %1977 to i64
  %1979 = add i64 %1978, 736
  %1980 = call i32 @i32_load(ptr noundef %1976, i64 noundef %1979)
  store i32 %1980, ptr %10, align 4, !tbaa !9
  %1981 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1981, ptr %6, align 4, !tbaa !9
  %1982 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %1982, ptr %11, align 4, !tbaa !9
  store i32 748, ptr %12, align 4, !tbaa !9
  %1983 = load i32, ptr %12, align 4, !tbaa !9
  %1984 = load i32, ptr %11, align 4, !tbaa !9
  %1985 = add i32 %1984, %1983
  store i32 %1985, ptr %11, align 4, !tbaa !9
  %1986 = load i32, ptr %10, align 4, !tbaa !9
  %1987 = load i32, ptr %11, align 4, !tbaa !9
  %1988 = icmp ne i32 %1986, %1987
  %1989 = zext i1 %1988 to i32
  store i32 %1989, ptr %10, align 4, !tbaa !9
  %1990 = load i32, ptr %10, align 4, !tbaa !9
  %1991 = icmp ne i32 %1990, 0
  br i1 %1991, label %1992, label %1996

1992:                                             ; preds = %1968
  %1993 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1993, ptr %10, align 4, !tbaa !9
  %1994 = load ptr, ptr %3, align 8, !tbaa !5
  %1995 = load i32, ptr %10, align 4, !tbaa !9
  call void @w2c_hermes_dlfree(ptr noundef %1994, i32 noundef %1995)
  br label %1996

1996:                                             ; preds = %1992, %1968
  %1997 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1997, ptr %10, align 4, !tbaa !9
  %1998 = load ptr, ptr %3, align 8, !tbaa !5
  %1999 = load i32, ptr %10, align 4, !tbaa !9
  %2000 = call i32 @w2c_hermes_hermes0x3A0x3Avm0x3A0x3AGCBase0x3A0x3AGCCallbacks0x3A0x3A0x7EGCCallbacks0x280x29(ptr noundef %1998, i32 noundef %1999)
  store i32 %2000, ptr %10, align 4, !tbaa !9
  %2001 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %2001, ptr %10, align 4, !tbaa !9
  %2002 = load i32, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, 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
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #6
  ret i32 %2002
}

declare void @w2c_hermes_hermes0x3A0x3Avm0x3A0x3AHadesGC0x3A0x3AfinalizeAll0x280x29(ptr noundef, i32 noundef) #1

declare i32 @w2c_hermes_hermes0x3A0x3Avm0x3A0x3AGCBase0x3A0x3AIDTracker0x3A0x3AhasNativeIDs0x280x29(ptr noundef, i32 noundef) #1

declare void @w2c_hermes_hermes0x3A0x3Aoscompat0x3A0x3Avm_free0x28void0x2A0x2C0x20unsigned0x20long0x29(ptr noundef, i32 noundef, i32 noundef) #1

declare i32 @w2c_hermes_hermes0x3A0x3Avm0x3A0x3ACodeCoverageProfiler0x3A0x3A0x7ECodeCoverageProfiler0x280x29(ptr noundef, i32 noundef) #1

declare i32 @w2c_hermes_std0x3A0x3A_0x5F20x3A0x3A_0x5Fdeque_base0x3Chermes0x3A0x3Avm0x3A0x3ACallable0x2A0x2C0x20std0x3A0x3A_0x5F20x3A0x3Aallocator0x3Chermes0x3A0x3Avm0x3A0x3ACallable0x2A0x3E0x3E0x3A0x3A0x7E_0x5Fdeque_base0x280x29(ptr noundef, i32 noundef) #1

declare i32 @w2c_hermes_hermes0x3A0x3Avm0x3A0x3AJSLibStorage0x3A0x3A0x7EJSLibStorage0x280x29(ptr noundef, i32 noundef) #1

declare i32 @w2c_hermes_hermes0x3A0x3Avm0x3A0x3AHadesGC0x3A0x3A0x7EHadesGC0x280x29(ptr noundef, i32 noundef) #1

declare i32 @w2c_hermes_hermes0x3A0x3Avm0x3A0x3AGCBase0x3A0x3AGCCallbacks0x3A0x3A0x7EGCCallbacks0x280x29(ptr noundef, i32 noundef) #1

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "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 = { 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 #4 = { nocallback nofree nosync nounwind willreturn memory(none) }
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, !10, i64 92}
!12 = !{!"w2c_hermes", !6, i64 0, !6, i64 8, !6, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !13, i64 40, !16, i64 80}
!13 = !{!"", !6, i64 0, !14, i64 8, !14, i64 16, !14, i64 24, !15, i64 32}
!14 = !{!"long", !7, i64 0}
!15 = !{!"_Bool", !7, i64 0}
!16 = !{!"", !6, i64 0, !10, i64 8, !10, i64 12}
!17 = !{!12, !6, i64 80}
!18 = !{!19, !6, i64 8}
!19 = !{!"", !6, i64 0, !6, i64 8, !6, i64 16}
!20 = !{!19, !6, i64 0}
!21 = !{!19, !6, i64 16}


; 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"

%struct.wasm_rt_funcref_t = type { ptr, ptr, ptr }

@w2c_hermes_t0 = external local_unnamed_addr constant ptr, align 8
@w2c_hermes_t3 = external local_unnamed_addr constant ptr, align 8

declare void @w2c_hermes_operator0x20delete0x28void0x2A0x29(ptr 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 void @i32_store(ptr noundef, i64 noundef, i32 noundef) local_unnamed_addr #2

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden zeroext i1 @func_types_eq(ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

declare void @w2c_hermes_dlfree(ptr noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local i32 @w2c_hermes_hermes0x3A0x3Avm0x3A0x3ARuntimeModule0x3A0x3A0x7ERuntimeModule0x280x29(ptr noundef, i32 noundef) local_unnamed_addr #3

declare void @w2c_hermes_std0x3A0x3A_0x5F20x3A0x3A_0x5Fshared_weak_count0x3A0x3A_0x5Frelease_weak0x280x29(ptr noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @w2c_hermes_hermes0x3A0x3Avm0x3A0x3ARuntimeModule0x3A0x3AprepareForRuntimeShutdown0x280x29(ptr noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare dso_local void @w2c_hermes_hermes0x3A0x3Avm0x3A0x3ATimeLimitMonitor0x3A0x3AunwatchRuntime0x28hermes0x3A0x3Avm0x3A0x3ARuntime0x260x29(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @w2c_hermes_hermes0x3A0x3Avm0x3A0x3ARuntime0x3A0x3A0x7ERuntime0x280x29(ptr noundef %0, i32 noundef returned %1) local_unnamed_addr #3 {
  %3 = getelementptr inbounds i8, ptr %0, i64 40
  %4 = zext i32 %1 to i64
  %5 = add nuw nsw i64 %4, 12
  tail call void @i32_store(ptr noundef nonnull %3, i64 noundef %5, i32 noundef 277684)
  tail call void @i32_store(ptr noundef nonnull %3, i64 noundef %4, i32 noundef 277616)
  %6 = add i32 %1, 808
  tail call void @w2c_hermes_hermes0x3A0x3Avm0x3A0x3AHadesGC0x3A0x3AfinalizeAll0x280x29(ptr noundef %0, i32 noundef %6) #4
  %7 = add i32 %1, 1208
  %8 = tail call i32 @w2c_hermes_hermes0x3A0x3Avm0x3A0x3AGCBase0x3A0x3AIDTracker0x3A0x3AhasNativeIDs0x280x29(ptr noundef %0, i32 noundef %7) #4
  %.not = icmp eq i32 %8, 0
  br i1 %.not, label %9, label %82

9:                                                ; preds = %2
  %10 = add nuw nsw i64 %4, 5640
  %11 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %10)
  %12 = add nuw nsw i64 %4, 5804
  %13 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %12)
  %14 = zext i32 %11 to i64
  %15 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %14)
  %16 = zext i32 %15 to i64
  %17 = add nuw nsw i64 %16, 28
  %18 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %17)
  %19 = getelementptr inbounds i8, ptr %0, i64 80
  %20 = getelementptr inbounds i8, ptr %0, i64 92
  %21 = load i32, ptr %20, align 4, !tbaa !5
  %22 = icmp ult i32 %18, %21
  br i1 %22, label %23, label %.critedge, !prof !15

23:                                               ; preds = %9
  %24 = load ptr, ptr %19, align 8, !tbaa !16
  %25 = zext i32 %18 to i64
  %26 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %24, i64 %25
  %27 = getelementptr inbounds i8, ptr %26, i64 8
  %28 = load ptr, ptr %27, align 8, !tbaa !17
  %.not892 = icmp eq ptr %28, null
  br i1 %.not892, label %.critedge, label %29, !prof !19

29:                                               ; preds = %23
  %30 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !20
  %31 = load ptr, ptr %26, align 8, !tbaa !21
  %32 = tail call zeroext i1 @func_types_eq(ptr noundef %30, ptr noundef %31)
  br i1 %32, label %33, label %.critedge, !prof !15

.critedge:                                        ; preds = %23, %9, %29
  tail call void @wasm_rt_trap(i32 noundef 6) #5
  unreachable

33:                                               ; preds = %29
  %34 = load ptr, ptr %19, align 8, !tbaa !16
  %35 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %34, i64 %25
  %36 = getelementptr inbounds i8, ptr %35, i64 8
  %37 = load ptr, ptr %36, align 8, !tbaa !17
  %38 = getelementptr inbounds i8, ptr %35, i64 16
  %39 = load ptr, ptr %38, align 8, !tbaa !22
  tail call void %37(ptr noundef %39, i32 noundef %11, i32 noundef %13) #4
  %40 = add i32 %1, 5624
  %41 = zext i32 %40 to i64
  %42 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %41)
  %.not893 = icmp eq i32 %42, 0
  br i1 %.not893, label %73, label %43

43:                                               ; preds = %33
  %44 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %10)
  %45 = add nuw nsw i64 %4, 5620
  %46 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %45)
  %47 = zext i32 %44 to i64
  %48 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %47)
  %49 = zext i32 %48 to i64
  %50 = add nuw nsw i64 %49, 4
  %51 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %50)
  %52 = load i32, ptr %20, align 4, !tbaa !5
  %53 = icmp ult i32 %51, %52
  br i1 %53, label %54, label %.critedge944, !prof !15

54:                                               ; preds = %43
  %55 = load ptr, ptr %19, align 8, !tbaa !16
  %56 = zext i32 %51 to i64
  %57 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %55, i64 %56
  %58 = getelementptr inbounds i8, ptr %57, i64 8
  %59 = load ptr, ptr %58, align 8, !tbaa !17
  %.not894 = icmp eq ptr %59, null
  br i1 %.not894, label %.critedge944, label %60, !prof !19

60:                                               ; preds = %54
  %61 = load ptr, ptr %57, align 8, !tbaa !21
  %62 = tail call zeroext i1 @func_types_eq(ptr noundef %30, ptr noundef %61)
  br i1 %62, label %63, label %.critedge944, !prof !15

.critedge944:                                     ; preds = %54, %43, %60
  tail call void @wasm_rt_trap(i32 noundef 6) #5
  unreachable

63:                                               ; preds = %60
  %64 = load ptr, ptr %19, align 8, !tbaa !16
  %65 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %64, i64 %56
  %66 = getelementptr inbounds i8, ptr %65, i64 8
  %67 = load ptr, ptr %66, align 8, !tbaa !17
  %68 = getelementptr inbounds i8, ptr %65, i64 16
  %69 = load ptr, ptr %68, align 8, !tbaa !22
  tail call void %67(ptr noundef %69, i32 noundef %44, i32 noundef %46) #4
  %70 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %45)
  %71 = add nuw nsw i64 %4, 5624
  %72 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %71)
  tail call void @w2c_hermes_hermes0x3A0x3Aoscompat0x3A0x3Avm_free0x28void0x2A0x2C0x20unsigned0x20long0x29(ptr noundef nonnull %0, i32 noundef %70, i32 noundef %72) #4
  br label %73

73:                                               ; preds = %63, %33
  %74 = add i32 %1, 5612
  %75 = zext i32 %74 to i64
  %76 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %75)
  %77 = add i32 %1, 5608
  %78 = icmp eq i32 %76, %77
  br i1 %78, label %.loopexit969, label %.preheader968

.preheader968:                                    ; preds = %73, %.preheader968
  %.0835 = phi i32 [ %81, %.preheader968 ], [ %76, %73 ]
  tail call void @w2c_hermes_hermes0x3A0x3Avm0x3A0x3ARuntimeModule0x3A0x3AprepareForRuntimeShutdown0x280x29(ptr noundef %0, i32 noundef %.0835)
  %79 = zext i32 %.0835 to i64
  %80 = add nuw nsw i64 %79, 4
  %81 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %80)
  %.not895 = icmp eq i32 %81, %77
  br i1 %.not895, label %.loopexit969, label %.preheader968

82:                                               ; preds = %2
  tail call void @w2c_hermes_0x5F_assert_fail(ptr noundef %0, i32 noundef 187120, i32 noundef 60884, i32 noundef 430, i32 noundef 95736) #4
  tail call void @wasm_rt_trap(i32 noundef 5) #5
  unreachable

.loopexit969:                                     ; preds = %.preheader968, %73
  %83 = add nuw nsw i64 %4, 5353
  %84 = tail call i32 @i32_load8_u(ptr noundef nonnull %3, i64 noundef %83)
  %.not896 = icmp eq i32 %84, 0
  br i1 %.not896, label %85, label %122

85:                                               ; preds = %.loopexit969
  %86 = zext i32 %77 to i64
  %87 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %86)
  %.not897 = icmp eq i32 %77, %87
  br i1 %.not897, label %.loopexit, label %.preheader967

.preheader967:                                    ; preds = %85, %.preheader967
  %.1836 = phi i32 [ %89, %.preheader967 ], [ %87, %85 ]
  %88 = tail call i32 @w2c_hermes_hermes0x3A0x3Avm0x3A0x3ARuntimeModule0x3A0x3A0x7ERuntimeModule0x280x29(ptr noundef %0, i32 noundef %.1836)
  tail call void @w2c_hermes_operator0x20delete0x28void0x2A0x29(ptr noundef %0, i32 noundef %88) #4
  %89 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %86)
  %.not898 = icmp eq i32 %89, %77
  br i1 %.not898, label %.loopexit, label %.preheader967

.loopexit:                                        ; preds = %.preheader967, %85
  %90 = add nuw nsw i64 %4, 800
  %91 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %90)
  %.not899 = icmp eq i32 %91, 0
  br i1 %.not899, label %93, label %92

92:                                               ; preds = %.loopexit
  tail call void @w2c_hermes_hermes0x3A0x3Avm0x3A0x3ATimeLimitMonitor0x3A0x3AunwatchRuntime0x28hermes0x3A0x3Avm0x3A0x3ARuntime0x260x29(ptr noundef %0, i32 noundef %91, i32 noundef %1)
  br label %93

93:                                               ; preds = %92, %.loopexit
  %94 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %10)
  %95 = zext i32 %94 to i64
  %96 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %95)
  %97 = zext i32 %96 to i64
  %98 = add nuw nsw i64 %97, 4
  %99 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %98)
  %100 = load i32, ptr %20, align 4, !tbaa !5
  %101 = icmp ult i32 %99, %100
  br i1 %101, label %102, label %.critedge946, !prof !15

102:                                              ; preds = %93
  %103 = load ptr, ptr %19, align 8, !tbaa !16
  %104 = zext i32 %99 to i64
  %105 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %103, i64 %104
  %106 = getelementptr inbounds i8, ptr %105, i64 8
  %107 = load ptr, ptr %106, align 8, !tbaa !17
  %.not900 = icmp eq ptr %107, null
  br i1 %.not900, label %.critedge946, label %108, !prof !19

108:                                              ; preds = %102
  %109 = load ptr, ptr %105, align 8, !tbaa !21
  %110 = tail call zeroext i1 @func_types_eq(ptr noundef %30, ptr noundef %109)
  br i1 %110, label %111, label %.critedge946, !prof !15

.critedge946:                                     ; preds = %102, %93, %108
  tail call void @wasm_rt_trap(i32 noundef 6) #5
  unreachable

111:                                              ; preds = %108
  %112 = load ptr, ptr %19, align 8, !tbaa !16
  %113 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %112, i64 %104
  %114 = getelementptr inbounds i8, ptr %113, i64 8
  %115 = load ptr, ptr %114, align 8, !tbaa !17
  %116 = getelementptr inbounds i8, ptr %113, i64 16
  %117 = load ptr, ptr %116, align 8, !tbaa !22
  tail call void %115(ptr noundef %117, i32 noundef %94, i32 noundef %1) #4
  %118 = add i32 %1, 5848
  %119 = zext i32 %118 to i64
  %120 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %119)
  %121 = add i32 %1, 5832
  %.not901 = icmp eq i32 %120, %121
  br i1 %.not901, label %124, label %123

122:                                              ; preds = %.loopexit969
  tail call void @w2c_hermes_0x5F_assert_fail(ptr noundef %0, i32 noundef 178360, i32 noundef 60884, i32 noundef 444, i32 noundef 95736) #4
  tail call void @wasm_rt_trap(i32 noundef 5) #5
  unreachable

123:                                              ; preds = %111
  %.not902 = icmp eq i32 %120, 0
  br i1 %.not902, label %149, label %124

124:                                              ; preds = %123, %111
  %.sink970 = phi i32 [ 16, %111 ], [ 20, %123 ]
  %125 = zext i32 %120 to i64
  %126 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %125)
  %127 = add i32 %126, %.sink970
  %128 = zext i32 %127 to i64
  %129 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %128)
  %130 = load i32, ptr %20, align 4, !tbaa !5
  %131 = icmp ult i32 %129, %130
  br i1 %131, label %132, label %.critedge948, !prof !15

132:                                              ; preds = %124
  %133 = load ptr, ptr %19, align 8, !tbaa !16
  %134 = zext i32 %129 to i64
  %135 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %133, i64 %134
  %136 = getelementptr inbounds i8, ptr %135, i64 8
  %137 = load ptr, ptr %136, align 8, !tbaa !17
  %.not903 = icmp eq ptr %137, null
  br i1 %.not903, label %.critedge948, label %138, !prof !19

138:                                              ; preds = %132
  %139 = load ptr, ptr @w2c_hermes_t3, align 8, !tbaa !20
  %140 = load ptr, ptr %135, align 8, !tbaa !21
  %141 = tail call zeroext i1 @func_types_eq(ptr noundef %139, ptr noundef %140)
  br i1 %141, label %142, label %.critedge948, !prof !15

.critedge948:                                     ; preds = %132, %124, %138
  tail call void @wasm_rt_trap(i32 noundef 6) #5
  unreachable

142:                                              ; preds = %138
  %143 = load ptr, ptr %19, align 8, !tbaa !16
  %144 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %143, i64 %134
  %145 = getelementptr inbounds i8, ptr %144, i64 8
  %146 = load ptr, ptr %145, align 8, !tbaa !17
  %147 = getelementptr inbounds i8, ptr %144, i64 16
  %148 = load ptr, ptr %147, align 8, !tbaa !22
  tail call void %146(ptr noundef %148, i32 noundef %120) #4
  br label %149

149:                                              ; preds = %123, %142
  %150 = add nuw nsw i64 %4, 5816
  %151 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %150)
  %.not904 = icmp eq i32 %151, 0
  br i1 %.not904, label %195, label %152

152:                                              ; preds = %149
  %153 = add i32 %1, 5820
  %154 = zext i32 %153 to i64
  %155 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %154)
  %.not905 = icmp eq i32 %155, %151
  br i1 %.not905, label %193, label %.preheader966

.preheader966:                                    ; preds = %152
  %156 = load ptr, ptr @w2c_hermes_t3, align 8
  br label %157

157:                                              ; preds = %.preheader966, %190
  %.1841 = phi i32 [ %158, %190 ], [ %155, %.preheader966 ]
  %158 = add i32 %.1841, -8
  %159 = zext i32 %158 to i64
  %160 = add nuw nsw i64 %159, 4
  %161 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %160)
  %.not906 = icmp eq i32 %161, 0
  br i1 %.not906, label %190, label %162

162:                                              ; preds = %157
  %163 = zext i32 %161 to i64
  %164 = add nuw nsw i64 %163, 4
  %165 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %164)
  %166 = add i32 %165, -1
  tail call void @i32_store(ptr noundef nonnull %3, i64 noundef %164, i32 noundef %166)
  %.not907 = icmp eq i32 %165, 0
  br i1 %.not907, label %167, label %190

167:                                              ; preds = %162
  %168 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %163)
  %169 = zext i32 %168 to i64
  %170 = add nuw nsw i64 %169, 8
  %171 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %170)
  %172 = load i32, ptr %20, align 4, !tbaa !5
  %173 = icmp ult i32 %171, %172
  br i1 %173, label %174, label %.critedge950, !prof !15

174:                                              ; preds = %167
  %175 = load ptr, ptr %19, align 8, !tbaa !16
  %176 = zext i32 %171 to i64
  %177 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %175, i64 %176
  %178 = getelementptr inbounds i8, ptr %177, i64 8
  %179 = load ptr, ptr %178, align 8, !tbaa !17
  %.not908 = icmp eq ptr %179, null
  br i1 %.not908, label %.critedge950, label %180, !prof !19

180:                                              ; preds = %174
  %181 = load ptr, ptr %177, align 8, !tbaa !21
  %182 = tail call zeroext i1 @func_types_eq(ptr noundef %156, ptr noundef %181)
  br i1 %182, label %183, label %.critedge950, !prof !15

.critedge950:                                     ; preds = %174, %167, %180
  tail call void @wasm_rt_trap(i32 noundef 6) #5
  unreachable

183:                                              ; preds = %180
  %184 = load ptr, ptr %19, align 8, !tbaa !16
  %185 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %184, i64 %176
  %186 = getelementptr inbounds i8, ptr %185, i64 8
  %187 = load ptr, ptr %186, align 8, !tbaa !17
  %188 = getelementptr inbounds i8, ptr %185, i64 16
  %189 = load ptr, ptr %188, align 8, !tbaa !22
  tail call void %187(ptr noundef %189, i32 noundef %161) #4
  tail call void @w2c_hermes_std0x3A0x3A_0x5F20x3A0x3A_0x5Fshared_weak_count0x3A0x3A_0x5Frelease_weak0x280x29(ptr noundef nonnull %0, i32 noundef %161) #4
  br label %190

190:                                              ; preds = %162, %157, %183
  %.not909 = icmp eq i32 %158, %151
  br i1 %.not909, label %191, label %157

191:                                              ; preds = %190
  %192 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %150)
  br label %193

193:                                              ; preds = %191, %152
  %.2837 = phi i32 [ %192, %191 ], [ %151, %152 ]
  %194 = add nuw nsw i64 %4, 5820
  tail call void @i32_store(ptr noundef nonnull %3, i64 noundef %194, i32 noundef %151)
  tail call void @w2c_hermes_operator0x20delete0x28void0x2A0x29(ptr noundef %0, i32 noundef %.2837) #4
  br label %195

195:                                              ; preds = %193, %149
  %196 = add nuw nsw i64 %4, 5808
  %197 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %196)
  tail call void @i32_store(ptr noundef nonnull %3, i64 noundef %196, i32 noundef 0)
  %.not910 = icmp eq i32 %197, 0
  br i1 %.not910, label %200, label %198

198:                                              ; preds = %195
  %199 = tail call i32 @w2c_hermes_hermes0x3A0x3Avm0x3A0x3ACodeCoverageProfiler0x3A0x3A0x7ECodeCoverageProfiler0x280x29(ptr noundef %0, i32 noundef %197) #4
  tail call void @w2c_hermes_operator0x20delete0x28void0x2A0x29(ptr noundef %0, i32 noundef %199) #4
  br label %200

200:                                              ; preds = %198, %195
  %201 = add i32 %1, 5776
  %202 = tail call i32 @w2c_hermes_std0x3A0x3A_0x5F20x3A0x3A_0x5Fdeque_base0x3Chermes0x3A0x3Avm0x3A0x3ACallable0x2A0x2C0x20std0x3A0x3A_0x5F20x3A0x3Aallocator0x3Chermes0x3A0x3Avm0x3A0x3ACallable0x2A0x3E0x3E0x3A0x3A0x7E_0x5Fdeque_base0x280x29(ptr noundef %0, i32 noundef %201) #4
  %203 = add nuw nsw i64 %4, 5760
  %204 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %203)
  %.not911 = icmp eq i32 %204, 0
  br i1 %.not911, label %208, label %205

205:                                              ; preds = %200
  %206 = add i32 %1, 5764
  %207 = zext i32 %206 to i64
  tail call void @i32_store(ptr noundef nonnull %3, i64 noundef %207, i32 noundef %204)
  tail call void @w2c_hermes_operator0x20delete0x28void0x2A0x29(ptr noundef %0, i32 noundef %204) #4
  br label %208

208:                                              ; preds = %205, %200
  %209 = add nuw nsw i64 %4, 5748
  %210 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %209)
  %.not912 = icmp eq i32 %210, 0
  br i1 %.not912, label %214, label %211

211:                                              ; preds = %208
  %212 = add i32 %1, 5752
  %213 = zext i32 %212 to i64
  tail call void @i32_store(ptr noundef nonnull %3, i64 noundef %213, i32 noundef %210)
  tail call void @w2c_hermes_operator0x20delete0x28void0x2A0x29(ptr noundef %0, i32 noundef %210) #4
  br label %214

214:                                              ; preds = %211, %208
  %215 = add nuw nsw i64 %4, 5736
  %216 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %215)
  %.not913 = icmp eq i32 %216, 0
  br i1 %.not913, label %220, label %217

217:                                              ; preds = %214
  %218 = add i32 %1, 5740
  %219 = zext i32 %218 to i64
  tail call void @i32_store(ptr noundef nonnull %3, i64 noundef %219, i32 noundef %216)
  tail call void @w2c_hermes_operator0x20delete0x28void0x2A0x29(ptr noundef %0, i32 noundef %216) #4
  br label %220

220:                                              ; preds = %217, %214
  %221 = add i32 %1, 5644
  %222 = zext i32 %221 to i64
  %223 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %222)
  %.not914 = icmp eq i32 %223, 0
  br i1 %.not914, label %253, label %224

224:                                              ; preds = %220
  %225 = zext i32 %223 to i64
  %226 = add nuw nsw i64 %225, 4
  %227 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %226)
  %228 = add i32 %227, -1
  tail call void @i32_store(ptr noundef nonnull %3, i64 noundef %226, i32 noundef %228)
  %.not915 = icmp eq i32 %227, 0
  br i1 %.not915, label %229, label %253

229:                                              ; preds = %224
  %230 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %225)
  %231 = zext i32 %230 to i64
  %232 = add nuw nsw i64 %231, 8
  %233 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %232)
  %234 = load i32, ptr %20, align 4, !tbaa !5
  %235 = icmp ult i32 %233, %234
  br i1 %235, label %236, label %.critedge952, !prof !15

236:                                              ; preds = %229
  %237 = load ptr, ptr %19, align 8, !tbaa !16
  %238 = zext i32 %233 to i64
  %239 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %237, i64 %238
  %240 = getelementptr inbounds i8, ptr %239, i64 8
  %241 = load ptr, ptr %240, align 8, !tbaa !17
  %.not916 = icmp eq ptr %241, null
  br i1 %.not916, label %.critedge952, label %242, !prof !19

242:                                              ; preds = %236
  %243 = load ptr, ptr @w2c_hermes_t3, align 8, !tbaa !20
  %244 = load ptr, ptr %239, align 8, !tbaa !21
  %245 = tail call zeroext i1 @func_types_eq(ptr noundef %243, ptr noundef %244)
  br i1 %245, label %246, label %.critedge952, !prof !15

.critedge952:                                     ; preds = %236, %229, %242
  tail call void @wasm_rt_trap(i32 noundef 6) #5
  unreachable

246:                                              ; preds = %242
  %247 = load ptr, ptr %19, align 8, !tbaa !16
  %248 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %247, i64 %238
  %249 = getelementptr inbounds i8, ptr %248, i64 8
  %250 = load ptr, ptr %249, align 8, !tbaa !17
  %251 = getelementptr inbounds i8, ptr %248, i64 16
  %252 = load ptr, ptr %251, align 8, !tbaa !22
  tail call void %250(ptr noundef %252, i32 noundef %223) #4
  tail call void @w2c_hermes_std0x3A0x3A_0x5F20x3A0x3A_0x5Fshared_weak_count0x3A0x3A_0x5Frelease_weak0x280x29(ptr noundef nonnull %0, i32 noundef %223) #4
  br label %253

253:                                              ; preds = %224, %220, %246
  %254 = add nuw nsw i64 %4, 5592
  %255 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %254)
  tail call void @i32_store(ptr noundef nonnull %3, i64 noundef %254, i32 noundef 0)
  %.not917 = icmp eq i32 %255, 0
  br i1 %.not917, label %258, label %256

256:                                              ; preds = %253
  %257 = tail call i32 @w2c_hermes_hermes0x3A0x3Avm0x3A0x3AJSLibStorage0x3A0x3A0x7EJSLibStorage0x280x29(ptr noundef %0, i32 noundef %255) #4
  tail call void @w2c_hermes_operator0x20delete0x28void0x2A0x29(ptr noundef %0, i32 noundef %257) #4
  br label %258

258:                                              ; preds = %256, %253
  %259 = add i32 %1, 5576
  %260 = zext i32 %259 to i64
  %261 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %260)
  tail call void @w2c_hermes_operator0x20delete0x28void0x2A0x29(ptr noundef %0, i32 noundef %261) #4
  %262 = add i32 %1, 5548
  %263 = zext i32 %262 to i64
  %264 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %263)
  tail call void @w2c_hermes_dlfree(ptr noundef %0, i32 noundef %264) #4
  %265 = add i32 %1, 5528
  %266 = zext i32 %265 to i64
  %267 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %266)
  tail call void @w2c_hermes_dlfree(ptr noundef %0, i32 noundef %267) #4
  %268 = add nuw nsw i64 %4, 5516
  %269 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %268)
  %.not918 = icmp eq i32 %269, 0
  br i1 %.not918, label %273, label %270

270:                                              ; preds = %258
  %271 = add i32 %1, 5520
  %272 = zext i32 %271 to i64
  tail call void @i32_store(ptr noundef nonnull %3, i64 noundef %272, i32 noundef %269)
  tail call void @w2c_hermes_operator0x20delete0x28void0x2A0x29(ptr noundef %0, i32 noundef %269) #4
  br label %273

273:                                              ; preds = %270, %258
  %274 = add nuw nsw i64 %4, 5332
  %275 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %274)
  %.not919 = icmp eq i32 %275, 0
  br i1 %.not919, label %318, label %276

276:                                              ; preds = %273
  %277 = add i32 %1, 5336
  %278 = zext i32 %277 to i64
  %279 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %278)
  %.not920 = icmp eq i32 %279, %275
  br i1 %.not920, label %316, label %.preheader965

.preheader965:                                    ; preds = %276
  %280 = load ptr, ptr @w2c_hermes_t3, align 8
  br label %281

281:                                              ; preds = %.preheader965, %313
  %.2842 = phi i32 [ %282, %313 ], [ %279, %.preheader965 ]
  %282 = add i32 %.2842, -24
  %283 = zext i32 %282 to i64
  %284 = add nuw nsw i64 %283, 16
  %285 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %284)
  %286 = icmp eq i32 %285, %282
  br i1 %286, label %290, label %287

287:                                              ; preds = %281
  %.not921 = icmp eq i32 %285, 0
  br i1 %.not921, label %313, label %288

288:                                              ; preds = %287
  %289 = zext i32 %285 to i64
  br label %290

290:                                              ; preds = %281, %288
  %.sink973 = phi i64 [ %289, %288 ], [ %283, %281 ]
  %.sink972 = phi i32 [ 20, %288 ], [ 16, %281 ]
  %.3838 = phi i32 [ %285, %288 ], [ %282, %281 ]
  %291 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %.sink973)
  %292 = add i32 %291, %.sink972
  %293 = zext i32 %292 to i64
  %294 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %293)
  %295 = load i32, ptr %20, align 4, !tbaa !5
  %296 = icmp ult i32 %294, %295
  br i1 %296, label %297, label %.critedge954, !prof !15

297:                                              ; preds = %290
  %298 = load ptr, ptr %19, align 8, !tbaa !16
  %299 = zext i32 %294 to i64
  %300 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %298, i64 %299
  %301 = getelementptr inbounds i8, ptr %300, i64 8
  %302 = load ptr, ptr %301, align 8, !tbaa !17
  %.not922 = icmp eq ptr %302, null
  br i1 %.not922, label %.critedge954, label %303, !prof !19

303:                                              ; preds = %297
  %304 = load ptr, ptr %300, align 8, !tbaa !21
  %305 = tail call zeroext i1 @func_types_eq(ptr noundef %280, ptr noundef %304)
  br i1 %305, label %306, label %.critedge954, !prof !15

.critedge954:                                     ; preds = %297, %290, %303
  tail call void @wasm_rt_trap(i32 noundef 6) #5
  unreachable

306:                                              ; preds = %303
  %307 = load ptr, ptr %19, align 8, !tbaa !16
  %308 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %307, i64 %299
  %309 = getelementptr inbounds i8, ptr %308, i64 8
  %310 = load ptr, ptr %309, align 8, !tbaa !17
  %311 = getelementptr inbounds i8, ptr %308, i64 16
  %312 = load ptr, ptr %311, align 8, !tbaa !22
  tail call void %310(ptr noundef %312, i32 noundef %.3838) #4
  br label %313

313:                                              ; preds = %287, %306
  %.not923 = icmp eq i32 %282, %275
  br i1 %.not923, label %314, label %281

314:                                              ; preds = %313
  %315 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %274)
  br label %316

316:                                              ; preds = %314, %276
  %.4839 = phi i32 [ %315, %314 ], [ %275, %276 ]
  %317 = add nuw nsw i64 %4, 5336
  tail call void @i32_store(ptr noundef nonnull %3, i64 noundef %317, i32 noundef %275)
  tail call void @w2c_hermes_operator0x20delete0x28void0x2A0x29(ptr noundef %0, i32 noundef %.4839) #4
  br label %318

318:                                              ; preds = %316, %273
  %319 = add nuw nsw i64 %4, 5320
  %320 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %319)
  %.not924 = icmp eq i32 %320, 0
  br i1 %.not924, label %363, label %321

321:                                              ; preds = %318
  %322 = add i32 %1, 5324
  %323 = zext i32 %322 to i64
  %324 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %323)
  %.not925 = icmp eq i32 %324, %320
  br i1 %.not925, label %361, label %.preheader964

.preheader964:                                    ; preds = %321
  %325 = load ptr, ptr @w2c_hermes_t3, align 8
  br label %326

326:                                              ; preds = %.preheader964, %358
  %.3843 = phi i32 [ %327, %358 ], [ %324, %.preheader964 ]
  %327 = add i32 %.3843, -24
  %328 = zext i32 %327 to i64
  %329 = add nuw nsw i64 %328, 16
  %330 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %329)
  %331 = icmp eq i32 %330, %327
  br i1 %331, label %335, label %332

332:                                              ; preds = %326
  %.not926 = icmp eq i32 %330, 0
  br i1 %.not926, label %358, label %333

333:                                              ; preds = %332
  %334 = zext i32 %330 to i64
  br label %335

335:                                              ; preds = %326, %333
  %.sink975 = phi i64 [ %334, %333 ], [ %328, %326 ]
  %.sink974 = phi i32 [ 20, %333 ], [ 16, %326 ]
  %.5 = phi i32 [ %330, %333 ], [ %327, %326 ]
  %336 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %.sink975)
  %337 = add i32 %336, %.sink974
  %338 = zext i32 %337 to i64
  %339 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %338)
  %340 = load i32, ptr %20, align 4, !tbaa !5
  %341 = icmp ult i32 %339, %340
  br i1 %341, label %342, label %.critedge956, !prof !15

342:                                              ; preds = %335
  %343 = load ptr, ptr %19, align 8, !tbaa !16
  %344 = zext i32 %339 to i64
  %345 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %343, i64 %344
  %346 = getelementptr inbounds i8, ptr %345, i64 8
  %347 = load ptr, ptr %346, align 8, !tbaa !17
  %.not927 = icmp eq ptr %347, null
  br i1 %.not927, label %.critedge956, label %348, !prof !19

348:                                              ; preds = %342
  %349 = load ptr, ptr %345, align 8, !tbaa !21
  %350 = tail call zeroext i1 @func_types_eq(ptr noundef %325, ptr noundef %349)
  br i1 %350, label %351, label %.critedge956, !prof !15

.critedge956:                                     ; preds = %342, %335, %348
  tail call void @wasm_rt_trap(i32 noundef 6) #5
  unreachable

351:                                              ; preds = %348
  %352 = load ptr, ptr %19, align 8, !tbaa !16
  %353 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %352, i64 %344
  %354 = getelementptr inbounds i8, ptr %353, i64 8
  %355 = load ptr, ptr %354, align 8, !tbaa !17
  %356 = getelementptr inbounds i8, ptr %353, i64 16
  %357 = load ptr, ptr %356, align 8, !tbaa !22
  tail call void %355(ptr noundef %357, i32 noundef %.5) #4
  br label %358

358:                                              ; preds = %332, %351
  %.not928 = icmp eq i32 %327, %320
  br i1 %.not928, label %359, label %326

359:                                              ; preds = %358
  %360 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %319)
  br label %361

361:                                              ; preds = %359, %321
  %.6 = phi i32 [ %360, %359 ], [ %320, %321 ]
  %362 = add nuw nsw i64 %4, 5324
  tail call void @i32_store(ptr noundef nonnull %3, i64 noundef %362, i32 noundef %320)
  tail call void @w2c_hermes_operator0x20delete0x28void0x2A0x29(ptr noundef %0, i32 noundef %.6) #4
  br label %363

363:                                              ; preds = %361, %318
  %364 = add nuw nsw i64 %4, 5308
  %365 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %364)
  %.not929 = icmp eq i32 %365, 0
  br i1 %.not929, label %408, label %366

366:                                              ; preds = %363
  %367 = add i32 %1, 5312
  %368 = zext i32 %367 to i64
  %369 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %368)
  %.not930 = icmp eq i32 %369, %365
  br i1 %.not930, label %406, label %.preheader963

.preheader963:                                    ; preds = %366
  %370 = load ptr, ptr @w2c_hermes_t3, align 8
  br label %371

371:                                              ; preds = %.preheader963, %403
  %.4844 = phi i32 [ %372, %403 ], [ %369, %.preheader963 ]
  %372 = add i32 %.4844, -24
  %373 = zext i32 %372 to i64
  %374 = add nuw nsw i64 %373, 16
  %375 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %374)
  %376 = icmp eq i32 %375, %372
  br i1 %376, label %380, label %377

377:                                              ; preds = %371
  %.not931 = icmp eq i32 %375, 0
  br i1 %.not931, label %403, label %378

378:                                              ; preds = %377
  %379 = zext i32 %375 to i64
  br label %380

380:                                              ; preds = %371, %378
  %.sink977 = phi i64 [ %379, %378 ], [ %373, %371 ]
  %.sink976 = phi i32 [ 20, %378 ], [ 16, %371 ]
  %.7 = phi i32 [ %375, %378 ], [ %372, %371 ]
  %381 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %.sink977)
  %382 = add i32 %381, %.sink976
  %383 = zext i32 %382 to i64
  %384 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %383)
  %385 = load i32, ptr %20, align 4, !tbaa !5
  %386 = icmp ult i32 %384, %385
  br i1 %386, label %387, label %.critedge958, !prof !15

387:                                              ; preds = %380
  %388 = load ptr, ptr %19, align 8, !tbaa !16
  %389 = zext i32 %384 to i64
  %390 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %388, i64 %389
  %391 = getelementptr inbounds i8, ptr %390, i64 8
  %392 = load ptr, ptr %391, align 8, !tbaa !17
  %.not932 = icmp eq ptr %392, null
  br i1 %.not932, label %.critedge958, label %393, !prof !19

393:                                              ; preds = %387
  %394 = load ptr, ptr %390, align 8, !tbaa !21
  %395 = tail call zeroext i1 @func_types_eq(ptr noundef %370, ptr noundef %394)
  br i1 %395, label %396, label %.critedge958, !prof !15

.critedge958:                                     ; preds = %387, %380, %393
  tail call void @wasm_rt_trap(i32 noundef 6) #5
  unreachable

396:                                              ; preds = %393
  %397 = load ptr, ptr %19, align 8, !tbaa !16
  %398 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %397, i64 %389
  %399 = getelementptr inbounds i8, ptr %398, i64 8
  %400 = load ptr, ptr %399, align 8, !tbaa !17
  %401 = getelementptr inbounds i8, ptr %398, i64 16
  %402 = load ptr, ptr %401, align 8, !tbaa !22
  tail call void %400(ptr noundef %402, i32 noundef %.7) #4
  br label %403

403:                                              ; preds = %377, %396
  %.not933 = icmp eq i32 %372, %365
  br i1 %.not933, label %404, label %371

404:                                              ; preds = %403
  %405 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %364)
  br label %406

406:                                              ; preds = %404, %366
  %.8 = phi i32 [ %405, %404 ], [ %365, %366 ]
  %407 = add nuw nsw i64 %4, 5312
  tail call void @i32_store(ptr noundef nonnull %3, i64 noundef %407, i32 noundef %365)
  tail call void @w2c_hermes_operator0x20delete0x28void0x2A0x29(ptr noundef %0, i32 noundef %.8) #4
  br label %408

408:                                              ; preds = %406, %363
  %409 = add nuw nsw i64 %4, 5296
  %410 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %409)
  %.not934 = icmp eq i32 %410, 0
  br i1 %.not934, label %453, label %411

411:                                              ; preds = %408
  %412 = add i32 %1, 5300
  %413 = zext i32 %412 to i64
  %414 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %413)
  %.not935 = icmp eq i32 %414, %410
  br i1 %.not935, label %451, label %.preheader

.preheader:                                       ; preds = %411
  %415 = load ptr, ptr @w2c_hermes_t3, align 8
  br label %416

416:                                              ; preds = %.preheader, %448
  %.5845 = phi i32 [ %417, %448 ], [ %414, %.preheader ]
  %417 = add i32 %.5845, -24
  %418 = zext i32 %417 to i64
  %419 = add nuw nsw i64 %418, 16
  %420 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %419)
  %421 = icmp eq i32 %420, %417
  br i1 %421, label %425, label %422

422:                                              ; preds = %416
  %.not936 = icmp eq i32 %420, 0
  br i1 %.not936, label %448, label %423

423:                                              ; preds = %422
  %424 = zext i32 %420 to i64
  br label %425

425:                                              ; preds = %416, %423
  %.sink979 = phi i64 [ %424, %423 ], [ %418, %416 ]
  %.sink978 = phi i32 [ 20, %423 ], [ 16, %416 ]
  %.9 = phi i32 [ %420, %423 ], [ %417, %416 ]
  %426 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %.sink979)
  %427 = add i32 %426, %.sink978
  %428 = zext i32 %427 to i64
  %429 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %428)
  %430 = load i32, ptr %20, align 4, !tbaa !5
  %431 = icmp ult i32 %429, %430
  br i1 %431, label %432, label %.critedge960, !prof !15

432:                                              ; preds = %425
  %433 = load ptr, ptr %19, align 8, !tbaa !16
  %434 = zext i32 %429 to i64
  %435 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %433, i64 %434
  %436 = getelementptr inbounds i8, ptr %435, i64 8
  %437 = load ptr, ptr %436, align 8, !tbaa !17
  %.not937 = icmp eq ptr %437, null
  br i1 %.not937, label %.critedge960, label %438, !prof !19

438:                                              ; preds = %432
  %439 = load ptr, ptr %435, align 8, !tbaa !21
  %440 = tail call zeroext i1 @func_types_eq(ptr noundef %415, ptr noundef %439)
  br i1 %440, label %441, label %.critedge960, !prof !15

.critedge960:                                     ; preds = %432, %425, %438
  tail call void @wasm_rt_trap(i32 noundef 6) #5
  unreachable

441:                                              ; preds = %438
  %442 = load ptr, ptr %19, align 8, !tbaa !16
  %443 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %442, i64 %434
  %444 = getelementptr inbounds i8, ptr %443, i64 8
  %445 = load ptr, ptr %444, align 8, !tbaa !17
  %446 = getelementptr inbounds i8, ptr %443, i64 16
  %447 = load ptr, ptr %446, align 8, !tbaa !22
  tail call void %445(ptr noundef %447, i32 noundef %.9) #4
  br label %448

448:                                              ; preds = %422, %441
  %.not938 = icmp eq i32 %417, %410
  br i1 %.not938, label %449, label %416

449:                                              ; preds = %448
  %450 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %409)
  br label %451

451:                                              ; preds = %449, %411
  %.10 = phi i32 [ %450, %449 ], [ %410, %411 ]
  %452 = add nuw nsw i64 %4, 5300
  tail call void @i32_store(ptr noundef nonnull %3, i64 noundef %452, i32 noundef %410)
  tail call void @w2c_hermes_operator0x20delete0x28void0x2A0x29(ptr noundef %0, i32 noundef %.10) #4
  br label %453

453:                                              ; preds = %451, %408
  %454 = tail call i32 @w2c_hermes_hermes0x3A0x3Avm0x3A0x3AHadesGC0x3A0x3A0x7EHadesGC0x280x29(ptr noundef %0, i32 noundef %6) #4
  %455 = add nuw nsw i64 %4, 804
  %456 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %455)
  %.not939 = icmp eq i32 %456, 0
  br i1 %.not939, label %486, label %457

457:                                              ; preds = %453
  %458 = zext i32 %456 to i64
  %459 = add nuw nsw i64 %458, 4
  %460 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %459)
  %461 = add i32 %460, -1
  tail call void @i32_store(ptr noundef nonnull %3, i64 noundef %459, i32 noundef %461)
  %.not940 = icmp eq i32 %460, 0
  br i1 %.not940, label %462, label %486

462:                                              ; preds = %457
  %463 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %458)
  %464 = zext i32 %463 to i64
  %465 = add nuw nsw i64 %464, 8
  %466 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %465)
  %467 = load i32, ptr %20, align 4, !tbaa !5
  %468 = icmp ult i32 %466, %467
  br i1 %468, label %469, label %.critedge962, !prof !15

469:                                              ; preds = %462
  %470 = load ptr, ptr %19, align 8, !tbaa !16
  %471 = zext i32 %466 to i64
  %472 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %470, i64 %471
  %473 = getelementptr inbounds i8, ptr %472, i64 8
  %474 = load ptr, ptr %473, align 8, !tbaa !17
  %.not941 = icmp eq ptr %474, null
  br i1 %.not941, label %.critedge962, label %475, !prof !19

475:                                              ; preds = %469
  %476 = load ptr, ptr @w2c_hermes_t3, align 8, !tbaa !20
  %477 = load ptr, ptr %472, align 8, !tbaa !21
  %478 = tail call zeroext i1 @func_types_eq(ptr noundef %476, ptr noundef %477)
  br i1 %478, label %479, label %.critedge962, !prof !15

.critedge962:                                     ; preds = %469, %462, %475
  tail call void @wasm_rt_trap(i32 noundef 6) #5
  unreachable

479:                                              ; preds = %475
  %480 = load ptr, ptr %19, align 8, !tbaa !16
  %481 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %480, i64 %471
  %482 = getelementptr inbounds i8, ptr %481, i64 8
  %483 = load ptr, ptr %482, align 8, !tbaa !17
  %484 = getelementptr inbounds i8, ptr %481, i64 16
  %485 = load ptr, ptr %484, align 8, !tbaa !22
  tail call void %483(ptr noundef %485, i32 noundef %456) #4
  tail call void @w2c_hermes_std0x3A0x3A_0x5F20x3A0x3A_0x5Fshared_weak_count0x3A0x3A_0x5Frelease_weak0x280x29(ptr noundef nonnull %0, i32 noundef %456) #4
  br label %486

486:                                              ; preds = %457, %453, %479
  %487 = add nuw nsw i64 %4, 736
  %488 = tail call i32 @i32_load(ptr noundef nonnull %3, i64 noundef %487)
  %489 = add i32 %1, 748
  %.not942 = icmp eq i32 %488, %489
  br i1 %.not942, label %491, label %490

490:                                              ; preds = %486
  tail call void @w2c_hermes_dlfree(ptr noundef %0, i32 noundef %488) #4
  br label %491

491:                                              ; preds = %490, %486
  %492 = add i32 %1, 12
  %493 = tail call i32 @w2c_hermes_hermes0x3A0x3Avm0x3A0x3AGCBase0x3A0x3AGCCallbacks0x3A0x3A0x7EGCCallbacks0x280x29(ptr noundef %0, i32 noundef %492) #4
  ret i32 %1
}

declare void @w2c_hermes_hermes0x3A0x3Avm0x3A0x3AHadesGC0x3A0x3AfinalizeAll0x280x29(ptr noundef, i32 noundef) local_unnamed_addr #0

declare i32 @w2c_hermes_hermes0x3A0x3Avm0x3A0x3AGCBase0x3A0x3AIDTracker0x3A0x3AhasNativeIDs0x280x29(ptr noundef, i32 noundef) local_unnamed_addr #0

declare void @w2c_hermes_hermes0x3A0x3Aoscompat0x3A0x3Avm_free0x28void0x2A0x2C0x20unsigned0x20long0x29(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

declare i32 @w2c_hermes_hermes0x3A0x3Avm0x3A0x3ACodeCoverageProfiler0x3A0x3A0x7ECodeCoverageProfiler0x280x29(ptr noundef, i32 noundef) local_unnamed_addr #0

declare i32 @w2c_hermes_std0x3A0x3A_0x5F20x3A0x3A_0x5Fdeque_base0x3Chermes0x3A0x3Avm0x3A0x3ACallable0x2A0x2C0x20std0x3A0x3A_0x5F20x3A0x3Aallocator0x3Chermes0x3A0x3Avm0x3A0x3ACallable0x2A0x3E0x3E0x3A0x3A0x7E_0x5Fdeque_base0x280x29(ptr noundef, i32 noundef) local_unnamed_addr #0

declare i32 @w2c_hermes_hermes0x3A0x3Avm0x3A0x3AJSLibStorage0x3A0x3A0x7EJSLibStorage0x280x29(ptr noundef, i32 noundef) local_unnamed_addr #0

declare i32 @w2c_hermes_hermes0x3A0x3Avm0x3A0x3AHadesGC0x3A0x3A0x7EHadesGC0x280x29(ptr noundef, i32 noundef) local_unnamed_addr #0

declare i32 @w2c_hermes_hermes0x3A0x3Avm0x3A0x3AGCBase0x3A0x3AGCCallbacks0x3A0x3A0x7EGCCallbacks0x280x29(ptr noundef, i32 noundef) local_unnamed_addr #0

attributes #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 = { 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 #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)"}
!5 = !{!6, !10, i64 92}
!6 = !{!"w2c_hermes", !7, i64 0, !7, i64 8, !7, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !11, i64 40, !14, i64 80}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"", !7, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !13, i64 32}
!12 = !{!"long", !8, i64 0}
!13 = !{!"_Bool", !8, i64 0}
!14 = !{!"", !7, i64 0, !10, i64 8, !10, i64 12}
!15 = !{!"branch_weights", !"expected", i32 2000, i32 1}
!16 = !{!6, !7, i64 80}
!17 = !{!18, !7, i64 8}
!18 = !{!"", !7, i64 0, !7, i64 8, !7, i64 16}
!19 = !{!"branch_weights", !"expected", i32 1, i32 2000}
!20 = !{!7, !7, i64 0}
!21 = !{!18, !7, i64 0}
!22 = !{!18, !7, i64 16}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopSimplifyPass,LoopUnrollPass,LowerExpectIntrinsicPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass