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

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

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

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

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

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

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

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

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

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

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

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

declare void @w2c_hermes_std0x3A0x3A_0x5F20x3A0x3A_0x5Fthrow_bad_function_call0x5Babi0x3Av150070x5D0x280x29(ptr noundef) #4

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

42:                                               ; preds = %3
  %43 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %43, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %15, align 4, !tbaa !9
  %44 = load ptr, ptr %4, align 8, !tbaa !5
  %45 = getelementptr inbounds %struct.w2c_hermes, ptr %44, i32 0, i32 6
  %46 = load i32, ptr %14, align 4, !tbaa !9
  %47 = zext i32 %46 to i64
  %48 = add i64 %47, 144
  %49 = load i32, ptr %15, align 4, !tbaa !9
  call void @i32_store(ptr noundef %45, i64 noundef %48, i32 noundef %49)
  br label %233

50:                                               ; preds = %3
  %51 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %51, ptr %14, align 4, !tbaa !9
  %52 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %52, ptr %15, align 4, !tbaa !9
  %53 = load i32, ptr %14, align 4, !tbaa !9
  %54 = load i32, ptr %15, align 4, !tbaa !9
  %55 = icmp eq i32 %53, %54
  %56 = zext i1 %55 to i32
  store i32 %56, ptr %14, align 4, !tbaa !9
  %57 = load i32, ptr %14, align 4, !tbaa !9
  %58 = icmp ne i32 %57, 0
  br i1 %58, label %59, label %150

59:                                               ; preds = %50
  %60 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %60, ptr %14, align 4, !tbaa !9
  %61 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %61, ptr %15, align 4, !tbaa !9
  store i32 128, ptr %16, align 4, !tbaa !9
  %62 = load i32, ptr %16, align 4, !tbaa !9
  %63 = load i32, ptr %15, align 4, !tbaa !9
  %64 = add i32 %63, %62
  store i32 %64, ptr %15, align 4, !tbaa !9
  %65 = load ptr, ptr %4, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.w2c_hermes, ptr %65, i32 0, i32 6
  %67 = load i32, ptr %14, align 4, !tbaa !9
  %68 = zext i32 %67 to i64
  %69 = add i64 %68, 144
  %70 = load i32, ptr %15, align 4, !tbaa !9
  call void @i32_store(ptr noundef %66, i64 noundef %69, i32 noundef %70)
  %71 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %71, ptr %14, align 4, !tbaa !9
  %72 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %72, ptr %15, align 4, !tbaa !9
  store i32 128, ptr %16, align 4, !tbaa !9
  %73 = load i32, ptr %16, align 4, !tbaa !9
  %74 = load i32, ptr %15, align 4, !tbaa !9
  %75 = add i32 %74, %73
  store i32 %75, ptr %15, align 4, !tbaa !9
  %76 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %76, ptr %16, align 4, !tbaa !9
  %77 = load ptr, ptr %4, align 8, !tbaa !5
  %78 = getelementptr inbounds %struct.w2c_hermes, ptr %77, i32 0, i32 6
  %79 = load i32, ptr %16, align 4, !tbaa !9
  %80 = zext i32 %79 to i64
  %81 = call i32 @i32_load(ptr noundef %78, i64 noundef %80)
  store i32 %81, ptr %16, align 4, !tbaa !9
  %82 = load ptr, ptr %4, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.w2c_hermes, ptr %82, i32 0, i32 6
  %84 = load i32, ptr %16, align 4, !tbaa !9
  %85 = zext i32 %84 to i64
  %86 = add i64 %85, 12
  %87 = call i32 @i32_load(ptr noundef %83, i64 noundef %86)
  store i32 %87, ptr %16, align 4, !tbaa !9
  %88 = load i32, ptr %16, align 4, !tbaa !9
  %89 = load ptr, ptr %4, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.w2c_hermes, ptr %89, i32 0, i32 7
  %91 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %90, i32 0, i32 2
  %92 = load i32, ptr %91, align 4, !tbaa !17
  %93 = icmp ult i32 %88, %92
  br i1 %93, label %94, label %117

94:                                               ; preds = %59
  %95 = load ptr, ptr %4, align 8, !tbaa !5
  %96 = getelementptr inbounds %struct.w2c_hermes, ptr %95, i32 0, i32 7
  %97 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %96, i32 0, i32 0
  %98 = load ptr, ptr %97, align 8, !tbaa !18
  %99 = load i32, ptr %16, align 4, !tbaa !9
  %100 = zext i32 %99 to i64
  %101 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %98, i64 %100
  %102 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %101, i32 0, i32 1
  %103 = load ptr, ptr %102, align 8, !tbaa !19
  %104 = icmp ne ptr %103, null
  br i1 %104, label %105, label %117

105:                                              ; preds = %94
  %106 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !5
  %107 = load ptr, ptr %4, align 8, !tbaa !5
  %108 = getelementptr inbounds %struct.w2c_hermes, ptr %107, i32 0, i32 7
  %109 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %108, i32 0, i32 0
  %110 = load ptr, ptr %109, align 8, !tbaa !18
  %111 = load i32, ptr %16, align 4, !tbaa !9
  %112 = zext i32 %111 to i64
  %113 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %110, i64 %112
  %114 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %113, i32 0, i32 0
  %115 = load ptr, ptr %114, align 8, !tbaa !21
  %116 = call zeroext i1 @func_types_eq(ptr noundef %106, ptr noundef %115)
  br label %117

117:                                              ; preds = %105, %94, %59
  %118 = phi i1 [ false, %94 ], [ false, %59 ], [ %116, %105 ]
  %119 = xor i1 %118, true
  %120 = xor i1 %119, true
  %121 = zext i1 %120 to i32
  %122 = sext i32 %121 to i64
  %123 = call i64 @llvm.expect.i64(i64 %122, i64 1)
  %124 = icmp ne i64 %123, 0
  br i1 %124, label %127, label %125

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

126:                                              ; No predecessors!
  br label %127

127:                                              ; preds = %126, %117
  %128 = phi i1 [ true, %117 ], [ false, %126 ]
  %129 = zext i1 %128 to i32
  %130 = load ptr, ptr %4, align 8, !tbaa !5
  %131 = getelementptr inbounds %struct.w2c_hermes, ptr %130, i32 0, i32 7
  %132 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %131, i32 0, i32 0
  %133 = load ptr, ptr %132, align 8, !tbaa !18
  %134 = load i32, ptr %16, align 4, !tbaa !9
  %135 = zext i32 %134 to i64
  %136 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %133, i64 %135
  %137 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %136, i32 0, i32 1
  %138 = load ptr, ptr %137, align 8, !tbaa !19
  %139 = load ptr, ptr %4, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.w2c_hermes, ptr %139, i32 0, i32 7
  %141 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %140, i32 0, i32 0
  %142 = load ptr, ptr %141, align 8, !tbaa !18
  %143 = load i32, ptr %16, align 4, !tbaa !9
  %144 = zext i32 %143 to i64
  %145 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %142, i64 %144
  %146 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %145, i32 0, i32 2
  %147 = load ptr, ptr %146, align 8, !tbaa !22
  %148 = load i32, ptr %14, align 4, !tbaa !9
  %149 = load i32, ptr %15, align 4, !tbaa !9
  call void %138(ptr noundef %147, i32 noundef %148, i32 noundef %149)
  br label %233

150:                                              ; preds = %50
  %151 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %151, ptr %14, align 4, !tbaa !9
  %152 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %152, ptr %15, align 4, !tbaa !9
  %153 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %153, ptr %16, align 4, !tbaa !9
  %154 = load ptr, ptr %4, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.w2c_hermes, ptr %154, i32 0, i32 6
  %156 = load i32, ptr %16, align 4, !tbaa !9
  %157 = zext i32 %156 to i64
  %158 = call i32 @i32_load(ptr noundef %155, i64 noundef %157)
  store i32 %158, ptr %16, align 4, !tbaa !9
  %159 = load ptr, ptr %4, align 8, !tbaa !5
  %160 = getelementptr inbounds %struct.w2c_hermes, ptr %159, i32 0, i32 6
  %161 = load i32, ptr %16, align 4, !tbaa !9
  %162 = zext i32 %161 to i64
  %163 = add i64 %162, 8
  %164 = call i32 @i32_load(ptr noundef %160, i64 noundef %163)
  store i32 %164, ptr %16, align 4, !tbaa !9
  %165 = load i32, ptr %16, align 4, !tbaa !9
  %166 = load ptr, ptr %4, 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 2
  %169 = load i32, ptr %168, align 4, !tbaa !17
  %170 = icmp ult i32 %165, %169
  br i1 %170, label %171, label %194

171:                                              ; preds = %150
  %172 = load ptr, ptr %4, align 8, !tbaa !5
  %173 = getelementptr inbounds %struct.w2c_hermes, ptr %172, i32 0, i32 7
  %174 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %173, i32 0, i32 0
  %175 = load ptr, ptr %174, align 8, !tbaa !18
  %176 = load i32, ptr %16, align 4, !tbaa !9
  %177 = zext i32 %176 to i64
  %178 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %175, i64 %177
  %179 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %178, i32 0, i32 1
  %180 = load ptr, ptr %179, align 8, !tbaa !19
  %181 = icmp ne ptr %180, null
  br i1 %181, label %182, label %194

182:                                              ; preds = %171
  %183 = load ptr, ptr @w2c_hermes_t2, align 8, !tbaa !5
  %184 = load ptr, ptr %4, align 8, !tbaa !5
  %185 = getelementptr inbounds %struct.w2c_hermes, ptr %184, i32 0, i32 7
  %186 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %185, i32 0, i32 0
  %187 = load ptr, ptr %186, align 8, !tbaa !18
  %188 = load i32, ptr %16, align 4, !tbaa !9
  %189 = zext i32 %188 to i64
  %190 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %187, i64 %189
  %191 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %190, i32 0, i32 0
  %192 = load ptr, ptr %191, align 8, !tbaa !21
  %193 = call zeroext i1 @func_types_eq(ptr noundef %183, ptr noundef %192)
  br label %194

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

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

203:                                              ; No predecessors!
  br label %204

204:                                              ; preds = %203, %194
  %205 = phi i1 [ true, %194 ], [ false, %203 ]
  %206 = zext i1 %205 to i32
  %207 = load ptr, ptr %4, align 8, !tbaa !5
  %208 = getelementptr inbounds %struct.w2c_hermes, ptr %207, i32 0, i32 7
  %209 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %208, i32 0, i32 0
  %210 = load ptr, ptr %209, align 8, !tbaa !18
  %211 = load i32, ptr %16, align 4, !tbaa !9
  %212 = zext i32 %211 to i64
  %213 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %210, i64 %212
  %214 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %213, i32 0, i32 1
  %215 = load ptr, ptr %214, align 8, !tbaa !19
  %216 = load ptr, ptr %4, align 8, !tbaa !5
  %217 = getelementptr inbounds %struct.w2c_hermes, ptr %216, i32 0, i32 7
  %218 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %217, i32 0, i32 0
  %219 = load ptr, ptr %218, align 8, !tbaa !18
  %220 = load i32, ptr %16, align 4, !tbaa !9
  %221 = zext i32 %220 to i64
  %222 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %219, i64 %221
  %223 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %222, i32 0, i32 2
  %224 = load ptr, ptr %223, align 8, !tbaa !22
  %225 = load i32, ptr %15, align 4, !tbaa !9
  %226 = call i32 %215(ptr noundef %224, i32 noundef %225)
  store i32 %226, ptr %15, align 4, !tbaa !9
  %227 = load ptr, ptr %4, align 8, !tbaa !5
  %228 = getelementptr inbounds %struct.w2c_hermes, ptr %227, i32 0, i32 6
  %229 = load i32, ptr %14, align 4, !tbaa !9
  %230 = zext i32 %229 to i64
  %231 = add i64 %230, 144
  %232 = load i32, ptr %15, align 4, !tbaa !9
  call void @i32_store(ptr noundef %228, i64 noundef %231, i32 noundef %232)
  br label %233

233:                                              ; preds = %204, %127, %42
  %234 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %234, ptr %14, align 4, !tbaa !9
  %235 = load ptr, ptr %4, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.w2c_hermes, ptr %235, i32 0, i32 6
  %237 = load i32, ptr %14, align 4, !tbaa !9
  %238 = zext i32 %237 to i64
  %239 = add i64 %238, 588
  %240 = call i32 @i32_load(ptr noundef %236, i64 noundef %239)
  store i32 %240, ptr %14, align 4, !tbaa !9
  store i32 86016, ptr %15, align 4, !tbaa !9
  %241 = load i32, ptr %15, align 4, !tbaa !9
  %242 = load i32, ptr %14, align 4, !tbaa !9
  %243 = add i32 %242, %241
  store i32 %243, ptr %14, align 4, !tbaa !9
  %244 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %244, ptr %8, align 4, !tbaa !9
  %245 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %245, ptr %15, align 4, !tbaa !9
  %246 = load ptr, ptr %4, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.w2c_hermes, ptr %246, i32 0, i32 6
  %248 = load i32, ptr %15, align 4, !tbaa !9
  %249 = zext i32 %248 to i64
  %250 = add i64 %249, 596
  %251 = call i32 @i32_load(ptr noundef %247, i64 noundef %250)
  store i32 %251, ptr %15, align 4, !tbaa !9
  %252 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %252, ptr %11, align 4, !tbaa !9
  %253 = load i32, ptr %14, align 4, !tbaa !9
  %254 = load i32, ptr %15, align 4, !tbaa !9
  %255 = icmp ne i32 %253, %254
  %256 = zext i1 %255 to i32
  store i32 %256, ptr %14, align 4, !tbaa !9
  %257 = load i32, ptr %14, align 4, !tbaa !9
  %258 = icmp ne i32 %257, 0
  br i1 %258, label %259, label %407

259:                                              ; preds = %233
  br label %260

260:                                              ; preds = %405, %259
  %261 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %261, ptr %14, align 4, !tbaa !9
  %262 = load ptr, ptr %4, align 8, !tbaa !5
  %263 = getelementptr inbounds %struct.w2c_hermes, ptr %262, i32 0, i32 6
  %264 = load i32, ptr %14, align 4, !tbaa !9
  %265 = zext i32 %264 to i64
  %266 = call i32 @i32_load(ptr noundef %263, i64 noundef %265)
  store i32 %266, ptr %14, align 4, !tbaa !9
  %267 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %267, ptr %9, align 4, !tbaa !9
  store i32 -16777216, ptr %15, align 4, !tbaa !9
  %268 = load i32, ptr %15, align 4, !tbaa !9
  %269 = load i32, ptr %14, align 4, !tbaa !9
  %270 = and i32 %269, %268
  store i32 %270, ptr %14, align 4, !tbaa !9
  store i32 33554432, ptr %15, align 4, !tbaa !9
  %271 = load i32, ptr %14, align 4, !tbaa !9
  %272 = load i32, ptr %15, align 4, !tbaa !9
  %273 = icmp ne i32 %271, %272
  %274 = zext i1 %273 to i32
  store i32 %274, ptr %14, align 4, !tbaa !9
  %275 = load i32, ptr %14, align 4, !tbaa !9
  %276 = icmp ne i32 %275, 0
  br i1 %276, label %277, label %388

277:                                              ; preds = %260
  %278 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %278, ptr %14, align 4, !tbaa !9
  %279 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %279, ptr %15, align 4, !tbaa !9
  %280 = load ptr, ptr %4, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.w2c_hermes, ptr %280, i32 0, i32 6
  %282 = load i32, ptr %14, align 4, !tbaa !9
  %283 = zext i32 %282 to i64
  %284 = add i64 %283, 104
  %285 = load i32, ptr %15, align 4, !tbaa !9
  call void @i32_store(ptr noundef %281, i64 noundef %284, i32 noundef %285)
  %286 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %286, ptr %14, align 4, !tbaa !9
  %287 = load ptr, ptr %4, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.w2c_hermes, ptr %287, i32 0, i32 6
  %289 = load i32, ptr %14, align 4, !tbaa !9
  %290 = zext i32 %289 to i64
  %291 = add i64 %290, 144
  %292 = call i32 @i32_load(ptr noundef %288, i64 noundef %291)
  store i32 %292, ptr %14, align 4, !tbaa !9
  %293 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %293, ptr %9, align 4, !tbaa !9
  %294 = load i32, ptr %14, align 4, !tbaa !9
  %295 = icmp ne i32 %294, 0
  %296 = xor i1 %295, true
  %297 = zext i1 %296 to i32
  store i32 %297, ptr %14, align 4, !tbaa !9
  %298 = load i32, ptr %14, align 4, !tbaa !9
  %299 = icmp ne i32 %298, 0
  br i1 %299, label %300, label %301

300:                                              ; preds = %277
  br label %2628

301:                                              ; preds = %277
  %302 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %302, ptr %14, align 4, !tbaa !9
  %303 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %303, ptr %15, align 4, !tbaa !9
  store i32 104, ptr %16, align 4, !tbaa !9
  %304 = load i32, ptr %16, align 4, !tbaa !9
  %305 = load i32, ptr %15, align 4, !tbaa !9
  %306 = add i32 %305, %304
  store i32 %306, ptr %15, align 4, !tbaa !9
  %307 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %307, ptr %16, align 4, !tbaa !9
  %308 = load ptr, ptr %4, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.w2c_hermes, ptr %308, i32 0, i32 6
  %310 = load i32, ptr %16, align 4, !tbaa !9
  %311 = zext i32 %310 to i64
  %312 = call i32 @i32_load(ptr noundef %309, i64 noundef %311)
  store i32 %312, ptr %16, align 4, !tbaa !9
  %313 = load ptr, ptr %4, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.w2c_hermes, ptr %313, i32 0, i32 6
  %315 = load i32, ptr %16, align 4, !tbaa !9
  %316 = zext i32 %315 to i64
  %317 = add i64 %316, 24
  %318 = call i32 @i32_load(ptr noundef %314, i64 noundef %317)
  store i32 %318, ptr %16, align 4, !tbaa !9
  %319 = load i32, ptr %16, align 4, !tbaa !9
  %320 = load ptr, ptr %4, align 8, !tbaa !5
  %321 = getelementptr inbounds %struct.w2c_hermes, ptr %320, i32 0, i32 7
  %322 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %321, i32 0, i32 2
  %323 = load i32, ptr %322, align 4, !tbaa !17
  %324 = icmp ult i32 %319, %323
  br i1 %324, label %325, label %348

325:                                              ; preds = %301
  %326 = load ptr, ptr %4, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.w2c_hermes, ptr %326, i32 0, i32 7
  %328 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %327, i32 0, i32 0
  %329 = load ptr, ptr %328, align 8, !tbaa !18
  %330 = load i32, ptr %16, align 4, !tbaa !9
  %331 = zext i32 %330 to i64
  %332 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %329, i64 %331
  %333 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %332, i32 0, i32 1
  %334 = load ptr, ptr %333, align 8, !tbaa !19
  %335 = icmp ne ptr %334, null
  br i1 %335, label %336, label %348

336:                                              ; preds = %325
  %337 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !5
  %338 = load ptr, ptr %4, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct.w2c_hermes, ptr %338, i32 0, i32 7
  %340 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %339, i32 0, i32 0
  %341 = load ptr, ptr %340, align 8, !tbaa !18
  %342 = load i32, ptr %16, align 4, !tbaa !9
  %343 = zext i32 %342 to i64
  %344 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %341, i64 %343
  %345 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %344, i32 0, i32 0
  %346 = load ptr, ptr %345, align 8, !tbaa !21
  %347 = call zeroext i1 @func_types_eq(ptr noundef %337, ptr noundef %346)
  br label %348

348:                                              ; preds = %336, %325, %301
  %349 = phi i1 [ false, %325 ], [ false, %301 ], [ %347, %336 ]
  %350 = xor i1 %349, true
  %351 = xor i1 %350, true
  %352 = zext i1 %351 to i32
  %353 = sext i32 %352 to i64
  %354 = call i64 @llvm.expect.i64(i64 %353, i64 1)
  %355 = icmp ne i64 %354, 0
  br i1 %355, label %358, label %356

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

357:                                              ; No predecessors!
  br label %358

358:                                              ; preds = %357, %348
  %359 = phi i1 [ true, %348 ], [ false, %357 ]
  %360 = zext i1 %359 to i32
  %361 = load ptr, ptr %4, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.w2c_hermes, ptr %361, i32 0, i32 7
  %363 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %362, i32 0, i32 0
  %364 = load ptr, ptr %363, align 8, !tbaa !18
  %365 = load i32, ptr %16, align 4, !tbaa !9
  %366 = zext i32 %365 to i64
  %367 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %364, i64 %366
  %368 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %367, i32 0, i32 1
  %369 = load ptr, ptr %368, align 8, !tbaa !19
  %370 = load ptr, ptr %4, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.w2c_hermes, ptr %370, i32 0, i32 7
  %372 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %371, i32 0, i32 0
  %373 = load ptr, ptr %372, align 8, !tbaa !18
  %374 = load i32, ptr %16, align 4, !tbaa !9
  %375 = zext i32 %374 to i64
  %376 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %373, i64 %375
  %377 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %376, i32 0, i32 2
  %378 = load ptr, ptr %377, align 8, !tbaa !22
  %379 = load i32, ptr %14, align 4, !tbaa !9
  %380 = load i32, ptr %15, align 4, !tbaa !9
  call void %369(ptr noundef %378, i32 noundef %379, i32 noundef %380)
  %381 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %381, ptr %14, align 4, !tbaa !9
  %382 = load ptr, ptr %4, align 8, !tbaa !5
  %383 = getelementptr inbounds %struct.w2c_hermes, ptr %382, i32 0, i32 6
  %384 = load i32, ptr %14, align 4, !tbaa !9
  %385 = zext i32 %384 to i64
  %386 = call i32 @i32_load(ptr noundef %383, i64 noundef %385)
  store i32 %386, ptr %14, align 4, !tbaa !9
  %387 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %387, ptr %9, align 4, !tbaa !9
  br label %388

388:                                              ; preds = %358, %260
  %389 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %389, ptr %14, align 4, !tbaa !9
  %390 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %390, ptr %15, align 4, !tbaa !9
  store i32 16777215, ptr %16, align 4, !tbaa !9
  %391 = load i32, ptr %16, align 4, !tbaa !9
  %392 = load i32, ptr %15, align 4, !tbaa !9
  %393 = and i32 %392, %391
  store i32 %393, ptr %15, align 4, !tbaa !9
  %394 = load i32, ptr %15, align 4, !tbaa !9
  %395 = load i32, ptr %14, align 4, !tbaa !9
  %396 = add i32 %395, %394
  store i32 %396, ptr %14, align 4, !tbaa !9
  %397 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %397, ptr %8, align 4, !tbaa !9
  %398 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %398, ptr %15, align 4, !tbaa !9
  %399 = load i32, ptr %14, align 4, !tbaa !9
  %400 = load i32, ptr %15, align 4, !tbaa !9
  %401 = icmp ne i32 %399, %400
  %402 = zext i1 %401 to i32
  store i32 %402, ptr %14, align 4, !tbaa !9
  %403 = load i32, ptr %14, align 4, !tbaa !9
  %404 = icmp ne i32 %403, 0
  br i1 %404, label %405, label %406

405:                                              ; preds = %388
  br label %260

406:                                              ; preds = %388
  br label %407

407:                                              ; preds = %406, %233
  %408 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %408, ptr %14, align 4, !tbaa !9
  %409 = load ptr, ptr %4, align 8, !tbaa !5
  %410 = getelementptr inbounds %struct.w2c_hermes, ptr %409, i32 0, i32 6
  %411 = load i32, ptr %14, align 4, !tbaa !9
  %412 = zext i32 %411 to i64
  %413 = add i64 %412, 144
  %414 = call i32 @i32_load(ptr noundef %410, i64 noundef %413)
  store i32 %414, ptr %14, align 4, !tbaa !9
  %415 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %415, ptr %8, align 4, !tbaa !9
  %416 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %416, ptr %15, align 4, !tbaa !9
  store i32 128, ptr %16, align 4, !tbaa !9
  %417 = load i32, ptr %16, align 4, !tbaa !9
  %418 = load i32, ptr %15, align 4, !tbaa !9
  %419 = add i32 %418, %417
  store i32 %419, ptr %15, align 4, !tbaa !9
  %420 = load i32, ptr %14, align 4, !tbaa !9
  %421 = load i32, ptr %15, align 4, !tbaa !9
  %422 = icmp eq i32 %420, %421
  %423 = zext i1 %422 to i32
  store i32 %423, ptr %14, align 4, !tbaa !9
  %424 = load i32, ptr %14, align 4, !tbaa !9
  %425 = icmp ne i32 %424, 0
  br i1 %425, label %426, label %442

426:                                              ; preds = %407
  %427 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %427, ptr %14, align 4, !tbaa !9
  store i32 128, ptr %15, align 4, !tbaa !9
  %428 = load i32, ptr %15, align 4, !tbaa !9
  %429 = load i32, ptr %14, align 4, !tbaa !9
  %430 = add i32 %429, %428
  store i32 %430, ptr %14, align 4, !tbaa !9
  %431 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %431, ptr %8, align 4, !tbaa !9
  %432 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %432, ptr %14, align 4, !tbaa !9
  %433 = load ptr, ptr %4, align 8, !tbaa !5
  %434 = getelementptr inbounds %struct.w2c_hermes, ptr %433, i32 0, i32 6
  %435 = load i32, ptr %14, align 4, !tbaa !9
  %436 = zext i32 %435 to i64
  %437 = add i64 %436, 128
  %438 = call i32 @i32_load(ptr noundef %434, i64 noundef %437)
  store i32 %438, ptr %14, align 4, !tbaa !9
  store i32 16, ptr %15, align 4, !tbaa !9
  %439 = load i32, ptr %15, align 4, !tbaa !9
  %440 = load i32, ptr %14, align 4, !tbaa !9
  %441 = add i32 %440, %439
  store i32 %441, ptr %14, align 4, !tbaa !9
  br label %461

442:                                              ; preds = %407
  %443 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %443, ptr %14, align 4, !tbaa !9
  %444 = load i32, ptr %14, align 4, !tbaa !9
  %445 = icmp ne i32 %444, 0
  %446 = xor i1 %445, true
  %447 = zext i1 %446 to i32
  store i32 %447, ptr %14, align 4, !tbaa !9
  %448 = load i32, ptr %14, align 4, !tbaa !9
  %449 = icmp ne i32 %448, 0
  br i1 %449, label %450, label %451

450:                                              ; preds = %442
  br label %531

451:                                              ; preds = %442
  %452 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %452, ptr %14, align 4, !tbaa !9
  %453 = load ptr, ptr %4, align 8, !tbaa !5
  %454 = getelementptr inbounds %struct.w2c_hermes, ptr %453, i32 0, i32 6
  %455 = load i32, ptr %14, align 4, !tbaa !9
  %456 = zext i32 %455 to i64
  %457 = call i32 @i32_load(ptr noundef %454, i64 noundef %456)
  store i32 %457, ptr %14, align 4, !tbaa !9
  store i32 20, ptr %15, align 4, !tbaa !9
  %458 = load i32, ptr %15, align 4, !tbaa !9
  %459 = load i32, ptr %14, align 4, !tbaa !9
  %460 = add i32 %459, %458
  store i32 %460, ptr %14, align 4, !tbaa !9
  br label %461

461:                                              ; preds = %451, %426
  %462 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %462, ptr %9, align 4, !tbaa !9
  %463 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %463, ptr %14, align 4, !tbaa !9
  %464 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %464, ptr %15, align 4, !tbaa !9
  %465 = load ptr, ptr %4, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.w2c_hermes, ptr %465, i32 0, i32 6
  %467 = load i32, ptr %15, align 4, !tbaa !9
  %468 = zext i32 %467 to i64
  %469 = call i32 @i32_load(ptr noundef %466, i64 noundef %468)
  store i32 %469, ptr %15, align 4, !tbaa !9
  %470 = load i32, ptr %15, align 4, !tbaa !9
  %471 = load ptr, ptr %4, align 8, !tbaa !5
  %472 = getelementptr inbounds %struct.w2c_hermes, ptr %471, i32 0, i32 7
  %473 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %472, i32 0, i32 2
  %474 = load i32, ptr %473, align 4, !tbaa !17
  %475 = icmp ult i32 %470, %474
  br i1 %475, label %476, label %499

476:                                              ; preds = %461
  %477 = load ptr, ptr %4, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.w2c_hermes, ptr %477, i32 0, i32 7
  %479 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %478, i32 0, i32 0
  %480 = load ptr, ptr %479, align 8, !tbaa !18
  %481 = load i32, ptr %15, align 4, !tbaa !9
  %482 = zext i32 %481 to i64
  %483 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %480, i64 %482
  %484 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %483, i32 0, i32 1
  %485 = load ptr, ptr %484, align 8, !tbaa !19
  %486 = icmp ne ptr %485, null
  br i1 %486, label %487, label %499

487:                                              ; preds = %476
  %488 = load ptr, ptr @w2c_hermes_t3, align 8, !tbaa !5
  %489 = load ptr, ptr %4, align 8, !tbaa !5
  %490 = getelementptr inbounds %struct.w2c_hermes, ptr %489, i32 0, i32 7
  %491 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %490, i32 0, i32 0
  %492 = load ptr, ptr %491, align 8, !tbaa !18
  %493 = load i32, ptr %15, align 4, !tbaa !9
  %494 = zext i32 %493 to i64
  %495 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %492, i64 %494
  %496 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %495, i32 0, i32 0
  %497 = load ptr, ptr %496, align 8, !tbaa !21
  %498 = call zeroext i1 @func_types_eq(ptr noundef %488, ptr noundef %497)
  br label %499

499:                                              ; preds = %487, %476, %461
  %500 = phi i1 [ false, %476 ], [ false, %461 ], [ %498, %487 ]
  %501 = xor i1 %500, true
  %502 = xor i1 %501, true
  %503 = zext i1 %502 to i32
  %504 = sext i32 %503 to i64
  %505 = call i64 @llvm.expect.i64(i64 %504, i64 1)
  %506 = icmp ne i64 %505, 0
  br i1 %506, label %509, label %507

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

508:                                              ; No predecessors!
  br label %509

509:                                              ; preds = %508, %499
  %510 = phi i1 [ true, %499 ], [ false, %508 ]
  %511 = zext i1 %510 to i32
  %512 = load ptr, ptr %4, align 8, !tbaa !5
  %513 = getelementptr inbounds %struct.w2c_hermes, ptr %512, i32 0, i32 7
  %514 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %513, i32 0, i32 0
  %515 = load ptr, ptr %514, align 8, !tbaa !18
  %516 = load i32, ptr %15, align 4, !tbaa !9
  %517 = zext i32 %516 to i64
  %518 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %515, i64 %517
  %519 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %518, i32 0, i32 1
  %520 = load ptr, ptr %519, align 8, !tbaa !19
  %521 = load ptr, ptr %4, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.w2c_hermes, ptr %521, i32 0, i32 7
  %523 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %522, i32 0, i32 0
  %524 = load ptr, ptr %523, align 8, !tbaa !18
  %525 = load i32, ptr %15, align 4, !tbaa !9
  %526 = zext i32 %525 to i64
  %527 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %524, i64 %526
  %528 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %527, i32 0, i32 2
  %529 = load ptr, ptr %528, align 8, !tbaa !22
  %530 = load i32, ptr %14, align 4, !tbaa !9
  call void %520(ptr noundef %529, i32 noundef %530)
  br label %531

531:                                              ; preds = %509, %450
  %532 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %532, ptr %14, align 4, !tbaa !9
  %533 = load ptr, ptr %4, align 8, !tbaa !5
  %534 = getelementptr inbounds %struct.w2c_hermes, ptr %533, i32 0, i32 6
  %535 = load i32, ptr %14, align 4, !tbaa !9
  %536 = zext i32 %535 to i64
  %537 = add i64 %536, 16
  %538 = call i32 @i32_load(ptr noundef %534, i64 noundef %537)
  store i32 %538, ptr %14, align 4, !tbaa !9
  %539 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %539, ptr %8, align 4, !tbaa !9
  %540 = load i32, ptr %14, align 4, !tbaa !9
  %541 = icmp ne i32 %540, 0
  %542 = xor i1 %541, true
  %543 = zext i1 %542 to i32
  store i32 %543, ptr %14, align 4, !tbaa !9
  %544 = load i32, ptr %14, align 4, !tbaa !9
  %545 = icmp ne i32 %544, 0
  br i1 %545, label %546, label %554

546:                                              ; preds = %531
  %547 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %547, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %15, align 4, !tbaa !9
  %548 = load ptr, ptr %4, align 8, !tbaa !5
  %549 = getelementptr inbounds %struct.w2c_hermes, ptr %548, i32 0, i32 6
  %550 = load i32, ptr %14, align 4, !tbaa !9
  %551 = zext i32 %550 to i64
  %552 = add i64 %551, 120
  %553 = load i32, ptr %15, align 4, !tbaa !9
  call void @i32_store(ptr noundef %549, i64 noundef %552, i32 noundef %553)
  br label %737

554:                                              ; preds = %531
  %555 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %555, ptr %14, align 4, !tbaa !9
  %556 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %556, ptr %15, align 4, !tbaa !9
  %557 = load i32, ptr %14, align 4, !tbaa !9
  %558 = load i32, ptr %15, align 4, !tbaa !9
  %559 = icmp eq i32 %557, %558
  %560 = zext i1 %559 to i32
  store i32 %560, ptr %14, align 4, !tbaa !9
  %561 = load i32, ptr %14, align 4, !tbaa !9
  %562 = icmp ne i32 %561, 0
  br i1 %562, label %563, label %654

563:                                              ; preds = %554
  %564 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %564, ptr %14, align 4, !tbaa !9
  %565 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %565, ptr %15, align 4, !tbaa !9
  store i32 104, ptr %16, align 4, !tbaa !9
  %566 = load i32, ptr %16, align 4, !tbaa !9
  %567 = load i32, ptr %15, align 4, !tbaa !9
  %568 = add i32 %567, %566
  store i32 %568, ptr %15, align 4, !tbaa !9
  %569 = load ptr, ptr %4, align 8, !tbaa !5
  %570 = getelementptr inbounds %struct.w2c_hermes, ptr %569, i32 0, i32 6
  %571 = load i32, ptr %14, align 4, !tbaa !9
  %572 = zext i32 %571 to i64
  %573 = add i64 %572, 120
  %574 = load i32, ptr %15, align 4, !tbaa !9
  call void @i32_store(ptr noundef %570, i64 noundef %573, i32 noundef %574)
  %575 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %575, ptr %14, align 4, !tbaa !9
  %576 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %576, ptr %15, align 4, !tbaa !9
  store i32 104, ptr %16, align 4, !tbaa !9
  %577 = load i32, ptr %16, align 4, !tbaa !9
  %578 = load i32, ptr %15, align 4, !tbaa !9
  %579 = add i32 %578, %577
  store i32 %579, ptr %15, align 4, !tbaa !9
  %580 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %580, ptr %16, align 4, !tbaa !9
  %581 = load ptr, ptr %4, align 8, !tbaa !5
  %582 = getelementptr inbounds %struct.w2c_hermes, ptr %581, i32 0, i32 6
  %583 = load i32, ptr %16, align 4, !tbaa !9
  %584 = zext i32 %583 to i64
  %585 = call i32 @i32_load(ptr noundef %582, i64 noundef %584)
  store i32 %585, ptr %16, align 4, !tbaa !9
  %586 = load ptr, ptr %4, align 8, !tbaa !5
  %587 = getelementptr inbounds %struct.w2c_hermes, ptr %586, i32 0, i32 6
  %588 = load i32, ptr %16, align 4, !tbaa !9
  %589 = zext i32 %588 to i64
  %590 = add i64 %589, 12
  %591 = call i32 @i32_load(ptr noundef %587, i64 noundef %590)
  store i32 %591, ptr %16, align 4, !tbaa !9
  %592 = load i32, ptr %16, align 4, !tbaa !9
  %593 = load ptr, ptr %4, align 8, !tbaa !5
  %594 = getelementptr inbounds %struct.w2c_hermes, ptr %593, i32 0, i32 7
  %595 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %594, i32 0, i32 2
  %596 = load i32, ptr %595, align 4, !tbaa !17
  %597 = icmp ult i32 %592, %596
  br i1 %597, label %598, label %621

598:                                              ; preds = %563
  %599 = load ptr, ptr %4, align 8, !tbaa !5
  %600 = getelementptr inbounds %struct.w2c_hermes, ptr %599, i32 0, i32 7
  %601 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %600, i32 0, i32 0
  %602 = load ptr, ptr %601, align 8, !tbaa !18
  %603 = load i32, ptr %16, align 4, !tbaa !9
  %604 = zext i32 %603 to i64
  %605 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %602, i64 %604
  %606 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %605, i32 0, i32 1
  %607 = load ptr, ptr %606, align 8, !tbaa !19
  %608 = icmp ne ptr %607, null
  br i1 %608, label %609, label %621

609:                                              ; preds = %598
  %610 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !5
  %611 = load ptr, ptr %4, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct.w2c_hermes, ptr %611, i32 0, i32 7
  %613 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %612, i32 0, i32 0
  %614 = load ptr, ptr %613, align 8, !tbaa !18
  %615 = load i32, ptr %16, align 4, !tbaa !9
  %616 = zext i32 %615 to i64
  %617 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %614, i64 %616
  %618 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %617, i32 0, i32 0
  %619 = load ptr, ptr %618, align 8, !tbaa !21
  %620 = call zeroext i1 @func_types_eq(ptr noundef %610, ptr noundef %619)
  br label %621

621:                                              ; preds = %609, %598, %563
  %622 = phi i1 [ false, %598 ], [ false, %563 ], [ %620, %609 ]
  %623 = xor i1 %622, true
  %624 = xor i1 %623, true
  %625 = zext i1 %624 to i32
  %626 = sext i32 %625 to i64
  %627 = call i64 @llvm.expect.i64(i64 %626, i64 1)
  %628 = icmp ne i64 %627, 0
  br i1 %628, label %631, label %629

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

630:                                              ; No predecessors!
  br label %631

631:                                              ; preds = %630, %621
  %632 = phi i1 [ true, %621 ], [ false, %630 ]
  %633 = zext i1 %632 to i32
  %634 = load ptr, ptr %4, align 8, !tbaa !5
  %635 = getelementptr inbounds %struct.w2c_hermes, ptr %634, i32 0, i32 7
  %636 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %635, i32 0, i32 0
  %637 = load ptr, ptr %636, align 8, !tbaa !18
  %638 = load i32, ptr %16, align 4, !tbaa !9
  %639 = zext i32 %638 to i64
  %640 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %637, i64 %639
  %641 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %640, i32 0, i32 1
  %642 = load ptr, ptr %641, align 8, !tbaa !19
  %643 = load ptr, ptr %4, align 8, !tbaa !5
  %644 = getelementptr inbounds %struct.w2c_hermes, ptr %643, i32 0, i32 7
  %645 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %644, i32 0, i32 0
  %646 = load ptr, ptr %645, align 8, !tbaa !18
  %647 = load i32, ptr %16, align 4, !tbaa !9
  %648 = zext i32 %647 to i64
  %649 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %646, i64 %648
  %650 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %649, i32 0, i32 2
  %651 = load ptr, ptr %650, align 8, !tbaa !22
  %652 = load i32, ptr %14, align 4, !tbaa !9
  %653 = load i32, ptr %15, align 4, !tbaa !9
  call void %642(ptr noundef %651, i32 noundef %652, i32 noundef %653)
  br label %737

654:                                              ; preds = %554
  %655 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %655, ptr %14, align 4, !tbaa !9
  %656 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %656, ptr %15, align 4, !tbaa !9
  %657 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %657, ptr %16, align 4, !tbaa !9
  %658 = load ptr, ptr %4, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.w2c_hermes, ptr %658, i32 0, i32 6
  %660 = load i32, ptr %16, align 4, !tbaa !9
  %661 = zext i32 %660 to i64
  %662 = call i32 @i32_load(ptr noundef %659, i64 noundef %661)
  store i32 %662, ptr %16, align 4, !tbaa !9
  %663 = load ptr, ptr %4, align 8, !tbaa !5
  %664 = getelementptr inbounds %struct.w2c_hermes, ptr %663, i32 0, i32 6
  %665 = load i32, ptr %16, align 4, !tbaa !9
  %666 = zext i32 %665 to i64
  %667 = add i64 %666, 8
  %668 = call i32 @i32_load(ptr noundef %664, i64 noundef %667)
  store i32 %668, ptr %16, align 4, !tbaa !9
  %669 = load i32, ptr %16, align 4, !tbaa !9
  %670 = load ptr, ptr %4, align 8, !tbaa !5
  %671 = getelementptr inbounds %struct.w2c_hermes, ptr %670, i32 0, i32 7
  %672 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %671, i32 0, i32 2
  %673 = load i32, ptr %672, align 4, !tbaa !17
  %674 = icmp ult i32 %669, %673
  br i1 %674, label %675, label %698

675:                                              ; preds = %654
  %676 = load ptr, ptr %4, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.w2c_hermes, ptr %676, i32 0, i32 7
  %678 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %677, i32 0, i32 0
  %679 = load ptr, ptr %678, align 8, !tbaa !18
  %680 = load i32, ptr %16, align 4, !tbaa !9
  %681 = zext i32 %680 to i64
  %682 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %679, i64 %681
  %683 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %682, i32 0, i32 1
  %684 = load ptr, ptr %683, align 8, !tbaa !19
  %685 = icmp ne ptr %684, null
  br i1 %685, label %686, label %698

686:                                              ; preds = %675
  %687 = load ptr, ptr @w2c_hermes_t2, align 8, !tbaa !5
  %688 = load ptr, ptr %4, 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 0
  %691 = load ptr, ptr %690, align 8, !tbaa !18
  %692 = load i32, ptr %16, align 4, !tbaa !9
  %693 = zext i32 %692 to i64
  %694 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %691, i64 %693
  %695 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %694, i32 0, i32 0
  %696 = load ptr, ptr %695, align 8, !tbaa !21
  %697 = call zeroext i1 @func_types_eq(ptr noundef %687, ptr noundef %696)
  br label %698

698:                                              ; preds = %686, %675, %654
  %699 = phi i1 [ false, %675 ], [ false, %654 ], [ %697, %686 ]
  %700 = xor i1 %699, true
  %701 = xor i1 %700, true
  %702 = zext i1 %701 to i32
  %703 = sext i32 %702 to i64
  %704 = call i64 @llvm.expect.i64(i64 %703, i64 1)
  %705 = icmp ne i64 %704, 0
  br i1 %705, label %708, label %706

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

707:                                              ; No predecessors!
  br label %708

708:                                              ; preds = %707, %698
  %709 = phi i1 [ true, %698 ], [ false, %707 ]
  %710 = zext i1 %709 to i32
  %711 = load ptr, ptr %4, align 8, !tbaa !5
  %712 = getelementptr inbounds %struct.w2c_hermes, ptr %711, i32 0, i32 7
  %713 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %712, i32 0, i32 0
  %714 = load ptr, ptr %713, align 8, !tbaa !18
  %715 = load i32, ptr %16, align 4, !tbaa !9
  %716 = zext i32 %715 to i64
  %717 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %714, i64 %716
  %718 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %717, i32 0, i32 1
  %719 = load ptr, ptr %718, align 8, !tbaa !19
  %720 = load ptr, ptr %4, align 8, !tbaa !5
  %721 = getelementptr inbounds %struct.w2c_hermes, ptr %720, i32 0, i32 7
  %722 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %721, i32 0, i32 0
  %723 = load ptr, ptr %722, align 8, !tbaa !18
  %724 = load i32, ptr %16, align 4, !tbaa !9
  %725 = zext i32 %724 to i64
  %726 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %723, i64 %725
  %727 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %726, i32 0, i32 2
  %728 = load ptr, ptr %727, align 8, !tbaa !22
  %729 = load i32, ptr %15, align 4, !tbaa !9
  %730 = call i32 %719(ptr noundef %728, i32 noundef %729)
  store i32 %730, ptr %15, align 4, !tbaa !9
  %731 = load ptr, ptr %4, align 8, !tbaa !5
  %732 = getelementptr inbounds %struct.w2c_hermes, ptr %731, i32 0, i32 6
  %733 = load i32, ptr %14, align 4, !tbaa !9
  %734 = zext i32 %733 to i64
  %735 = add i64 %734, 120
  %736 = load i32, ptr %15, align 4, !tbaa !9
  call void @i32_store(ptr noundef %732, i64 noundef %735, i32 noundef %736)
  br label %737

737:                                              ; preds = %708, %631, %546
  %738 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %738, ptr %14, align 4, !tbaa !9
  %739 = load ptr, ptr %4, align 8, !tbaa !5
  %740 = getelementptr inbounds %struct.w2c_hermes, ptr %739, i32 0, i32 6
  %741 = load i32, ptr %14, align 4, !tbaa !9
  %742 = zext i32 %741 to i64
  %743 = add i64 %742, 640
  %744 = call i32 @i32_load(ptr noundef %740, i64 noundef %743)
  store i32 %744, ptr %14, align 4, !tbaa !9
  %745 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %745, ptr %8, align 4, !tbaa !9
  %746 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %746, ptr %15, align 4, !tbaa !9
  %747 = load ptr, ptr %4, align 8, !tbaa !5
  %748 = getelementptr inbounds %struct.w2c_hermes, ptr %747, i32 0, i32 6
  %749 = load i32, ptr %15, align 4, !tbaa !9
  %750 = zext i32 %749 to i64
  %751 = add i64 %750, 644
  %752 = call i32 @i32_load(ptr noundef %748, i64 noundef %751)
  store i32 %752, ptr %15, align 4, !tbaa !9
  %753 = load i32, ptr %14, align 4, !tbaa !9
  %754 = load i32, ptr %15, align 4, !tbaa !9
  %755 = icmp eq i32 %753, %754
  %756 = zext i1 %755 to i32
  store i32 %756, ptr %14, align 4, !tbaa !9
  %757 = load i32, ptr %14, align 4, !tbaa !9
  %758 = icmp ne i32 %757, 0
  br i1 %758, label %759, label %760

759:                                              ; preds = %737
  br label %1684

760:                                              ; preds = %737
  %761 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %761, ptr %14, align 4, !tbaa !9
  %762 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %762, ptr %15, align 4, !tbaa !9
  %763 = load ptr, ptr %4, align 8, !tbaa !5
  %764 = getelementptr inbounds %struct.w2c_hermes, ptr %763, i32 0, i32 6
  %765 = load i32, ptr %15, align 4, !tbaa !9
  %766 = zext i32 %765 to i64
  %767 = add i64 %766, 652
  %768 = call i32 @i32_load(ptr noundef %764, i64 noundef %767)
  store i32 %768, ptr %15, align 4, !tbaa !9
  %769 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %769, ptr %9, align 4, !tbaa !9
  store i32 6, ptr %16, align 4, !tbaa !9
  %770 = load i32, ptr %16, align 4, !tbaa !9
  %771 = and i32 %770, 31
  %772 = load i32, ptr %15, align 4, !tbaa !9
  %773 = lshr i32 %772, %771
  store i32 %773, ptr %15, align 4, !tbaa !9
  store i32 67108860, ptr %16, align 4, !tbaa !9
  %774 = load i32, ptr %16, align 4, !tbaa !9
  %775 = load i32, ptr %15, align 4, !tbaa !9
  %776 = and i32 %775, %774
  store i32 %776, ptr %15, align 4, !tbaa !9
  %777 = load i32, ptr %15, align 4, !tbaa !9
  %778 = load i32, ptr %14, align 4, !tbaa !9
  %779 = add i32 %778, %777
  store i32 %779, ptr %14, align 4, !tbaa !9
  %780 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %780, ptr %12, align 4, !tbaa !9
  %781 = load ptr, ptr %4, align 8, !tbaa !5
  %782 = getelementptr inbounds %struct.w2c_hermes, ptr %781, i32 0, i32 6
  %783 = load i32, ptr %14, align 4, !tbaa !9
  %784 = zext i32 %783 to i64
  %785 = call i32 @i32_load(ptr noundef %782, i64 noundef %784)
  store i32 %785, ptr %14, align 4, !tbaa !9
  %786 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %786, ptr %15, align 4, !tbaa !9
  store i32 255, ptr %16, align 4, !tbaa !9
  %787 = load i32, ptr %16, align 4, !tbaa !9
  %788 = load i32, ptr %15, align 4, !tbaa !9
  %789 = and i32 %788, %787
  store i32 %789, ptr %15, align 4, !tbaa !9
  store i32 4, ptr %16, align 4, !tbaa !9
  %790 = load i32, ptr %16, align 4, !tbaa !9
  %791 = and i32 %790, 31
  %792 = load i32, ptr %15, align 4, !tbaa !9
  %793 = shl i32 %792, %791
  store i32 %793, ptr %15, align 4, !tbaa !9
  %794 = load i32, ptr %15, align 4, !tbaa !9
  %795 = load i32, ptr %14, align 4, !tbaa !9
  %796 = add i32 %795, %794
  store i32 %796, ptr %14, align 4, !tbaa !9
  %797 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %797, ptr %10, align 4, !tbaa !9
  %798 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %798, ptr %15, align 4, !tbaa !9
  %799 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %799, ptr %16, align 4, !tbaa !9
  %800 = load ptr, ptr %4, align 8, !tbaa !5
  %801 = getelementptr inbounds %struct.w2c_hermes, ptr %800, i32 0, i32 6
  %802 = load i32, ptr %16, align 4, !tbaa !9
  %803 = zext i32 %802 to i64
  %804 = add i64 %803, 656
  %805 = call i32 @i32_load(ptr noundef %801, i64 noundef %804)
  store i32 %805, ptr %16, align 4, !tbaa !9
  %806 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %806, ptr %17, align 4, !tbaa !9
  %807 = load i32, ptr %17, align 4, !tbaa !9
  %808 = load i32, ptr %16, align 4, !tbaa !9
  %809 = add i32 %808, %807
  store i32 %809, ptr %16, align 4, !tbaa !9
  %810 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %810, ptr %9, align 4, !tbaa !9
  store i32 6, ptr %17, align 4, !tbaa !9
  %811 = load i32, ptr %17, align 4, !tbaa !9
  %812 = and i32 %811, 31
  %813 = load i32, ptr %16, align 4, !tbaa !9
  %814 = lshr i32 %813, %812
  store i32 %814, ptr %16, align 4, !tbaa !9
  store i32 67108860, ptr %17, align 4, !tbaa !9
  %815 = load i32, ptr %17, align 4, !tbaa !9
  %816 = load i32, ptr %16, align 4, !tbaa !9
  %817 = and i32 %816, %815
  store i32 %817, ptr %16, align 4, !tbaa !9
  %818 = load i32, ptr %16, align 4, !tbaa !9
  %819 = load i32, ptr %15, align 4, !tbaa !9
  %820 = add i32 %819, %818
  store i32 %820, ptr %15, align 4, !tbaa !9
  %821 = load ptr, ptr %4, align 8, !tbaa !5
  %822 = getelementptr inbounds %struct.w2c_hermes, ptr %821, i32 0, i32 6
  %823 = load i32, ptr %15, align 4, !tbaa !9
  %824 = zext i32 %823 to i64
  %825 = call i32 @i32_load(ptr noundef %822, i64 noundef %824)
  store i32 %825, ptr %15, align 4, !tbaa !9
  %826 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %826, ptr %16, align 4, !tbaa !9
  store i32 255, ptr %17, align 4, !tbaa !9
  %827 = load i32, ptr %17, align 4, !tbaa !9
  %828 = load i32, ptr %16, align 4, !tbaa !9
  %829 = and i32 %828, %827
  store i32 %829, ptr %16, align 4, !tbaa !9
  store i32 4, ptr %17, align 4, !tbaa !9
  %830 = load i32, ptr %17, align 4, !tbaa !9
  %831 = and i32 %830, 31
  %832 = load i32, ptr %16, align 4, !tbaa !9
  %833 = shl i32 %832, %831
  store i32 %833, ptr %16, align 4, !tbaa !9
  %834 = load i32, ptr %16, align 4, !tbaa !9
  %835 = load i32, ptr %15, align 4, !tbaa !9
  %836 = add i32 %835, %834
  store i32 %836, ptr %15, align 4, !tbaa !9
  %837 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %837, ptr %13, align 4, !tbaa !9
  %838 = load i32, ptr %14, align 4, !tbaa !9
  %839 = load i32, ptr %15, align 4, !tbaa !9
  %840 = icmp eq i32 %838, %839
  %841 = zext i1 %840 to i32
  store i32 %841, ptr %14, align 4, !tbaa !9
  %842 = load i32, ptr %14, align 4, !tbaa !9
  %843 = icmp ne i32 %842, 0
  br i1 %843, label %844, label %845

844:                                              ; preds = %760
  br label %1684

845:                                              ; preds = %760
  br label %846

846:                                              ; preds = %1682, %845
  %847 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %847, ptr %14, align 4, !tbaa !9
  %848 = load ptr, ptr %4, align 8, !tbaa !5
  %849 = getelementptr inbounds %struct.w2c_hermes, ptr %848, i32 0, i32 6
  %850 = load i32, ptr %14, align 4, !tbaa !9
  %851 = zext i32 %850 to i64
  %852 = add i64 %851, 4052
  %853 = call i32 @i32_load8_u(ptr noundef %849, i64 noundef %852)
  store i32 %853, ptr %14, align 4, !tbaa !9
  store i32 3, ptr %15, align 4, !tbaa !9
  %854 = load i32, ptr %14, align 4, !tbaa !9
  %855 = load i32, ptr %15, align 4, !tbaa !9
  %856 = icmp ne i32 %854, %855
  %857 = zext i1 %856 to i32
  store i32 %857, ptr %14, align 4, !tbaa !9
  %858 = load i32, ptr %14, align 4, !tbaa !9
  %859 = icmp ne i32 %858, 0
  br i1 %859, label %860, label %1293

860:                                              ; preds = %846
  %861 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %861, ptr %14, align 4, !tbaa !9
  %862 = load ptr, ptr %4, align 8, !tbaa !5
  %863 = getelementptr inbounds %struct.w2c_hermes, ptr %862, i32 0, i32 6
  %864 = load i32, ptr %14, align 4, !tbaa !9
  %865 = zext i32 %864 to i64
  %866 = add i64 %865, 16
  %867 = call i32 @i32_load(ptr noundef %863, i64 noundef %866)
  store i32 %867, ptr %14, align 4, !tbaa !9
  %868 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %868, ptr %8, align 4, !tbaa !9
  %869 = load i32, ptr %14, align 4, !tbaa !9
  %870 = icmp ne i32 %869, 0
  %871 = xor i1 %870, true
  %872 = zext i1 %871 to i32
  store i32 %872, ptr %14, align 4, !tbaa !9
  %873 = load i32, ptr %14, align 4, !tbaa !9
  %874 = icmp ne i32 %873, 0
  br i1 %874, label %875, label %883

875:                                              ; preds = %860
  %876 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %876, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %15, align 4, !tbaa !9
  %877 = load ptr, ptr %4, align 8, !tbaa !5
  %878 = getelementptr inbounds %struct.w2c_hermes, ptr %877, i32 0, i32 6
  %879 = load i32, ptr %14, align 4, !tbaa !9
  %880 = zext i32 %879 to i64
  %881 = add i64 %880, 96
  %882 = load i32, ptr %15, align 4, !tbaa !9
  call void @i32_store(ptr noundef %878, i64 noundef %881, i32 noundef %882)
  br label %1066

883:                                              ; preds = %860
  %884 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %884, ptr %14, align 4, !tbaa !9
  %885 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %885, ptr %15, align 4, !tbaa !9
  %886 = load i32, ptr %14, align 4, !tbaa !9
  %887 = load i32, ptr %15, align 4, !tbaa !9
  %888 = icmp eq i32 %886, %887
  %889 = zext i1 %888 to i32
  store i32 %889, ptr %14, align 4, !tbaa !9
  %890 = load i32, ptr %14, align 4, !tbaa !9
  %891 = icmp ne i32 %890, 0
  br i1 %891, label %892, label %983

892:                                              ; preds = %883
  %893 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %893, ptr %14, align 4, !tbaa !9
  %894 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %894, ptr %15, align 4, !tbaa !9
  store i32 80, ptr %16, align 4, !tbaa !9
  %895 = load i32, ptr %16, align 4, !tbaa !9
  %896 = load i32, ptr %15, align 4, !tbaa !9
  %897 = add i32 %896, %895
  store i32 %897, ptr %15, align 4, !tbaa !9
  %898 = load ptr, ptr %4, align 8, !tbaa !5
  %899 = getelementptr inbounds %struct.w2c_hermes, ptr %898, i32 0, i32 6
  %900 = load i32, ptr %14, align 4, !tbaa !9
  %901 = zext i32 %900 to i64
  %902 = add i64 %901, 96
  %903 = load i32, ptr %15, align 4, !tbaa !9
  call void @i32_store(ptr noundef %899, i64 noundef %902, i32 noundef %903)
  %904 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %904, ptr %14, align 4, !tbaa !9
  %905 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %905, ptr %15, align 4, !tbaa !9
  store i32 80, ptr %16, align 4, !tbaa !9
  %906 = load i32, ptr %16, align 4, !tbaa !9
  %907 = load i32, ptr %15, align 4, !tbaa !9
  %908 = add i32 %907, %906
  store i32 %908, ptr %15, align 4, !tbaa !9
  %909 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %909, ptr %16, align 4, !tbaa !9
  %910 = load ptr, ptr %4, align 8, !tbaa !5
  %911 = getelementptr inbounds %struct.w2c_hermes, ptr %910, i32 0, i32 6
  %912 = load i32, ptr %16, align 4, !tbaa !9
  %913 = zext i32 %912 to i64
  %914 = call i32 @i32_load(ptr noundef %911, i64 noundef %913)
  store i32 %914, ptr %16, align 4, !tbaa !9
  %915 = load ptr, ptr %4, align 8, !tbaa !5
  %916 = getelementptr inbounds %struct.w2c_hermes, ptr %915, i32 0, i32 6
  %917 = load i32, ptr %16, align 4, !tbaa !9
  %918 = zext i32 %917 to i64
  %919 = add i64 %918, 12
  %920 = call i32 @i32_load(ptr noundef %916, i64 noundef %919)
  store i32 %920, ptr %16, align 4, !tbaa !9
  %921 = load i32, ptr %16, align 4, !tbaa !9
  %922 = load ptr, ptr %4, align 8, !tbaa !5
  %923 = getelementptr inbounds %struct.w2c_hermes, ptr %922, i32 0, i32 7
  %924 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %923, i32 0, i32 2
  %925 = load i32, ptr %924, align 4, !tbaa !17
  %926 = icmp ult i32 %921, %925
  br i1 %926, label %927, label %950

927:                                              ; preds = %892
  %928 = load ptr, ptr %4, align 8, !tbaa !5
  %929 = getelementptr inbounds %struct.w2c_hermes, ptr %928, i32 0, i32 7
  %930 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %929, i32 0, i32 0
  %931 = load ptr, ptr %930, align 8, !tbaa !18
  %932 = load i32, ptr %16, align 4, !tbaa !9
  %933 = zext i32 %932 to i64
  %934 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %931, i64 %933
  %935 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %934, i32 0, i32 1
  %936 = load ptr, ptr %935, align 8, !tbaa !19
  %937 = icmp ne ptr %936, null
  br i1 %937, label %938, label %950

938:                                              ; preds = %927
  %939 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !5
  %940 = load ptr, ptr %4, align 8, !tbaa !5
  %941 = getelementptr inbounds %struct.w2c_hermes, ptr %940, i32 0, i32 7
  %942 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %941, i32 0, i32 0
  %943 = load ptr, ptr %942, align 8, !tbaa !18
  %944 = load i32, ptr %16, align 4, !tbaa !9
  %945 = zext i32 %944 to i64
  %946 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %943, i64 %945
  %947 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %946, i32 0, i32 0
  %948 = load ptr, ptr %947, align 8, !tbaa !21
  %949 = call zeroext i1 @func_types_eq(ptr noundef %939, ptr noundef %948)
  br label %950

950:                                              ; preds = %938, %927, %892
  %951 = phi i1 [ false, %927 ], [ false, %892 ], [ %949, %938 ]
  %952 = xor i1 %951, true
  %953 = xor i1 %952, true
  %954 = zext i1 %953 to i32
  %955 = sext i32 %954 to i64
  %956 = call i64 @llvm.expect.i64(i64 %955, i64 1)
  %957 = icmp ne i64 %956, 0
  br i1 %957, label %960, label %958

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

959:                                              ; No predecessors!
  br label %960

960:                                              ; preds = %959, %950
  %961 = phi i1 [ true, %950 ], [ false, %959 ]
  %962 = zext i1 %961 to i32
  %963 = load ptr, ptr %4, align 8, !tbaa !5
  %964 = getelementptr inbounds %struct.w2c_hermes, ptr %963, i32 0, i32 7
  %965 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %964, i32 0, i32 0
  %966 = load ptr, ptr %965, align 8, !tbaa !18
  %967 = load i32, ptr %16, align 4, !tbaa !9
  %968 = zext i32 %967 to i64
  %969 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %966, i64 %968
  %970 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %969, i32 0, i32 1
  %971 = load ptr, ptr %970, align 8, !tbaa !19
  %972 = load ptr, ptr %4, align 8, !tbaa !5
  %973 = getelementptr inbounds %struct.w2c_hermes, ptr %972, i32 0, i32 7
  %974 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %973, i32 0, i32 0
  %975 = load ptr, ptr %974, align 8, !tbaa !18
  %976 = load i32, ptr %16, align 4, !tbaa !9
  %977 = zext i32 %976 to i64
  %978 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %975, i64 %977
  %979 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %978, i32 0, i32 2
  %980 = load ptr, ptr %979, align 8, !tbaa !22
  %981 = load i32, ptr %14, align 4, !tbaa !9
  %982 = load i32, ptr %15, align 4, !tbaa !9
  call void %971(ptr noundef %980, i32 noundef %981, i32 noundef %982)
  br label %1066

983:                                              ; preds = %883
  %984 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %984, ptr %14, align 4, !tbaa !9
  %985 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %985, ptr %15, align 4, !tbaa !9
  %986 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %986, ptr %16, align 4, !tbaa !9
  %987 = load ptr, ptr %4, align 8, !tbaa !5
  %988 = getelementptr inbounds %struct.w2c_hermes, ptr %987, i32 0, i32 6
  %989 = load i32, ptr %16, align 4, !tbaa !9
  %990 = zext i32 %989 to i64
  %991 = call i32 @i32_load(ptr noundef %988, i64 noundef %990)
  store i32 %991, ptr %16, align 4, !tbaa !9
  %992 = load ptr, ptr %4, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.w2c_hermes, ptr %992, i32 0, i32 6
  %994 = load i32, ptr %16, align 4, !tbaa !9
  %995 = zext i32 %994 to i64
  %996 = add i64 %995, 8
  %997 = call i32 @i32_load(ptr noundef %993, i64 noundef %996)
  store i32 %997, ptr %16, align 4, !tbaa !9
  %998 = load i32, ptr %16, align 4, !tbaa !9
  %999 = load ptr, ptr %4, 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 2
  %1002 = load i32, ptr %1001, align 4, !tbaa !17
  %1003 = icmp ult i32 %998, %1002
  br i1 %1003, label %1004, label %1027

1004:                                             ; preds = %983
  %1005 = load ptr, ptr %4, align 8, !tbaa !5
  %1006 = getelementptr inbounds %struct.w2c_hermes, ptr %1005, i32 0, i32 7
  %1007 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1006, i32 0, i32 0
  %1008 = load ptr, ptr %1007, align 8, !tbaa !18
  %1009 = load i32, ptr %16, align 4, !tbaa !9
  %1010 = zext i32 %1009 to i64
  %1011 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1008, i64 %1010
  %1012 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1011, i32 0, i32 1
  %1013 = load ptr, ptr %1012, align 8, !tbaa !19
  %1014 = icmp ne ptr %1013, null
  br i1 %1014, label %1015, label %1027

1015:                                             ; preds = %1004
  %1016 = load ptr, ptr @w2c_hermes_t2, align 8, !tbaa !5
  %1017 = load ptr, ptr %4, align 8, !tbaa !5
  %1018 = getelementptr inbounds %struct.w2c_hermes, ptr %1017, i32 0, i32 7
  %1019 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1018, i32 0, i32 0
  %1020 = load ptr, ptr %1019, align 8, !tbaa !18
  %1021 = load i32, ptr %16, align 4, !tbaa !9
  %1022 = zext i32 %1021 to i64
  %1023 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1020, i64 %1022
  %1024 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1023, i32 0, i32 0
  %1025 = load ptr, ptr %1024, align 8, !tbaa !21
  %1026 = call zeroext i1 @func_types_eq(ptr noundef %1016, ptr noundef %1025)
  br label %1027

1027:                                             ; preds = %1015, %1004, %983
  %1028 = phi i1 [ false, %1004 ], [ false, %983 ], [ %1026, %1015 ]
  %1029 = xor i1 %1028, true
  %1030 = xor i1 %1029, true
  %1031 = zext i1 %1030 to i32
  %1032 = sext i32 %1031 to i64
  %1033 = call i64 @llvm.expect.i64(i64 %1032, i64 1)
  %1034 = icmp ne i64 %1033, 0
  br i1 %1034, label %1037, label %1035

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

1036:                                             ; No predecessors!
  br label %1037

1037:                                             ; preds = %1036, %1027
  %1038 = phi i1 [ true, %1027 ], [ false, %1036 ]
  %1039 = zext i1 %1038 to i32
  %1040 = load ptr, ptr %4, align 8, !tbaa !5
  %1041 = getelementptr inbounds %struct.w2c_hermes, ptr %1040, i32 0, i32 7
  %1042 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1041, i32 0, i32 0
  %1043 = load ptr, ptr %1042, align 8, !tbaa !18
  %1044 = load i32, ptr %16, align 4, !tbaa !9
  %1045 = zext i32 %1044 to i64
  %1046 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1043, i64 %1045
  %1047 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1046, i32 0, i32 1
  %1048 = load ptr, ptr %1047, align 8, !tbaa !19
  %1049 = load ptr, ptr %4, align 8, !tbaa !5
  %1050 = getelementptr inbounds %struct.w2c_hermes, ptr %1049, i32 0, i32 7
  %1051 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1050, i32 0, i32 0
  %1052 = load ptr, ptr %1051, align 8, !tbaa !18
  %1053 = load i32, ptr %16, align 4, !tbaa !9
  %1054 = zext i32 %1053 to i64
  %1055 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1052, i64 %1054
  %1056 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1055, i32 0, i32 2
  %1057 = load ptr, ptr %1056, align 8, !tbaa !22
  %1058 = load i32, ptr %15, align 4, !tbaa !9
  %1059 = call i32 %1048(ptr noundef %1057, i32 noundef %1058)
  store i32 %1059, ptr %15, align 4, !tbaa !9
  %1060 = load ptr, ptr %4, align 8, !tbaa !5
  %1061 = getelementptr inbounds %struct.w2c_hermes, ptr %1060, i32 0, i32 6
  %1062 = load i32, ptr %14, align 4, !tbaa !9
  %1063 = zext i32 %1062 to i64
  %1064 = add i64 %1063, 96
  %1065 = load i32, ptr %15, align 4, !tbaa !9
  call void @i32_store(ptr noundef %1061, i64 noundef %1064, i32 noundef %1065)
  br label %1066

1066:                                             ; preds = %1037, %960, %875
  %1067 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1067, ptr %14, align 4, !tbaa !9
  %1068 = load ptr, ptr %4, align 8, !tbaa !5
  %1069 = getelementptr inbounds %struct.w2c_hermes, ptr %1068, i32 0, i32 6
  %1070 = load i32, ptr %14, align 4, !tbaa !9
  %1071 = zext i32 %1070 to i64
  %1072 = call i32 @i32_load(ptr noundef %1069, i64 noundef %1071)
  store i32 %1072, ptr %14, align 4, !tbaa !9
  store i32 86016, ptr %15, align 4, !tbaa !9
  %1073 = load i32, ptr %15, align 4, !tbaa !9
  %1074 = load i32, ptr %14, align 4, !tbaa !9
  %1075 = add i32 %1074, %1073
  store i32 %1075, ptr %14, align 4, !tbaa !9
  %1076 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %1076, ptr %8, align 4, !tbaa !9
  %1077 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1077, ptr %15, align 4, !tbaa !9
  %1078 = load ptr, ptr %4, align 8, !tbaa !5
  %1079 = getelementptr inbounds %struct.w2c_hermes, ptr %1078, i32 0, i32 6
  %1080 = load i32, ptr %15, align 4, !tbaa !9
  %1081 = zext i32 %1080 to i64
  %1082 = add i64 %1081, 8
  %1083 = call i32 @i32_load(ptr noundef %1079, i64 noundef %1082)
  store i32 %1083, ptr %15, align 4, !tbaa !9
  %1084 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %1084, ptr %11, align 4, !tbaa !9
  %1085 = load i32, ptr %14, align 4, !tbaa !9
  %1086 = load i32, ptr %15, align 4, !tbaa !9
  %1087 = icmp ne i32 %1085, %1086
  %1088 = zext i1 %1087 to i32
  store i32 %1088, ptr %14, align 4, !tbaa !9
  %1089 = load i32, ptr %14, align 4, !tbaa !9
  %1090 = icmp ne i32 %1089, 0
  br i1 %1090, label %1091, label %1239

1091:                                             ; preds = %1066
  br label %1092

1092:                                             ; preds = %1237, %1091
  %1093 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1093, ptr %14, align 4, !tbaa !9
  %1094 = load ptr, ptr %4, align 8, !tbaa !5
  %1095 = getelementptr inbounds %struct.w2c_hermes, ptr %1094, i32 0, i32 6
  %1096 = load i32, ptr %14, align 4, !tbaa !9
  %1097 = zext i32 %1096 to i64
  %1098 = call i32 @i32_load(ptr noundef %1095, i64 noundef %1097)
  store i32 %1098, ptr %14, align 4, !tbaa !9
  %1099 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %1099, ptr %9, align 4, !tbaa !9
  store i32 -16777216, ptr %15, align 4, !tbaa !9
  %1100 = load i32, ptr %15, align 4, !tbaa !9
  %1101 = load i32, ptr %14, align 4, !tbaa !9
  %1102 = and i32 %1101, %1100
  store i32 %1102, ptr %14, align 4, !tbaa !9
  store i32 33554432, ptr %15, align 4, !tbaa !9
  %1103 = load i32, ptr %14, align 4, !tbaa !9
  %1104 = load i32, ptr %15, align 4, !tbaa !9
  %1105 = icmp ne i32 %1103, %1104
  %1106 = zext i1 %1105 to i32
  store i32 %1106, ptr %14, align 4, !tbaa !9
  %1107 = load i32, ptr %14, align 4, !tbaa !9
  %1108 = icmp ne i32 %1107, 0
  br i1 %1108, label %1109, label %1220

1109:                                             ; preds = %1092
  %1110 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1110, ptr %14, align 4, !tbaa !9
  %1111 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1111, ptr %15, align 4, !tbaa !9
  %1112 = load ptr, ptr %4, align 8, !tbaa !5
  %1113 = getelementptr inbounds %struct.w2c_hermes, ptr %1112, i32 0, i32 6
  %1114 = load i32, ptr %14, align 4, !tbaa !9
  %1115 = zext i32 %1114 to i64
  %1116 = add i64 %1115, 156
  %1117 = load i32, ptr %15, align 4, !tbaa !9
  call void @i32_store(ptr noundef %1113, i64 noundef %1116, i32 noundef %1117)
  %1118 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1118, ptr %14, align 4, !tbaa !9
  %1119 = load ptr, ptr %4, align 8, !tbaa !5
  %1120 = getelementptr inbounds %struct.w2c_hermes, ptr %1119, i32 0, i32 6
  %1121 = load i32, ptr %14, align 4, !tbaa !9
  %1122 = zext i32 %1121 to i64
  %1123 = add i64 %1122, 96
  %1124 = call i32 @i32_load(ptr noundef %1120, i64 noundef %1123)
  store i32 %1124, ptr %14, align 4, !tbaa !9
  %1125 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %1125, ptr %9, align 4, !tbaa !9
  %1126 = load i32, ptr %14, align 4, !tbaa !9
  %1127 = icmp ne i32 %1126, 0
  %1128 = xor i1 %1127, true
  %1129 = zext i1 %1128 to i32
  store i32 %1129, ptr %14, align 4, !tbaa !9
  %1130 = load i32, ptr %14, align 4, !tbaa !9
  %1131 = icmp ne i32 %1130, 0
  br i1 %1131, label %1132, label %1133

1132:                                             ; preds = %1109
  br label %2628

1133:                                             ; preds = %1109
  %1134 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %1134, ptr %14, align 4, !tbaa !9
  %1135 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1135, ptr %15, align 4, !tbaa !9
  store i32 156, ptr %16, align 4, !tbaa !9
  %1136 = load i32, ptr %16, align 4, !tbaa !9
  %1137 = load i32, ptr %15, align 4, !tbaa !9
  %1138 = add i32 %1137, %1136
  store i32 %1138, ptr %15, align 4, !tbaa !9
  %1139 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %1139, ptr %16, align 4, !tbaa !9
  %1140 = load ptr, ptr %4, align 8, !tbaa !5
  %1141 = getelementptr inbounds %struct.w2c_hermes, ptr %1140, i32 0, i32 6
  %1142 = load i32, ptr %16, align 4, !tbaa !9
  %1143 = zext i32 %1142 to i64
  %1144 = call i32 @i32_load(ptr noundef %1141, i64 noundef %1143)
  store i32 %1144, ptr %16, align 4, !tbaa !9
  %1145 = load ptr, ptr %4, align 8, !tbaa !5
  %1146 = getelementptr inbounds %struct.w2c_hermes, ptr %1145, i32 0, i32 6
  %1147 = load i32, ptr %16, align 4, !tbaa !9
  %1148 = zext i32 %1147 to i64
  %1149 = add i64 %1148, 24
  %1150 = call i32 @i32_load(ptr noundef %1146, i64 noundef %1149)
  store i32 %1150, ptr %16, align 4, !tbaa !9
  %1151 = load i32, ptr %16, align 4, !tbaa !9
  %1152 = load ptr, ptr %4, align 8, !tbaa !5
  %1153 = getelementptr inbounds %struct.w2c_hermes, ptr %1152, i32 0, i32 7
  %1154 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1153, i32 0, i32 2
  %1155 = load i32, ptr %1154, align 4, !tbaa !17
  %1156 = icmp ult i32 %1151, %1155
  br i1 %1156, label %1157, label %1180

1157:                                             ; preds = %1133
  %1158 = load ptr, ptr %4, align 8, !tbaa !5
  %1159 = getelementptr inbounds %struct.w2c_hermes, ptr %1158, i32 0, i32 7
  %1160 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1159, i32 0, i32 0
  %1161 = load ptr, ptr %1160, align 8, !tbaa !18
  %1162 = load i32, ptr %16, align 4, !tbaa !9
  %1163 = zext i32 %1162 to i64
  %1164 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1161, i64 %1163
  %1165 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1164, i32 0, i32 1
  %1166 = load ptr, ptr %1165, align 8, !tbaa !19
  %1167 = icmp ne ptr %1166, null
  br i1 %1167, label %1168, label %1180

1168:                                             ; preds = %1157
  %1169 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !5
  %1170 = load ptr, ptr %4, align 8, !tbaa !5
  %1171 = getelementptr inbounds %struct.w2c_hermes, ptr %1170, i32 0, i32 7
  %1172 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1171, i32 0, i32 0
  %1173 = load ptr, ptr %1172, align 8, !tbaa !18
  %1174 = load i32, ptr %16, align 4, !tbaa !9
  %1175 = zext i32 %1174 to i64
  %1176 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1173, i64 %1175
  %1177 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1176, i32 0, i32 0
  %1178 = load ptr, ptr %1177, align 8, !tbaa !21
  %1179 = call zeroext i1 @func_types_eq(ptr noundef %1169, ptr noundef %1178)
  br label %1180

1180:                                             ; preds = %1168, %1157, %1133
  %1181 = phi i1 [ false, %1157 ], [ false, %1133 ], [ %1179, %1168 ]
  %1182 = xor i1 %1181, true
  %1183 = xor i1 %1182, true
  %1184 = zext i1 %1183 to i32
  %1185 = sext i32 %1184 to i64
  %1186 = call i64 @llvm.expect.i64(i64 %1185, i64 1)
  %1187 = icmp ne i64 %1186, 0
  br i1 %1187, label %1190, label %1188

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

1189:                                             ; No predecessors!
  br label %1190

1190:                                             ; preds = %1189, %1180
  %1191 = phi i1 [ true, %1180 ], [ false, %1189 ]
  %1192 = zext i1 %1191 to i32
  %1193 = load ptr, ptr %4, align 8, !tbaa !5
  %1194 = getelementptr inbounds %struct.w2c_hermes, ptr %1193, i32 0, i32 7
  %1195 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1194, i32 0, i32 0
  %1196 = load ptr, ptr %1195, align 8, !tbaa !18
  %1197 = load i32, ptr %16, align 4, !tbaa !9
  %1198 = zext i32 %1197 to i64
  %1199 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1196, i64 %1198
  %1200 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1199, i32 0, i32 1
  %1201 = load ptr, ptr %1200, align 8, !tbaa !19
  %1202 = load ptr, ptr %4, align 8, !tbaa !5
  %1203 = getelementptr inbounds %struct.w2c_hermes, ptr %1202, i32 0, i32 7
  %1204 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1203, i32 0, i32 0
  %1205 = load ptr, ptr %1204, align 8, !tbaa !18
  %1206 = load i32, ptr %16, align 4, !tbaa !9
  %1207 = zext i32 %1206 to i64
  %1208 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1205, i64 %1207
  %1209 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1208, i32 0, i32 2
  %1210 = load ptr, ptr %1209, align 8, !tbaa !22
  %1211 = load i32, ptr %14, align 4, !tbaa !9
  %1212 = load i32, ptr %15, align 4, !tbaa !9
  call void %1201(ptr noundef %1210, i32 noundef %1211, i32 noundef %1212)
  %1213 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1213, ptr %14, align 4, !tbaa !9
  %1214 = load ptr, ptr %4, align 8, !tbaa !5
  %1215 = getelementptr inbounds %struct.w2c_hermes, ptr %1214, i32 0, i32 6
  %1216 = load i32, ptr %14, align 4, !tbaa !9
  %1217 = zext i32 %1216 to i64
  %1218 = call i32 @i32_load(ptr noundef %1215, i64 noundef %1217)
  store i32 %1218, ptr %14, align 4, !tbaa !9
  %1219 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %1219, ptr %9, align 4, !tbaa !9
  br label %1220

1220:                                             ; preds = %1190, %1092
  %1221 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1221, ptr %14, align 4, !tbaa !9
  %1222 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %1222, ptr %15, align 4, !tbaa !9
  store i32 16777215, ptr %16, align 4, !tbaa !9
  %1223 = load i32, ptr %16, align 4, !tbaa !9
  %1224 = load i32, ptr %15, align 4, !tbaa !9
  %1225 = and i32 %1224, %1223
  store i32 %1225, ptr %15, align 4, !tbaa !9
  %1226 = load i32, ptr %15, align 4, !tbaa !9
  %1227 = load i32, ptr %14, align 4, !tbaa !9
  %1228 = add i32 %1227, %1226
  store i32 %1228, ptr %14, align 4, !tbaa !9
  %1229 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %1229, ptr %8, align 4, !tbaa !9
  %1230 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %1230, ptr %15, align 4, !tbaa !9
  %1231 = load i32, ptr %14, align 4, !tbaa !9
  %1232 = load i32, ptr %15, align 4, !tbaa !9
  %1233 = icmp ne i32 %1231, %1232
  %1234 = zext i1 %1233 to i32
  store i32 %1234, ptr %14, align 4, !tbaa !9
  %1235 = load i32, ptr %14, align 4, !tbaa !9
  %1236 = icmp ne i32 %1235, 0
  br i1 %1236, label %1237, label %1238

1237:                                             ; preds = %1220
  br label %1092

1238:                                             ; preds = %1220
  br label %1239

1239:                                             ; preds = %1238, %1066
  %1240 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1240, ptr %14, align 4, !tbaa !9
  %1241 = load ptr, ptr %4, align 8, !tbaa !5
  %1242 = getelementptr inbounds %struct.w2c_hermes, ptr %1241, i32 0, i32 6
  %1243 = load i32, ptr %14, align 4, !tbaa !9
  %1244 = zext i32 %1243 to i64
  %1245 = add i64 %1244, 96
  %1246 = call i32 @i32_load(ptr noundef %1242, i64 noundef %1245)
  store i32 %1246, ptr %14, align 4, !tbaa !9
  %1247 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %1247, ptr %8, align 4, !tbaa !9
  %1248 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1248, ptr %15, align 4, !tbaa !9
  store i32 80, ptr %16, align 4, !tbaa !9
  %1249 = load i32, ptr %16, align 4, !tbaa !9
  %1250 = load i32, ptr %15, align 4, !tbaa !9
  %1251 = add i32 %1250, %1249
  store i32 %1251, ptr %15, align 4, !tbaa !9
  %1252 = load i32, ptr %14, align 4, !tbaa !9
  %1253 = load i32, ptr %15, align 4, !tbaa !9
  %1254 = icmp eq i32 %1252, %1253
  %1255 = zext i1 %1254 to i32
  store i32 %1255, ptr %14, align 4, !tbaa !9
  %1256 = load i32, ptr %14, align 4, !tbaa !9
  %1257 = icmp ne i32 %1256, 0
  br i1 %1257, label %1258, label %1274

1258:                                             ; preds = %1239
  %1259 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1259, ptr %14, align 4, !tbaa !9
  store i32 80, ptr %15, align 4, !tbaa !9
  %1260 = load i32, ptr %15, align 4, !tbaa !9
  %1261 = load i32, ptr %14, align 4, !tbaa !9
  %1262 = add i32 %1261, %1260
  store i32 %1262, ptr %14, align 4, !tbaa !9
  %1263 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %1263, ptr %8, align 4, !tbaa !9
  %1264 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1264, ptr %14, align 4, !tbaa !9
  %1265 = load ptr, ptr %4, align 8, !tbaa !5
  %1266 = getelementptr inbounds %struct.w2c_hermes, ptr %1265, i32 0, i32 6
  %1267 = load i32, ptr %14, align 4, !tbaa !9
  %1268 = zext i32 %1267 to i64
  %1269 = add i64 %1268, 80
  %1270 = call i32 @i32_load(ptr noundef %1266, i64 noundef %1269)
  store i32 %1270, ptr %14, align 4, !tbaa !9
  store i32 16, ptr %15, align 4, !tbaa !9
  %1271 = load i32, ptr %15, align 4, !tbaa !9
  %1272 = load i32, ptr %14, align 4, !tbaa !9
  %1273 = add i32 %1272, %1271
  store i32 %1273, ptr %14, align 4, !tbaa !9
  br label %1568

1274:                                             ; preds = %1239
  %1275 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1275, ptr %14, align 4, !tbaa !9
  %1276 = load i32, ptr %14, align 4, !tbaa !9
  %1277 = icmp ne i32 %1276, 0
  %1278 = xor i1 %1277, true
  %1279 = zext i1 %1278 to i32
  store i32 %1279, ptr %14, align 4, !tbaa !9
  %1280 = load i32, ptr %14, align 4, !tbaa !9
  %1281 = icmp ne i32 %1280, 0
  br i1 %1281, label %1282, label %1283

1282:                                             ; preds = %1274
  br label %1638

1283:                                             ; preds = %1274
  %1284 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1284, ptr %14, align 4, !tbaa !9
  %1285 = load ptr, ptr %4, align 8, !tbaa !5
  %1286 = getelementptr inbounds %struct.w2c_hermes, ptr %1285, i32 0, i32 6
  %1287 = load i32, ptr %14, align 4, !tbaa !9
  %1288 = zext i32 %1287 to i64
  %1289 = call i32 @i32_load(ptr noundef %1286, i64 noundef %1288)
  store i32 %1289, ptr %14, align 4, !tbaa !9
  store i32 20, ptr %15, align 4, !tbaa !9
  %1290 = load i32, ptr %15, align 4, !tbaa !9
  %1291 = load i32, ptr %14, align 4, !tbaa !9
  %1292 = add i32 %1291, %1290
  store i32 %1292, ptr %14, align 4, !tbaa !9
  br label %1568

1293:                                             ; preds = %846
  %1294 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1294, ptr %14, align 4, !tbaa !9
  %1295 = load ptr, ptr %4, align 8, !tbaa !5
  %1296 = getelementptr inbounds %struct.w2c_hermes, ptr %1295, i32 0, i32 6
  %1297 = load i32, ptr %14, align 4, !tbaa !9
  %1298 = zext i32 %1297 to i64
  %1299 = add i64 %1298, 120
  %1300 = call i32 @i32_load(ptr noundef %1296, i64 noundef %1299)
  store i32 %1300, ptr %14, align 4, !tbaa !9
  %1301 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %1301, ptr %8, align 4, !tbaa !9
  %1302 = load i32, ptr %14, align 4, !tbaa !9
  %1303 = icmp ne i32 %1302, 0
  %1304 = xor i1 %1303, true
  %1305 = zext i1 %1304 to i32
  store i32 %1305, ptr %14, align 4, !tbaa !9
  %1306 = load i32, ptr %14, align 4, !tbaa !9
  %1307 = icmp ne i32 %1306, 0
  br i1 %1307, label %1308, label %1316

1308:                                             ; preds = %1293
  %1309 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1309, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %15, align 4, !tbaa !9
  %1310 = load ptr, ptr %4, align 8, !tbaa !5
  %1311 = getelementptr inbounds %struct.w2c_hermes, ptr %1310, i32 0, i32 6
  %1312 = load i32, ptr %14, align 4, !tbaa !9
  %1313 = zext i32 %1312 to i64
  %1314 = add i64 %1313, 72
  %1315 = load i32, ptr %15, align 4, !tbaa !9
  call void @i32_store(ptr noundef %1311, i64 noundef %1314, i32 noundef %1315)
  br label %1506

1316:                                             ; preds = %1293
  %1317 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1317, ptr %14, align 4, !tbaa !9
  store i32 104, ptr %15, align 4, !tbaa !9
  %1318 = load i32, ptr %15, align 4, !tbaa !9
  %1319 = load i32, ptr %14, align 4, !tbaa !9
  %1320 = add i32 %1319, %1318
  store i32 %1320, ptr %14, align 4, !tbaa !9
  %1321 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1321, ptr %15, align 4, !tbaa !9
  %1322 = load i32, ptr %14, align 4, !tbaa !9
  %1323 = load i32, ptr %15, align 4, !tbaa !9
  %1324 = icmp eq i32 %1322, %1323
  %1325 = zext i1 %1324 to i32
  store i32 %1325, ptr %14, align 4, !tbaa !9
  %1326 = load i32, ptr %14, align 4, !tbaa !9
  %1327 = icmp ne i32 %1326, 0
  br i1 %1327, label %1328, label %1423

1328:                                             ; preds = %1316
  %1329 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1329, ptr %14, align 4, !tbaa !9
  %1330 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1330, ptr %15, align 4, !tbaa !9
  store i32 56, ptr %16, align 4, !tbaa !9
  %1331 = load i32, ptr %16, align 4, !tbaa !9
  %1332 = load i32, ptr %15, align 4, !tbaa !9
  %1333 = add i32 %1332, %1331
  store i32 %1333, ptr %15, align 4, !tbaa !9
  %1334 = load ptr, ptr %4, align 8, !tbaa !5
  %1335 = getelementptr inbounds %struct.w2c_hermes, ptr %1334, i32 0, i32 6
  %1336 = load i32, ptr %14, align 4, !tbaa !9
  %1337 = zext i32 %1336 to i64
  %1338 = add i64 %1337, 72
  %1339 = load i32, ptr %15, align 4, !tbaa !9
  call void @i32_store(ptr noundef %1335, i64 noundef %1338, i32 noundef %1339)
  %1340 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1340, ptr %14, align 4, !tbaa !9
  store i32 104, ptr %15, align 4, !tbaa !9
  %1341 = load i32, ptr %15, align 4, !tbaa !9
  %1342 = load i32, ptr %14, align 4, !tbaa !9
  %1343 = add i32 %1342, %1341
  store i32 %1343, ptr %14, align 4, !tbaa !9
  %1344 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1344, ptr %15, align 4, !tbaa !9
  store i32 56, ptr %16, align 4, !tbaa !9
  %1345 = load i32, ptr %16, align 4, !tbaa !9
  %1346 = load i32, ptr %15, align 4, !tbaa !9
  %1347 = add i32 %1346, %1345
  store i32 %1347, ptr %15, align 4, !tbaa !9
  %1348 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1348, ptr %16, align 4, !tbaa !9
  %1349 = load ptr, ptr %4, align 8, !tbaa !5
  %1350 = getelementptr inbounds %struct.w2c_hermes, ptr %1349, i32 0, i32 6
  %1351 = load i32, ptr %16, align 4, !tbaa !9
  %1352 = zext i32 %1351 to i64
  %1353 = add i64 %1352, 104
  %1354 = call i32 @i32_load(ptr noundef %1350, i64 noundef %1353)
  store i32 %1354, ptr %16, align 4, !tbaa !9
  %1355 = load ptr, ptr %4, align 8, !tbaa !5
  %1356 = getelementptr inbounds %struct.w2c_hermes, ptr %1355, i32 0, i32 6
  %1357 = load i32, ptr %16, align 4, !tbaa !9
  %1358 = zext i32 %1357 to i64
  %1359 = add i64 %1358, 12
  %1360 = call i32 @i32_load(ptr noundef %1356, i64 noundef %1359)
  store i32 %1360, ptr %16, align 4, !tbaa !9
  %1361 = load i32, ptr %16, align 4, !tbaa !9
  %1362 = load ptr, ptr %4, align 8, !tbaa !5
  %1363 = getelementptr inbounds %struct.w2c_hermes, ptr %1362, i32 0, i32 7
  %1364 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1363, i32 0, i32 2
  %1365 = load i32, ptr %1364, align 4, !tbaa !17
  %1366 = icmp ult i32 %1361, %1365
  br i1 %1366, label %1367, label %1390

1367:                                             ; preds = %1328
  %1368 = load ptr, ptr %4, 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 !18
  %1372 = load i32, ptr %16, 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 1
  %1376 = load ptr, ptr %1375, align 8, !tbaa !19
  %1377 = icmp ne ptr %1376, null
  br i1 %1377, label %1378, label %1390

1378:                                             ; preds = %1367
  %1379 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !5
  %1380 = load ptr, ptr %4, align 8, !tbaa !5
  %1381 = getelementptr inbounds %struct.w2c_hermes, ptr %1380, i32 0, i32 7
  %1382 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1381, i32 0, i32 0
  %1383 = load ptr, ptr %1382, align 8, !tbaa !18
  %1384 = load i32, ptr %16, align 4, !tbaa !9
  %1385 = zext i32 %1384 to i64
  %1386 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1383, i64 %1385
  %1387 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1386, i32 0, i32 0
  %1388 = load ptr, ptr %1387, align 8, !tbaa !21
  %1389 = call zeroext i1 @func_types_eq(ptr noundef %1379, ptr noundef %1388)
  br label %1390

1390:                                             ; preds = %1378, %1367, %1328
  %1391 = phi i1 [ false, %1367 ], [ false, %1328 ], [ %1389, %1378 ]
  %1392 = xor i1 %1391, true
  %1393 = xor i1 %1392, true
  %1394 = zext i1 %1393 to i32
  %1395 = sext i32 %1394 to i64
  %1396 = call i64 @llvm.expect.i64(i64 %1395, i64 1)
  %1397 = icmp ne i64 %1396, 0
  br i1 %1397, label %1400, label %1398

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

1399:                                             ; No predecessors!
  br label %1400

1400:                                             ; preds = %1399, %1390
  %1401 = phi i1 [ true, %1390 ], [ false, %1399 ]
  %1402 = zext i1 %1401 to i32
  %1403 = load ptr, ptr %4, align 8, !tbaa !5
  %1404 = getelementptr inbounds %struct.w2c_hermes, ptr %1403, i32 0, i32 7
  %1405 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1404, i32 0, i32 0
  %1406 = load ptr, ptr %1405, align 8, !tbaa !18
  %1407 = load i32, ptr %16, align 4, !tbaa !9
  %1408 = zext i32 %1407 to i64
  %1409 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1406, i64 %1408
  %1410 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1409, i32 0, i32 1
  %1411 = load ptr, ptr %1410, align 8, !tbaa !19
  %1412 = load ptr, ptr %4, align 8, !tbaa !5
  %1413 = getelementptr inbounds %struct.w2c_hermes, ptr %1412, i32 0, i32 7
  %1414 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1413, i32 0, i32 0
  %1415 = load ptr, ptr %1414, align 8, !tbaa !18
  %1416 = load i32, ptr %16, align 4, !tbaa !9
  %1417 = zext i32 %1416 to i64
  %1418 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1415, i64 %1417
  %1419 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1418, i32 0, i32 2
  %1420 = load ptr, ptr %1419, align 8, !tbaa !22
  %1421 = load i32, ptr %14, align 4, !tbaa !9
  %1422 = load i32, ptr %15, align 4, !tbaa !9
  call void %1411(ptr noundef %1420, i32 noundef %1421, i32 noundef %1422)
  br label %1506

1423:                                             ; preds = %1316
  %1424 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1424, ptr %14, align 4, !tbaa !9
  %1425 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1425, ptr %15, align 4, !tbaa !9
  %1426 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1426, ptr %16, align 4, !tbaa !9
  %1427 = load ptr, ptr %4, align 8, !tbaa !5
  %1428 = getelementptr inbounds %struct.w2c_hermes, ptr %1427, i32 0, i32 6
  %1429 = load i32, ptr %16, align 4, !tbaa !9
  %1430 = zext i32 %1429 to i64
  %1431 = call i32 @i32_load(ptr noundef %1428, i64 noundef %1430)
  store i32 %1431, ptr %16, align 4, !tbaa !9
  %1432 = load ptr, ptr %4, align 8, !tbaa !5
  %1433 = getelementptr inbounds %struct.w2c_hermes, ptr %1432, i32 0, i32 6
  %1434 = load i32, ptr %16, align 4, !tbaa !9
  %1435 = zext i32 %1434 to i64
  %1436 = add i64 %1435, 8
  %1437 = call i32 @i32_load(ptr noundef %1433, i64 noundef %1436)
  store i32 %1437, ptr %16, align 4, !tbaa !9
  %1438 = load i32, ptr %16, align 4, !tbaa !9
  %1439 = load ptr, ptr %4, align 8, !tbaa !5
  %1440 = getelementptr inbounds %struct.w2c_hermes, ptr %1439, i32 0, i32 7
  %1441 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1440, i32 0, i32 2
  %1442 = load i32, ptr %1441, align 4, !tbaa !17
  %1443 = icmp ult i32 %1438, %1442
  br i1 %1443, label %1444, label %1467

1444:                                             ; preds = %1423
  %1445 = load ptr, ptr %4, align 8, !tbaa !5
  %1446 = getelementptr inbounds %struct.w2c_hermes, ptr %1445, i32 0, i32 7
  %1447 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1446, i32 0, i32 0
  %1448 = load ptr, ptr %1447, align 8, !tbaa !18
  %1449 = load i32, ptr %16, align 4, !tbaa !9
  %1450 = zext i32 %1449 to i64
  %1451 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1448, i64 %1450
  %1452 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1451, i32 0, i32 1
  %1453 = load ptr, ptr %1452, align 8, !tbaa !19
  %1454 = icmp ne ptr %1453, null
  br i1 %1454, label %1455, label %1467

1455:                                             ; preds = %1444
  %1456 = load ptr, ptr @w2c_hermes_t2, align 8, !tbaa !5
  %1457 = load ptr, ptr %4, align 8, !tbaa !5
  %1458 = getelementptr inbounds %struct.w2c_hermes, ptr %1457, i32 0, i32 7
  %1459 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1458, i32 0, i32 0
  %1460 = load ptr, ptr %1459, align 8, !tbaa !18
  %1461 = load i32, ptr %16, align 4, !tbaa !9
  %1462 = zext i32 %1461 to i64
  %1463 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1460, i64 %1462
  %1464 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1463, i32 0, i32 0
  %1465 = load ptr, ptr %1464, align 8, !tbaa !21
  %1466 = call zeroext i1 @func_types_eq(ptr noundef %1456, ptr noundef %1465)
  br label %1467

1467:                                             ; preds = %1455, %1444, %1423
  %1468 = phi i1 [ false, %1444 ], [ false, %1423 ], [ %1466, %1455 ]
  %1469 = xor i1 %1468, true
  %1470 = xor i1 %1469, true
  %1471 = zext i1 %1470 to i32
  %1472 = sext i32 %1471 to i64
  %1473 = call i64 @llvm.expect.i64(i64 %1472, i64 1)
  %1474 = icmp ne i64 %1473, 0
  br i1 %1474, label %1477, label %1475

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

1476:                                             ; No predecessors!
  br label %1477

1477:                                             ; preds = %1476, %1467
  %1478 = phi i1 [ true, %1467 ], [ false, %1476 ]
  %1479 = zext i1 %1478 to i32
  %1480 = load ptr, ptr %4, align 8, !tbaa !5
  %1481 = getelementptr inbounds %struct.w2c_hermes, ptr %1480, i32 0, i32 7
  %1482 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1481, i32 0, i32 0
  %1483 = load ptr, ptr %1482, align 8, !tbaa !18
  %1484 = load i32, ptr %16, align 4, !tbaa !9
  %1485 = zext i32 %1484 to i64
  %1486 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1483, i64 %1485
  %1487 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1486, i32 0, i32 1
  %1488 = load ptr, ptr %1487, align 8, !tbaa !19
  %1489 = load ptr, ptr %4, align 8, !tbaa !5
  %1490 = getelementptr inbounds %struct.w2c_hermes, ptr %1489, i32 0, i32 7
  %1491 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1490, i32 0, i32 0
  %1492 = load ptr, ptr %1491, align 8, !tbaa !18
  %1493 = load i32, ptr %16, align 4, !tbaa !9
  %1494 = zext i32 %1493 to i64
  %1495 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1492, i64 %1494
  %1496 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1495, i32 0, i32 2
  %1497 = load ptr, ptr %1496, align 8, !tbaa !22
  %1498 = load i32, ptr %15, align 4, !tbaa !9
  %1499 = call i32 %1488(ptr noundef %1497, i32 noundef %1498)
  store i32 %1499, ptr %15, align 4, !tbaa !9
  %1500 = load ptr, ptr %4, align 8, !tbaa !5
  %1501 = getelementptr inbounds %struct.w2c_hermes, ptr %1500, i32 0, i32 6
  %1502 = load i32, ptr %14, align 4, !tbaa !9
  %1503 = zext i32 %1502 to i64
  %1504 = add i64 %1503, 72
  %1505 = load i32, ptr %15, align 4, !tbaa !9
  call void @i32_store(ptr noundef %1501, i64 noundef %1504, i32 noundef %1505)
  br label %1506

1506:                                             ; preds = %1477, %1400, %1308
  %1507 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1507, ptr %14, align 4, !tbaa !9
  %1508 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1508, ptr %15, align 4, !tbaa !9
  store i32 56, ptr %16, align 4, !tbaa !9
  %1509 = load i32, ptr %16, align 4, !tbaa !9
  %1510 = load i32, ptr %15, align 4, !tbaa !9
  %1511 = add i32 %1510, %1509
  store i32 %1511, ptr %15, align 4, !tbaa !9
  %1512 = load ptr, ptr %4, align 8, !tbaa !5
  %1513 = load i32, ptr %14, align 4, !tbaa !9
  %1514 = load i32, ptr %15, align 4, !tbaa !9
  call void @w2c_hermes_void0x20hermes0x3A0x3Avm0x3A0x3AHadesGC0x3A0x3AHeapSegment0x3A0x3AforAllObjs0x3Chermes0x3A0x3Avm0x3A0x3AHadesGC0x3A0x3AforAllObjs0x28std0x3A0x3A_0x5F20x3A0x3Afunction0x3Cvoid0x200x28hermes0x3A0x3Avm0x3A0x3AGCCell0x2A0x290x3E0x20const0x260x290x3A0x3A0x24_00x3E0x28hermes0x3A0x3Avm0x3A0x3AHadesGC0x3A0x3AforAllObjs0x28std0x3A0x3A_0x5F20x3A0x3Afunction0x3Cvoid0x200x28hermes0x3A0x3Avm0x3A0x3AGCCell0x2A0x290x3E0x20const0x260x290x3A0x3A0x24_00x29(ptr noundef %1512, i32 noundef %1513, i32 noundef %1514)
  %1515 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1515, ptr %14, align 4, !tbaa !9
  %1516 = load ptr, ptr %4, align 8, !tbaa !5
  %1517 = getelementptr inbounds %struct.w2c_hermes, ptr %1516, i32 0, i32 6
  %1518 = load i32, ptr %14, align 4, !tbaa !9
  %1519 = zext i32 %1518 to i64
  %1520 = add i64 %1519, 72
  %1521 = call i32 @i32_load(ptr noundef %1517, i64 noundef %1520)
  store i32 %1521, ptr %14, align 4, !tbaa !9
  %1522 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %1522, ptr %8, align 4, !tbaa !9
  %1523 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1523, ptr %15, align 4, !tbaa !9
  store i32 56, ptr %16, align 4, !tbaa !9
  %1524 = load i32, ptr %16, align 4, !tbaa !9
  %1525 = load i32, ptr %15, align 4, !tbaa !9
  %1526 = add i32 %1525, %1524
  store i32 %1526, ptr %15, align 4, !tbaa !9
  %1527 = load i32, ptr %14, align 4, !tbaa !9
  %1528 = load i32, ptr %15, align 4, !tbaa !9
  %1529 = icmp eq i32 %1527, %1528
  %1530 = zext i1 %1529 to i32
  store i32 %1530, ptr %14, align 4, !tbaa !9
  %1531 = load i32, ptr %14, align 4, !tbaa !9
  %1532 = icmp ne i32 %1531, 0
  br i1 %1532, label %1533, label %1549

1533:                                             ; preds = %1506
  %1534 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1534, ptr %14, align 4, !tbaa !9
  store i32 56, ptr %15, align 4, !tbaa !9
  %1535 = load i32, ptr %15, align 4, !tbaa !9
  %1536 = load i32, ptr %14, align 4, !tbaa !9
  %1537 = add i32 %1536, %1535
  store i32 %1537, ptr %14, align 4, !tbaa !9
  %1538 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %1538, ptr %8, align 4, !tbaa !9
  %1539 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1539, ptr %14, align 4, !tbaa !9
  %1540 = load ptr, ptr %4, align 8, !tbaa !5
  %1541 = getelementptr inbounds %struct.w2c_hermes, ptr %1540, i32 0, i32 6
  %1542 = load i32, ptr %14, align 4, !tbaa !9
  %1543 = zext i32 %1542 to i64
  %1544 = add i64 %1543, 56
  %1545 = call i32 @i32_load(ptr noundef %1541, i64 noundef %1544)
  store i32 %1545, ptr %14, align 4, !tbaa !9
  store i32 16, ptr %15, align 4, !tbaa !9
  %1546 = load i32, ptr %15, align 4, !tbaa !9
  %1547 = load i32, ptr %14, align 4, !tbaa !9
  %1548 = add i32 %1547, %1546
  store i32 %1548, ptr %14, align 4, !tbaa !9
  br label %1568

1549:                                             ; preds = %1506
  %1550 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1550, ptr %14, align 4, !tbaa !9
  %1551 = load i32, ptr %14, align 4, !tbaa !9
  %1552 = icmp ne i32 %1551, 0
  %1553 = xor i1 %1552, true
  %1554 = zext i1 %1553 to i32
  store i32 %1554, ptr %14, align 4, !tbaa !9
  %1555 = load i32, ptr %14, align 4, !tbaa !9
  %1556 = icmp ne i32 %1555, 0
  br i1 %1556, label %1557, label %1558

1557:                                             ; preds = %1549
  br label %1638

1558:                                             ; preds = %1549
  %1559 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1559, ptr %14, align 4, !tbaa !9
  %1560 = load ptr, ptr %4, align 8, !tbaa !5
  %1561 = getelementptr inbounds %struct.w2c_hermes, ptr %1560, i32 0, i32 6
  %1562 = load i32, ptr %14, align 4, !tbaa !9
  %1563 = zext i32 %1562 to i64
  %1564 = call i32 @i32_load(ptr noundef %1561, i64 noundef %1563)
  store i32 %1564, ptr %14, align 4, !tbaa !9
  store i32 20, ptr %15, align 4, !tbaa !9
  %1565 = load i32, ptr %15, align 4, !tbaa !9
  %1566 = load i32, ptr %14, align 4, !tbaa !9
  %1567 = add i32 %1566, %1565
  store i32 %1567, ptr %14, align 4, !tbaa !9
  br label %1568

1568:                                             ; preds = %1558, %1533, %1283, %1258
  %1569 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %1569, ptr %9, align 4, !tbaa !9
  %1570 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1570, ptr %14, align 4, !tbaa !9
  %1571 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %1571, ptr %15, align 4, !tbaa !9
  %1572 = load ptr, ptr %4, align 8, !tbaa !5
  %1573 = getelementptr inbounds %struct.w2c_hermes, ptr %1572, i32 0, i32 6
  %1574 = load i32, ptr %15, align 4, !tbaa !9
  %1575 = zext i32 %1574 to i64
  %1576 = call i32 @i32_load(ptr noundef %1573, i64 noundef %1575)
  store i32 %1576, ptr %15, align 4, !tbaa !9
  %1577 = load i32, ptr %15, align 4, !tbaa !9
  %1578 = load ptr, ptr %4, align 8, !tbaa !5
  %1579 = getelementptr inbounds %struct.w2c_hermes, ptr %1578, i32 0, i32 7
  %1580 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1579, i32 0, i32 2
  %1581 = load i32, ptr %1580, align 4, !tbaa !17
  %1582 = icmp ult i32 %1577, %1581
  br i1 %1582, label %1583, label %1606

1583:                                             ; preds = %1568
  %1584 = load ptr, ptr %4, align 8, !tbaa !5
  %1585 = getelementptr inbounds %struct.w2c_hermes, ptr %1584, i32 0, i32 7
  %1586 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1585, i32 0, i32 0
  %1587 = load ptr, ptr %1586, align 8, !tbaa !18
  %1588 = load i32, ptr %15, align 4, !tbaa !9
  %1589 = zext i32 %1588 to i64
  %1590 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1587, i64 %1589
  %1591 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1590, i32 0, i32 1
  %1592 = load ptr, ptr %1591, align 8, !tbaa !19
  %1593 = icmp ne ptr %1592, null
  br i1 %1593, label %1594, label %1606

1594:                                             ; preds = %1583
  %1595 = load ptr, ptr @w2c_hermes_t3, align 8, !tbaa !5
  %1596 = load ptr, ptr %4, align 8, !tbaa !5
  %1597 = getelementptr inbounds %struct.w2c_hermes, ptr %1596, i32 0, i32 7
  %1598 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1597, i32 0, i32 0
  %1599 = load ptr, ptr %1598, align 8, !tbaa !18
  %1600 = load i32, ptr %15, align 4, !tbaa !9
  %1601 = zext i32 %1600 to i64
  %1602 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1599, i64 %1601
  %1603 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1602, i32 0, i32 0
  %1604 = load ptr, ptr %1603, align 8, !tbaa !21
  %1605 = call zeroext i1 @func_types_eq(ptr noundef %1595, ptr noundef %1604)
  br label %1606

1606:                                             ; preds = %1594, %1583, %1568
  %1607 = phi i1 [ false, %1583 ], [ false, %1568 ], [ %1605, %1594 ]
  %1608 = xor i1 %1607, true
  %1609 = xor i1 %1608, true
  %1610 = zext i1 %1609 to i32
  %1611 = sext i32 %1610 to i64
  %1612 = call i64 @llvm.expect.i64(i64 %1611, i64 1)
  %1613 = icmp ne i64 %1612, 0
  br i1 %1613, label %1616, label %1614

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

1615:                                             ; No predecessors!
  br label %1616

1616:                                             ; preds = %1615, %1606
  %1617 = phi i1 [ true, %1606 ], [ false, %1615 ]
  %1618 = zext i1 %1617 to i32
  %1619 = load ptr, ptr %4, align 8, !tbaa !5
  %1620 = getelementptr inbounds %struct.w2c_hermes, ptr %1619, i32 0, i32 7
  %1621 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1620, i32 0, i32 0
  %1622 = load ptr, ptr %1621, align 8, !tbaa !18
  %1623 = load i32, ptr %15, align 4, !tbaa !9
  %1624 = zext i32 %1623 to i64
  %1625 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1622, i64 %1624
  %1626 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1625, i32 0, i32 1
  %1627 = load ptr, ptr %1626, align 8, !tbaa !19
  %1628 = load ptr, ptr %4, align 8, !tbaa !5
  %1629 = getelementptr inbounds %struct.w2c_hermes, ptr %1628, i32 0, i32 7
  %1630 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1629, i32 0, i32 0
  %1631 = load ptr, ptr %1630, align 8, !tbaa !18
  %1632 = load i32, ptr %15, align 4, !tbaa !9
  %1633 = zext i32 %1632 to i64
  %1634 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1631, i64 %1633
  %1635 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1634, i32 0, i32 2
  %1636 = load ptr, ptr %1635, align 8, !tbaa !22
  %1637 = load i32, ptr %14, align 4, !tbaa !9
  call void %1627(ptr noundef %1636, i32 noundef %1637)
  br label %1638

1638:                                             ; preds = %1616, %1557, %1282
  %1639 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1639, ptr %14, align 4, !tbaa !9
  store i32 16, ptr %15, align 4, !tbaa !9
  %1640 = load i32, ptr %15, align 4, !tbaa !9
  %1641 = load i32, ptr %14, align 4, !tbaa !9
  %1642 = add i32 %1641, %1640
  store i32 %1642, ptr %14, align 4, !tbaa !9
  %1643 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %1643, ptr %10, align 4, !tbaa !9
  %1644 = load i32, ptr %12, align 4, !tbaa !9
  store i32 %1644, ptr %15, align 4, !tbaa !9
  %1645 = load ptr, ptr %4, align 8, !tbaa !5
  %1646 = getelementptr inbounds %struct.w2c_hermes, ptr %1645, i32 0, i32 6
  %1647 = load i32, ptr %15, align 4, !tbaa !9
  %1648 = zext i32 %1647 to i64
  %1649 = call i32 @i32_load(ptr noundef %1646, i64 noundef %1648)
  store i32 %1649, ptr %15, align 4, !tbaa !9
  %1650 = load i32, ptr %15, align 4, !tbaa !9
  %1651 = load i32, ptr %14, align 4, !tbaa !9
  %1652 = sub i32 %1651, %1650
  store i32 %1652, ptr %14, align 4, !tbaa !9
  store i32 4096, ptr %15, align 4, !tbaa !9
  %1653 = load i32, ptr %14, align 4, !tbaa !9
  %1654 = load i32, ptr %15, align 4, !tbaa !9
  %1655 = icmp eq i32 %1653, %1654
  %1656 = zext i1 %1655 to i32
  store i32 %1656, ptr %14, align 4, !tbaa !9
  %1657 = load i32, ptr %14, align 4, !tbaa !9
  %1658 = icmp ne i32 %1657, 0
  br i1 %1658, label %1659, label %1673

1659:                                             ; preds = %1638
  %1660 = load i32, ptr %12, align 4, !tbaa !9
  store i32 %1660, ptr %14, align 4, !tbaa !9
  %1661 = load ptr, ptr %4, align 8, !tbaa !5
  %1662 = getelementptr inbounds %struct.w2c_hermes, ptr %1661, i32 0, i32 6
  %1663 = load i32, ptr %14, align 4, !tbaa !9
  %1664 = zext i32 %1663 to i64
  %1665 = add i64 %1664, 4
  %1666 = call i32 @i32_load(ptr noundef %1662, i64 noundef %1665)
  store i32 %1666, ptr %14, align 4, !tbaa !9
  %1667 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %1667, ptr %10, align 4, !tbaa !9
  %1668 = load i32, ptr %12, align 4, !tbaa !9
  store i32 %1668, ptr %14, align 4, !tbaa !9
  store i32 4, ptr %15, align 4, !tbaa !9
  %1669 = load i32, ptr %15, align 4, !tbaa !9
  %1670 = load i32, ptr %14, align 4, !tbaa !9
  %1671 = add i32 %1670, %1669
  store i32 %1671, ptr %14, align 4, !tbaa !9
  %1672 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %1672, ptr %12, align 4, !tbaa !9
  br label %1673

1673:                                             ; preds = %1659, %1638
  %1674 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1674, ptr %14, align 4, !tbaa !9
  %1675 = load i32, ptr %13, align 4, !tbaa !9
  store i32 %1675, ptr %15, align 4, !tbaa !9
  %1676 = load i32, ptr %14, align 4, !tbaa !9
  %1677 = load i32, ptr %15, align 4, !tbaa !9
  %1678 = icmp ne i32 %1676, %1677
  %1679 = zext i1 %1678 to i32
  store i32 %1679, ptr %14, align 4, !tbaa !9
  %1680 = load i32, ptr %14, align 4, !tbaa !9
  %1681 = icmp ne i32 %1680, 0
  br i1 %1681, label %1682, label %1683

1682:                                             ; preds = %1673
  br label %846

1683:                                             ; preds = %1673
  br label %1684

1684:                                             ; preds = %1683, %844, %759
  %1685 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1685, ptr %14, align 4, !tbaa !9
  store i32 4464, ptr %15, align 4, !tbaa !9
  %1686 = load i32, ptr %15, align 4, !tbaa !9
  %1687 = load i32, ptr %14, align 4, !tbaa !9
  %1688 = add i32 %1687, %1686
  store i32 %1688, ptr %14, align 4, !tbaa !9
  %1689 = load ptr, ptr %4, align 8, !tbaa !5
  %1690 = getelementptr inbounds %struct.w2c_hermes, ptr %1689, i32 0, i32 6
  %1691 = load i32, ptr %14, align 4, !tbaa !9
  %1692 = zext i32 %1691 to i64
  %1693 = call i32 @i32_load(ptr noundef %1690, i64 noundef %1692)
  store i32 %1693, ptr %14, align 4, !tbaa !9
  %1694 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %1694, ptr %9, align 4, !tbaa !9
  %1695 = load i32, ptr %14, align 4, !tbaa !9
  %1696 = icmp ne i32 %1695, 0
  %1697 = xor i1 %1696, true
  %1698 = zext i1 %1697 to i32
  store i32 %1698, ptr %14, align 4, !tbaa !9
  %1699 = load i32, ptr %14, align 4, !tbaa !9
  %1700 = icmp ne i32 %1699, 0
  br i1 %1700, label %1701, label %1702

1701:                                             ; preds = %1684
  br label %2496

1702:                                             ; preds = %1684
  %1703 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %1703, ptr %14, align 4, !tbaa !9
  store i32 4456, ptr %15, align 4, !tbaa !9
  %1704 = load i32, ptr %15, align 4, !tbaa !9
  %1705 = load i32, ptr %14, align 4, !tbaa !9
  %1706 = add i32 %1705, %1704
  store i32 %1706, ptr %14, align 4, !tbaa !9
  %1707 = load ptr, ptr %4, align 8, !tbaa !5
  %1708 = getelementptr inbounds %struct.w2c_hermes, ptr %1707, i32 0, i32 6
  %1709 = load i32, ptr %14, align 4, !tbaa !9
  %1710 = zext i32 %1709 to i64
  %1711 = call i32 @i32_load(ptr noundef %1708, i64 noundef %1710)
  store i32 %1711, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %15, align 4, !tbaa !9
  %1712 = load i32, ptr %14, align 4, !tbaa !9
  %1713 = load i32, ptr %15, align 4, !tbaa !9
  %1714 = icmp eq i32 %1712, %1713
  %1715 = zext i1 %1714 to i32
  store i32 %1715, ptr %14, align 4, !tbaa !9
  %1716 = load i32, ptr %14, align 4, !tbaa !9
  %1717 = icmp ne i32 %1716, 0
  br i1 %1717, label %1718, label %2151

1718:                                             ; preds = %1702
  %1719 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1719, ptr %14, align 4, !tbaa !9
  %1720 = load ptr, ptr %4, align 8, !tbaa !5
  %1721 = getelementptr inbounds %struct.w2c_hermes, ptr %1720, i32 0, i32 6
  %1722 = load i32, ptr %14, align 4, !tbaa !9
  %1723 = zext i32 %1722 to i64
  %1724 = add i64 %1723, 16
  %1725 = call i32 @i32_load(ptr noundef %1721, i64 noundef %1724)
  store i32 %1725, ptr %14, align 4, !tbaa !9
  %1726 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %1726, ptr %8, align 4, !tbaa !9
  %1727 = load i32, ptr %14, align 4, !tbaa !9
  %1728 = icmp ne i32 %1727, 0
  %1729 = xor i1 %1728, true
  %1730 = zext i1 %1729 to i32
  store i32 %1730, ptr %14, align 4, !tbaa !9
  %1731 = load i32, ptr %14, align 4, !tbaa !9
  %1732 = icmp ne i32 %1731, 0
  br i1 %1732, label %1733, label %1741

1733:                                             ; preds = %1718
  %1734 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1734, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %15, align 4, !tbaa !9
  %1735 = load ptr, ptr %4, align 8, !tbaa !5
  %1736 = getelementptr inbounds %struct.w2c_hermes, ptr %1735, i32 0, i32 6
  %1737 = load i32, ptr %14, align 4, !tbaa !9
  %1738 = zext i32 %1737 to i64
  %1739 = add i64 %1738, 48
  %1740 = load i32, ptr %15, align 4, !tbaa !9
  call void @i32_store(ptr noundef %1736, i64 noundef %1739, i32 noundef %1740)
  br label %1924

1741:                                             ; preds = %1718
  %1742 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1742, ptr %14, align 4, !tbaa !9
  %1743 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1743, ptr %15, align 4, !tbaa !9
  %1744 = load i32, ptr %14, align 4, !tbaa !9
  %1745 = load i32, ptr %15, align 4, !tbaa !9
  %1746 = icmp eq i32 %1744, %1745
  %1747 = zext i1 %1746 to i32
  store i32 %1747, ptr %14, align 4, !tbaa !9
  %1748 = load i32, ptr %14, align 4, !tbaa !9
  %1749 = icmp ne i32 %1748, 0
  br i1 %1749, label %1750, label %1841

1750:                                             ; preds = %1741
  %1751 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1751, ptr %14, align 4, !tbaa !9
  %1752 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1752, ptr %15, align 4, !tbaa !9
  store i32 32, ptr %16, align 4, !tbaa !9
  %1753 = load i32, ptr %16, align 4, !tbaa !9
  %1754 = load i32, ptr %15, align 4, !tbaa !9
  %1755 = add i32 %1754, %1753
  store i32 %1755, ptr %15, align 4, !tbaa !9
  %1756 = load ptr, ptr %4, align 8, !tbaa !5
  %1757 = getelementptr inbounds %struct.w2c_hermes, ptr %1756, i32 0, i32 6
  %1758 = load i32, ptr %14, align 4, !tbaa !9
  %1759 = zext i32 %1758 to i64
  %1760 = add i64 %1759, 48
  %1761 = load i32, ptr %15, align 4, !tbaa !9
  call void @i32_store(ptr noundef %1757, i64 noundef %1760, i32 noundef %1761)
  %1762 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1762, ptr %14, align 4, !tbaa !9
  %1763 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1763, ptr %15, align 4, !tbaa !9
  store i32 32, ptr %16, align 4, !tbaa !9
  %1764 = load i32, ptr %16, align 4, !tbaa !9
  %1765 = load i32, ptr %15, align 4, !tbaa !9
  %1766 = add i32 %1765, %1764
  store i32 %1766, ptr %15, align 4, !tbaa !9
  %1767 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1767, ptr %16, align 4, !tbaa !9
  %1768 = load ptr, ptr %4, align 8, !tbaa !5
  %1769 = getelementptr inbounds %struct.w2c_hermes, ptr %1768, i32 0, i32 6
  %1770 = load i32, ptr %16, align 4, !tbaa !9
  %1771 = zext i32 %1770 to i64
  %1772 = call i32 @i32_load(ptr noundef %1769, i64 noundef %1771)
  store i32 %1772, ptr %16, align 4, !tbaa !9
  %1773 = load ptr, ptr %4, align 8, !tbaa !5
  %1774 = getelementptr inbounds %struct.w2c_hermes, ptr %1773, i32 0, i32 6
  %1775 = load i32, ptr %16, align 4, !tbaa !9
  %1776 = zext i32 %1775 to i64
  %1777 = add i64 %1776, 12
  %1778 = call i32 @i32_load(ptr noundef %1774, i64 noundef %1777)
  store i32 %1778, ptr %16, align 4, !tbaa !9
  %1779 = load i32, ptr %16, align 4, !tbaa !9
  %1780 = load ptr, ptr %4, align 8, !tbaa !5
  %1781 = getelementptr inbounds %struct.w2c_hermes, ptr %1780, i32 0, i32 7
  %1782 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1781, i32 0, i32 2
  %1783 = load i32, ptr %1782, align 4, !tbaa !17
  %1784 = icmp ult i32 %1779, %1783
  br i1 %1784, label %1785, label %1808

1785:                                             ; preds = %1750
  %1786 = load ptr, ptr %4, align 8, !tbaa !5
  %1787 = getelementptr inbounds %struct.w2c_hermes, ptr %1786, i32 0, i32 7
  %1788 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1787, i32 0, i32 0
  %1789 = load ptr, ptr %1788, align 8, !tbaa !18
  %1790 = load i32, ptr %16, align 4, !tbaa !9
  %1791 = zext i32 %1790 to i64
  %1792 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1789, i64 %1791
  %1793 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1792, i32 0, i32 1
  %1794 = load ptr, ptr %1793, align 8, !tbaa !19
  %1795 = icmp ne ptr %1794, null
  br i1 %1795, label %1796, label %1808

1796:                                             ; preds = %1785
  %1797 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !5
  %1798 = load ptr, ptr %4, align 8, !tbaa !5
  %1799 = getelementptr inbounds %struct.w2c_hermes, ptr %1798, i32 0, i32 7
  %1800 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1799, i32 0, i32 0
  %1801 = load ptr, ptr %1800, align 8, !tbaa !18
  %1802 = load i32, ptr %16, align 4, !tbaa !9
  %1803 = zext i32 %1802 to i64
  %1804 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1801, i64 %1803
  %1805 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1804, i32 0, i32 0
  %1806 = load ptr, ptr %1805, align 8, !tbaa !21
  %1807 = call zeroext i1 @func_types_eq(ptr noundef %1797, ptr noundef %1806)
  br label %1808

1808:                                             ; preds = %1796, %1785, %1750
  %1809 = phi i1 [ false, %1785 ], [ false, %1750 ], [ %1807, %1796 ]
  %1810 = xor i1 %1809, true
  %1811 = xor i1 %1810, true
  %1812 = zext i1 %1811 to i32
  %1813 = sext i32 %1812 to i64
  %1814 = call i64 @llvm.expect.i64(i64 %1813, i64 1)
  %1815 = icmp ne i64 %1814, 0
  br i1 %1815, label %1818, label %1816

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

1817:                                             ; No predecessors!
  br label %1818

1818:                                             ; preds = %1817, %1808
  %1819 = phi i1 [ true, %1808 ], [ false, %1817 ]
  %1820 = zext i1 %1819 to i32
  %1821 = load ptr, ptr %4, align 8, !tbaa !5
  %1822 = getelementptr inbounds %struct.w2c_hermes, ptr %1821, i32 0, i32 7
  %1823 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1822, i32 0, i32 0
  %1824 = load ptr, ptr %1823, align 8, !tbaa !18
  %1825 = load i32, ptr %16, align 4, !tbaa !9
  %1826 = zext i32 %1825 to i64
  %1827 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1824, i64 %1826
  %1828 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1827, i32 0, i32 1
  %1829 = load ptr, ptr %1828, align 8, !tbaa !19
  %1830 = load ptr, ptr %4, align 8, !tbaa !5
  %1831 = getelementptr inbounds %struct.w2c_hermes, ptr %1830, i32 0, i32 7
  %1832 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1831, i32 0, i32 0
  %1833 = load ptr, ptr %1832, align 8, !tbaa !18
  %1834 = load i32, ptr %16, align 4, !tbaa !9
  %1835 = zext i32 %1834 to i64
  %1836 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1833, i64 %1835
  %1837 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1836, i32 0, i32 2
  %1838 = load ptr, ptr %1837, align 8, !tbaa !22
  %1839 = load i32, ptr %14, align 4, !tbaa !9
  %1840 = load i32, ptr %15, align 4, !tbaa !9
  call void %1829(ptr noundef %1838, i32 noundef %1839, i32 noundef %1840)
  br label %1924

1841:                                             ; preds = %1741
  %1842 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1842, ptr %14, align 4, !tbaa !9
  %1843 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1843, ptr %15, align 4, !tbaa !9
  %1844 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1844, ptr %16, align 4, !tbaa !9
  %1845 = load ptr, ptr %4, align 8, !tbaa !5
  %1846 = getelementptr inbounds %struct.w2c_hermes, ptr %1845, i32 0, i32 6
  %1847 = load i32, ptr %16, align 4, !tbaa !9
  %1848 = zext i32 %1847 to i64
  %1849 = call i32 @i32_load(ptr noundef %1846, i64 noundef %1848)
  store i32 %1849, ptr %16, align 4, !tbaa !9
  %1850 = load ptr, ptr %4, align 8, !tbaa !5
  %1851 = getelementptr inbounds %struct.w2c_hermes, ptr %1850, i32 0, i32 6
  %1852 = load i32, ptr %16, align 4, !tbaa !9
  %1853 = zext i32 %1852 to i64
  %1854 = add i64 %1853, 8
  %1855 = call i32 @i32_load(ptr noundef %1851, i64 noundef %1854)
  store i32 %1855, ptr %16, align 4, !tbaa !9
  %1856 = load i32, ptr %16, align 4, !tbaa !9
  %1857 = load ptr, ptr %4, align 8, !tbaa !5
  %1858 = getelementptr inbounds %struct.w2c_hermes, ptr %1857, i32 0, i32 7
  %1859 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1858, i32 0, i32 2
  %1860 = load i32, ptr %1859, align 4, !tbaa !17
  %1861 = icmp ult i32 %1856, %1860
  br i1 %1861, label %1862, label %1885

1862:                                             ; preds = %1841
  %1863 = load ptr, ptr %4, align 8, !tbaa !5
  %1864 = getelementptr inbounds %struct.w2c_hermes, ptr %1863, i32 0, i32 7
  %1865 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1864, i32 0, i32 0
  %1866 = load ptr, ptr %1865, align 8, !tbaa !18
  %1867 = load i32, ptr %16, align 4, !tbaa !9
  %1868 = zext i32 %1867 to i64
  %1869 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1866, i64 %1868
  %1870 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1869, i32 0, i32 1
  %1871 = load ptr, ptr %1870, align 8, !tbaa !19
  %1872 = icmp ne ptr %1871, null
  br i1 %1872, label %1873, label %1885

1873:                                             ; preds = %1862
  %1874 = load ptr, ptr @w2c_hermes_t2, align 8, !tbaa !5
  %1875 = load ptr, ptr %4, align 8, !tbaa !5
  %1876 = getelementptr inbounds %struct.w2c_hermes, ptr %1875, i32 0, i32 7
  %1877 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1876, i32 0, i32 0
  %1878 = load ptr, ptr %1877, align 8, !tbaa !18
  %1879 = load i32, ptr %16, align 4, !tbaa !9
  %1880 = zext i32 %1879 to i64
  %1881 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1878, i64 %1880
  %1882 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1881, i32 0, i32 0
  %1883 = load ptr, ptr %1882, align 8, !tbaa !21
  %1884 = call zeroext i1 @func_types_eq(ptr noundef %1874, ptr noundef %1883)
  br label %1885

1885:                                             ; preds = %1873, %1862, %1841
  %1886 = phi i1 [ false, %1862 ], [ false, %1841 ], [ %1884, %1873 ]
  %1887 = xor i1 %1886, true
  %1888 = xor i1 %1887, true
  %1889 = zext i1 %1888 to i32
  %1890 = sext i32 %1889 to i64
  %1891 = call i64 @llvm.expect.i64(i64 %1890, i64 1)
  %1892 = icmp ne i64 %1891, 0
  br i1 %1892, label %1895, label %1893

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

1894:                                             ; No predecessors!
  br label %1895

1895:                                             ; preds = %1894, %1885
  %1896 = phi i1 [ true, %1885 ], [ false, %1894 ]
  %1897 = zext i1 %1896 to i32
  %1898 = load ptr, ptr %4, align 8, !tbaa !5
  %1899 = getelementptr inbounds %struct.w2c_hermes, ptr %1898, i32 0, i32 7
  %1900 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1899, i32 0, i32 0
  %1901 = load ptr, ptr %1900, align 8, !tbaa !18
  %1902 = load i32, ptr %16, align 4, !tbaa !9
  %1903 = zext i32 %1902 to i64
  %1904 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1901, i64 %1903
  %1905 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1904, i32 0, i32 1
  %1906 = load ptr, ptr %1905, align 8, !tbaa !19
  %1907 = load ptr, ptr %4, align 8, !tbaa !5
  %1908 = getelementptr inbounds %struct.w2c_hermes, ptr %1907, i32 0, i32 7
  %1909 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %1908, i32 0, i32 0
  %1910 = load ptr, ptr %1909, align 8, !tbaa !18
  %1911 = load i32, ptr %16, align 4, !tbaa !9
  %1912 = zext i32 %1911 to i64
  %1913 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1910, i64 %1912
  %1914 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %1913, i32 0, i32 2
  %1915 = load ptr, ptr %1914, align 8, !tbaa !22
  %1916 = load i32, ptr %15, align 4, !tbaa !9
  %1917 = call i32 %1906(ptr noundef %1915, i32 noundef %1916)
  store i32 %1917, ptr %15, align 4, !tbaa !9
  %1918 = load ptr, ptr %4, align 8, !tbaa !5
  %1919 = getelementptr inbounds %struct.w2c_hermes, ptr %1918, i32 0, i32 6
  %1920 = load i32, ptr %14, align 4, !tbaa !9
  %1921 = zext i32 %1920 to i64
  %1922 = add i64 %1921, 48
  %1923 = load i32, ptr %15, align 4, !tbaa !9
  call void @i32_store(ptr noundef %1919, i64 noundef %1922, i32 noundef %1923)
  br label %1924

1924:                                             ; preds = %1895, %1818, %1733
  %1925 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %1925, ptr %14, align 4, !tbaa !9
  %1926 = load ptr, ptr %4, align 8, !tbaa !5
  %1927 = getelementptr inbounds %struct.w2c_hermes, ptr %1926, i32 0, i32 6
  %1928 = load i32, ptr %14, align 4, !tbaa !9
  %1929 = zext i32 %1928 to i64
  %1930 = call i32 @i32_load(ptr noundef %1927, i64 noundef %1929)
  store i32 %1930, ptr %14, align 4, !tbaa !9
  store i32 86016, ptr %15, align 4, !tbaa !9
  %1931 = load i32, ptr %15, align 4, !tbaa !9
  %1932 = load i32, ptr %14, align 4, !tbaa !9
  %1933 = add i32 %1932, %1931
  store i32 %1933, ptr %14, align 4, !tbaa !9
  %1934 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %1934, ptr %8, align 4, !tbaa !9
  %1935 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %1935, ptr %15, align 4, !tbaa !9
  %1936 = load ptr, ptr %4, align 8, !tbaa !5
  %1937 = getelementptr inbounds %struct.w2c_hermes, ptr %1936, i32 0, i32 6
  %1938 = load i32, ptr %15, align 4, !tbaa !9
  %1939 = zext i32 %1938 to i64
  %1940 = add i64 %1939, 8
  %1941 = call i32 @i32_load(ptr noundef %1937, i64 noundef %1940)
  store i32 %1941, ptr %15, align 4, !tbaa !9
  %1942 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %1942, ptr %11, align 4, !tbaa !9
  %1943 = load i32, ptr %14, align 4, !tbaa !9
  %1944 = load i32, ptr %15, align 4, !tbaa !9
  %1945 = icmp ne i32 %1943, %1944
  %1946 = zext i1 %1945 to i32
  store i32 %1946, ptr %14, align 4, !tbaa !9
  %1947 = load i32, ptr %14, align 4, !tbaa !9
  %1948 = icmp ne i32 %1947, 0
  br i1 %1948, label %1949, label %2097

1949:                                             ; preds = %1924
  br label %1950

1950:                                             ; preds = %2095, %1949
  %1951 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1951, ptr %14, align 4, !tbaa !9
  %1952 = load ptr, ptr %4, align 8, !tbaa !5
  %1953 = getelementptr inbounds %struct.w2c_hermes, ptr %1952, i32 0, i32 6
  %1954 = load i32, ptr %14, align 4, !tbaa !9
  %1955 = zext i32 %1954 to i64
  %1956 = call i32 @i32_load(ptr noundef %1953, i64 noundef %1955)
  store i32 %1956, ptr %14, align 4, !tbaa !9
  %1957 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %1957, ptr %9, align 4, !tbaa !9
  store i32 -16777216, ptr %15, align 4, !tbaa !9
  %1958 = load i32, ptr %15, align 4, !tbaa !9
  %1959 = load i32, ptr %14, align 4, !tbaa !9
  %1960 = and i32 %1959, %1958
  store i32 %1960, ptr %14, align 4, !tbaa !9
  store i32 33554432, ptr %15, align 4, !tbaa !9
  %1961 = load i32, ptr %14, align 4, !tbaa !9
  %1962 = load i32, ptr %15, align 4, !tbaa !9
  %1963 = icmp ne i32 %1961, %1962
  %1964 = zext i1 %1963 to i32
  store i32 %1964, ptr %14, align 4, !tbaa !9
  %1965 = load i32, ptr %14, align 4, !tbaa !9
  %1966 = icmp ne i32 %1965, 0
  br i1 %1966, label %1967, label %2078

1967:                                             ; preds = %1950
  %1968 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1968, ptr %14, align 4, !tbaa !9
  %1969 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1969, ptr %15, align 4, !tbaa !9
  %1970 = load ptr, ptr %4, align 8, !tbaa !5
  %1971 = getelementptr inbounds %struct.w2c_hermes, ptr %1970, i32 0, i32 6
  %1972 = load i32, ptr %14, align 4, !tbaa !9
  %1973 = zext i32 %1972 to i64
  %1974 = add i64 %1973, 156
  %1975 = load i32, ptr %15, align 4, !tbaa !9
  call void @i32_store(ptr noundef %1971, i64 noundef %1974, i32 noundef %1975)
  %1976 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1976, ptr %14, align 4, !tbaa !9
  %1977 = load ptr, ptr %4, align 8, !tbaa !5
  %1978 = getelementptr inbounds %struct.w2c_hermes, ptr %1977, i32 0, i32 6
  %1979 = load i32, ptr %14, align 4, !tbaa !9
  %1980 = zext i32 %1979 to i64
  %1981 = add i64 %1980, 48
  %1982 = call i32 @i32_load(ptr noundef %1978, i64 noundef %1981)
  store i32 %1982, ptr %14, align 4, !tbaa !9
  %1983 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %1983, ptr %9, align 4, !tbaa !9
  %1984 = load i32, ptr %14, align 4, !tbaa !9
  %1985 = icmp ne i32 %1984, 0
  %1986 = xor i1 %1985, true
  %1987 = zext i1 %1986 to i32
  store i32 %1987, ptr %14, align 4, !tbaa !9
  %1988 = load i32, ptr %14, align 4, !tbaa !9
  %1989 = icmp ne i32 %1988, 0
  br i1 %1989, label %1990, label %1991

1990:                                             ; preds = %1967
  br label %2628

1991:                                             ; preds = %1967
  %1992 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %1992, ptr %14, align 4, !tbaa !9
  %1993 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %1993, ptr %15, align 4, !tbaa !9
  store i32 156, ptr %16, align 4, !tbaa !9
  %1994 = load i32, ptr %16, align 4, !tbaa !9
  %1995 = load i32, ptr %15, align 4, !tbaa !9
  %1996 = add i32 %1995, %1994
  store i32 %1996, ptr %15, align 4, !tbaa !9
  %1997 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %1997, ptr %16, align 4, !tbaa !9
  %1998 = load ptr, ptr %4, align 8, !tbaa !5
  %1999 = getelementptr inbounds %struct.w2c_hermes, ptr %1998, i32 0, i32 6
  %2000 = load i32, ptr %16, align 4, !tbaa !9
  %2001 = zext i32 %2000 to i64
  %2002 = call i32 @i32_load(ptr noundef %1999, i64 noundef %2001)
  store i32 %2002, ptr %16, align 4, !tbaa !9
  %2003 = load ptr, ptr %4, align 8, !tbaa !5
  %2004 = getelementptr inbounds %struct.w2c_hermes, ptr %2003, i32 0, i32 6
  %2005 = load i32, ptr %16, align 4, !tbaa !9
  %2006 = zext i32 %2005 to i64
  %2007 = add i64 %2006, 24
  %2008 = call i32 @i32_load(ptr noundef %2004, i64 noundef %2007)
  store i32 %2008, ptr %16, align 4, !tbaa !9
  %2009 = load i32, ptr %16, align 4, !tbaa !9
  %2010 = load ptr, ptr %4, align 8, !tbaa !5
  %2011 = getelementptr inbounds %struct.w2c_hermes, ptr %2010, i32 0, i32 7
  %2012 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %2011, i32 0, i32 2
  %2013 = load i32, ptr %2012, align 4, !tbaa !17
  %2014 = icmp ult i32 %2009, %2013
  br i1 %2014, label %2015, label %2038

2015:                                             ; preds = %1991
  %2016 = load ptr, ptr %4, align 8, !tbaa !5
  %2017 = getelementptr inbounds %struct.w2c_hermes, ptr %2016, i32 0, i32 7
  %2018 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %2017, i32 0, i32 0
  %2019 = load ptr, ptr %2018, align 8, !tbaa !18
  %2020 = load i32, ptr %16, align 4, !tbaa !9
  %2021 = zext i32 %2020 to i64
  %2022 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2019, i64 %2021
  %2023 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2022, i32 0, i32 1
  %2024 = load ptr, ptr %2023, align 8, !tbaa !19
  %2025 = icmp ne ptr %2024, null
  br i1 %2025, label %2026, label %2038

2026:                                             ; preds = %2015
  %2027 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !5
  %2028 = load ptr, ptr %4, align 8, !tbaa !5
  %2029 = getelementptr inbounds %struct.w2c_hermes, ptr %2028, i32 0, i32 7
  %2030 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %2029, i32 0, i32 0
  %2031 = load ptr, ptr %2030, align 8, !tbaa !18
  %2032 = load i32, ptr %16, align 4, !tbaa !9
  %2033 = zext i32 %2032 to i64
  %2034 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2031, i64 %2033
  %2035 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2034, i32 0, i32 0
  %2036 = load ptr, ptr %2035, align 8, !tbaa !21
  %2037 = call zeroext i1 @func_types_eq(ptr noundef %2027, ptr noundef %2036)
  br label %2038

2038:                                             ; preds = %2026, %2015, %1991
  %2039 = phi i1 [ false, %2015 ], [ false, %1991 ], [ %2037, %2026 ]
  %2040 = xor i1 %2039, true
  %2041 = xor i1 %2040, true
  %2042 = zext i1 %2041 to i32
  %2043 = sext i32 %2042 to i64
  %2044 = call i64 @llvm.expect.i64(i64 %2043, i64 1)
  %2045 = icmp ne i64 %2044, 0
  br i1 %2045, label %2048, label %2046

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

2047:                                             ; No predecessors!
  br label %2048

2048:                                             ; preds = %2047, %2038
  %2049 = phi i1 [ true, %2038 ], [ false, %2047 ]
  %2050 = zext i1 %2049 to i32
  %2051 = load ptr, ptr %4, align 8, !tbaa !5
  %2052 = getelementptr inbounds %struct.w2c_hermes, ptr %2051, i32 0, i32 7
  %2053 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %2052, i32 0, i32 0
  %2054 = load ptr, ptr %2053, align 8, !tbaa !18
  %2055 = load i32, ptr %16, align 4, !tbaa !9
  %2056 = zext i32 %2055 to i64
  %2057 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2054, i64 %2056
  %2058 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2057, i32 0, i32 1
  %2059 = load ptr, ptr %2058, align 8, !tbaa !19
  %2060 = load ptr, ptr %4, align 8, !tbaa !5
  %2061 = getelementptr inbounds %struct.w2c_hermes, ptr %2060, i32 0, i32 7
  %2062 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %2061, i32 0, i32 0
  %2063 = load ptr, ptr %2062, align 8, !tbaa !18
  %2064 = load i32, ptr %16, align 4, !tbaa !9
  %2065 = zext i32 %2064 to i64
  %2066 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2063, i64 %2065
  %2067 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2066, i32 0, i32 2
  %2068 = load ptr, ptr %2067, align 8, !tbaa !22
  %2069 = load i32, ptr %14, align 4, !tbaa !9
  %2070 = load i32, ptr %15, align 4, !tbaa !9
  call void %2059(ptr noundef %2068, i32 noundef %2069, i32 noundef %2070)
  %2071 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %2071, ptr %14, align 4, !tbaa !9
  %2072 = load ptr, ptr %4, align 8, !tbaa !5
  %2073 = getelementptr inbounds %struct.w2c_hermes, ptr %2072, i32 0, i32 6
  %2074 = load i32, ptr %14, align 4, !tbaa !9
  %2075 = zext i32 %2074 to i64
  %2076 = call i32 @i32_load(ptr noundef %2073, i64 noundef %2075)
  store i32 %2076, ptr %14, align 4, !tbaa !9
  %2077 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %2077, ptr %9, align 4, !tbaa !9
  br label %2078

2078:                                             ; preds = %2048, %1950
  %2079 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %2079, ptr %14, align 4, !tbaa !9
  %2080 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %2080, ptr %15, align 4, !tbaa !9
  store i32 16777215, ptr %16, align 4, !tbaa !9
  %2081 = load i32, ptr %16, align 4, !tbaa !9
  %2082 = load i32, ptr %15, align 4, !tbaa !9
  %2083 = and i32 %2082, %2081
  store i32 %2083, ptr %15, align 4, !tbaa !9
  %2084 = load i32, ptr %15, align 4, !tbaa !9
  %2085 = load i32, ptr %14, align 4, !tbaa !9
  %2086 = add i32 %2085, %2084
  store i32 %2086, ptr %14, align 4, !tbaa !9
  %2087 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %2087, ptr %8, align 4, !tbaa !9
  %2088 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %2088, ptr %15, align 4, !tbaa !9
  %2089 = load i32, ptr %14, align 4, !tbaa !9
  %2090 = load i32, ptr %15, align 4, !tbaa !9
  %2091 = icmp ne i32 %2089, %2090
  %2092 = zext i1 %2091 to i32
  store i32 %2092, ptr %14, align 4, !tbaa !9
  %2093 = load i32, ptr %14, align 4, !tbaa !9
  %2094 = icmp ne i32 %2093, 0
  br i1 %2094, label %2095, label %2096

2095:                                             ; preds = %2078
  br label %1950

2096:                                             ; preds = %2078
  br label %2097

2097:                                             ; preds = %2096, %1924
  %2098 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %2098, ptr %14, align 4, !tbaa !9
  %2099 = load ptr, ptr %4, align 8, !tbaa !5
  %2100 = getelementptr inbounds %struct.w2c_hermes, ptr %2099, i32 0, i32 6
  %2101 = load i32, ptr %14, align 4, !tbaa !9
  %2102 = zext i32 %2101 to i64
  %2103 = add i64 %2102, 48
  %2104 = call i32 @i32_load(ptr noundef %2100, i64 noundef %2103)
  store i32 %2104, ptr %14, align 4, !tbaa !9
  %2105 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %2105, ptr %8, align 4, !tbaa !9
  %2106 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %2106, ptr %15, align 4, !tbaa !9
  store i32 32, ptr %16, align 4, !tbaa !9
  %2107 = load i32, ptr %16, align 4, !tbaa !9
  %2108 = load i32, ptr %15, align 4, !tbaa !9
  %2109 = add i32 %2108, %2107
  store i32 %2109, ptr %15, align 4, !tbaa !9
  %2110 = load i32, ptr %14, align 4, !tbaa !9
  %2111 = load i32, ptr %15, align 4, !tbaa !9
  %2112 = icmp eq i32 %2110, %2111
  %2113 = zext i1 %2112 to i32
  store i32 %2113, ptr %14, align 4, !tbaa !9
  %2114 = load i32, ptr %14, align 4, !tbaa !9
  %2115 = icmp ne i32 %2114, 0
  br i1 %2115, label %2116, label %2132

2116:                                             ; preds = %2097
  %2117 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %2117, ptr %14, align 4, !tbaa !9
  store i32 32, ptr %15, align 4, !tbaa !9
  %2118 = load i32, ptr %15, align 4, !tbaa !9
  %2119 = load i32, ptr %14, align 4, !tbaa !9
  %2120 = add i32 %2119, %2118
  store i32 %2120, ptr %14, align 4, !tbaa !9
  %2121 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %2121, ptr %8, align 4, !tbaa !9
  %2122 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %2122, ptr %14, align 4, !tbaa !9
  %2123 = load ptr, ptr %4, align 8, !tbaa !5
  %2124 = getelementptr inbounds %struct.w2c_hermes, ptr %2123, i32 0, i32 6
  %2125 = load i32, ptr %14, align 4, !tbaa !9
  %2126 = zext i32 %2125 to i64
  %2127 = add i64 %2126, 32
  %2128 = call i32 @i32_load(ptr noundef %2124, i64 noundef %2127)
  store i32 %2128, ptr %14, align 4, !tbaa !9
  store i32 16, ptr %15, align 4, !tbaa !9
  %2129 = load i32, ptr %15, align 4, !tbaa !9
  %2130 = load i32, ptr %14, align 4, !tbaa !9
  %2131 = add i32 %2130, %2129
  store i32 %2131, ptr %14, align 4, !tbaa !9
  br label %2426

2132:                                             ; preds = %2097
  %2133 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %2133, ptr %14, align 4, !tbaa !9
  %2134 = load i32, ptr %14, align 4, !tbaa !9
  %2135 = icmp ne i32 %2134, 0
  %2136 = xor i1 %2135, true
  %2137 = zext i1 %2136 to i32
  store i32 %2137, ptr %14, align 4, !tbaa !9
  %2138 = load i32, ptr %14, align 4, !tbaa !9
  %2139 = icmp ne i32 %2138, 0
  br i1 %2139, label %2140, label %2141

2140:                                             ; preds = %2132
  br label %2496

2141:                                             ; preds = %2132
  %2142 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %2142, ptr %14, align 4, !tbaa !9
  %2143 = load ptr, ptr %4, align 8, !tbaa !5
  %2144 = getelementptr inbounds %struct.w2c_hermes, ptr %2143, i32 0, i32 6
  %2145 = load i32, ptr %14, align 4, !tbaa !9
  %2146 = zext i32 %2145 to i64
  %2147 = call i32 @i32_load(ptr noundef %2144, i64 noundef %2146)
  store i32 %2147, ptr %14, align 4, !tbaa !9
  store i32 20, ptr %15, align 4, !tbaa !9
  %2148 = load i32, ptr %15, align 4, !tbaa !9
  %2149 = load i32, ptr %14, align 4, !tbaa !9
  %2150 = add i32 %2149, %2148
  store i32 %2150, ptr %14, align 4, !tbaa !9
  br label %2426

2151:                                             ; preds = %1702
  %2152 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %2152, ptr %14, align 4, !tbaa !9
  %2153 = load ptr, ptr %4, align 8, !tbaa !5
  %2154 = getelementptr inbounds %struct.w2c_hermes, ptr %2153, i32 0, i32 6
  %2155 = load i32, ptr %14, align 4, !tbaa !9
  %2156 = zext i32 %2155 to i64
  %2157 = add i64 %2156, 120
  %2158 = call i32 @i32_load(ptr noundef %2154, i64 noundef %2157)
  store i32 %2158, ptr %14, align 4, !tbaa !9
  %2159 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %2159, ptr %8, align 4, !tbaa !9
  %2160 = load i32, ptr %14, align 4, !tbaa !9
  %2161 = icmp ne i32 %2160, 0
  %2162 = xor i1 %2161, true
  %2163 = zext i1 %2162 to i32
  store i32 %2163, ptr %14, align 4, !tbaa !9
  %2164 = load i32, ptr %14, align 4, !tbaa !9
  %2165 = icmp ne i32 %2164, 0
  br i1 %2165, label %2166, label %2174

2166:                                             ; preds = %2151
  %2167 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %2167, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %15, align 4, !tbaa !9
  %2168 = load ptr, ptr %4, align 8, !tbaa !5
  %2169 = getelementptr inbounds %struct.w2c_hermes, ptr %2168, i32 0, i32 6
  %2170 = load i32, ptr %14, align 4, !tbaa !9
  %2171 = zext i32 %2170 to i64
  %2172 = add i64 %2171, 24
  %2173 = load i32, ptr %15, align 4, !tbaa !9
  call void @i32_store(ptr noundef %2169, i64 noundef %2172, i32 noundef %2173)
  br label %2364

2174:                                             ; preds = %2151
  %2175 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %2175, ptr %14, align 4, !tbaa !9
  store i32 104, ptr %15, align 4, !tbaa !9
  %2176 = load i32, ptr %15, align 4, !tbaa !9
  %2177 = load i32, ptr %14, align 4, !tbaa !9
  %2178 = add i32 %2177, %2176
  store i32 %2178, ptr %14, align 4, !tbaa !9
  %2179 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %2179, ptr %15, align 4, !tbaa !9
  %2180 = load i32, ptr %14, align 4, !tbaa !9
  %2181 = load i32, ptr %15, align 4, !tbaa !9
  %2182 = icmp eq i32 %2180, %2181
  %2183 = zext i1 %2182 to i32
  store i32 %2183, ptr %14, align 4, !tbaa !9
  %2184 = load i32, ptr %14, align 4, !tbaa !9
  %2185 = icmp ne i32 %2184, 0
  br i1 %2185, label %2186, label %2281

2186:                                             ; preds = %2174
  %2187 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %2187, ptr %14, align 4, !tbaa !9
  %2188 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %2188, ptr %15, align 4, !tbaa !9
  store i32 8, ptr %16, align 4, !tbaa !9
  %2189 = load i32, ptr %16, align 4, !tbaa !9
  %2190 = load i32, ptr %15, align 4, !tbaa !9
  %2191 = add i32 %2190, %2189
  store i32 %2191, ptr %15, align 4, !tbaa !9
  %2192 = load ptr, ptr %4, align 8, !tbaa !5
  %2193 = getelementptr inbounds %struct.w2c_hermes, ptr %2192, i32 0, i32 6
  %2194 = load i32, ptr %14, align 4, !tbaa !9
  %2195 = zext i32 %2194 to i64
  %2196 = add i64 %2195, 24
  %2197 = load i32, ptr %15, align 4, !tbaa !9
  call void @i32_store(ptr noundef %2193, i64 noundef %2196, i32 noundef %2197)
  %2198 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %2198, ptr %14, align 4, !tbaa !9
  store i32 104, ptr %15, align 4, !tbaa !9
  %2199 = load i32, ptr %15, align 4, !tbaa !9
  %2200 = load i32, ptr %14, align 4, !tbaa !9
  %2201 = add i32 %2200, %2199
  store i32 %2201, ptr %14, align 4, !tbaa !9
  %2202 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %2202, ptr %15, align 4, !tbaa !9
  store i32 8, ptr %16, align 4, !tbaa !9
  %2203 = load i32, ptr %16, align 4, !tbaa !9
  %2204 = load i32, ptr %15, align 4, !tbaa !9
  %2205 = add i32 %2204, %2203
  store i32 %2205, ptr %15, align 4, !tbaa !9
  %2206 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %2206, ptr %16, align 4, !tbaa !9
  %2207 = load ptr, ptr %4, align 8, !tbaa !5
  %2208 = getelementptr inbounds %struct.w2c_hermes, ptr %2207, i32 0, i32 6
  %2209 = load i32, ptr %16, align 4, !tbaa !9
  %2210 = zext i32 %2209 to i64
  %2211 = add i64 %2210, 104
  %2212 = call i32 @i32_load(ptr noundef %2208, i64 noundef %2211)
  store i32 %2212, ptr %16, align 4, !tbaa !9
  %2213 = load ptr, ptr %4, align 8, !tbaa !5
  %2214 = getelementptr inbounds %struct.w2c_hermes, ptr %2213, i32 0, i32 6
  %2215 = load i32, ptr %16, align 4, !tbaa !9
  %2216 = zext i32 %2215 to i64
  %2217 = add i64 %2216, 12
  %2218 = call i32 @i32_load(ptr noundef %2214, i64 noundef %2217)
  store i32 %2218, ptr %16, align 4, !tbaa !9
  %2219 = load i32, ptr %16, align 4, !tbaa !9
  %2220 = load ptr, ptr %4, align 8, !tbaa !5
  %2221 = getelementptr inbounds %struct.w2c_hermes, ptr %2220, i32 0, i32 7
  %2222 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %2221, i32 0, i32 2
  %2223 = load i32, ptr %2222, align 4, !tbaa !17
  %2224 = icmp ult i32 %2219, %2223
  br i1 %2224, label %2225, label %2248

2225:                                             ; preds = %2186
  %2226 = load ptr, ptr %4, align 8, !tbaa !5
  %2227 = getelementptr inbounds %struct.w2c_hermes, ptr %2226, i32 0, i32 7
  %2228 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %2227, i32 0, i32 0
  %2229 = load ptr, ptr %2228, align 8, !tbaa !18
  %2230 = load i32, ptr %16, align 4, !tbaa !9
  %2231 = zext i32 %2230 to i64
  %2232 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2229, i64 %2231
  %2233 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2232, i32 0, i32 1
  %2234 = load ptr, ptr %2233, align 8, !tbaa !19
  %2235 = icmp ne ptr %2234, null
  br i1 %2235, label %2236, label %2248

2236:                                             ; preds = %2225
  %2237 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !5
  %2238 = load ptr, ptr %4, align 8, !tbaa !5
  %2239 = getelementptr inbounds %struct.w2c_hermes, ptr %2238, i32 0, i32 7
  %2240 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %2239, i32 0, i32 0
  %2241 = load ptr, ptr %2240, align 8, !tbaa !18
  %2242 = load i32, ptr %16, align 4, !tbaa !9
  %2243 = zext i32 %2242 to i64
  %2244 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2241, i64 %2243
  %2245 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2244, i32 0, i32 0
  %2246 = load ptr, ptr %2245, align 8, !tbaa !21
  %2247 = call zeroext i1 @func_types_eq(ptr noundef %2237, ptr noundef %2246)
  br label %2248

2248:                                             ; preds = %2236, %2225, %2186
  %2249 = phi i1 [ false, %2225 ], [ false, %2186 ], [ %2247, %2236 ]
  %2250 = xor i1 %2249, true
  %2251 = xor i1 %2250, true
  %2252 = zext i1 %2251 to i32
  %2253 = sext i32 %2252 to i64
  %2254 = call i64 @llvm.expect.i64(i64 %2253, i64 1)
  %2255 = icmp ne i64 %2254, 0
  br i1 %2255, label %2258, label %2256

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

2257:                                             ; No predecessors!
  br label %2258

2258:                                             ; preds = %2257, %2248
  %2259 = phi i1 [ true, %2248 ], [ false, %2257 ]
  %2260 = zext i1 %2259 to i32
  %2261 = load ptr, ptr %4, align 8, !tbaa !5
  %2262 = getelementptr inbounds %struct.w2c_hermes, ptr %2261, i32 0, i32 7
  %2263 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %2262, i32 0, i32 0
  %2264 = load ptr, ptr %2263, align 8, !tbaa !18
  %2265 = load i32, ptr %16, align 4, !tbaa !9
  %2266 = zext i32 %2265 to i64
  %2267 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2264, i64 %2266
  %2268 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2267, i32 0, i32 1
  %2269 = load ptr, ptr %2268, align 8, !tbaa !19
  %2270 = load ptr, ptr %4, align 8, !tbaa !5
  %2271 = getelementptr inbounds %struct.w2c_hermes, ptr %2270, i32 0, i32 7
  %2272 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %2271, i32 0, i32 0
  %2273 = load ptr, ptr %2272, align 8, !tbaa !18
  %2274 = load i32, ptr %16, align 4, !tbaa !9
  %2275 = zext i32 %2274 to i64
  %2276 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2273, i64 %2275
  %2277 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2276, i32 0, i32 2
  %2278 = load ptr, ptr %2277, align 8, !tbaa !22
  %2279 = load i32, ptr %14, align 4, !tbaa !9
  %2280 = load i32, ptr %15, align 4, !tbaa !9
  call void %2269(ptr noundef %2278, i32 noundef %2279, i32 noundef %2280)
  br label %2364

2281:                                             ; preds = %2174
  %2282 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %2282, ptr %14, align 4, !tbaa !9
  %2283 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %2283, ptr %15, align 4, !tbaa !9
  %2284 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %2284, ptr %16, align 4, !tbaa !9
  %2285 = load ptr, ptr %4, align 8, !tbaa !5
  %2286 = getelementptr inbounds %struct.w2c_hermes, ptr %2285, i32 0, i32 6
  %2287 = load i32, ptr %16, align 4, !tbaa !9
  %2288 = zext i32 %2287 to i64
  %2289 = call i32 @i32_load(ptr noundef %2286, i64 noundef %2288)
  store i32 %2289, ptr %16, align 4, !tbaa !9
  %2290 = load ptr, ptr %4, align 8, !tbaa !5
  %2291 = getelementptr inbounds %struct.w2c_hermes, ptr %2290, i32 0, i32 6
  %2292 = load i32, ptr %16, align 4, !tbaa !9
  %2293 = zext i32 %2292 to i64
  %2294 = add i64 %2293, 8
  %2295 = call i32 @i32_load(ptr noundef %2291, i64 noundef %2294)
  store i32 %2295, ptr %16, align 4, !tbaa !9
  %2296 = load i32, ptr %16, align 4, !tbaa !9
  %2297 = load ptr, ptr %4, align 8, !tbaa !5
  %2298 = getelementptr inbounds %struct.w2c_hermes, ptr %2297, i32 0, i32 7
  %2299 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %2298, i32 0, i32 2
  %2300 = load i32, ptr %2299, align 4, !tbaa !17
  %2301 = icmp ult i32 %2296, %2300
  br i1 %2301, label %2302, label %2325

2302:                                             ; preds = %2281
  %2303 = load ptr, ptr %4, align 8, !tbaa !5
  %2304 = getelementptr inbounds %struct.w2c_hermes, ptr %2303, i32 0, i32 7
  %2305 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %2304, i32 0, i32 0
  %2306 = load ptr, ptr %2305, align 8, !tbaa !18
  %2307 = load i32, ptr %16, align 4, !tbaa !9
  %2308 = zext i32 %2307 to i64
  %2309 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2306, i64 %2308
  %2310 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2309, i32 0, i32 1
  %2311 = load ptr, ptr %2310, align 8, !tbaa !19
  %2312 = icmp ne ptr %2311, null
  br i1 %2312, label %2313, label %2325

2313:                                             ; preds = %2302
  %2314 = load ptr, ptr @w2c_hermes_t2, align 8, !tbaa !5
  %2315 = load ptr, ptr %4, align 8, !tbaa !5
  %2316 = getelementptr inbounds %struct.w2c_hermes, ptr %2315, i32 0, i32 7
  %2317 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %2316, i32 0, i32 0
  %2318 = load ptr, ptr %2317, align 8, !tbaa !18
  %2319 = load i32, ptr %16, align 4, !tbaa !9
  %2320 = zext i32 %2319 to i64
  %2321 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2318, i64 %2320
  %2322 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2321, i32 0, i32 0
  %2323 = load ptr, ptr %2322, align 8, !tbaa !21
  %2324 = call zeroext i1 @func_types_eq(ptr noundef %2314, ptr noundef %2323)
  br label %2325

2325:                                             ; preds = %2313, %2302, %2281
  %2326 = phi i1 [ false, %2302 ], [ false, %2281 ], [ %2324, %2313 ]
  %2327 = xor i1 %2326, true
  %2328 = xor i1 %2327, true
  %2329 = zext i1 %2328 to i32
  %2330 = sext i32 %2329 to i64
  %2331 = call i64 @llvm.expect.i64(i64 %2330, i64 1)
  %2332 = icmp ne i64 %2331, 0
  br i1 %2332, label %2335, label %2333

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

2334:                                             ; No predecessors!
  br label %2335

2335:                                             ; preds = %2334, %2325
  %2336 = phi i1 [ true, %2325 ], [ false, %2334 ]
  %2337 = zext i1 %2336 to i32
  %2338 = load ptr, ptr %4, align 8, !tbaa !5
  %2339 = getelementptr inbounds %struct.w2c_hermes, ptr %2338, i32 0, i32 7
  %2340 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %2339, i32 0, i32 0
  %2341 = load ptr, ptr %2340, align 8, !tbaa !18
  %2342 = load i32, ptr %16, align 4, !tbaa !9
  %2343 = zext i32 %2342 to i64
  %2344 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2341, i64 %2343
  %2345 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2344, i32 0, i32 1
  %2346 = load ptr, ptr %2345, align 8, !tbaa !19
  %2347 = load ptr, ptr %4, align 8, !tbaa !5
  %2348 = getelementptr inbounds %struct.w2c_hermes, ptr %2347, i32 0, i32 7
  %2349 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %2348, i32 0, i32 0
  %2350 = load ptr, ptr %2349, align 8, !tbaa !18
  %2351 = load i32, ptr %16, align 4, !tbaa !9
  %2352 = zext i32 %2351 to i64
  %2353 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2350, i64 %2352
  %2354 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2353, i32 0, i32 2
  %2355 = load ptr, ptr %2354, align 8, !tbaa !22
  %2356 = load i32, ptr %15, align 4, !tbaa !9
  %2357 = call i32 %2346(ptr noundef %2355, i32 noundef %2356)
  store i32 %2357, ptr %15, align 4, !tbaa !9
  %2358 = load ptr, ptr %4, align 8, !tbaa !5
  %2359 = getelementptr inbounds %struct.w2c_hermes, ptr %2358, i32 0, i32 6
  %2360 = load i32, ptr %14, align 4, !tbaa !9
  %2361 = zext i32 %2360 to i64
  %2362 = add i64 %2361, 24
  %2363 = load i32, ptr %15, align 4, !tbaa !9
  call void @i32_store(ptr noundef %2359, i64 noundef %2362, i32 noundef %2363)
  br label %2364

2364:                                             ; preds = %2335, %2258, %2166
  %2365 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %2365, ptr %14, align 4, !tbaa !9
  %2366 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %2366, ptr %15, align 4, !tbaa !9
  store i32 8, ptr %16, align 4, !tbaa !9
  %2367 = load i32, ptr %16, align 4, !tbaa !9
  %2368 = load i32, ptr %15, align 4, !tbaa !9
  %2369 = add i32 %2368, %2367
  store i32 %2369, ptr %15, align 4, !tbaa !9
  %2370 = load ptr, ptr %4, align 8, !tbaa !5
  %2371 = load i32, ptr %14, align 4, !tbaa !9
  %2372 = load i32, ptr %15, align 4, !tbaa !9
  call void @w2c_hermes_void0x20hermes0x3A0x3Avm0x3A0x3AHadesGC0x3A0x3AHeapSegment0x3A0x3AforAllObjs0x3Chermes0x3A0x3Avm0x3A0x3AHadesGC0x3A0x3AforAllObjs0x28std0x3A0x3A_0x5F20x3A0x3Afunction0x3Cvoid0x200x28hermes0x3A0x3Avm0x3A0x3AGCCell0x2A0x290x3E0x20const0x260x290x3A0x3A0x24_00x3E0x28hermes0x3A0x3Avm0x3A0x3AHadesGC0x3A0x3AforAllObjs0x28std0x3A0x3A_0x5F20x3A0x3Afunction0x3Cvoid0x200x28hermes0x3A0x3Avm0x3A0x3AGCCell0x2A0x290x3E0x20const0x260x290x3A0x3A0x24_00x29(ptr noundef %2370, i32 noundef %2371, i32 noundef %2372)
  %2373 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %2373, ptr %14, align 4, !tbaa !9
  %2374 = load ptr, ptr %4, align 8, !tbaa !5
  %2375 = getelementptr inbounds %struct.w2c_hermes, ptr %2374, i32 0, i32 6
  %2376 = load i32, ptr %14, align 4, !tbaa !9
  %2377 = zext i32 %2376 to i64
  %2378 = add i64 %2377, 24
  %2379 = call i32 @i32_load(ptr noundef %2375, i64 noundef %2378)
  store i32 %2379, ptr %14, align 4, !tbaa !9
  %2380 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %2380, ptr %8, align 4, !tbaa !9
  %2381 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %2381, ptr %15, align 4, !tbaa !9
  store i32 8, ptr %16, align 4, !tbaa !9
  %2382 = load i32, ptr %16, align 4, !tbaa !9
  %2383 = load i32, ptr %15, align 4, !tbaa !9
  %2384 = add i32 %2383, %2382
  store i32 %2384, ptr %15, align 4, !tbaa !9
  %2385 = load i32, ptr %14, align 4, !tbaa !9
  %2386 = load i32, ptr %15, align 4, !tbaa !9
  %2387 = icmp eq i32 %2385, %2386
  %2388 = zext i1 %2387 to i32
  store i32 %2388, ptr %14, align 4, !tbaa !9
  %2389 = load i32, ptr %14, align 4, !tbaa !9
  %2390 = icmp ne i32 %2389, 0
  br i1 %2390, label %2391, label %2407

2391:                                             ; preds = %2364
  %2392 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %2392, ptr %14, align 4, !tbaa !9
  store i32 8, ptr %15, align 4, !tbaa !9
  %2393 = load i32, ptr %15, align 4, !tbaa !9
  %2394 = load i32, ptr %14, align 4, !tbaa !9
  %2395 = add i32 %2394, %2393
  store i32 %2395, ptr %14, align 4, !tbaa !9
  %2396 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %2396, ptr %8, align 4, !tbaa !9
  %2397 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %2397, ptr %14, align 4, !tbaa !9
  %2398 = load ptr, ptr %4, align 8, !tbaa !5
  %2399 = getelementptr inbounds %struct.w2c_hermes, ptr %2398, i32 0, i32 6
  %2400 = load i32, ptr %14, align 4, !tbaa !9
  %2401 = zext i32 %2400 to i64
  %2402 = add i64 %2401, 8
  %2403 = call i32 @i32_load(ptr noundef %2399, i64 noundef %2402)
  store i32 %2403, ptr %14, align 4, !tbaa !9
  store i32 16, ptr %15, align 4, !tbaa !9
  %2404 = load i32, ptr %15, align 4, !tbaa !9
  %2405 = load i32, ptr %14, align 4, !tbaa !9
  %2406 = add i32 %2405, %2404
  store i32 %2406, ptr %14, align 4, !tbaa !9
  br label %2426

2407:                                             ; preds = %2364
  %2408 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %2408, ptr %14, align 4, !tbaa !9
  %2409 = load i32, ptr %14, align 4, !tbaa !9
  %2410 = icmp ne i32 %2409, 0
  %2411 = xor i1 %2410, true
  %2412 = zext i1 %2411 to i32
  store i32 %2412, ptr %14, align 4, !tbaa !9
  %2413 = load i32, ptr %14, align 4, !tbaa !9
  %2414 = icmp ne i32 %2413, 0
  br i1 %2414, label %2415, label %2416

2415:                                             ; preds = %2407
  br label %2496

2416:                                             ; preds = %2407
  %2417 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %2417, ptr %14, align 4, !tbaa !9
  %2418 = load ptr, ptr %4, align 8, !tbaa !5
  %2419 = getelementptr inbounds %struct.w2c_hermes, ptr %2418, i32 0, i32 6
  %2420 = load i32, ptr %14, align 4, !tbaa !9
  %2421 = zext i32 %2420 to i64
  %2422 = call i32 @i32_load(ptr noundef %2419, i64 noundef %2421)
  store i32 %2422, ptr %14, align 4, !tbaa !9
  store i32 20, ptr %15, align 4, !tbaa !9
  %2423 = load i32, ptr %15, align 4, !tbaa !9
  %2424 = load i32, ptr %14, align 4, !tbaa !9
  %2425 = add i32 %2424, %2423
  store i32 %2425, ptr %14, align 4, !tbaa !9
  br label %2426

2426:                                             ; preds = %2416, %2391, %2141, %2116
  %2427 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %2427, ptr %9, align 4, !tbaa !9
  %2428 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %2428, ptr %14, align 4, !tbaa !9
  %2429 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %2429, ptr %15, align 4, !tbaa !9
  %2430 = load ptr, ptr %4, align 8, !tbaa !5
  %2431 = getelementptr inbounds %struct.w2c_hermes, ptr %2430, i32 0, i32 6
  %2432 = load i32, ptr %15, align 4, !tbaa !9
  %2433 = zext i32 %2432 to i64
  %2434 = call i32 @i32_load(ptr noundef %2431, i64 noundef %2433)
  store i32 %2434, ptr %15, align 4, !tbaa !9
  %2435 = load i32, ptr %15, align 4, !tbaa !9
  %2436 = load ptr, ptr %4, align 8, !tbaa !5
  %2437 = getelementptr inbounds %struct.w2c_hermes, ptr %2436, i32 0, i32 7
  %2438 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %2437, i32 0, i32 2
  %2439 = load i32, ptr %2438, align 4, !tbaa !17
  %2440 = icmp ult i32 %2435, %2439
  br i1 %2440, label %2441, label %2464

2441:                                             ; preds = %2426
  %2442 = load ptr, ptr %4, align 8, !tbaa !5
  %2443 = getelementptr inbounds %struct.w2c_hermes, ptr %2442, i32 0, i32 7
  %2444 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %2443, i32 0, i32 0
  %2445 = load ptr, ptr %2444, align 8, !tbaa !18
  %2446 = load i32, ptr %15, align 4, !tbaa !9
  %2447 = zext i32 %2446 to i64
  %2448 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2445, i64 %2447
  %2449 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2448, i32 0, i32 1
  %2450 = load ptr, ptr %2449, align 8, !tbaa !19
  %2451 = icmp ne ptr %2450, null
  br i1 %2451, label %2452, label %2464

2452:                                             ; preds = %2441
  %2453 = load ptr, ptr @w2c_hermes_t3, align 8, !tbaa !5
  %2454 = load ptr, ptr %4, align 8, !tbaa !5
  %2455 = getelementptr inbounds %struct.w2c_hermes, ptr %2454, i32 0, i32 7
  %2456 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %2455, i32 0, i32 0
  %2457 = load ptr, ptr %2456, align 8, !tbaa !18
  %2458 = load i32, ptr %15, align 4, !tbaa !9
  %2459 = zext i32 %2458 to i64
  %2460 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2457, i64 %2459
  %2461 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2460, i32 0, i32 0
  %2462 = load ptr, ptr %2461, align 8, !tbaa !21
  %2463 = call zeroext i1 @func_types_eq(ptr noundef %2453, ptr noundef %2462)
  br label %2464

2464:                                             ; preds = %2452, %2441, %2426
  %2465 = phi i1 [ false, %2441 ], [ false, %2426 ], [ %2463, %2452 ]
  %2466 = xor i1 %2465, true
  %2467 = xor i1 %2466, true
  %2468 = zext i1 %2467 to i32
  %2469 = sext i32 %2468 to i64
  %2470 = call i64 @llvm.expect.i64(i64 %2469, i64 1)
  %2471 = icmp ne i64 %2470, 0
  br i1 %2471, label %2474, label %2472

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

2473:                                             ; No predecessors!
  br label %2474

2474:                                             ; preds = %2473, %2464
  %2475 = phi i1 [ true, %2464 ], [ false, %2473 ]
  %2476 = zext i1 %2475 to i32
  %2477 = load ptr, ptr %4, align 8, !tbaa !5
  %2478 = getelementptr inbounds %struct.w2c_hermes, ptr %2477, i32 0, i32 7
  %2479 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %2478, i32 0, i32 0
  %2480 = load ptr, ptr %2479, align 8, !tbaa !18
  %2481 = load i32, ptr %15, align 4, !tbaa !9
  %2482 = zext i32 %2481 to i64
  %2483 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2480, i64 %2482
  %2484 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2483, i32 0, i32 1
  %2485 = load ptr, ptr %2484, align 8, !tbaa !19
  %2486 = load ptr, ptr %4, align 8, !tbaa !5
  %2487 = getelementptr inbounds %struct.w2c_hermes, ptr %2486, i32 0, i32 7
  %2488 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %2487, i32 0, i32 0
  %2489 = load ptr, ptr %2488, align 8, !tbaa !18
  %2490 = load i32, ptr %15, align 4, !tbaa !9
  %2491 = zext i32 %2490 to i64
  %2492 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2489, i64 %2491
  %2493 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2492, i32 0, i32 2
  %2494 = load ptr, ptr %2493, align 8, !tbaa !22
  %2495 = load i32, ptr %14, align 4, !tbaa !9
  call void %2485(ptr noundef %2494, i32 noundef %2495)
  br label %2496

2496:                                             ; preds = %2474, %2415, %2140, %1701
  %2497 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %2497, ptr %14, align 4, !tbaa !9
  %2498 = load ptr, ptr %4, align 8, !tbaa !5
  %2499 = getelementptr inbounds %struct.w2c_hermes, ptr %2498, i32 0, i32 6
  %2500 = load i32, ptr %14, align 4, !tbaa !9
  %2501 = zext i32 %2500 to i64
  %2502 = add i64 %2501, 120
  %2503 = call i32 @i32_load(ptr noundef %2499, i64 noundef %2502)
  store i32 %2503, ptr %14, align 4, !tbaa !9
  %2504 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %2504, ptr %8, align 4, !tbaa !9
  %2505 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %2505, ptr %15, align 4, !tbaa !9
  store i32 104, ptr %16, align 4, !tbaa !9
  %2506 = load i32, ptr %16, align 4, !tbaa !9
  %2507 = load i32, ptr %15, align 4, !tbaa !9
  %2508 = add i32 %2507, %2506
  store i32 %2508, ptr %15, align 4, !tbaa !9
  %2509 = load i32, ptr %14, align 4, !tbaa !9
  %2510 = load i32, ptr %15, align 4, !tbaa !9
  %2511 = icmp eq i32 %2509, %2510
  %2512 = zext i1 %2511 to i32
  store i32 %2512, ptr %14, align 4, !tbaa !9
  %2513 = load i32, ptr %14, align 4, !tbaa !9
  %2514 = icmp ne i32 %2513, 0
  br i1 %2514, label %2515, label %2531

2515:                                             ; preds = %2496
  %2516 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %2516, ptr %14, align 4, !tbaa !9
  store i32 104, ptr %15, align 4, !tbaa !9
  %2517 = load i32, ptr %15, align 4, !tbaa !9
  %2518 = load i32, ptr %14, align 4, !tbaa !9
  %2519 = add i32 %2518, %2517
  store i32 %2519, ptr %14, align 4, !tbaa !9
  %2520 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %2520, ptr %8, align 4, !tbaa !9
  %2521 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %2521, ptr %14, align 4, !tbaa !9
  %2522 = load ptr, ptr %4, align 8, !tbaa !5
  %2523 = getelementptr inbounds %struct.w2c_hermes, ptr %2522, i32 0, i32 6
  %2524 = load i32, ptr %14, align 4, !tbaa !9
  %2525 = zext i32 %2524 to i64
  %2526 = add i64 %2525, 104
  %2527 = call i32 @i32_load(ptr noundef %2523, i64 noundef %2526)
  store i32 %2527, ptr %14, align 4, !tbaa !9
  store i32 16, ptr %15, align 4, !tbaa !9
  %2528 = load i32, ptr %15, align 4, !tbaa !9
  %2529 = load i32, ptr %14, align 4, !tbaa !9
  %2530 = add i32 %2529, %2528
  store i32 %2530, ptr %14, align 4, !tbaa !9
  br label %2550

2531:                                             ; preds = %2496
  %2532 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %2532, ptr %14, align 4, !tbaa !9
  %2533 = load i32, ptr %14, align 4, !tbaa !9
  %2534 = icmp ne i32 %2533, 0
  %2535 = xor i1 %2534, true
  %2536 = zext i1 %2535 to i32
  store i32 %2536, ptr %14, align 4, !tbaa !9
  %2537 = load i32, ptr %14, align 4, !tbaa !9
  %2538 = icmp ne i32 %2537, 0
  br i1 %2538, label %2539, label %2540

2539:                                             ; preds = %2531
  br label %2620

2540:                                             ; preds = %2531
  %2541 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %2541, ptr %14, align 4, !tbaa !9
  %2542 = load ptr, ptr %4, align 8, !tbaa !5
  %2543 = getelementptr inbounds %struct.w2c_hermes, ptr %2542, i32 0, i32 6
  %2544 = load i32, ptr %14, align 4, !tbaa !9
  %2545 = zext i32 %2544 to i64
  %2546 = call i32 @i32_load(ptr noundef %2543, i64 noundef %2545)
  store i32 %2546, ptr %14, align 4, !tbaa !9
  store i32 20, ptr %15, align 4, !tbaa !9
  %2547 = load i32, ptr %15, align 4, !tbaa !9
  %2548 = load i32, ptr %14, align 4, !tbaa !9
  %2549 = add i32 %2548, %2547
  store i32 %2549, ptr %14, align 4, !tbaa !9
  br label %2550

2550:                                             ; preds = %2540, %2515
  %2551 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %2551, ptr %9, align 4, !tbaa !9
  %2552 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %2552, ptr %14, align 4, !tbaa !9
  %2553 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %2553, ptr %15, align 4, !tbaa !9
  %2554 = load ptr, ptr %4, align 8, !tbaa !5
  %2555 = getelementptr inbounds %struct.w2c_hermes, ptr %2554, i32 0, i32 6
  %2556 = load i32, ptr %15, align 4, !tbaa !9
  %2557 = zext i32 %2556 to i64
  %2558 = call i32 @i32_load(ptr noundef %2555, i64 noundef %2557)
  store i32 %2558, ptr %15, align 4, !tbaa !9
  %2559 = load i32, ptr %15, align 4, !tbaa !9
  %2560 = load ptr, ptr %4, align 8, !tbaa !5
  %2561 = getelementptr inbounds %struct.w2c_hermes, ptr %2560, i32 0, i32 7
  %2562 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %2561, i32 0, i32 2
  %2563 = load i32, ptr %2562, align 4, !tbaa !17
  %2564 = icmp ult i32 %2559, %2563
  br i1 %2564, label %2565, label %2588

2565:                                             ; preds = %2550
  %2566 = load ptr, ptr %4, align 8, !tbaa !5
  %2567 = getelementptr inbounds %struct.w2c_hermes, ptr %2566, i32 0, i32 7
  %2568 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %2567, i32 0, i32 0
  %2569 = load ptr, ptr %2568, align 8, !tbaa !18
  %2570 = load i32, ptr %15, align 4, !tbaa !9
  %2571 = zext i32 %2570 to i64
  %2572 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2569, i64 %2571
  %2573 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2572, i32 0, i32 1
  %2574 = load ptr, ptr %2573, align 8, !tbaa !19
  %2575 = icmp ne ptr %2574, null
  br i1 %2575, label %2576, label %2588

2576:                                             ; preds = %2565
  %2577 = load ptr, ptr @w2c_hermes_t3, align 8, !tbaa !5
  %2578 = load ptr, ptr %4, align 8, !tbaa !5
  %2579 = getelementptr inbounds %struct.w2c_hermes, ptr %2578, i32 0, i32 7
  %2580 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %2579, i32 0, i32 0
  %2581 = load ptr, ptr %2580, align 8, !tbaa !18
  %2582 = load i32, ptr %15, align 4, !tbaa !9
  %2583 = zext i32 %2582 to i64
  %2584 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2581, i64 %2583
  %2585 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2584, i32 0, i32 0
  %2586 = load ptr, ptr %2585, align 8, !tbaa !21
  %2587 = call zeroext i1 @func_types_eq(ptr noundef %2577, ptr noundef %2586)
  br label %2588

2588:                                             ; preds = %2576, %2565, %2550
  %2589 = phi i1 [ false, %2565 ], [ false, %2550 ], [ %2587, %2576 ]
  %2590 = xor i1 %2589, true
  %2591 = xor i1 %2590, true
  %2592 = zext i1 %2591 to i32
  %2593 = sext i32 %2592 to i64
  %2594 = call i64 @llvm.expect.i64(i64 %2593, i64 1)
  %2595 = icmp ne i64 %2594, 0
  br i1 %2595, label %2598, label %2596

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

2597:                                             ; No predecessors!
  br label %2598

2598:                                             ; preds = %2597, %2588
  %2599 = phi i1 [ true, %2588 ], [ false, %2597 ]
  %2600 = zext i1 %2599 to i32
  %2601 = load ptr, ptr %4, align 8, !tbaa !5
  %2602 = getelementptr inbounds %struct.w2c_hermes, ptr %2601, i32 0, i32 7
  %2603 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %2602, i32 0, i32 0
  %2604 = load ptr, ptr %2603, align 8, !tbaa !18
  %2605 = load i32, ptr %15, align 4, !tbaa !9
  %2606 = zext i32 %2605 to i64
  %2607 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2604, i64 %2606
  %2608 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2607, i32 0, i32 1
  %2609 = load ptr, ptr %2608, align 8, !tbaa !19
  %2610 = load ptr, ptr %4, align 8, !tbaa !5
  %2611 = getelementptr inbounds %struct.w2c_hermes, ptr %2610, i32 0, i32 7
  %2612 = getelementptr inbounds %struct.wasm_rt_funcref_table_t, ptr %2611, i32 0, i32 0
  %2613 = load ptr, ptr %2612, align 8, !tbaa !18
  %2614 = load i32, ptr %15, align 4, !tbaa !9
  %2615 = zext i32 %2614 to i64
  %2616 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2613, i64 %2615
  %2617 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %2616, i32 0, i32 2
  %2618 = load ptr, ptr %2617, align 8, !tbaa !22
  %2619 = load i32, ptr %14, align 4, !tbaa !9
  call void %2609(ptr noundef %2618, i32 noundef %2619)
  br label %2620

2620:                                             ; preds = %2598, %2539
  %2621 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %2621, ptr %14, align 4, !tbaa !9
  store i32 160, ptr %15, align 4, !tbaa !9
  %2622 = load i32, ptr %15, align 4, !tbaa !9
  %2623 = load i32, ptr %14, align 4, !tbaa !9
  %2624 = add i32 %2623, %2622
  store i32 %2624, ptr %14, align 4, !tbaa !9
  %2625 = load i32, ptr %14, align 4, !tbaa !9
  %2626 = load ptr, ptr %4, align 8, !tbaa !5
  %2627 = getelementptr inbounds %struct.w2c_hermes, ptr %2626, i32 0, i32 3
  store i32 %2625, ptr %2627, align 8, !tbaa !11
  br label %2630

2628:                                             ; preds = %1990, %1132, %300
  %2629 = load ptr, ptr %4, align 8, !tbaa !5
  call void @w2c_hermes_std0x3A0x3A_0x5F20x3A0x3A_0x5Fthrow_bad_function_call0x5Babi0x3Av150070x5D0x280x29(ptr noundef %2629)
  call void @wasm_rt_trap(i32 noundef 5) #7
  unreachable

2630:                                             ; preds = %2620
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  ret void
}

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 24}
!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, !10, i64 92}
!18 = !{!12, !6, i64 80}
!19 = !{!20, !6, i64 8}
!20 = !{!"", !6, i64 0, !6, i64 8, !6, i64 16}
!21 = !{!20, !6, i64 0}
!22 = !{!20, !6, i64 16}


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

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

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

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

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

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

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

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

declare void @w2c_hermes_std0x3A0x3A_0x5F20x3A0x3A_0x5Fthrow_bad_function_call0x5Babi0x3Av150070x5D0x280x29(ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
define dso_local void @w2c_hermes_hermes0x3A0x3Avm0x3A0x3AHadesGC0x3A0x3AforAllObjs0x28std0x3A0x3A_0x5F20x3A0x3Afunction0x3Cvoid0x200x28hermes0x3A0x3Avm0x3A0x3AGCCell0x2A0x290x3E0x20const0x260x29(ptr noundef %0, i32 noundef %1, i32 noundef %2) local_unnamed_addr #3 {
  %4 = getelementptr inbounds i8, ptr %0, i64 24
  %5 = load i32, ptr %4, align 8, !tbaa !5
  %6 = add i32 %5, -160
  store i32 %6, ptr %4, align 8, !tbaa !5
  %7 = getelementptr inbounds i8, ptr %0, i64 40
  %8 = zext i32 %2 to i64
  %9 = add nuw nsw i64 %8, 16
  %10 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %9)
  %.not = icmp eq i32 %10, 0
  br i1 %.not, label %11, label %14

11:                                               ; preds = %3
  %12 = zext i32 %6 to i64
  %13 = add nuw nsw i64 %12, 144
  tail call void @i32_store(ptr noundef nonnull %7, i64 noundef %13, i32 noundef 0)
  br label %75

14:                                               ; preds = %3
  %15 = icmp eq i32 %10, %2
  br i1 %15, label %16, label %45

16:                                               ; preds = %14
  %17 = add i32 %5, -32
  %18 = zext i32 %6 to i64
  %19 = add nuw nsw i64 %18, 144
  tail call void @i32_store(ptr noundef nonnull %7, i64 noundef %19, i32 noundef %17)
  %20 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %8)
  %21 = zext i32 %20 to i64
  %22 = add nuw nsw i64 %21, 12
  %23 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %22)
  %24 = getelementptr inbounds i8, ptr %0, i64 80
  %25 = getelementptr inbounds i8, ptr %0, i64 92
  %26 = load i32, ptr %25, align 4, !tbaa !15
  %27 = icmp ult i32 %23, %26
  br i1 %27, label %28, label %.critedge, !prof !16

28:                                               ; preds = %16
  %29 = load ptr, ptr %24, align 8, !tbaa !17
  %30 = zext i32 %23 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 !18
  %.not1019 = icmp eq ptr %33, null
  br i1 %.not1019, label %.critedge, label %34, !prof !20

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

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

38:                                               ; preds = %34
  %39 = load ptr, ptr %24, align 8, !tbaa !17
  %40 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %39, i64 %30
  %41 = getelementptr inbounds i8, ptr %40, i64 8
  %42 = load ptr, ptr %41, align 8, !tbaa !18
  %43 = getelementptr inbounds i8, ptr %40, i64 16
  %44 = load ptr, ptr %43, align 8, !tbaa !23
  tail call void %42(ptr noundef %44, i32 noundef %2, i32 noundef %17) #5
  br label %75

45:                                               ; preds = %14
  %46 = zext i32 %10 to i64
  %47 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %46)
  %48 = zext i32 %47 to i64
  %49 = add nuw nsw i64 %48, 8
  %50 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %49)
  %51 = getelementptr inbounds i8, ptr %0, i64 80
  %52 = getelementptr inbounds i8, ptr %0, i64 92
  %53 = load i32, ptr %52, align 4, !tbaa !15
  %54 = icmp ult i32 %50, %53
  br i1 %54, label %55, label %.critedge1064, !prof !16

55:                                               ; preds = %45
  %56 = load ptr, ptr %51, align 8, !tbaa !17
  %57 = zext i32 %50 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 !18
  %.not1018 = icmp eq ptr %60, null
  br i1 %.not1018, label %.critedge1064, label %61, !prof !20

61:                                               ; preds = %55
  %62 = load ptr, ptr @w2c_hermes_t2, align 8, !tbaa !21
  %63 = load ptr, ptr %58, align 8, !tbaa !22
  %64 = tail call zeroext i1 @func_types_eq(ptr noundef %62, ptr noundef %63)
  br i1 %64, label %65, label %.critedge1064, !prof !16

.critedge1064:                                    ; preds = %55, %45, %61
  tail call void @wasm_rt_trap(i32 noundef 6) #4
  unreachable

65:                                               ; preds = %61
  %66 = load ptr, ptr %51, align 8, !tbaa !17
  %67 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %66, i64 %57
  %68 = getelementptr inbounds i8, ptr %67, i64 8
  %69 = load ptr, ptr %68, align 8, !tbaa !18
  %70 = getelementptr inbounds i8, ptr %67, i64 16
  %71 = load ptr, ptr %70, align 8, !tbaa !23
  %72 = tail call i32 %69(ptr noundef %71, i32 noundef %10) #5
  %73 = zext i32 %6 to i64
  %74 = add nuw nsw i64 %73, 144
  tail call void @i32_store(ptr noundef nonnull %7, i64 noundef %74, i32 noundef %72)
  br label %75

75:                                               ; preds = %65, %38, %11
  %76 = zext i32 %1 to i64
  %77 = add nuw nsw i64 %76, 588
  %78 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %77)
  %79 = add i32 %78, 86016
  %80 = add nuw nsw i64 %76, 596
  %81 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %80)
  %.not1020 = icmp eq i32 %79, %81
  %.pre = zext i32 %6 to i64
  br i1 %.not1020, label %..loopexit1107_crit_edge, label %.preheader1105

..loopexit1107_crit_edge:                         ; preds = %75
  %.pre1111 = add nuw nsw i64 %.pre, 144
  br label %.loopexit1107

.preheader1105:                                   ; preds = %75
  %82 = add nuw nsw i64 %.pre, 104
  %83 = add nuw nsw i64 %.pre, 144
  %84 = add i32 %5, -56
  %85 = getelementptr inbounds i8, ptr %0, i64 80
  %86 = getelementptr inbounds i8, ptr %0, i64 92
  %87 = load ptr, ptr @w2c_hermes_t0, align 8
  br label %88

88:                                               ; preds = %.preheader1105, %119
  %.0963 = phi i32 [ %121, %119 ], [ %79, %.preheader1105 ]
  %89 = zext i32 %.0963 to i64
  %90 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %89)
  %91 = and i32 %90, -16777216
  %.not1021 = icmp eq i32 %91, 33554432
  br i1 %.not1021, label %119, label %92

92:                                               ; preds = %88
  tail call void @i32_store(ptr noundef nonnull %7, i64 noundef %82, i32 noundef %.0963)
  %93 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %83)
  %.not1022 = icmp eq i32 %93, 0
  br i1 %.not1022, label %.loopexit, label %94

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

102:                                              ; preds = %94
  %103 = load ptr, ptr %85, align 8, !tbaa !17
  %104 = zext i32 %99 to i64
  %105 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %103, i64 %104
  %106 = getelementptr inbounds i8, ptr %105, i64 8
  %107 = load ptr, ptr %106, align 8, !tbaa !18
  %.not1023 = icmp eq ptr %107, null
  br i1 %.not1023, label %.critedge1066, label %108, !prof !20

108:                                              ; preds = %102
  %109 = load ptr, ptr %105, align 8, !tbaa !22
  %110 = tail call zeroext i1 @func_types_eq(ptr noundef %87, ptr noundef %109)
  br i1 %110, label %111, label %.critedge1066, !prof !16

.critedge1066:                                    ; preds = %102, %94, %108
  tail call void @wasm_rt_trap(i32 noundef 6) #4
  unreachable

111:                                              ; preds = %108
  %112 = load ptr, ptr %85, align 8, !tbaa !17
  %113 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %112, i64 %104
  %114 = getelementptr inbounds i8, ptr %113, i64 8
  %115 = load ptr, ptr %114, align 8, !tbaa !18
  %116 = getelementptr inbounds i8, ptr %113, i64 16
  %117 = load ptr, ptr %116, align 8, !tbaa !23
  tail call void %115(ptr noundef %117, i32 noundef %93, i32 noundef %84) #5
  %118 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %89)
  br label %119

119:                                              ; preds = %111, %88
  %.0960 = phi i32 [ %118, %111 ], [ %90, %88 ]
  %120 = and i32 %.0960, 16777215
  %121 = add i32 %120, %.0963
  %.not1024 = icmp eq i32 %121, %81
  br i1 %.not1024, label %.loopexit1107, label %88

.loopexit1107:                                    ; preds = %119, %..loopexit1107_crit_edge
  %.pre-phi1112 = phi i64 [ %.pre1111, %..loopexit1107_crit_edge ], [ %83, %119 ]
  %122 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %.pre-phi1112)
  %123 = add i32 %5, -32
  %124 = icmp eq i32 %122, %123
  br i1 %124, label %125, label %127

125:                                              ; preds = %.loopexit1107
  %126 = add nuw nsw i64 %.pre, 128
  br label %130

127:                                              ; preds = %.loopexit1107
  %.not1025 = icmp eq i32 %122, 0
  br i1 %.not1025, label %156, label %128

128:                                              ; preds = %127
  %129 = zext i32 %122 to i64
  br label %130

130:                                              ; preds = %128, %125
  %.sink1118 = phi i64 [ %129, %128 ], [ %126, %125 ]
  %.sink1117 = phi i32 [ 20, %128 ], [ 16, %125 ]
  %.1964 = phi i32 [ %122, %128 ], [ %123, %125 ]
  %131 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %.sink1118)
  %132 = add i32 %131, %.sink1117
  %133 = zext i32 %132 to i64
  %134 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %133)
  %135 = getelementptr inbounds i8, ptr %0, i64 80
  %136 = getelementptr inbounds i8, ptr %0, i64 92
  %137 = load i32, ptr %136, align 4, !tbaa !15
  %138 = icmp ult i32 %134, %137
  br i1 %138, label %139, label %.critedge1068, !prof !16

139:                                              ; preds = %130
  %140 = load ptr, ptr %135, align 8, !tbaa !17
  %141 = zext i32 %134 to i64
  %142 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %140, i64 %141
  %143 = getelementptr inbounds i8, ptr %142, i64 8
  %144 = load ptr, ptr %143, align 8, !tbaa !18
  %.not1026 = icmp eq ptr %144, null
  br i1 %.not1026, label %.critedge1068, label %145, !prof !20

145:                                              ; preds = %139
  %146 = load ptr, ptr @w2c_hermes_t3, align 8, !tbaa !21
  %147 = load ptr, ptr %142, align 8, !tbaa !22
  %148 = tail call zeroext i1 @func_types_eq(ptr noundef %146, ptr noundef %147)
  br i1 %148, label %149, label %.critedge1068, !prof !16

.critedge1068:                                    ; preds = %139, %130, %145
  tail call void @wasm_rt_trap(i32 noundef 6) #4
  unreachable

149:                                              ; preds = %145
  %150 = load ptr, ptr %135, align 8, !tbaa !17
  %151 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %150, i64 %141
  %152 = getelementptr inbounds i8, ptr %151, i64 8
  %153 = load ptr, ptr %152, align 8, !tbaa !18
  %154 = getelementptr inbounds i8, ptr %151, i64 16
  %155 = load ptr, ptr %154, align 8, !tbaa !23
  tail call void %153(ptr noundef %155, i32 noundef %.1964) #5
  br label %156

156:                                              ; preds = %127, %149
  %157 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %9)
  %.not1027 = icmp eq i32 %157, 0
  br i1 %.not1027, label %158, label %160

158:                                              ; preds = %156
  %159 = add nuw nsw i64 %.pre, 120
  tail call void @i32_store(ptr noundef nonnull %7, i64 noundef %159, i32 noundef 0)
  br label %219

160:                                              ; preds = %156
  %161 = icmp eq i32 %157, %2
  br i1 %161, label %162, label %190

162:                                              ; preds = %160
  %163 = add i32 %5, -56
  %164 = add nuw nsw i64 %.pre, 120
  tail call void @i32_store(ptr noundef nonnull %7, i64 noundef %164, i32 noundef %163)
  %165 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %8)
  %166 = zext i32 %165 to i64
  %167 = add nuw nsw i64 %166, 12
  %168 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %167)
  %169 = getelementptr inbounds i8, ptr %0, i64 80
  %170 = getelementptr inbounds i8, ptr %0, i64 92
  %171 = load i32, ptr %170, align 4, !tbaa !15
  %172 = icmp ult i32 %168, %171
  br i1 %172, label %173, label %.critedge1070, !prof !16

173:                                              ; preds = %162
  %174 = load ptr, ptr %169, align 8, !tbaa !17
  %175 = zext i32 %168 to i64
  %176 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %174, i64 %175
  %177 = getelementptr inbounds i8, ptr %176, i64 8
  %178 = load ptr, ptr %177, align 8, !tbaa !18
  %.not1029 = icmp eq ptr %178, null
  br i1 %.not1029, label %.critedge1070, label %179, !prof !20

179:                                              ; preds = %173
  %180 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !21
  %181 = load ptr, ptr %176, align 8, !tbaa !22
  %182 = tail call zeroext i1 @func_types_eq(ptr noundef %180, ptr noundef %181)
  br i1 %182, label %183, label %.critedge1070, !prof !16

.critedge1070:                                    ; preds = %173, %162, %179
  tail call void @wasm_rt_trap(i32 noundef 6) #4
  unreachable

183:                                              ; preds = %179
  %184 = load ptr, ptr %169, align 8, !tbaa !17
  %185 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %184, i64 %175
  %186 = getelementptr inbounds i8, ptr %185, i64 8
  %187 = load ptr, ptr %186, align 8, !tbaa !18
  %188 = getelementptr inbounds i8, ptr %185, i64 16
  %189 = load ptr, ptr %188, align 8, !tbaa !23
  tail call void %187(ptr noundef %189, i32 noundef %2, i32 noundef %163) #5
  br label %219

190:                                              ; preds = %160
  %191 = zext i32 %157 to i64
  %192 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %191)
  %193 = zext i32 %192 to i64
  %194 = add nuw nsw i64 %193, 8
  %195 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %194)
  %196 = getelementptr inbounds i8, ptr %0, i64 80
  %197 = getelementptr inbounds i8, ptr %0, i64 92
  %198 = load i32, ptr %197, align 4, !tbaa !15
  %199 = icmp ult i32 %195, %198
  br i1 %199, label %200, label %.critedge1072, !prof !16

200:                                              ; preds = %190
  %201 = load ptr, ptr %196, align 8, !tbaa !17
  %202 = zext i32 %195 to i64
  %203 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %201, i64 %202
  %204 = getelementptr inbounds i8, ptr %203, i64 8
  %205 = load ptr, ptr %204, align 8, !tbaa !18
  %.not1028 = icmp eq ptr %205, null
  br i1 %.not1028, label %.critedge1072, label %206, !prof !20

206:                                              ; preds = %200
  %207 = load ptr, ptr @w2c_hermes_t2, align 8, !tbaa !21
  %208 = load ptr, ptr %203, align 8, !tbaa !22
  %209 = tail call zeroext i1 @func_types_eq(ptr noundef %207, ptr noundef %208)
  br i1 %209, label %210, label %.critedge1072, !prof !16

.critedge1072:                                    ; preds = %200, %190, %206
  tail call void @wasm_rt_trap(i32 noundef 6) #4
  unreachable

210:                                              ; preds = %206
  %211 = load ptr, ptr %196, align 8, !tbaa !17
  %212 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %211, i64 %202
  %213 = getelementptr inbounds i8, ptr %212, i64 8
  %214 = load ptr, ptr %213, align 8, !tbaa !18
  %215 = getelementptr inbounds i8, ptr %212, i64 16
  %216 = load ptr, ptr %215, align 8, !tbaa !23
  %217 = tail call i32 %214(ptr noundef %216, i32 noundef %157) #5
  %218 = add nuw nsw i64 %.pre, 120
  tail call void @i32_store(ptr noundef nonnull %7, i64 noundef %218, i32 noundef %217)
  br label %219

219:                                              ; preds = %210, %183, %158
  %220 = add nuw nsw i64 %76, 640
  %221 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %220)
  %222 = add nuw nsw i64 %76, 644
  %223 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %222)
  %224 = icmp eq i32 %221, %223
  br i1 %224, label %.loopexit1104, label %225

225:                                              ; preds = %219
  %226 = add nuw nsw i64 %76, 652
  %227 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %226)
  %228 = lshr i32 %227, 6
  %229 = and i32 %228, 67108860
  %230 = add i32 %229, %221
  %231 = zext i32 %230 to i64
  %232 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %231)
  %233 = shl i32 %227, 4
  %234 = and i32 %233, 4080
  %235 = add i32 %234, %232
  %236 = add nuw nsw i64 %76, 656
  %237 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %236)
  %238 = add i32 %237, %227
  %239 = lshr i32 %238, 6
  %240 = and i32 %239, 67108860
  %241 = add i32 %240, %221
  %242 = zext i32 %241 to i64
  %243 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %242)
  %244 = shl i32 %238, 4
  %245 = and i32 %244, 4080
  %246 = add i32 %245, %243
  %247 = icmp eq i32 %235, %246
  br i1 %247, label %.loopexit1104, label %.preheader1103

.preheader1103:                                   ; preds = %225
  %248 = add nuw nsw i64 %76, 4052
  %249 = getelementptr inbounds i8, ptr %0, i64 80
  %250 = getelementptr inbounds i8, ptr %0, i64 92
  %251 = load ptr, ptr @w2c_hermes_t2, align 8
  %252 = add nuw nsw i64 %.pre, 96
  %253 = add i32 %5, -80
  %254 = load ptr, ptr @w2c_hermes_t0, align 8
  %255 = add nuw nsw i64 %.pre, 156
  %256 = add i32 %5, -4
  %257 = add nuw nsw i64 %.pre, 80
  %258 = add nuw nsw i64 %.pre, 120
  %259 = add i32 %5, -56
  %260 = add nuw nsw i64 %.pre, 72
  %261 = add i32 %5, -104
  %262 = add nuw nsw i64 %.pre, 104
  %263 = add nuw nsw i64 %.pre, 56
  %264 = load ptr, ptr @w2c_hermes_t3, align 8
  br label %265

265:                                              ; preds = %.preheader1103, %456
  %.0958 = phi i32 [ %.1959, %456 ], [ %235, %.preheader1103 ]
  %.0956 = phi i32 [ %.1957, %456 ], [ %230, %.preheader1103 ]
  %266 = tail call i32 @i32_load8_u(ptr noundef nonnull %7, i64 noundef %248)
  %.not1030 = icmp eq i32 %266, 3
  br i1 %.not1030, label %364, label %267

267:                                              ; preds = %265
  %268 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %9)
  %.not1035 = icmp eq i32 %268, 0
  br i1 %.not1035, label %269, label %270

269:                                              ; preds = %267
  tail call void @i32_store(ptr noundef nonnull %7, i64 noundef %252, i32 noundef 0)
  br label %320

270:                                              ; preds = %267
  %271 = icmp eq i32 %268, %2
  br i1 %271, label %272, label %295

272:                                              ; preds = %270
  tail call void @i32_store(ptr noundef nonnull %7, i64 noundef %252, i32 noundef %253)
  %273 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %8)
  %274 = zext i32 %273 to i64
  %275 = add nuw nsw i64 %274, 12
  %276 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %275)
  %277 = load i32, ptr %250, align 4, !tbaa !15
  %278 = icmp ult i32 %276, %277
  br i1 %278, label %279, label %.critedge1074, !prof !16

279:                                              ; preds = %272
  %280 = load ptr, ptr %249, align 8, !tbaa !17
  %281 = zext i32 %276 to i64
  %282 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %280, i64 %281
  %283 = getelementptr inbounds i8, ptr %282, i64 8
  %284 = load ptr, ptr %283, align 8, !tbaa !18
  %.not1037 = icmp eq ptr %284, null
  br i1 %.not1037, label %.critedge1074, label %285, !prof !20

285:                                              ; preds = %279
  %286 = load ptr, ptr %282, align 8, !tbaa !22
  %287 = tail call zeroext i1 @func_types_eq(ptr noundef %254, ptr noundef %286)
  br i1 %287, label %288, label %.critedge1074, !prof !16

.critedge1074:                                    ; preds = %279, %272, %285
  tail call void @wasm_rt_trap(i32 noundef 6) #4
  unreachable

288:                                              ; preds = %285
  %289 = load ptr, ptr %249, align 8, !tbaa !17
  %290 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %289, i64 %281
  %291 = getelementptr inbounds i8, ptr %290, i64 8
  %292 = load ptr, ptr %291, align 8, !tbaa !18
  %293 = getelementptr inbounds i8, ptr %290, i64 16
  %294 = load ptr, ptr %293, align 8, !tbaa !23
  tail call void %292(ptr noundef %294, i32 noundef %2, i32 noundef %253) #5
  br label %320

295:                                              ; preds = %270
  %296 = zext i32 %268 to i64
  %297 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %296)
  %298 = zext i32 %297 to i64
  %299 = add nuw nsw i64 %298, 8
  %300 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %299)
  %301 = load i32, ptr %250, align 4, !tbaa !15
  %302 = icmp ult i32 %300, %301
  br i1 %302, label %303, label %.critedge1076, !prof !16

303:                                              ; preds = %295
  %304 = load ptr, ptr %249, align 8, !tbaa !17
  %305 = zext i32 %300 to i64
  %306 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %304, i64 %305
  %307 = getelementptr inbounds i8, ptr %306, i64 8
  %308 = load ptr, ptr %307, align 8, !tbaa !18
  %.not1036 = icmp eq ptr %308, null
  br i1 %.not1036, label %.critedge1076, label %309, !prof !20

309:                                              ; preds = %303
  %310 = load ptr, ptr %306, align 8, !tbaa !22
  %311 = tail call zeroext i1 @func_types_eq(ptr noundef %251, ptr noundef %310)
  br i1 %311, label %312, label %.critedge1076, !prof !16

.critedge1076:                                    ; preds = %303, %295, %309
  tail call void @wasm_rt_trap(i32 noundef 6) #4
  unreachable

312:                                              ; preds = %309
  %313 = load ptr, ptr %249, align 8, !tbaa !17
  %314 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %313, i64 %305
  %315 = getelementptr inbounds i8, ptr %314, i64 8
  %316 = load ptr, ptr %315, align 8, !tbaa !18
  %317 = getelementptr inbounds i8, ptr %314, i64 16
  %318 = load ptr, ptr %317, align 8, !tbaa !23
  %319 = tail call i32 %316(ptr noundef %318, i32 noundef %268) #5
  tail call void @i32_store(ptr noundef nonnull %7, i64 noundef %252, i32 noundef %319)
  br label %320

320:                                              ; preds = %312, %288, %269
  %321 = zext i32 %.0958 to i64
  %322 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %321)
  %323 = add i32 %322, 86016
  %324 = add nuw nsw i64 %321, 8
  %325 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %324)
  %.not1038 = icmp eq i32 %323, %325
  br i1 %.not1038, label %.loopexit1102, label %.preheader1100

.preheader1100:                                   ; preds = %320, %356
  %.2965 = phi i32 [ %358, %356 ], [ %323, %320 ]
  %326 = zext i32 %.2965 to i64
  %327 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %326)
  %328 = and i32 %327, -16777216
  %.not1039 = icmp eq i32 %328, 33554432
  br i1 %.not1039, label %356, label %329

329:                                              ; preds = %.preheader1100
  tail call void @i32_store(ptr noundef nonnull %7, i64 noundef %255, i32 noundef %.2965)
  %330 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %252)
  %.not1040 = icmp eq i32 %330, 0
  br i1 %.not1040, label %.loopexit, label %331

331:                                              ; preds = %329
  %332 = zext i32 %330 to i64
  %333 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %332)
  %334 = zext i32 %333 to i64
  %335 = add nuw nsw i64 %334, 24
  %336 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %335)
  %337 = load i32, ptr %250, align 4, !tbaa !15
  %338 = icmp ult i32 %336, %337
  br i1 %338, label %339, label %.critedge1078, !prof !16

339:                                              ; preds = %331
  %340 = load ptr, ptr %249, align 8, !tbaa !17
  %341 = zext i32 %336 to i64
  %342 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %340, i64 %341
  %343 = getelementptr inbounds i8, ptr %342, i64 8
  %344 = load ptr, ptr %343, align 8, !tbaa !18
  %.not1041 = icmp eq ptr %344, null
  br i1 %.not1041, label %.critedge1078, label %345, !prof !20

345:                                              ; preds = %339
  %346 = load ptr, ptr %342, align 8, !tbaa !22
  %347 = tail call zeroext i1 @func_types_eq(ptr noundef %254, ptr noundef %346)
  br i1 %347, label %348, label %.critedge1078, !prof !16

.critedge1078:                                    ; preds = %339, %331, %345
  tail call void @wasm_rt_trap(i32 noundef 6) #4
  unreachable

348:                                              ; preds = %345
  %349 = load ptr, ptr %249, align 8, !tbaa !17
  %350 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %349, i64 %341
  %351 = getelementptr inbounds i8, ptr %350, i64 8
  %352 = load ptr, ptr %351, align 8, !tbaa !18
  %353 = getelementptr inbounds i8, ptr %350, i64 16
  %354 = load ptr, ptr %353, align 8, !tbaa !23
  tail call void %352(ptr noundef %354, i32 noundef %330, i32 noundef %256) #5
  %355 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %326)
  br label %356

356:                                              ; preds = %348, %.preheader1100
  %.1961 = phi i32 [ %355, %348 ], [ %327, %.preheader1100 ]
  %357 = and i32 %.1961, 16777215
  %358 = add i32 %357, %.2965
  %.not1042 = icmp eq i32 %358, %325
  br i1 %.not1042, label %.loopexit1102, label %.preheader1100

.loopexit1102:                                    ; preds = %356, %320
  %359 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %252)
  %360 = icmp eq i32 %359, %253
  br i1 %360, label %423, label %361

361:                                              ; preds = %.loopexit1102
  %.not1043 = icmp eq i32 %359, 0
  br i1 %.not1043, label %446, label %362

362:                                              ; preds = %361
  %363 = zext i32 %359 to i64
  br label %423

364:                                              ; preds = %265
  %365 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %258)
  %.not1031 = icmp eq i32 %365, 0
  br i1 %.not1031, label %366, label %367

366:                                              ; preds = %364
  tail call void @i32_store(ptr noundef nonnull %7, i64 noundef %260, i32 noundef 0)
  br label %417

367:                                              ; preds = %364
  %368 = icmp eq i32 %259, %365
  br i1 %368, label %369, label %392

369:                                              ; preds = %367
  tail call void @i32_store(ptr noundef nonnull %7, i64 noundef %260, i32 noundef %261)
  %370 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %262)
  %371 = zext i32 %370 to i64
  %372 = add nuw nsw i64 %371, 12
  %373 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %372)
  %374 = load i32, ptr %250, align 4, !tbaa !15
  %375 = icmp ult i32 %373, %374
  br i1 %375, label %376, label %.critedge1080, !prof !16

376:                                              ; preds = %369
  %377 = load ptr, ptr %249, align 8, !tbaa !17
  %378 = zext i32 %373 to i64
  %379 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %377, i64 %378
  %380 = getelementptr inbounds i8, ptr %379, i64 8
  %381 = load ptr, ptr %380, align 8, !tbaa !18
  %.not1033 = icmp eq ptr %381, null
  br i1 %.not1033, label %.critedge1080, label %382, !prof !20

382:                                              ; preds = %376
  %383 = load ptr, ptr %379, align 8, !tbaa !22
  %384 = tail call zeroext i1 @func_types_eq(ptr noundef %254, ptr noundef %383)
  br i1 %384, label %385, label %.critedge1080, !prof !16

.critedge1080:                                    ; preds = %376, %369, %382
  tail call void @wasm_rt_trap(i32 noundef 6) #4
  unreachable

385:                                              ; preds = %382
  %386 = load ptr, ptr %249, align 8, !tbaa !17
  %387 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %386, i64 %378
  %388 = getelementptr inbounds i8, ptr %387, i64 8
  %389 = load ptr, ptr %388, align 8, !tbaa !18
  %390 = getelementptr inbounds i8, ptr %387, i64 16
  %391 = load ptr, ptr %390, align 8, !tbaa !23
  tail call void %389(ptr noundef %391, i32 noundef %259, i32 noundef %261) #5
  br label %417

392:                                              ; preds = %367
  %393 = zext i32 %365 to i64
  %394 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %393)
  %395 = zext i32 %394 to i64
  %396 = add nuw nsw i64 %395, 8
  %397 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %396)
  %398 = load i32, ptr %250, align 4, !tbaa !15
  %399 = icmp ult i32 %397, %398
  br i1 %399, label %400, label %.critedge1082, !prof !16

400:                                              ; preds = %392
  %401 = load ptr, ptr %249, align 8, !tbaa !17
  %402 = zext i32 %397 to i64
  %403 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %401, i64 %402
  %404 = getelementptr inbounds i8, ptr %403, i64 8
  %405 = load ptr, ptr %404, align 8, !tbaa !18
  %.not1032 = icmp eq ptr %405, null
  br i1 %.not1032, label %.critedge1082, label %406, !prof !20

406:                                              ; preds = %400
  %407 = load ptr, ptr %403, align 8, !tbaa !22
  %408 = tail call zeroext i1 @func_types_eq(ptr noundef %251, ptr noundef %407)
  br i1 %408, label %409, label %.critedge1082, !prof !16

.critedge1082:                                    ; preds = %400, %392, %406
  tail call void @wasm_rt_trap(i32 noundef 6) #4
  unreachable

409:                                              ; preds = %406
  %410 = load ptr, ptr %249, align 8, !tbaa !17
  %411 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %410, i64 %402
  %412 = getelementptr inbounds i8, ptr %411, i64 8
  %413 = load ptr, ptr %412, align 8, !tbaa !18
  %414 = getelementptr inbounds i8, ptr %411, i64 16
  %415 = load ptr, ptr %414, align 8, !tbaa !23
  %416 = tail call i32 %413(ptr noundef %415, i32 noundef %365) #5
  tail call void @i32_store(ptr noundef nonnull %7, i64 noundef %260, i32 noundef %416)
  br label %417

417:                                              ; preds = %409, %385, %366
  tail call void @w2c_hermes_void0x20hermes0x3A0x3Avm0x3A0x3AHadesGC0x3A0x3AHeapSegment0x3A0x3AforAllObjs0x3Chermes0x3A0x3Avm0x3A0x3AHadesGC0x3A0x3AforAllObjs0x28std0x3A0x3A_0x5F20x3A0x3Afunction0x3Cvoid0x200x28hermes0x3A0x3Avm0x3A0x3AGCCell0x2A0x290x3E0x20const0x260x290x3A0x3A0x24_00x3E0x28hermes0x3A0x3Avm0x3A0x3AHadesGC0x3A0x3AforAllObjs0x28std0x3A0x3A_0x5F20x3A0x3Afunction0x3Cvoid0x200x28hermes0x3A0x3Avm0x3A0x3AGCCell0x2A0x290x3E0x20const0x260x290x3A0x3A0x24_00x29(ptr noundef %0, i32 noundef %.0958, i32 noundef %261) #5
  %418 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %260)
  %419 = icmp eq i32 %418, %261
  br i1 %419, label %423, label %420

420:                                              ; preds = %417
  %.not1034 = icmp eq i32 %418, 0
  br i1 %.not1034, label %446, label %421

421:                                              ; preds = %420
  %422 = zext i32 %418 to i64
  br label %423

423:                                              ; preds = %417, %.loopexit1102, %421, %362
  %.sink1120 = phi i64 [ %422, %421 ], [ %363, %362 ], [ %257, %.loopexit1102 ], [ %263, %417 ]
  %.sink1119 = phi i32 [ 20, %421 ], [ 20, %362 ], [ 16, %.loopexit1102 ], [ 16, %417 ]
  %.3966 = phi i32 [ %418, %421 ], [ %359, %362 ], [ %253, %.loopexit1102 ], [ %261, %417 ]
  %424 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %.sink1120)
  %425 = add i32 %424, %.sink1119
  %426 = zext i32 %425 to i64
  %427 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %426)
  %428 = load i32, ptr %250, align 4, !tbaa !15
  %429 = icmp ult i32 %427, %428
  br i1 %429, label %430, label %.critedge1084, !prof !16

430:                                              ; preds = %423
  %431 = load ptr, ptr %249, align 8, !tbaa !17
  %432 = zext i32 %427 to i64
  %433 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %431, i64 %432
  %434 = getelementptr inbounds i8, ptr %433, i64 8
  %435 = load ptr, ptr %434, align 8, !tbaa !18
  %.not1044 = icmp eq ptr %435, null
  br i1 %.not1044, label %.critedge1084, label %436, !prof !20

436:                                              ; preds = %430
  %437 = load ptr, ptr %433, align 8, !tbaa !22
  %438 = tail call zeroext i1 @func_types_eq(ptr noundef %264, ptr noundef %437)
  br i1 %438, label %439, label %.critedge1084, !prof !16

.critedge1084:                                    ; preds = %430, %423, %436
  tail call void @wasm_rt_trap(i32 noundef 6) #4
  unreachable

439:                                              ; preds = %436
  %440 = load ptr, ptr %249, align 8, !tbaa !17
  %441 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %440, i64 %432
  %442 = getelementptr inbounds i8, ptr %441, i64 8
  %443 = load ptr, ptr %442, align 8, !tbaa !18
  %444 = getelementptr inbounds i8, ptr %441, i64 16
  %445 = load ptr, ptr %444, align 8, !tbaa !23
  tail call void %443(ptr noundef %445, i32 noundef %.3966) #5
  br label %446

446:                                              ; preds = %420, %361, %439
  %447 = add i32 %.0958, 16
  %448 = zext i32 %.0956 to i64
  %449 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %448)
  %450 = sub i32 %447, %449
  %451 = icmp eq i32 %450, 4096
  br i1 %451, label %452, label %456

452:                                              ; preds = %446
  %453 = add nuw nsw i64 %448, 4
  %454 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %453)
  %455 = add i32 %.0956, 4
  br label %456

456:                                              ; preds = %452, %446
  %.1959 = phi i32 [ %454, %452 ], [ %447, %446 ]
  %.1957 = phi i32 [ %455, %452 ], [ %.0956, %446 ]
  %.not1045 = icmp eq i32 %.1959, %246
  br i1 %.not1045, label %.loopexit1104, label %265

.loopexit1104:                                    ; preds = %456, %225, %219
  %457 = add i32 %1, 4464
  %458 = zext i32 %457 to i64
  %459 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %458)
  %.not1046 = icmp eq i32 %459, 0
  br i1 %.not1046, label %683, label %460

460:                                              ; preds = %.loopexit1104
  %461 = add i32 %1, 4456
  %462 = zext i32 %461 to i64
  %463 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %462)
  %464 = icmp eq i32 %463, 1
  br i1 %464, label %465, label %582

465:                                              ; preds = %460
  %466 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %9)
  %.not1051 = icmp eq i32 %466, 0
  br i1 %.not1051, label %467, label %469

467:                                              ; preds = %465
  %468 = add nuw nsw i64 %.pre, 48
  tail call void @i32_store(ptr noundef nonnull %7, i64 noundef %468, i32 noundef 0)
  br label %528

469:                                              ; preds = %465
  %470 = icmp eq i32 %466, %2
  br i1 %470, label %471, label %499

471:                                              ; preds = %469
  %472 = add i32 %5, -128
  %473 = add nuw nsw i64 %.pre, 48
  tail call void @i32_store(ptr noundef nonnull %7, i64 noundef %473, i32 noundef %472)
  %474 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %8)
  %475 = zext i32 %474 to i64
  %476 = add nuw nsw i64 %475, 12
  %477 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %476)
  %478 = getelementptr inbounds i8, ptr %0, i64 80
  %479 = getelementptr inbounds i8, ptr %0, i64 92
  %480 = load i32, ptr %479, align 4, !tbaa !15
  %481 = icmp ult i32 %477, %480
  br i1 %481, label %482, label %.critedge1086, !prof !16

482:                                              ; preds = %471
  %483 = load ptr, ptr %478, align 8, !tbaa !17
  %484 = zext i32 %477 to i64
  %485 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %483, i64 %484
  %486 = getelementptr inbounds i8, ptr %485, i64 8
  %487 = load ptr, ptr %486, align 8, !tbaa !18
  %.not1053 = icmp eq ptr %487, null
  br i1 %.not1053, label %.critedge1086, label %488, !prof !20

488:                                              ; preds = %482
  %489 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !21
  %490 = load ptr, ptr %485, align 8, !tbaa !22
  %491 = tail call zeroext i1 @func_types_eq(ptr noundef %489, ptr noundef %490)
  br i1 %491, label %492, label %.critedge1086, !prof !16

.critedge1086:                                    ; preds = %482, %471, %488
  tail call void @wasm_rt_trap(i32 noundef 6) #4
  unreachable

492:                                              ; preds = %488
  %493 = load ptr, ptr %478, align 8, !tbaa !17
  %494 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %493, i64 %484
  %495 = getelementptr inbounds i8, ptr %494, i64 8
  %496 = load ptr, ptr %495, align 8, !tbaa !18
  %497 = getelementptr inbounds i8, ptr %494, i64 16
  %498 = load ptr, ptr %497, align 8, !tbaa !23
  tail call void %496(ptr noundef %498, i32 noundef %2, i32 noundef %472) #5
  br label %528

499:                                              ; preds = %469
  %500 = zext i32 %466 to i64
  %501 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %500)
  %502 = zext i32 %501 to i64
  %503 = add nuw nsw i64 %502, 8
  %504 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %503)
  %505 = getelementptr inbounds i8, ptr %0, i64 80
  %506 = getelementptr inbounds i8, ptr %0, i64 92
  %507 = load i32, ptr %506, align 4, !tbaa !15
  %508 = icmp ult i32 %504, %507
  br i1 %508, label %509, label %.critedge1088, !prof !16

509:                                              ; preds = %499
  %510 = load ptr, ptr %505, align 8, !tbaa !17
  %511 = zext i32 %504 to i64
  %512 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %510, i64 %511
  %513 = getelementptr inbounds i8, ptr %512, i64 8
  %514 = load ptr, ptr %513, align 8, !tbaa !18
  %.not1052 = icmp eq ptr %514, null
  br i1 %.not1052, label %.critedge1088, label %515, !prof !20

515:                                              ; preds = %509
  %516 = load ptr, ptr @w2c_hermes_t2, align 8, !tbaa !21
  %517 = load ptr, ptr %512, align 8, !tbaa !22
  %518 = tail call zeroext i1 @func_types_eq(ptr noundef %516, ptr noundef %517)
  br i1 %518, label %519, label %.critedge1088, !prof !16

.critedge1088:                                    ; preds = %509, %499, %515
  tail call void @wasm_rt_trap(i32 noundef 6) #4
  unreachable

519:                                              ; preds = %515
  %520 = load ptr, ptr %505, align 8, !tbaa !17
  %521 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %520, i64 %511
  %522 = getelementptr inbounds i8, ptr %521, i64 8
  %523 = load ptr, ptr %522, align 8, !tbaa !18
  %524 = getelementptr inbounds i8, ptr %521, i64 16
  %525 = load ptr, ptr %524, align 8, !tbaa !23
  %526 = tail call i32 %523(ptr noundef %525, i32 noundef %466) #5
  %527 = add nuw nsw i64 %.pre, 48
  tail call void @i32_store(ptr noundef nonnull %7, i64 noundef %527, i32 noundef %526)
  br label %528

528:                                              ; preds = %519, %492, %467
  %529 = zext i32 %459 to i64
  %530 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %529)
  %531 = add i32 %530, 86016
  %532 = add nuw nsw i64 %529, 8
  %533 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %532)
  %.not1054 = icmp eq i32 %531, %533
  br i1 %.not1054, label %..loopexit1099_crit_edge, label %.preheader

..loopexit1099_crit_edge:                         ; preds = %528
  %.pre1113 = add nuw nsw i64 %.pre, 48
  br label %.loopexit1099

.preheader:                                       ; preds = %528
  %534 = add nuw nsw i64 %.pre, 156
  %535 = add nuw nsw i64 %.pre, 48
  %536 = add i32 %5, -4
  %537 = getelementptr inbounds i8, ptr %0, i64 80
  %538 = getelementptr inbounds i8, ptr %0, i64 92
  %539 = load ptr, ptr @w2c_hermes_t0, align 8
  br label %540

540:                                              ; preds = %.preheader, %571
  %.4 = phi i32 [ %573, %571 ], [ %531, %.preheader ]
  %541 = zext i32 %.4 to i64
  %542 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %541)
  %543 = and i32 %542, -16777216
  %.not1055 = icmp eq i32 %543, 33554432
  br i1 %.not1055, label %571, label %544

544:                                              ; preds = %540
  tail call void @i32_store(ptr noundef nonnull %7, i64 noundef %534, i32 noundef %.4)
  %545 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %535)
  %.not1056 = icmp eq i32 %545, 0
  br i1 %.not1056, label %.loopexit, label %546

546:                                              ; preds = %544
  %547 = zext i32 %545 to i64
  %548 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %547)
  %549 = zext i32 %548 to i64
  %550 = add nuw nsw i64 %549, 24
  %551 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %550)
  %552 = load i32, ptr %538, align 4, !tbaa !15
  %553 = icmp ult i32 %551, %552
  br i1 %553, label %554, label %.critedge1090, !prof !16

554:                                              ; preds = %546
  %555 = load ptr, ptr %537, align 8, !tbaa !17
  %556 = zext i32 %551 to i64
  %557 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %555, i64 %556
  %558 = getelementptr inbounds i8, ptr %557, i64 8
  %559 = load ptr, ptr %558, align 8, !tbaa !18
  %.not1057 = icmp eq ptr %559, null
  br i1 %.not1057, label %.critedge1090, label %560, !prof !20

560:                                              ; preds = %554
  %561 = load ptr, ptr %557, align 8, !tbaa !22
  %562 = tail call zeroext i1 @func_types_eq(ptr noundef %539, ptr noundef %561)
  br i1 %562, label %563, label %.critedge1090, !prof !16

.critedge1090:                                    ; preds = %554, %546, %560
  tail call void @wasm_rt_trap(i32 noundef 6) #4
  unreachable

563:                                              ; preds = %560
  %564 = load ptr, ptr %537, align 8, !tbaa !17
  %565 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %564, i64 %556
  %566 = getelementptr inbounds i8, ptr %565, i64 8
  %567 = load ptr, ptr %566, align 8, !tbaa !18
  %568 = getelementptr inbounds i8, ptr %565, i64 16
  %569 = load ptr, ptr %568, align 8, !tbaa !23
  tail call void %567(ptr noundef %569, i32 noundef %545, i32 noundef %536) #5
  %570 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %541)
  br label %571

571:                                              ; preds = %563, %540
  %.2962 = phi i32 [ %570, %563 ], [ %542, %540 ]
  %572 = and i32 %.2962, 16777215
  %573 = add i32 %572, %.4
  %.not1058 = icmp eq i32 %573, %533
  br i1 %.not1058, label %.loopexit1099, label %540

.loopexit1099:                                    ; preds = %571, %..loopexit1099_crit_edge
  %.pre-phi1114 = phi i64 [ %.pre1113, %..loopexit1099_crit_edge ], [ %535, %571 ]
  %574 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %.pre-phi1114)
  %575 = add i32 %5, -128
  %576 = icmp eq i32 %574, %575
  br i1 %576, label %577, label %579

577:                                              ; preds = %.loopexit1099
  %578 = add nuw nsw i64 %.pre, 32
  br label %657

579:                                              ; preds = %.loopexit1099
  %.not1059 = icmp eq i32 %574, 0
  br i1 %.not1059, label %683, label %580

580:                                              ; preds = %579
  %581 = zext i32 %574 to i64
  br label %657

582:                                              ; preds = %460
  %583 = add nuw nsw i64 %.pre, 120
  %584 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %583)
  %.not1047 = icmp eq i32 %584, 0
  br i1 %.not1047, label %585, label %587

585:                                              ; preds = %582
  %586 = add nuw nsw i64 %.pre, 24
  tail call void @i32_store(ptr noundef nonnull %7, i64 noundef %586, i32 noundef 0)
  br label %648

587:                                              ; preds = %582
  %588 = add i32 %5, -56
  %589 = icmp eq i32 %588, %584
  br i1 %589, label %590, label %619

590:                                              ; preds = %587
  %591 = add i32 %5, -152
  %592 = add nuw nsw i64 %.pre, 24
  tail call void @i32_store(ptr noundef nonnull %7, i64 noundef %592, i32 noundef %591)
  %593 = add nuw nsw i64 %.pre, 104
  %594 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %593)
  %595 = zext i32 %594 to i64
  %596 = add nuw nsw i64 %595, 12
  %597 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %596)
  %598 = getelementptr inbounds i8, ptr %0, i64 80
  %599 = getelementptr inbounds i8, ptr %0, i64 92
  %600 = load i32, ptr %599, align 4, !tbaa !15
  %601 = icmp ult i32 %597, %600
  br i1 %601, label %602, label %.critedge1092, !prof !16

602:                                              ; preds = %590
  %603 = load ptr, ptr %598, align 8, !tbaa !17
  %604 = zext i32 %597 to i64
  %605 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %603, i64 %604
  %606 = getelementptr inbounds i8, ptr %605, i64 8
  %607 = load ptr, ptr %606, align 8, !tbaa !18
  %.not1049 = icmp eq ptr %607, null
  br i1 %.not1049, label %.critedge1092, label %608, !prof !20

608:                                              ; preds = %602
  %609 = load ptr, ptr @w2c_hermes_t0, align 8, !tbaa !21
  %610 = load ptr, ptr %605, align 8, !tbaa !22
  %611 = tail call zeroext i1 @func_types_eq(ptr noundef %609, ptr noundef %610)
  br i1 %611, label %612, label %.critedge1092, !prof !16

.critedge1092:                                    ; preds = %602, %590, %608
  tail call void @wasm_rt_trap(i32 noundef 6) #4
  unreachable

612:                                              ; preds = %608
  %613 = load ptr, ptr %598, align 8, !tbaa !17
  %614 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %613, i64 %604
  %615 = getelementptr inbounds i8, ptr %614, i64 8
  %616 = load ptr, ptr %615, align 8, !tbaa !18
  %617 = getelementptr inbounds i8, ptr %614, i64 16
  %618 = load ptr, ptr %617, align 8, !tbaa !23
  tail call void %616(ptr noundef %618, i32 noundef %588, i32 noundef %591) #5
  br label %648

619:                                              ; preds = %587
  %620 = zext i32 %584 to i64
  %621 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %620)
  %622 = zext i32 %621 to i64
  %623 = add nuw nsw i64 %622, 8
  %624 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %623)
  %625 = getelementptr inbounds i8, ptr %0, i64 80
  %626 = getelementptr inbounds i8, ptr %0, i64 92
  %627 = load i32, ptr %626, align 4, !tbaa !15
  %628 = icmp ult i32 %624, %627
  br i1 %628, label %629, label %.critedge1094, !prof !16

629:                                              ; preds = %619
  %630 = load ptr, ptr %625, align 8, !tbaa !17
  %631 = zext i32 %624 to i64
  %632 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %630, i64 %631
  %633 = getelementptr inbounds i8, ptr %632, i64 8
  %634 = load ptr, ptr %633, align 8, !tbaa !18
  %.not1048 = icmp eq ptr %634, null
  br i1 %.not1048, label %.critedge1094, label %635, !prof !20

635:                                              ; preds = %629
  %636 = load ptr, ptr @w2c_hermes_t2, align 8, !tbaa !21
  %637 = load ptr, ptr %632, align 8, !tbaa !22
  %638 = tail call zeroext i1 @func_types_eq(ptr noundef %636, ptr noundef %637)
  br i1 %638, label %639, label %.critedge1094, !prof !16

.critedge1094:                                    ; preds = %629, %619, %635
  tail call void @wasm_rt_trap(i32 noundef 6) #4
  unreachable

639:                                              ; preds = %635
  %640 = load ptr, ptr %625, align 8, !tbaa !17
  %641 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %640, i64 %631
  %642 = getelementptr inbounds i8, ptr %641, i64 8
  %643 = load ptr, ptr %642, align 8, !tbaa !18
  %644 = getelementptr inbounds i8, ptr %641, i64 16
  %645 = load ptr, ptr %644, align 8, !tbaa !23
  %646 = tail call i32 %643(ptr noundef %645, i32 noundef %584) #5
  %647 = add nuw nsw i64 %.pre, 24
  tail call void @i32_store(ptr noundef nonnull %7, i64 noundef %647, i32 noundef %646)
  br label %648

648:                                              ; preds = %639, %612, %585
  %.pre-phi = phi i64 [ %647, %639 ], [ %592, %612 ], [ %586, %585 ]
  %649 = add i32 %5, -152
  tail call void @w2c_hermes_void0x20hermes0x3A0x3Avm0x3A0x3AHadesGC0x3A0x3AHeapSegment0x3A0x3AforAllObjs0x3Chermes0x3A0x3Avm0x3A0x3AHadesGC0x3A0x3AforAllObjs0x28std0x3A0x3A_0x5F20x3A0x3Afunction0x3Cvoid0x200x28hermes0x3A0x3Avm0x3A0x3AGCCell0x2A0x290x3E0x20const0x260x290x3A0x3A0x24_00x3E0x28hermes0x3A0x3Avm0x3A0x3AHadesGC0x3A0x3AforAllObjs0x28std0x3A0x3A_0x5F20x3A0x3Afunction0x3Cvoid0x200x28hermes0x3A0x3Avm0x3A0x3AGCCell0x2A0x290x3E0x20const0x260x290x3A0x3A0x24_00x29(ptr noundef %0, i32 noundef %459, i32 noundef %649) #5
  %650 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %.pre-phi)
  %651 = icmp eq i32 %650, %649
  br i1 %651, label %652, label %654

652:                                              ; preds = %648
  %653 = add nuw nsw i64 %.pre, 8
  br label %657

654:                                              ; preds = %648
  %.not1050 = icmp eq i32 %650, 0
  br i1 %.not1050, label %683, label %655

655:                                              ; preds = %654
  %656 = zext i32 %650 to i64
  br label %657

657:                                              ; preds = %655, %652, %580, %577
  %.sink1122 = phi i64 [ %656, %655 ], [ %653, %652 ], [ %581, %580 ], [ %578, %577 ]
  %.sink1121 = phi i32 [ 20, %655 ], [ 16, %652 ], [ 20, %580 ], [ 16, %577 ]
  %.5 = phi i32 [ %650, %655 ], [ %649, %652 ], [ %574, %580 ], [ %575, %577 ]
  %658 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %.sink1122)
  %659 = add i32 %658, %.sink1121
  %660 = zext i32 %659 to i64
  %661 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %660)
  %662 = getelementptr inbounds i8, ptr %0, i64 80
  %663 = getelementptr inbounds i8, ptr %0, i64 92
  %664 = load i32, ptr %663, align 4, !tbaa !15
  %665 = icmp ult i32 %661, %664
  br i1 %665, label %666, label %.critedge1096, !prof !16

666:                                              ; preds = %657
  %667 = load ptr, ptr %662, align 8, !tbaa !17
  %668 = zext i32 %661 to i64
  %669 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %667, i64 %668
  %670 = getelementptr inbounds i8, ptr %669, i64 8
  %671 = load ptr, ptr %670, align 8, !tbaa !18
  %.not1060 = icmp eq ptr %671, null
  br i1 %.not1060, label %.critedge1096, label %672, !prof !20

672:                                              ; preds = %666
  %673 = load ptr, ptr @w2c_hermes_t3, align 8, !tbaa !21
  %674 = load ptr, ptr %669, align 8, !tbaa !22
  %675 = tail call zeroext i1 @func_types_eq(ptr noundef %673, ptr noundef %674)
  br i1 %675, label %676, label %.critedge1096, !prof !16

.critedge1096:                                    ; preds = %666, %657, %672
  tail call void @wasm_rt_trap(i32 noundef 6) #4
  unreachable

676:                                              ; preds = %672
  %677 = load ptr, ptr %662, align 8, !tbaa !17
  %678 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %677, i64 %668
  %679 = getelementptr inbounds i8, ptr %678, i64 8
  %680 = load ptr, ptr %679, align 8, !tbaa !18
  %681 = getelementptr inbounds i8, ptr %678, i64 16
  %682 = load ptr, ptr %681, align 8, !tbaa !23
  tail call void %680(ptr noundef %682, i32 noundef %.5) #5
  br label %683

683:                                              ; preds = %654, %579, %.loopexit1104, %676
  %684 = add nuw nsw i64 %.pre, 120
  %685 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %684)
  %686 = add i32 %5, -56
  %687 = icmp eq i32 %685, %686
  br i1 %687, label %688, label %690

688:                                              ; preds = %683
  %689 = add nuw nsw i64 %.pre, 104
  br label %693

690:                                              ; preds = %683
  %.not1061 = icmp eq i32 %685, 0
  br i1 %.not1061, label %719, label %691

691:                                              ; preds = %690
  %692 = zext i32 %685 to i64
  br label %693

693:                                              ; preds = %691, %688
  %.sink1124 = phi i64 [ %692, %691 ], [ %689, %688 ]
  %.sink1123 = phi i32 [ 20, %691 ], [ 16, %688 ]
  %.6 = phi i32 [ %685, %691 ], [ %686, %688 ]
  %694 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %.sink1124)
  %695 = add i32 %694, %.sink1123
  %696 = zext i32 %695 to i64
  %697 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %696)
  %698 = getelementptr inbounds i8, ptr %0, i64 80
  %699 = getelementptr inbounds i8, ptr %0, i64 92
  %700 = load i32, ptr %699, align 4, !tbaa !15
  %701 = icmp ult i32 %697, %700
  br i1 %701, label %702, label %.critedge1098, !prof !16

702:                                              ; preds = %693
  %703 = load ptr, ptr %698, align 8, !tbaa !17
  %704 = zext i32 %697 to i64
  %705 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %703, i64 %704
  %706 = getelementptr inbounds i8, ptr %705, i64 8
  %707 = load ptr, ptr %706, align 8, !tbaa !18
  %.not1062 = icmp eq ptr %707, null
  br i1 %.not1062, label %.critedge1098, label %708, !prof !20

708:                                              ; preds = %702
  %709 = load ptr, ptr @w2c_hermes_t3, align 8, !tbaa !21
  %710 = load ptr, ptr %705, align 8, !tbaa !22
  %711 = tail call zeroext i1 @func_types_eq(ptr noundef %709, ptr noundef %710)
  br i1 %711, label %712, label %.critedge1098, !prof !16

.critedge1098:                                    ; preds = %702, %693, %708
  tail call void @wasm_rt_trap(i32 noundef 6) #4
  unreachable

712:                                              ; preds = %708
  %713 = load ptr, ptr %698, align 8, !tbaa !17
  %714 = getelementptr inbounds %struct.wasm_rt_funcref_t, ptr %713, i64 %704
  %715 = getelementptr inbounds i8, ptr %714, i64 8
  %716 = load ptr, ptr %715, align 8, !tbaa !18
  %717 = getelementptr inbounds i8, ptr %714, i64 16
  %718 = load ptr, ptr %717, align 8, !tbaa !23
  tail call void %716(ptr noundef %718, i32 noundef %.6) #5
  br label %719

719:                                              ; preds = %690, %712
  store i32 %5, ptr %4, align 8, !tbaa !5
  ret void

.loopexit:                                        ; preds = %92, %329, %544
  tail call void @w2c_hermes_std0x3A0x3A_0x5F20x3A0x3A_0x5Fthrow_bad_function_call0x5Babi0x3Av150070x5D0x280x29(ptr noundef %0) #5
  tail call void @wasm_rt_trap(i32 noundef 5) #4
  unreachable
}

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

attributes #0 = { 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 #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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { noreturn nounwind }
attributes #5 = { 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 24}
!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 = !{!6, !10, i64 92}
!16 = !{!"branch_weights", !"expected", i32 2000, i32 1}
!17 = !{!6, !7, i64 80}
!18 = !{!19, !7, i64 8}
!19 = !{!"", !7, i64 0, !7, i64 8, !7, i64 16}
!20 = !{!"branch_weights", !"expected", i32 1, i32 2000}
!21 = !{!7, !7, i64 0}
!22 = !{!19, !7, i64 0}
!23 = !{!19, !7, i64 16}


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