; LLVM IR from CLASS-SZ/class_sz :: class-sz/tools (hyperspherical)

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

; 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: nounwind
declare double @sqrt(double noundef) #1

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

; Function Attrs: nounwind
declare double @sin(double noundef) #1

; Function Attrs: nounwind
declare double @tan(double noundef) #1

; Function Attrs: nounwind
declare double @sinh(double noundef) #1

; Function Attrs: nounwind
declare double @tanh(double noundef) #1

; Function Attrs: nounwind
declare double @cos(double noundef) #1

; Function Attrs: nounwind uwtable
define dso_local i32 @HypersphericalExplicit(i32 noundef %0, i32 noundef %1, double noundef %2, double noundef %3, ptr noundef %4) #3 {
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca ptr, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  store i32 %0, ptr %7, align 4, !tbaa !5
  store i32 %1, ptr %8, align 4, !tbaa !5
  store double %2, ptr %9, align 8, !tbaa !9
  store double %3, ptr %10, align 8, !tbaa !9
  store ptr %4, ptr %11, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #4
  %30 = load double, ptr %9, align 8, !tbaa !9
  %31 = load double, ptr %9, align 8, !tbaa !9
  %32 = fmul double %30, %31
  store double %32, ptr %17, align 8, !tbaa !9
  %33 = load double, ptr %10, align 8, !tbaa !9
  %34 = load double, ptr %9, align 8, !tbaa !9
  %35 = fmul double %33, %34
  store double %35, ptr %13, align 8, !tbaa !9
  %36 = load i32, ptr %7, align 4, !tbaa !5
  %37 = icmp eq i32 %36, -1
  br i1 %37, label %38, label %45

38:                                               ; preds = %5
  %39 = load double, ptr %10, align 8, !tbaa !9
  %40 = call double @tanh(double noundef %39) #4
  %41 = fdiv double 1.000000e+00, %40
  store double %41, ptr %16, align 8, !tbaa !9
  %42 = load double, ptr %10, align 8, !tbaa !9
  %43 = call double @sinh(double noundef %42) #4
  %44 = fdiv double 1.000000e+00, %43
  store double %44, ptr %23, align 8, !tbaa !9
  br label %60

45:                                               ; preds = %5
  %46 = load i32, ptr %7, align 4, !tbaa !5
  %47 = icmp eq i32 %46, 1
  br i1 %47, label %48, label %55

48:                                               ; preds = %45
  %49 = load double, ptr %10, align 8, !tbaa !9
  %50 = call double @tan(double noundef %49) #4
  %51 = fdiv double 1.000000e+00, %50
  store double %51, ptr %16, align 8, !tbaa !9
  %52 = load double, ptr %10, align 8, !tbaa !9
  %53 = call double @sin(double noundef %52) #4
  %54 = fdiv double 1.000000e+00, %53
  store double %54, ptr %23, align 8, !tbaa !9
  br label %59

55:                                               ; preds = %45
  %56 = load double, ptr %10, align 8, !tbaa !9
  %57 = fdiv double 1.000000e+00, %56
  store double %57, ptr %16, align 8, !tbaa !9
  %58 = load double, ptr %16, align 8, !tbaa !9
  store double %58, ptr %23, align 8, !tbaa !9
  br label %59

59:                                               ; preds = %55, %48
  br label %60

60:                                               ; preds = %59, %38
  %61 = load i32, ptr %8, align 4, !tbaa !5
  switch i32 %61, label %797 [
    i32 0, label %62
    i32 1, label %64
    i32 2, label %72
    i32 3, label %99
    i32 4, label %140
    i32 5, label %194
    i32 6, label %264
    i32 7, label %360
    i32 8, label %481
    i32 9, label %626
  ]

62:                                               ; preds = %60
  store double 0.000000e+00, ptr %14, align 8, !tbaa !9
  store double 1.000000e+00, ptr %15, align 8, !tbaa !9
  %63 = load double, ptr %17, align 8, !tbaa !9
  store double %63, ptr %12, align 8, !tbaa !9
  br label %799

64:                                               ; preds = %60
  store double -1.000000e+00, ptr %14, align 8, !tbaa !9
  %65 = load double, ptr %16, align 8, !tbaa !9
  store double %65, ptr %15, align 8, !tbaa !9
  %66 = load double, ptr %17, align 8, !tbaa !9
  %67 = load double, ptr %17, align 8, !tbaa !9
  %68 = load i32, ptr %7, align 4, !tbaa !5
  %69 = sitofp i32 %68 to double
  %70 = fsub double %67, %69
  %71 = fmul double %66, %70
  store double %71, ptr %12, align 8, !tbaa !9
  br label %799

72:                                               ; preds = %60
  %73 = load double, ptr %17, align 8, !tbaa !9
  %74 = load double, ptr %17, align 8, !tbaa !9
  %75 = fmul double %73, %74
  store double %75, ptr %18, align 8, !tbaa !9
  %76 = load double, ptr %23, align 8, !tbaa !9
  %77 = load double, ptr %23, align 8, !tbaa !9
  %78 = fmul double %76, %77
  store double %78, ptr %24, align 8, !tbaa !9
  %79 = load double, ptr %16, align 8, !tbaa !9
  %80 = fmul double -3.000000e+00, %79
  store double %80, ptr %14, align 8, !tbaa !9
  %81 = load double, ptr %17, align 8, !tbaa !9
  %82 = fneg double %81
  %83 = load double, ptr %24, align 8, !tbaa !9
  %84 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %83, double %82)
  %85 = load i32, ptr %7, align 4, !tbaa !5
  %86 = mul nsw i32 2, %85
  %87 = sitofp i32 %86 to double
  %88 = fsub double %84, %87
  store double %88, ptr %15, align 8, !tbaa !9
  %89 = load double, ptr %17, align 8, !tbaa !9
  %90 = load double, ptr %18, align 8, !tbaa !9
  %91 = fadd double 4.000000e+00, %90
  %92 = load double, ptr %17, align 8, !tbaa !9
  %93 = fmul double 5.000000e+00, %92
  %94 = load i32, ptr %7, align 4, !tbaa !5
  %95 = sitofp i32 %94 to double
  %96 = fneg double %93
  %97 = call double @llvm.fmuladd.f64(double %96, double %95, double %91)
  %98 = fmul double %89, %97
  store double %98, ptr %12, align 8, !tbaa !9
  br label %799

99:                                               ; preds = %60
  %100 = load double, ptr %17, align 8, !tbaa !9
  %101 = load double, ptr %17, align 8, !tbaa !9
  %102 = fmul double %100, %101
  store double %102, ptr %18, align 8, !tbaa !9
  %103 = load double, ptr %23, align 8, !tbaa !9
  %104 = load double, ptr %23, align 8, !tbaa !9
  %105 = fmul double %103, %104
  store double %105, ptr %24, align 8, !tbaa !9
  %106 = load double, ptr %17, align 8, !tbaa !9
  %107 = load double, ptr %24, align 8, !tbaa !9
  %108 = call double @llvm.fmuladd.f64(double -1.500000e+01, double %107, double %106)
  %109 = load i32, ptr %7, align 4, !tbaa !5
  %110 = mul nsw i32 11, %109
  %111 = sitofp i32 %110 to double
  %112 = fadd double %108, %111
  store double %112, ptr %14, align 8, !tbaa !9
  %113 = load double, ptr %16, align 8, !tbaa !9
  %114 = load double, ptr %17, align 8, !tbaa !9
  %115 = load double, ptr %24, align 8, !tbaa !9
  %116 = fmul double 1.500000e+01, %115
  %117 = call double @llvm.fmuladd.f64(double -6.000000e+00, double %114, double %116)
  %118 = load i32, ptr %7, align 4, !tbaa !5
  %119 = mul nsw i32 6, %118
  %120 = sitofp i32 %119 to double
  %121 = fsub double %117, %120
  %122 = fmul double %113, %121
  store double %122, ptr %15, align 8, !tbaa !9
  %123 = load double, ptr %17, align 8, !tbaa !9
  %124 = load double, ptr %17, align 8, !tbaa !9
  %125 = load double, ptr %17, align 8, !tbaa !9
  %126 = load double, ptr %18, align 8, !tbaa !9
  %127 = fmul double %125, %126
  %128 = call double @llvm.fmuladd.f64(double 4.900000e+01, double %124, double %127)
  %129 = load i32, ptr %7, align 4, !tbaa !5
  %130 = mul nsw i32 36, %129
  %131 = sitofp i32 %130 to double
  %132 = fsub double %128, %131
  %133 = load double, ptr %18, align 8, !tbaa !9
  %134 = fmul double 1.400000e+01, %133
  %135 = load i32, ptr %7, align 4, !tbaa !5
  %136 = sitofp i32 %135 to double
  %137 = fneg double %134
  %138 = call double @llvm.fmuladd.f64(double %137, double %136, double %132)
  %139 = fmul double %123, %138
  store double %139, ptr %12, align 8, !tbaa !9
  br label %799

140:                                              ; preds = %60
  %141 = load double, ptr %17, align 8, !tbaa !9
  %142 = load double, ptr %17, align 8, !tbaa !9
  %143 = fmul double %141, %142
  store double %143, ptr %18, align 8, !tbaa !9
  %144 = load double, ptr %23, align 8, !tbaa !9
  %145 = load double, ptr %23, align 8, !tbaa !9
  %146 = fmul double %144, %145
  store double %146, ptr %24, align 8, !tbaa !9
  %147 = load double, ptr %24, align 8, !tbaa !9
  %148 = load double, ptr %24, align 8, !tbaa !9
  %149 = fmul double %147, %148
  store double %149, ptr %25, align 8, !tbaa !9
  %150 = load double, ptr %16, align 8, !tbaa !9
  %151 = load double, ptr %17, align 8, !tbaa !9
  %152 = load double, ptr %24, align 8, !tbaa !9
  %153 = fmul double 1.050000e+02, %152
  %154 = fneg double %153
  %155 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %151, double %154)
  %156 = load i32, ptr %7, align 4, !tbaa !5
  %157 = mul nsw i32 50, %156
  %158 = sitofp i32 %157 to double
  %159 = fadd double %155, %158
  %160 = fmul double %150, %159
  store double %160, ptr %14, align 8, !tbaa !9
  %161 = load double, ptr %18, align 8, !tbaa !9
  %162 = fadd double 2.400000e+01, %161
  %163 = load double, ptr %25, align 8, !tbaa !9
  %164 = call double @llvm.fmuladd.f64(double 1.050000e+02, double %163, double %162)
  %165 = load double, ptr %24, align 8, !tbaa !9
  %166 = load double, ptr %17, align 8, !tbaa !9
  %167 = load i32, ptr %7, align 4, !tbaa !5
  %168 = mul nsw i32 120, %167
  %169 = sitofp i32 %168 to double
  %170 = fneg double %169
  %171 = call double @llvm.fmuladd.f64(double -4.500000e+01, double %166, double %170)
  %172 = call double @llvm.fmuladd.f64(double %165, double %171, double %164)
  %173 = load double, ptr %17, align 8, !tbaa !9
  %174 = fmul double 3.500000e+01, %173
  %175 = load i32, ptr %7, align 4, !tbaa !5
  %176 = sitofp i32 %175 to double
  %177 = call double @llvm.fmuladd.f64(double %174, double %176, double %172)
  store double %177, ptr %15, align 8, !tbaa !9
  %178 = load double, ptr %17, align 8, !tbaa !9
  %179 = load double, ptr %18, align 8, !tbaa !9
  %180 = call double @llvm.fmuladd.f64(double 2.730000e+02, double %179, double 5.760000e+02)
  %181 = load double, ptr %18, align 8, !tbaa !9
  %182 = load double, ptr %18, align 8, !tbaa !9
  %183 = call double @llvm.fmuladd.f64(double %181, double %182, double %180)
  %184 = load double, ptr %17, align 8, !tbaa !9
  %185 = fmul double 1.000000e+01, %184
  %186 = load double, ptr %18, align 8, !tbaa !9
  %187 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %186, double 8.200000e+01)
  %188 = fmul double %185, %187
  %189 = load i32, ptr %7, align 4, !tbaa !5
  %190 = sitofp i32 %189 to double
  %191 = fneg double %188
  %192 = call double @llvm.fmuladd.f64(double %191, double %190, double %183)
  %193 = fmul double %178, %192
  store double %193, ptr %12, align 8, !tbaa !9
  br label %799

194:                                              ; preds = %60
  %195 = load double, ptr %9, align 8, !tbaa !9
  %196 = load double, ptr %9, align 8, !tbaa !9
  %197 = fmul double %195, %196
  store double %197, ptr %17, align 8, !tbaa !9
  %198 = load double, ptr %17, align 8, !tbaa !9
  %199 = load double, ptr %17, align 8, !tbaa !9
  %200 = fmul double %198, %199
  store double %200, ptr %18, align 8, !tbaa !9
  %201 = load double, ptr %23, align 8, !tbaa !9
  %202 = load double, ptr %23, align 8, !tbaa !9
  %203 = fmul double %201, %202
  store double %203, ptr %24, align 8, !tbaa !9
  %204 = load double, ptr %24, align 8, !tbaa !9
  %205 = load double, ptr %24, align 8, !tbaa !9
  %206 = fmul double %204, %205
  store double %206, ptr %25, align 8, !tbaa !9
  %207 = load double, ptr %18, align 8, !tbaa !9
  %208 = fsub double -2.740000e+02, %207
  %209 = load double, ptr %17, align 8, !tbaa !9
  %210 = fmul double 1.050000e+02, %209
  %211 = load double, ptr %24, align 8, !tbaa !9
  %212 = call double @llvm.fmuladd.f64(double %210, double %211, double %208)
  %213 = load double, ptr %25, align 8, !tbaa !9
  %214 = call double @llvm.fmuladd.f64(double -9.450000e+02, double %213, double %212)
  %215 = load double, ptr %17, align 8, !tbaa !9
  %216 = fmul double 8.500000e+01, %215
  %217 = load i32, ptr %7, align 4, !tbaa !5
  %218 = sitofp i32 %217 to double
  %219 = fneg double %216
  %220 = call double @llvm.fmuladd.f64(double %219, double %218, double %214)
  %221 = load double, ptr %24, align 8, !tbaa !9
  %222 = fmul double 1.155000e+03, %221
  %223 = load i32, ptr %7, align 4, !tbaa !5
  %224 = sitofp i32 %223 to double
  %225 = call double @llvm.fmuladd.f64(double %222, double %224, double %220)
  store double %225, ptr %14, align 8, !tbaa !9
  %226 = load double, ptr %16, align 8, !tbaa !9
  %227 = load double, ptr %18, align 8, !tbaa !9
  %228 = call double @llvm.fmuladd.f64(double 1.500000e+01, double %227, double 1.200000e+02)
  %229 = load double, ptr %25, align 8, !tbaa !9
  %230 = call double @llvm.fmuladd.f64(double 9.450000e+02, double %229, double %228)
  %231 = load double, ptr %24, align 8, !tbaa !9
  %232 = load double, ptr %17, align 8, !tbaa !9
  %233 = load i32, ptr %7, align 4, !tbaa !5
  %234 = mul nsw i32 840, %233
  %235 = sitofp i32 %234 to double
  %236 = fneg double %235
  %237 = call double @llvm.fmuladd.f64(double -4.200000e+02, double %232, double %236)
  %238 = call double @llvm.fmuladd.f64(double %231, double %237, double %230)
  %239 = load double, ptr %17, align 8, !tbaa !9
  %240 = fmul double 2.250000e+02, %239
  %241 = load i32, ptr %7, align 4, !tbaa !5
  %242 = sitofp i32 %241 to double
  %243 = call double @llvm.fmuladd.f64(double %240, double %242, double %238)
  %244 = fmul double %226, %243
  store double %244, ptr %15, align 8, !tbaa !9
  %245 = load double, ptr %17, align 8, !tbaa !9
  %246 = load double, ptr %17, align 8, !tbaa !9
  %247 = load double, ptr %18, align 8, !tbaa !9
  %248 = call double @llvm.fmuladd.f64(double 1.023000e+03, double %247, double 2.107600e+04)
  %249 = load double, ptr %18, align 8, !tbaa !9
  %250 = load double, ptr %18, align 8, !tbaa !9
  %251 = call double @llvm.fmuladd.f64(double %249, double %250, double %248)
  %252 = load double, ptr %18, align 8, !tbaa !9
  %253 = fmul double 1.100000e+01, %252
  %254 = load double, ptr %18, align 8, !tbaa !9
  %255 = fadd double 1.390000e+02, %254
  %256 = call double @llvm.fmuladd.f64(double %253, double %255, double 2.880000e+03)
  %257 = fmul double 5.000000e+00, %256
  %258 = load i32, ptr %7, align 4, !tbaa !5
  %259 = sitofp i32 %258 to double
  %260 = fmul double %257, %259
  %261 = fneg double %260
  %262 = call double @llvm.fmuladd.f64(double %246, double %251, double %261)
  %263 = fmul double %245, %262
  store double %263, ptr %12, align 8, !tbaa !9
  br label %799

264:                                              ; preds = %60
  %265 = load double, ptr %9, align 8, !tbaa !9
  %266 = load double, ptr %9, align 8, !tbaa !9
  %267 = fmul double %265, %266
  store double %267, ptr %17, align 8, !tbaa !9
  %268 = load double, ptr %17, align 8, !tbaa !9
  %269 = load double, ptr %17, align 8, !tbaa !9
  %270 = fmul double %268, %269
  store double %270, ptr %18, align 8, !tbaa !9
  %271 = load double, ptr %18, align 8, !tbaa !9
  %272 = load double, ptr %17, align 8, !tbaa !9
  %273 = fmul double %271, %272
  store double %273, ptr %19, align 8, !tbaa !9
  %274 = load double, ptr %18, align 8, !tbaa !9
  %275 = load double, ptr %18, align 8, !tbaa !9
  %276 = fmul double %274, %275
  store double %276, ptr %20, align 8, !tbaa !9
  %277 = load double, ptr %23, align 8, !tbaa !9
  %278 = load double, ptr %23, align 8, !tbaa !9
  %279 = fmul double %277, %278
  store double %279, ptr %24, align 8, !tbaa !9
  %280 = load double, ptr %24, align 8, !tbaa !9
  %281 = load double, ptr %24, align 8, !tbaa !9
  %282 = fmul double %280, %281
  store double %282, ptr %25, align 8, !tbaa !9
  %283 = load double, ptr %25, align 8, !tbaa !9
  %284 = load double, ptr %24, align 8, !tbaa !9
  %285 = fmul double %283, %284
  store double %285, ptr %26, align 8, !tbaa !9
  %286 = load double, ptr %16, align 8, !tbaa !9
  %287 = load double, ptr %18, align 8, !tbaa !9
  %288 = call double @llvm.fmuladd.f64(double -2.100000e+01, double %287, double -1.764000e+03)
  %289 = load double, ptr %17, align 8, !tbaa !9
  %290 = fmul double 1.260000e+03, %289
  %291 = load double, ptr %24, align 8, !tbaa !9
  %292 = call double @llvm.fmuladd.f64(double %290, double %291, double %288)
  %293 = load double, ptr %25, align 8, !tbaa !9
  %294 = call double @llvm.fmuladd.f64(double -1.039500e+04, double %293, double %292)
  %295 = load double, ptr %17, align 8, !tbaa !9
  %296 = fmul double 7.350000e+02, %295
  %297 = load i32, ptr %7, align 4, !tbaa !5
  %298 = sitofp i32 %297 to double
  %299 = fneg double %296
  %300 = call double @llvm.fmuladd.f64(double %299, double %298, double %294)
  %301 = load double, ptr %24, align 8, !tbaa !9
  %302 = fmul double 1.008000e+04, %301
  %303 = load i32, ptr %7, align 4, !tbaa !5
  %304 = sitofp i32 %303 to double
  %305 = call double @llvm.fmuladd.f64(double %302, double %304, double %300)
  %306 = fmul double %286, %305
  store double %306, ptr %14, align 8, !tbaa !9
  %307 = load double, ptr %17, align 8, !tbaa !9
  %308 = load double, ptr %19, align 8, !tbaa !9
  %309 = fneg double %308
  %310 = call double @llvm.fmuladd.f64(double -1.624000e+03, double %307, double %309)
  %311 = load double, ptr %26, align 8, !tbaa !9
  %312 = call double @llvm.fmuladd.f64(double 1.039500e+04, double %311, double %310)
  %313 = load double, ptr %25, align 8, !tbaa !9
  %314 = load double, ptr %17, align 8, !tbaa !9
  %315 = load i32, ptr %7, align 4, !tbaa !5
  %316 = mul nsw i32 17010, %315
  %317 = sitofp i32 %316 to double
  %318 = fneg double %317
  %319 = call double @llvm.fmuladd.f64(double -4.725000e+03, double %314, double %318)
  %320 = call double @llvm.fmuladd.f64(double %313, double %319, double %312)
  %321 = load i32, ptr %7, align 4, !tbaa !5
  %322 = mul nsw i32 720, %321
  %323 = sitofp i32 %322 to double
  %324 = fsub double %320, %323
  %325 = load double, ptr %18, align 8, !tbaa !9
  %326 = fmul double 1.750000e+02, %325
  %327 = load i32, ptr %7, align 4, !tbaa !5
  %328 = sitofp i32 %327 to double
  %329 = fneg double %326
  %330 = call double @llvm.fmuladd.f64(double %329, double %328, double %324)
  %331 = load double, ptr %24, align 8, !tbaa !9
  %332 = load double, ptr %18, align 8, !tbaa !9
  %333 = call double @llvm.fmuladd.f64(double 2.100000e+02, double %332, double 7.560000e+03)
  %334 = load double, ptr %17, align 8, !tbaa !9
  %335 = fmul double 6.090000e+03, %334
  %336 = load i32, ptr %7, align 4, !tbaa !5
  %337 = sitofp i32 %336 to double
  %338 = call double @llvm.fmuladd.f64(double %335, double %337, double %333)
  %339 = call double @llvm.fmuladd.f64(double %331, double %338, double %330)
  store double %339, ptr %15, align 8, !tbaa !9
  %340 = load double, ptr %17, align 8, !tbaa !9
  %341 = load double, ptr %20, align 8, !tbaa !9
  %342 = load double, ptr %18, align 8, !tbaa !9
  %343 = call double @llvm.fmuladd.f64(double %341, double %342, double 5.184000e+05)
  %344 = load double, ptr %18, align 8, !tbaa !9
  %345 = call double @llvm.fmuladd.f64(double 2.962960e+05, double %344, double %343)
  %346 = load double, ptr %20, align 8, !tbaa !9
  %347 = call double @llvm.fmuladd.f64(double 3.003000e+03, double %346, double %345)
  %348 = load double, ptr %17, align 8, !tbaa !9
  %349 = fmul double 1.300000e+01, %348
  %350 = load double, ptr %18, align 8, !tbaa !9
  %351 = call double @llvm.fmuladd.f64(double 3.421000e+03, double %350, double 5.947200e+04)
  %352 = load double, ptr %20, align 8, !tbaa !9
  %353 = call double @llvm.fmuladd.f64(double 7.000000e+00, double %352, double %351)
  %354 = fmul double %349, %353
  %355 = load i32, ptr %7, align 4, !tbaa !5
  %356 = sitofp i32 %355 to double
  %357 = fneg double %354
  %358 = call double @llvm.fmuladd.f64(double %357, double %356, double %347)
  %359 = fmul double %340, %358
  store double %359, ptr %12, align 8, !tbaa !9
  br label %799

360:                                              ; preds = %60
  %361 = load double, ptr %9, align 8, !tbaa !9
  %362 = load double, ptr %9, align 8, !tbaa !9
  %363 = fmul double %361, %362
  store double %363, ptr %17, align 8, !tbaa !9
  %364 = load double, ptr %17, align 8, !tbaa !9
  %365 = load double, ptr %17, align 8, !tbaa !9
  %366 = fmul double %364, %365
  store double %366, ptr %18, align 8, !tbaa !9
  %367 = load double, ptr %18, align 8, !tbaa !9
  %368 = load double, ptr %17, align 8, !tbaa !9
  %369 = fmul double %367, %368
  store double %369, ptr %19, align 8, !tbaa !9
  %370 = load double, ptr %18, align 8, !tbaa !9
  %371 = load double, ptr %18, align 8, !tbaa !9
  %372 = fmul double %370, %371
  store double %372, ptr %20, align 8, !tbaa !9
  %373 = load double, ptr %19, align 8, !tbaa !9
  %374 = load double, ptr %19, align 8, !tbaa !9
  %375 = fmul double %373, %374
  store double %375, ptr %21, align 8, !tbaa !9
  %376 = load double, ptr %23, align 8, !tbaa !9
  %377 = load double, ptr %23, align 8, !tbaa !9
  %378 = fmul double %376, %377
  store double %378, ptr %24, align 8, !tbaa !9
  %379 = load double, ptr %24, align 8, !tbaa !9
  %380 = load double, ptr %24, align 8, !tbaa !9
  %381 = fmul double %379, %380
  store double %381, ptr %25, align 8, !tbaa !9
  %382 = load double, ptr %25, align 8, !tbaa !9
  %383 = load double, ptr %24, align 8, !tbaa !9
  %384 = fmul double %382, %383
  store double %384, ptr %26, align 8, !tbaa !9
  %385 = load double, ptr %17, align 8, !tbaa !9
  %386 = load double, ptr %19, align 8, !tbaa !9
  %387 = call double @llvm.fmuladd.f64(double 6.769000e+03, double %385, double %386)
  %388 = load double, ptr %24, align 8, !tbaa !9
  %389 = call double @llvm.fmuladd.f64(double -1.123920e+05, double %388, double %387)
  %390 = load double, ptr %18, align 8, !tbaa !9
  %391 = fmul double 3.780000e+02, %390
  %392 = load double, ptr %24, align 8, !tbaa !9
  %393 = fneg double %391
  %394 = call double @llvm.fmuladd.f64(double %393, double %392, double %389)
  %395 = load double, ptr %17, align 8, !tbaa !9
  %396 = fmul double 1.732500e+04, %395
  %397 = load double, ptr %25, align 8, !tbaa !9
  %398 = call double @llvm.fmuladd.f64(double %396, double %397, double %394)
  %399 = load double, ptr %26, align 8, !tbaa !9
  %400 = call double @llvm.fmuladd.f64(double -1.351350e+05, double %399, double %398)
  %401 = load i32, ptr %7, align 4, !tbaa !5
  %402 = mul nsw i32 13068, %401
  %403 = sitofp i32 %402 to double
  %404 = fadd double %400, %403
  %405 = load double, ptr %18, align 8, !tbaa !9
  %406 = fmul double 3.220000e+02, %405
  %407 = load i32, ptr %7, align 4, !tbaa !5
  %408 = sitofp i32 %407 to double
  %409 = call double @llvm.fmuladd.f64(double %406, double %408, double %404)
  %410 = load double, ptr %17, align 8, !tbaa !9
  %411 = fmul double 2.331000e+04, %410
  %412 = load double, ptr %24, align 8, !tbaa !9
  %413 = fmul double %411, %412
  %414 = load i32, ptr %7, align 4, !tbaa !5
  %415 = sitofp i32 %414 to double
  %416 = fneg double %413
  %417 = call double @llvm.fmuladd.f64(double %416, double %415, double %409)
  %418 = load double, ptr %25, align 8, !tbaa !9
  %419 = fmul double 2.321550e+05, %418
  %420 = load i32, ptr %7, align 4, !tbaa !5
  %421 = sitofp i32 %420 to double
  %422 = call double @llvm.fmuladd.f64(double %419, double %421, double %417)
  store double %422, ptr %14, align 8, !tbaa !9
  %423 = load double, ptr %16, align 8, !tbaa !9
  %424 = load double, ptr %17, align 8, !tbaa !9
  %425 = load double, ptr %19, align 8, !tbaa !9
  %426 = fmul double 2.800000e+01, %425
  %427 = fneg double %426
  %428 = call double @llvm.fmuladd.f64(double -1.313200e+04, double %424, double %427)
  %429 = load double, ptr %26, align 8, !tbaa !9
  %430 = call double @llvm.fmuladd.f64(double 1.351350e+05, double %429, double %428)
  %431 = load double, ptr %25, align 8, !tbaa !9
  %432 = load double, ptr %17, align 8, !tbaa !9
  %433 = load i32, ptr %7, align 4, !tbaa !5
  %434 = mul nsw i32 187110, %433
  %435 = sitofp i32 %434 to double
  %436 = fneg double %435
  %437 = call double @llvm.fmuladd.f64(double -6.237000e+04, double %432, double %436)
  %438 = call double @llvm.fmuladd.f64(double %431, double %437, double %430)
  %439 = load i32, ptr %7, align 4, !tbaa !5
  %440 = mul nsw i32 5040, %439
  %441 = sitofp i32 %440 to double
  %442 = fsub double %438, %441
  %443 = load double, ptr %18, align 8, !tbaa !9
  %444 = fmul double 1.960000e+03, %443
  %445 = load i32, ptr %7, align 4, !tbaa !5
  %446 = sitofp i32 %445 to double
  %447 = fneg double %444
  %448 = call double @llvm.fmuladd.f64(double %447, double %446, double %442)
  %449 = load double, ptr %24, align 8, !tbaa !9
  %450 = load double, ptr %18, align 8, !tbaa !9
  %451 = call double @llvm.fmuladd.f64(double 3.150000e+03, double %450, double 6.804000e+04)
  %452 = load double, ptr %17, align 8, !tbaa !9
  %453 = fmul double 6.489000e+04, %452
  %454 = load i32, ptr %7, align 4, !tbaa !5
  %455 = sitofp i32 %454 to double
  %456 = call double @llvm.fmuladd.f64(double %453, double %455, double %451)
  %457 = call double @llvm.fmuladd.f64(double %449, double %456, double %448)
  %458 = fmul double %423, %457
  store double %458, ptr %15, align 8, !tbaa !9
  %459 = load double, ptr %17, align 8, !tbaa !9
  %460 = load double, ptr %17, align 8, !tbaa !9
  %461 = load double, ptr %19, align 8, !tbaa !9
  %462 = load double, ptr %19, align 8, !tbaa !9
  %463 = call double @llvm.fmuladd.f64(double %461, double %462, double 0x41824FC080000000)
  %464 = load double, ptr %18, align 8, !tbaa !9
  %465 = call double @llvm.fmuladd.f64(double 0x4142E2E880000000, double %464, double %463)
  %466 = load double, ptr %20, align 8, !tbaa !9
  %467 = call double @llvm.fmuladd.f64(double 7.462000e+03, double %466, double %465)
  %468 = load double, ptr %21, align 8, !tbaa !9
  %469 = call double @llvm.fmuladd.f64(double 7.000000e+00, double %468, double 1.270080e+06)
  %470 = load double, ptr %18, align 8, !tbaa !9
  %471 = call double @llvm.fmuladd.f64(double 7.645820e+05, double %470, double %469)
  %472 = load double, ptr %20, align 8, !tbaa !9
  %473 = call double @llvm.fmuladd.f64(double 9.581000e+03, double %472, double %471)
  %474 = fmul double 2.000000e+01, %473
  %475 = load i32, ptr %7, align 4, !tbaa !5
  %476 = sitofp i32 %475 to double
  %477 = fmul double %474, %476
  %478 = fneg double %477
  %479 = call double @llvm.fmuladd.f64(double %460, double %467, double %478)
  %480 = fmul double %459, %479
  store double %480, ptr %12, align 8, !tbaa !9
  br label %799

481:                                              ; preds = %60
  %482 = load double, ptr %9, align 8, !tbaa !9
  %483 = load double, ptr %9, align 8, !tbaa !9
  %484 = fmul double %482, %483
  store double %484, ptr %17, align 8, !tbaa !9
  %485 = load double, ptr %17, align 8, !tbaa !9
  %486 = load double, ptr %17, align 8, !tbaa !9
  %487 = fmul double %485, %486
  store double %487, ptr %18, align 8, !tbaa !9
  %488 = load double, ptr %18, align 8, !tbaa !9
  %489 = load double, ptr %17, align 8, !tbaa !9
  %490 = fmul double %488, %489
  store double %490, ptr %19, align 8, !tbaa !9
  %491 = load double, ptr %18, align 8, !tbaa !9
  %492 = load double, ptr %18, align 8, !tbaa !9
  %493 = fmul double %491, %492
  store double %493, ptr %20, align 8, !tbaa !9
  %494 = load double, ptr %19, align 8, !tbaa !9
  %495 = load double, ptr %19, align 8, !tbaa !9
  %496 = fmul double %494, %495
  store double %496, ptr %21, align 8, !tbaa !9
  %497 = load double, ptr %20, align 8, !tbaa !9
  %498 = load double, ptr %20, align 8, !tbaa !9
  %499 = fmul double %497, %498
  store double %499, ptr %22, align 8, !tbaa !9
  %500 = load double, ptr %23, align 8, !tbaa !9
  %501 = load double, ptr %23, align 8, !tbaa !9
  %502 = fmul double %500, %501
  store double %502, ptr %24, align 8, !tbaa !9
  %503 = load double, ptr %24, align 8, !tbaa !9
  %504 = load double, ptr %24, align 8, !tbaa !9
  %505 = fmul double %503, %504
  store double %505, ptr %25, align 8, !tbaa !9
  %506 = load double, ptr %25, align 8, !tbaa !9
  %507 = load double, ptr %24, align 8, !tbaa !9
  %508 = fmul double %506, %507
  store double %508, ptr %26, align 8, !tbaa !9
  %509 = load double, ptr %25, align 8, !tbaa !9
  %510 = load double, ptr %25, align 8, !tbaa !9
  %511 = fmul double %509, %510
  store double %511, ptr %27, align 8, !tbaa !9
  %512 = load double, ptr %16, align 8, !tbaa !9
  %513 = load double, ptr %17, align 8, !tbaa !9
  %514 = load double, ptr %19, align 8, !tbaa !9
  %515 = fmul double 3.600000e+01, %514
  %516 = call double @llvm.fmuladd.f64(double 6.728400e+04, double %513, double %515)
  %517 = load double, ptr %24, align 8, !tbaa !9
  %518 = call double @llvm.fmuladd.f64(double -1.191960e+06, double %517, double %516)
  %519 = load double, ptr %18, align 8, !tbaa !9
  %520 = fmul double 6.930000e+03, %519
  %521 = load double, ptr %24, align 8, !tbaa !9
  %522 = fneg double %520
  %523 = call double @llvm.fmuladd.f64(double %522, double %521, double %518)
  %524 = load double, ptr %17, align 8, !tbaa !9
  %525 = fmul double 2.702700e+05, %524
  %526 = load double, ptr %25, align 8, !tbaa !9
  %527 = call double @llvm.fmuladd.f64(double %525, double %526, double %523)
  %528 = load double, ptr %26, align 8, !tbaa !9
  %529 = call double @llvm.fmuladd.f64(double 0xC13EEE1100000000, double %528, double %527)
  %530 = load i32, ptr %7, align 4, !tbaa !5
  %531 = mul nsw i32 109584, %530
  %532 = sitofp i32 %531 to double
  %533 = fadd double %529, %532
  %534 = load double, ptr %18, align 8, !tbaa !9
  %535 = fmul double 4.536000e+03, %534
  %536 = load i32, ptr %7, align 4, !tbaa !5
  %537 = sitofp i32 %536 to double
  %538 = call double @llvm.fmuladd.f64(double %535, double %537, double %533)
  %539 = load double, ptr %17, align 8, !tbaa !9
  %540 = fmul double 2.979900e+05, %539
  %541 = load double, ptr %24, align 8, !tbaa !9
  %542 = fmul double %540, %541
  %543 = load i32, ptr %7, align 4, !tbaa !5
  %544 = sitofp i32 %543 to double
  %545 = fneg double %542
  %546 = call double @llvm.fmuladd.f64(double %545, double %544, double %538)
  %547 = load double, ptr %25, align 8, !tbaa !9
  %548 = fmul double 2.972970e+06, %547
  %549 = load i32, ptr %7, align 4, !tbaa !5
  %550 = sitofp i32 %549 to double
  %551 = call double @llvm.fmuladd.f64(double %548, double %550, double %546)
  %552 = fmul double %512, %551
  store double %552, ptr %14, align 8, !tbaa !9
  %553 = load double, ptr %18, align 8, !tbaa !9
  %554 = call double @llvm.fmuladd.f64(double 2.244900e+04, double %553, double 4.032000e+04)
  %555 = load double, ptr %20, align 8, !tbaa !9
  %556 = fadd double %554, %555
  %557 = load double, ptr %27, align 8, !tbaa !9
  %558 = call double @llvm.fmuladd.f64(double 0x413EEE1100000000, double %557, double %556)
  %559 = load double, ptr %26, align 8, !tbaa !9
  %560 = load double, ptr %17, align 8, !tbaa !9
  %561 = load i32, ptr %7, align 4, !tbaa !5
  %562 = mul nsw i32 4324320, %561
  %563 = sitofp i32 %562 to double
  %564 = fneg double %563
  %565 = call double @llvm.fmuladd.f64(double -9.459450e+05, double %560, double %564)
  %566 = call double @llvm.fmuladd.f64(double %559, double %565, double %558)
  %567 = load double, ptr %17, align 8, !tbaa !9
  %568 = fmul double 1.181240e+05, %567
  %569 = load i32, ptr %7, align 4, !tbaa !5
  %570 = sitofp i32 %569 to double
  %571 = call double @llvm.fmuladd.f64(double %568, double %570, double %566)
  %572 = load double, ptr %19, align 8, !tbaa !9
  %573 = fmul double 5.460000e+02, %572
  %574 = load i32, ptr %7, align 4, !tbaa !5
  %575 = sitofp i32 %574 to double
  %576 = call double @llvm.fmuladd.f64(double %573, double %575, double %571)
  %577 = load double, ptr %25, align 8, !tbaa !9
  %578 = load double, ptr %18, align 8, !tbaa !9
  %579 = call double @llvm.fmuladd.f64(double 5.197500e+04, double %578, double 2.993760e+06)
  %580 = load double, ptr %17, align 8, !tbaa !9
  %581 = fmul double 0x4139DAB100000000, %580
  %582 = load i32, ptr %7, align 4, !tbaa !5
  %583 = sitofp i32 %582 to double
  %584 = call double @llvm.fmuladd.f64(double %581, double %583, double %579)
  %585 = call double @llvm.fmuladd.f64(double %577, double %584, double %576)
  %586 = load double, ptr %24, align 8, !tbaa !9
  %587 = load double, ptr %17, align 8, !tbaa !9
  %588 = load double, ptr %19, align 8, !tbaa !9
  %589 = fmul double 6.300000e+02, %588
  %590 = fneg double %589
  %591 = call double @llvm.fmuladd.f64(double -8.794800e+05, double %587, double %590)
  %592 = load i32, ptr %7, align 4, !tbaa !5
  %593 = mul nsw i32 725760, %592
  %594 = sitofp i32 %593 to double
  %595 = fsub double %591, %594
  %596 = load double, ptr %18, align 8, !tbaa !9
  %597 = fmul double 7.245000e+04, %596
  %598 = load i32, ptr %7, align 4, !tbaa !5
  %599 = sitofp i32 %598 to double
  %600 = fneg double %597
  %601 = call double @llvm.fmuladd.f64(double %600, double %599, double %595)
  %602 = call double @llvm.fmuladd.f64(double %586, double %601, double %585)
  store double %602, ptr %15, align 8, !tbaa !9
  %603 = load double, ptr %17, align 8, !tbaa !9
  %604 = load double, ptr %21, align 8, !tbaa !9
  %605 = call double @llvm.fmuladd.f64(double 1.642200e+04, double %604, double 0x41D8399000000000)
  %606 = load double, ptr %22, align 8, !tbaa !9
  %607 = fadd double %605, %606
  %608 = load double, ptr %18, align 8, !tbaa !9
  %609 = call double @llvm.fmuladd.f64(double 0x41CE4F9B08000000, double %608, double %607)
  %610 = load double, ptr %20, align 8, !tbaa !9
  %611 = call double @llvm.fmuladd.f64(double 0x416C1CDA20000000, double %610, double %609)
  %612 = load double, ptr %17, align 8, !tbaa !9
  %613 = fmul double 6.800000e+01, %612
  %614 = load double, ptr %21, align 8, !tbaa !9
  %615 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %614, double 0x4181699A00000000)
  %616 = load double, ptr %18, align 8, !tbaa !9
  %617 = call double @llvm.fmuladd.f64(double 0x41437DB700000000, double %616, double %615)
  %618 = load double, ptr %20, align 8, !tbaa !9
  %619 = call double @llvm.fmuladd.f64(double 9.841000e+03, double %618, double %617)
  %620 = fmul double %613, %619
  %621 = load i32, ptr %7, align 4, !tbaa !5
  %622 = sitofp i32 %621 to double
  %623 = fneg double %620
  %624 = call double @llvm.fmuladd.f64(double %623, double %622, double %611)
  %625 = fmul double %603, %624
  store double %625, ptr %12, align 8, !tbaa !9
  br label %799

626:                                              ; preds = %60
  %627 = load double, ptr %9, align 8, !tbaa !9
  %628 = load double, ptr %9, align 8, !tbaa !9
  %629 = fmul double %627, %628
  store double %629, ptr %17, align 8, !tbaa !9
  %630 = load double, ptr %17, align 8, !tbaa !9
  %631 = load double, ptr %17, align 8, !tbaa !9
  %632 = fmul double %630, %631
  store double %632, ptr %18, align 8, !tbaa !9
  %633 = load double, ptr %18, align 8, !tbaa !9
  %634 = load double, ptr %17, align 8, !tbaa !9
  %635 = fmul double %633, %634
  store double %635, ptr %19, align 8, !tbaa !9
  %636 = load double, ptr %18, align 8, !tbaa !9
  %637 = load double, ptr %18, align 8, !tbaa !9
  %638 = fmul double %636, %637
  store double %638, ptr %20, align 8, !tbaa !9
  %639 = load double, ptr %19, align 8, !tbaa !9
  %640 = load double, ptr %19, align 8, !tbaa !9
  %641 = fmul double %639, %640
  store double %641, ptr %21, align 8, !tbaa !9
  %642 = load double, ptr %20, align 8, !tbaa !9
  %643 = load double, ptr %20, align 8, !tbaa !9
  %644 = fmul double %642, %643
  store double %644, ptr %22, align 8, !tbaa !9
  %645 = load double, ptr %23, align 8, !tbaa !9
  %646 = load double, ptr %23, align 8, !tbaa !9
  %647 = fmul double %645, %646
  store double %647, ptr %24, align 8, !tbaa !9
  %648 = load double, ptr %24, align 8, !tbaa !9
  %649 = load double, ptr %24, align 8, !tbaa !9
  %650 = fmul double %648, %649
  store double %650, ptr %25, align 8, !tbaa !9
  %651 = load double, ptr %25, align 8, !tbaa !9
  %652 = load double, ptr %24, align 8, !tbaa !9
  %653 = fmul double %651, %652
  store double %653, ptr %26, align 8, !tbaa !9
  %654 = load double, ptr %25, align 8, !tbaa !9
  %655 = load double, ptr %25, align 8, !tbaa !9
  %656 = fmul double %654, %655
  store double %656, ptr %27, align 8, !tbaa !9
  %657 = load double, ptr %18, align 8, !tbaa !9
  %658 = call double @llvm.fmuladd.f64(double -6.327300e+04, double %657, double 0xC12F542000000000)
  %659 = load double, ptr %20, align 8, !tbaa !9
  %660 = fsub double %658, %659
  %661 = load double, ptr %17, align 8, !tbaa !9
  %662 = fmul double 4.830210e+06, %661
  %663 = load double, ptr %24, align 8, !tbaa !9
  %664 = call double @llvm.fmuladd.f64(double %662, double %663, double %660)
  %665 = load double, ptr %19, align 8, !tbaa !9
  %666 = fmul double 9.900000e+02, %665
  %667 = load double, ptr %24, align 8, !tbaa !9
  %668 = call double @llvm.fmuladd.f64(double %666, double %667, double %664)
  %669 = load double, ptr %25, align 8, !tbaa !9
  %670 = call double @llvm.fmuladd.f64(double 0xC18AAD5510000000, double %669, double %668)
  %671 = load double, ptr %18, align 8, !tbaa !9
  %672 = fmul double 1.351350e+05, %671
  %673 = load double, ptr %25, align 8, !tbaa !9
  %674 = fneg double %672
  %675 = call double @llvm.fmuladd.f64(double %674, double %673, double %670)
  %676 = load double, ptr %17, align 8, !tbaa !9
  %677 = fmul double 0x41520ADF40000000, %676
  %678 = load double, ptr %26, align 8, !tbaa !9
  %679 = call double @llvm.fmuladd.f64(double %677, double %678, double %675)
  %680 = load double, ptr %27, align 8, !tbaa !9
  %681 = call double @llvm.fmuladd.f64(double 0xC1806E7908000000, double %680, double %679)
  %682 = load double, ptr %17, align 8, !tbaa !9
  %683 = fmul double 7.236800e+05, %682
  %684 = load i32, ptr %7, align 4, !tbaa !5
  %685 = sitofp i32 %684 to double
  %686 = fneg double %683
  %687 = call double @llvm.fmuladd.f64(double %686, double %685, double %681)
  %688 = load double, ptr %19, align 8, !tbaa !9
  %689 = fmul double 8.700000e+02, %688
  %690 = load i32, ptr %7, align 4, !tbaa !5
  %691 = sitofp i32 %690 to double
  %692 = fneg double %689
  %693 = call double @llvm.fmuladd.f64(double %692, double %691, double %687)
  %694 = load double, ptr %24, align 8, !tbaa !9
  %695 = fmul double 0x416C7B9500000000, %694
  %696 = load i32, ptr %7, align 4, !tbaa !5
  %697 = sitofp i32 %696 to double
  %698 = call double @llvm.fmuladd.f64(double %695, double %697, double %693)
  %699 = load double, ptr %18, align 8, !tbaa !9
  %700 = fmul double 1.940400e+05, %699
  %701 = load double, ptr %24, align 8, !tbaa !9
  %702 = fmul double %700, %701
  %703 = load i32, ptr %7, align 4, !tbaa !5
  %704 = sitofp i32 %703 to double
  %705 = call double @llvm.fmuladd.f64(double %702, double %704, double %698)
  %706 = load double, ptr %17, align 8, !tbaa !9
  %707 = fmul double 0x4160C0F3E0000000, %706
  %708 = load double, ptr %25, align 8, !tbaa !9
  %709 = fmul double %707, %708
  %710 = load i32, ptr %7, align 4, !tbaa !5
  %711 = sitofp i32 %710 to double
  %712 = fneg double %709
  %713 = call double @llvm.fmuladd.f64(double %712, double %711, double %705)
  %714 = load double, ptr %26, align 8, !tbaa !9
  %715 = fmul double 0x4192341CAC000000, %714
  %716 = load i32, ptr %7, align 4, !tbaa !5
  %717 = sitofp i32 %716 to double
  %718 = call double @llvm.fmuladd.f64(double %715, double %717, double %713)
  store double %718, ptr %14, align 8, !tbaa !9
  %719 = load double, ptr %16, align 8, !tbaa !9
  %720 = load double, ptr %18, align 8, !tbaa !9
  %721 = call double @llvm.fmuladd.f64(double 2.693250e+05, double %720, double 3.628800e+05)
  %722 = load double, ptr %20, align 8, !tbaa !9
  %723 = call double @llvm.fmuladd.f64(double 4.500000e+01, double %722, double %721)
  %724 = load double, ptr %27, align 8, !tbaa !9
  %725 = call double @llvm.fmuladd.f64(double 0x41806E7908000000, double %724, double %723)
  %726 = load double, ptr %26, align 8, !tbaa !9
  %727 = load double, ptr %17, align 8, !tbaa !9
  %728 = load i32, ptr %7, align 4, !tbaa !5
  %729 = mul nsw i32 64864800, %728
  %730 = sitofp i32 %729 to double
  %731 = fneg double %730
  %732 = call double @llvm.fmuladd.f64(double -1.621620e+07, double %727, double %731)
  %733 = call double @llvm.fmuladd.f64(double %726, double %732, double %725)
  %734 = load double, ptr %17, align 8, !tbaa !9
  %735 = fmul double 1.172700e+06, %734
  %736 = load i32, ptr %7, align 4, !tbaa !5
  %737 = sitofp i32 %736 to double
  %738 = call double @llvm.fmuladd.f64(double %735, double %737, double %733)
  %739 = load double, ptr %19, align 8, !tbaa !9
  %740 = fmul double 9.450000e+03, %739
  %741 = load i32, ptr %7, align 4, !tbaa !5
  %742 = sitofp i32 %741 to double
  %743 = call double @llvm.fmuladd.f64(double %740, double %742, double %738)
  %744 = load double, ptr %25, align 8, !tbaa !9
  %745 = load double, ptr %18, align 8, !tbaa !9
  %746 = call double @llvm.fmuladd.f64(double 9.459450e+05, double %745, double 0x41828ED700000000)
  %747 = load double, ptr %17, align 8, !tbaa !9
  %748 = fmul double 0x4177D78270000000, %747
  %749 = load i32, ptr %7, align 4, !tbaa !5
  %750 = sitofp i32 %749 to double
  %751 = call double @llvm.fmuladd.f64(double %748, double %750, double %746)
  %752 = call double @llvm.fmuladd.f64(double %744, double %751, double %743)
  %753 = load double, ptr %24, align 8, !tbaa !9
  %754 = load double, ptr %17, align 8, !tbaa !9
  %755 = load double, ptr %19, align 8, !tbaa !9
  %756 = fmul double 1.386000e+04, %755
  %757 = fneg double %756
  %758 = call double @llvm.fmuladd.f64(double 0xC164B9C800000000, double %754, double %757)
  %759 = load i32, ptr %7, align 4, !tbaa !5
  %760 = mul nsw i32 7983360, %759
  %761 = sitofp i32 %760 to double
  %762 = fsub double %758, %761
  %763 = load double, ptr %18, align 8, !tbaa !9
  %764 = fmul double 1.094940e+06, %763
  %765 = load i32, ptr %7, align 4, !tbaa !5
  %766 = sitofp i32 %765 to double
  %767 = fneg double %764
  %768 = call double @llvm.fmuladd.f64(double %767, double %766, double %762)
  %769 = call double @llvm.fmuladd.f64(double %753, double %768, double %752)
  %770 = fmul double %719, %769
  store double %770, ptr %15, align 8, !tbaa !9
  %771 = load double, ptr %17, align 8, !tbaa !9
  %772 = load double, ptr %17, align 8, !tbaa !9
  %773 = load double, ptr %21, align 8, !tbaa !9
  %774 = call double @llvm.fmuladd.f64(double 3.294600e+04, double %773, double 0x42479AB476800000)
  %775 = load double, ptr %22, align 8, !tbaa !9
  %776 = fadd double %774, %775
  %777 = load double, ptr %18, align 8, !tbaa !9
  %778 = call double @llvm.fmuladd.f64(double 0x420C1AC706400000, double %777, double %776)
  %779 = load double, ptr %20, align 8, !tbaa !9
  %780 = call double @llvm.fmuladd.f64(double 0x41906FF854000000, double %779, double %778)
  %781 = load double, ptr %18, align 8, !tbaa !9
  %782 = fmul double 1.900000e+01, %781
  %783 = load double, ptr %21, align 8, !tbaa !9
  %784 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %783, double 0x41CA9F80F8000000)
  %785 = load double, ptr %18, align 8, !tbaa !9
  %786 = call double @llvm.fmuladd.f64(double 0x416B7528E0000000, double %785, double %784)
  %787 = load double, ptr %20, align 8, !tbaa !9
  %788 = call double @llvm.fmuladd.f64(double 2.104600e+04, double %787, double %786)
  %789 = call double @llvm.fmuladd.f64(double %782, double %788, double 0x4218871500000000)
  %790 = fmul double 5.000000e+00, %789
  %791 = load i32, ptr %7, align 4, !tbaa !5
  %792 = sitofp i32 %791 to double
  %793 = fmul double %790, %792
  %794 = fneg double %793
  %795 = call double @llvm.fmuladd.f64(double %772, double %780, double %794)
  %796 = fmul double %771, %795
  store double %796, ptr %12, align 8, !tbaa !9
  br label %799

797:                                              ; preds = %60
  %798 = load ptr, ptr %11, align 8, !tbaa !11
  store double 0.000000e+00, ptr %798, align 8, !tbaa !9
  store i32 1, ptr %6, align 4
  store i32 1, ptr %28, align 4
  br label %843

799:                                              ; preds = %626, %481, %360, %264, %194, %140, %99, %72, %64, %62
  %800 = load double, ptr %9, align 8, !tbaa !9
  %801 = load double, ptr %9, align 8, !tbaa !9
  %802 = fmul double %800, %801
  store double %802, ptr %17, align 8, !tbaa !9
  %803 = load double, ptr %9, align 8, !tbaa !9
  %804 = load double, ptr %9, align 8, !tbaa !9
  %805 = fmul double %803, %804
  store double %805, ptr %12, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #4
  store i32 1, ptr %29, align 4, !tbaa !5
  br label %806

806:                                              ; preds = %823, %799
  %807 = load i32, ptr %29, align 4, !tbaa !5
  %808 = load i32, ptr %8, align 4, !tbaa !5
  %809 = icmp sle i32 %807, %808
  br i1 %809, label %810, label %826

810:                                              ; preds = %806
  %811 = load double, ptr %9, align 8, !tbaa !9
  %812 = load double, ptr %9, align 8, !tbaa !9
  %813 = load i32, ptr %7, align 4, !tbaa !5
  %814 = load i32, ptr %29, align 4, !tbaa !5
  %815 = mul nsw i32 %813, %814
  %816 = load i32, ptr %29, align 4, !tbaa !5
  %817 = mul nsw i32 %815, %816
  %818 = sitofp i32 %817 to double
  %819 = fneg double %818
  %820 = call double @llvm.fmuladd.f64(double %811, double %812, double %819)
  %821 = load double, ptr %12, align 8, !tbaa !9
  %822 = fmul double %821, %820
  store double %822, ptr %12, align 8, !tbaa !9
  br label %823

823:                                              ; preds = %810
  %824 = load i32, ptr %29, align 4, !tbaa !5
  %825 = add nsw i32 %824, 1
  store i32 %825, ptr %29, align 4, !tbaa !5
  br label %806, !llvm.loop !13

826:                                              ; preds = %806
  %827 = load double, ptr %14, align 8, !tbaa !9
  %828 = load double, ptr %9, align 8, !tbaa !9
  %829 = fmul double %827, %828
  %830 = load double, ptr %13, align 8, !tbaa !9
  %831 = call double @cos(double noundef %830) #4
  %832 = load double, ptr %15, align 8, !tbaa !9
  %833 = load double, ptr %13, align 8, !tbaa !9
  %834 = call double @sin(double noundef %833) #4
  %835 = fmul double %832, %834
  %836 = call double @llvm.fmuladd.f64(double %829, double %831, double %835)
  %837 = load double, ptr %23, align 8, !tbaa !9
  %838 = fmul double %836, %837
  %839 = load double, ptr %12, align 8, !tbaa !9
  %840 = call double @sqrt(double noundef %839) #4
  %841 = fdiv double %838, %840
  %842 = load ptr, ptr %11, align 8, !tbaa !11
  store double %841, ptr %842, align 8, !tbaa !9
  store i32 0, ptr %6, align 4
  store i32 1, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  br label %843

843:                                              ; preds = %826, %797
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #4
  %844 = load i32, ptr %6, align 4
  ret i32 %844
}

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

!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 = !{!"int", !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 = !{!"any pointer", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}


; 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: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #1

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sin(double noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @tan(double noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sinh(double noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @tanh(double noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @cos(double noundef) local_unnamed_addr #0

; Function Attrs: nofree nounwind memory(write) uwtable
define dso_local range(i32 0, 2) i32 @HypersphericalExplicit(i32 noundef %0, i32 noundef %1, double noundef %2, double noundef %3, ptr nocapture noundef writeonly %4) local_unnamed_addr #2 {
  %6 = fmul double %2, %2
  %7 = fmul double %2, %3
  switch i32 %0, label %20 [
    i32 -1, label %8
    i32 1, label %14
  ]

8:                                                ; preds = %5
  %9 = tail call double @tanh(double noundef %3) #3
  %10 = tail call double @sinh(double noundef %3) #3
  %11 = insertelement <2 x double> poison, double %9, i64 0
  %12 = insertelement <2 x double> %11, double %10, i64 1
  %13 = fdiv <2 x double> <double 1.000000e+00, double 1.000000e+00>, %12
  br label %24

14:                                               ; preds = %5
  %15 = tail call double @tan(double noundef %3) #3
  %16 = tail call double @sin(double noundef %3) #3
  %17 = insertelement <2 x double> poison, double %15, i64 0
  %18 = insertelement <2 x double> %17, double %16, i64 1
  %19 = fdiv <2 x double> <double 1.000000e+00, double 1.000000e+00>, %18
  br label %24

20:                                               ; preds = %5
  %21 = fdiv double 1.000000e+00, %3
  %22 = insertelement <2 x double> poison, double %21, i64 0
  %23 = shufflevector <2 x double> %22, <2 x double> poison, <2 x i32> zeroinitializer
  br label %24

24:                                               ; preds = %14, %20, %8
  %25 = phi <2 x double> [ %13, %8 ], [ %19, %14 ], [ %23, %20 ]
  %26 = extractelement <2 x double> %25, i64 0
  switch i32 %1, label %315 [
    i32 0, label %._crit_edge
    i32 1, label %.lr.ph.preheader
    i32 2, label %27
    i32 3, label %36
    i32 4, label %49
    i32 5, label %70
    i32 6, label %94
    i32 7, label %128
    i32 8, label %171
    i32 9, label %224
  ]

27:                                               ; preds = %24
  %28 = fmul <2 x double> %25, %25
  %29 = extractelement <2 x double> %28, i64 1
  %30 = fmul double %26, -3.000000e+00
  %31 = fneg double %6
  %32 = tail call double @llvm.fmuladd.f64(double %29, double 3.000000e+00, double %31)
  %33 = shl nsw i32 %0, 1
  %34 = sitofp i32 %33 to double
  %35 = fsub double %32, %34
  br label %.lr.ph.preheader

36:                                               ; preds = %24
  %37 = fmul <2 x double> %25, %25
  %38 = extractelement <2 x double> %37, i64 1
  %39 = tail call double @llvm.fmuladd.f64(double %38, double -1.500000e+01, double %6)
  %40 = mul nsw i32 %0, 11
  %41 = sitofp i32 %40 to double
  %42 = fadd double %39, %41
  %43 = fmul double %38, 1.500000e+01
  %44 = tail call double @llvm.fmuladd.f64(double %6, double -6.000000e+00, double %43)
  %45 = mul nsw i32 %0, 6
  %46 = sitofp i32 %45 to double
  %47 = fsub double %44, %46
  %48 = fmul double %26, %47
  br label %.lr.ph.preheader

49:                                               ; preds = %24
  %50 = fmul double %6, %6
  %51 = fmul <2 x double> %25, %25
  %52 = extractelement <2 x double> %51, i64 1
  %53 = fmul double %52, %52
  %54 = fmul double %52, -1.050000e+02
  %55 = tail call double @llvm.fmuladd.f64(double %6, double 1.000000e+01, double %54)
  %56 = mul nsw i32 %0, 50
  %57 = sitofp i32 %56 to double
  %58 = fadd double %55, %57
  %59 = fmul double %26, %58
  %60 = fadd double %50, 2.400000e+01
  %61 = tail call double @llvm.fmuladd.f64(double %53, double 1.050000e+02, double %60)
  %62 = mul nsw i32 %0, 120
  %63 = sitofp i32 %62 to double
  %64 = fneg double %63
  %65 = tail call double @llvm.fmuladd.f64(double %6, double -4.500000e+01, double %64)
  %66 = tail call double @llvm.fmuladd.f64(double %52, double %65, double %61)
  %67 = fmul double %6, 3.500000e+01
  %68 = sitofp i32 %0 to double
  %69 = tail call double @llvm.fmuladd.f64(double %67, double %68, double %66)
  br label %.lr.ph.preheader

70:                                               ; preds = %24
  %71 = fmul double %6, %6
  %72 = fmul <2 x double> %25, %25
  %73 = extractelement <2 x double> %72, i64 1
  %74 = fmul double %73, %73
  %75 = fsub double -2.740000e+02, %71
  %76 = fmul double %6, 1.050000e+02
  %77 = tail call double @llvm.fmuladd.f64(double %76, double %73, double %75)
  %78 = tail call double @llvm.fmuladd.f64(double %74, double -9.450000e+02, double %77)
  %79 = sitofp i32 %0 to double
  %80 = fmul double %6, -8.500000e+01
  %81 = tail call double @llvm.fmuladd.f64(double %80, double %79, double %78)
  %82 = fmul double %73, 1.155000e+03
  %83 = tail call double @llvm.fmuladd.f64(double %82, double %79, double %81)
  %84 = tail call double @llvm.fmuladd.f64(double %71, double 1.500000e+01, double 1.200000e+02)
  %85 = tail call double @llvm.fmuladd.f64(double %74, double 9.450000e+02, double %84)
  %86 = mul nsw i32 %0, 840
  %87 = sitofp i32 %86 to double
  %88 = fneg double %87
  %89 = tail call double @llvm.fmuladd.f64(double %6, double -4.200000e+02, double %88)
  %90 = tail call double @llvm.fmuladd.f64(double %73, double %89, double %85)
  %91 = fmul double %6, 2.250000e+02
  %92 = tail call double @llvm.fmuladd.f64(double %91, double %79, double %90)
  %93 = fmul double %26, %92
  br label %.lr.ph.preheader

94:                                               ; preds = %24
  %95 = fmul double %6, %6
  %96 = fmul <2 x double> %25, %25
  %97 = extractelement <2 x double> %96, i64 1
  %98 = fmul double %97, %97
  %99 = fmul double %97, %98
  %100 = tail call double @llvm.fmuladd.f64(double %95, double -2.100000e+01, double -1.764000e+03)
  %101 = fmul double %6, 1.260000e+03
  %102 = tail call double @llvm.fmuladd.f64(double %101, double %97, double %100)
  %103 = tail call double @llvm.fmuladd.f64(double %98, double -1.039500e+04, double %102)
  %104 = sitofp i32 %0 to double
  %105 = fmul double %6, -7.350000e+02
  %106 = tail call double @llvm.fmuladd.f64(double %105, double %104, double %103)
  %107 = fmul double %97, 1.008000e+04
  %108 = tail call double @llvm.fmuladd.f64(double %107, double %104, double %106)
  %109 = fmul double %26, %108
  %110 = fneg double %95
  %111 = fmul double %6, %110
  %112 = tail call double @llvm.fmuladd.f64(double %6, double -1.624000e+03, double %111)
  %113 = tail call double @llvm.fmuladd.f64(double %99, double 1.039500e+04, double %112)
  %114 = mul nsw i32 %0, 17010
  %115 = sitofp i32 %114 to double
  %116 = fneg double %115
  %117 = tail call double @llvm.fmuladd.f64(double %6, double -4.725000e+03, double %116)
  %118 = tail call double @llvm.fmuladd.f64(double %98, double %117, double %113)
  %119 = mul nsw i32 %0, 720
  %120 = sitofp i32 %119 to double
  %121 = fsub double %118, %120
  %122 = fmul double %95, -1.750000e+02
  %123 = tail call double @llvm.fmuladd.f64(double %122, double %104, double %121)
  %124 = tail call double @llvm.fmuladd.f64(double %95, double 2.100000e+02, double 7.560000e+03)
  %125 = fmul double %6, 6.090000e+03
  %126 = tail call double @llvm.fmuladd.f64(double %125, double %104, double %124)
  %127 = tail call double @llvm.fmuladd.f64(double %97, double %126, double %123)
  br label %.lr.ph.preheader

128:                                              ; preds = %24
  %129 = fmul double %6, %6
  %130 = fmul double %6, %129
  %131 = fmul <2 x double> %25, %25
  %132 = extractelement <2 x double> %131, i64 1
  %133 = fmul double %132, %132
  %134 = fmul double %132, %133
  %135 = tail call double @llvm.fmuladd.f64(double %6, double 6.769000e+03, double %130)
  %136 = tail call double @llvm.fmuladd.f64(double %132, double -1.123920e+05, double %135)
  %137 = fmul double %129, -3.780000e+02
  %138 = tail call double @llvm.fmuladd.f64(double %137, double %132, double %136)
  %139 = fmul double %6, 1.732500e+04
  %140 = tail call double @llvm.fmuladd.f64(double %139, double %133, double %138)
  %141 = tail call double @llvm.fmuladd.f64(double %134, double -1.351350e+05, double %140)
  %142 = mul nsw i32 %0, 13068
  %143 = sitofp i32 %142 to double
  %144 = fadd double %141, %143
  %145 = fmul double %129, 3.220000e+02
  %146 = sitofp i32 %0 to double
  %147 = tail call double @llvm.fmuladd.f64(double %145, double %146, double %144)
  %148 = fmul double %6, -2.331000e+04
  %149 = fmul double %148, %132
  %150 = tail call double @llvm.fmuladd.f64(double %149, double %146, double %147)
  %151 = fmul double %133, 2.321550e+05
  %152 = tail call double @llvm.fmuladd.f64(double %151, double %146, double %150)
  %153 = fmul double %130, -2.800000e+01
  %154 = tail call double @llvm.fmuladd.f64(double %6, double -1.313200e+04, double %153)
  %155 = tail call double @llvm.fmuladd.f64(double %134, double 1.351350e+05, double %154)
  %156 = mul nsw i32 %0, 187110
  %157 = sitofp i32 %156 to double
  %158 = fneg double %157
  %159 = tail call double @llvm.fmuladd.f64(double %6, double -6.237000e+04, double %158)
  %160 = tail call double @llvm.fmuladd.f64(double %133, double %159, double %155)
  %161 = mul nsw i32 %0, 5040
  %162 = sitofp i32 %161 to double
  %163 = fsub double %160, %162
  %164 = fmul double %129, -1.960000e+03
  %165 = tail call double @llvm.fmuladd.f64(double %164, double %146, double %163)
  %166 = tail call double @llvm.fmuladd.f64(double %129, double 3.150000e+03, double 6.804000e+04)
  %167 = fmul double %6, 6.489000e+04
  %168 = tail call double @llvm.fmuladd.f64(double %167, double %146, double %166)
  %169 = tail call double @llvm.fmuladd.f64(double %132, double %168, double %165)
  %170 = fmul double %26, %169
  br label %.lr.ph.preheader

171:                                              ; preds = %24
  %172 = fmul double %6, %6
  %173 = fmul double %6, %172
  %174 = fmul double %172, %172
  %175 = fmul <2 x double> %25, %25
  %176 = extractelement <2 x double> %175, i64 1
  %177 = fmul double %176, %176
  %178 = fmul double %176, %177
  %179 = fmul double %177, %177
  %180 = fmul double %173, 3.600000e+01
  %181 = tail call double @llvm.fmuladd.f64(double %6, double 6.728400e+04, double %180)
  %182 = tail call double @llvm.fmuladd.f64(double %176, double -1.191960e+06, double %181)
  %183 = fmul double %172, -6.930000e+03
  %184 = tail call double @llvm.fmuladd.f64(double %183, double %176, double %182)
  %185 = fmul double %6, 2.702700e+05
  %186 = tail call double @llvm.fmuladd.f64(double %185, double %177, double %184)
  %187 = tail call double @llvm.fmuladd.f64(double %178, double 0xC13EEE1100000000, double %186)
  %188 = mul nsw i32 %0, 109584
  %189 = sitofp i32 %188 to double
  %190 = fadd double %187, %189
  %191 = fmul double %172, 4.536000e+03
  %192 = sitofp i32 %0 to double
  %193 = tail call double @llvm.fmuladd.f64(double %191, double %192, double %190)
  %194 = fmul double %6, -2.979900e+05
  %195 = fmul double %194, %176
  %196 = tail call double @llvm.fmuladd.f64(double %195, double %192, double %193)
  %197 = fmul double %177, 2.972970e+06
  %198 = tail call double @llvm.fmuladd.f64(double %197, double %192, double %196)
  %199 = fmul double %26, %198
  %200 = tail call double @llvm.fmuladd.f64(double %172, double 2.244900e+04, double 4.032000e+04)
  %201 = fadd double %200, %174
  %202 = tail call double @llvm.fmuladd.f64(double %179, double 0x413EEE1100000000, double %201)
  %203 = mul nsw i32 %0, 4324320
  %204 = sitofp i32 %203 to double
  %205 = fneg double %204
  %206 = tail call double @llvm.fmuladd.f64(double %6, double -9.459450e+05, double %205)
  %207 = tail call double @llvm.fmuladd.f64(double %178, double %206, double %202)
  %208 = fmul double %6, 1.181240e+05
  %209 = tail call double @llvm.fmuladd.f64(double %208, double %192, double %207)
  %210 = fmul double %173, 5.460000e+02
  %211 = tail call double @llvm.fmuladd.f64(double %210, double %192, double %209)
  %212 = tail call double @llvm.fmuladd.f64(double %172, double 5.197500e+04, double 2.993760e+06)
  %213 = fmul double %6, 0x4139DAB100000000
  %214 = tail call double @llvm.fmuladd.f64(double %213, double %192, double %212)
  %215 = tail call double @llvm.fmuladd.f64(double %177, double %214, double %211)
  %216 = fmul double %173, -6.300000e+02
  %217 = tail call double @llvm.fmuladd.f64(double %6, double -8.794800e+05, double %216)
  %218 = mul nsw i32 %0, 725760
  %219 = sitofp i32 %218 to double
  %220 = fsub double %217, %219
  %221 = fmul double %172, -7.245000e+04
  %222 = tail call double @llvm.fmuladd.f64(double %221, double %192, double %220)
  %223 = tail call double @llvm.fmuladd.f64(double %176, double %222, double %215)
  br label %.lr.ph.preheader

224:                                              ; preds = %24
  %225 = fmul double %6, %6
  %226 = fmul double %6, %225
  %227 = fmul double %225, %225
  %228 = fmul <2 x double> %25, %25
  %229 = extractelement <2 x double> %228, i64 1
  %230 = fmul double %229, %229
  %231 = fmul double %229, %230
  %232 = fmul double %230, %230
  %233 = tail call double @llvm.fmuladd.f64(double %225, double -6.327300e+04, double 0xC12F542000000000)
  %234 = fsub double %233, %227
  %235 = fmul double %6, 4.830210e+06
  %236 = tail call double @llvm.fmuladd.f64(double %235, double %229, double %234)
  %237 = fmul double %226, 9.900000e+02
  %238 = tail call double @llvm.fmuladd.f64(double %237, double %229, double %236)
  %239 = tail call double @llvm.fmuladd.f64(double %230, double 0xC18AAD5510000000, double %238)
  %240 = fmul double %225, -1.351350e+05
  %241 = tail call double @llvm.fmuladd.f64(double %240, double %230, double %239)
  %242 = fmul double %6, 0x41520ADF40000000
  %243 = tail call double @llvm.fmuladd.f64(double %242, double %231, double %241)
  %244 = tail call double @llvm.fmuladd.f64(double %232, double 0xC1806E7908000000, double %243)
  %245 = sitofp i32 %0 to double
  %246 = fmul double %6, -7.236800e+05
  %247 = tail call double @llvm.fmuladd.f64(double %246, double %245, double %244)
  %248 = fmul double %226, -8.700000e+02
  %249 = tail call double @llvm.fmuladd.f64(double %248, double %245, double %247)
  %250 = fmul double %229, 0x416C7B9500000000
  %251 = tail call double @llvm.fmuladd.f64(double %250, double %245, double %249)
  %252 = fmul double %225, 1.940400e+05
  %253 = fmul double %252, %229
  %254 = tail call double @llvm.fmuladd.f64(double %253, double %245, double %251)
  %255 = fmul double %6, 0xC160C0F3E0000000
  %256 = fmul double %255, %230
  %257 = tail call double @llvm.fmuladd.f64(double %256, double %245, double %254)
  %258 = fmul double %231, 0x4192341CAC000000
  %259 = tail call double @llvm.fmuladd.f64(double %258, double %245, double %257)
  %260 = tail call double @llvm.fmuladd.f64(double %225, double 2.693250e+05, double 3.628800e+05)
  %261 = tail call double @llvm.fmuladd.f64(double %227, double 4.500000e+01, double %260)
  %262 = tail call double @llvm.fmuladd.f64(double %232, double 0x41806E7908000000, double %261)
  %263 = mul nsw i32 %0, 64864800
  %264 = sitofp i32 %263 to double
  %265 = fneg double %264
  %266 = tail call double @llvm.fmuladd.f64(double %6, double -1.621620e+07, double %265)
  %267 = tail call double @llvm.fmuladd.f64(double %231, double %266, double %262)
  %268 = fmul double %6, 1.172700e+06
  %269 = tail call double @llvm.fmuladd.f64(double %268, double %245, double %267)
  %270 = fmul double %226, 9.450000e+03
  %271 = tail call double @llvm.fmuladd.f64(double %270, double %245, double %269)
  %272 = tail call double @llvm.fmuladd.f64(double %225, double 9.459450e+05, double 0x41828ED700000000)
  %273 = fmul double %6, 0x4177D78270000000
  %274 = tail call double @llvm.fmuladd.f64(double %273, double %245, double %272)
  %275 = tail call double @llvm.fmuladd.f64(double %230, double %274, double %271)
  %276 = fmul double %226, -1.386000e+04
  %277 = tail call double @llvm.fmuladd.f64(double %6, double 0xC164B9C800000000, double %276)
  %278 = mul nsw i32 %0, 7983360
  %279 = sitofp i32 %278 to double
  %280 = fsub double %277, %279
  %281 = fmul double %225, -1.094940e+06
  %282 = tail call double @llvm.fmuladd.f64(double %281, double %245, double %280)
  %283 = tail call double @llvm.fmuladd.f64(double %229, double %282, double %275)
  %284 = fmul double %26, %283
  br label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %24, %224, %171, %128, %94, %70, %49, %36, %27
  %.0375.ph = phi double [ %30, %27 ], [ %42, %36 ], [ %59, %49 ], [ %83, %70 ], [ %109, %94 ], [ %152, %128 ], [ %199, %171 ], [ %259, %224 ], [ -1.000000e+00, %24 ]
  %.0374.ph = phi double [ %35, %27 ], [ %48, %36 ], [ %69, %49 ], [ %93, %70 ], [ %127, %94 ], [ %170, %128 ], [ %223, %171 ], [ %284, %224 ], [ %26, %24 ]
  %xtraiter = and i32 %1, 1
  %285 = icmp eq i32 %1, 1
  br i1 %285, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.preheader
  %unroll_iter = and i32 %1, -2
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %.0381 = phi i32 [ 1, %.lr.ph.preheader.new ], [ %299, %.lr.ph ]
  %.0377380 = phi double [ %6, %.lr.ph.preheader.new ], [ %298, %.lr.ph ]
  %niter = phi i32 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %286 = mul nsw i32 %.0381, %0
  %287 = mul nsw i32 %286, %.0381
  %288 = sitofp i32 %287 to double
  %289 = fneg double %288
  %290 = tail call double @llvm.fmuladd.f64(double %2, double %2, double %289)
  %291 = fmul double %.0377380, %290
  %292 = add nuw i32 %.0381, 1
  %293 = mul nsw i32 %292, %0
  %294 = mul nsw i32 %293, %292
  %295 = sitofp i32 %294 to double
  %296 = fneg double %295
  %297 = tail call double @llvm.fmuladd.f64(double %2, double %2, double %296)
  %298 = fmul double %291, %297
  %299 = add nuw i32 %.0381, 2
  %niter.next.1 = add i32 %niter, 2
  %niter.ncmp.1 = icmp eq i32 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph, !llvm.loop !5

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph, %.lr.ph.preheader
  %.lcssa.ph = phi double [ poison, %.lr.ph.preheader ], [ %298, %.lr.ph ]
  %.0381.unr = phi i32 [ 1, %.lr.ph.preheader ], [ %299, %.lr.ph ]
  %.0377380.unr = phi double [ %6, %.lr.ph.preheader ], [ %298, %.lr.ph ]
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %._crit_edge.loopexit.unr-lcssa
  %300 = mul nsw i32 %.0381.unr, %0
  %301 = mul nsw i32 %300, %.0381.unr
  %302 = sitofp i32 %301 to double
  %303 = fneg double %302
  %304 = tail call double @llvm.fmuladd.f64(double %2, double %2, double %303)
  %305 = fmul double %.0377380.unr, %304
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %24
  %.0374388 = phi double [ 1.000000e+00, %24 ], [ %.0374.ph, %._crit_edge.loopexit.unr-lcssa ], [ %.0374.ph, %.lr.ph.epil ]
  %.0375386 = phi double [ 0.000000e+00, %24 ], [ %.0375.ph, %._crit_edge.loopexit.unr-lcssa ], [ %.0375.ph, %.lr.ph.epil ]
  %.0377.lcssa = phi double [ %6, %24 ], [ %.lcssa.ph, %._crit_edge.loopexit.unr-lcssa ], [ %305, %.lr.ph.epil ]
  %306 = fmul double %.0375386, %2
  %307 = tail call double @cos(double noundef %7) #3
  %308 = tail call double @sin(double noundef %7) #3
  %309 = fmul double %.0374388, %308
  %310 = tail call double @llvm.fmuladd.f64(double %306, double %307, double %309)
  %311 = extractelement <2 x double> %25, i64 1
  %312 = fmul double %311, %310
  %313 = tail call double @sqrt(double noundef %.0377.lcssa) #3
  %314 = fdiv double %312, %313
  br label %315

315:                                              ; preds = %24, %._crit_edge
  %storemerge = phi double [ %314, %._crit_edge ], [ 0.000000e+00, %24 ]
  %.0376 = phi i32 [ 0, %._crit_edge ], [ 1, %24 ]
  store double %storemerge, ptr %4, align 8, !tbaa !7
  ret i32 %.0376
}

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

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

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


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass