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

; 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: noreturn
declare void @wasm_rt_trap(i32 noundef) #1

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden i64 @i64_reinterpret_f64(double noundef) #3

; Function Attrs: inlinehint nounwind uwtable
declare hidden double @f64_reinterpret_i64(i64 noundef) #3

; Function Attrs: nounwind uwtable
declare hidden double @wasm_fabs(double noundef) #4

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

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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @w2c_hermes_0x5F_rem_pio2(ptr noundef %0, double noundef %1, i32 noundef %2) #4 {
  %4 = alloca ptr, align 8
  %5 = alloca double, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i64, align 8
  %13 = alloca double, align 8
  %14 = alloca double, 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 %4, align 8, !tbaa !5
  store double %1, ptr %5, align 8, !tbaa !9
  store i32 %2, ptr %6, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #5
  store i32 0, ptr %7, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #5
  store i32 0, ptr %8, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #5
  store i32 0, ptr %9, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #5
  store i32 0, ptr %10, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #5
  store i32 0, ptr %11, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  store i64 0, ptr %12, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #5
  store double 0.000000e+00, ptr %13, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  store double 0.000000e+00, ptr %14, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  store double 0.000000e+00, ptr %15, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  store double 0.000000e+00, ptr %16, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #5
  %30 = load ptr, ptr %4, align 8, !tbaa !5
  %31 = getelementptr inbounds %struct.w2c_hermes, ptr %30, i32 0, i32 3
  %32 = load i32, ptr %31, align 8, !tbaa !15
  store i32 %32, ptr %17, align 4, !tbaa !11
  store i32 48, ptr %18, align 4, !tbaa !11
  %33 = load i32, ptr %18, align 4, !tbaa !11
  %34 = load i32, ptr %17, align 4, !tbaa !11
  %35 = sub i32 %34, %33
  store i32 %35, ptr %17, align 4, !tbaa !11
  %36 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %36, ptr %8, align 4, !tbaa !11
  %37 = load i32, ptr %17, align 4, !tbaa !11
  %38 = load ptr, ptr %4, align 8, !tbaa !5
  %39 = getelementptr inbounds %struct.w2c_hermes, ptr %38, i32 0, i32 3
  store i32 %37, ptr %39, align 8, !tbaa !15
  %40 = load double, ptr %5, align 8, !tbaa !9
  store double %40, ptr %25, align 8, !tbaa !9
  %41 = load double, ptr %25, align 8, !tbaa !9
  %42 = call i64 @i64_reinterpret_f64(double noundef %41)
  store i64 %42, ptr %22, align 8, !tbaa !13
  %43 = load i64, ptr %22, align 8, !tbaa !13
  store i64 %43, ptr %12, align 8, !tbaa !13
  store i64 32, ptr %23, align 8, !tbaa !13
  %44 = load i64, ptr %23, align 8, !tbaa !13
  %45 = and i64 %44, 63
  %46 = load i64, ptr %22, align 8, !tbaa !13
  %47 = lshr i64 %46, %45
  store i64 %47, ptr %22, align 8, !tbaa !13
  %48 = load i64, ptr %22, align 8, !tbaa !13
  %49 = trunc i64 %48 to i32
  store i32 %49, ptr %17, align 4, !tbaa !11
  %50 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %50, ptr %7, align 4, !tbaa !11
  store i32 2147483647, ptr %18, align 4, !tbaa !11
  %51 = load i32, ptr %18, align 4, !tbaa !11
  %52 = load i32, ptr %17, align 4, !tbaa !11
  %53 = and i32 %52, %51
  store i32 %53, ptr %17, align 4, !tbaa !11
  %54 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %54, ptr %9, align 4, !tbaa !11
  store i32 1074752122, ptr %18, align 4, !tbaa !11
  %55 = load i32, ptr %17, align 4, !tbaa !11
  %56 = load i32, ptr %18, align 4, !tbaa !11
  %57 = icmp ule i32 %55, %56
  %58 = zext i1 %57 to i32
  store i32 %58, ptr %17, align 4, !tbaa !11
  %59 = load i32, ptr %17, align 4, !tbaa !11
  %60 = icmp ne i32 %59, 0
  br i1 %60, label %61, label %229

61:                                               ; preds = %3
  %62 = load i32, ptr %7, align 4, !tbaa !11
  store i32 %62, ptr %17, align 4, !tbaa !11
  store i32 1048575, ptr %18, align 4, !tbaa !11
  %63 = load i32, ptr %18, align 4, !tbaa !11
  %64 = load i32, ptr %17, align 4, !tbaa !11
  %65 = and i32 %64, %63
  store i32 %65, ptr %17, align 4, !tbaa !11
  store i32 598523, ptr %18, align 4, !tbaa !11
  %66 = load i32, ptr %17, align 4, !tbaa !11
  %67 = load i32, ptr %18, align 4, !tbaa !11
  %68 = icmp eq i32 %66, %67
  %69 = zext i1 %68 to i32
  store i32 %69, ptr %17, align 4, !tbaa !11
  %70 = load i32, ptr %17, align 4, !tbaa !11
  %71 = icmp ne i32 %70, 0
  br i1 %71, label %72, label %73

72:                                               ; preds = %61
  br label %421

73:                                               ; preds = %61
  %74 = load i32, ptr %9, align 4, !tbaa !11
  store i32 %74, ptr %17, align 4, !tbaa !11
  store i32 1073928572, ptr %18, align 4, !tbaa !11
  %75 = load i32, ptr %17, align 4, !tbaa !11
  %76 = load i32, ptr %18, align 4, !tbaa !11
  %77 = icmp ule i32 %75, %76
  %78 = zext i1 %77 to i32
  store i32 %78, ptr %17, align 4, !tbaa !11
  %79 = load i32, ptr %17, align 4, !tbaa !11
  %80 = icmp ne i32 %79, 0
  br i1 %80, label %81, label %155

81:                                               ; preds = %73
  %82 = load i64, ptr %12, align 8, !tbaa !13
  store i64 %82, ptr %22, align 8, !tbaa !13
  store i64 0, ptr %23, align 8, !tbaa !13
  %83 = load i64, ptr %22, align 8, !tbaa !13
  %84 = load i64, ptr %23, align 8, !tbaa !13
  %85 = icmp sge i64 %83, %84
  %86 = zext i1 %85 to i32
  %87 = sext i32 %86 to i64
  %88 = trunc i64 %87 to i32
  store i32 %88, ptr %17, align 4, !tbaa !11
  %89 = load i32, ptr %17, align 4, !tbaa !11
  %90 = icmp ne i32 %89, 0
  br i1 %90, label %91, label %123

91:                                               ; preds = %81
  %92 = load i32, ptr %6, align 4, !tbaa !11
  store i32 %92, ptr %17, align 4, !tbaa !11
  %93 = load double, ptr %5, align 8, !tbaa !9
  store double %93, ptr %26, align 8, !tbaa !9
  store double 0xBFF921FB54400000, ptr %27, align 8, !tbaa !9
  %94 = load double, ptr %27, align 8, !tbaa !9
  %95 = load double, ptr %26, align 8, !tbaa !9
  %96 = fadd double %95, %94
  store double %96, ptr %26, align 8, !tbaa !9
  %97 = load double, ptr %26, align 8, !tbaa !9
  store double %97, ptr %5, align 8, !tbaa !9
  store double 0xBDD0B4611A626331, ptr %27, align 8, !tbaa !9
  %98 = load double, ptr %27, align 8, !tbaa !9
  %99 = load double, ptr %26, align 8, !tbaa !9
  %100 = fadd double %99, %98
  store double %100, ptr %26, align 8, !tbaa !9
  %101 = load double, ptr %26, align 8, !tbaa !9
  store double %101, ptr %13, align 8, !tbaa !9
  %102 = load ptr, ptr %4, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct.w2c_hermes, ptr %102, i32 0, i32 6
  %104 = load i32, ptr %17, align 4, !tbaa !11
  %105 = zext i32 %104 to i64
  %106 = load double, ptr %26, align 8, !tbaa !9
  call void @f64_store(ptr noundef %103, i64 noundef %105, double noundef %106)
  %107 = load i32, ptr %6, align 4, !tbaa !11
  store i32 %107, ptr %17, align 4, !tbaa !11
  %108 = load double, ptr %5, align 8, !tbaa !9
  store double %108, ptr %26, align 8, !tbaa !9
  %109 = load double, ptr %13, align 8, !tbaa !9
  store double %109, ptr %27, align 8, !tbaa !9
  %110 = load double, ptr %27, align 8, !tbaa !9
  %111 = load double, ptr %26, align 8, !tbaa !9
  %112 = fsub double %111, %110
  store double %112, ptr %26, align 8, !tbaa !9
  store double 0xBDD0B4611A626331, ptr %27, align 8, !tbaa !9
  %113 = load double, ptr %27, align 8, !tbaa !9
  %114 = load double, ptr %26, align 8, !tbaa !9
  %115 = fadd double %114, %113
  store double %115, ptr %26, align 8, !tbaa !9
  %116 = load ptr, ptr %4, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct.w2c_hermes, ptr %116, i32 0, i32 6
  %118 = load i32, ptr %17, align 4, !tbaa !11
  %119 = zext i32 %118 to i64
  %120 = add i64 %119, 8
  %121 = load double, ptr %26, align 8, !tbaa !9
  call void @f64_store(ptr noundef %117, i64 noundef %120, double noundef %121)
  store i32 1, ptr %17, align 4, !tbaa !11
  %122 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %122, ptr %7, align 4, !tbaa !11
  br label %997

123:                                              ; preds = %81
  %124 = load i32, ptr %6, align 4, !tbaa !11
  store i32 %124, ptr %17, align 4, !tbaa !11
  %125 = load double, ptr %5, align 8, !tbaa !9
  store double %125, ptr %26, align 8, !tbaa !9
  store double 0x3FF921FB54400000, ptr %27, align 8, !tbaa !9
  %126 = load double, ptr %27, align 8, !tbaa !9
  %127 = load double, ptr %26, align 8, !tbaa !9
  %128 = fadd double %127, %126
  store double %128, ptr %26, align 8, !tbaa !9
  %129 = load double, ptr %26, align 8, !tbaa !9
  store double %129, ptr %5, align 8, !tbaa !9
  store double 0x3DD0B4611A626331, ptr %27, align 8, !tbaa !9
  %130 = load double, ptr %27, align 8, !tbaa !9
  %131 = load double, ptr %26, align 8, !tbaa !9
  %132 = fadd double %131, %130
  store double %132, ptr %26, align 8, !tbaa !9
  %133 = load double, ptr %26, align 8, !tbaa !9
  store double %133, ptr %13, align 8, !tbaa !9
  %134 = load ptr, ptr %4, align 8, !tbaa !5
  %135 = getelementptr inbounds %struct.w2c_hermes, ptr %134, i32 0, i32 6
  %136 = load i32, ptr %17, align 4, !tbaa !11
  %137 = zext i32 %136 to i64
  %138 = load double, ptr %26, align 8, !tbaa !9
  call void @f64_store(ptr noundef %135, i64 noundef %137, double noundef %138)
  %139 = load i32, ptr %6, align 4, !tbaa !11
  store i32 %139, ptr %17, align 4, !tbaa !11
  %140 = load double, ptr %5, align 8, !tbaa !9
  store double %140, ptr %26, align 8, !tbaa !9
  %141 = load double, ptr %13, align 8, !tbaa !9
  store double %141, ptr %27, align 8, !tbaa !9
  %142 = load double, ptr %27, align 8, !tbaa !9
  %143 = load double, ptr %26, align 8, !tbaa !9
  %144 = fsub double %143, %142
  store double %144, ptr %26, align 8, !tbaa !9
  store double 0x3DD0B4611A626331, ptr %27, align 8, !tbaa !9
  %145 = load double, ptr %27, align 8, !tbaa !9
  %146 = load double, ptr %26, align 8, !tbaa !9
  %147 = fadd double %146, %145
  store double %147, ptr %26, align 8, !tbaa !9
  %148 = load ptr, ptr %4, align 8, !tbaa !5
  %149 = getelementptr inbounds %struct.w2c_hermes, ptr %148, i32 0, i32 6
  %150 = load i32, ptr %17, align 4, !tbaa !11
  %151 = zext i32 %150 to i64
  %152 = add i64 %151, 8
  %153 = load double, ptr %26, align 8, !tbaa !9
  call void @f64_store(ptr noundef %149, i64 noundef %152, double noundef %153)
  store i32 -1, ptr %17, align 4, !tbaa !11
  %154 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %154, ptr %7, align 4, !tbaa !11
  br label %997

155:                                              ; preds = %73
  %156 = load i64, ptr %12, align 8, !tbaa !13
  store i64 %156, ptr %22, align 8, !tbaa !13
  store i64 0, ptr %23, align 8, !tbaa !13
  %157 = load i64, ptr %22, align 8, !tbaa !13
  %158 = load i64, ptr %23, align 8, !tbaa !13
  %159 = icmp sge i64 %157, %158
  %160 = zext i1 %159 to i32
  %161 = sext i32 %160 to i64
  %162 = trunc i64 %161 to i32
  store i32 %162, ptr %17, align 4, !tbaa !11
  %163 = load i32, ptr %17, align 4, !tbaa !11
  %164 = icmp ne i32 %163, 0
  br i1 %164, label %165, label %197

165:                                              ; preds = %155
  %166 = load i32, ptr %6, align 4, !tbaa !11
  store i32 %166, ptr %17, align 4, !tbaa !11
  %167 = load double, ptr %5, align 8, !tbaa !9
  store double %167, ptr %26, align 8, !tbaa !9
  store double 0xC00921FB54400000, ptr %27, align 8, !tbaa !9
  %168 = load double, ptr %27, align 8, !tbaa !9
  %169 = load double, ptr %26, align 8, !tbaa !9
  %170 = fadd double %169, %168
  store double %170, ptr %26, align 8, !tbaa !9
  %171 = load double, ptr %26, align 8, !tbaa !9
  store double %171, ptr %5, align 8, !tbaa !9
  store double 0xBDE0B4611A626331, ptr %27, align 8, !tbaa !9
  %172 = load double, ptr %27, align 8, !tbaa !9
  %173 = load double, ptr %26, align 8, !tbaa !9
  %174 = fadd double %173, %172
  store double %174, ptr %26, align 8, !tbaa !9
  %175 = load double, ptr %26, align 8, !tbaa !9
  store double %175, ptr %13, align 8, !tbaa !9
  %176 = load ptr, ptr %4, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.w2c_hermes, ptr %176, i32 0, i32 6
  %178 = load i32, ptr %17, align 4, !tbaa !11
  %179 = zext i32 %178 to i64
  %180 = load double, ptr %26, align 8, !tbaa !9
  call void @f64_store(ptr noundef %177, i64 noundef %179, double noundef %180)
  %181 = load i32, ptr %6, align 4, !tbaa !11
  store i32 %181, ptr %17, align 4, !tbaa !11
  %182 = load double, ptr %5, align 8, !tbaa !9
  store double %182, ptr %26, align 8, !tbaa !9
  %183 = load double, ptr %13, align 8, !tbaa !9
  store double %183, ptr %27, align 8, !tbaa !9
  %184 = load double, ptr %27, align 8, !tbaa !9
  %185 = load double, ptr %26, align 8, !tbaa !9
  %186 = fsub double %185, %184
  store double %186, ptr %26, align 8, !tbaa !9
  store double 0xBDE0B4611A626331, ptr %27, align 8, !tbaa !9
  %187 = load double, ptr %27, align 8, !tbaa !9
  %188 = load double, ptr %26, align 8, !tbaa !9
  %189 = fadd double %188, %187
  store double %189, ptr %26, align 8, !tbaa !9
  %190 = load ptr, ptr %4, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.w2c_hermes, ptr %190, i32 0, i32 6
  %192 = load i32, ptr %17, align 4, !tbaa !11
  %193 = zext i32 %192 to i64
  %194 = add i64 %193, 8
  %195 = load double, ptr %26, align 8, !tbaa !9
  call void @f64_store(ptr noundef %191, i64 noundef %194, double noundef %195)
  store i32 2, ptr %17, align 4, !tbaa !11
  %196 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %196, ptr %7, align 4, !tbaa !11
  br label %997

197:                                              ; preds = %155
  %198 = load i32, ptr %6, align 4, !tbaa !11
  store i32 %198, ptr %17, align 4, !tbaa !11
  %199 = load double, ptr %5, align 8, !tbaa !9
  store double %199, ptr %26, align 8, !tbaa !9
  store double 0x400921FB54400000, ptr %27, align 8, !tbaa !9
  %200 = load double, ptr %27, align 8, !tbaa !9
  %201 = load double, ptr %26, align 8, !tbaa !9
  %202 = fadd double %201, %200
  store double %202, ptr %26, align 8, !tbaa !9
  %203 = load double, ptr %26, align 8, !tbaa !9
  store double %203, ptr %5, align 8, !tbaa !9
  store double 0x3DE0B4611A626331, ptr %27, align 8, !tbaa !9
  %204 = load double, ptr %27, align 8, !tbaa !9
  %205 = load double, ptr %26, align 8, !tbaa !9
  %206 = fadd double %205, %204
  store double %206, ptr %26, align 8, !tbaa !9
  %207 = load double, ptr %26, align 8, !tbaa !9
  store double %207, ptr %13, align 8, !tbaa !9
  %208 = load ptr, ptr %4, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.w2c_hermes, ptr %208, i32 0, i32 6
  %210 = load i32, ptr %17, align 4, !tbaa !11
  %211 = zext i32 %210 to i64
  %212 = load double, ptr %26, align 8, !tbaa !9
  call void @f64_store(ptr noundef %209, i64 noundef %211, double noundef %212)
  %213 = load i32, ptr %6, align 4, !tbaa !11
  store i32 %213, ptr %17, align 4, !tbaa !11
  %214 = load double, ptr %5, align 8, !tbaa !9
  store double %214, ptr %26, align 8, !tbaa !9
  %215 = load double, ptr %13, align 8, !tbaa !9
  store double %215, ptr %27, align 8, !tbaa !9
  %216 = load double, ptr %27, align 8, !tbaa !9
  %217 = load double, ptr %26, align 8, !tbaa !9
  %218 = fsub double %217, %216
  store double %218, ptr %26, align 8, !tbaa !9
  store double 0x3DE0B4611A626331, ptr %27, align 8, !tbaa !9
  %219 = load double, ptr %27, align 8, !tbaa !9
  %220 = load double, ptr %26, align 8, !tbaa !9
  %221 = fadd double %220, %219
  store double %221, ptr %26, align 8, !tbaa !9
  %222 = load ptr, ptr %4, align 8, !tbaa !5
  %223 = getelementptr inbounds %struct.w2c_hermes, ptr %222, i32 0, i32 6
  %224 = load i32, ptr %17, align 4, !tbaa !11
  %225 = zext i32 %224 to i64
  %226 = add i64 %225, 8
  %227 = load double, ptr %26, align 8, !tbaa !9
  call void @f64_store(ptr noundef %223, i64 noundef %226, double noundef %227)
  store i32 -2, ptr %17, align 4, !tbaa !11
  %228 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %228, ptr %7, align 4, !tbaa !11
  br label %997

229:                                              ; preds = %3
  %230 = load i32, ptr %9, align 4, !tbaa !11
  store i32 %230, ptr %17, align 4, !tbaa !11
  store i32 1075594811, ptr %18, align 4, !tbaa !11
  %231 = load i32, ptr %17, align 4, !tbaa !11
  %232 = load i32, ptr %18, align 4, !tbaa !11
  %233 = icmp ule i32 %231, %232
  %234 = zext i1 %233 to i32
  store i32 %234, ptr %17, align 4, !tbaa !11
  %235 = load i32, ptr %17, align 4, !tbaa !11
  %236 = icmp ne i32 %235, 0
  br i1 %236, label %237, label %411

237:                                              ; preds = %229
  %238 = load i32, ptr %9, align 4, !tbaa !11
  store i32 %238, ptr %17, align 4, !tbaa !11
  store i32 1075183036, ptr %18, align 4, !tbaa !11
  %239 = load i32, ptr %17, align 4, !tbaa !11
  %240 = load i32, ptr %18, align 4, !tbaa !11
  %241 = icmp ule i32 %239, %240
  %242 = zext i1 %241 to i32
  store i32 %242, ptr %17, align 4, !tbaa !11
  %243 = load i32, ptr %17, align 4, !tbaa !11
  %244 = icmp ne i32 %243, 0
  br i1 %244, label %245, label %328

245:                                              ; preds = %237
  %246 = load i32, ptr %9, align 4, !tbaa !11
  store i32 %246, ptr %17, align 4, !tbaa !11
  store i32 1074977148, ptr %18, align 4, !tbaa !11
  %247 = load i32, ptr %17, align 4, !tbaa !11
  %248 = load i32, ptr %18, align 4, !tbaa !11
  %249 = icmp eq i32 %247, %248
  %250 = zext i1 %249 to i32
  store i32 %250, ptr %17, align 4, !tbaa !11
  %251 = load i32, ptr %17, align 4, !tbaa !11
  %252 = icmp ne i32 %251, 0
  br i1 %252, label %253, label %254

253:                                              ; preds = %245
  br label %421

254:                                              ; preds = %245
  %255 = load i64, ptr %12, align 8, !tbaa !13
  store i64 %255, ptr %22, align 8, !tbaa !13
  store i64 0, ptr %23, align 8, !tbaa !13
  %256 = load i64, ptr %22, align 8, !tbaa !13
  %257 = load i64, ptr %23, align 8, !tbaa !13
  %258 = icmp sge i64 %256, %257
  %259 = zext i1 %258 to i32
  %260 = sext i32 %259 to i64
  %261 = trunc i64 %260 to i32
  store i32 %261, ptr %17, align 4, !tbaa !11
  %262 = load i32, ptr %17, align 4, !tbaa !11
  %263 = icmp ne i32 %262, 0
  br i1 %263, label %264, label %296

264:                                              ; preds = %254
  %265 = load i32, ptr %6, align 4, !tbaa !11
  store i32 %265, ptr %17, align 4, !tbaa !11
  %266 = load double, ptr %5, align 8, !tbaa !9
  store double %266, ptr %26, align 8, !tbaa !9
  store double 0xC012D97C7F300000, ptr %27, align 8, !tbaa !9
  %267 = load double, ptr %27, align 8, !tbaa !9
  %268 = load double, ptr %26, align 8, !tbaa !9
  %269 = fadd double %268, %267
  store double %269, ptr %26, align 8, !tbaa !9
  %270 = load double, ptr %26, align 8, !tbaa !9
  store double %270, ptr %5, align 8, !tbaa !9
  store double 0xBDE90E91A79394CA, ptr %27, align 8, !tbaa !9
  %271 = load double, ptr %27, align 8, !tbaa !9
  %272 = load double, ptr %26, align 8, !tbaa !9
  %273 = fadd double %272, %271
  store double %273, ptr %26, align 8, !tbaa !9
  %274 = load double, ptr %26, align 8, !tbaa !9
  store double %274, ptr %13, align 8, !tbaa !9
  %275 = load ptr, ptr %4, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.w2c_hermes, ptr %275, i32 0, i32 6
  %277 = load i32, ptr %17, align 4, !tbaa !11
  %278 = zext i32 %277 to i64
  %279 = load double, ptr %26, align 8, !tbaa !9
  call void @f64_store(ptr noundef %276, i64 noundef %278, double noundef %279)
  %280 = load i32, ptr %6, align 4, !tbaa !11
  store i32 %280, ptr %17, align 4, !tbaa !11
  %281 = load double, ptr %5, align 8, !tbaa !9
  store double %281, ptr %26, align 8, !tbaa !9
  %282 = load double, ptr %13, align 8, !tbaa !9
  store double %282, ptr %27, align 8, !tbaa !9
  %283 = load double, ptr %27, align 8, !tbaa !9
  %284 = load double, ptr %26, align 8, !tbaa !9
  %285 = fsub double %284, %283
  store double %285, ptr %26, align 8, !tbaa !9
  store double 0xBDE90E91A79394CA, ptr %27, align 8, !tbaa !9
  %286 = load double, ptr %27, align 8, !tbaa !9
  %287 = load double, ptr %26, align 8, !tbaa !9
  %288 = fadd double %287, %286
  store double %288, ptr %26, align 8, !tbaa !9
  %289 = load ptr, ptr %4, align 8, !tbaa !5
  %290 = getelementptr inbounds %struct.w2c_hermes, ptr %289, i32 0, i32 6
  %291 = load i32, ptr %17, align 4, !tbaa !11
  %292 = zext i32 %291 to i64
  %293 = add i64 %292, 8
  %294 = load double, ptr %26, align 8, !tbaa !9
  call void @f64_store(ptr noundef %290, i64 noundef %293, double noundef %294)
  store i32 3, ptr %17, align 4, !tbaa !11
  %295 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %295, ptr %7, align 4, !tbaa !11
  br label %997

296:                                              ; preds = %254
  %297 = load i32, ptr %6, align 4, !tbaa !11
  store i32 %297, ptr %17, align 4, !tbaa !11
  %298 = load double, ptr %5, align 8, !tbaa !9
  store double %298, ptr %26, align 8, !tbaa !9
  store double 0x4012D97C7F300000, ptr %27, align 8, !tbaa !9
  %299 = load double, ptr %27, align 8, !tbaa !9
  %300 = load double, ptr %26, align 8, !tbaa !9
  %301 = fadd double %300, %299
  store double %301, ptr %26, align 8, !tbaa !9
  %302 = load double, ptr %26, align 8, !tbaa !9
  store double %302, ptr %5, align 8, !tbaa !9
  store double 0x3DE90E91A79394CA, ptr %27, align 8, !tbaa !9
  %303 = load double, ptr %27, align 8, !tbaa !9
  %304 = load double, ptr %26, align 8, !tbaa !9
  %305 = fadd double %304, %303
  store double %305, ptr %26, align 8, !tbaa !9
  %306 = load double, ptr %26, align 8, !tbaa !9
  store double %306, ptr %13, align 8, !tbaa !9
  %307 = load ptr, ptr %4, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.w2c_hermes, ptr %307, i32 0, i32 6
  %309 = load i32, ptr %17, align 4, !tbaa !11
  %310 = zext i32 %309 to i64
  %311 = load double, ptr %26, align 8, !tbaa !9
  call void @f64_store(ptr noundef %308, i64 noundef %310, double noundef %311)
  %312 = load i32, ptr %6, align 4, !tbaa !11
  store i32 %312, ptr %17, align 4, !tbaa !11
  %313 = load double, ptr %5, align 8, !tbaa !9
  store double %313, ptr %26, align 8, !tbaa !9
  %314 = load double, ptr %13, align 8, !tbaa !9
  store double %314, ptr %27, align 8, !tbaa !9
  %315 = load double, ptr %27, align 8, !tbaa !9
  %316 = load double, ptr %26, align 8, !tbaa !9
  %317 = fsub double %316, %315
  store double %317, ptr %26, align 8, !tbaa !9
  store double 0x3DE90E91A79394CA, ptr %27, align 8, !tbaa !9
  %318 = load double, ptr %27, align 8, !tbaa !9
  %319 = load double, ptr %26, align 8, !tbaa !9
  %320 = fadd double %319, %318
  store double %320, ptr %26, align 8, !tbaa !9
  %321 = load ptr, ptr %4, align 8, !tbaa !5
  %322 = getelementptr inbounds %struct.w2c_hermes, ptr %321, i32 0, i32 6
  %323 = load i32, ptr %17, align 4, !tbaa !11
  %324 = zext i32 %323 to i64
  %325 = add i64 %324, 8
  %326 = load double, ptr %26, align 8, !tbaa !9
  call void @f64_store(ptr noundef %322, i64 noundef %325, double noundef %326)
  store i32 -3, ptr %17, align 4, !tbaa !11
  %327 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %327, ptr %7, align 4, !tbaa !11
  br label %997

328:                                              ; preds = %237
  %329 = load i32, ptr %9, align 4, !tbaa !11
  store i32 %329, ptr %17, align 4, !tbaa !11
  store i32 1075388923, ptr %18, align 4, !tbaa !11
  %330 = load i32, ptr %17, align 4, !tbaa !11
  %331 = load i32, ptr %18, align 4, !tbaa !11
  %332 = icmp eq i32 %330, %331
  %333 = zext i1 %332 to i32
  store i32 %333, ptr %17, align 4, !tbaa !11
  %334 = load i32, ptr %17, align 4, !tbaa !11
  %335 = icmp ne i32 %334, 0
  br i1 %335, label %336, label %337

336:                                              ; preds = %328
  br label %421

337:                                              ; preds = %328
  %338 = load i64, ptr %12, align 8, !tbaa !13
  store i64 %338, ptr %22, align 8, !tbaa !13
  store i64 0, ptr %23, align 8, !tbaa !13
  %339 = load i64, ptr %22, align 8, !tbaa !13
  %340 = load i64, ptr %23, align 8, !tbaa !13
  %341 = icmp sge i64 %339, %340
  %342 = zext i1 %341 to i32
  %343 = sext i32 %342 to i64
  %344 = trunc i64 %343 to i32
  store i32 %344, ptr %17, align 4, !tbaa !11
  %345 = load i32, ptr %17, align 4, !tbaa !11
  %346 = icmp ne i32 %345, 0
  br i1 %346, label %347, label %379

347:                                              ; preds = %337
  %348 = load i32, ptr %6, align 4, !tbaa !11
  store i32 %348, ptr %17, align 4, !tbaa !11
  %349 = load double, ptr %5, align 8, !tbaa !9
  store double %349, ptr %26, align 8, !tbaa !9
  store double 0xC01921FB54400000, ptr %27, align 8, !tbaa !9
  %350 = load double, ptr %27, align 8, !tbaa !9
  %351 = load double, ptr %26, align 8, !tbaa !9
  %352 = fadd double %351, %350
  store double %352, ptr %26, align 8, !tbaa !9
  %353 = load double, ptr %26, align 8, !tbaa !9
  store double %353, ptr %5, align 8, !tbaa !9
  store double 0xBDF0B4611A626331, ptr %27, align 8, !tbaa !9
  %354 = load double, ptr %27, align 8, !tbaa !9
  %355 = load double, ptr %26, align 8, !tbaa !9
  %356 = fadd double %355, %354
  store double %356, ptr %26, align 8, !tbaa !9
  %357 = load double, ptr %26, align 8, !tbaa !9
  store double %357, ptr %13, align 8, !tbaa !9
  %358 = load ptr, ptr %4, align 8, !tbaa !5
  %359 = getelementptr inbounds %struct.w2c_hermes, ptr %358, i32 0, i32 6
  %360 = load i32, ptr %17, align 4, !tbaa !11
  %361 = zext i32 %360 to i64
  %362 = load double, ptr %26, align 8, !tbaa !9
  call void @f64_store(ptr noundef %359, i64 noundef %361, double noundef %362)
  %363 = load i32, ptr %6, align 4, !tbaa !11
  store i32 %363, ptr %17, align 4, !tbaa !11
  %364 = load double, ptr %5, align 8, !tbaa !9
  store double %364, ptr %26, align 8, !tbaa !9
  %365 = load double, ptr %13, align 8, !tbaa !9
  store double %365, ptr %27, align 8, !tbaa !9
  %366 = load double, ptr %27, align 8, !tbaa !9
  %367 = load double, ptr %26, align 8, !tbaa !9
  %368 = fsub double %367, %366
  store double %368, ptr %26, align 8, !tbaa !9
  store double 0xBDF0B4611A626331, ptr %27, align 8, !tbaa !9
  %369 = load double, ptr %27, align 8, !tbaa !9
  %370 = load double, ptr %26, align 8, !tbaa !9
  %371 = fadd double %370, %369
  store double %371, ptr %26, align 8, !tbaa !9
  %372 = load ptr, ptr %4, align 8, !tbaa !5
  %373 = getelementptr inbounds %struct.w2c_hermes, ptr %372, i32 0, i32 6
  %374 = load i32, ptr %17, align 4, !tbaa !11
  %375 = zext i32 %374 to i64
  %376 = add i64 %375, 8
  %377 = load double, ptr %26, align 8, !tbaa !9
  call void @f64_store(ptr noundef %373, i64 noundef %376, double noundef %377)
  store i32 4, ptr %17, align 4, !tbaa !11
  %378 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %378, ptr %7, align 4, !tbaa !11
  br label %997

379:                                              ; preds = %337
  %380 = load i32, ptr %6, align 4, !tbaa !11
  store i32 %380, ptr %17, align 4, !tbaa !11
  %381 = load double, ptr %5, align 8, !tbaa !9
  store double %381, ptr %26, align 8, !tbaa !9
  store double 0x401921FB54400000, ptr %27, align 8, !tbaa !9
  %382 = load double, ptr %27, align 8, !tbaa !9
  %383 = load double, ptr %26, align 8, !tbaa !9
  %384 = fadd double %383, %382
  store double %384, ptr %26, align 8, !tbaa !9
  %385 = load double, ptr %26, align 8, !tbaa !9
  store double %385, ptr %5, align 8, !tbaa !9
  store double 0x3DF0B4611A626331, ptr %27, align 8, !tbaa !9
  %386 = load double, ptr %27, align 8, !tbaa !9
  %387 = load double, ptr %26, align 8, !tbaa !9
  %388 = fadd double %387, %386
  store double %388, ptr %26, align 8, !tbaa !9
  %389 = load double, ptr %26, align 8, !tbaa !9
  store double %389, ptr %13, align 8, !tbaa !9
  %390 = load ptr, ptr %4, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.w2c_hermes, ptr %390, i32 0, i32 6
  %392 = load i32, ptr %17, align 4, !tbaa !11
  %393 = zext i32 %392 to i64
  %394 = load double, ptr %26, align 8, !tbaa !9
  call void @f64_store(ptr noundef %391, i64 noundef %393, double noundef %394)
  %395 = load i32, ptr %6, align 4, !tbaa !11
  store i32 %395, ptr %17, align 4, !tbaa !11
  %396 = load double, ptr %5, align 8, !tbaa !9
  store double %396, ptr %26, align 8, !tbaa !9
  %397 = load double, ptr %13, align 8, !tbaa !9
  store double %397, ptr %27, align 8, !tbaa !9
  %398 = load double, ptr %27, align 8, !tbaa !9
  %399 = load double, ptr %26, align 8, !tbaa !9
  %400 = fsub double %399, %398
  store double %400, ptr %26, align 8, !tbaa !9
  store double 0x3DF0B4611A626331, ptr %27, align 8, !tbaa !9
  %401 = load double, ptr %27, align 8, !tbaa !9
  %402 = load double, ptr %26, align 8, !tbaa !9
  %403 = fadd double %402, %401
  store double %403, ptr %26, align 8, !tbaa !9
  %404 = load ptr, ptr %4, align 8, !tbaa !5
  %405 = getelementptr inbounds %struct.w2c_hermes, ptr %404, i32 0, i32 6
  %406 = load i32, ptr %17, align 4, !tbaa !11
  %407 = zext i32 %406 to i64
  %408 = add i64 %407, 8
  %409 = load double, ptr %26, align 8, !tbaa !9
  call void @f64_store(ptr noundef %405, i64 noundef %408, double noundef %409)
  store i32 -4, ptr %17, align 4, !tbaa !11
  %410 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %410, ptr %7, align 4, !tbaa !11
  br label %997

411:                                              ; preds = %229
  %412 = load i32, ptr %9, align 4, !tbaa !11
  store i32 %412, ptr %17, align 4, !tbaa !11
  store i32 1094263290, ptr %18, align 4, !tbaa !11
  %413 = load i32, ptr %17, align 4, !tbaa !11
  %414 = load i32, ptr %18, align 4, !tbaa !11
  %415 = icmp ugt i32 %413, %414
  %416 = zext i1 %415 to i32
  store i32 %416, ptr %17, align 4, !tbaa !11
  %417 = load i32, ptr %17, align 4, !tbaa !11
  %418 = icmp ne i32 %417, 0
  br i1 %418, label %419, label %420

419:                                              ; preds = %411
  br label %727

420:                                              ; preds = %411
  br label %421

421:                                              ; preds = %420, %336, %253, %72
  %422 = load double, ptr %5, align 8, !tbaa !9
  store double %422, ptr %25, align 8, !tbaa !9
  %423 = load double, ptr %5, align 8, !tbaa !9
  store double %423, ptr %26, align 8, !tbaa !9
  store double 0x3FE45F306DC9C883, ptr %27, align 8, !tbaa !9
  %424 = load double, ptr %27, align 8, !tbaa !9
  %425 = load double, ptr %26, align 8, !tbaa !9
  %426 = fmul double %425, %424
  store double %426, ptr %26, align 8, !tbaa !9
  store double 0x4338000000000000, ptr %27, align 8, !tbaa !9
  %427 = load double, ptr %27, align 8, !tbaa !9
  %428 = load double, ptr %26, align 8, !tbaa !9
  %429 = fadd double %428, %427
  store double %429, ptr %26, align 8, !tbaa !9
  store double 0xC338000000000000, ptr %27, align 8, !tbaa !9
  %430 = load double, ptr %27, align 8, !tbaa !9
  %431 = load double, ptr %26, align 8, !tbaa !9
  %432 = fadd double %431, %430
  store double %432, ptr %26, align 8, !tbaa !9
  %433 = load double, ptr %26, align 8, !tbaa !9
  store double %433, ptr %13, align 8, !tbaa !9
  store double 0xBFF921FB54400000, ptr %27, align 8, !tbaa !9
  %434 = load double, ptr %27, align 8, !tbaa !9
  %435 = load double, ptr %26, align 8, !tbaa !9
  %436 = fmul double %435, %434
  store double %436, ptr %26, align 8, !tbaa !9
  %437 = load double, ptr %26, align 8, !tbaa !9
  %438 = load double, ptr %25, align 8, !tbaa !9
  %439 = fadd double %438, %437
  store double %439, ptr %25, align 8, !tbaa !9
  %440 = load double, ptr %25, align 8, !tbaa !9
  store double %440, ptr %14, align 8, !tbaa !9
  %441 = load double, ptr %13, align 8, !tbaa !9
  store double %441, ptr %26, align 8, !tbaa !9
  store double 0x3DD0B4611A626331, ptr %27, align 8, !tbaa !9
  %442 = load double, ptr %27, align 8, !tbaa !9
  %443 = load double, ptr %26, align 8, !tbaa !9
  %444 = fmul double %443, %442
  store double %444, ptr %26, align 8, !tbaa !9
  %445 = load double, ptr %26, align 8, !tbaa !9
  store double %445, ptr %15, align 8, !tbaa !9
  %446 = load double, ptr %26, align 8, !tbaa !9
  %447 = load double, ptr %25, align 8, !tbaa !9
  %448 = fsub double %447, %446
  store double %448, ptr %25, align 8, !tbaa !9
  %449 = load double, ptr %25, align 8, !tbaa !9
  store double %449, ptr %16, align 8, !tbaa !9
  store double 0xBFE921FB54442D18, ptr %26, align 8, !tbaa !9
  %450 = load double, ptr %25, align 8, !tbaa !9
  %451 = load double, ptr %26, align 8, !tbaa !9
  %452 = fcmp olt double %450, %451
  %453 = zext i1 %452 to i32
  store i32 %453, ptr %17, align 4, !tbaa !11
  %454 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %454, ptr %10, align 4, !tbaa !11
  %455 = load double, ptr %13, align 8, !tbaa !9
  store double %455, ptr %25, align 8, !tbaa !9
  %456 = load double, ptr %25, align 8, !tbaa !9
  %457 = call double @wasm_fabs(double noundef %456)
  store double %457, ptr %25, align 8, !tbaa !9
  store double 0x41E0000000000000, ptr %26, align 8, !tbaa !9
  %458 = load double, ptr %25, align 8, !tbaa !9
  %459 = load double, ptr %26, align 8, !tbaa !9
  %460 = fcmp olt double %458, %459
  %461 = zext i1 %460 to i32
  store i32 %461, ptr %17, align 4, !tbaa !11
  %462 = load i32, ptr %17, align 4, !tbaa !11
  %463 = icmp ne i32 %462, 0
  br i1 %463, label %464, label %501

464:                                              ; preds = %421
  %465 = load double, ptr %13, align 8, !tbaa !9
  store double %465, ptr %25, align 8, !tbaa !9
  %466 = load double, ptr %25, align 8, !tbaa !9
  %467 = load double, ptr %25, align 8, !tbaa !9
  %468 = fcmp une double %466, %467
  %469 = xor i1 %468, true
  %470 = xor i1 %469, true
  %471 = zext i1 %470 to i32
  %472 = sext i32 %471 to i64
  %473 = call i64 @llvm.expect.i64(i64 %472, i64 0)
  %474 = icmp ne i64 %473, 0
  br i1 %474, label %475, label %477

475:                                              ; preds = %464
  call void @wasm_rt_trap(i32 noundef 4) #6
  unreachable

476:                                              ; No predecessors!
  br label %499

477:                                              ; preds = %464
  %478 = load double, ptr %25, align 8, !tbaa !9
  %479 = fcmp ogt double %478, 0xC1E0000000200000
  br i1 %479, label %480, label %483

480:                                              ; preds = %477
  %481 = load double, ptr %25, align 8, !tbaa !9
  %482 = fcmp olt double %481, 0x41E0000000000000
  br label %483

483:                                              ; preds = %480, %477
  %484 = phi i1 [ false, %477 ], [ %482, %480 ]
  %485 = xor i1 %484, true
  %486 = xor i1 %485, true
  %487 = xor i1 %486, true
  %488 = zext i1 %487 to i32
  %489 = sext i32 %488 to i64
  %490 = call i64 @llvm.expect.i64(i64 %489, i64 0)
  %491 = icmp ne i64 %490, 0
  br i1 %491, label %492, label %494

492:                                              ; preds = %483
  call void @wasm_rt_trap(i32 noundef 2) #6
  unreachable

493:                                              ; No predecessors!
  br label %497

494:                                              ; preds = %483
  %495 = load double, ptr %25, align 8, !tbaa !9
  %496 = fptosi double %495 to i32
  br label %497

497:                                              ; preds = %494, %493
  %498 = phi i32 [ 0, %493 ], [ %496, %494 ]
  br label %499

499:                                              ; preds = %497, %476
  %500 = phi i32 [ 0, %476 ], [ %498, %497 ]
  store i32 %500, ptr %17, align 4, !tbaa !11
  br label %502

501:                                              ; preds = %421
  store i32 -2147483648, ptr %17, align 4, !tbaa !11
  br label %502

502:                                              ; preds = %501, %499
  %503 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %503, ptr %7, align 4, !tbaa !11
  %504 = load i32, ptr %10, align 4, !tbaa !11
  store i32 %504, ptr %17, align 4, !tbaa !11
  %505 = load i32, ptr %17, align 4, !tbaa !11
  %506 = icmp ne i32 %505, 0
  br i1 %506, label %507, label %531

507:                                              ; preds = %502
  %508 = load i32, ptr %7, align 4, !tbaa !11
  store i32 %508, ptr %17, align 4, !tbaa !11
  store i32 1, ptr %18, align 4, !tbaa !11
  %509 = load i32, ptr %18, align 4, !tbaa !11
  %510 = load i32, ptr %17, align 4, !tbaa !11
  %511 = sub i32 %510, %509
  store i32 %511, ptr %17, align 4, !tbaa !11
  %512 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %512, ptr %7, align 4, !tbaa !11
  %513 = load double, ptr %13, align 8, !tbaa !9
  store double %513, ptr %25, align 8, !tbaa !9
  store double -1.000000e+00, ptr %26, align 8, !tbaa !9
  %514 = load double, ptr %26, align 8, !tbaa !9
  %515 = load double, ptr %25, align 8, !tbaa !9
  %516 = fadd double %515, %514
  store double %516, ptr %25, align 8, !tbaa !9
  %517 = load double, ptr %25, align 8, !tbaa !9
  store double %517, ptr %13, align 8, !tbaa !9
  store double 0x3DD0B4611A626331, ptr %26, align 8, !tbaa !9
  %518 = load double, ptr %26, align 8, !tbaa !9
  %519 = load double, ptr %25, align 8, !tbaa !9
  %520 = fmul double %519, %518
  store double %520, ptr %25, align 8, !tbaa !9
  %521 = load double, ptr %25, align 8, !tbaa !9
  store double %521, ptr %15, align 8, !tbaa !9
  %522 = load double, ptr %5, align 8, !tbaa !9
  store double %522, ptr %25, align 8, !tbaa !9
  %523 = load double, ptr %13, align 8, !tbaa !9
  store double %523, ptr %26, align 8, !tbaa !9
  store double 0xBFF921FB54400000, ptr %27, align 8, !tbaa !9
  %524 = load double, ptr %27, align 8, !tbaa !9
  %525 = load double, ptr %26, align 8, !tbaa !9
  %526 = fmul double %525, %524
  store double %526, ptr %26, align 8, !tbaa !9
  %527 = load double, ptr %26, align 8, !tbaa !9
  %528 = load double, ptr %25, align 8, !tbaa !9
  %529 = fadd double %528, %527
  store double %529, ptr %25, align 8, !tbaa !9
  %530 = load double, ptr %25, align 8, !tbaa !9
  store double %530, ptr %14, align 8, !tbaa !9
  br label %568

531:                                              ; preds = %502
  %532 = load double, ptr %16, align 8, !tbaa !9
  store double %532, ptr %25, align 8, !tbaa !9
  store double 0x3FE921FB54442D18, ptr %26, align 8, !tbaa !9
  %533 = load double, ptr %25, align 8, !tbaa !9
  %534 = load double, ptr %26, align 8, !tbaa !9
  %535 = fcmp ogt double %533, %534
  %536 = zext i1 %535 to i32
  store i32 %536, ptr %17, align 4, !tbaa !11
  %537 = load i32, ptr %17, align 4, !tbaa !11
  %538 = icmp ne i32 %537, 0
  %539 = xor i1 %538, true
  %540 = zext i1 %539 to i32
  store i32 %540, ptr %17, align 4, !tbaa !11
  %541 = load i32, ptr %17, align 4, !tbaa !11
  %542 = icmp ne i32 %541, 0
  br i1 %542, label %543, label %544

543:                                              ; preds = %531
  br label %568

544:                                              ; preds = %531
  %545 = load i32, ptr %7, align 4, !tbaa !11
  store i32 %545, ptr %17, align 4, !tbaa !11
  store i32 1, ptr %18, align 4, !tbaa !11
  %546 = load i32, ptr %18, align 4, !tbaa !11
  %547 = load i32, ptr %17, align 4, !tbaa !11
  %548 = add i32 %547, %546
  store i32 %548, ptr %17, align 4, !tbaa !11
  %549 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %549, ptr %7, align 4, !tbaa !11
  %550 = load double, ptr %13, align 8, !tbaa !9
  store double %550, ptr %25, align 8, !tbaa !9
  store double 1.000000e+00, ptr %26, align 8, !tbaa !9
  %551 = load double, ptr %26, align 8, !tbaa !9
  %552 = load double, ptr %25, align 8, !tbaa !9
  %553 = fadd double %552, %551
  store double %553, ptr %25, align 8, !tbaa !9
  %554 = load double, ptr %25, align 8, !tbaa !9
  store double %554, ptr %13, align 8, !tbaa !9
  store double 0x3DD0B4611A626331, ptr %26, align 8, !tbaa !9
  %555 = load double, ptr %26, align 8, !tbaa !9
  %556 = load double, ptr %25, align 8, !tbaa !9
  %557 = fmul double %556, %555
  store double %557, ptr %25, align 8, !tbaa !9
  %558 = load double, ptr %25, align 8, !tbaa !9
  store double %558, ptr %15, align 8, !tbaa !9
  %559 = load double, ptr %5, align 8, !tbaa !9
  store double %559, ptr %25, align 8, !tbaa !9
  %560 = load double, ptr %13, align 8, !tbaa !9
  store double %560, ptr %26, align 8, !tbaa !9
  store double 0xBFF921FB54400000, ptr %27, align 8, !tbaa !9
  %561 = load double, ptr %27, align 8, !tbaa !9
  %562 = load double, ptr %26, align 8, !tbaa !9
  %563 = fmul double %562, %561
  store double %563, ptr %26, align 8, !tbaa !9
  %564 = load double, ptr %26, align 8, !tbaa !9
  %565 = load double, ptr %25, align 8, !tbaa !9
  %566 = fadd double %565, %564
  store double %566, ptr %25, align 8, !tbaa !9
  %567 = load double, ptr %25, align 8, !tbaa !9
  store double %567, ptr %14, align 8, !tbaa !9
  br label %568

568:                                              ; preds = %544, %543, %507
  %569 = load i32, ptr %6, align 4, !tbaa !11
  store i32 %569, ptr %17, align 4, !tbaa !11
  %570 = load double, ptr %14, align 8, !tbaa !9
  store double %570, ptr %26, align 8, !tbaa !9
  %571 = load double, ptr %15, align 8, !tbaa !9
  store double %571, ptr %27, align 8, !tbaa !9
  %572 = load double, ptr %27, align 8, !tbaa !9
  %573 = load double, ptr %26, align 8, !tbaa !9
  %574 = fsub double %573, %572
  store double %574, ptr %26, align 8, !tbaa !9
  %575 = load double, ptr %26, align 8, !tbaa !9
  store double %575, ptr %5, align 8, !tbaa !9
  %576 = load ptr, ptr %4, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct.w2c_hermes, ptr %576, i32 0, i32 6
  %578 = load i32, ptr %17, align 4, !tbaa !11
  %579 = zext i32 %578 to i64
  %580 = load double, ptr %26, align 8, !tbaa !9
  call void @f64_store(ptr noundef %577, i64 noundef %579, double noundef %580)
  %581 = load i32, ptr %9, align 4, !tbaa !11
  store i32 %581, ptr %17, align 4, !tbaa !11
  store i32 20, ptr %18, align 4, !tbaa !11
  %582 = load i32, ptr %18, align 4, !tbaa !11
  %583 = and i32 %582, 31
  %584 = load i32, ptr %17, align 4, !tbaa !11
  %585 = lshr i32 %584, %583
  store i32 %585, ptr %17, align 4, !tbaa !11
  %586 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %586, ptr %10, align 4, !tbaa !11
  %587 = load double, ptr %5, align 8, !tbaa !9
  store double %587, ptr %26, align 8, !tbaa !9
  %588 = load double, ptr %26, align 8, !tbaa !9
  %589 = call i64 @i64_reinterpret_f64(double noundef %588)
  store i64 %589, ptr %23, align 8, !tbaa !13
  store i64 52, ptr %24, align 8, !tbaa !13
  %590 = load i64, ptr %24, align 8, !tbaa !13
  %591 = and i64 %590, 63
  %592 = load i64, ptr %23, align 8, !tbaa !13
  %593 = lshr i64 %592, %591
  store i64 %593, ptr %23, align 8, !tbaa !13
  %594 = load i64, ptr %23, align 8, !tbaa !13
  %595 = trunc i64 %594 to i32
  store i32 %595, ptr %18, align 4, !tbaa !11
  store i32 2047, ptr %19, align 4, !tbaa !11
  %596 = load i32, ptr %19, align 4, !tbaa !11
  %597 = load i32, ptr %18, align 4, !tbaa !11
  %598 = and i32 %597, %596
  store i32 %598, ptr %18, align 4, !tbaa !11
  %599 = load i32, ptr %18, align 4, !tbaa !11
  %600 = load i32, ptr %17, align 4, !tbaa !11
  %601 = sub i32 %600, %599
  store i32 %601, ptr %17, align 4, !tbaa !11
  store i32 17, ptr %18, align 4, !tbaa !11
  %602 = load i32, ptr %17, align 4, !tbaa !11
  %603 = load i32, ptr %18, align 4, !tbaa !11
  %604 = icmp slt i32 %602, %603
  %605 = zext i1 %604 to i32
  store i32 %605, ptr %17, align 4, !tbaa !11
  %606 = load i32, ptr %17, align 4, !tbaa !11
  %607 = icmp ne i32 %606, 0
  br i1 %607, label %608, label %609

608:                                              ; preds = %568
  br label %710

609:                                              ; preds = %568
  %610 = load i32, ptr %6, align 4, !tbaa !11
  store i32 %610, ptr %17, align 4, !tbaa !11
  %611 = load double, ptr %14, align 8, !tbaa !9
  store double %611, ptr %26, align 8, !tbaa !9
  %612 = load double, ptr %13, align 8, !tbaa !9
  store double %612, ptr %27, align 8, !tbaa !9
  store double 0x3DD0B4611A600000, ptr %28, align 8, !tbaa !9
  %613 = load double, ptr %28, align 8, !tbaa !9
  %614 = load double, ptr %27, align 8, !tbaa !9
  %615 = fmul double %614, %613
  store double %615, ptr %27, align 8, !tbaa !9
  %616 = load double, ptr %27, align 8, !tbaa !9
  store double %616, ptr %5, align 8, !tbaa !9
  %617 = load double, ptr %27, align 8, !tbaa !9
  %618 = load double, ptr %26, align 8, !tbaa !9
  %619 = fsub double %618, %617
  store double %619, ptr %26, align 8, !tbaa !9
  %620 = load double, ptr %26, align 8, !tbaa !9
  store double %620, ptr %16, align 8, !tbaa !9
  %621 = load double, ptr %13, align 8, !tbaa !9
  store double %621, ptr %27, align 8, !tbaa !9
  store double 0x3BA3198A2E037073, ptr %28, align 8, !tbaa !9
  %622 = load double, ptr %28, align 8, !tbaa !9
  %623 = load double, ptr %27, align 8, !tbaa !9
  %624 = fmul double %623, %622
  store double %624, ptr %27, align 8, !tbaa !9
  %625 = load double, ptr %14, align 8, !tbaa !9
  store double %625, ptr %28, align 8, !tbaa !9
  %626 = load double, ptr %16, align 8, !tbaa !9
  store double %626, ptr %29, align 8, !tbaa !9
  %627 = load double, ptr %29, align 8, !tbaa !9
  %628 = load double, ptr %28, align 8, !tbaa !9
  %629 = fsub double %628, %627
  store double %629, ptr %28, align 8, !tbaa !9
  %630 = load double, ptr %5, align 8, !tbaa !9
  store double %630, ptr %29, align 8, !tbaa !9
  %631 = load double, ptr %29, align 8, !tbaa !9
  %632 = load double, ptr %28, align 8, !tbaa !9
  %633 = fsub double %632, %631
  store double %633, ptr %28, align 8, !tbaa !9
  %634 = load double, ptr %28, align 8, !tbaa !9
  %635 = load double, ptr %27, align 8, !tbaa !9
  %636 = fsub double %635, %634
  store double %636, ptr %27, align 8, !tbaa !9
  %637 = load double, ptr %27, align 8, !tbaa !9
  store double %637, ptr %15, align 8, !tbaa !9
  %638 = load double, ptr %27, align 8, !tbaa !9
  %639 = load double, ptr %26, align 8, !tbaa !9
  %640 = fsub double %639, %638
  store double %640, ptr %26, align 8, !tbaa !9
  %641 = load double, ptr %26, align 8, !tbaa !9
  store double %641, ptr %5, align 8, !tbaa !9
  %642 = load ptr, ptr %4, align 8, !tbaa !5
  %643 = getelementptr inbounds %struct.w2c_hermes, ptr %642, i32 0, i32 6
  %644 = load i32, ptr %17, align 4, !tbaa !11
  %645 = zext i32 %644 to i64
  %646 = load double, ptr %26, align 8, !tbaa !9
  call void @f64_store(ptr noundef %643, i64 noundef %645, double noundef %646)
  %647 = load i32, ptr %10, align 4, !tbaa !11
  store i32 %647, ptr %17, align 4, !tbaa !11
  %648 = load double, ptr %5, align 8, !tbaa !9
  store double %648, ptr %26, align 8, !tbaa !9
  %649 = load double, ptr %26, align 8, !tbaa !9
  %650 = call i64 @i64_reinterpret_f64(double noundef %649)
  store i64 %650, ptr %23, align 8, !tbaa !13
  store i64 52, ptr %24, align 8, !tbaa !13
  %651 = load i64, ptr %24, align 8, !tbaa !13
  %652 = and i64 %651, 63
  %653 = load i64, ptr %23, align 8, !tbaa !13
  %654 = lshr i64 %653, %652
  store i64 %654, ptr %23, align 8, !tbaa !13
  %655 = load i64, ptr %23, align 8, !tbaa !13
  %656 = trunc i64 %655 to i32
  store i32 %656, ptr %18, align 4, !tbaa !11
  store i32 2047, ptr %19, align 4, !tbaa !11
  %657 = load i32, ptr %19, align 4, !tbaa !11
  %658 = load i32, ptr %18, align 4, !tbaa !11
  %659 = and i32 %658, %657
  store i32 %659, ptr %18, align 4, !tbaa !11
  %660 = load i32, ptr %18, align 4, !tbaa !11
  %661 = load i32, ptr %17, align 4, !tbaa !11
  %662 = sub i32 %661, %660
  store i32 %662, ptr %17, align 4, !tbaa !11
  store i32 50, ptr %18, align 4, !tbaa !11
  %663 = load i32, ptr %17, align 4, !tbaa !11
  %664 = load i32, ptr %18, align 4, !tbaa !11
  %665 = icmp slt i32 %663, %664
  %666 = zext i1 %665 to i32
  store i32 %666, ptr %17, align 4, !tbaa !11
  %667 = load i32, ptr %17, align 4, !tbaa !11
  %668 = icmp ne i32 %667, 0
  br i1 %668, label %669, label %672

669:                                              ; preds = %609
  %670 = load double, ptr %16, align 8, !tbaa !9
  store double %670, ptr %25, align 8, !tbaa !9
  %671 = load double, ptr %25, align 8, !tbaa !9
  store double %671, ptr %14, align 8, !tbaa !9
  br label %710

672:                                              ; preds = %609
  %673 = load i32, ptr %6, align 4, !tbaa !11
  store i32 %673, ptr %17, align 4, !tbaa !11
  %674 = load double, ptr %16, align 8, !tbaa !9
  store double %674, ptr %26, align 8, !tbaa !9
  %675 = load double, ptr %13, align 8, !tbaa !9
  store double %675, ptr %27, align 8, !tbaa !9
  store double 0x3BA3198A2E000000, ptr %28, align 8, !tbaa !9
  %676 = load double, ptr %28, align 8, !tbaa !9
  %677 = load double, ptr %27, align 8, !tbaa !9
  %678 = fmul double %677, %676
  store double %678, ptr %27, align 8, !tbaa !9
  %679 = load double, ptr %27, align 8, !tbaa !9
  store double %679, ptr %5, align 8, !tbaa !9
  %680 = load double, ptr %27, align 8, !tbaa !9
  %681 = load double, ptr %26, align 8, !tbaa !9
  %682 = fsub double %681, %680
  store double %682, ptr %26, align 8, !tbaa !9
  %683 = load double, ptr %26, align 8, !tbaa !9
  store double %683, ptr %14, align 8, !tbaa !9
  %684 = load double, ptr %13, align 8, !tbaa !9
  store double %684, ptr %27, align 8, !tbaa !9
  store double 0x397B839A252049C1, ptr %28, align 8, !tbaa !9
  %685 = load double, ptr %28, align 8, !tbaa !9
  %686 = load double, ptr %27, align 8, !tbaa !9
  %687 = fmul double %686, %685
  store double %687, ptr %27, align 8, !tbaa !9
  %688 = load double, ptr %16, align 8, !tbaa !9
  store double %688, ptr %28, align 8, !tbaa !9
  %689 = load double, ptr %14, align 8, !tbaa !9
  store double %689, ptr %29, align 8, !tbaa !9
  %690 = load double, ptr %29, align 8, !tbaa !9
  %691 = load double, ptr %28, align 8, !tbaa !9
  %692 = fsub double %691, %690
  store double %692, ptr %28, align 8, !tbaa !9
  %693 = load double, ptr %5, align 8, !tbaa !9
  store double %693, ptr %29, align 8, !tbaa !9
  %694 = load double, ptr %29, align 8, !tbaa !9
  %695 = load double, ptr %28, align 8, !tbaa !9
  %696 = fsub double %695, %694
  store double %696, ptr %28, align 8, !tbaa !9
  %697 = load double, ptr %28, align 8, !tbaa !9
  %698 = load double, ptr %27, align 8, !tbaa !9
  %699 = fsub double %698, %697
  store double %699, ptr %27, align 8, !tbaa !9
  %700 = load double, ptr %27, align 8, !tbaa !9
  store double %700, ptr %15, align 8, !tbaa !9
  %701 = load double, ptr %27, align 8, !tbaa !9
  %702 = load double, ptr %26, align 8, !tbaa !9
  %703 = fsub double %702, %701
  store double %703, ptr %26, align 8, !tbaa !9
  %704 = load double, ptr %26, align 8, !tbaa !9
  store double %704, ptr %5, align 8, !tbaa !9
  %705 = load ptr, ptr %4, align 8, !tbaa !5
  %706 = getelementptr inbounds %struct.w2c_hermes, ptr %705, i32 0, i32 6
  %707 = load i32, ptr %17, align 4, !tbaa !11
  %708 = zext i32 %707 to i64
  %709 = load double, ptr %26, align 8, !tbaa !9
  call void @f64_store(ptr noundef %706, i64 noundef %708, double noundef %709)
  br label %710

710:                                              ; preds = %672, %669, %608
  %711 = load i32, ptr %6, align 4, !tbaa !11
  store i32 %711, ptr %17, align 4, !tbaa !11
  %712 = load double, ptr %14, align 8, !tbaa !9
  store double %712, ptr %26, align 8, !tbaa !9
  %713 = load double, ptr %5, align 8, !tbaa !9
  store double %713, ptr %27, align 8, !tbaa !9
  %714 = load double, ptr %27, align 8, !tbaa !9
  %715 = load double, ptr %26, align 8, !tbaa !9
  %716 = fsub double %715, %714
  store double %716, ptr %26, align 8, !tbaa !9
  %717 = load double, ptr %15, align 8, !tbaa !9
  store double %717, ptr %27, align 8, !tbaa !9
  %718 = load double, ptr %27, align 8, !tbaa !9
  %719 = load double, ptr %26, align 8, !tbaa !9
  %720 = fsub double %719, %718
  store double %720, ptr %26, align 8, !tbaa !9
  %721 = load ptr, ptr %4, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.w2c_hermes, ptr %721, i32 0, i32 6
  %723 = load i32, ptr %17, align 4, !tbaa !11
  %724 = zext i32 %723 to i64
  %725 = add i64 %724, 8
  %726 = load double, ptr %26, align 8, !tbaa !9
  call void @f64_store(ptr noundef %722, i64 noundef %725, double noundef %726)
  br label %997

727:                                              ; preds = %419
  %728 = load i32, ptr %9, align 4, !tbaa !11
  store i32 %728, ptr %17, align 4, !tbaa !11
  store i32 2146435072, ptr %18, align 4, !tbaa !11
  %729 = load i32, ptr %17, align 4, !tbaa !11
  %730 = load i32, ptr %18, align 4, !tbaa !11
  %731 = icmp uge i32 %729, %730
  %732 = zext i1 %731 to i32
  store i32 %732, ptr %17, align 4, !tbaa !11
  %733 = load i32, ptr %17, align 4, !tbaa !11
  %734 = icmp ne i32 %733, 0
  br i1 %734, label %735, label %757

735:                                              ; preds = %727
  %736 = load i32, ptr %6, align 4, !tbaa !11
  store i32 %736, ptr %17, align 4, !tbaa !11
  %737 = load double, ptr %5, align 8, !tbaa !9
  store double %737, ptr %26, align 8, !tbaa !9
  %738 = load double, ptr %5, align 8, !tbaa !9
  store double %738, ptr %27, align 8, !tbaa !9
  %739 = load double, ptr %27, align 8, !tbaa !9
  %740 = load double, ptr %26, align 8, !tbaa !9
  %741 = fsub double %740, %739
  store double %741, ptr %26, align 8, !tbaa !9
  %742 = load double, ptr %26, align 8, !tbaa !9
  store double %742, ptr %5, align 8, !tbaa !9
  %743 = load ptr, ptr %4, align 8, !tbaa !5
  %744 = getelementptr inbounds %struct.w2c_hermes, ptr %743, i32 0, i32 6
  %745 = load i32, ptr %17, align 4, !tbaa !11
  %746 = zext i32 %745 to i64
  %747 = load double, ptr %26, align 8, !tbaa !9
  call void @f64_store(ptr noundef %744, i64 noundef %746, double noundef %747)
  %748 = load i32, ptr %6, align 4, !tbaa !11
  store i32 %748, ptr %17, align 4, !tbaa !11
  %749 = load double, ptr %5, align 8, !tbaa !9
  store double %749, ptr %26, align 8, !tbaa !9
  %750 = load ptr, ptr %4, align 8, !tbaa !5
  %751 = getelementptr inbounds %struct.w2c_hermes, ptr %750, i32 0, i32 6
  %752 = load i32, ptr %17, align 4, !tbaa !11
  %753 = zext i32 %752 to i64
  %754 = add i64 %753, 8
  %755 = load double, ptr %26, align 8, !tbaa !9
  call void @f64_store(ptr noundef %751, i64 noundef %754, double noundef %755)
  store i32 0, ptr %17, align 4, !tbaa !11
  %756 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %756, ptr %7, align 4, !tbaa !11
  br label %997

757:                                              ; preds = %727
  %758 = load i64, ptr %12, align 8, !tbaa !13
  store i64 %758, ptr %22, align 8, !tbaa !13
  store i64 4503599627370495, ptr %23, align 8, !tbaa !13
  %759 = load i64, ptr %23, align 8, !tbaa !13
  %760 = load i64, ptr %22, align 8, !tbaa !13
  %761 = and i64 %760, %759
  store i64 %761, ptr %22, align 8, !tbaa !13
  store i64 4710765210229538816, ptr %23, align 8, !tbaa !13
  %762 = load i64, ptr %23, align 8, !tbaa !13
  %763 = load i64, ptr %22, align 8, !tbaa !13
  %764 = or i64 %763, %762
  store i64 %764, ptr %22, align 8, !tbaa !13
  %765 = load i64, ptr %22, align 8, !tbaa !13
  %766 = call double @f64_reinterpret_i64(i64 noundef %765)
  store double %766, ptr %25, align 8, !tbaa !9
  %767 = load double, ptr %25, align 8, !tbaa !9
  store double %767, ptr %5, align 8, !tbaa !9
  store i32 0, ptr %17, align 4, !tbaa !11
  %768 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %768, ptr %7, align 4, !tbaa !11
  store i32 1, ptr %17, align 4, !tbaa !11
  %769 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %769, ptr %10, align 4, !tbaa !11
  br label %770

770:                                              ; preds = %860, %757
  %771 = load i32, ptr %8, align 4, !tbaa !11
  store i32 %771, ptr %17, align 4, !tbaa !11
  store i32 16, ptr %18, align 4, !tbaa !11
  %772 = load i32, ptr %18, align 4, !tbaa !11
  %773 = load i32, ptr %17, align 4, !tbaa !11
  %774 = add i32 %773, %772
  store i32 %774, ptr %17, align 4, !tbaa !11
  %775 = load i32, ptr %7, align 4, !tbaa !11
  store i32 %775, ptr %18, align 4, !tbaa !11
  store i32 3, ptr %19, align 4, !tbaa !11
  %776 = load i32, ptr %19, align 4, !tbaa !11
  %777 = and i32 %776, 31
  %778 = load i32, ptr %18, align 4, !tbaa !11
  %779 = shl i32 %778, %777
  store i32 %779, ptr %18, align 4, !tbaa !11
  %780 = load i32, ptr %18, align 4, !tbaa !11
  %781 = load i32, ptr %17, align 4, !tbaa !11
  %782 = add i32 %781, %780
  store i32 %782, ptr %17, align 4, !tbaa !11
  %783 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %783, ptr %7, align 4, !tbaa !11
  %784 = load double, ptr %5, align 8, !tbaa !9
  store double %784, ptr %26, align 8, !tbaa !9
  %785 = load double, ptr %26, align 8, !tbaa !9
  %786 = call double @wasm_fabs(double noundef %785)
  store double %786, ptr %26, align 8, !tbaa !9
  store double 0x41E0000000000000, ptr %27, align 8, !tbaa !9
  %787 = load double, ptr %26, align 8, !tbaa !9
  %788 = load double, ptr %27, align 8, !tbaa !9
  %789 = fcmp olt double %787, %788
  %790 = zext i1 %789 to i32
  store i32 %790, ptr %18, align 4, !tbaa !11
  %791 = load i32, ptr %18, align 4, !tbaa !11
  %792 = icmp ne i32 %791, 0
  br i1 %792, label %793, label %830

793:                                              ; preds = %770
  %794 = load double, ptr %5, align 8, !tbaa !9
  store double %794, ptr %26, align 8, !tbaa !9
  %795 = load double, ptr %26, align 8, !tbaa !9
  %796 = load double, ptr %26, align 8, !tbaa !9
  %797 = fcmp une double %795, %796
  %798 = xor i1 %797, true
  %799 = xor i1 %798, true
  %800 = zext i1 %799 to i32
  %801 = sext i32 %800 to i64
  %802 = call i64 @llvm.expect.i64(i64 %801, i64 0)
  %803 = icmp ne i64 %802, 0
  br i1 %803, label %804, label %806

804:                                              ; preds = %793
  call void @wasm_rt_trap(i32 noundef 4) #6
  unreachable

805:                                              ; No predecessors!
  br label %828

806:                                              ; preds = %793
  %807 = load double, ptr %26, align 8, !tbaa !9
  %808 = fcmp ogt double %807, 0xC1E0000000200000
  br i1 %808, label %809, label %812

809:                                              ; preds = %806
  %810 = load double, ptr %26, align 8, !tbaa !9
  %811 = fcmp olt double %810, 0x41E0000000000000
  br label %812

812:                                              ; preds = %809, %806
  %813 = phi i1 [ false, %806 ], [ %811, %809 ]
  %814 = xor i1 %813, true
  %815 = xor i1 %814, true
  %816 = xor i1 %815, true
  %817 = zext i1 %816 to i32
  %818 = sext i32 %817 to i64
  %819 = call i64 @llvm.expect.i64(i64 %818, i64 0)
  %820 = icmp ne i64 %819, 0
  br i1 %820, label %821, label %823

821:                                              ; preds = %812
  call void @wasm_rt_trap(i32 noundef 2) #6
  unreachable

822:                                              ; No predecessors!
  br label %826

823:                                              ; preds = %812
  %824 = load double, ptr %26, align 8, !tbaa !9
  %825 = fptosi double %824 to i32
  br label %826

826:                                              ; preds = %823, %822
  %827 = phi i32 [ 0, %822 ], [ %825, %823 ]
  br label %828

828:                                              ; preds = %826, %805
  %829 = phi i32 [ 0, %805 ], [ %827, %826 ]
  store i32 %829, ptr %18, align 4, !tbaa !11
  br label %831

830:                                              ; preds = %770
  store i32 -2147483648, ptr %18, align 4, !tbaa !11
  br label %831

831:                                              ; preds = %830, %828
  %832 = load i32, ptr %18, align 4, !tbaa !11
  store i32 %832, ptr %11, align 4, !tbaa !11
  %833 = load i32, ptr %18, align 4, !tbaa !11
  %834 = sitofp i32 %833 to double
  store double %834, ptr %26, align 8, !tbaa !9
  %835 = load double, ptr %26, align 8, !tbaa !9
  store double %835, ptr %13, align 8, !tbaa !9
  %836 = load ptr, ptr %4, align 8, !tbaa !5
  %837 = getelementptr inbounds %struct.w2c_hermes, ptr %836, i32 0, i32 6
  %838 = load i32, ptr %17, align 4, !tbaa !11
  %839 = zext i32 %838 to i64
  %840 = load double, ptr %26, align 8, !tbaa !9
  call void @f64_store(ptr noundef %837, i64 noundef %839, double noundef %840)
  %841 = load double, ptr %5, align 8, !tbaa !9
  store double %841, ptr %25, align 8, !tbaa !9
  %842 = load double, ptr %13, align 8, !tbaa !9
  store double %842, ptr %26, align 8, !tbaa !9
  %843 = load double, ptr %26, align 8, !tbaa !9
  %844 = load double, ptr %25, align 8, !tbaa !9
  %845 = fsub double %844, %843
  store double %845, ptr %25, align 8, !tbaa !9
  store double 0x4170000000000000, ptr %26, align 8, !tbaa !9
  %846 = load double, ptr %26, align 8, !tbaa !9
  %847 = load double, ptr %25, align 8, !tbaa !9
  %848 = fmul double %847, %846
  store double %848, ptr %25, align 8, !tbaa !9
  %849 = load double, ptr %25, align 8, !tbaa !9
  store double %849, ptr %5, align 8, !tbaa !9
  store i32 1, ptr %17, align 4, !tbaa !11
  %850 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %850, ptr %7, align 4, !tbaa !11
  %851 = load i32, ptr %10, align 4, !tbaa !11
  store i32 %851, ptr %17, align 4, !tbaa !11
  store i32 1, ptr %18, align 4, !tbaa !11
  %852 = load i32, ptr %18, align 4, !tbaa !11
  %853 = load i32, ptr %17, align 4, !tbaa !11
  %854 = and i32 %853, %852
  store i32 %854, ptr %17, align 4, !tbaa !11
  %855 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %855, ptr %11, align 4, !tbaa !11
  store i32 0, ptr %17, align 4, !tbaa !11
  %856 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %856, ptr %10, align 4, !tbaa !11
  %857 = load i32, ptr %11, align 4, !tbaa !11
  store i32 %857, ptr %17, align 4, !tbaa !11
  %858 = load i32, ptr %17, align 4, !tbaa !11
  %859 = icmp ne i32 %858, 0
  br i1 %859, label %860, label %861

860:                                              ; preds = %831
  br label %770

861:                                              ; preds = %831
  %862 = load i32, ptr %8, align 4, !tbaa !11
  store i32 %862, ptr %17, align 4, !tbaa !11
  %863 = load double, ptr %5, align 8, !tbaa !9
  store double %863, ptr %26, align 8, !tbaa !9
  %864 = load ptr, ptr %4, align 8, !tbaa !5
  %865 = getelementptr inbounds %struct.w2c_hermes, ptr %864, i32 0, i32 6
  %866 = load i32, ptr %17, align 4, !tbaa !11
  %867 = zext i32 %866 to i64
  %868 = add i64 %867, 32
  %869 = load double, ptr %26, align 8, !tbaa !9
  call void @f64_store(ptr noundef %865, i64 noundef %868, double noundef %869)
  store i32 2, ptr %17, align 4, !tbaa !11
  %870 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %870, ptr %7, align 4, !tbaa !11
  br label %871

871:                                              ; preds = %901, %861
  %872 = load i32, ptr %7, align 4, !tbaa !11
  store i32 %872, ptr %17, align 4, !tbaa !11
  %873 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %873, ptr %10, align 4, !tbaa !11
  store i32 1, ptr %18, align 4, !tbaa !11
  %874 = load i32, ptr %18, align 4, !tbaa !11
  %875 = load i32, ptr %17, align 4, !tbaa !11
  %876 = sub i32 %875, %874
  store i32 %876, ptr %17, align 4, !tbaa !11
  %877 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %877, ptr %7, align 4, !tbaa !11
  %878 = load i32, ptr %8, align 4, !tbaa !11
  store i32 %878, ptr %17, align 4, !tbaa !11
  store i32 16, ptr %18, align 4, !tbaa !11
  %879 = load i32, ptr %18, align 4, !tbaa !11
  %880 = load i32, ptr %17, align 4, !tbaa !11
  %881 = add i32 %880, %879
  store i32 %881, ptr %17, align 4, !tbaa !11
  %882 = load i32, ptr %10, align 4, !tbaa !11
  store i32 %882, ptr %18, align 4, !tbaa !11
  store i32 3, ptr %19, align 4, !tbaa !11
  %883 = load i32, ptr %19, align 4, !tbaa !11
  %884 = and i32 %883, 31
  %885 = load i32, ptr %18, align 4, !tbaa !11
  %886 = shl i32 %885, %884
  store i32 %886, ptr %18, align 4, !tbaa !11
  %887 = load i32, ptr %18, align 4, !tbaa !11
  %888 = load i32, ptr %17, align 4, !tbaa !11
  %889 = add i32 %888, %887
  store i32 %889, ptr %17, align 4, !tbaa !11
  %890 = load ptr, ptr %4, align 8, !tbaa !5
  %891 = getelementptr inbounds %struct.w2c_hermes, ptr %890, i32 0, i32 6
  %892 = load i32, ptr %17, align 4, !tbaa !11
  %893 = zext i32 %892 to i64
  %894 = call double @f64_load(ptr noundef %891, i64 noundef %893)
  store double %894, ptr %25, align 8, !tbaa !9
  store double 0.000000e+00, ptr %26, align 8, !tbaa !9
  %895 = load double, ptr %25, align 8, !tbaa !9
  %896 = load double, ptr %26, align 8, !tbaa !9
  %897 = fcmp oeq double %895, %896
  %898 = zext i1 %897 to i32
  store i32 %898, ptr %17, align 4, !tbaa !11
  %899 = load i32, ptr %17, align 4, !tbaa !11
  %900 = icmp ne i32 %899, 0
  br i1 %900, label %901, label %902

901:                                              ; preds = %871
  br label %871

902:                                              ; preds = %871
  %903 = load i32, ptr %8, align 4, !tbaa !11
  store i32 %903, ptr %17, align 4, !tbaa !11
  store i32 16, ptr %18, align 4, !tbaa !11
  %904 = load i32, ptr %18, align 4, !tbaa !11
  %905 = load i32, ptr %17, align 4, !tbaa !11
  %906 = add i32 %905, %904
  store i32 %906, ptr %17, align 4, !tbaa !11
  %907 = load i32, ptr %8, align 4, !tbaa !11
  store i32 %907, ptr %18, align 4, !tbaa !11
  %908 = load i32, ptr %9, align 4, !tbaa !11
  store i32 %908, ptr %19, align 4, !tbaa !11
  store i32 20, ptr %20, align 4, !tbaa !11
  %909 = load i32, ptr %20, align 4, !tbaa !11
  %910 = and i32 %909, 31
  %911 = load i32, ptr %19, align 4, !tbaa !11
  %912 = lshr i32 %911, %910
  store i32 %912, ptr %19, align 4, !tbaa !11
  store i32 1046, ptr %20, align 4, !tbaa !11
  %913 = load i32, ptr %20, align 4, !tbaa !11
  %914 = load i32, ptr %19, align 4, !tbaa !11
  %915 = sub i32 %914, %913
  store i32 %915, ptr %19, align 4, !tbaa !11
  %916 = load i32, ptr %10, align 4, !tbaa !11
  store i32 %916, ptr %20, align 4, !tbaa !11
  store i32 1, ptr %21, align 4, !tbaa !11
  %917 = load i32, ptr %21, align 4, !tbaa !11
  %918 = load i32, ptr %20, align 4, !tbaa !11
  %919 = add i32 %918, %917
  store i32 %919, ptr %20, align 4, !tbaa !11
  store i32 1, ptr %21, align 4, !tbaa !11
  %920 = load ptr, ptr %4, align 8, !tbaa !5
  %921 = load i32, ptr %17, align 4, !tbaa !11
  %922 = load i32, ptr %18, align 4, !tbaa !11
  %923 = load i32, ptr %19, align 4, !tbaa !11
  %924 = load i32, ptr %20, align 4, !tbaa !11
  %925 = load i32, ptr %21, align 4, !tbaa !11
  %926 = call i32 @w2c_hermes_0x5F_rem_pio2_large(ptr noundef %920, i32 noundef %921, i32 noundef %922, i32 noundef %923, i32 noundef %924, i32 noundef %925)
  store i32 %926, ptr %17, align 4, !tbaa !11
  %927 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %927, ptr %7, align 4, !tbaa !11
  %928 = load i32, ptr %8, align 4, !tbaa !11
  store i32 %928, ptr %17, align 4, !tbaa !11
  %929 = load ptr, ptr %4, align 8, !tbaa !5
  %930 = getelementptr inbounds %struct.w2c_hermes, ptr %929, i32 0, i32 6
  %931 = load i32, ptr %17, align 4, !tbaa !11
  %932 = zext i32 %931 to i64
  %933 = call double @f64_load(ptr noundef %930, i64 noundef %932)
  store double %933, ptr %25, align 8, !tbaa !9
  %934 = load double, ptr %25, align 8, !tbaa !9
  store double %934, ptr %5, align 8, !tbaa !9
  %935 = load i64, ptr %12, align 8, !tbaa !13
  store i64 %935, ptr %22, align 8, !tbaa !13
  store i64 0, ptr %23, align 8, !tbaa !13
  %936 = load i64, ptr %22, align 8, !tbaa !13
  %937 = load i64, ptr %23, align 8, !tbaa !13
  %938 = icmp slt i64 %936, %937
  %939 = zext i1 %938 to i32
  %940 = sext i32 %939 to i64
  %941 = trunc i64 %940 to i32
  store i32 %941, ptr %17, align 4, !tbaa !11
  %942 = load i32, ptr %17, align 4, !tbaa !11
  %943 = icmp ne i32 %942, 0
  br i1 %943, label %944, label %975

944:                                              ; preds = %902
  %945 = load i32, ptr %6, align 4, !tbaa !11
  store i32 %945, ptr %17, align 4, !tbaa !11
  %946 = load double, ptr %5, align 8, !tbaa !9
  store double %946, ptr %26, align 8, !tbaa !9
  %947 = load double, ptr %26, align 8, !tbaa !9
  %948 = fneg double %947
  store double %948, ptr %26, align 8, !tbaa !9
  %949 = load ptr, ptr %4, align 8, !tbaa !5
  %950 = getelementptr inbounds %struct.w2c_hermes, ptr %949, i32 0, i32 6
  %951 = load i32, ptr %17, align 4, !tbaa !11
  %952 = zext i32 %951 to i64
  %953 = load double, ptr %26, align 8, !tbaa !9
  call void @f64_store(ptr noundef %950, i64 noundef %952, double noundef %953)
  %954 = load i32, ptr %6, align 4, !tbaa !11
  store i32 %954, ptr %17, align 4, !tbaa !11
  %955 = load i32, ptr %8, align 4, !tbaa !11
  store i32 %955, ptr %18, align 4, !tbaa !11
  %956 = load ptr, ptr %4, align 8, !tbaa !5
  %957 = getelementptr inbounds %struct.w2c_hermes, ptr %956, i32 0, i32 6
  %958 = load i32, ptr %18, align 4, !tbaa !11
  %959 = zext i32 %958 to i64
  %960 = add i64 %959, 8
  %961 = call double @f64_load(ptr noundef %957, i64 noundef %960)
  store double %961, ptr %26, align 8, !tbaa !9
  %962 = load double, ptr %26, align 8, !tbaa !9
  %963 = fneg double %962
  store double %963, ptr %26, align 8, !tbaa !9
  %964 = load ptr, ptr %4, align 8, !tbaa !5
  %965 = getelementptr inbounds %struct.w2c_hermes, ptr %964, i32 0, i32 6
  %966 = load i32, ptr %17, align 4, !tbaa !11
  %967 = zext i32 %966 to i64
  %968 = add i64 %967, 8
  %969 = load double, ptr %26, align 8, !tbaa !9
  call void @f64_store(ptr noundef %965, i64 noundef %968, double noundef %969)
  store i32 0, ptr %17, align 4, !tbaa !11
  %970 = load i32, ptr %7, align 4, !tbaa !11
  store i32 %970, ptr %18, align 4, !tbaa !11
  %971 = load i32, ptr %18, align 4, !tbaa !11
  %972 = load i32, ptr %17, align 4, !tbaa !11
  %973 = sub i32 %972, %971
  store i32 %973, ptr %17, align 4, !tbaa !11
  %974 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %974, ptr %7, align 4, !tbaa !11
  br label %997

975:                                              ; preds = %902
  %976 = load i32, ptr %6, align 4, !tbaa !11
  store i32 %976, ptr %17, align 4, !tbaa !11
  %977 = load double, ptr %5, align 8, !tbaa !9
  store double %977, ptr %26, align 8, !tbaa !9
  %978 = load ptr, ptr %4, align 8, !tbaa !5
  %979 = getelementptr inbounds %struct.w2c_hermes, ptr %978, i32 0, i32 6
  %980 = load i32, ptr %17, align 4, !tbaa !11
  %981 = zext i32 %980 to i64
  %982 = load double, ptr %26, align 8, !tbaa !9
  call void @f64_store(ptr noundef %979, i64 noundef %981, double noundef %982)
  %983 = load i32, ptr %6, align 4, !tbaa !11
  store i32 %983, ptr %17, align 4, !tbaa !11
  %984 = load i32, ptr %8, align 4, !tbaa !11
  store i32 %984, ptr %18, align 4, !tbaa !11
  %985 = load ptr, ptr %4, align 8, !tbaa !5
  %986 = getelementptr inbounds %struct.w2c_hermes, ptr %985, i32 0, i32 6
  %987 = load i32, ptr %18, align 4, !tbaa !11
  %988 = zext i32 %987 to i64
  %989 = add i64 %988, 8
  %990 = call double @f64_load(ptr noundef %986, i64 noundef %989)
  store double %990, ptr %26, align 8, !tbaa !9
  %991 = load ptr, ptr %4, align 8, !tbaa !5
  %992 = getelementptr inbounds %struct.w2c_hermes, ptr %991, i32 0, i32 6
  %993 = load i32, ptr %17, align 4, !tbaa !11
  %994 = zext i32 %993 to i64
  %995 = add i64 %994, 8
  %996 = load double, ptr %26, align 8, !tbaa !9
  call void @f64_store(ptr noundef %992, i64 noundef %995, double noundef %996)
  br label %997

997:                                              ; preds = %975, %944, %735, %710, %379, %347, %296, %264, %197, %165, %123, %91
  %998 = load i32, ptr %8, align 4, !tbaa !11
  store i32 %998, ptr %17, align 4, !tbaa !11
  store i32 48, ptr %18, align 4, !tbaa !11
  %999 = load i32, ptr %18, align 4, !tbaa !11
  %1000 = load i32, ptr %17, align 4, !tbaa !11
  %1001 = add i32 %1000, %999
  store i32 %1001, ptr %17, align 4, !tbaa !11
  %1002 = load i32, ptr %17, align 4, !tbaa !11
  %1003 = load ptr, ptr %4, align 8, !tbaa !5
  %1004 = getelementptr inbounds %struct.w2c_hermes, ptr %1003, i32 0, i32 3
  store i32 %1002, ptr %1004, align 8, !tbaa !15
  %1005 = load i32, ptr %7, align 4, !tbaa !11
  store i32 %1005, ptr %17, align 4, !tbaa !11
  %1006 = load i32, ptr %17, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #5
  ret i32 %1006
}

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

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

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


; 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: noreturn
declare void @wasm_rt_trap(i32 noundef) local_unnamed_addr #0

; Function Attrs: inlinehint nounwind uwtable
declare hidden i64 @i64_reinterpret_f64(double noundef) local_unnamed_addr #1

; Function Attrs: inlinehint nounwind uwtable
declare hidden double @f64_reinterpret_i64(i64 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden double @wasm_fabs(double noundef) local_unnamed_addr #2

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

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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @w2c_hermes_0x5F_rem_pio2(ptr noundef %0, double noundef %1, i32 noundef %2) local_unnamed_addr #2 {
  %4 = getelementptr inbounds i8, ptr %0, i64 24
  %5 = load i32, ptr %4, align 8, !tbaa !5
  %6 = add i32 %5, -48
  store i32 %6, ptr %4, align 8, !tbaa !5
  %7 = tail call i64 @i64_reinterpret_f64(double noundef %1)
  %8 = lshr i64 %7, 32
  %9 = trunc nuw i64 %8 to i32
  %10 = and i32 %9, 2147483647
  %11 = icmp ult i32 %10, 1074752123
  br i1 %11, label %12, label %43

12:                                               ; preds = %3
  %13 = and i32 %9, 1048575
  %14 = icmp eq i32 %13, 598523
  br i1 %14, label %83, label %15

15:                                               ; preds = %12
  %16 = icmp ult i32 %10, 1073928573
  %17 = icmp sgt i64 %7, -1
  %18 = getelementptr inbounds i8, ptr %0, i64 40
  %19 = zext i32 %2 to i64
  %20 = add nuw nsw i64 %19, 8
  br i1 %16, label %21, label %32

21:                                               ; preds = %15
  br i1 %17, label %22, label %27

22:                                               ; preds = %21
  %23 = fadd double %1, 0xBFF921FB54400000
  %24 = fadd double %23, 0xBDD0B4611A626331
  tail call void @f64_store(ptr noundef nonnull %18, i64 noundef %19, double noundef %24)
  %25 = fsub double %23, %24
  %26 = fadd double %25, 0xBDD0B4611A626331
  tail call void @f64_store(ptr noundef nonnull %18, i64 noundef %20, double noundef %26)
  br label %228

27:                                               ; preds = %21
  %28 = fadd double %1, 0x3FF921FB54400000
  %29 = fadd double %28, 0x3DD0B4611A626331
  tail call void @f64_store(ptr noundef nonnull %18, i64 noundef %19, double noundef %29)
  %30 = fsub double %28, %29
  %31 = fadd double %30, 0x3DD0B4611A626331
  tail call void @f64_store(ptr noundef nonnull %18, i64 noundef %20, double noundef %31)
  br label %228

32:                                               ; preds = %15
  br i1 %17, label %33, label %38

33:                                               ; preds = %32
  %34 = fadd double %1, 0xC00921FB54400000
  %35 = fadd double %34, 0xBDE0B4611A626331
  tail call void @f64_store(ptr noundef nonnull %18, i64 noundef %19, double noundef %35)
  %36 = fsub double %34, %35
  %37 = fadd double %36, 0xBDE0B4611A626331
  tail call void @f64_store(ptr noundef nonnull %18, i64 noundef %20, double noundef %37)
  br label %228

38:                                               ; preds = %32
  %39 = fadd double %1, 0x400921FB54400000
  %40 = fadd double %39, 0x3DE0B4611A626331
  tail call void @f64_store(ptr noundef nonnull %18, i64 noundef %19, double noundef %40)
  %41 = fsub double %39, %40
  %42 = fadd double %41, 0x3DE0B4611A626331
  tail call void @f64_store(ptr noundef nonnull %18, i64 noundef %20, double noundef %42)
  br label %228

43:                                               ; preds = %3
  %44 = icmp ult i32 %10, 1075594812
  br i1 %44, label %45, label %81

45:                                               ; preds = %43
  %46 = icmp ult i32 %10, 1075183037
  br i1 %46, label %47, label %64

47:                                               ; preds = %45
  %48 = icmp eq i32 %10, 1074977148
  br i1 %48, label %83, label %49

49:                                               ; preds = %47
  %50 = icmp sgt i64 %7, -1
  %51 = getelementptr inbounds i8, ptr %0, i64 40
  %52 = zext i32 %2 to i64
  %53 = add nuw nsw i64 %52, 8
  br i1 %50, label %54, label %59

54:                                               ; preds = %49
  %55 = fadd double %1, 0xC012D97C7F300000
  %56 = fadd double %55, 0xBDE90E91A79394CA
  tail call void @f64_store(ptr noundef nonnull %51, i64 noundef %52, double noundef %56)
  %57 = fsub double %55, %56
  %58 = fadd double %57, 0xBDE90E91A79394CA
  tail call void @f64_store(ptr noundef nonnull %51, i64 noundef %53, double noundef %58)
  br label %228

59:                                               ; preds = %49
  %60 = fadd double %1, 0x4012D97C7F300000
  %61 = fadd double %60, 0x3DE90E91A79394CA
  tail call void @f64_store(ptr noundef nonnull %51, i64 noundef %52, double noundef %61)
  %62 = fsub double %60, %61
  %63 = fadd double %62, 0x3DE90E91A79394CA
  tail call void @f64_store(ptr noundef nonnull %51, i64 noundef %53, double noundef %63)
  br label %228

64:                                               ; preds = %45
  %65 = icmp eq i32 %10, 1075388923
  br i1 %65, label %83, label %66

66:                                               ; preds = %64
  %67 = icmp sgt i64 %7, -1
  %68 = getelementptr inbounds i8, ptr %0, i64 40
  %69 = zext i32 %2 to i64
  %70 = add nuw nsw i64 %69, 8
  br i1 %67, label %71, label %76

71:                                               ; preds = %66
  %72 = fadd double %1, 0xC01921FB54400000
  %73 = fadd double %72, 0xBDF0B4611A626331
  tail call void @f64_store(ptr noundef nonnull %68, i64 noundef %69, double noundef %73)
  %74 = fsub double %72, %73
  %75 = fadd double %74, 0xBDF0B4611A626331
  tail call void @f64_store(ptr noundef nonnull %68, i64 noundef %70, double noundef %75)
  br label %228

76:                                               ; preds = %66
  %77 = fadd double %1, 0x401921FB54400000
  %78 = fadd double %77, 0x3DF0B4611A626331
  tail call void @f64_store(ptr noundef nonnull %68, i64 noundef %69, double noundef %78)
  %79 = fsub double %77, %78
  %80 = fadd double %79, 0x3DF0B4611A626331
  tail call void @f64_store(ptr noundef nonnull %68, i64 noundef %70, double noundef %80)
  br label %228

81:                                               ; preds = %43
  %82 = icmp ugt i32 %10, 1094263290
  br i1 %82, label %155, label %83

83:                                               ; preds = %81, %64, %47, %12
  %84 = fmul double %1, 0x3FE45F306DC9C883
  %85 = fadd double %84, 0x4338000000000000
  %86 = fadd double %85, 0xC338000000000000
  %87 = fmul double %86, 0x3FF921FB54400000
  %88 = fsub double %1, %87
  %89 = fmul double %86, 0x3DD0B4611A626331
  %90 = fsub double %88, %89
  %91 = fcmp olt double %90, 0xBFE921FB54442D18
  %92 = tail call double @wasm_fabs(double noundef %86)
  %93 = fcmp olt double %92, 0x41E0000000000000
  br i1 %93, label %94, label %103

94:                                               ; preds = %83
  %95 = fcmp uno double %86, 0.000000e+00
  br i1 %95, label %96, label %97, !prof !15

96:                                               ; preds = %94
  tail call void @wasm_rt_trap(i32 noundef 4) #3
  unreachable

97:                                               ; preds = %94
  %98 = fcmp ule double %86, 0xC1E0000000200000
  %99 = fcmp uge double %86, 0x41E0000000000000
  %.not600 = or i1 %98, %99
  br i1 %.not600, label %100, label %101, !prof !15

100:                                              ; preds = %97
  tail call void @wasm_rt_trap(i32 noundef 2) #3
  unreachable

101:                                              ; preds = %97
  %102 = fptosi double %86 to i32
  br label %103

103:                                              ; preds = %83, %101
  %.0586 = phi i32 [ %102, %101 ], [ -2147483648, %83 ]
  br i1 %91, label %104, label %110

104:                                              ; preds = %103
  %105 = add i32 %.0586, -1
  %106 = fadd double %86, -1.000000e+00
  %107 = fmul double %106, 0x3DD0B4611A626331
  %108 = fmul double %106, 0x3FF921FB54400000
  %109 = fsub double %1, %108
  br label %118

110:                                              ; preds = %103
  %111 = fcmp ule double %90, 0x3FE921FB54442D18
  br i1 %111, label %118, label %112

112:                                              ; preds = %110
  %113 = add i32 %.0586, 1
  %114 = fadd double %86, 1.000000e+00
  %115 = fmul double %114, 0x3DD0B4611A626331
  %116 = fmul double %114, 0x3FF921FB54400000
  %117 = fsub double %1, %116
  br label %118

118:                                              ; preds = %110, %112, %104
  %.0591 = phi double [ %106, %104 ], [ %86, %110 ], [ %114, %112 ]
  %.0589 = phi double [ %109, %104 ], [ %88, %110 ], [ %117, %112 ]
  %.0587 = phi double [ %107, %104 ], [ %89, %110 ], [ %115, %112 ]
  %.0583 = phi i32 [ %105, %104 ], [ %.0586, %110 ], [ %113, %112 ]
  %119 = fsub double %.0589, %.0587
  %120 = getelementptr inbounds i8, ptr %0, i64 40
  %121 = zext i32 %2 to i64
  tail call void @f64_store(ptr noundef nonnull %120, i64 noundef %121, double noundef %119)
  %122 = lshr i32 %10, 20
  %123 = tail call i64 @i64_reinterpret_f64(double noundef %119)
  %124 = lshr i64 %123, 52
  %125 = trunc nuw nsw i64 %124 to i32
  %126 = and i32 %125, 2047
  %127 = sub nsw i32 %122, %126
  %128 = icmp slt i32 %127, 17
  br i1 %128, label %151, label %129

129:                                              ; preds = %118
  %130 = fmul double %.0591, 0x3DD0B4611A600000
  %131 = fsub double %.0589, %130
  %132 = fmul double %.0591, 0x3BA3198A2E037073
  %133 = fsub double %.0589, %131
  %134 = fsub double %133, %130
  %135 = fsub double %132, %134
  %136 = fsub double %131, %135
  tail call void @f64_store(ptr noundef nonnull %120, i64 noundef %121, double noundef %136)
  %137 = tail call i64 @i64_reinterpret_f64(double noundef %136)
  %138 = lshr i64 %137, 52
  %139 = trunc nuw nsw i64 %138 to i32
  %140 = and i32 %139, 2047
  %141 = sub nsw i32 %122, %140
  %142 = icmp slt i32 %141, 50
  br i1 %142, label %151, label %143

143:                                              ; preds = %129
  %144 = fmul double %.0591, 0x3BA3198A2E000000
  %145 = fsub double %131, %144
  %146 = fmul double %.0591, 0x397B839A252049C1
  %147 = fsub double %131, %145
  %148 = fsub double %147, %144
  %149 = fsub double %146, %148
  %150 = fsub double %145, %149
  tail call void @f64_store(ptr noundef nonnull %120, i64 noundef %121, double noundef %150)
  br label %151

151:                                              ; preds = %129, %118, %143
  %.1590 = phi double [ %.0589, %118 ], [ %145, %143 ], [ %131, %129 ]
  %.1588 = phi double [ %.0587, %118 ], [ %149, %143 ], [ %135, %129 ]
  %.0 = phi double [ %119, %118 ], [ %150, %143 ], [ %136, %129 ]
  %152 = fsub double %.1590, %.0
  %153 = fsub double %152, %.1588
  %154 = add nuw nsw i64 %121, 8
  tail call void @f64_store(ptr noundef nonnull %120, i64 noundef %154, double noundef %153)
  br label %228

155:                                              ; preds = %81
  %156 = icmp ugt i32 %10, 2146435071
  br i1 %156, label %157, label %162

157:                                              ; preds = %155
  %158 = fsub double %1, %1
  %159 = getelementptr inbounds i8, ptr %0, i64 40
  %160 = zext i32 %2 to i64
  tail call void @f64_store(ptr noundef nonnull %159, i64 noundef %160, double noundef %158)
  %161 = add nuw nsw i64 %160, 8
  tail call void @f64_store(ptr noundef nonnull %159, i64 noundef %161, double noundef %158)
  br label %228

162:                                              ; preds = %155
  %163 = and i64 %7, 4503599627370495
  %164 = or disjoint i64 %163, 4710765210229538816
  %165 = tail call double @f64_reinterpret_i64(i64 noundef %164)
  %166 = add i32 %5, -32
  %167 = getelementptr inbounds i8, ptr %0, i64 40
  %168 = tail call double @wasm_fabs(double noundef %165)
  %169 = fcmp olt double %168, 0x41E0000000000000
  br i1 %169, label %170, label %180

170:                                              ; preds = %162
  %171 = fcmp uno double %165, 0.000000e+00
  br i1 %171, label %172, label %173, !prof !15

172:                                              ; preds = %187, %170
  tail call void @wasm_rt_trap(i32 noundef 4) #3
  unreachable

173:                                              ; preds = %170
  %174 = fcmp ule double %165, 0xC1E0000000200000
  %175 = fcmp uge double %165, 0x41E0000000000000
  %.not597 = or i1 %174, %175
  br i1 %.not597, label %176, label %177, !prof !15

176:                                              ; preds = %189, %173
  tail call void @wasm_rt_trap(i32 noundef 2) #3
  unreachable

177:                                              ; preds = %173
  %178 = fptosi double %165 to i32
  %179 = sitofp i32 %178 to double
  br label %180

180:                                              ; preds = %162, %177
  %.0585 = phi double [ %179, %177 ], [ 0xC1E0000000000000, %162 ]
  %181 = zext i32 %166 to i64
  tail call void @f64_store(ptr noundef nonnull %167, i64 noundef %181, double noundef %.0585)
  %182 = fsub double %165, %.0585
  %183 = fmul double %182, 0x4170000000000000
  %184 = add i32 %5, -24
  %185 = tail call double @wasm_fabs(double noundef %183)
  %186 = fcmp olt double %185, 0x41E0000000000000
  br i1 %186, label %187, label %195

187:                                              ; preds = %180
  %188 = fcmp uno double %183, 0.000000e+00
  br i1 %188, label %172, label %189, !prof !15

189:                                              ; preds = %187
  %190 = fcmp ule double %183, 0xC1E0000000200000
  %191 = fcmp uge double %183, 0x41E0000000000000
  %.not597.1 = or i1 %190, %191
  br i1 %.not597.1, label %176, label %192, !prof !15

192:                                              ; preds = %189
  %193 = fptosi double %183 to i32
  %194 = sitofp i32 %193 to double
  br label %195

195:                                              ; preds = %192, %180
  %.0585.1 = phi double [ %194, %192 ], [ 0xC1E0000000000000, %180 ]
  %196 = zext i32 %184 to i64
  tail call void @f64_store(ptr noundef nonnull %167, i64 noundef %196, double noundef %.0585.1)
  %197 = fsub double %183, %.0585.1
  %198 = fmul double %197, 0x4170000000000000
  %199 = zext i32 %6 to i64
  %200 = add nuw nsw i64 %199, 32
  tail call void @f64_store(ptr noundef nonnull %167, i64 noundef %200, double noundef %198)
  br label %201

201:                                              ; preds = %201, %195
  %.2 = phi i32 [ 2, %195 ], [ %202, %201 ]
  %202 = add i32 %.2, -1
  %203 = shl i32 %.2, 3
  %204 = add i32 %203, %166
  %205 = zext i32 %204 to i64
  %206 = tail call double @f64_load(ptr noundef nonnull %167, i64 noundef %205)
  %207 = fcmp oeq double %206, 0.000000e+00
  br i1 %207, label %201, label %208

208:                                              ; preds = %201
  %209 = lshr i32 %10, 20
  %210 = add nsw i32 %209, -1046
  %211 = add i32 %.2, 1
  %212 = tail call i32 @w2c_hermes_0x5F_rem_pio2_large(ptr noundef %0, i32 noundef %166, i32 noundef %6, i32 noundef %210, i32 noundef %211, i32 noundef 1)
  %213 = tail call double @f64_load(ptr noundef nonnull %167, i64 noundef %199)
  %214 = icmp slt i64 %7, 0
  br i1 %214, label %215, label %223

215:                                              ; preds = %208
  %216 = fneg double %213
  %217 = zext i32 %2 to i64
  tail call void @f64_store(ptr noundef nonnull %167, i64 noundef %217, double noundef %216)
  %218 = add nuw nsw i64 %199, 8
  %219 = tail call double @f64_load(ptr noundef nonnull %167, i64 noundef %218)
  %220 = fneg double %219
  %221 = add nuw nsw i64 %217, 8
  tail call void @f64_store(ptr noundef nonnull %167, i64 noundef %221, double noundef %220)
  %222 = sub i32 0, %212
  br label %228

223:                                              ; preds = %208
  %224 = zext i32 %2 to i64
  tail call void @f64_store(ptr noundef nonnull %167, i64 noundef %224, double noundef %213)
  %225 = add nuw nsw i64 %199, 8
  %226 = tail call double @f64_load(ptr noundef nonnull %167, i64 noundef %225)
  %227 = add nuw nsw i64 %224, 8
  tail call void @f64_store(ptr noundef nonnull %167, i64 noundef %227, double noundef %226)
  br label %228

228:                                              ; preds = %223, %215, %157, %151, %76, %71, %59, %54, %38, %33, %27, %22
  %.3 = phi i32 [ %.0583, %151 ], [ 1, %22 ], [ -1, %27 ], [ 2, %33 ], [ -2, %38 ], [ 3, %54 ], [ -3, %59 ], [ 4, %71 ], [ -4, %76 ], [ 0, %157 ], [ %222, %215 ], [ %212, %223 ]
  store i32 %5, ptr %4, align 8, !tbaa !5
  ret i32 %.3
}

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

!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 = !{!"branch_weights", !"expected", i32 1, i32 2000}


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