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

; 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: inlinehint nounwind uwtable
declare hidden void @i32_store(ptr noundef, i64 noundef, i32 noundef) #1

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @w2c_hermes_hermes0x3A0x3Avm0x3A0x3AGCBase0x3A0x3ArecordGCStats0x28hermes0x3A0x3Avm0x3A0x3AGCAnalyticsEvent0x20const0x260x2C0x20hermes0x3A0x3Avm0x3A0x3AGCBase0x3A0x3ACumulativeHeapStats0x2A0x2C0x20bool0x29(ptr noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4) #2 {
  %6 = alloca ptr, align 8
  %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 i64, align 8
  %14 = alloca i64, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  store ptr %0, ptr %6, align 8, !tbaa !5
  store i32 %1, ptr %7, align 4, !tbaa !9
  store i32 %2, ptr %8, align 4, !tbaa !9
  store i32 %3, ptr %9, align 4, !tbaa !9
  store i32 %4, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #3
  store i32 0, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #3
  store i32 0, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #3
  store i64 0, ptr %13, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #3
  store i64 0, ptr %14, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #3
  store double 0.000000e+00, ptr %15, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #3
  store double 0.000000e+00, ptr %16, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #3
  %30 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %30, ptr %17, align 4, !tbaa !9
  %31 = load i32, ptr %17, align 4, !tbaa !9
  %32 = icmp ne i32 %31, 0
  br i1 %32, label %33, label %197

33:                                               ; preds = %5
  %34 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %34, ptr %17, align 4, !tbaa !9
  %35 = load ptr, ptr %6, align 8, !tbaa !5
  %36 = getelementptr inbounds %struct.w2c_hermes, ptr %35, i32 0, i32 6
  %37 = load i32, ptr %17, align 4, !tbaa !9
  %38 = zext i32 %37 to i64
  %39 = add i64 %38, 48
  %40 = call i64 @i64_load(ptr noundef %36, i64 noundef %39)
  store i64 %40, ptr %22, align 8, !tbaa !11
  %41 = load i64, ptr %22, align 8, !tbaa !11
  %42 = sitofp i64 %41 to double
  store double %42, ptr %25, align 8, !tbaa !13
  store double 1.000000e+03, ptr %26, align 8, !tbaa !13
  %43 = load double, ptr %26, align 8, !tbaa !13
  %44 = load double, ptr %25, align 8, !tbaa !13
  %45 = fdiv double %44, %43
  store double %45, ptr %25, align 8, !tbaa !13
  %46 = load double, ptr %25, align 8, !tbaa !13
  store double %46, ptr %15, align 8, !tbaa !13
  %47 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %47, ptr %17, align 4, !tbaa !9
  %48 = load ptr, ptr %6, align 8, !tbaa !5
  %49 = getelementptr inbounds %struct.w2c_hermes, ptr %48, i32 0, i32 6
  %50 = load i32, ptr %17, align 4, !tbaa !9
  %51 = zext i32 %50 to i64
  %52 = add i64 %51, 8
  %53 = call i32 @i32_load(ptr noundef %49, i64 noundef %52)
  store i32 %53, ptr %17, align 4, !tbaa !9
  %54 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %54, ptr %10, align 4, !tbaa !9
  %55 = load i32, ptr %17, align 4, !tbaa !9
  %56 = icmp ne i32 %55, 0
  %57 = xor i1 %56, true
  %58 = zext i1 %57 to i32
  store i32 %58, ptr %17, align 4, !tbaa !9
  %59 = load i32, ptr %17, align 4, !tbaa !9
  %60 = icmp ne i32 %59, 0
  br i1 %60, label %61, label %78

61:                                               ; preds = %33
  %62 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %62, ptr %17, align 4, !tbaa !9
  %63 = load double, ptr %15, align 8, !tbaa !13
  store double %63, ptr %26, align 8, !tbaa !13
  %64 = load ptr, ptr %6, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.w2c_hermes, ptr %64, i32 0, i32 6
  %66 = load i32, ptr %17, align 4, !tbaa !9
  %67 = zext i32 %66 to i64
  %68 = add i64 %67, 24
  %69 = load double, ptr %26, align 8, !tbaa !13
  call void @f64_store(ptr noundef %65, i64 noundef %68, double noundef %69)
  %70 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %70, ptr %17, align 4, !tbaa !9
  %71 = load double, ptr %15, align 8, !tbaa !13
  store double %71, ptr %26, align 8, !tbaa !13
  %72 = load ptr, ptr %6, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct.w2c_hermes, ptr %72, i32 0, i32 6
  %74 = load i32, ptr %17, align 4, !tbaa !9
  %75 = zext i32 %74 to i64
  %76 = add i64 %75, 32
  %77 = load double, ptr %26, align 8, !tbaa !13
  call void @f64_store(ptr noundef %73, i64 noundef %76, double noundef %77)
  br label %141

78:                                               ; preds = %33
  %79 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %79, ptr %17, align 4, !tbaa !9
  %80 = load double, ptr %15, align 8, !tbaa !13
  store double %80, ptr %26, align 8, !tbaa !13
  %81 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %81, ptr %19, align 4, !tbaa !9
  %82 = load ptr, ptr %6, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.w2c_hermes, ptr %82, i32 0, i32 6
  %84 = load i32, ptr %19, align 4, !tbaa !9
  %85 = zext i32 %84 to i64
  %86 = add i64 %85, 24
  %87 = call double @f64_load(ptr noundef %83, i64 noundef %86)
  store double %87, ptr %27, align 8, !tbaa !13
  %88 = load double, ptr %27, align 8, !tbaa !13
  store double %88, ptr %16, align 8, !tbaa !13
  %89 = load double, ptr %15, align 8, !tbaa !13
  store double %89, ptr %28, align 8, !tbaa !13
  %90 = load double, ptr %16, align 8, !tbaa !13
  store double %90, ptr %29, align 8, !tbaa !13
  %91 = load double, ptr %28, align 8, !tbaa !13
  %92 = load double, ptr %29, align 8, !tbaa !13
  %93 = fcmp olt double %91, %92
  %94 = zext i1 %93 to i32
  store i32 %94, ptr %20, align 4, !tbaa !9
  %95 = load i32, ptr %20, align 4, !tbaa !9
  %96 = icmp ne i32 %95, 0
  br i1 %96, label %97, label %99

97:                                               ; preds = %78
  %98 = load double, ptr %26, align 8, !tbaa !13
  br label %101

99:                                               ; preds = %78
  %100 = load double, ptr %27, align 8, !tbaa !13
  br label %101

101:                                              ; preds = %99, %97
  %102 = phi double [ %98, %97 ], [ %100, %99 ]
  store double %102, ptr %26, align 8, !tbaa !13
  %103 = load ptr, ptr %6, align 8, !tbaa !5
  %104 = getelementptr inbounds %struct.w2c_hermes, ptr %103, i32 0, i32 6
  %105 = load i32, ptr %17, align 4, !tbaa !9
  %106 = zext i32 %105 to i64
  %107 = add i64 %106, 24
  %108 = load double, ptr %26, align 8, !tbaa !13
  call void @f64_store(ptr noundef %104, i64 noundef %107, double noundef %108)
  %109 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %109, ptr %17, align 4, !tbaa !9
  store i32 32, ptr %18, align 4, !tbaa !9
  %110 = load i32, ptr %18, align 4, !tbaa !9
  %111 = load i32, ptr %17, align 4, !tbaa !9
  %112 = add i32 %111, %110
  store i32 %112, ptr %17, align 4, !tbaa !9
  %113 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %113, ptr %11, align 4, !tbaa !9
  %114 = load double, ptr %15, align 8, !tbaa !13
  store double %114, ptr %26, align 8, !tbaa !13
  %115 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %115, ptr %19, align 4, !tbaa !9
  %116 = load ptr, ptr %6, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct.w2c_hermes, ptr %116, i32 0, i32 6
  %118 = load i32, ptr %19, align 4, !tbaa !9
  %119 = zext i32 %118 to i64
  %120 = call double @f64_load(ptr noundef %117, i64 noundef %119)
  store double %120, ptr %27, align 8, !tbaa !13
  %121 = load double, ptr %27, align 8, !tbaa !13
  store double %121, ptr %16, align 8, !tbaa !13
  %122 = load double, ptr %15, align 8, !tbaa !13
  store double %122, ptr %28, align 8, !tbaa !13
  %123 = load double, ptr %16, align 8, !tbaa !13
  store double %123, ptr %29, align 8, !tbaa !13
  %124 = load double, ptr %28, align 8, !tbaa !13
  %125 = load double, ptr %29, align 8, !tbaa !13
  %126 = fcmp ogt double %124, %125
  %127 = zext i1 %126 to i32
  store i32 %127, ptr %20, align 4, !tbaa !9
  %128 = load i32, ptr %20, align 4, !tbaa !9
  %129 = icmp ne i32 %128, 0
  br i1 %129, label %130, label %132

130:                                              ; preds = %101
  %131 = load double, ptr %26, align 8, !tbaa !13
  br label %134

132:                                              ; preds = %101
  %133 = load double, ptr %27, align 8, !tbaa !13
  br label %134

134:                                              ; preds = %132, %130
  %135 = phi double [ %131, %130 ], [ %133, %132 ]
  store double %135, ptr %26, align 8, !tbaa !13
  %136 = load ptr, ptr %6, align 8, !tbaa !5
  %137 = getelementptr inbounds %struct.w2c_hermes, ptr %136, i32 0, i32 6
  %138 = load i32, ptr %17, align 4, !tbaa !9
  %139 = zext i32 %138 to i64
  %140 = load double, ptr %26, align 8, !tbaa !13
  call void @f64_store(ptr noundef %137, i64 noundef %139, double noundef %140)
  br label %141

141:                                              ; preds = %134, %61
  %142 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %142, ptr %17, align 4, !tbaa !9
  %143 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %143, ptr %18, align 4, !tbaa !9
  store i32 1, ptr %19, align 4, !tbaa !9
  %144 = load i32, ptr %19, align 4, !tbaa !9
  %145 = load i32, ptr %18, align 4, !tbaa !9
  %146 = add i32 %145, %144
  store i32 %146, ptr %18, align 4, !tbaa !9
  %147 = load ptr, ptr %6, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.w2c_hermes, ptr %147, i32 0, i32 6
  %149 = load i32, ptr %17, align 4, !tbaa !9
  %150 = zext i32 %149 to i64
  %151 = add i64 %150, 8
  %152 = load i32, ptr %18, align 4, !tbaa !9
  call void @i32_store(ptr noundef %148, i64 noundef %151, i32 noundef %152)
  %153 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %153, ptr %17, align 4, !tbaa !9
  store i32 16, ptr %18, align 4, !tbaa !9
  %154 = load i32, ptr %18, align 4, !tbaa !9
  %155 = load i32, ptr %17, align 4, !tbaa !9
  %156 = add i32 %155, %154
  store i32 %156, ptr %17, align 4, !tbaa !9
  %157 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %157, ptr %10, align 4, !tbaa !9
  %158 = load double, ptr %15, align 8, !tbaa !13
  store double %158, ptr %26, align 8, !tbaa !13
  %159 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %159, ptr %19, align 4, !tbaa !9
  %160 = load ptr, ptr %6, align 8, !tbaa !5
  %161 = getelementptr inbounds %struct.w2c_hermes, ptr %160, i32 0, i32 6
  %162 = load i32, ptr %19, align 4, !tbaa !9
  %163 = zext i32 %162 to i64
  %164 = call double @f64_load(ptr noundef %161, i64 noundef %163)
  store double %164, ptr %27, align 8, !tbaa !13
  %165 = load double, ptr %27, align 8, !tbaa !13
  %166 = load double, ptr %26, align 8, !tbaa !13
  %167 = fadd double %166, %165
  store double %167, ptr %26, align 8, !tbaa !13
  %168 = load ptr, ptr %6, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.w2c_hermes, ptr %168, i32 0, i32 6
  %170 = load i32, ptr %17, align 4, !tbaa !9
  %171 = zext i32 %170 to i64
  %172 = load double, ptr %26, align 8, !tbaa !13
  call void @f64_store(ptr noundef %169, i64 noundef %171, double noundef %172)
  %173 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %173, ptr %17, align 4, !tbaa !9
  store i32 40, ptr %18, align 4, !tbaa !9
  %174 = load i32, ptr %18, align 4, !tbaa !9
  %175 = load i32, ptr %17, align 4, !tbaa !9
  %176 = add i32 %175, %174
  store i32 %176, ptr %17, align 4, !tbaa !9
  %177 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %177, ptr %10, align 4, !tbaa !9
  %178 = load double, ptr %15, align 8, !tbaa !13
  store double %178, ptr %26, align 8, !tbaa !13
  %179 = load double, ptr %15, align 8, !tbaa !13
  store double %179, ptr %27, align 8, !tbaa !13
  %180 = load double, ptr %27, align 8, !tbaa !13
  %181 = load double, ptr %26, align 8, !tbaa !13
  %182 = fmul double %181, %180
  store double %182, ptr %26, align 8, !tbaa !13
  %183 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %183, ptr %19, align 4, !tbaa !9
  %184 = load ptr, ptr %6, align 8, !tbaa !5
  %185 = getelementptr inbounds %struct.w2c_hermes, ptr %184, i32 0, i32 6
  %186 = load i32, ptr %19, align 4, !tbaa !9
  %187 = zext i32 %186 to i64
  %188 = call double @f64_load(ptr noundef %185, i64 noundef %187)
  store double %188, ptr %27, align 8, !tbaa !13
  %189 = load double, ptr %27, align 8, !tbaa !13
  %190 = load double, ptr %26, align 8, !tbaa !13
  %191 = fadd double %190, %189
  store double %191, ptr %26, align 8, !tbaa !13
  %192 = load ptr, ptr %6, align 8, !tbaa !5
  %193 = getelementptr inbounds %struct.w2c_hermes, ptr %192, i32 0, i32 6
  %194 = load i32, ptr %17, align 4, !tbaa !9
  %195 = zext i32 %194 to i64
  %196 = load double, ptr %26, align 8, !tbaa !13
  call void @f64_store(ptr noundef %193, i64 noundef %195, double noundef %196)
  br label %197

197:                                              ; preds = %141, %5
  %198 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %198, ptr %17, align 4, !tbaa !9
  %199 = load ptr, ptr %6, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.w2c_hermes, ptr %199, i32 0, i32 6
  %201 = load i32, ptr %17, align 4, !tbaa !9
  %202 = zext i32 %201 to i64
  %203 = add i64 %202, 56
  %204 = call i64 @i64_load(ptr noundef %200, i64 noundef %203)
  store i64 %204, ptr %22, align 8, !tbaa !11
  %205 = load i64, ptr %22, align 8, !tbaa !11
  %206 = sitofp i64 %205 to double
  store double %206, ptr %25, align 8, !tbaa !13
  store double 1.000000e+03, ptr %26, align 8, !tbaa !13
  %207 = load double, ptr %26, align 8, !tbaa !13
  %208 = load double, ptr %25, align 8, !tbaa !13
  %209 = fdiv double %208, %207
  store double %209, ptr %25, align 8, !tbaa !13
  %210 = load double, ptr %25, align 8, !tbaa !13
  store double %210, ptr %15, align 8, !tbaa !13
  %211 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %211, ptr %17, align 4, !tbaa !9
  %212 = load ptr, ptr %6, align 8, !tbaa !5
  %213 = getelementptr inbounds %struct.w2c_hermes, ptr %212, i32 0, i32 6
  %214 = load i32, ptr %17, align 4, !tbaa !9
  %215 = zext i32 %214 to i64
  %216 = add i64 %215, 48
  %217 = call i32 @i32_load(ptr noundef %213, i64 noundef %216)
  store i32 %217, ptr %17, align 4, !tbaa !9
  %218 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %218, ptr %10, align 4, !tbaa !9
  %219 = load i32, ptr %17, align 4, !tbaa !9
  %220 = icmp ne i32 %219, 0
  %221 = xor i1 %220, true
  %222 = zext i1 %221 to i32
  store i32 %222, ptr %17, align 4, !tbaa !9
  %223 = load i32, ptr %17, align 4, !tbaa !9
  %224 = icmp ne i32 %223, 0
  br i1 %224, label %225, label %242

225:                                              ; preds = %197
  %226 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %226, ptr %17, align 4, !tbaa !9
  %227 = load double, ptr %15, align 8, !tbaa !13
  store double %227, ptr %26, align 8, !tbaa !13
  %228 = load ptr, ptr %6, align 8, !tbaa !5
  %229 = getelementptr inbounds %struct.w2c_hermes, ptr %228, i32 0, i32 6
  %230 = load i32, ptr %17, align 4, !tbaa !9
  %231 = zext i32 %230 to i64
  %232 = add i64 %231, 64
  %233 = load double, ptr %26, align 8, !tbaa !13
  call void @f64_store(ptr noundef %229, i64 noundef %232, double noundef %233)
  %234 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %234, ptr %17, align 4, !tbaa !9
  %235 = load double, ptr %15, align 8, !tbaa !13
  store double %235, ptr %26, align 8, !tbaa !13
  %236 = load ptr, ptr %6, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.w2c_hermes, ptr %236, i32 0, i32 6
  %238 = load i32, ptr %17, align 4, !tbaa !9
  %239 = zext i32 %238 to i64
  %240 = add i64 %239, 72
  %241 = load double, ptr %26, align 8, !tbaa !13
  call void @f64_store(ptr noundef %237, i64 noundef %240, double noundef %241)
  br label %305

242:                                              ; preds = %197
  %243 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %243, ptr %17, align 4, !tbaa !9
  %244 = load double, ptr %15, align 8, !tbaa !13
  store double %244, ptr %26, align 8, !tbaa !13
  %245 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %245, ptr %19, align 4, !tbaa !9
  %246 = load ptr, ptr %6, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.w2c_hermes, ptr %246, i32 0, i32 6
  %248 = load i32, ptr %19, align 4, !tbaa !9
  %249 = zext i32 %248 to i64
  %250 = add i64 %249, 64
  %251 = call double @f64_load(ptr noundef %247, i64 noundef %250)
  store double %251, ptr %27, align 8, !tbaa !13
  %252 = load double, ptr %27, align 8, !tbaa !13
  store double %252, ptr %16, align 8, !tbaa !13
  %253 = load double, ptr %15, align 8, !tbaa !13
  store double %253, ptr %28, align 8, !tbaa !13
  %254 = load double, ptr %16, align 8, !tbaa !13
  store double %254, ptr %29, align 8, !tbaa !13
  %255 = load double, ptr %28, align 8, !tbaa !13
  %256 = load double, ptr %29, align 8, !tbaa !13
  %257 = fcmp olt double %255, %256
  %258 = zext i1 %257 to i32
  store i32 %258, ptr %20, align 4, !tbaa !9
  %259 = load i32, ptr %20, align 4, !tbaa !9
  %260 = icmp ne i32 %259, 0
  br i1 %260, label %261, label %263

261:                                              ; preds = %242
  %262 = load double, ptr %26, align 8, !tbaa !13
  br label %265

263:                                              ; preds = %242
  %264 = load double, ptr %27, align 8, !tbaa !13
  br label %265

265:                                              ; preds = %263, %261
  %266 = phi double [ %262, %261 ], [ %264, %263 ]
  store double %266, ptr %26, align 8, !tbaa !13
  %267 = load ptr, ptr %6, align 8, !tbaa !5
  %268 = getelementptr inbounds %struct.w2c_hermes, ptr %267, i32 0, i32 6
  %269 = load i32, ptr %17, align 4, !tbaa !9
  %270 = zext i32 %269 to i64
  %271 = add i64 %270, 64
  %272 = load double, ptr %26, align 8, !tbaa !13
  call void @f64_store(ptr noundef %268, i64 noundef %271, double noundef %272)
  %273 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %273, ptr %17, align 4, !tbaa !9
  store i32 72, ptr %18, align 4, !tbaa !9
  %274 = load i32, ptr %18, align 4, !tbaa !9
  %275 = load i32, ptr %17, align 4, !tbaa !9
  %276 = add i32 %275, %274
  store i32 %276, ptr %17, align 4, !tbaa !9
  %277 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %277, ptr %11, align 4, !tbaa !9
  %278 = load double, ptr %15, align 8, !tbaa !13
  store double %278, ptr %26, align 8, !tbaa !13
  %279 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %279, ptr %19, align 4, !tbaa !9
  %280 = load ptr, ptr %6, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.w2c_hermes, ptr %280, i32 0, i32 6
  %282 = load i32, ptr %19, align 4, !tbaa !9
  %283 = zext i32 %282 to i64
  %284 = call double @f64_load(ptr noundef %281, i64 noundef %283)
  store double %284, ptr %27, align 8, !tbaa !13
  %285 = load double, ptr %27, align 8, !tbaa !13
  store double %285, ptr %16, align 8, !tbaa !13
  %286 = load double, ptr %15, align 8, !tbaa !13
  store double %286, ptr %28, align 8, !tbaa !13
  %287 = load double, ptr %16, align 8, !tbaa !13
  store double %287, ptr %29, align 8, !tbaa !13
  %288 = load double, ptr %28, align 8, !tbaa !13
  %289 = load double, ptr %29, align 8, !tbaa !13
  %290 = fcmp ogt double %288, %289
  %291 = zext i1 %290 to i32
  store i32 %291, ptr %20, align 4, !tbaa !9
  %292 = load i32, ptr %20, align 4, !tbaa !9
  %293 = icmp ne i32 %292, 0
  br i1 %293, label %294, label %296

294:                                              ; preds = %265
  %295 = load double, ptr %26, align 8, !tbaa !13
  br label %298

296:                                              ; preds = %265
  %297 = load double, ptr %27, align 8, !tbaa !13
  br label %298

298:                                              ; preds = %296, %294
  %299 = phi double [ %295, %294 ], [ %297, %296 ]
  store double %299, ptr %26, align 8, !tbaa !13
  %300 = load ptr, ptr %6, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.w2c_hermes, ptr %300, i32 0, i32 6
  %302 = load i32, ptr %17, align 4, !tbaa !9
  %303 = zext i32 %302 to i64
  %304 = load double, ptr %26, align 8, !tbaa !13
  call void @f64_store(ptr noundef %301, i64 noundef %303, double noundef %304)
  br label %305

305:                                              ; preds = %298, %225
  %306 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %306, ptr %17, align 4, !tbaa !9
  %307 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %307, ptr %18, align 4, !tbaa !9
  store i32 1, ptr %19, align 4, !tbaa !9
  %308 = load i32, ptr %19, align 4, !tbaa !9
  %309 = load i32, ptr %18, align 4, !tbaa !9
  %310 = add i32 %309, %308
  store i32 %310, ptr %18, align 4, !tbaa !9
  %311 = load ptr, ptr %6, align 8, !tbaa !5
  %312 = getelementptr inbounds %struct.w2c_hermes, ptr %311, i32 0, i32 6
  %313 = load i32, ptr %17, align 4, !tbaa !9
  %314 = zext i32 %313 to i64
  %315 = add i64 %314, 48
  %316 = load i32, ptr %18, align 4, !tbaa !9
  call void @i32_store(ptr noundef %312, i64 noundef %315, i32 noundef %316)
  %317 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %317, ptr %17, align 4, !tbaa !9
  store i32 56, ptr %18, align 4, !tbaa !9
  %318 = load i32, ptr %18, align 4, !tbaa !9
  %319 = load i32, ptr %17, align 4, !tbaa !9
  %320 = add i32 %319, %318
  store i32 %320, ptr %17, align 4, !tbaa !9
  %321 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %321, ptr %10, align 4, !tbaa !9
  %322 = load double, ptr %15, align 8, !tbaa !13
  store double %322, ptr %26, align 8, !tbaa !13
  %323 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %323, ptr %19, align 4, !tbaa !9
  %324 = load ptr, ptr %6, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.w2c_hermes, ptr %324, i32 0, i32 6
  %326 = load i32, ptr %19, align 4, !tbaa !9
  %327 = zext i32 %326 to i64
  %328 = call double @f64_load(ptr noundef %325, i64 noundef %327)
  store double %328, ptr %27, align 8, !tbaa !13
  %329 = load double, ptr %27, align 8, !tbaa !13
  %330 = load double, ptr %26, align 8, !tbaa !13
  %331 = fadd double %330, %329
  store double %331, ptr %26, align 8, !tbaa !13
  %332 = load ptr, ptr %6, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.w2c_hermes, ptr %332, i32 0, i32 6
  %334 = load i32, ptr %17, align 4, !tbaa !9
  %335 = zext i32 %334 to i64
  %336 = load double, ptr %26, align 8, !tbaa !13
  call void @f64_store(ptr noundef %333, i64 noundef %335, double noundef %336)
  %337 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %337, ptr %17, align 4, !tbaa !9
  store i32 80, ptr %18, align 4, !tbaa !9
  %338 = load i32, ptr %18, align 4, !tbaa !9
  %339 = load i32, ptr %17, align 4, !tbaa !9
  %340 = add i32 %339, %338
  store i32 %340, ptr %17, align 4, !tbaa !9
  %341 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %341, ptr %10, align 4, !tbaa !9
  %342 = load double, ptr %15, align 8, !tbaa !13
  store double %342, ptr %26, align 8, !tbaa !13
  %343 = load double, ptr %15, align 8, !tbaa !13
  store double %343, ptr %27, align 8, !tbaa !13
  %344 = load double, ptr %27, align 8, !tbaa !13
  %345 = load double, ptr %26, align 8, !tbaa !13
  %346 = fmul double %345, %344
  store double %346, ptr %26, align 8, !tbaa !13
  %347 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %347, ptr %19, align 4, !tbaa !9
  %348 = load ptr, ptr %6, align 8, !tbaa !5
  %349 = getelementptr inbounds %struct.w2c_hermes, ptr %348, i32 0, i32 6
  %350 = load i32, ptr %19, align 4, !tbaa !9
  %351 = zext i32 %350 to i64
  %352 = call double @f64_load(ptr noundef %349, i64 noundef %351)
  store double %352, ptr %27, align 8, !tbaa !13
  %353 = load double, ptr %27, align 8, !tbaa !13
  %354 = load double, ptr %26, align 8, !tbaa !13
  %355 = fadd double %354, %353
  store double %355, ptr %26, align 8, !tbaa !13
  %356 = load ptr, ptr %6, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.w2c_hermes, ptr %356, i32 0, i32 6
  %358 = load i32, ptr %17, align 4, !tbaa !9
  %359 = zext i32 %358 to i64
  %360 = load double, ptr %26, align 8, !tbaa !13
  call void @f64_store(ptr noundef %357, i64 noundef %359, double noundef %360)
  %361 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %361, ptr %17, align 4, !tbaa !9
  %362 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %362, ptr %18, align 4, !tbaa !9
  %363 = load ptr, ptr %6, align 8, !tbaa !5
  %364 = getelementptr inbounds %struct.w2c_hermes, ptr %363, i32 0, i32 6
  %365 = load i32, ptr %18, align 4, !tbaa !9
  %366 = zext i32 %365 to i64
  %367 = add i64 %366, 88
  %368 = call i64 @i64_load(ptr noundef %364, i64 noundef %367)
  store i64 %368, ptr %23, align 8, !tbaa !11
  %369 = load ptr, ptr %6, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.w2c_hermes, ptr %369, i32 0, i32 6
  %371 = load i32, ptr %17, align 4, !tbaa !9
  %372 = zext i32 %371 to i64
  %373 = add i64 %372, 88
  %374 = load i64, ptr %23, align 8, !tbaa !11
  call void @i64_store32(ptr noundef %370, i64 noundef %373, i64 noundef %374)
  %375 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %375, ptr %17, align 4, !tbaa !9
  %376 = load ptr, ptr %6, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct.w2c_hermes, ptr %376, i32 0, i32 6
  %378 = load i32, ptr %17, align 4, !tbaa !9
  %379 = zext i32 %378 to i64
  %380 = add i64 %379, 64
  %381 = call i64 @i64_load(ptr noundef %377, i64 noundef %380)
  store i64 %381, ptr %22, align 8, !tbaa !11
  %382 = load i64, ptr %22, align 8, !tbaa !11
  store i64 %382, ptr %13, align 8, !tbaa !11
  store i64 4294967295, ptr %23, align 8, !tbaa !11
  %383 = load i64, ptr %23, align 8, !tbaa !11
  %384 = load i64, ptr %22, align 8, !tbaa !11
  %385 = and i64 %384, %383
  store i64 %385, ptr %22, align 8, !tbaa !11
  %386 = load i64, ptr %22, align 8, !tbaa !11
  store i64 %386, ptr %14, align 8, !tbaa !11
  %387 = load i64, ptr %13, align 8, !tbaa !11
  store i64 %387, ptr %22, align 8, !tbaa !11
  %388 = load i64, ptr %22, align 8, !tbaa !11
  %389 = trunc i64 %388 to i32
  store i32 %389, ptr %17, align 4, !tbaa !9
  %390 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %390, ptr %10, align 4, !tbaa !9
  %391 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %391, ptr %17, align 4, !tbaa !9
  %392 = load ptr, ptr %6, align 8, !tbaa !5
  %393 = getelementptr inbounds %struct.w2c_hermes, ptr %392, i32 0, i32 6
  %394 = load i32, ptr %17, align 4, !tbaa !9
  %395 = zext i32 %394 to i64
  %396 = add i64 %395, 96
  %397 = call i32 @i32_load(ptr noundef %393, i64 noundef %396)
  store i32 %397, ptr %17, align 4, !tbaa !9
  %398 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %398, ptr %11, align 4, !tbaa !9
  %399 = load i32, ptr %17, align 4, !tbaa !9
  %400 = icmp ne i32 %399, 0
  %401 = xor i1 %400, true
  %402 = zext i1 %401 to i32
  store i32 %402, ptr %17, align 4, !tbaa !9
  %403 = load i32, ptr %17, align 4, !tbaa !9
  %404 = icmp ne i32 %403, 0
  br i1 %404, label %405, label %422

405:                                              ; preds = %305
  %406 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %406, ptr %17, align 4, !tbaa !9
  %407 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %407, ptr %18, align 4, !tbaa !9
  %408 = load ptr, ptr %6, align 8, !tbaa !5
  %409 = getelementptr inbounds %struct.w2c_hermes, ptr %408, i32 0, i32 6
  %410 = load i32, ptr %17, align 4, !tbaa !9
  %411 = zext i32 %410 to i64
  %412 = add i64 %411, 112
  %413 = load i32, ptr %18, align 4, !tbaa !9
  call void @i32_store(ptr noundef %409, i64 noundef %412, i32 noundef %413)
  %414 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %414, ptr %17, align 4, !tbaa !9
  %415 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %415, ptr %18, align 4, !tbaa !9
  %416 = load ptr, ptr %6, align 8, !tbaa !5
  %417 = getelementptr inbounds %struct.w2c_hermes, ptr %416, i32 0, i32 6
  %418 = load i32, ptr %17, align 4, !tbaa !9
  %419 = zext i32 %418 to i64
  %420 = add i64 %419, 116
  %421 = load i32, ptr %18, align 4, !tbaa !9
  call void @i32_store(ptr noundef %417, i64 noundef %420, i32 noundef %421)
  br label %485

422:                                              ; preds = %305
  %423 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %423, ptr %17, align 4, !tbaa !9
  %424 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %424, ptr %18, align 4, !tbaa !9
  %425 = load ptr, ptr %6, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.w2c_hermes, ptr %425, i32 0, i32 6
  %427 = load i32, ptr %18, align 4, !tbaa !9
  %428 = zext i32 %427 to i64
  %429 = add i64 %428, 112
  %430 = call i32 @i32_load(ptr noundef %426, i64 noundef %429)
  store i32 %430, ptr %18, align 4, !tbaa !9
  %431 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %431, ptr %12, align 4, !tbaa !9
  %432 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %432, ptr %19, align 4, !tbaa !9
  %433 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %433, ptr %20, align 4, !tbaa !9
  %434 = load i32, ptr %12, align 4, !tbaa !9
  store i32 %434, ptr %21, align 4, !tbaa !9
  %435 = load i32, ptr %20, align 4, !tbaa !9
  %436 = load i32, ptr %21, align 4, !tbaa !9
  %437 = icmp ugt i32 %435, %436
  %438 = zext i1 %437 to i32
  store i32 %438, ptr %20, align 4, !tbaa !9
  %439 = load i32, ptr %20, align 4, !tbaa !9
  %440 = icmp ne i32 %439, 0
  br i1 %440, label %441, label %443

441:                                              ; preds = %422
  %442 = load i32, ptr %18, align 4, !tbaa !9
  br label %445

443:                                              ; preds = %422
  %444 = load i32, ptr %19, align 4, !tbaa !9
  br label %445

445:                                              ; preds = %443, %441
  %446 = phi i32 [ %442, %441 ], [ %444, %443 ]
  store i32 %446, ptr %18, align 4, !tbaa !9
  %447 = load ptr, ptr %6, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.w2c_hermes, ptr %447, i32 0, i32 6
  %449 = load i32, ptr %17, align 4, !tbaa !9
  %450 = zext i32 %449 to i64
  %451 = add i64 %450, 112
  %452 = load i32, ptr %18, align 4, !tbaa !9
  call void @i32_store(ptr noundef %448, i64 noundef %451, i32 noundef %452)
  %453 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %453, ptr %17, align 4, !tbaa !9
  store i32 116, ptr %18, align 4, !tbaa !9
  %454 = load i32, ptr %18, align 4, !tbaa !9
  %455 = load i32, ptr %17, align 4, !tbaa !9
  %456 = add i32 %455, %454
  store i32 %456, ptr %17, align 4, !tbaa !9
  %457 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %457, ptr %12, align 4, !tbaa !9
  %458 = load i32, ptr %12, align 4, !tbaa !9
  store i32 %458, ptr %18, align 4, !tbaa !9
  %459 = load ptr, ptr %6, align 8, !tbaa !5
  %460 = getelementptr inbounds %struct.w2c_hermes, ptr %459, i32 0, i32 6
  %461 = load i32, ptr %18, align 4, !tbaa !9
  %462 = zext i32 %461 to i64
  %463 = call i32 @i32_load(ptr noundef %460, i64 noundef %462)
  store i32 %463, ptr %18, align 4, !tbaa !9
  %464 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %464, ptr %12, align 4, !tbaa !9
  %465 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %465, ptr %19, align 4, !tbaa !9
  %466 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %466, ptr %20, align 4, !tbaa !9
  %467 = load i32, ptr %12, align 4, !tbaa !9
  store i32 %467, ptr %21, align 4, !tbaa !9
  %468 = load i32, ptr %20, align 4, !tbaa !9
  %469 = load i32, ptr %21, align 4, !tbaa !9
  %470 = icmp ult i32 %468, %469
  %471 = zext i1 %470 to i32
  store i32 %471, ptr %20, align 4, !tbaa !9
  %472 = load i32, ptr %20, align 4, !tbaa !9
  %473 = icmp ne i32 %472, 0
  br i1 %473, label %474, label %476

474:                                              ; preds = %445
  %475 = load i32, ptr %18, align 4, !tbaa !9
  br label %478

476:                                              ; preds = %445
  %477 = load i32, ptr %19, align 4, !tbaa !9
  br label %478

478:                                              ; preds = %476, %474
  %479 = phi i32 [ %475, %474 ], [ %477, %476 ]
  store i32 %479, ptr %18, align 4, !tbaa !9
  %480 = load ptr, ptr %6, align 8, !tbaa !5
  %481 = getelementptr inbounds %struct.w2c_hermes, ptr %480, i32 0, i32 6
  %482 = load i32, ptr %17, align 4, !tbaa !9
  %483 = zext i32 %482 to i64
  %484 = load i32, ptr %18, align 4, !tbaa !9
  call void @i32_store(ptr noundef %481, i64 noundef %483, i32 noundef %484)
  br label %485

485:                                              ; preds = %478, %405
  %486 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %486, ptr %17, align 4, !tbaa !9
  %487 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %487, ptr %18, align 4, !tbaa !9
  store i32 1, ptr %19, align 4, !tbaa !9
  %488 = load i32, ptr %19, align 4, !tbaa !9
  %489 = load i32, ptr %18, align 4, !tbaa !9
  %490 = add i32 %489, %488
  store i32 %490, ptr %18, align 4, !tbaa !9
  %491 = load ptr, ptr %6, align 8, !tbaa !5
  %492 = getelementptr inbounds %struct.w2c_hermes, ptr %491, i32 0, i32 6
  %493 = load i32, ptr %17, align 4, !tbaa !9
  %494 = zext i32 %493 to i64
  %495 = add i64 %494, 96
  %496 = load i32, ptr %18, align 4, !tbaa !9
  call void @i32_store(ptr noundef %492, i64 noundef %495, i32 noundef %496)
  %497 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %497, ptr %17, align 4, !tbaa !9
  store i32 104, ptr %18, align 4, !tbaa !9
  %498 = load i32, ptr %18, align 4, !tbaa !9
  %499 = load i32, ptr %17, align 4, !tbaa !9
  %500 = add i32 %499, %498
  store i32 %500, ptr %17, align 4, !tbaa !9
  %501 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %501, ptr %11, align 4, !tbaa !9
  %502 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %502, ptr %18, align 4, !tbaa !9
  %503 = load ptr, ptr %6, align 8, !tbaa !5
  %504 = getelementptr inbounds %struct.w2c_hermes, ptr %503, i32 0, i32 6
  %505 = load i32, ptr %18, align 4, !tbaa !9
  %506 = zext i32 %505 to i64
  %507 = call i64 @i64_load(ptr noundef %504, i64 noundef %506)
  store i64 %507, ptr %23, align 8, !tbaa !11
  %508 = load i64, ptr %14, align 8, !tbaa !11
  store i64 %508, ptr %24, align 8, !tbaa !11
  %509 = load i64, ptr %24, align 8, !tbaa !11
  %510 = load i64, ptr %23, align 8, !tbaa !11
  %511 = add i64 %510, %509
  store i64 %511, ptr %23, align 8, !tbaa !11
  %512 = load ptr, ptr %6, align 8, !tbaa !5
  %513 = getelementptr inbounds %struct.w2c_hermes, ptr %512, i32 0, i32 6
  %514 = load i32, ptr %17, align 4, !tbaa !9
  %515 = zext i32 %514 to i64
  %516 = load i64, ptr %23, align 8, !tbaa !11
  call void @i64_store(ptr noundef %513, i64 noundef %515, i64 noundef %516)
  %517 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %517, ptr %17, align 4, !tbaa !9
  store i32 120, ptr %18, align 4, !tbaa !9
  %518 = load i32, ptr %18, align 4, !tbaa !9
  %519 = load i32, ptr %17, align 4, !tbaa !9
  %520 = add i32 %519, %518
  store i32 %520, ptr %17, align 4, !tbaa !9
  %521 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %521, ptr %11, align 4, !tbaa !9
  %522 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %522, ptr %18, align 4, !tbaa !9
  %523 = load i32, ptr %18, align 4, !tbaa !9
  %524 = uitofp i32 %523 to double
  store double %524, ptr %26, align 8, !tbaa !13
  %525 = load double, ptr %26, align 8, !tbaa !13
  store double %525, ptr %15, align 8, !tbaa !13
  %526 = load double, ptr %15, align 8, !tbaa !13
  store double %526, ptr %27, align 8, !tbaa !13
  %527 = load double, ptr %27, align 8, !tbaa !13
  %528 = load double, ptr %26, align 8, !tbaa !13
  %529 = fmul double %528, %527
  store double %529, ptr %26, align 8, !tbaa !13
  %530 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %530, ptr %19, align 4, !tbaa !9
  %531 = load ptr, ptr %6, align 8, !tbaa !5
  %532 = getelementptr inbounds %struct.w2c_hermes, ptr %531, i32 0, i32 6
  %533 = load i32, ptr %19, align 4, !tbaa !9
  %534 = zext i32 %533 to i64
  %535 = call double @f64_load(ptr noundef %532, i64 noundef %534)
  store double %535, ptr %27, align 8, !tbaa !13
  %536 = load double, ptr %27, align 8, !tbaa !13
  %537 = load double, ptr %26, align 8, !tbaa !13
  %538 = fadd double %537, %536
  store double %538, ptr %26, align 8, !tbaa !13
  %539 = load ptr, ptr %6, align 8, !tbaa !5
  %540 = getelementptr inbounds %struct.w2c_hermes, ptr %539, i32 0, i32 6
  %541 = load i32, ptr %17, align 4, !tbaa !9
  %542 = zext i32 %541 to i64
  %543 = load double, ptr %26, align 8, !tbaa !13
  call void @f64_store(ptr noundef %540, i64 noundef %542, double noundef %543)
  %544 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %544, ptr %17, align 4, !tbaa !9
  %545 = load ptr, ptr %6, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.w2c_hermes, ptr %545, i32 0, i32 6
  %547 = load i32, ptr %17, align 4, !tbaa !9
  %548 = zext i32 %547 to i64
  %549 = add i64 %548, 72
  %550 = call i64 @i64_load(ptr noundef %546, i64 noundef %549)
  store i64 %550, ptr %22, align 8, !tbaa !11
  %551 = load i64, ptr %22, align 8, !tbaa !11
  store i64 %551, ptr %13, align 8, !tbaa !11
  store i64 4294967295, ptr %23, align 8, !tbaa !11
  %552 = load i64, ptr %23, align 8, !tbaa !11
  %553 = load i64, ptr %22, align 8, !tbaa !11
  %554 = and i64 %553, %552
  store i64 %554, ptr %22, align 8, !tbaa !11
  %555 = load i64, ptr %22, align 8, !tbaa !11
  store i64 %555, ptr %14, align 8, !tbaa !11
  %556 = load i64, ptr %13, align 8, !tbaa !11
  store i64 %556, ptr %22, align 8, !tbaa !11
  %557 = load i64, ptr %22, align 8, !tbaa !11
  %558 = trunc i64 %557 to i32
  store i32 %558, ptr %17, align 4, !tbaa !9
  %559 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %559, ptr %8, align 4, !tbaa !9
  %560 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %560, ptr %17, align 4, !tbaa !9
  %561 = load ptr, ptr %6, align 8, !tbaa !5
  %562 = getelementptr inbounds %struct.w2c_hermes, ptr %561, i32 0, i32 6
  %563 = load i32, ptr %17, align 4, !tbaa !9
  %564 = zext i32 %563 to i64
  %565 = add i64 %564, 128
  %566 = call i32 @i32_load(ptr noundef %562, i64 noundef %565)
  store i32 %566, ptr %17, align 4, !tbaa !9
  %567 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %567, ptr %10, align 4, !tbaa !9
  %568 = load i32, ptr %17, align 4, !tbaa !9
  %569 = icmp ne i32 %568, 0
  %570 = xor i1 %569, true
  %571 = zext i1 %570 to i32
  store i32 %571, ptr %17, align 4, !tbaa !9
  %572 = load i32, ptr %17, align 4, !tbaa !9
  %573 = icmp ne i32 %572, 0
  br i1 %573, label %574, label %591

574:                                              ; preds = %485
  %575 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %575, ptr %17, align 4, !tbaa !9
  %576 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %576, ptr %18, align 4, !tbaa !9
  %577 = load ptr, ptr %6, align 8, !tbaa !5
  %578 = getelementptr inbounds %struct.w2c_hermes, ptr %577, i32 0, i32 6
  %579 = load i32, ptr %17, align 4, !tbaa !9
  %580 = zext i32 %579 to i64
  %581 = add i64 %580, 144
  %582 = load i32, ptr %18, align 4, !tbaa !9
  call void @i32_store(ptr noundef %578, i64 noundef %581, i32 noundef %582)
  %583 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %583, ptr %17, align 4, !tbaa !9
  %584 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %584, ptr %18, align 4, !tbaa !9
  %585 = load ptr, ptr %6, align 8, !tbaa !5
  %586 = getelementptr inbounds %struct.w2c_hermes, ptr %585, i32 0, i32 6
  %587 = load i32, ptr %17, align 4, !tbaa !9
  %588 = zext i32 %587 to i64
  %589 = add i64 %588, 148
  %590 = load i32, ptr %18, align 4, !tbaa !9
  call void @i32_store(ptr noundef %586, i64 noundef %589, i32 noundef %590)
  br label %654

591:                                              ; preds = %485
  %592 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %592, ptr %17, align 4, !tbaa !9
  %593 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %593, ptr %18, align 4, !tbaa !9
  %594 = load ptr, ptr %6, align 8, !tbaa !5
  %595 = getelementptr inbounds %struct.w2c_hermes, ptr %594, i32 0, i32 6
  %596 = load i32, ptr %18, align 4, !tbaa !9
  %597 = zext i32 %596 to i64
  %598 = add i64 %597, 144
  %599 = call i32 @i32_load(ptr noundef %595, i64 noundef %598)
  store i32 %599, ptr %18, align 4, !tbaa !9
  %600 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %600, ptr %11, align 4, !tbaa !9
  %601 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %601, ptr %19, align 4, !tbaa !9
  %602 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %602, ptr %20, align 4, !tbaa !9
  %603 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %603, ptr %21, align 4, !tbaa !9
  %604 = load i32, ptr %20, align 4, !tbaa !9
  %605 = load i32, ptr %21, align 4, !tbaa !9
  %606 = icmp ugt i32 %604, %605
  %607 = zext i1 %606 to i32
  store i32 %607, ptr %20, align 4, !tbaa !9
  %608 = load i32, ptr %20, align 4, !tbaa !9
  %609 = icmp ne i32 %608, 0
  br i1 %609, label %610, label %612

610:                                              ; preds = %591
  %611 = load i32, ptr %18, align 4, !tbaa !9
  br label %614

612:                                              ; preds = %591
  %613 = load i32, ptr %19, align 4, !tbaa !9
  br label %614

614:                                              ; preds = %612, %610
  %615 = phi i32 [ %611, %610 ], [ %613, %612 ]
  store i32 %615, ptr %18, align 4, !tbaa !9
  %616 = load ptr, ptr %6, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.w2c_hermes, ptr %616, i32 0, i32 6
  %618 = load i32, ptr %17, align 4, !tbaa !9
  %619 = zext i32 %618 to i64
  %620 = add i64 %619, 144
  %621 = load i32, ptr %18, align 4, !tbaa !9
  call void @i32_store(ptr noundef %617, i64 noundef %620, i32 noundef %621)
  %622 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %622, ptr %17, align 4, !tbaa !9
  store i32 148, ptr %18, align 4, !tbaa !9
  %623 = load i32, ptr %18, align 4, !tbaa !9
  %624 = load i32, ptr %17, align 4, !tbaa !9
  %625 = add i32 %624, %623
  store i32 %625, ptr %17, align 4, !tbaa !9
  %626 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %626, ptr %11, align 4, !tbaa !9
  %627 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %627, ptr %18, align 4, !tbaa !9
  %628 = load ptr, ptr %6, align 8, !tbaa !5
  %629 = getelementptr inbounds %struct.w2c_hermes, ptr %628, i32 0, i32 6
  %630 = load i32, ptr %18, align 4, !tbaa !9
  %631 = zext i32 %630 to i64
  %632 = call i32 @i32_load(ptr noundef %629, i64 noundef %631)
  store i32 %632, ptr %18, align 4, !tbaa !9
  %633 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %633, ptr %11, align 4, !tbaa !9
  %634 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %634, ptr %19, align 4, !tbaa !9
  %635 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %635, ptr %20, align 4, !tbaa !9
  %636 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %636, ptr %21, align 4, !tbaa !9
  %637 = load i32, ptr %20, align 4, !tbaa !9
  %638 = load i32, ptr %21, align 4, !tbaa !9
  %639 = icmp ult i32 %637, %638
  %640 = zext i1 %639 to i32
  store i32 %640, ptr %20, align 4, !tbaa !9
  %641 = load i32, ptr %20, align 4, !tbaa !9
  %642 = icmp ne i32 %641, 0
  br i1 %642, label %643, label %645

643:                                              ; preds = %614
  %644 = load i32, ptr %18, align 4, !tbaa !9
  br label %647

645:                                              ; preds = %614
  %646 = load i32, ptr %19, align 4, !tbaa !9
  br label %647

647:                                              ; preds = %645, %643
  %648 = phi i32 [ %644, %643 ], [ %646, %645 ]
  store i32 %648, ptr %18, align 4, !tbaa !9
  %649 = load ptr, ptr %6, align 8, !tbaa !5
  %650 = getelementptr inbounds %struct.w2c_hermes, ptr %649, i32 0, i32 6
  %651 = load i32, ptr %17, align 4, !tbaa !9
  %652 = zext i32 %651 to i64
  %653 = load i32, ptr %18, align 4, !tbaa !9
  call void @i32_store(ptr noundef %650, i64 noundef %652, i32 noundef %653)
  br label %654

654:                                              ; preds = %647, %574
  %655 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %655, ptr %17, align 4, !tbaa !9
  %656 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %656, ptr %18, align 4, !tbaa !9
  store i32 1, ptr %19, align 4, !tbaa !9
  %657 = load i32, ptr %19, align 4, !tbaa !9
  %658 = load i32, ptr %18, align 4, !tbaa !9
  %659 = add i32 %658, %657
  store i32 %659, ptr %18, align 4, !tbaa !9
  %660 = load ptr, ptr %6, align 8, !tbaa !5
  %661 = getelementptr inbounds %struct.w2c_hermes, ptr %660, i32 0, i32 6
  %662 = load i32, ptr %17, align 4, !tbaa !9
  %663 = zext i32 %662 to i64
  %664 = add i64 %663, 128
  %665 = load i32, ptr %18, align 4, !tbaa !9
  call void @i32_store(ptr noundef %661, i64 noundef %664, i32 noundef %665)
  %666 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %666, ptr %17, align 4, !tbaa !9
  %667 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %667, ptr %18, align 4, !tbaa !9
  %668 = load ptr, ptr %6, align 8, !tbaa !5
  %669 = getelementptr inbounds %struct.w2c_hermes, ptr %668, i32 0, i32 6
  %670 = load i32, ptr %18, align 4, !tbaa !9
  %671 = zext i32 %670 to i64
  %672 = call i32 @i32_load(ptr noundef %669, i64 noundef %671)
  store i32 %672, ptr %18, align 4, !tbaa !9
  store i32 1, ptr %19, align 4, !tbaa !9
  %673 = load i32, ptr %19, align 4, !tbaa !9
  %674 = load i32, ptr %18, align 4, !tbaa !9
  %675 = add i32 %674, %673
  store i32 %675, ptr %18, align 4, !tbaa !9
  %676 = load ptr, ptr %6, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.w2c_hermes, ptr %676, i32 0, i32 6
  %678 = load i32, ptr %17, align 4, !tbaa !9
  %679 = zext i32 %678 to i64
  %680 = load i32, ptr %18, align 4, !tbaa !9
  call void @i32_store(ptr noundef %677, i64 noundef %679, i32 noundef %680)
  %681 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %681, ptr %17, align 4, !tbaa !9
  store i32 136, ptr %18, align 4, !tbaa !9
  %682 = load i32, ptr %18, align 4, !tbaa !9
  %683 = load i32, ptr %17, align 4, !tbaa !9
  %684 = add i32 %683, %682
  store i32 %684, ptr %17, align 4, !tbaa !9
  %685 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %685, ptr %10, align 4, !tbaa !9
  %686 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %686, ptr %18, align 4, !tbaa !9
  %687 = load ptr, ptr %6, align 8, !tbaa !5
  %688 = getelementptr inbounds %struct.w2c_hermes, ptr %687, i32 0, i32 6
  %689 = load i32, ptr %18, align 4, !tbaa !9
  %690 = zext i32 %689 to i64
  %691 = call i64 @i64_load(ptr noundef %688, i64 noundef %690)
  store i64 %691, ptr %23, align 8, !tbaa !11
  %692 = load i64, ptr %14, align 8, !tbaa !11
  store i64 %692, ptr %24, align 8, !tbaa !11
  %693 = load i64, ptr %24, align 8, !tbaa !11
  %694 = load i64, ptr %23, align 8, !tbaa !11
  %695 = add i64 %694, %693
  store i64 %695, ptr %23, align 8, !tbaa !11
  %696 = load ptr, ptr %6, align 8, !tbaa !5
  %697 = getelementptr inbounds %struct.w2c_hermes, ptr %696, i32 0, i32 6
  %698 = load i32, ptr %17, align 4, !tbaa !9
  %699 = zext i32 %698 to i64
  %700 = load i64, ptr %23, align 8, !tbaa !11
  call void @i64_store(ptr noundef %697, i64 noundef %699, i64 noundef %700)
  %701 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %701, ptr %17, align 4, !tbaa !9
  store i32 152, ptr %18, align 4, !tbaa !9
  %702 = load i32, ptr %18, align 4, !tbaa !9
  %703 = load i32, ptr %17, align 4, !tbaa !9
  %704 = add i32 %703, %702
  store i32 %704, ptr %17, align 4, !tbaa !9
  %705 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %705, ptr %9, align 4, !tbaa !9
  %706 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %706, ptr %18, align 4, !tbaa !9
  %707 = load i32, ptr %18, align 4, !tbaa !9
  %708 = uitofp i32 %707 to double
  store double %708, ptr %26, align 8, !tbaa !13
  %709 = load double, ptr %26, align 8, !tbaa !13
  store double %709, ptr %15, align 8, !tbaa !13
  %710 = load double, ptr %15, align 8, !tbaa !13
  store double %710, ptr %27, align 8, !tbaa !13
  %711 = load double, ptr %27, align 8, !tbaa !13
  %712 = load double, ptr %26, align 8, !tbaa !13
  %713 = fmul double %712, %711
  store double %713, ptr %26, align 8, !tbaa !13
  %714 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %714, ptr %19, align 4, !tbaa !9
  %715 = load ptr, ptr %6, align 8, !tbaa !5
  %716 = getelementptr inbounds %struct.w2c_hermes, ptr %715, i32 0, i32 6
  %717 = load i32, ptr %19, align 4, !tbaa !9
  %718 = zext i32 %717 to i64
  %719 = call double @f64_load(ptr noundef %716, i64 noundef %718)
  store double %719, ptr %27, align 8, !tbaa !13
  %720 = load double, ptr %27, align 8, !tbaa !13
  %721 = load double, ptr %26, align 8, !tbaa !13
  %722 = fadd double %721, %720
  store double %722, ptr %26, align 8, !tbaa !13
  %723 = load ptr, ptr %6, align 8, !tbaa !5
  %724 = getelementptr inbounds %struct.w2c_hermes, ptr %723, i32 0, i32 6
  %725 = load i32, ptr %17, align 4, !tbaa !9
  %726 = zext i32 %725 to i64
  %727 = load double, ptr %26, align 8, !tbaa !13
  call void @f64_store(ptr noundef %724, i64 noundef %726, double noundef %727)
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #3
  ret void
}

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

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

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


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

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

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @w2c_hermes_hermes0x3A0x3Avm0x3A0x3AGCBase0x3A0x3ArecordGCStats0x28hermes0x3A0x3Avm0x3A0x3AGCAnalyticsEvent0x20const0x260x2C0x20hermes0x3A0x3Avm0x3A0x3AGCBase0x3A0x3ACumulativeHeapStats0x2A0x2C0x20bool0x29(ptr noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4) local_unnamed_addr #1 {
  %.not = icmp eq i32 %4, 0
  br i1 %.not, label %._crit_edge, label %6

._crit_edge:                                      ; preds = %5
  %.pre = zext i32 %2 to i64
  %.pre407 = zext i32 %3 to i64
  br label %39

6:                                                ; preds = %5
  %7 = getelementptr inbounds i8, ptr %0, i64 40
  %8 = zext i32 %2 to i64
  %9 = add nuw nsw i64 %8, 48
  %10 = tail call i64 @i64_load(ptr noundef nonnull %7, i64 noundef %9)
  %11 = sitofp i64 %10 to double
  %12 = fdiv double %11, 1.000000e+03
  %13 = zext i32 %3 to i64
  %14 = add nuw nsw i64 %13, 8
  %15 = tail call i32 @i32_load(ptr noundef nonnull %7, i64 noundef %14)
  %.not403 = icmp eq i32 %15, 0
  %16 = add nuw nsw i64 %13, 24
  br i1 %.not403, label %17, label %19

17:                                               ; preds = %6
  tail call void @f64_store(ptr noundef nonnull %7, i64 noundef %16, double noundef %12)
  %18 = add nuw nsw i64 %13, 32
  tail call void @f64_store(ptr noundef nonnull %7, i64 noundef %18, double noundef %12)
  br label %28

19:                                               ; preds = %6
  %20 = tail call double @f64_load(ptr noundef nonnull %7, i64 noundef %16)
  %21 = fcmp olt double %12, %20
  %22 = select i1 %21, double %12, double %20
  tail call void @f64_store(ptr noundef nonnull %7, i64 noundef %16, double noundef %22)
  %23 = add i32 %3, 32
  %24 = zext i32 %23 to i64
  %25 = tail call double @f64_load(ptr noundef nonnull %7, i64 noundef %24)
  %26 = fcmp ogt double %12, %25
  %27 = select i1 %26, double %12, double %25
  tail call void @f64_store(ptr noundef nonnull %7, i64 noundef %24, double noundef %27)
  br label %28

28:                                               ; preds = %19, %17
  %29 = add i32 %15, 1
  tail call void @i32_store(ptr noundef nonnull %7, i64 noundef %14, i32 noundef %29)
  %30 = add i32 %3, 16
  %31 = zext i32 %30 to i64
  %32 = tail call double @f64_load(ptr noundef nonnull %7, i64 noundef %31)
  %33 = fadd double %12, %32
  tail call void @f64_store(ptr noundef nonnull %7, i64 noundef %31, double noundef %33)
  %34 = add i32 %3, 40
  %35 = fmul double %12, %12
  %36 = zext i32 %34 to i64
  %37 = tail call double @f64_load(ptr noundef nonnull %7, i64 noundef %36)
  %38 = fadd double %35, %37
  tail call void @f64_store(ptr noundef nonnull %7, i64 noundef %36, double noundef %38)
  br label %39

39:                                               ; preds = %._crit_edge, %28
  %.pre-phi408 = phi i64 [ %.pre407, %._crit_edge ], [ %13, %28 ]
  %.pre-phi = phi i64 [ %.pre, %._crit_edge ], [ %8, %28 ]
  %40 = getelementptr inbounds i8, ptr %0, i64 40
  %41 = add nuw nsw i64 %.pre-phi, 56
  %42 = tail call i64 @i64_load(ptr noundef nonnull %40, i64 noundef %41)
  %43 = sitofp i64 %42 to double
  %44 = fdiv double %43, 1.000000e+03
  %45 = add nuw nsw i64 %.pre-phi408, 48
  %46 = tail call i32 @i32_load(ptr noundef nonnull %40, i64 noundef %45)
  %.not404 = icmp eq i32 %46, 0
  %47 = add nuw nsw i64 %.pre-phi408, 64
  br i1 %.not404, label %48, label %50

48:                                               ; preds = %39
  tail call void @f64_store(ptr noundef nonnull %40, i64 noundef %47, double noundef %44)
  %49 = add nuw nsw i64 %.pre-phi408, 72
  tail call void @f64_store(ptr noundef nonnull %40, i64 noundef %49, double noundef %44)
  br label %59

50:                                               ; preds = %39
  %51 = tail call double @f64_load(ptr noundef nonnull %40, i64 noundef %47)
  %52 = fcmp olt double %44, %51
  %53 = select i1 %52, double %44, double %51
  tail call void @f64_store(ptr noundef nonnull %40, i64 noundef %47, double noundef %53)
  %54 = add i32 %3, 72
  %55 = zext i32 %54 to i64
  %56 = tail call double @f64_load(ptr noundef nonnull %40, i64 noundef %55)
  %57 = fcmp ogt double %44, %56
  %58 = select i1 %57, double %44, double %56
  tail call void @f64_store(ptr noundef nonnull %40, i64 noundef %55, double noundef %58)
  br label %59

59:                                               ; preds = %50, %48
  %60 = add i32 %46, 1
  tail call void @i32_store(ptr noundef nonnull %40, i64 noundef %45, i32 noundef %60)
  %61 = add i32 %3, 56
  %62 = zext i32 %61 to i64
  %63 = tail call double @f64_load(ptr noundef nonnull %40, i64 noundef %62)
  %64 = fadd double %44, %63
  tail call void @f64_store(ptr noundef nonnull %40, i64 noundef %62, double noundef %64)
  %65 = add i32 %3, 80
  %66 = fmul double %44, %44
  %67 = zext i32 %65 to i64
  %68 = tail call double @f64_load(ptr noundef nonnull %40, i64 noundef %67)
  %69 = fadd double %66, %68
  tail call void @f64_store(ptr noundef nonnull %40, i64 noundef %67, double noundef %69)
  %70 = add nuw nsw i64 %.pre-phi, 88
  %71 = tail call i64 @i64_load(ptr noundef nonnull %40, i64 noundef %70)
  %72 = add nuw nsw i64 %.pre-phi408, 88
  tail call void @i64_store32(ptr noundef nonnull %40, i64 noundef %72, i64 noundef %71)
  %73 = add nuw nsw i64 %.pre-phi, 64
  %74 = tail call i64 @i64_load(ptr noundef nonnull %40, i64 noundef %73)
  %75 = and i64 %74, 4294967295
  %76 = trunc i64 %74 to i32
  %77 = add nuw nsw i64 %.pre-phi408, 96
  %78 = tail call i32 @i32_load(ptr noundef nonnull %40, i64 noundef %77)
  %.not405 = icmp eq i32 %78, 0
  %79 = add nuw nsw i64 %.pre-phi408, 112
  br i1 %.not405, label %80, label %82

80:                                               ; preds = %59
  tail call void @i32_store(ptr noundef nonnull %40, i64 noundef %79, i32 noundef %76)
  %81 = add nuw nsw i64 %.pre-phi408, 116
  tail call void @i32_store(ptr noundef nonnull %40, i64 noundef %81, i32 noundef %76)
  br label %89

82:                                               ; preds = %59
  %83 = tail call i32 @i32_load(ptr noundef nonnull %40, i64 noundef %79)
  %84 = tail call i32 @llvm.umin.i32(i32 %83, i32 %76)
  tail call void @i32_store(ptr noundef nonnull %40, i64 noundef %79, i32 noundef %84)
  %85 = add i32 %3, 116
  %86 = zext i32 %85 to i64
  %87 = tail call i32 @i32_load(ptr noundef nonnull %40, i64 noundef %86)
  %88 = tail call i32 @llvm.umax.i32(i32 %87, i32 %76)
  tail call void @i32_store(ptr noundef nonnull %40, i64 noundef %86, i32 noundef %88)
  br label %89

89:                                               ; preds = %82, %80
  %90 = add i32 %78, 1
  tail call void @i32_store(ptr noundef nonnull %40, i64 noundef %77, i32 noundef %90)
  %91 = add i32 %3, 104
  %92 = zext i32 %91 to i64
  %93 = tail call i64 @i64_load(ptr noundef nonnull %40, i64 noundef %92)
  %94 = add i64 %93, %75
  tail call void @i64_store(ptr noundef nonnull %40, i64 noundef %92, i64 noundef %94)
  %95 = add i32 %3, 120
  %96 = uitofp i32 %76 to double
  %97 = fmul double %96, %96
  %98 = zext i32 %95 to i64
  %99 = tail call double @f64_load(ptr noundef nonnull %40, i64 noundef %98)
  %100 = fadd double %97, %99
  tail call void @f64_store(ptr noundef nonnull %40, i64 noundef %98, double noundef %100)
  %101 = add nuw nsw i64 %.pre-phi, 72
  %102 = tail call i64 @i64_load(ptr noundef nonnull %40, i64 noundef %101)
  %103 = trunc i64 %102 to i32
  %104 = add nuw nsw i64 %.pre-phi408, 128
  %105 = tail call i32 @i32_load(ptr noundef nonnull %40, i64 noundef %104)
  %.not406 = icmp eq i32 %105, 0
  %106 = add nuw nsw i64 %.pre-phi408, 144
  br i1 %.not406, label %107, label %109

107:                                              ; preds = %89
  tail call void @i32_store(ptr noundef nonnull %40, i64 noundef %106, i32 noundef %103)
  %108 = add nuw nsw i64 %.pre-phi408, 148
  tail call void @i32_store(ptr noundef nonnull %40, i64 noundef %108, i32 noundef %103)
  br label %116

109:                                              ; preds = %89
  %110 = tail call i32 @i32_load(ptr noundef nonnull %40, i64 noundef %106)
  %111 = tail call i32 @llvm.umin.i32(i32 %110, i32 %103)
  tail call void @i32_store(ptr noundef nonnull %40, i64 noundef %106, i32 noundef %111)
  %112 = add i32 %3, 148
  %113 = zext i32 %112 to i64
  %114 = tail call i32 @i32_load(ptr noundef nonnull %40, i64 noundef %113)
  %115 = tail call i32 @llvm.umax.i32(i32 %114, i32 %103)
  tail call void @i32_store(ptr noundef nonnull %40, i64 noundef %113, i32 noundef %115)
  br label %116

116:                                              ; preds = %109, %107
  %117 = and i64 %102, 4294967295
  %118 = add i32 %105, 1
  tail call void @i32_store(ptr noundef nonnull %40, i64 noundef %104, i32 noundef %118)
  %119 = tail call i32 @i32_load(ptr noundef nonnull %40, i64 noundef %.pre-phi408)
  %120 = add i32 %119, 1
  tail call void @i32_store(ptr noundef nonnull %40, i64 noundef %.pre-phi408, i32 noundef %120)
  %121 = add i32 %3, 136
  %122 = zext i32 %121 to i64
  %123 = tail call i64 @i64_load(ptr noundef nonnull %40, i64 noundef %122)
  %124 = add i64 %123, %117
  tail call void @i64_store(ptr noundef nonnull %40, i64 noundef %122, i64 noundef %124)
  %125 = add i32 %3, 152
  %126 = uitofp i32 %103 to double
  %127 = fmul double %126, %126
  %128 = zext i32 %125 to i64
  %129 = tail call double @f64_load(ptr noundef nonnull %40, i64 noundef %128)
  %130 = fadd double %127, %129
  tail call void @f64_store(ptr noundef nonnull %40, i64 noundef %128, double noundef %130)
  ret void
}

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

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

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

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

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


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