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

; 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

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @w2c_hermes_std0x3A0x3A_0x5F20x3A0x3A_0x5Ffunction0x3A0x3A_0x5Ffunc0x3C0x28anonymous0x20namespace0x290x3A0x3AHermesABIRuntimeImpl0x3A0x3AHermesABIRuntimeImpl0x28hermes0x3A0x3Avm0x3A0x3ARuntimeConfig0x20const0x260x290x3A0x3A0x27lambda0x270x28hermes0x3A0x3Avm0x3A0x3AHadesGC0x2A0x2C0x20hermes0x3A0x3Avm0x3A0x3AWeakRootAcceptor0x260x290x2C0x20std0x3A0x3A_0x5F20x3A0x3Aallocator0x3C0x28anonymous0x20namespace0x290x3A0x3AHermesABIRuntimeImpl0x3A0x3AHermesABIRuntimeImpl0x28hermes0x3A0x3Avm0x3A0x3ARuntimeConfig0x20const0x260x290x3A0x3A0x27lambda0x270x28hermes0x3A0x3Avm0x3A0x3AHadesGC0x2A0x2C0x20hermes0x3A0x3Avm0x3A0x3AWeakRootAcceptor0x260x290x3E0x2C0x20void0x200x28hermes0x3A0x3Avm0x3A0x3AHadesGC0x2A0x2C0x20hermes0x3A0x3Avm0x3A0x3AWeakRootAcceptor0x260x290x3E0x3A0x3Aoperator0x280x290x28hermes0x3A0x3Avm0x3A0x3AHadesGC0x2A0x260x260x2C0x20hermes0x3A0x3Avm0x3A0x3AWeakRootAcceptor0x260x29(ptr noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3) #4 {
  %5 = alloca ptr, align 8
  %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
  store ptr %0, ptr %5, align 8, !tbaa !5
  store i32 %1, ptr %6, align 4, !tbaa !9
  store i32 %2, ptr %7, align 4, !tbaa !9
  store i32 %3, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #5
  %12 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %12, ptr %9, align 4, !tbaa !9
  %13 = load ptr, ptr %5, align 8, !tbaa !5
  %14 = getelementptr inbounds %struct.w2c_hermes, ptr %13, i32 0, i32 6
  %15 = load i32, ptr %9, align 4, !tbaa !9
  %16 = zext i32 %15 to i64
  %17 = add i64 %16, 4
  %18 = call i32 @i32_load(ptr noundef %14, i64 noundef %17)
  store i32 %18, ptr %9, align 4, !tbaa !9
  %19 = load ptr, ptr %5, align 8, !tbaa !5
  %20 = getelementptr inbounds %struct.w2c_hermes, ptr %19, i32 0, i32 6
  %21 = load i32, ptr %9, align 4, !tbaa !9
  %22 = zext i32 %21 to i64
  %23 = add i64 %22, 56
  %24 = call i32 @i32_load(ptr noundef %20, i64 noundef %23)
  store i32 %24, ptr %9, align 4, !tbaa !9
  %25 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %25, ptr %6, align 4, !tbaa !9
  %26 = load i32, ptr %9, align 4, !tbaa !9
  %27 = icmp ne i32 %26, 0
  br i1 %27, label %28, label %1481

28:                                               ; preds = %4
  br label %29

29:                                               ; preds = %1479, %28
  %30 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %30, ptr %9, align 4, !tbaa !9
  %31 = load ptr, ptr %5, align 8, !tbaa !5
  %32 = getelementptr inbounds %struct.w2c_hermes, ptr %31, i32 0, i32 6
  %33 = load i32, ptr %9, align 4, !tbaa !9
  %34 = zext i32 %33 to i64
  %35 = add i64 %34, 8
  %36 = call i32 @i32_load(ptr noundef %32, i64 noundef %35)
  store i32 %36, ptr %9, align 4, !tbaa !9
  %37 = load i32, ptr %9, align 4, !tbaa !9
  %38 = icmp ne i32 %37, 0
  br i1 %38, label %39, label %119

39:                                               ; preds = %29
  %40 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %40, ptr %9, align 4, !tbaa !9
  %41 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %41, ptr %10, align 4, !tbaa !9
  store i32 12, ptr %11, align 4, !tbaa !9
  %42 = load i32, ptr %11, align 4, !tbaa !9
  %43 = load i32, ptr %10, align 4, !tbaa !9
  %44 = add i32 %43, %42
  store i32 %44, ptr %10, align 4, !tbaa !9
  %45 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %45, ptr %11, align 4, !tbaa !9
  %46 = load ptr, ptr %5, align 8, !tbaa !5
  %47 = getelementptr inbounds %struct.w2c_hermes, ptr %46, i32 0, i32 6
  %48 = load i32, ptr %11, align 4, !tbaa !9
  %49 = zext i32 %48 to i64
  %50 = call i32 @i32_load(ptr noundef %47, i64 noundef %49)
  store i32 %50, ptr %11, align 4, !tbaa !9
  %51 = load ptr, ptr %5, align 8, !tbaa !5
  %52 = getelementptr inbounds %struct.w2c_hermes, ptr %51, i32 0, i32 6
  %53 = load i32, ptr %11, align 4, !tbaa !9
  %54 = zext i32 %53 to i64
  %55 = add i64 %54, 16
  %56 = call i32 @i32_load(ptr noundef %52, i64 noundef %55)
  store i32 %56, ptr %11, align 4, !tbaa !9
  %57 = load i32, ptr %11, align 4, !tbaa !9
  %58 = load ptr, ptr %5, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.w2c_hermes, ptr %58, i32 0, i32 7
  %60 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %59, i32 0, i32 2
  %61 = load i32, ptr %60, align 4, !tbaa !11
  %62 = icmp ult i32 %57, %61
  br i1 %62, label %63, label %86

63:                                               ; preds = %39
  %64 = load ptr, ptr %5, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.w2c_hermes, ptr %64, i32 0, i32 7
  %66 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %65, i32 0, i32 0
  %67 = load ptr, ptr %66, align 8, !tbaa !17
  %68 = load i32, ptr %11, align 4, !tbaa !9
  %69 = zext i32 %68 to i64
  %70 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %67, i64 %69
  %71 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %70, i32 0, i32 1
  %72 = load ptr, ptr %71, align 8, !tbaa !18
  %73 = icmp ne ptr %72, null
  br i1 %73, label %74, label %86

74:                                               ; preds = %63
  %75 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !5
  %76 = load ptr, ptr %5, align 8, !tbaa !5
  %77 = getelementptr inbounds %struct.w2c_hermes, ptr %76, i32 0, i32 7
  %78 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %77, i32 0, i32 0
  %79 = load ptr, ptr %78, align 8, !tbaa !17
  %80 = load i32, ptr %11, align 4, !tbaa !9
  %81 = zext i32 %80 to i64
  %82 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %79, i64 %81
  %83 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %82, i32 0, i32 0
  %84 = load ptr, ptr %83, align 8, !tbaa !20
  %85 = call zeroext i1 @func_types_eq(ptr noundef %75, ptr noundef %84)
  br label %86

86:                                               ; preds = %74, %63, %39
  %87 = phi i1 [ false, %63 ], [ false, %39 ], [ %85, %74 ]
  %88 = xor i1 %87, true
  %89 = xor i1 %88, true
  %90 = zext i1 %89 to i32
  %91 = sext i32 %90 to i64
  %92 = call i64 @llvm.expect.i64(i64 %91, i64 1)
  %93 = icmp ne i64 %92, 0
  br i1 %93, label %96, label %94

94:                                               ; preds = %86
  call void @wasm_rt_trap(i32 noundef 6) #6
  unreachable

95:                                               ; No predecessors!
  br label %96

96:                                               ; preds = %95, %86
  %97 = phi i1 [ true, %86 ], [ false, %95 ]
  %98 = zext i1 %97 to i32
  %99 = load ptr, ptr %5, align 8, !tbaa !5
  %100 = getelementptr inbounds %struct.w2c_hermes, ptr %99, i32 0, i32 7
  %101 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %100, i32 0, i32 0
  %102 = load ptr, ptr %101, align 8, !tbaa !17
  %103 = load i32, ptr %11, align 4, !tbaa !9
  %104 = zext i32 %103 to i64
  %105 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %102, i64 %104
  %106 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %105, i32 0, i32 1
  %107 = load ptr, ptr %106, align 8, !tbaa !18
  %108 = load ptr, ptr %5, align 8, !tbaa !5
  %109 = getelementptr inbounds %struct.w2c_hermes, ptr %108, i32 0, i32 7
  %110 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %109, i32 0, i32 0
  %111 = load ptr, ptr %110, align 8, !tbaa !17
  %112 = load i32, ptr %11, align 4, !tbaa !9
  %113 = zext i32 %112 to i64
  %114 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %111, i64 %113
  %115 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %114, i32 0, i32 2
  %116 = load ptr, ptr %115, align 8, !tbaa !21
  %117 = load i32, ptr %9, align 4, !tbaa !9
  %118 = load i32, ptr %10, align 4, !tbaa !9
  call void %107(ptr noundef %116, i32 noundef %117, i32 noundef %118)
  br label %119

119:                                              ; preds = %96, %29
  %120 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %120, ptr %9, align 4, !tbaa !9
  %121 = load ptr, ptr %5, align 8, !tbaa !5
  %122 = getelementptr inbounds %struct.w2c_hermes, ptr %121, i32 0, i32 6
  %123 = load i32, ptr %9, align 4, !tbaa !9
  %124 = zext i32 %123 to i64
  %125 = add i64 %124, 20
  %126 = call i32 @i32_load(ptr noundef %122, i64 noundef %125)
  store i32 %126, ptr %9, align 4, !tbaa !9
  %127 = load i32, ptr %9, align 4, !tbaa !9
  %128 = icmp ne i32 %127, 0
  br i1 %128, label %129, label %209

129:                                              ; preds = %119
  %130 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %130, ptr %9, align 4, !tbaa !9
  %131 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %131, ptr %10, align 4, !tbaa !9
  store i32 24, ptr %11, align 4, !tbaa !9
  %132 = load i32, ptr %11, align 4, !tbaa !9
  %133 = load i32, ptr %10, align 4, !tbaa !9
  %134 = add i32 %133, %132
  store i32 %134, ptr %10, align 4, !tbaa !9
  %135 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %135, ptr %11, align 4, !tbaa !9
  %136 = load ptr, ptr %5, align 8, !tbaa !5
  %137 = getelementptr inbounds %struct.w2c_hermes, ptr %136, i32 0, i32 6
  %138 = load i32, ptr %11, align 4, !tbaa !9
  %139 = zext i32 %138 to i64
  %140 = call i32 @i32_load(ptr noundef %137, i64 noundef %139)
  store i32 %140, ptr %11, align 4, !tbaa !9
  %141 = load ptr, ptr %5, align 8, !tbaa !5
  %142 = getelementptr inbounds %struct.w2c_hermes, ptr %141, i32 0, i32 6
  %143 = load i32, ptr %11, align 4, !tbaa !9
  %144 = zext i32 %143 to i64
  %145 = add i64 %144, 16
  %146 = call i32 @i32_load(ptr noundef %142, i64 noundef %145)
  store i32 %146, ptr %11, align 4, !tbaa !9
  %147 = load i32, ptr %11, align 4, !tbaa !9
  %148 = load ptr, ptr %5, align 8, !tbaa !5
  %149 = getelementptr inbounds %struct.w2c_hermes, ptr %148, i32 0, i32 7
  %150 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %149, i32 0, i32 2
  %151 = load i32, ptr %150, align 4, !tbaa !11
  %152 = icmp ult i32 %147, %151
  br i1 %152, label %153, label %176

153:                                              ; preds = %129
  %154 = load ptr, ptr %5, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.w2c_hermes, ptr %154, i32 0, i32 7
  %156 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %155, i32 0, i32 0
  %157 = load ptr, ptr %156, align 8, !tbaa !17
  %158 = load i32, ptr %11, align 4, !tbaa !9
  %159 = zext i32 %158 to i64
  %160 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %157, i64 %159
  %161 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %160, i32 0, i32 1
  %162 = load ptr, ptr %161, align 8, !tbaa !18
  %163 = icmp ne ptr %162, null
  br i1 %163, label %164, label %176

164:                                              ; preds = %153
  %165 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !5
  %166 = load ptr, ptr %5, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.w2c_hermes, ptr %166, i32 0, i32 7
  %168 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %167, i32 0, i32 0
  %169 = load ptr, ptr %168, align 8, !tbaa !17
  %170 = load i32, ptr %11, align 4, !tbaa !9
  %171 = zext i32 %170 to i64
  %172 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %169, i64 %171
  %173 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %172, i32 0, i32 0
  %174 = load ptr, ptr %173, align 8, !tbaa !20
  %175 = call zeroext i1 @func_types_eq(ptr noundef %165, ptr noundef %174)
  br label %176

176:                                              ; preds = %164, %153, %129
  %177 = phi i1 [ false, %153 ], [ false, %129 ], [ %175, %164 ]
  %178 = xor i1 %177, true
  %179 = xor i1 %178, true
  %180 = zext i1 %179 to i32
  %181 = sext i32 %180 to i64
  %182 = call i64 @llvm.expect.i64(i64 %181, i64 1)
  %183 = icmp ne i64 %182, 0
  br i1 %183, label %186, label %184

184:                                              ; preds = %176
  call void @wasm_rt_trap(i32 noundef 6) #6
  unreachable

185:                                              ; No predecessors!
  br label %186

186:                                              ; preds = %185, %176
  %187 = phi i1 [ true, %176 ], [ false, %185 ]
  %188 = zext i1 %187 to i32
  %189 = load ptr, ptr %5, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct.w2c_hermes, ptr %189, i32 0, i32 7
  %191 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %190, i32 0, i32 0
  %192 = load ptr, ptr %191, align 8, !tbaa !17
  %193 = load i32, ptr %11, align 4, !tbaa !9
  %194 = zext i32 %193 to i64
  %195 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %192, i64 %194
  %196 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %195, i32 0, i32 1
  %197 = load ptr, ptr %196, align 8, !tbaa !18
  %198 = load ptr, ptr %5, align 8, !tbaa !5
  %199 = getelementptr inbounds %struct.w2c_hermes, ptr %198, i32 0, i32 7
  %200 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %199, i32 0, i32 0
  %201 = load ptr, ptr %200, align 8, !tbaa !17
  %202 = load i32, ptr %11, align 4, !tbaa !9
  %203 = zext i32 %202 to i64
  %204 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %201, i64 %203
  %205 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %204, i32 0, i32 2
  %206 = load ptr, ptr %205, align 8, !tbaa !21
  %207 = load i32, ptr %9, align 4, !tbaa !9
  %208 = load i32, ptr %10, align 4, !tbaa !9
  call void %197(ptr noundef %206, i32 noundef %207, i32 noundef %208)
  br label %209

209:                                              ; preds = %186, %119
  %210 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %210, ptr %9, align 4, !tbaa !9
  %211 = load ptr, ptr %5, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.w2c_hermes, ptr %211, i32 0, i32 6
  %213 = load i32, ptr %9, align 4, !tbaa !9
  %214 = zext i32 %213 to i64
  %215 = add i64 %214, 32
  %216 = call i32 @i32_load(ptr noundef %212, i64 noundef %215)
  store i32 %216, ptr %9, align 4, !tbaa !9
  %217 = load i32, ptr %9, align 4, !tbaa !9
  %218 = icmp ne i32 %217, 0
  br i1 %218, label %219, label %299

219:                                              ; preds = %209
  %220 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %220, ptr %9, align 4, !tbaa !9
  %221 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %221, ptr %10, align 4, !tbaa !9
  store i32 36, ptr %11, align 4, !tbaa !9
  %222 = load i32, ptr %11, align 4, !tbaa !9
  %223 = load i32, ptr %10, align 4, !tbaa !9
  %224 = add i32 %223, %222
  store i32 %224, ptr %10, align 4, !tbaa !9
  %225 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %225, ptr %11, align 4, !tbaa !9
  %226 = load ptr, ptr %5, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.w2c_hermes, ptr %226, i32 0, i32 6
  %228 = load i32, ptr %11, align 4, !tbaa !9
  %229 = zext i32 %228 to i64
  %230 = call i32 @i32_load(ptr noundef %227, i64 noundef %229)
  store i32 %230, ptr %11, align 4, !tbaa !9
  %231 = load ptr, ptr %5, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.w2c_hermes, ptr %231, i32 0, i32 6
  %233 = load i32, ptr %11, align 4, !tbaa !9
  %234 = zext i32 %233 to i64
  %235 = add i64 %234, 16
  %236 = call i32 @i32_load(ptr noundef %232, i64 noundef %235)
  store i32 %236, ptr %11, align 4, !tbaa !9
  %237 = load i32, ptr %11, align 4, !tbaa !9
  %238 = load ptr, ptr %5, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.w2c_hermes, ptr %238, i32 0, i32 7
  %240 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %239, i32 0, i32 2
  %241 = load i32, ptr %240, align 4, !tbaa !11
  %242 = icmp ult i32 %237, %241
  br i1 %242, label %243, label %266

243:                                              ; preds = %219
  %244 = load ptr, ptr %5, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.w2c_hermes, ptr %244, i32 0, i32 7
  %246 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %245, i32 0, i32 0
  %247 = load ptr, ptr %246, align 8, !tbaa !17
  %248 = load i32, ptr %11, align 4, !tbaa !9
  %249 = zext i32 %248 to i64
  %250 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %247, i64 %249
  %251 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %250, i32 0, i32 1
  %252 = load ptr, ptr %251, align 8, !tbaa !18
  %253 = icmp ne ptr %252, null
  br i1 %253, label %254, label %266

254:                                              ; preds = %243
  %255 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !5
  %256 = load ptr, ptr %5, align 8, !tbaa !5
  %257 = getelementptr inbounds %struct.w2c_hermes, ptr %256, i32 0, i32 7
  %258 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %257, i32 0, i32 0
  %259 = load ptr, ptr %258, align 8, !tbaa !17
  %260 = load i32, ptr %11, align 4, !tbaa !9
  %261 = zext i32 %260 to i64
  %262 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %259, i64 %261
  %263 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %262, i32 0, i32 0
  %264 = load ptr, ptr %263, align 8, !tbaa !20
  %265 = call zeroext i1 @func_types_eq(ptr noundef %255, ptr noundef %264)
  br label %266

266:                                              ; preds = %254, %243, %219
  %267 = phi i1 [ false, %243 ], [ false, %219 ], [ %265, %254 ]
  %268 = xor i1 %267, true
  %269 = xor i1 %268, true
  %270 = zext i1 %269 to i32
  %271 = sext i32 %270 to i64
  %272 = call i64 @llvm.expect.i64(i64 %271, i64 1)
  %273 = icmp ne i64 %272, 0
  br i1 %273, label %276, label %274

274:                                              ; preds = %266
  call void @wasm_rt_trap(i32 noundef 6) #6
  unreachable

275:                                              ; No predecessors!
  br label %276

276:                                              ; preds = %275, %266
  %277 = phi i1 [ true, %266 ], [ false, %275 ]
  %278 = zext i1 %277 to i32
  %279 = load ptr, ptr %5, align 8, !tbaa !5
  %280 = getelementptr inbounds %struct.w2c_hermes, ptr %279, i32 0, i32 7
  %281 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %280, i32 0, i32 0
  %282 = load ptr, ptr %281, align 8, !tbaa !17
  %283 = load i32, ptr %11, align 4, !tbaa !9
  %284 = zext i32 %283 to i64
  %285 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %282, i64 %284
  %286 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %285, i32 0, i32 1
  %287 = load ptr, ptr %286, align 8, !tbaa !18
  %288 = load ptr, ptr %5, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.w2c_hermes, ptr %288, i32 0, i32 7
  %290 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %289, i32 0, i32 0
  %291 = load ptr, ptr %290, align 8, !tbaa !17
  %292 = load i32, ptr %11, align 4, !tbaa !9
  %293 = zext i32 %292 to i64
  %294 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %291, i64 %293
  %295 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %294, i32 0, i32 2
  %296 = load ptr, ptr %295, align 8, !tbaa !21
  %297 = load i32, ptr %9, align 4, !tbaa !9
  %298 = load i32, ptr %10, align 4, !tbaa !9
  call void %287(ptr noundef %296, i32 noundef %297, i32 noundef %298)
  br label %299

299:                                              ; preds = %276, %209
  %300 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %300, ptr %9, align 4, !tbaa !9
  %301 = load ptr, ptr %5, align 8, !tbaa !5
  %302 = getelementptr inbounds %struct.w2c_hermes, ptr %301, i32 0, i32 6
  %303 = load i32, ptr %9, align 4, !tbaa !9
  %304 = zext i32 %303 to i64
  %305 = add i64 %304, 44
  %306 = call i32 @i32_load(ptr noundef %302, i64 noundef %305)
  store i32 %306, ptr %9, align 4, !tbaa !9
  %307 = load i32, ptr %9, align 4, !tbaa !9
  %308 = icmp ne i32 %307, 0
  br i1 %308, label %309, label %389

309:                                              ; preds = %299
  %310 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %310, ptr %9, align 4, !tbaa !9
  %311 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %311, ptr %10, align 4, !tbaa !9
  store i32 48, ptr %11, align 4, !tbaa !9
  %312 = load i32, ptr %11, align 4, !tbaa !9
  %313 = load i32, ptr %10, align 4, !tbaa !9
  %314 = add i32 %313, %312
  store i32 %314, ptr %10, align 4, !tbaa !9
  %315 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %315, ptr %11, align 4, !tbaa !9
  %316 = load ptr, ptr %5, align 8, !tbaa !5
  %317 = getelementptr inbounds %struct.w2c_hermes, ptr %316, i32 0, i32 6
  %318 = load i32, ptr %11, align 4, !tbaa !9
  %319 = zext i32 %318 to i64
  %320 = call i32 @i32_load(ptr noundef %317, i64 noundef %319)
  store i32 %320, ptr %11, align 4, !tbaa !9
  %321 = load ptr, ptr %5, align 8, !tbaa !5
  %322 = getelementptr inbounds %struct.w2c_hermes, ptr %321, i32 0, i32 6
  %323 = load i32, ptr %11, align 4, !tbaa !9
  %324 = zext i32 %323 to i64
  %325 = add i64 %324, 16
  %326 = call i32 @i32_load(ptr noundef %322, i64 noundef %325)
  store i32 %326, ptr %11, align 4, !tbaa !9
  %327 = load i32, ptr %11, align 4, !tbaa !9
  %328 = load ptr, ptr %5, align 8, !tbaa !5
  %329 = getelementptr inbounds %struct.w2c_hermes, ptr %328, i32 0, i32 7
  %330 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %329, i32 0, i32 2
  %331 = load i32, ptr %330, align 4, !tbaa !11
  %332 = icmp ult i32 %327, %331
  br i1 %332, label %333, label %356

333:                                              ; preds = %309
  %334 = load ptr, ptr %5, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.w2c_hermes, ptr %334, i32 0, i32 7
  %336 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %335, i32 0, i32 0
  %337 = load ptr, ptr %336, align 8, !tbaa !17
  %338 = load i32, ptr %11, align 4, !tbaa !9
  %339 = zext i32 %338 to i64
  %340 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %337, i64 %339
  %341 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %340, i32 0, i32 1
  %342 = load ptr, ptr %341, align 8, !tbaa !18
  %343 = icmp ne ptr %342, null
  br i1 %343, label %344, label %356

344:                                              ; preds = %333
  %345 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !5
  %346 = load ptr, ptr %5, align 8, !tbaa !5
  %347 = getelementptr inbounds %struct.w2c_hermes, ptr %346, i32 0, i32 7
  %348 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %347, i32 0, i32 0
  %349 = load ptr, ptr %348, align 8, !tbaa !17
  %350 = load i32, ptr %11, align 4, !tbaa !9
  %351 = zext i32 %350 to i64
  %352 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %349, i64 %351
  %353 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %352, i32 0, i32 0
  %354 = load ptr, ptr %353, align 8, !tbaa !20
  %355 = call zeroext i1 @func_types_eq(ptr noundef %345, ptr noundef %354)
  br label %356

356:                                              ; preds = %344, %333, %309
  %357 = phi i1 [ false, %333 ], [ false, %309 ], [ %355, %344 ]
  %358 = xor i1 %357, true
  %359 = xor i1 %358, true
  %360 = zext i1 %359 to i32
  %361 = sext i32 %360 to i64
  %362 = call i64 @llvm.expect.i64(i64 %361, i64 1)
  %363 = icmp ne i64 %362, 0
  br i1 %363, label %366, label %364

364:                                              ; preds = %356
  call void @wasm_rt_trap(i32 noundef 6) #6
  unreachable

365:                                              ; No predecessors!
  br label %366

366:                                              ; preds = %365, %356
  %367 = phi i1 [ true, %356 ], [ false, %365 ]
  %368 = zext i1 %367 to i32
  %369 = load ptr, ptr %5, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.w2c_hermes, ptr %369, i32 0, i32 7
  %371 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %370, i32 0, i32 0
  %372 = load ptr, ptr %371, align 8, !tbaa !17
  %373 = load i32, ptr %11, align 4, !tbaa !9
  %374 = zext i32 %373 to i64
  %375 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %372, i64 %374
  %376 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %375, i32 0, i32 1
  %377 = load ptr, ptr %376, align 8, !tbaa !18
  %378 = load ptr, ptr %5, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.w2c_hermes, ptr %378, i32 0, i32 7
  %380 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %379, i32 0, i32 0
  %381 = load ptr, ptr %380, align 8, !tbaa !17
  %382 = load i32, ptr %11, align 4, !tbaa !9
  %383 = zext i32 %382 to i64
  %384 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %381, i64 %383
  %385 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %384, i32 0, i32 2
  %386 = load ptr, ptr %385, align 8, !tbaa !21
  %387 = load i32, ptr %9, align 4, !tbaa !9
  %388 = load i32, ptr %10, align 4, !tbaa !9
  call void %377(ptr noundef %386, i32 noundef %387, i32 noundef %388)
  br label %389

389:                                              ; preds = %366, %299
  %390 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %390, ptr %9, align 4, !tbaa !9
  %391 = load ptr, ptr %5, align 8, !tbaa !5
  %392 = getelementptr inbounds %struct.w2c_hermes, ptr %391, i32 0, i32 6
  %393 = load i32, ptr %9, align 4, !tbaa !9
  %394 = zext i32 %393 to i64
  %395 = add i64 %394, 56
  %396 = call i32 @i32_load(ptr noundef %392, i64 noundef %395)
  store i32 %396, ptr %9, align 4, !tbaa !9
  %397 = load i32, ptr %9, align 4, !tbaa !9
  %398 = icmp ne i32 %397, 0
  br i1 %398, label %399, label %479

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

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

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

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

454:                                              ; preds = %446
  call void @wasm_rt_trap(i32 noundef 6) #6
  unreachable

455:                                              ; No predecessors!
  br label %456

456:                                              ; preds = %455, %446
  %457 = phi i1 [ true, %446 ], [ false, %455 ]
  %458 = zext i1 %457 to i32
  %459 = load ptr, ptr %5, align 8, !tbaa !5
  %460 = getelementptr inbounds %struct.w2c_hermes, ptr %459, i32 0, i32 7
  %461 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %460, i32 0, i32 0
  %462 = load ptr, ptr %461, align 8, !tbaa !17
  %463 = load i32, ptr %11, align 4, !tbaa !9
  %464 = zext i32 %463 to i64
  %465 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %462, i64 %464
  %466 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %465, i32 0, i32 1
  %467 = load ptr, ptr %466, align 8, !tbaa !18
  %468 = load ptr, ptr %5, align 8, !tbaa !5
  %469 = getelementptr inbounds %struct.w2c_hermes, ptr %468, i32 0, i32 7
  %470 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %469, i32 0, i32 0
  %471 = load ptr, ptr %470, align 8, !tbaa !17
  %472 = load i32, ptr %11, align 4, !tbaa !9
  %473 = zext i32 %472 to i64
  %474 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %471, i64 %473
  %475 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %474, i32 0, i32 2
  %476 = load ptr, ptr %475, align 8, !tbaa !21
  %477 = load i32, ptr %9, align 4, !tbaa !9
  %478 = load i32, ptr %10, align 4, !tbaa !9
  call void %467(ptr noundef %476, i32 noundef %477, i32 noundef %478)
  br label %479

479:                                              ; preds = %456, %389
  %480 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %480, ptr %9, align 4, !tbaa !9
  %481 = load ptr, ptr %5, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.w2c_hermes, ptr %481, i32 0, i32 6
  %483 = load i32, ptr %9, align 4, !tbaa !9
  %484 = zext i32 %483 to i64
  %485 = add i64 %484, 68
  %486 = call i32 @i32_load(ptr noundef %482, i64 noundef %485)
  store i32 %486, ptr %9, align 4, !tbaa !9
  %487 = load i32, ptr %9, align 4, !tbaa !9
  %488 = icmp ne i32 %487, 0
  br i1 %488, label %489, label %569

489:                                              ; preds = %479
  %490 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %490, ptr %9, align 4, !tbaa !9
  %491 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %491, ptr %10, align 4, !tbaa !9
  store i32 72, ptr %11, align 4, !tbaa !9
  %492 = load i32, ptr %11, align 4, !tbaa !9
  %493 = load i32, ptr %10, align 4, !tbaa !9
  %494 = add i32 %493, %492
  store i32 %494, ptr %10, align 4, !tbaa !9
  %495 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %495, ptr %11, align 4, !tbaa !9
  %496 = load ptr, ptr %5, align 8, !tbaa !5
  %497 = getelementptr inbounds %struct.w2c_hermes, ptr %496, i32 0, i32 6
  %498 = load i32, ptr %11, align 4, !tbaa !9
  %499 = zext i32 %498 to i64
  %500 = call i32 @i32_load(ptr noundef %497, i64 noundef %499)
  store i32 %500, ptr %11, align 4, !tbaa !9
  %501 = load ptr, ptr %5, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.w2c_hermes, ptr %501, i32 0, i32 6
  %503 = load i32, ptr %11, align 4, !tbaa !9
  %504 = zext i32 %503 to i64
  %505 = add i64 %504, 16
  %506 = call i32 @i32_load(ptr noundef %502, i64 noundef %505)
  store i32 %506, ptr %11, align 4, !tbaa !9
  %507 = load i32, ptr %11, align 4, !tbaa !9
  %508 = load ptr, ptr %5, align 8, !tbaa !5
  %509 = getelementptr inbounds %struct.w2c_hermes, ptr %508, i32 0, i32 7
  %510 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %509, i32 0, i32 2
  %511 = load i32, ptr %510, align 4, !tbaa !11
  %512 = icmp ult i32 %507, %511
  br i1 %512, label %513, label %536

513:                                              ; preds = %489
  %514 = load ptr, ptr %5, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.w2c_hermes, ptr %514, i32 0, i32 7
  %516 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %515, i32 0, i32 0
  %517 = load ptr, ptr %516, align 8, !tbaa !17
  %518 = load i32, ptr %11, align 4, !tbaa !9
  %519 = zext i32 %518 to i64
  %520 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %517, i64 %519
  %521 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %520, i32 0, i32 1
  %522 = load ptr, ptr %521, align 8, !tbaa !18
  %523 = icmp ne ptr %522, null
  br i1 %523, label %524, label %536

524:                                              ; preds = %513
  %525 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !5
  %526 = load ptr, ptr %5, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.w2c_hermes, ptr %526, i32 0, i32 7
  %528 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %527, i32 0, i32 0
  %529 = load ptr, ptr %528, align 8, !tbaa !17
  %530 = load i32, ptr %11, align 4, !tbaa !9
  %531 = zext i32 %530 to i64
  %532 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %529, i64 %531
  %533 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %532, i32 0, i32 0
  %534 = load ptr, ptr %533, align 8, !tbaa !20
  %535 = call zeroext i1 @func_types_eq(ptr noundef %525, ptr noundef %534)
  br label %536

536:                                              ; preds = %524, %513, %489
  %537 = phi i1 [ false, %513 ], [ false, %489 ], [ %535, %524 ]
  %538 = xor i1 %537, true
  %539 = xor i1 %538, true
  %540 = zext i1 %539 to i32
  %541 = sext i32 %540 to i64
  %542 = call i64 @llvm.expect.i64(i64 %541, i64 1)
  %543 = icmp ne i64 %542, 0
  br i1 %543, label %546, label %544

544:                                              ; preds = %536
  call void @wasm_rt_trap(i32 noundef 6) #6
  unreachable

545:                                              ; No predecessors!
  br label %546

546:                                              ; preds = %545, %536
  %547 = phi i1 [ true, %536 ], [ false, %545 ]
  %548 = zext i1 %547 to i32
  %549 = load ptr, ptr %5, align 8, !tbaa !5
  %550 = getelementptr inbounds %struct.w2c_hermes, ptr %549, i32 0, i32 7
  %551 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %550, i32 0, i32 0
  %552 = load ptr, ptr %551, align 8, !tbaa !17
  %553 = load i32, ptr %11, align 4, !tbaa !9
  %554 = zext i32 %553 to i64
  %555 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %552, i64 %554
  %556 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %555, i32 0, i32 1
  %557 = load ptr, ptr %556, align 8, !tbaa !18
  %558 = load ptr, ptr %5, align 8, !tbaa !5
  %559 = getelementptr inbounds %struct.w2c_hermes, ptr %558, i32 0, i32 7
  %560 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %559, i32 0, i32 0
  %561 = load ptr, ptr %560, align 8, !tbaa !17
  %562 = load i32, ptr %11, align 4, !tbaa !9
  %563 = zext i32 %562 to i64
  %564 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %561, i64 %563
  %565 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %564, i32 0, i32 2
  %566 = load ptr, ptr %565, align 8, !tbaa !21
  %567 = load i32, ptr %9, align 4, !tbaa !9
  %568 = load i32, ptr %10, align 4, !tbaa !9
  call void %557(ptr noundef %566, i32 noundef %567, i32 noundef %568)
  br label %569

569:                                              ; preds = %546, %479
  %570 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %570, ptr %9, align 4, !tbaa !9
  %571 = load ptr, ptr %5, align 8, !tbaa !5
  %572 = getelementptr inbounds %struct.w2c_hermes, ptr %571, i32 0, i32 6
  %573 = load i32, ptr %9, align 4, !tbaa !9
  %574 = zext i32 %573 to i64
  %575 = add i64 %574, 80
  %576 = call i32 @i32_load(ptr noundef %572, i64 noundef %575)
  store i32 %576, ptr %9, align 4, !tbaa !9
  %577 = load i32, ptr %9, align 4, !tbaa !9
  %578 = icmp ne i32 %577, 0
  br i1 %578, label %579, label %659

579:                                              ; preds = %569
  %580 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %580, ptr %9, align 4, !tbaa !9
  %581 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %581, ptr %10, align 4, !tbaa !9
  store i32 84, ptr %11, align 4, !tbaa !9
  %582 = load i32, ptr %11, align 4, !tbaa !9
  %583 = load i32, ptr %10, align 4, !tbaa !9
  %584 = add i32 %583, %582
  store i32 %584, ptr %10, align 4, !tbaa !9
  %585 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %585, ptr %11, align 4, !tbaa !9
  %586 = load ptr, ptr %5, align 8, !tbaa !5
  %587 = getelementptr inbounds %struct.w2c_hermes, ptr %586, i32 0, i32 6
  %588 = load i32, ptr %11, align 4, !tbaa !9
  %589 = zext i32 %588 to i64
  %590 = call i32 @i32_load(ptr noundef %587, i64 noundef %589)
  store i32 %590, ptr %11, align 4, !tbaa !9
  %591 = load ptr, ptr %5, align 8, !tbaa !5
  %592 = getelementptr inbounds %struct.w2c_hermes, ptr %591, i32 0, i32 6
  %593 = load i32, ptr %11, align 4, !tbaa !9
  %594 = zext i32 %593 to i64
  %595 = add i64 %594, 16
  %596 = call i32 @i32_load(ptr noundef %592, i64 noundef %595)
  store i32 %596, ptr %11, align 4, !tbaa !9
  %597 = load i32, ptr %11, align 4, !tbaa !9
  %598 = load ptr, ptr %5, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.w2c_hermes, ptr %598, i32 0, i32 7
  %600 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %599, i32 0, i32 2
  %601 = load i32, ptr %600, align 4, !tbaa !11
  %602 = icmp ult i32 %597, %601
  br i1 %602, label %603, label %626

603:                                              ; preds = %579
  %604 = load ptr, ptr %5, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct.w2c_hermes, ptr %604, i32 0, i32 7
  %606 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %605, i32 0, i32 0
  %607 = load ptr, ptr %606, align 8, !tbaa !17
  %608 = load i32, ptr %11, align 4, !tbaa !9
  %609 = zext i32 %608 to i64
  %610 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %607, i64 %609
  %611 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %610, i32 0, i32 1
  %612 = load ptr, ptr %611, align 8, !tbaa !18
  %613 = icmp ne ptr %612, null
  br i1 %613, label %614, label %626

614:                                              ; preds = %603
  %615 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !5
  %616 = load ptr, ptr %5, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.w2c_hermes, ptr %616, i32 0, i32 7
  %618 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %617, i32 0, i32 0
  %619 = load ptr, ptr %618, align 8, !tbaa !17
  %620 = load i32, ptr %11, align 4, !tbaa !9
  %621 = zext i32 %620 to i64
  %622 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %619, i64 %621
  %623 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %622, i32 0, i32 0
  %624 = load ptr, ptr %623, align 8, !tbaa !20
  %625 = call zeroext i1 @func_types_eq(ptr noundef %615, ptr noundef %624)
  br label %626

626:                                              ; preds = %614, %603, %579
  %627 = phi i1 [ false, %603 ], [ false, %579 ], [ %625, %614 ]
  %628 = xor i1 %627, true
  %629 = xor i1 %628, true
  %630 = zext i1 %629 to i32
  %631 = sext i32 %630 to i64
  %632 = call i64 @llvm.expect.i64(i64 %631, i64 1)
  %633 = icmp ne i64 %632, 0
  br i1 %633, label %636, label %634

634:                                              ; preds = %626
  call void @wasm_rt_trap(i32 noundef 6) #6
  unreachable

635:                                              ; No predecessors!
  br label %636

636:                                              ; preds = %635, %626
  %637 = phi i1 [ true, %626 ], [ false, %635 ]
  %638 = zext i1 %637 to i32
  %639 = load ptr, ptr %5, align 8, !tbaa !5
  %640 = getelementptr inbounds %struct.w2c_hermes, ptr %639, i32 0, i32 7
  %641 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %640, i32 0, i32 0
  %642 = load ptr, ptr %641, align 8, !tbaa !17
  %643 = load i32, ptr %11, align 4, !tbaa !9
  %644 = zext i32 %643 to i64
  %645 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %642, i64 %644
  %646 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %645, i32 0, i32 1
  %647 = load ptr, ptr %646, align 8, !tbaa !18
  %648 = load ptr, ptr %5, align 8, !tbaa !5
  %649 = getelementptr inbounds %struct.w2c_hermes, ptr %648, i32 0, i32 7
  %650 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %649, i32 0, i32 0
  %651 = load ptr, ptr %650, align 8, !tbaa !17
  %652 = load i32, ptr %11, align 4, !tbaa !9
  %653 = zext i32 %652 to i64
  %654 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %651, i64 %653
  %655 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %654, i32 0, i32 2
  %656 = load ptr, ptr %655, align 8, !tbaa !21
  %657 = load i32, ptr %9, align 4, !tbaa !9
  %658 = load i32, ptr %10, align 4, !tbaa !9
  call void %647(ptr noundef %656, i32 noundef %657, i32 noundef %658)
  br label %659

659:                                              ; preds = %636, %569
  %660 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %660, ptr %9, align 4, !tbaa !9
  %661 = load ptr, ptr %5, align 8, !tbaa !5
  %662 = getelementptr inbounds %struct.w2c_hermes, ptr %661, i32 0, i32 6
  %663 = load i32, ptr %9, align 4, !tbaa !9
  %664 = zext i32 %663 to i64
  %665 = add i64 %664, 92
  %666 = call i32 @i32_load(ptr noundef %662, i64 noundef %665)
  store i32 %666, ptr %9, align 4, !tbaa !9
  %667 = load i32, ptr %9, align 4, !tbaa !9
  %668 = icmp ne i32 %667, 0
  br i1 %668, label %669, label %749

669:                                              ; preds = %659
  %670 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %670, ptr %9, align 4, !tbaa !9
  %671 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %671, ptr %10, align 4, !tbaa !9
  store i32 96, ptr %11, align 4, !tbaa !9
  %672 = load i32, ptr %11, align 4, !tbaa !9
  %673 = load i32, ptr %10, align 4, !tbaa !9
  %674 = add i32 %673, %672
  store i32 %674, ptr %10, align 4, !tbaa !9
  %675 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %675, ptr %11, align 4, !tbaa !9
  %676 = load ptr, ptr %5, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.w2c_hermes, ptr %676, i32 0, i32 6
  %678 = load i32, ptr %11, align 4, !tbaa !9
  %679 = zext i32 %678 to i64
  %680 = call i32 @i32_load(ptr noundef %677, i64 noundef %679)
  store i32 %680, ptr %11, align 4, !tbaa !9
  %681 = load ptr, ptr %5, align 8, !tbaa !5
  %682 = getelementptr inbounds %struct.w2c_hermes, ptr %681, i32 0, i32 6
  %683 = load i32, ptr %11, align 4, !tbaa !9
  %684 = zext i32 %683 to i64
  %685 = add i64 %684, 16
  %686 = call i32 @i32_load(ptr noundef %682, i64 noundef %685)
  store i32 %686, ptr %11, align 4, !tbaa !9
  %687 = load i32, ptr %11, align 4, !tbaa !9
  %688 = load ptr, ptr %5, align 8, !tbaa !5
  %689 = getelementptr inbounds %struct.w2c_hermes, ptr %688, i32 0, i32 7
  %690 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %689, i32 0, i32 2
  %691 = load i32, ptr %690, align 4, !tbaa !11
  %692 = icmp ult i32 %687, %691
  br i1 %692, label %693, label %716

693:                                              ; preds = %669
  %694 = load ptr, ptr %5, align 8, !tbaa !5
  %695 = getelementptr inbounds %struct.w2c_hermes, ptr %694, i32 0, i32 7
  %696 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %695, i32 0, i32 0
  %697 = load ptr, ptr %696, align 8, !tbaa !17
  %698 = load i32, ptr %11, align 4, !tbaa !9
  %699 = zext i32 %698 to i64
  %700 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %697, i64 %699
  %701 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %700, i32 0, i32 1
  %702 = load ptr, ptr %701, align 8, !tbaa !18
  %703 = icmp ne ptr %702, null
  br i1 %703, label %704, label %716

704:                                              ; preds = %693
  %705 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !5
  %706 = load ptr, ptr %5, align 8, !tbaa !5
  %707 = getelementptr inbounds %struct.w2c_hermes, ptr %706, i32 0, i32 7
  %708 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %707, i32 0, i32 0
  %709 = load ptr, ptr %708, align 8, !tbaa !17
  %710 = load i32, ptr %11, align 4, !tbaa !9
  %711 = zext i32 %710 to i64
  %712 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %709, i64 %711
  %713 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %712, i32 0, i32 0
  %714 = load ptr, ptr %713, align 8, !tbaa !20
  %715 = call zeroext i1 @func_types_eq(ptr noundef %705, ptr noundef %714)
  br label %716

716:                                              ; preds = %704, %693, %669
  %717 = phi i1 [ false, %693 ], [ false, %669 ], [ %715, %704 ]
  %718 = xor i1 %717, true
  %719 = xor i1 %718, true
  %720 = zext i1 %719 to i32
  %721 = sext i32 %720 to i64
  %722 = call i64 @llvm.expect.i64(i64 %721, i64 1)
  %723 = icmp ne i64 %722, 0
  br i1 %723, label %726, label %724

724:                                              ; preds = %716
  call void @wasm_rt_trap(i32 noundef 6) #6
  unreachable

725:                                              ; No predecessors!
  br label %726

726:                                              ; preds = %725, %716
  %727 = phi i1 [ true, %716 ], [ false, %725 ]
  %728 = zext i1 %727 to i32
  %729 = load ptr, ptr %5, align 8, !tbaa !5
  %730 = getelementptr inbounds %struct.w2c_hermes, ptr %729, i32 0, i32 7
  %731 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %730, i32 0, i32 0
  %732 = load ptr, ptr %731, align 8, !tbaa !17
  %733 = load i32, ptr %11, align 4, !tbaa !9
  %734 = zext i32 %733 to i64
  %735 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %732, i64 %734
  %736 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %735, i32 0, i32 1
  %737 = load ptr, ptr %736, align 8, !tbaa !18
  %738 = load ptr, ptr %5, align 8, !tbaa !5
  %739 = getelementptr inbounds %struct.w2c_hermes, ptr %738, i32 0, i32 7
  %740 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %739, i32 0, i32 0
  %741 = load ptr, ptr %740, align 8, !tbaa !17
  %742 = load i32, ptr %11, align 4, !tbaa !9
  %743 = zext i32 %742 to i64
  %744 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %741, i64 %743
  %745 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %744, i32 0, i32 2
  %746 = load ptr, ptr %745, align 8, !tbaa !21
  %747 = load i32, ptr %9, align 4, !tbaa !9
  %748 = load i32, ptr %10, align 4, !tbaa !9
  call void %737(ptr noundef %746, i32 noundef %747, i32 noundef %748)
  br label %749

749:                                              ; preds = %726, %659
  %750 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %750, ptr %9, align 4, !tbaa !9
  %751 = load ptr, ptr %5, align 8, !tbaa !5
  %752 = getelementptr inbounds %struct.w2c_hermes, ptr %751, i32 0, i32 6
  %753 = load i32, ptr %9, align 4, !tbaa !9
  %754 = zext i32 %753 to i64
  %755 = add i64 %754, 104
  %756 = call i32 @i32_load(ptr noundef %752, i64 noundef %755)
  store i32 %756, ptr %9, align 4, !tbaa !9
  %757 = load i32, ptr %9, align 4, !tbaa !9
  %758 = icmp ne i32 %757, 0
  br i1 %758, label %759, label %839

759:                                              ; preds = %749
  %760 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %760, ptr %9, align 4, !tbaa !9
  %761 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %761, ptr %10, align 4, !tbaa !9
  store i32 108, ptr %11, align 4, !tbaa !9
  %762 = load i32, ptr %11, align 4, !tbaa !9
  %763 = load i32, ptr %10, align 4, !tbaa !9
  %764 = add i32 %763, %762
  store i32 %764, ptr %10, align 4, !tbaa !9
  %765 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %765, ptr %11, align 4, !tbaa !9
  %766 = load ptr, ptr %5, align 8, !tbaa !5
  %767 = getelementptr inbounds %struct.w2c_hermes, ptr %766, i32 0, i32 6
  %768 = load i32, ptr %11, align 4, !tbaa !9
  %769 = zext i32 %768 to i64
  %770 = call i32 @i32_load(ptr noundef %767, i64 noundef %769)
  store i32 %770, ptr %11, align 4, !tbaa !9
  %771 = load ptr, ptr %5, align 8, !tbaa !5
  %772 = getelementptr inbounds %struct.w2c_hermes, ptr %771, i32 0, i32 6
  %773 = load i32, ptr %11, align 4, !tbaa !9
  %774 = zext i32 %773 to i64
  %775 = add i64 %774, 16
  %776 = call i32 @i32_load(ptr noundef %772, i64 noundef %775)
  store i32 %776, ptr %11, align 4, !tbaa !9
  %777 = load i32, ptr %11, align 4, !tbaa !9
  %778 = load ptr, ptr %5, align 8, !tbaa !5
  %779 = getelementptr inbounds %struct.w2c_hermes, ptr %778, i32 0, i32 7
  %780 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %779, i32 0, i32 2
  %781 = load i32, ptr %780, align 4, !tbaa !11
  %782 = icmp ult i32 %777, %781
  br i1 %782, label %783, label %806

783:                                              ; preds = %759
  %784 = load ptr, ptr %5, align 8, !tbaa !5
  %785 = getelementptr inbounds %struct.w2c_hermes, ptr %784, i32 0, i32 7
  %786 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %785, i32 0, i32 0
  %787 = load ptr, ptr %786, align 8, !tbaa !17
  %788 = load i32, ptr %11, align 4, !tbaa !9
  %789 = zext i32 %788 to i64
  %790 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %787, i64 %789
  %791 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %790, i32 0, i32 1
  %792 = load ptr, ptr %791, align 8, !tbaa !18
  %793 = icmp ne ptr %792, null
  br i1 %793, label %794, label %806

794:                                              ; preds = %783
  %795 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !5
  %796 = load ptr, ptr %5, align 8, !tbaa !5
  %797 = getelementptr inbounds %struct.w2c_hermes, ptr %796, i32 0, i32 7
  %798 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %797, i32 0, i32 0
  %799 = load ptr, ptr %798, align 8, !tbaa !17
  %800 = load i32, ptr %11, align 4, !tbaa !9
  %801 = zext i32 %800 to i64
  %802 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %799, i64 %801
  %803 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %802, i32 0, i32 0
  %804 = load ptr, ptr %803, align 8, !tbaa !20
  %805 = call zeroext i1 @func_types_eq(ptr noundef %795, ptr noundef %804)
  br label %806

806:                                              ; preds = %794, %783, %759
  %807 = phi i1 [ false, %783 ], [ false, %759 ], [ %805, %794 ]
  %808 = xor i1 %807, true
  %809 = xor i1 %808, true
  %810 = zext i1 %809 to i32
  %811 = sext i32 %810 to i64
  %812 = call i64 @llvm.expect.i64(i64 %811, i64 1)
  %813 = icmp ne i64 %812, 0
  br i1 %813, label %816, label %814

814:                                              ; preds = %806
  call void @wasm_rt_trap(i32 noundef 6) #6
  unreachable

815:                                              ; No predecessors!
  br label %816

816:                                              ; preds = %815, %806
  %817 = phi i1 [ true, %806 ], [ false, %815 ]
  %818 = zext i1 %817 to i32
  %819 = load ptr, ptr %5, align 8, !tbaa !5
  %820 = getelementptr inbounds %struct.w2c_hermes, ptr %819, i32 0, i32 7
  %821 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %820, i32 0, i32 0
  %822 = load ptr, ptr %821, align 8, !tbaa !17
  %823 = load i32, ptr %11, align 4, !tbaa !9
  %824 = zext i32 %823 to i64
  %825 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %822, i64 %824
  %826 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %825, i32 0, i32 1
  %827 = load ptr, ptr %826, align 8, !tbaa !18
  %828 = load ptr, ptr %5, align 8, !tbaa !5
  %829 = getelementptr inbounds %struct.w2c_hermes, ptr %828, i32 0, i32 7
  %830 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %829, i32 0, i32 0
  %831 = load ptr, ptr %830, align 8, !tbaa !17
  %832 = load i32, ptr %11, align 4, !tbaa !9
  %833 = zext i32 %832 to i64
  %834 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %831, i64 %833
  %835 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %834, i32 0, i32 2
  %836 = load ptr, ptr %835, align 8, !tbaa !21
  %837 = load i32, ptr %9, align 4, !tbaa !9
  %838 = load i32, ptr %10, align 4, !tbaa !9
  call void %827(ptr noundef %836, i32 noundef %837, i32 noundef %838)
  br label %839

839:                                              ; preds = %816, %749
  %840 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %840, ptr %9, align 4, !tbaa !9
  %841 = load ptr, ptr %5, align 8, !tbaa !5
  %842 = getelementptr inbounds %struct.w2c_hermes, ptr %841, i32 0, i32 6
  %843 = load i32, ptr %9, align 4, !tbaa !9
  %844 = zext i32 %843 to i64
  %845 = add i64 %844, 116
  %846 = call i32 @i32_load(ptr noundef %842, i64 noundef %845)
  store i32 %846, ptr %9, align 4, !tbaa !9
  %847 = load i32, ptr %9, align 4, !tbaa !9
  %848 = icmp ne i32 %847, 0
  br i1 %848, label %849, label %929

849:                                              ; preds = %839
  %850 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %850, ptr %9, align 4, !tbaa !9
  %851 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %851, ptr %10, align 4, !tbaa !9
  store i32 120, ptr %11, align 4, !tbaa !9
  %852 = load i32, ptr %11, align 4, !tbaa !9
  %853 = load i32, ptr %10, align 4, !tbaa !9
  %854 = add i32 %853, %852
  store i32 %854, ptr %10, align 4, !tbaa !9
  %855 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %855, ptr %11, align 4, !tbaa !9
  %856 = load ptr, ptr %5, align 8, !tbaa !5
  %857 = getelementptr inbounds %struct.w2c_hermes, ptr %856, i32 0, i32 6
  %858 = load i32, ptr %11, align 4, !tbaa !9
  %859 = zext i32 %858 to i64
  %860 = call i32 @i32_load(ptr noundef %857, i64 noundef %859)
  store i32 %860, ptr %11, align 4, !tbaa !9
  %861 = load ptr, ptr %5, align 8, !tbaa !5
  %862 = getelementptr inbounds %struct.w2c_hermes, ptr %861, i32 0, i32 6
  %863 = load i32, ptr %11, align 4, !tbaa !9
  %864 = zext i32 %863 to i64
  %865 = add i64 %864, 16
  %866 = call i32 @i32_load(ptr noundef %862, i64 noundef %865)
  store i32 %866, ptr %11, align 4, !tbaa !9
  %867 = load i32, ptr %11, align 4, !tbaa !9
  %868 = load ptr, ptr %5, align 8, !tbaa !5
  %869 = getelementptr inbounds %struct.w2c_hermes, ptr %868, i32 0, i32 7
  %870 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %869, i32 0, i32 2
  %871 = load i32, ptr %870, align 4, !tbaa !11
  %872 = icmp ult i32 %867, %871
  br i1 %872, label %873, label %896

873:                                              ; preds = %849
  %874 = load ptr, ptr %5, align 8, !tbaa !5
  %875 = getelementptr inbounds %struct.w2c_hermes, ptr %874, i32 0, i32 7
  %876 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %875, i32 0, i32 0
  %877 = load ptr, ptr %876, align 8, !tbaa !17
  %878 = load i32, ptr %11, align 4, !tbaa !9
  %879 = zext i32 %878 to i64
  %880 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %877, i64 %879
  %881 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %880, i32 0, i32 1
  %882 = load ptr, ptr %881, align 8, !tbaa !18
  %883 = icmp ne ptr %882, null
  br i1 %883, label %884, label %896

884:                                              ; preds = %873
  %885 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !5
  %886 = load ptr, ptr %5, align 8, !tbaa !5
  %887 = getelementptr inbounds %struct.w2c_hermes, ptr %886, i32 0, i32 7
  %888 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %887, i32 0, i32 0
  %889 = load ptr, ptr %888, align 8, !tbaa !17
  %890 = load i32, ptr %11, align 4, !tbaa !9
  %891 = zext i32 %890 to i64
  %892 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %889, i64 %891
  %893 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %892, i32 0, i32 0
  %894 = load ptr, ptr %893, align 8, !tbaa !20
  %895 = call zeroext i1 @func_types_eq(ptr noundef %885, ptr noundef %894)
  br label %896

896:                                              ; preds = %884, %873, %849
  %897 = phi i1 [ false, %873 ], [ false, %849 ], [ %895, %884 ]
  %898 = xor i1 %897, true
  %899 = xor i1 %898, true
  %900 = zext i1 %899 to i32
  %901 = sext i32 %900 to i64
  %902 = call i64 @llvm.expect.i64(i64 %901, i64 1)
  %903 = icmp ne i64 %902, 0
  br i1 %903, label %906, label %904

904:                                              ; preds = %896
  call void @wasm_rt_trap(i32 noundef 6) #6
  unreachable

905:                                              ; No predecessors!
  br label %906

906:                                              ; preds = %905, %896
  %907 = phi i1 [ true, %896 ], [ false, %905 ]
  %908 = zext i1 %907 to i32
  %909 = load ptr, ptr %5, align 8, !tbaa !5
  %910 = getelementptr inbounds %struct.w2c_hermes, ptr %909, i32 0, i32 7
  %911 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %910, i32 0, i32 0
  %912 = load ptr, ptr %911, align 8, !tbaa !17
  %913 = load i32, ptr %11, align 4, !tbaa !9
  %914 = zext i32 %913 to i64
  %915 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %912, i64 %914
  %916 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %915, i32 0, i32 1
  %917 = load ptr, ptr %916, align 8, !tbaa !18
  %918 = load ptr, ptr %5, align 8, !tbaa !5
  %919 = getelementptr inbounds %struct.w2c_hermes, ptr %918, i32 0, i32 7
  %920 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %919, i32 0, i32 0
  %921 = load ptr, ptr %920, align 8, !tbaa !17
  %922 = load i32, ptr %11, align 4, !tbaa !9
  %923 = zext i32 %922 to i64
  %924 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %921, i64 %923
  %925 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %924, i32 0, i32 2
  %926 = load ptr, ptr %925, align 8, !tbaa !21
  %927 = load i32, ptr %9, align 4, !tbaa !9
  %928 = load i32, ptr %10, align 4, !tbaa !9
  call void %917(ptr noundef %926, i32 noundef %927, i32 noundef %928)
  br label %929

929:                                              ; preds = %906, %839
  %930 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %930, ptr %9, align 4, !tbaa !9
  %931 = load ptr, ptr %5, align 8, !tbaa !5
  %932 = getelementptr inbounds %struct.w2c_hermes, ptr %931, i32 0, i32 6
  %933 = load i32, ptr %9, align 4, !tbaa !9
  %934 = zext i32 %933 to i64
  %935 = add i64 %934, 128
  %936 = call i32 @i32_load(ptr noundef %932, i64 noundef %935)
  store i32 %936, ptr %9, align 4, !tbaa !9
  %937 = load i32, ptr %9, align 4, !tbaa !9
  %938 = icmp ne i32 %937, 0
  br i1 %938, label %939, label %1019

939:                                              ; preds = %929
  %940 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %940, ptr %9, align 4, !tbaa !9
  %941 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %941, ptr %10, align 4, !tbaa !9
  store i32 132, ptr %11, align 4, !tbaa !9
  %942 = load i32, ptr %11, align 4, !tbaa !9
  %943 = load i32, ptr %10, align 4, !tbaa !9
  %944 = add i32 %943, %942
  store i32 %944, ptr %10, align 4, !tbaa !9
  %945 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %945, ptr %11, align 4, !tbaa !9
  %946 = load ptr, ptr %5, align 8, !tbaa !5
  %947 = getelementptr inbounds %struct.w2c_hermes, ptr %946, i32 0, i32 6
  %948 = load i32, ptr %11, align 4, !tbaa !9
  %949 = zext i32 %948 to i64
  %950 = call i32 @i32_load(ptr noundef %947, i64 noundef %949)
  store i32 %950, ptr %11, align 4, !tbaa !9
  %951 = load ptr, ptr %5, align 8, !tbaa !5
  %952 = getelementptr inbounds %struct.w2c_hermes, ptr %951, i32 0, i32 6
  %953 = load i32, ptr %11, align 4, !tbaa !9
  %954 = zext i32 %953 to i64
  %955 = add i64 %954, 16
  %956 = call i32 @i32_load(ptr noundef %952, i64 noundef %955)
  store i32 %956, ptr %11, align 4, !tbaa !9
  %957 = load i32, ptr %11, align 4, !tbaa !9
  %958 = load ptr, ptr %5, align 8, !tbaa !5
  %959 = getelementptr inbounds %struct.w2c_hermes, ptr %958, i32 0, i32 7
  %960 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %959, i32 0, i32 2
  %961 = load i32, ptr %960, align 4, !tbaa !11
  %962 = icmp ult i32 %957, %961
  br i1 %962, label %963, label %986

963:                                              ; preds = %939
  %964 = load ptr, ptr %5, align 8, !tbaa !5
  %965 = getelementptr inbounds %struct.w2c_hermes, ptr %964, i32 0, i32 7
  %966 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %965, i32 0, i32 0
  %967 = load ptr, ptr %966, align 8, !tbaa !17
  %968 = load i32, ptr %11, align 4, !tbaa !9
  %969 = zext i32 %968 to i64
  %970 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %967, i64 %969
  %971 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %970, i32 0, i32 1
  %972 = load ptr, ptr %971, align 8, !tbaa !18
  %973 = icmp ne ptr %972, null
  br i1 %973, label %974, label %986

974:                                              ; preds = %963
  %975 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !5
  %976 = load ptr, ptr %5, align 8, !tbaa !5
  %977 = getelementptr inbounds %struct.w2c_hermes, ptr %976, i32 0, i32 7
  %978 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %977, i32 0, i32 0
  %979 = load ptr, ptr %978, align 8, !tbaa !17
  %980 = load i32, ptr %11, align 4, !tbaa !9
  %981 = zext i32 %980 to i64
  %982 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %979, i64 %981
  %983 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %982, i32 0, i32 0
  %984 = load ptr, ptr %983, align 8, !tbaa !20
  %985 = call zeroext i1 @func_types_eq(ptr noundef %975, ptr noundef %984)
  br label %986

986:                                              ; preds = %974, %963, %939
  %987 = phi i1 [ false, %963 ], [ false, %939 ], [ %985, %974 ]
  %988 = xor i1 %987, true
  %989 = xor i1 %988, true
  %990 = zext i1 %989 to i32
  %991 = sext i32 %990 to i64
  %992 = call i64 @llvm.expect.i64(i64 %991, i64 1)
  %993 = icmp ne i64 %992, 0
  br i1 %993, label %996, label %994

994:                                              ; preds = %986
  call void @wasm_rt_trap(i32 noundef 6) #6
  unreachable

995:                                              ; No predecessors!
  br label %996

996:                                              ; preds = %995, %986
  %997 = phi i1 [ true, %986 ], [ false, %995 ]
  %998 = zext i1 %997 to i32
  %999 = load ptr, ptr %5, align 8, !tbaa !5
  %1000 = getelementptr inbounds %struct.w2c_hermes, ptr %999, i32 0, i32 7
  %1001 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1000, i32 0, i32 0
  %1002 = load ptr, ptr %1001, align 8, !tbaa !17
  %1003 = load i32, ptr %11, align 4, !tbaa !9
  %1004 = zext i32 %1003 to i64
  %1005 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1002, i64 %1004
  %1006 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1005, i32 0, i32 1
  %1007 = load ptr, ptr %1006, align 8, !tbaa !18
  %1008 = load ptr, ptr %5, align 8, !tbaa !5
  %1009 = getelementptr inbounds %struct.w2c_hermes, ptr %1008, i32 0, i32 7
  %1010 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1009, i32 0, i32 0
  %1011 = load ptr, ptr %1010, align 8, !tbaa !17
  %1012 = load i32, ptr %11, align 4, !tbaa !9
  %1013 = zext i32 %1012 to i64
  %1014 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1011, i64 %1013
  %1015 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1014, i32 0, i32 2
  %1016 = load ptr, ptr %1015, align 8, !tbaa !21
  %1017 = load i32, ptr %9, align 4, !tbaa !9
  %1018 = load i32, ptr %10, align 4, !tbaa !9
  call void %1007(ptr noundef %1016, i32 noundef %1017, i32 noundef %1018)
  br label %1019

1019:                                             ; preds = %996, %929
  %1020 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1020, ptr %9, align 4, !tbaa !9
  %1021 = load ptr, ptr %5, align 8, !tbaa !5
  %1022 = getelementptr inbounds %struct.w2c_hermes, ptr %1021, i32 0, i32 6
  %1023 = load i32, ptr %9, align 4, !tbaa !9
  %1024 = zext i32 %1023 to i64
  %1025 = add i64 %1024, 140
  %1026 = call i32 @i32_load(ptr noundef %1022, i64 noundef %1025)
  store i32 %1026, ptr %9, align 4, !tbaa !9
  %1027 = load i32, ptr %9, align 4, !tbaa !9
  %1028 = icmp ne i32 %1027, 0
  br i1 %1028, label %1029, label %1109

1029:                                             ; preds = %1019
  %1030 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1030, ptr %9, align 4, !tbaa !9
  %1031 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1031, ptr %10, align 4, !tbaa !9
  store i32 144, ptr %11, align 4, !tbaa !9
  %1032 = load i32, ptr %11, align 4, !tbaa !9
  %1033 = load i32, ptr %10, align 4, !tbaa !9
  %1034 = add i32 %1033, %1032
  store i32 %1034, ptr %10, align 4, !tbaa !9
  %1035 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1035, ptr %11, align 4, !tbaa !9
  %1036 = load ptr, ptr %5, align 8, !tbaa !5
  %1037 = getelementptr inbounds %struct.w2c_hermes, ptr %1036, i32 0, i32 6
  %1038 = load i32, ptr %11, align 4, !tbaa !9
  %1039 = zext i32 %1038 to i64
  %1040 = call i32 @i32_load(ptr noundef %1037, i64 noundef %1039)
  store i32 %1040, ptr %11, align 4, !tbaa !9
  %1041 = load ptr, ptr %5, align 8, !tbaa !5
  %1042 = getelementptr inbounds %struct.w2c_hermes, ptr %1041, i32 0, i32 6
  %1043 = load i32, ptr %11, align 4, !tbaa !9
  %1044 = zext i32 %1043 to i64
  %1045 = add i64 %1044, 16
  %1046 = call i32 @i32_load(ptr noundef %1042, i64 noundef %1045)
  store i32 %1046, ptr %11, align 4, !tbaa !9
  %1047 = load i32, ptr %11, align 4, !tbaa !9
  %1048 = load ptr, ptr %5, align 8, !tbaa !5
  %1049 = getelementptr inbounds %struct.w2c_hermes, ptr %1048, i32 0, i32 7
  %1050 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1049, i32 0, i32 2
  %1051 = load i32, ptr %1050, align 4, !tbaa !11
  %1052 = icmp ult i32 %1047, %1051
  br i1 %1052, label %1053, label %1076

1053:                                             ; preds = %1029
  %1054 = load ptr, ptr %5, align 8, !tbaa !5
  %1055 = getelementptr inbounds %struct.w2c_hermes, ptr %1054, i32 0, i32 7
  %1056 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1055, i32 0, i32 0
  %1057 = load ptr, ptr %1056, align 8, !tbaa !17
  %1058 = load i32, ptr %11, align 4, !tbaa !9
  %1059 = zext i32 %1058 to i64
  %1060 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1057, i64 %1059
  %1061 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1060, i32 0, i32 1
  %1062 = load ptr, ptr %1061, align 8, !tbaa !18
  %1063 = icmp ne ptr %1062, null
  br i1 %1063, label %1064, label %1076

1064:                                             ; preds = %1053
  %1065 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !5
  %1066 = load ptr, ptr %5, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.w2c_hermes, ptr %1066, i32 0, i32 7
  %1068 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1067, i32 0, i32 0
  %1069 = load ptr, ptr %1068, align 8, !tbaa !17
  %1070 = load i32, ptr %11, align 4, !tbaa !9
  %1071 = zext i32 %1070 to i64
  %1072 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1069, i64 %1071
  %1073 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1072, i32 0, i32 0
  %1074 = load ptr, ptr %1073, align 8, !tbaa !20
  %1075 = call zeroext i1 @func_types_eq(ptr noundef %1065, ptr noundef %1074)
  br label %1076

1076:                                             ; preds = %1064, %1053, %1029
  %1077 = phi i1 [ false, %1053 ], [ false, %1029 ], [ %1075, %1064 ]
  %1078 = xor i1 %1077, true
  %1079 = xor i1 %1078, true
  %1080 = zext i1 %1079 to i32
  %1081 = sext i32 %1080 to i64
  %1082 = call i64 @llvm.expect.i64(i64 %1081, i64 1)
  %1083 = icmp ne i64 %1082, 0
  br i1 %1083, label %1086, label %1084

1084:                                             ; preds = %1076
  call void @wasm_rt_trap(i32 noundef 6) #6
  unreachable

1085:                                             ; No predecessors!
  br label %1086

1086:                                             ; preds = %1085, %1076
  %1087 = phi i1 [ true, %1076 ], [ false, %1085 ]
  %1088 = zext i1 %1087 to i32
  %1089 = load ptr, ptr %5, align 8, !tbaa !5
  %1090 = getelementptr inbounds %struct.w2c_hermes, ptr %1089, i32 0, i32 7
  %1091 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1090, i32 0, i32 0
  %1092 = load ptr, ptr %1091, align 8, !tbaa !17
  %1093 = load i32, ptr %11, align 4, !tbaa !9
  %1094 = zext i32 %1093 to i64
  %1095 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1092, i64 %1094
  %1096 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1095, i32 0, i32 1
  %1097 = load ptr, ptr %1096, align 8, !tbaa !18
  %1098 = load ptr, ptr %5, align 8, !tbaa !5
  %1099 = getelementptr inbounds %struct.w2c_hermes, ptr %1098, i32 0, i32 7
  %1100 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1099, i32 0, i32 0
  %1101 = load ptr, ptr %1100, align 8, !tbaa !17
  %1102 = load i32, ptr %11, align 4, !tbaa !9
  %1103 = zext i32 %1102 to i64
  %1104 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1101, i64 %1103
  %1105 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1104, i32 0, i32 2
  %1106 = load ptr, ptr %1105, align 8, !tbaa !21
  %1107 = load i32, ptr %9, align 4, !tbaa !9
  %1108 = load i32, ptr %10, align 4, !tbaa !9
  call void %1097(ptr noundef %1106, i32 noundef %1107, i32 noundef %1108)
  br label %1109

1109:                                             ; preds = %1086, %1019
  %1110 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1110, ptr %9, align 4, !tbaa !9
  %1111 = load ptr, ptr %5, align 8, !tbaa !5
  %1112 = getelementptr inbounds %struct.w2c_hermes, ptr %1111, i32 0, i32 6
  %1113 = load i32, ptr %9, align 4, !tbaa !9
  %1114 = zext i32 %1113 to i64
  %1115 = add i64 %1114, 152
  %1116 = call i32 @i32_load(ptr noundef %1112, i64 noundef %1115)
  store i32 %1116, ptr %9, align 4, !tbaa !9
  %1117 = load i32, ptr %9, align 4, !tbaa !9
  %1118 = icmp ne i32 %1117, 0
  br i1 %1118, label %1119, label %1199

1119:                                             ; preds = %1109
  %1120 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1120, ptr %9, align 4, !tbaa !9
  %1121 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1121, ptr %10, align 4, !tbaa !9
  store i32 156, ptr %11, align 4, !tbaa !9
  %1122 = load i32, ptr %11, align 4, !tbaa !9
  %1123 = load i32, ptr %10, align 4, !tbaa !9
  %1124 = add i32 %1123, %1122
  store i32 %1124, ptr %10, align 4, !tbaa !9
  %1125 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1125, ptr %11, align 4, !tbaa !9
  %1126 = load ptr, ptr %5, align 8, !tbaa !5
  %1127 = getelementptr inbounds %struct.w2c_hermes, ptr %1126, i32 0, i32 6
  %1128 = load i32, ptr %11, align 4, !tbaa !9
  %1129 = zext i32 %1128 to i64
  %1130 = call i32 @i32_load(ptr noundef %1127, i64 noundef %1129)
  store i32 %1130, ptr %11, align 4, !tbaa !9
  %1131 = load ptr, ptr %5, align 8, !tbaa !5
  %1132 = getelementptr inbounds %struct.w2c_hermes, ptr %1131, i32 0, i32 6
  %1133 = load i32, ptr %11, align 4, !tbaa !9
  %1134 = zext i32 %1133 to i64
  %1135 = add i64 %1134, 16
  %1136 = call i32 @i32_load(ptr noundef %1132, i64 noundef %1135)
  store i32 %1136, ptr %11, align 4, !tbaa !9
  %1137 = load i32, ptr %11, align 4, !tbaa !9
  %1138 = load ptr, ptr %5, align 8, !tbaa !5
  %1139 = getelementptr inbounds %struct.w2c_hermes, ptr %1138, i32 0, i32 7
  %1140 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1139, i32 0, i32 2
  %1141 = load i32, ptr %1140, align 4, !tbaa !11
  %1142 = icmp ult i32 %1137, %1141
  br i1 %1142, label %1143, label %1166

1143:                                             ; preds = %1119
  %1144 = load ptr, ptr %5, align 8, !tbaa !5
  %1145 = getelementptr inbounds %struct.w2c_hermes, ptr %1144, i32 0, i32 7
  %1146 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1145, i32 0, i32 0
  %1147 = load ptr, ptr %1146, align 8, !tbaa !17
  %1148 = load i32, ptr %11, align 4, !tbaa !9
  %1149 = zext i32 %1148 to i64
  %1150 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1147, i64 %1149
  %1151 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1150, i32 0, i32 1
  %1152 = load ptr, ptr %1151, align 8, !tbaa !18
  %1153 = icmp ne ptr %1152, null
  br i1 %1153, label %1154, label %1166

1154:                                             ; preds = %1143
  %1155 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !5
  %1156 = load ptr, ptr %5, align 8, !tbaa !5
  %1157 = getelementptr inbounds %struct.w2c_hermes, ptr %1156, i32 0, i32 7
  %1158 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1157, i32 0, i32 0
  %1159 = load ptr, ptr %1158, align 8, !tbaa !17
  %1160 = load i32, ptr %11, align 4, !tbaa !9
  %1161 = zext i32 %1160 to i64
  %1162 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1159, i64 %1161
  %1163 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1162, i32 0, i32 0
  %1164 = load ptr, ptr %1163, align 8, !tbaa !20
  %1165 = call zeroext i1 @func_types_eq(ptr noundef %1155, ptr noundef %1164)
  br label %1166

1166:                                             ; preds = %1154, %1143, %1119
  %1167 = phi i1 [ false, %1143 ], [ false, %1119 ], [ %1165, %1154 ]
  %1168 = xor i1 %1167, true
  %1169 = xor i1 %1168, true
  %1170 = zext i1 %1169 to i32
  %1171 = sext i32 %1170 to i64
  %1172 = call i64 @llvm.expect.i64(i64 %1171, i64 1)
  %1173 = icmp ne i64 %1172, 0
  br i1 %1173, label %1176, label %1174

1174:                                             ; preds = %1166
  call void @wasm_rt_trap(i32 noundef 6) #6
  unreachable

1175:                                             ; No predecessors!
  br label %1176

1176:                                             ; preds = %1175, %1166
  %1177 = phi i1 [ true, %1166 ], [ false, %1175 ]
  %1178 = zext i1 %1177 to i32
  %1179 = load ptr, ptr %5, align 8, !tbaa !5
  %1180 = getelementptr inbounds %struct.w2c_hermes, ptr %1179, i32 0, i32 7
  %1181 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1180, i32 0, i32 0
  %1182 = load ptr, ptr %1181, align 8, !tbaa !17
  %1183 = load i32, ptr %11, align 4, !tbaa !9
  %1184 = zext i32 %1183 to i64
  %1185 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1182, i64 %1184
  %1186 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1185, i32 0, i32 1
  %1187 = load ptr, ptr %1186, align 8, !tbaa !18
  %1188 = load ptr, ptr %5, align 8, !tbaa !5
  %1189 = getelementptr inbounds %struct.w2c_hermes, ptr %1188, i32 0, i32 7
  %1190 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1189, i32 0, i32 0
  %1191 = load ptr, ptr %1190, align 8, !tbaa !17
  %1192 = load i32, ptr %11, align 4, !tbaa !9
  %1193 = zext i32 %1192 to i64
  %1194 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1191, i64 %1193
  %1195 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1194, i32 0, i32 2
  %1196 = load ptr, ptr %1195, align 8, !tbaa !21
  %1197 = load i32, ptr %9, align 4, !tbaa !9
  %1198 = load i32, ptr %10, align 4, !tbaa !9
  call void %1187(ptr noundef %1196, i32 noundef %1197, i32 noundef %1198)
  br label %1199

1199:                                             ; preds = %1176, %1109
  %1200 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1200, ptr %9, align 4, !tbaa !9
  %1201 = load ptr, ptr %5, align 8, !tbaa !5
  %1202 = getelementptr inbounds %struct.w2c_hermes, ptr %1201, i32 0, i32 6
  %1203 = load i32, ptr %9, align 4, !tbaa !9
  %1204 = zext i32 %1203 to i64
  %1205 = add i64 %1204, 164
  %1206 = call i32 @i32_load(ptr noundef %1202, i64 noundef %1205)
  store i32 %1206, ptr %9, align 4, !tbaa !9
  %1207 = load i32, ptr %9, align 4, !tbaa !9
  %1208 = icmp ne i32 %1207, 0
  br i1 %1208, label %1209, label %1289

1209:                                             ; preds = %1199
  %1210 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1210, ptr %9, align 4, !tbaa !9
  %1211 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1211, ptr %10, align 4, !tbaa !9
  store i32 168, ptr %11, align 4, !tbaa !9
  %1212 = load i32, ptr %11, align 4, !tbaa !9
  %1213 = load i32, ptr %10, align 4, !tbaa !9
  %1214 = add i32 %1213, %1212
  store i32 %1214, ptr %10, align 4, !tbaa !9
  %1215 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1215, ptr %11, align 4, !tbaa !9
  %1216 = load ptr, ptr %5, align 8, !tbaa !5
  %1217 = getelementptr inbounds %struct.w2c_hermes, ptr %1216, i32 0, i32 6
  %1218 = load i32, ptr %11, align 4, !tbaa !9
  %1219 = zext i32 %1218 to i64
  %1220 = call i32 @i32_load(ptr noundef %1217, i64 noundef %1219)
  store i32 %1220, ptr %11, align 4, !tbaa !9
  %1221 = load ptr, ptr %5, align 8, !tbaa !5
  %1222 = getelementptr inbounds %struct.w2c_hermes, ptr %1221, i32 0, i32 6
  %1223 = load i32, ptr %11, align 4, !tbaa !9
  %1224 = zext i32 %1223 to i64
  %1225 = add i64 %1224, 16
  %1226 = call i32 @i32_load(ptr noundef %1222, i64 noundef %1225)
  store i32 %1226, ptr %11, align 4, !tbaa !9
  %1227 = load i32, ptr %11, align 4, !tbaa !9
  %1228 = load ptr, ptr %5, align 8, !tbaa !5
  %1229 = getelementptr inbounds %struct.w2c_hermes, ptr %1228, i32 0, i32 7
  %1230 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1229, i32 0, i32 2
  %1231 = load i32, ptr %1230, align 4, !tbaa !11
  %1232 = icmp ult i32 %1227, %1231
  br i1 %1232, label %1233, label %1256

1233:                                             ; preds = %1209
  %1234 = load ptr, ptr %5, align 8, !tbaa !5
  %1235 = getelementptr inbounds %struct.w2c_hermes, ptr %1234, i32 0, i32 7
  %1236 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1235, i32 0, i32 0
  %1237 = load ptr, ptr %1236, align 8, !tbaa !17
  %1238 = load i32, ptr %11, align 4, !tbaa !9
  %1239 = zext i32 %1238 to i64
  %1240 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1237, i64 %1239
  %1241 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1240, i32 0, i32 1
  %1242 = load ptr, ptr %1241, align 8, !tbaa !18
  %1243 = icmp ne ptr %1242, null
  br i1 %1243, label %1244, label %1256

1244:                                             ; preds = %1233
  %1245 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !5
  %1246 = load ptr, ptr %5, align 8, !tbaa !5
  %1247 = getelementptr inbounds %struct.w2c_hermes, ptr %1246, i32 0, i32 7
  %1248 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1247, i32 0, i32 0
  %1249 = load ptr, ptr %1248, align 8, !tbaa !17
  %1250 = load i32, ptr %11, align 4, !tbaa !9
  %1251 = zext i32 %1250 to i64
  %1252 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1249, i64 %1251
  %1253 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1252, i32 0, i32 0
  %1254 = load ptr, ptr %1253, align 8, !tbaa !20
  %1255 = call zeroext i1 @func_types_eq(ptr noundef %1245, ptr noundef %1254)
  br label %1256

1256:                                             ; preds = %1244, %1233, %1209
  %1257 = phi i1 [ false, %1233 ], [ false, %1209 ], [ %1255, %1244 ]
  %1258 = xor i1 %1257, true
  %1259 = xor i1 %1258, true
  %1260 = zext i1 %1259 to i32
  %1261 = sext i32 %1260 to i64
  %1262 = call i64 @llvm.expect.i64(i64 %1261, i64 1)
  %1263 = icmp ne i64 %1262, 0
  br i1 %1263, label %1266, label %1264

1264:                                             ; preds = %1256
  call void @wasm_rt_trap(i32 noundef 6) #6
  unreachable

1265:                                             ; No predecessors!
  br label %1266

1266:                                             ; preds = %1265, %1256
  %1267 = phi i1 [ true, %1256 ], [ false, %1265 ]
  %1268 = zext i1 %1267 to i32
  %1269 = load ptr, ptr %5, align 8, !tbaa !5
  %1270 = getelementptr inbounds %struct.w2c_hermes, ptr %1269, i32 0, i32 7
  %1271 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1270, i32 0, i32 0
  %1272 = load ptr, ptr %1271, align 8, !tbaa !17
  %1273 = load i32, ptr %11, align 4, !tbaa !9
  %1274 = zext i32 %1273 to i64
  %1275 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1272, i64 %1274
  %1276 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1275, i32 0, i32 1
  %1277 = load ptr, ptr %1276, align 8, !tbaa !18
  %1278 = load ptr, ptr %5, align 8, !tbaa !5
  %1279 = getelementptr inbounds %struct.w2c_hermes, ptr %1278, i32 0, i32 7
  %1280 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1279, i32 0, i32 0
  %1281 = load ptr, ptr %1280, align 8, !tbaa !17
  %1282 = load i32, ptr %11, align 4, !tbaa !9
  %1283 = zext i32 %1282 to i64
  %1284 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1281, i64 %1283
  %1285 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1284, i32 0, i32 2
  %1286 = load ptr, ptr %1285, align 8, !tbaa !21
  %1287 = load i32, ptr %9, align 4, !tbaa !9
  %1288 = load i32, ptr %10, align 4, !tbaa !9
  call void %1277(ptr noundef %1286, i32 noundef %1287, i32 noundef %1288)
  br label %1289

1289:                                             ; preds = %1266, %1199
  %1290 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1290, ptr %9, align 4, !tbaa !9
  %1291 = load ptr, ptr %5, align 8, !tbaa !5
  %1292 = getelementptr inbounds %struct.w2c_hermes, ptr %1291, i32 0, i32 6
  %1293 = load i32, ptr %9, align 4, !tbaa !9
  %1294 = zext i32 %1293 to i64
  %1295 = add i64 %1294, 176
  %1296 = call i32 @i32_load(ptr noundef %1292, i64 noundef %1295)
  store i32 %1296, ptr %9, align 4, !tbaa !9
  %1297 = load i32, ptr %9, align 4, !tbaa !9
  %1298 = icmp ne i32 %1297, 0
  br i1 %1298, label %1299, label %1379

1299:                                             ; preds = %1289
  %1300 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1300, ptr %9, align 4, !tbaa !9
  %1301 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1301, ptr %10, align 4, !tbaa !9
  store i32 180, ptr %11, align 4, !tbaa !9
  %1302 = load i32, ptr %11, align 4, !tbaa !9
  %1303 = load i32, ptr %10, align 4, !tbaa !9
  %1304 = add i32 %1303, %1302
  store i32 %1304, ptr %10, align 4, !tbaa !9
  %1305 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1305, ptr %11, align 4, !tbaa !9
  %1306 = load ptr, ptr %5, align 8, !tbaa !5
  %1307 = getelementptr inbounds %struct.w2c_hermes, ptr %1306, i32 0, i32 6
  %1308 = load i32, ptr %11, align 4, !tbaa !9
  %1309 = zext i32 %1308 to i64
  %1310 = call i32 @i32_load(ptr noundef %1307, i64 noundef %1309)
  store i32 %1310, ptr %11, align 4, !tbaa !9
  %1311 = load ptr, ptr %5, align 8, !tbaa !5
  %1312 = getelementptr inbounds %struct.w2c_hermes, ptr %1311, i32 0, i32 6
  %1313 = load i32, ptr %11, align 4, !tbaa !9
  %1314 = zext i32 %1313 to i64
  %1315 = add i64 %1314, 16
  %1316 = call i32 @i32_load(ptr noundef %1312, i64 noundef %1315)
  store i32 %1316, ptr %11, align 4, !tbaa !9
  %1317 = load i32, ptr %11, align 4, !tbaa !9
  %1318 = load ptr, ptr %5, align 8, !tbaa !5
  %1319 = getelementptr inbounds %struct.w2c_hermes, ptr %1318, i32 0, i32 7
  %1320 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1319, i32 0, i32 2
  %1321 = load i32, ptr %1320, align 4, !tbaa !11
  %1322 = icmp ult i32 %1317, %1321
  br i1 %1322, label %1323, label %1346

1323:                                             ; preds = %1299
  %1324 = load ptr, ptr %5, align 8, !tbaa !5
  %1325 = getelementptr inbounds %struct.w2c_hermes, ptr %1324, i32 0, i32 7
  %1326 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1325, i32 0, i32 0
  %1327 = load ptr, ptr %1326, align 8, !tbaa !17
  %1328 = load i32, ptr %11, align 4, !tbaa !9
  %1329 = zext i32 %1328 to i64
  %1330 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1327, i64 %1329
  %1331 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1330, i32 0, i32 1
  %1332 = load ptr, ptr %1331, align 8, !tbaa !18
  %1333 = icmp ne ptr %1332, null
  br i1 %1333, label %1334, label %1346

1334:                                             ; preds = %1323
  %1335 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !5
  %1336 = load ptr, ptr %5, align 8, !tbaa !5
  %1337 = getelementptr inbounds %struct.w2c_hermes, ptr %1336, i32 0, i32 7
  %1338 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1337, i32 0, i32 0
  %1339 = load ptr, ptr %1338, align 8, !tbaa !17
  %1340 = load i32, ptr %11, align 4, !tbaa !9
  %1341 = zext i32 %1340 to i64
  %1342 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1339, i64 %1341
  %1343 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1342, i32 0, i32 0
  %1344 = load ptr, ptr %1343, align 8, !tbaa !20
  %1345 = call zeroext i1 @func_types_eq(ptr noundef %1335, ptr noundef %1344)
  br label %1346

1346:                                             ; preds = %1334, %1323, %1299
  %1347 = phi i1 [ false, %1323 ], [ false, %1299 ], [ %1345, %1334 ]
  %1348 = xor i1 %1347, true
  %1349 = xor i1 %1348, true
  %1350 = zext i1 %1349 to i32
  %1351 = sext i32 %1350 to i64
  %1352 = call i64 @llvm.expect.i64(i64 %1351, i64 1)
  %1353 = icmp ne i64 %1352, 0
  br i1 %1353, label %1356, label %1354

1354:                                             ; preds = %1346
  call void @wasm_rt_trap(i32 noundef 6) #6
  unreachable

1355:                                             ; No predecessors!
  br label %1356

1356:                                             ; preds = %1355, %1346
  %1357 = phi i1 [ true, %1346 ], [ false, %1355 ]
  %1358 = zext i1 %1357 to i32
  %1359 = load ptr, ptr %5, align 8, !tbaa !5
  %1360 = getelementptr inbounds %struct.w2c_hermes, ptr %1359, i32 0, i32 7
  %1361 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1360, i32 0, i32 0
  %1362 = load ptr, ptr %1361, align 8, !tbaa !17
  %1363 = load i32, ptr %11, align 4, !tbaa !9
  %1364 = zext i32 %1363 to i64
  %1365 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1362, i64 %1364
  %1366 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1365, i32 0, i32 1
  %1367 = load ptr, ptr %1366, align 8, !tbaa !18
  %1368 = load ptr, ptr %5, align 8, !tbaa !5
  %1369 = getelementptr inbounds %struct.w2c_hermes, ptr %1368, i32 0, i32 7
  %1370 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1369, i32 0, i32 0
  %1371 = load ptr, ptr %1370, align 8, !tbaa !17
  %1372 = load i32, ptr %11, align 4, !tbaa !9
  %1373 = zext i32 %1372 to i64
  %1374 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1371, i64 %1373
  %1375 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1374, i32 0, i32 2
  %1376 = load ptr, ptr %1375, align 8, !tbaa !21
  %1377 = load i32, ptr %9, align 4, !tbaa !9
  %1378 = load i32, ptr %10, align 4, !tbaa !9
  call void %1367(ptr noundef %1376, i32 noundef %1377, i32 noundef %1378)
  br label %1379

1379:                                             ; preds = %1356, %1289
  %1380 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1380, ptr %9, align 4, !tbaa !9
  %1381 = load ptr, ptr %5, align 8, !tbaa !5
  %1382 = getelementptr inbounds %struct.w2c_hermes, ptr %1381, i32 0, i32 6
  %1383 = load i32, ptr %9, align 4, !tbaa !9
  %1384 = zext i32 %1383 to i64
  %1385 = add i64 %1384, 188
  %1386 = call i32 @i32_load(ptr noundef %1382, i64 noundef %1385)
  store i32 %1386, ptr %9, align 4, !tbaa !9
  %1387 = load i32, ptr %9, align 4, !tbaa !9
  %1388 = icmp ne i32 %1387, 0
  br i1 %1388, label %1389, label %1469

1389:                                             ; preds = %1379
  %1390 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1390, ptr %9, align 4, !tbaa !9
  %1391 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1391, ptr %10, align 4, !tbaa !9
  store i32 192, ptr %11, align 4, !tbaa !9
  %1392 = load i32, ptr %11, align 4, !tbaa !9
  %1393 = load i32, ptr %10, align 4, !tbaa !9
  %1394 = add i32 %1393, %1392
  store i32 %1394, ptr %10, align 4, !tbaa !9
  %1395 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1395, ptr %11, align 4, !tbaa !9
  %1396 = load ptr, ptr %5, align 8, !tbaa !5
  %1397 = getelementptr inbounds %struct.w2c_hermes, ptr %1396, i32 0, i32 6
  %1398 = load i32, ptr %11, align 4, !tbaa !9
  %1399 = zext i32 %1398 to i64
  %1400 = call i32 @i32_load(ptr noundef %1397, i64 noundef %1399)
  store i32 %1400, ptr %11, align 4, !tbaa !9
  %1401 = load ptr, ptr %5, align 8, !tbaa !5
  %1402 = getelementptr inbounds %struct.w2c_hermes, ptr %1401, i32 0, i32 6
  %1403 = load i32, ptr %11, align 4, !tbaa !9
  %1404 = zext i32 %1403 to i64
  %1405 = add i64 %1404, 16
  %1406 = call i32 @i32_load(ptr noundef %1402, i64 noundef %1405)
  store i32 %1406, ptr %11, align 4, !tbaa !9
  %1407 = load i32, ptr %11, align 4, !tbaa !9
  %1408 = load ptr, ptr %5, 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 2
  %1411 = load i32, ptr %1410, align 4, !tbaa !11
  %1412 = icmp ult i32 %1407, %1411
  br i1 %1412, label %1413, label %1436

1413:                                             ; preds = %1389
  %1414 = load ptr, ptr %5, align 8, !tbaa !5
  %1415 = getelementptr inbounds %struct.w2c_hermes, ptr %1414, i32 0, i32 7
  %1416 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1415, i32 0, i32 0
  %1417 = load ptr, ptr %1416, align 8, !tbaa !17
  %1418 = load i32, ptr %11, align 4, !tbaa !9
  %1419 = zext i32 %1418 to i64
  %1420 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1417, i64 %1419
  %1421 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1420, i32 0, i32 1
  %1422 = load ptr, ptr %1421, align 8, !tbaa !18
  %1423 = icmp ne ptr %1422, null
  br i1 %1423, label %1424, label %1436

1424:                                             ; preds = %1413
  %1425 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !5
  %1426 = load ptr, ptr %5, align 8, !tbaa !5
  %1427 = getelementptr inbounds %struct.w2c_hermes, ptr %1426, i32 0, i32 7
  %1428 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1427, i32 0, i32 0
  %1429 = load ptr, ptr %1428, align 8, !tbaa !17
  %1430 = load i32, ptr %11, align 4, !tbaa !9
  %1431 = zext i32 %1430 to i64
  %1432 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1429, i64 %1431
  %1433 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1432, i32 0, i32 0
  %1434 = load ptr, ptr %1433, align 8, !tbaa !20
  %1435 = call zeroext i1 @func_types_eq(ptr noundef %1425, ptr noundef %1434)
  br label %1436

1436:                                             ; preds = %1424, %1413, %1389
  %1437 = phi i1 [ false, %1413 ], [ false, %1389 ], [ %1435, %1424 ]
  %1438 = xor i1 %1437, true
  %1439 = xor i1 %1438, true
  %1440 = zext i1 %1439 to i32
  %1441 = sext i32 %1440 to i64
  %1442 = call i64 @llvm.expect.i64(i64 %1441, i64 1)
  %1443 = icmp ne i64 %1442, 0
  br i1 %1443, label %1446, label %1444

1444:                                             ; preds = %1436
  call void @wasm_rt_trap(i32 noundef 6) #6
  unreachable

1445:                                             ; No predecessors!
  br label %1446

1446:                                             ; preds = %1445, %1436
  %1447 = phi i1 [ true, %1436 ], [ false, %1445 ]
  %1448 = zext i1 %1447 to i32
  %1449 = load ptr, ptr %5, align 8, !tbaa !5
  %1450 = getelementptr inbounds %struct.w2c_hermes, ptr %1449, i32 0, i32 7
  %1451 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1450, i32 0, i32 0
  %1452 = load ptr, ptr %1451, align 8, !tbaa !17
  %1453 = load i32, ptr %11, align 4, !tbaa !9
  %1454 = zext i32 %1453 to i64
  %1455 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1452, i64 %1454
  %1456 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1455, i32 0, i32 1
  %1457 = load ptr, ptr %1456, align 8, !tbaa !18
  %1458 = load ptr, ptr %5, align 8, !tbaa !5
  %1459 = getelementptr inbounds %struct.w2c_hermes, ptr %1458, i32 0, i32 7
  %1460 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1459, i32 0, i32 0
  %1461 = load ptr, ptr %1460, align 8, !tbaa !17
  %1462 = load i32, ptr %11, align 4, !tbaa !9
  %1463 = zext i32 %1462 to i64
  %1464 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1461, i64 %1463
  %1465 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1464, i32 0, i32 2
  %1466 = load ptr, ptr %1465, align 8, !tbaa !21
  %1467 = load i32, ptr %9, align 4, !tbaa !9
  %1468 = load i32, ptr %10, align 4, !tbaa !9
  call void %1457(ptr noundef %1466, i32 noundef %1467, i32 noundef %1468)
  br label %1469

1469:                                             ; preds = %1446, %1379
  %1470 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1470, ptr %9, align 4, !tbaa !9
  %1471 = load ptr, ptr %5, align 8, !tbaa !5
  %1472 = getelementptr inbounds %struct.w2c_hermes, ptr %1471, i32 0, i32 6
  %1473 = load i32, ptr %9, align 4, !tbaa !9
  %1474 = zext i32 %1473 to i64
  %1475 = call i32 @i32_load(ptr noundef %1472, i64 noundef %1474)
  store i32 %1475, ptr %9, align 4, !tbaa !9
  %1476 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %1476, ptr %6, align 4, !tbaa !9
  %1477 = load i32, ptr %9, align 4, !tbaa !9
  %1478 = icmp ne i32 %1477, 0
  br i1 %1478, label %1479, label %1480

1479:                                             ; preds = %1469
  br label %29

1480:                                             ; preds = %1469
  br label %1481

1481:                                             ; preds = %1480, %4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  ret void
}

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

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

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

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

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

.preheader:                                       ; preds = %4
  %12 = zext i32 %3 to i64
  %13 = getelementptr inbounds i8, ptr %0, i64 80
  %14 = getelementptr inbounds i8, ptr %0, i64 92
  %15 = load ptr, ptr @w2c_hermes_t0, align 8
  br label %16

16:                                               ; preds = %.preheader, %449
  %.0 = phi i32 [ %450, %449 ], [ %11, %.preheader ]
  %17 = zext i32 %.0 to i64
  %18 = add nuw nsw i64 %17, 8
  %19 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %18)
  %.not429 = icmp eq i32 %19, 0
  br i1 %.not429, label %44, label %20

20:                                               ; preds = %16
  %21 = add i32 %.0, 12
  %22 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %12)
  %23 = zext i32 %22 to i64
  %24 = add nuw nsw i64 %23, 16
  %25 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %24)
  %26 = load i32, ptr %14, align 4, !tbaa !5
  %27 = icmp ult i32 %25, %26
  br i1 %27, label %28, label %.critedge, !prof !15

28:                                               ; preds = %20
  %29 = load ptr, ptr %13, align 8, !tbaa !16
  %30 = zext i32 %25 to i64
  %31 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %29, i64 %30
  %32 = getelementptr inbounds i8, ptr %31, i64 8
  %33 = load ptr, ptr %32, align 8, !tbaa !17
  %.not430 = icmp eq ptr %33, null
  br i1 %.not430, label %.critedge, label %34, !prof !19

34:                                               ; preds = %28
  %35 = load ptr, ptr %31, align 8, !tbaa !20
  %36 = tail call zeroext i1 @func_types_eq(ptr noundef %15, ptr noundef %35)
  br i1 %36, label %37, label %.critedge, !prof !15

.critedge:                                        ; preds = %28, %20, %34
  tail call void @wasm_rt_trap(i32 noundef 6) #3
  unreachable

37:                                               ; preds = %34
  %38 = load ptr, ptr %13, align 8, !tbaa !16
  %39 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %38, i64 %30
  %40 = getelementptr inbounds i8, ptr %39, i64 8
  %41 = load ptr, ptr %40, align 8, !tbaa !17
  %42 = getelementptr inbounds i8, ptr %39, i64 16
  %43 = load ptr, ptr %42, align 8, !tbaa !21
  tail call void %41(ptr noundef %43, i32 noundef %3, i32 noundef %21) #4
  br label %44

44:                                               ; preds = %37, %16
  %45 = add nuw nsw i64 %17, 20
  %46 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %45)
  %.not431 = icmp eq i32 %46, 0
  br i1 %.not431, label %71, label %47

47:                                               ; preds = %44
  %48 = add i32 %.0, 24
  %49 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %12)
  %50 = zext i32 %49 to i64
  %51 = add nuw nsw i64 %50, 16
  %52 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %51)
  %53 = load i32, ptr %14, align 4, !tbaa !5
  %54 = icmp ult i32 %52, %53
  br i1 %54, label %55, label %.critedge463, !prof !15

55:                                               ; preds = %47
  %56 = load ptr, ptr %13, align 8, !tbaa !16
  %57 = zext i32 %52 to i64
  %58 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %56, i64 %57
  %59 = getelementptr inbounds i8, ptr %58, i64 8
  %60 = load ptr, ptr %59, align 8, !tbaa !17
  %.not432 = icmp eq ptr %60, null
  br i1 %.not432, label %.critedge463, label %61, !prof !19

61:                                               ; preds = %55
  %62 = load ptr, ptr %58, align 8, !tbaa !20
  %63 = tail call zeroext i1 @func_types_eq(ptr noundef %15, ptr noundef %62)
  br i1 %63, label %64, label %.critedge463, !prof !15

.critedge463:                                     ; preds = %55, %47, %61
  tail call void @wasm_rt_trap(i32 noundef 6) #3
  unreachable

64:                                               ; preds = %61
  %65 = load ptr, ptr %13, align 8, !tbaa !16
  %66 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %65, i64 %57
  %67 = getelementptr inbounds i8, ptr %66, i64 8
  %68 = load ptr, ptr %67, align 8, !tbaa !17
  %69 = getelementptr inbounds i8, ptr %66, i64 16
  %70 = load ptr, ptr %69, align 8, !tbaa !21
  tail call void %68(ptr noundef %70, i32 noundef %3, i32 noundef %48) #4
  br label %71

71:                                               ; preds = %64, %44
  %72 = add nuw nsw i64 %17, 32
  %73 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %72)
  %.not433 = icmp eq i32 %73, 0
  br i1 %.not433, label %98, label %74

74:                                               ; preds = %71
  %75 = add i32 %.0, 36
  %76 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %12)
  %77 = zext i32 %76 to i64
  %78 = add nuw nsw i64 %77, 16
  %79 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %78)
  %80 = load i32, ptr %14, align 4, !tbaa !5
  %81 = icmp ult i32 %79, %80
  br i1 %81, label %82, label %.critedge465, !prof !15

82:                                               ; preds = %74
  %83 = load ptr, ptr %13, align 8, !tbaa !16
  %84 = zext i32 %79 to i64
  %85 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %83, i64 %84
  %86 = getelementptr inbounds i8, ptr %85, i64 8
  %87 = load ptr, ptr %86, align 8, !tbaa !17
  %.not434 = icmp eq ptr %87, null
  br i1 %.not434, label %.critedge465, label %88, !prof !19

88:                                               ; preds = %82
  %89 = load ptr, ptr %85, align 8, !tbaa !20
  %90 = tail call zeroext i1 @func_types_eq(ptr noundef %15, ptr noundef %89)
  br i1 %90, label %91, label %.critedge465, !prof !15

.critedge465:                                     ; preds = %82, %74, %88
  tail call void @wasm_rt_trap(i32 noundef 6) #3
  unreachable

91:                                               ; preds = %88
  %92 = load ptr, ptr %13, align 8, !tbaa !16
  %93 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %92, i64 %84
  %94 = getelementptr inbounds i8, ptr %93, i64 8
  %95 = load ptr, ptr %94, align 8, !tbaa !17
  %96 = getelementptr inbounds i8, ptr %93, i64 16
  %97 = load ptr, ptr %96, align 8, !tbaa !21
  tail call void %95(ptr noundef %97, i32 noundef %3, i32 noundef %75) #4
  br label %98

98:                                               ; preds = %91, %71
  %99 = add nuw nsw i64 %17, 44
  %100 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %99)
  %.not435 = icmp eq i32 %100, 0
  br i1 %.not435, label %125, label %101

101:                                              ; preds = %98
  %102 = add i32 %.0, 48
  %103 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %12)
  %104 = zext i32 %103 to i64
  %105 = add nuw nsw i64 %104, 16
  %106 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %105)
  %107 = load i32, ptr %14, align 4, !tbaa !5
  %108 = icmp ult i32 %106, %107
  br i1 %108, label %109, label %.critedge467, !prof !15

109:                                              ; preds = %101
  %110 = load ptr, ptr %13, align 8, !tbaa !16
  %111 = zext i32 %106 to i64
  %112 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %110, i64 %111
  %113 = getelementptr inbounds i8, ptr %112, i64 8
  %114 = load ptr, ptr %113, align 8, !tbaa !17
  %.not436 = icmp eq ptr %114, null
  br i1 %.not436, label %.critedge467, label %115, !prof !19

115:                                              ; preds = %109
  %116 = load ptr, ptr %112, align 8, !tbaa !20
  %117 = tail call zeroext i1 @func_types_eq(ptr noundef %15, ptr noundef %116)
  br i1 %117, label %118, label %.critedge467, !prof !15

.critedge467:                                     ; preds = %109, %101, %115
  tail call void @wasm_rt_trap(i32 noundef 6) #3
  unreachable

118:                                              ; preds = %115
  %119 = load ptr, ptr %13, align 8, !tbaa !16
  %120 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %119, i64 %111
  %121 = getelementptr inbounds i8, ptr %120, i64 8
  %122 = load ptr, ptr %121, align 8, !tbaa !17
  %123 = getelementptr inbounds i8, ptr %120, i64 16
  %124 = load ptr, ptr %123, align 8, !tbaa !21
  tail call void %122(ptr noundef %124, i32 noundef %3, i32 noundef %102) #4
  br label %125

125:                                              ; preds = %118, %98
  %126 = add nuw nsw i64 %17, 56
  %127 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %126)
  %.not437 = icmp eq i32 %127, 0
  br i1 %.not437, label %152, label %128

128:                                              ; preds = %125
  %129 = add i32 %.0, 60
  %130 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %12)
  %131 = zext i32 %130 to i64
  %132 = add nuw nsw i64 %131, 16
  %133 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %132)
  %134 = load i32, ptr %14, align 4, !tbaa !5
  %135 = icmp ult i32 %133, %134
  br i1 %135, label %136, label %.critedge469, !prof !15

136:                                              ; preds = %128
  %137 = load ptr, ptr %13, align 8, !tbaa !16
  %138 = zext i32 %133 to i64
  %139 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %137, i64 %138
  %140 = getelementptr inbounds i8, ptr %139, i64 8
  %141 = load ptr, ptr %140, align 8, !tbaa !17
  %.not438 = icmp eq ptr %141, null
  br i1 %.not438, label %.critedge469, label %142, !prof !19

142:                                              ; preds = %136
  %143 = load ptr, ptr %139, align 8, !tbaa !20
  %144 = tail call zeroext i1 @func_types_eq(ptr noundef %15, ptr noundef %143)
  br i1 %144, label %145, label %.critedge469, !prof !15

.critedge469:                                     ; preds = %136, %128, %142
  tail call void @wasm_rt_trap(i32 noundef 6) #3
  unreachable

145:                                              ; preds = %142
  %146 = load ptr, ptr %13, align 8, !tbaa !16
  %147 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %146, i64 %138
  %148 = getelementptr inbounds i8, ptr %147, i64 8
  %149 = load ptr, ptr %148, align 8, !tbaa !17
  %150 = getelementptr inbounds i8, ptr %147, i64 16
  %151 = load ptr, ptr %150, align 8, !tbaa !21
  tail call void %149(ptr noundef %151, i32 noundef %3, i32 noundef %129) #4
  br label %152

152:                                              ; preds = %145, %125
  %153 = add nuw nsw i64 %17, 68
  %154 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %153)
  %.not439 = icmp eq i32 %154, 0
  br i1 %.not439, label %179, label %155

155:                                              ; preds = %152
  %156 = add i32 %.0, 72
  %157 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %12)
  %158 = zext i32 %157 to i64
  %159 = add nuw nsw i64 %158, 16
  %160 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %159)
  %161 = load i32, ptr %14, align 4, !tbaa !5
  %162 = icmp ult i32 %160, %161
  br i1 %162, label %163, label %.critedge471, !prof !15

163:                                              ; preds = %155
  %164 = load ptr, ptr %13, align 8, !tbaa !16
  %165 = zext i32 %160 to i64
  %166 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %164, i64 %165
  %167 = getelementptr inbounds i8, ptr %166, i64 8
  %168 = load ptr, ptr %167, align 8, !tbaa !17
  %.not440 = icmp eq ptr %168, null
  br i1 %.not440, label %.critedge471, label %169, !prof !19

169:                                              ; preds = %163
  %170 = load ptr, ptr %166, align 8, !tbaa !20
  %171 = tail call zeroext i1 @func_types_eq(ptr noundef %15, ptr noundef %170)
  br i1 %171, label %172, label %.critedge471, !prof !15

.critedge471:                                     ; preds = %163, %155, %169
  tail call void @wasm_rt_trap(i32 noundef 6) #3
  unreachable

172:                                              ; preds = %169
  %173 = load ptr, ptr %13, align 8, !tbaa !16
  %174 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %173, i64 %165
  %175 = getelementptr inbounds i8, ptr %174, i64 8
  %176 = load ptr, ptr %175, align 8, !tbaa !17
  %177 = getelementptr inbounds i8, ptr %174, i64 16
  %178 = load ptr, ptr %177, align 8, !tbaa !21
  tail call void %176(ptr noundef %178, i32 noundef %3, i32 noundef %156) #4
  br label %179

179:                                              ; preds = %172, %152
  %180 = add nuw nsw i64 %17, 80
  %181 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %180)
  %.not441 = icmp eq i32 %181, 0
  br i1 %.not441, label %206, label %182

182:                                              ; preds = %179
  %183 = add i32 %.0, 84
  %184 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %12)
  %185 = zext i32 %184 to i64
  %186 = add nuw nsw i64 %185, 16
  %187 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %186)
  %188 = load i32, ptr %14, align 4, !tbaa !5
  %189 = icmp ult i32 %187, %188
  br i1 %189, label %190, label %.critedge473, !prof !15

190:                                              ; preds = %182
  %191 = load ptr, ptr %13, align 8, !tbaa !16
  %192 = zext i32 %187 to i64
  %193 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %191, i64 %192
  %194 = getelementptr inbounds i8, ptr %193, i64 8
  %195 = load ptr, ptr %194, align 8, !tbaa !17
  %.not442 = icmp eq ptr %195, null
  br i1 %.not442, label %.critedge473, label %196, !prof !19

196:                                              ; preds = %190
  %197 = load ptr, ptr %193, align 8, !tbaa !20
  %198 = tail call zeroext i1 @func_types_eq(ptr noundef %15, ptr noundef %197)
  br i1 %198, label %199, label %.critedge473, !prof !15

.critedge473:                                     ; preds = %190, %182, %196
  tail call void @wasm_rt_trap(i32 noundef 6) #3
  unreachable

199:                                              ; preds = %196
  %200 = load ptr, ptr %13, align 8, !tbaa !16
  %201 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %200, i64 %192
  %202 = getelementptr inbounds i8, ptr %201, i64 8
  %203 = load ptr, ptr %202, align 8, !tbaa !17
  %204 = getelementptr inbounds i8, ptr %201, i64 16
  %205 = load ptr, ptr %204, align 8, !tbaa !21
  tail call void %203(ptr noundef %205, i32 noundef %3, i32 noundef %183) #4
  br label %206

206:                                              ; preds = %199, %179
  %207 = add nuw nsw i64 %17, 92
  %208 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %207)
  %.not443 = icmp eq i32 %208, 0
  br i1 %.not443, label %233, label %209

209:                                              ; preds = %206
  %210 = add i32 %.0, 96
  %211 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %12)
  %212 = zext i32 %211 to i64
  %213 = add nuw nsw i64 %212, 16
  %214 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %213)
  %215 = load i32, ptr %14, align 4, !tbaa !5
  %216 = icmp ult i32 %214, %215
  br i1 %216, label %217, label %.critedge475, !prof !15

217:                                              ; preds = %209
  %218 = load ptr, ptr %13, align 8, !tbaa !16
  %219 = zext i32 %214 to i64
  %220 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %218, i64 %219
  %221 = getelementptr inbounds i8, ptr %220, i64 8
  %222 = load ptr, ptr %221, align 8, !tbaa !17
  %.not444 = icmp eq ptr %222, null
  br i1 %.not444, label %.critedge475, label %223, !prof !19

223:                                              ; preds = %217
  %224 = load ptr, ptr %220, align 8, !tbaa !20
  %225 = tail call zeroext i1 @func_types_eq(ptr noundef %15, ptr noundef %224)
  br i1 %225, label %226, label %.critedge475, !prof !15

.critedge475:                                     ; preds = %217, %209, %223
  tail call void @wasm_rt_trap(i32 noundef 6) #3
  unreachable

226:                                              ; preds = %223
  %227 = load ptr, ptr %13, align 8, !tbaa !16
  %228 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %227, i64 %219
  %229 = getelementptr inbounds i8, ptr %228, i64 8
  %230 = load ptr, ptr %229, align 8, !tbaa !17
  %231 = getelementptr inbounds i8, ptr %228, i64 16
  %232 = load ptr, ptr %231, align 8, !tbaa !21
  tail call void %230(ptr noundef %232, i32 noundef %3, i32 noundef %210) #4
  br label %233

233:                                              ; preds = %226, %206
  %234 = add nuw nsw i64 %17, 104
  %235 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %234)
  %.not445 = icmp eq i32 %235, 0
  br i1 %.not445, label %260, label %236

236:                                              ; preds = %233
  %237 = add i32 %.0, 108
  %238 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %12)
  %239 = zext i32 %238 to i64
  %240 = add nuw nsw i64 %239, 16
  %241 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %240)
  %242 = load i32, ptr %14, align 4, !tbaa !5
  %243 = icmp ult i32 %241, %242
  br i1 %243, label %244, label %.critedge477, !prof !15

244:                                              ; preds = %236
  %245 = load ptr, ptr %13, align 8, !tbaa !16
  %246 = zext i32 %241 to i64
  %247 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %245, i64 %246
  %248 = getelementptr inbounds i8, ptr %247, i64 8
  %249 = load ptr, ptr %248, align 8, !tbaa !17
  %.not446 = icmp eq ptr %249, null
  br i1 %.not446, label %.critedge477, label %250, !prof !19

250:                                              ; preds = %244
  %251 = load ptr, ptr %247, align 8, !tbaa !20
  %252 = tail call zeroext i1 @func_types_eq(ptr noundef %15, ptr noundef %251)
  br i1 %252, label %253, label %.critedge477, !prof !15

.critedge477:                                     ; preds = %244, %236, %250
  tail call void @wasm_rt_trap(i32 noundef 6) #3
  unreachable

253:                                              ; preds = %250
  %254 = load ptr, ptr %13, align 8, !tbaa !16
  %255 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %254, i64 %246
  %256 = getelementptr inbounds i8, ptr %255, i64 8
  %257 = load ptr, ptr %256, align 8, !tbaa !17
  %258 = getelementptr inbounds i8, ptr %255, i64 16
  %259 = load ptr, ptr %258, align 8, !tbaa !21
  tail call void %257(ptr noundef %259, i32 noundef %3, i32 noundef %237) #4
  br label %260

260:                                              ; preds = %253, %233
  %261 = add nuw nsw i64 %17, 116
  %262 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %261)
  %.not447 = icmp eq i32 %262, 0
  br i1 %.not447, label %287, label %263

263:                                              ; preds = %260
  %264 = add i32 %.0, 120
  %265 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %12)
  %266 = zext i32 %265 to i64
  %267 = add nuw nsw i64 %266, 16
  %268 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %267)
  %269 = load i32, ptr %14, align 4, !tbaa !5
  %270 = icmp ult i32 %268, %269
  br i1 %270, label %271, label %.critedge479, !prof !15

271:                                              ; preds = %263
  %272 = load ptr, ptr %13, align 8, !tbaa !16
  %273 = zext i32 %268 to i64
  %274 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %272, i64 %273
  %275 = getelementptr inbounds i8, ptr %274, i64 8
  %276 = load ptr, ptr %275, align 8, !tbaa !17
  %.not448 = icmp eq ptr %276, null
  br i1 %.not448, label %.critedge479, label %277, !prof !19

277:                                              ; preds = %271
  %278 = load ptr, ptr %274, align 8, !tbaa !20
  %279 = tail call zeroext i1 @func_types_eq(ptr noundef %15, ptr noundef %278)
  br i1 %279, label %280, label %.critedge479, !prof !15

.critedge479:                                     ; preds = %271, %263, %277
  tail call void @wasm_rt_trap(i32 noundef 6) #3
  unreachable

280:                                              ; preds = %277
  %281 = load ptr, ptr %13, align 8, !tbaa !16
  %282 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %281, i64 %273
  %283 = getelementptr inbounds i8, ptr %282, i64 8
  %284 = load ptr, ptr %283, align 8, !tbaa !17
  %285 = getelementptr inbounds i8, ptr %282, i64 16
  %286 = load ptr, ptr %285, align 8, !tbaa !21
  tail call void %284(ptr noundef %286, i32 noundef %3, i32 noundef %264) #4
  br label %287

287:                                              ; preds = %280, %260
  %288 = add nuw nsw i64 %17, 128
  %289 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %288)
  %.not449 = icmp eq i32 %289, 0
  br i1 %.not449, label %314, label %290

290:                                              ; preds = %287
  %291 = add i32 %.0, 132
  %292 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %12)
  %293 = zext i32 %292 to i64
  %294 = add nuw nsw i64 %293, 16
  %295 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %294)
  %296 = load i32, ptr %14, align 4, !tbaa !5
  %297 = icmp ult i32 %295, %296
  br i1 %297, label %298, label %.critedge481, !prof !15

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

304:                                              ; preds = %298
  %305 = load ptr, ptr %301, align 8, !tbaa !20
  %306 = tail call zeroext i1 @func_types_eq(ptr noundef %15, ptr noundef %305)
  br i1 %306, label %307, label %.critedge481, !prof !15

.critedge481:                                     ; preds = %298, %290, %304
  tail call void @wasm_rt_trap(i32 noundef 6) #3
  unreachable

307:                                              ; preds = %304
  %308 = load ptr, ptr %13, align 8, !tbaa !16
  %309 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %308, i64 %300
  %310 = getelementptr inbounds i8, ptr %309, i64 8
  %311 = load ptr, ptr %310, align 8, !tbaa !17
  %312 = getelementptr inbounds i8, ptr %309, i64 16
  %313 = load ptr, ptr %312, align 8, !tbaa !21
  tail call void %311(ptr noundef %313, i32 noundef %3, i32 noundef %291) #4
  br label %314

314:                                              ; preds = %307, %287
  %315 = add nuw nsw i64 %17, 140
  %316 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %315)
  %.not451 = icmp eq i32 %316, 0
  br i1 %.not451, label %341, label %317

317:                                              ; preds = %314
  %318 = add i32 %.0, 144
  %319 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %12)
  %320 = zext i32 %319 to i64
  %321 = add nuw nsw i64 %320, 16
  %322 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %321)
  %323 = load i32, ptr %14, align 4, !tbaa !5
  %324 = icmp ult i32 %322, %323
  br i1 %324, label %325, label %.critedge483, !prof !15

325:                                              ; preds = %317
  %326 = load ptr, ptr %13, align 8, !tbaa !16
  %327 = zext i32 %322 to i64
  %328 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %326, i64 %327
  %329 = getelementptr inbounds i8, ptr %328, i64 8
  %330 = load ptr, ptr %329, align 8, !tbaa !17
  %.not452 = icmp eq ptr %330, null
  br i1 %.not452, label %.critedge483, label %331, !prof !19

331:                                              ; preds = %325
  %332 = load ptr, ptr %328, align 8, !tbaa !20
  %333 = tail call zeroext i1 @func_types_eq(ptr noundef %15, ptr noundef %332)
  br i1 %333, label %334, label %.critedge483, !prof !15

.critedge483:                                     ; preds = %325, %317, %331
  tail call void @wasm_rt_trap(i32 noundef 6) #3
  unreachable

334:                                              ; preds = %331
  %335 = load ptr, ptr %13, align 8, !tbaa !16
  %336 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %335, i64 %327
  %337 = getelementptr inbounds i8, ptr %336, i64 8
  %338 = load ptr, ptr %337, align 8, !tbaa !17
  %339 = getelementptr inbounds i8, ptr %336, i64 16
  %340 = load ptr, ptr %339, align 8, !tbaa !21
  tail call void %338(ptr noundef %340, i32 noundef %3, i32 noundef %318) #4
  br label %341

341:                                              ; preds = %334, %314
  %342 = add nuw nsw i64 %17, 152
  %343 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %342)
  %.not453 = icmp eq i32 %343, 0
  br i1 %.not453, label %368, label %344

344:                                              ; preds = %341
  %345 = add i32 %.0, 156
  %346 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %12)
  %347 = zext i32 %346 to i64
  %348 = add nuw nsw i64 %347, 16
  %349 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %348)
  %350 = load i32, ptr %14, align 4, !tbaa !5
  %351 = icmp ult i32 %349, %350
  br i1 %351, label %352, label %.critedge485, !prof !15

352:                                              ; preds = %344
  %353 = load ptr, ptr %13, align 8, !tbaa !16
  %354 = zext i32 %349 to i64
  %355 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %353, i64 %354
  %356 = getelementptr inbounds i8, ptr %355, i64 8
  %357 = load ptr, ptr %356, align 8, !tbaa !17
  %.not454 = icmp eq ptr %357, null
  br i1 %.not454, label %.critedge485, label %358, !prof !19

358:                                              ; preds = %352
  %359 = load ptr, ptr %355, align 8, !tbaa !20
  %360 = tail call zeroext i1 @func_types_eq(ptr noundef %15, ptr noundef %359)
  br i1 %360, label %361, label %.critedge485, !prof !15

.critedge485:                                     ; preds = %352, %344, %358
  tail call void @wasm_rt_trap(i32 noundef 6) #3
  unreachable

361:                                              ; preds = %358
  %362 = load ptr, ptr %13, align 8, !tbaa !16
  %363 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %362, i64 %354
  %364 = getelementptr inbounds i8, ptr %363, i64 8
  %365 = load ptr, ptr %364, align 8, !tbaa !17
  %366 = getelementptr inbounds i8, ptr %363, i64 16
  %367 = load ptr, ptr %366, align 8, !tbaa !21
  tail call void %365(ptr noundef %367, i32 noundef %3, i32 noundef %345) #4
  br label %368

368:                                              ; preds = %361, %341
  %369 = add nuw nsw i64 %17, 164
  %370 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %369)
  %.not455 = icmp eq i32 %370, 0
  br i1 %.not455, label %395, label %371

371:                                              ; preds = %368
  %372 = add i32 %.0, 168
  %373 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %12)
  %374 = zext i32 %373 to i64
  %375 = add nuw nsw i64 %374, 16
  %376 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %375)
  %377 = load i32, ptr %14, align 4, !tbaa !5
  %378 = icmp ult i32 %376, %377
  br i1 %378, label %379, label %.critedge487, !prof !15

379:                                              ; preds = %371
  %380 = load ptr, ptr %13, align 8, !tbaa !16
  %381 = zext i32 %376 to i64
  %382 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %380, i64 %381
  %383 = getelementptr inbounds i8, ptr %382, i64 8
  %384 = load ptr, ptr %383, align 8, !tbaa !17
  %.not456 = icmp eq ptr %384, null
  br i1 %.not456, label %.critedge487, label %385, !prof !19

385:                                              ; preds = %379
  %386 = load ptr, ptr %382, align 8, !tbaa !20
  %387 = tail call zeroext i1 @func_types_eq(ptr noundef %15, ptr noundef %386)
  br i1 %387, label %388, label %.critedge487, !prof !15

.critedge487:                                     ; preds = %379, %371, %385
  tail call void @wasm_rt_trap(i32 noundef 6) #3
  unreachable

388:                                              ; preds = %385
  %389 = load ptr, ptr %13, align 8, !tbaa !16
  %390 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %389, i64 %381
  %391 = getelementptr inbounds i8, ptr %390, i64 8
  %392 = load ptr, ptr %391, align 8, !tbaa !17
  %393 = getelementptr inbounds i8, ptr %390, i64 16
  %394 = load ptr, ptr %393, align 8, !tbaa !21
  tail call void %392(ptr noundef %394, i32 noundef %3, i32 noundef %372) #4
  br label %395

395:                                              ; preds = %388, %368
  %396 = add nuw nsw i64 %17, 176
  %397 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %396)
  %.not457 = icmp eq i32 %397, 0
  br i1 %.not457, label %422, label %398

398:                                              ; preds = %395
  %399 = add i32 %.0, 180
  %400 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %12)
  %401 = zext i32 %400 to i64
  %402 = add nuw nsw i64 %401, 16
  %403 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %402)
  %404 = load i32, ptr %14, align 4, !tbaa !5
  %405 = icmp ult i32 %403, %404
  br i1 %405, label %406, label %.critedge489, !prof !15

406:                                              ; preds = %398
  %407 = load ptr, ptr %13, align 8, !tbaa !16
  %408 = zext i32 %403 to i64
  %409 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %407, i64 %408
  %410 = getelementptr inbounds i8, ptr %409, i64 8
  %411 = load ptr, ptr %410, align 8, !tbaa !17
  %.not458 = icmp eq ptr %411, null
  br i1 %.not458, label %.critedge489, label %412, !prof !19

412:                                              ; preds = %406
  %413 = load ptr, ptr %409, align 8, !tbaa !20
  %414 = tail call zeroext i1 @func_types_eq(ptr noundef %15, ptr noundef %413)
  br i1 %414, label %415, label %.critedge489, !prof !15

.critedge489:                                     ; preds = %406, %398, %412
  tail call void @wasm_rt_trap(i32 noundef 6) #3
  unreachable

415:                                              ; preds = %412
  %416 = load ptr, ptr %13, align 8, !tbaa !16
  %417 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %416, i64 %408
  %418 = getelementptr inbounds i8, ptr %417, i64 8
  %419 = load ptr, ptr %418, align 8, !tbaa !17
  %420 = getelementptr inbounds i8, ptr %417, i64 16
  %421 = load ptr, ptr %420, align 8, !tbaa !21
  tail call void %419(ptr noundef %421, i32 noundef %3, i32 noundef %399) #4
  br label %422

422:                                              ; preds = %415, %395
  %423 = add nuw nsw i64 %17, 188
  %424 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %423)
  %.not459 = icmp eq i32 %424, 0
  br i1 %.not459, label %449, label %425

425:                                              ; preds = %422
  %426 = add i32 %.0, 192
  %427 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %12)
  %428 = zext i32 %427 to i64
  %429 = add nuw nsw i64 %428, 16
  %430 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %429)
  %431 = load i32, ptr %14, align 4, !tbaa !5
  %432 = icmp ult i32 %430, %431
  br i1 %432, label %433, label %.critedge491, !prof !15

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

439:                                              ; preds = %433
  %440 = load ptr, ptr %436, align 8, !tbaa !20
  %441 = tail call zeroext i1 @func_types_eq(ptr noundef %15, ptr noundef %440)
  br i1 %441, label %442, label %.critedge491, !prof !15

.critedge491:                                     ; preds = %433, %425, %439
  tail call void @wasm_rt_trap(i32 noundef 6) #3
  unreachable

442:                                              ; preds = %439
  %443 = load ptr, ptr %13, align 8, !tbaa !16
  %444 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %443, i64 %435
  %445 = getelementptr inbounds i8, ptr %444, i64 8
  %446 = load ptr, ptr %445, align 8, !tbaa !17
  %447 = getelementptr inbounds i8, ptr %444, i64 16
  %448 = load ptr, ptr %447, align 8, !tbaa !21
  tail call void %446(ptr noundef %448, i32 noundef %3, i32 noundef %426) #4
  br label %449

449:                                              ; preds = %442, %422
  %450 = tail call i32 @i32_load(ptr noundef nonnull %5, i64 noundef %17)
  %.not461 = icmp eq i32 %450, 0
  br i1 %.not461, label %.loopexit, label %16

.loopexit:                                        ; preds = %449, %4
  ret void
}

attributes #0 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { noreturn "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 = { noreturn nounwind }
attributes #4 = { 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 = !{!18, !7, i64 0}
!21 = !{!18, !7, i64 16}


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