; LLVM IR from VeloxChem/VeloxChem :: src/pdft_func/PairDensityLYP.ll (ZN7pdftlyp15compute_exc_vxcEiPKdS1_PdS2_S2_)

; 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: mustprogress nounwind uwtable
define dso_local void @_ZN7pdftlyp15compute_exc_vxcEiPKdS1_PdS2_S2_(i32 noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) #0 {
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, 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 i32, align 4
  %22 = alloca i32, align 4
  %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 double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca double, align 8
  %45 = alloca double, align 8
  %46 = alloca double, align 8
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca double, align 8
  %50 = alloca double, align 8
  %51 = alloca double, align 8
  %52 = alloca double, align 8
  %53 = alloca double, align 8
  %54 = alloca double, align 8
  %55 = alloca double, align 8
  %56 = alloca double, align 8
  %57 = alloca double, align 8
  %58 = alloca double, align 8
  %59 = alloca double, align 8
  %60 = alloca double, align 8
  %61 = alloca double, align 8
  %62 = alloca double, align 8
  %63 = alloca double, align 8
  %64 = alloca double, align 8
  %65 = alloca double, align 8
  %66 = alloca double, align 8
  %67 = alloca double, align 8
  %68 = alloca double, align 8
  %69 = alloca double, align 8
  %70 = alloca double, align 8
  %71 = alloca double, align 8
  %72 = alloca double, align 8
  %73 = alloca double, align 8
  %74 = alloca double, align 8
  %75 = alloca double, align 8
  %76 = alloca double, align 8
  %77 = alloca double, align 8
  %78 = alloca double, align 8
  %79 = alloca double, align 8
  %80 = alloca double, align 8
  %81 = alloca double, align 8
  %82 = alloca double, align 8
  %83 = alloca double, align 8
  %84 = alloca double, align 8
  %85 = alloca double, align 8
  %86 = alloca double, align 8
  %87 = alloca double, align 8
  %88 = alloca double, align 8
  %89 = alloca double, align 8
  %90 = alloca double, align 8
  %91 = alloca double, align 8
  %92 = alloca double, align 8
  %93 = alloca double, align 8
  %94 = alloca double, align 8
  %95 = alloca double, align 8
  %96 = alloca double, align 8
  store i32 %0, ptr %7, align 4, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !9
  store ptr %2, ptr %9, align 8, !tbaa !9
  store ptr %3, ptr %10, align 8, !tbaa !9
  store ptr %4, ptr %11, align 8, !tbaa !9
  store ptr %5, ptr %12, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #5
  store double 4.918000e-02, ptr %13, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  store double 1.320000e-01, ptr %14, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  store double 2.533000e-01, ptr %15, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  store double 3.490000e-01, ptr %16, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  %97 = call double @pow(double noundef 3.000000e+00, double noundef 0x3FE5555555555555) #5
  %98 = fmul double 3.000000e-01, %97
  %99 = call double @pow(double noundef 0x400921FB54442D18, double noundef 0x3FF5555555555555) #5
  %100 = fmul double %98, %99
  store double %100, ptr %17, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  %101 = call double @cbrt(double noundef 2.000000e+00) #6
  %102 = fmul double 1.250000e-01, %101
  store double %102, ptr %18, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  %103 = load double, ptr %18, align 8, !tbaa !11
  %104 = fmul double 2.500000e-01, %103
  store double %104, ptr %19, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  %105 = load double, ptr %19, align 8, !tbaa !11
  %106 = fmul double 0x3FAC71C71C71C71C, %105
  store double %106, ptr %20, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  store i32 0, ptr %21, align 4, !tbaa !5
  br label %107

107:                                              ; preds = %904, %6
  %108 = load i32, ptr %21, align 4, !tbaa !5
  %109 = load i32, ptr %7, align 4, !tbaa !5
  %110 = icmp slt i32 %108, %109
  br i1 %110, label %112, label %111

111:                                              ; preds = %107
  store i32 2, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  br label %907

112:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  %113 = load ptr, ptr %8, align 8, !tbaa !9
  %114 = load i32, ptr %21, align 4, !tbaa !5
  %115 = mul nsw i32 2, %114
  %116 = add nsw i32 %115, 0
  %117 = sext i32 %116 to i64
  %118 = getelementptr inbounds double, ptr %113, i64 %117
  %119 = load double, ptr %118, align 8, !tbaa !11
  store double %119, ptr %23, align 8, !tbaa !11
  %120 = load double, ptr %23, align 8, !tbaa !11
  %121 = fcmp olt double %120, 0x3C9CD2B297D889BC
  br i1 %121, label %122, label %157

122:                                              ; preds = %112
  %123 = load ptr, ptr %10, align 8, !tbaa !9
  %124 = load i32, ptr %21, align 4, !tbaa !5
  %125 = sext i32 %124 to i64
  %126 = getelementptr inbounds double, ptr %123, i64 %125
  store double 0.000000e+00, ptr %126, align 8, !tbaa !11
  %127 = load ptr, ptr %11, align 8, !tbaa !9
  %128 = load i32, ptr %21, align 4, !tbaa !5
  %129 = mul nsw i32 2, %128
  %130 = add nsw i32 %129, 0
  %131 = sext i32 %130 to i64
  %132 = getelementptr inbounds double, ptr %127, i64 %131
  store double 0.000000e+00, ptr %132, align 8, !tbaa !11
  %133 = load ptr, ptr %11, align 8, !tbaa !9
  %134 = load i32, ptr %21, align 4, !tbaa !5
  %135 = mul nsw i32 2, %134
  %136 = add nsw i32 %135, 1
  %137 = sext i32 %136 to i64
  %138 = getelementptr inbounds double, ptr %133, i64 %137
  store double 0.000000e+00, ptr %138, align 8, !tbaa !11
  %139 = load ptr, ptr %12, align 8, !tbaa !9
  %140 = load i32, ptr %21, align 4, !tbaa !5
  %141 = mul nsw i32 3, %140
  %142 = add nsw i32 %141, 0
  %143 = sext i32 %142 to i64
  %144 = getelementptr inbounds double, ptr %139, i64 %143
  store double 0.000000e+00, ptr %144, align 8, !tbaa !11
  %145 = load ptr, ptr %12, align 8, !tbaa !9
  %146 = load i32, ptr %21, align 4, !tbaa !5
  %147 = mul nsw i32 3, %146
  %148 = add nsw i32 %147, 1
  %149 = sext i32 %148 to i64
  %150 = getelementptr inbounds double, ptr %145, i64 %149
  store double 0.000000e+00, ptr %150, align 8, !tbaa !11
  %151 = load ptr, ptr %12, align 8, !tbaa !9
  %152 = load i32, ptr %21, align 4, !tbaa !5
  %153 = mul nsw i32 3, %152
  %154 = add nsw i32 %153, 2
  %155 = sext i32 %154 to i64
  %156 = getelementptr inbounds double, ptr %151, i64 %155
  store double 0.000000e+00, ptr %156, align 8, !tbaa !11
  store i32 4, ptr %22, align 4
  br label %901

157:                                              ; preds = %112
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  %158 = load ptr, ptr %8, align 8, !tbaa !9
  %159 = load i32, ptr %21, align 4, !tbaa !5
  %160 = mul nsw i32 2, %159
  %161 = add nsw i32 %160, 1
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds double, ptr %158, i64 %162
  %164 = load double, ptr %163, align 8, !tbaa !11
  store double %164, ptr %24, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  %165 = load ptr, ptr %9, align 8, !tbaa !9
  %166 = load i32, ptr %21, align 4, !tbaa !5
  %167 = mul nsw i32 3, %166
  %168 = add nsw i32 %167, 0
  %169 = sext i32 %168 to i64
  %170 = getelementptr inbounds double, ptr %165, i64 %169
  %171 = load double, ptr %170, align 8, !tbaa !11
  store double %171, ptr %25, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  %172 = load double, ptr %23, align 8, !tbaa !11
  %173 = call double @pow(double noundef %172, double noundef 0xBFD5555555555555) #5
  store double %173, ptr %26, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #5
  %174 = load double, ptr %23, align 8, !tbaa !11
  %175 = call double @pow(double noundef %174, double noundef 0x3FF5555555555555) #5
  %176 = fdiv double 0xBFD5555555555555, %175
  store double %176, ptr %27, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #5
  %177 = load double, ptr %14, align 8, !tbaa !11
  %178 = load double, ptr %15, align 8, !tbaa !11
  %179 = fneg double %178
  %180 = load double, ptr %26, align 8, !tbaa !11
  %181 = fmul double %179, %180
  %182 = call double @exp(double noundef %181) #5
  %183 = fmul double %177, %182
  %184 = load double, ptr %16, align 8, !tbaa !11
  %185 = load double, ptr %26, align 8, !tbaa !11
  %186 = call double @llvm.fmuladd.f64(double %184, double %185, double 1.000000e+00)
  %187 = fdiv double %183, %186
  store double %187, ptr %28, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #5
  %188 = load double, ptr %27, align 8, !tbaa !11
  %189 = load double, ptr %14, align 8, !tbaa !11
  %190 = fneg double %189
  %191 = load double, ptr %15, align 8, !tbaa !11
  %192 = fmul double %190, %191
  %193 = load double, ptr %15, align 8, !tbaa !11
  %194 = fneg double %193
  %195 = load double, ptr %26, align 8, !tbaa !11
  %196 = fmul double %194, %195
  %197 = call double @exp(double noundef %196) #5
  %198 = fmul double %192, %197
  %199 = load double, ptr %16, align 8, !tbaa !11
  %200 = load double, ptr %26, align 8, !tbaa !11
  %201 = call double @llvm.fmuladd.f64(double %199, double %200, double 1.000000e+00)
  %202 = fdiv double %198, %201
  %203 = load double, ptr %14, align 8, !tbaa !11
  %204 = load double, ptr %16, align 8, !tbaa !11
  %205 = fmul double %203, %204
  %206 = load double, ptr %15, align 8, !tbaa !11
  %207 = fneg double %206
  %208 = load double, ptr %26, align 8, !tbaa !11
  %209 = fmul double %207, %208
  %210 = call double @exp(double noundef %209) #5
  %211 = fmul double %205, %210
  %212 = load double, ptr %16, align 8, !tbaa !11
  %213 = load double, ptr %26, align 8, !tbaa !11
  %214 = call double @llvm.fmuladd.f64(double %212, double %213, double 1.000000e+00)
  %215 = call double @pow(double noundef %214, double noundef 2.000000e+00) #5
  %216 = fdiv double %211, %215
  %217 = fsub double %202, %216
  %218 = fmul double %188, %217
  store double %218, ptr %29, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  %219 = load double, ptr %26, align 8, !tbaa !11
  %220 = load double, ptr %15, align 8, !tbaa !11
  %221 = load double, ptr %16, align 8, !tbaa !11
  %222 = load double, ptr %16, align 8, !tbaa !11
  %223 = load double, ptr %26, align 8, !tbaa !11
  %224 = call double @llvm.fmuladd.f64(double %222, double %223, double 1.000000e+00)
  %225 = fdiv double %221, %224
  %226 = fadd double %220, %225
  %227 = fmul double %219, %226
  store double %227, ptr %30, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #5
  %228 = load double, ptr %27, align 8, !tbaa !11
  %229 = load double, ptr %15, align 8, !tbaa !11
  %230 = load double, ptr %16, align 8, !tbaa !11
  %231 = call double @pow(double noundef %230, double noundef 2.000000e+00) #5
  %232 = load double, ptr %26, align 8, !tbaa !11
  %233 = fmul double %231, %232
  %234 = load double, ptr %16, align 8, !tbaa !11
  %235 = load double, ptr %26, align 8, !tbaa !11
  %236 = call double @llvm.fmuladd.f64(double %234, double %235, double 1.000000e+00)
  %237 = call double @pow(double noundef %236, double noundef 2.000000e+00) #5
  %238 = fdiv double %233, %237
  %239 = fsub double %229, %238
  %240 = load double, ptr %16, align 8, !tbaa !11
  %241 = load double, ptr %16, align 8, !tbaa !11
  %242 = load double, ptr %26, align 8, !tbaa !11
  %243 = call double @llvm.fmuladd.f64(double %241, double %242, double 1.000000e+00)
  %244 = fdiv double %240, %243
  %245 = fadd double %239, %244
  %246 = fmul double %228, %245
  store double %246, ptr %31, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #5
  %247 = load double, ptr %24, align 8, !tbaa !11
  %248 = fmul double -2.000000e+00, %247
  %249 = load double, ptr %23, align 8, !tbaa !11
  %250 = call double @pow(double noundef %249, double noundef 2.000000e+00) #5
  %251 = fdiv double %248, %250
  store double %251, ptr %32, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #5
  %252 = load double, ptr %23, align 8, !tbaa !11
  %253 = call double @pow(double noundef %252, double noundef 2.000000e+00) #5
  %254 = fdiv double -2.000000e+00, %253
  store double %254, ptr %33, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #5
  %255 = load double, ptr %24, align 8, !tbaa !11
  %256 = fmul double 4.000000e+00, %255
  %257 = load double, ptr %23, align 8, !tbaa !11
  %258 = call double @pow(double noundef %257, double noundef 3.000000e+00) #5
  %259 = fdiv double %256, %258
  store double %259, ptr %34, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #5
  %260 = load double, ptr %32, align 8, !tbaa !11
  %261 = fsub double %260, 1.000000e+00
  %262 = load double, ptr %16, align 8, !tbaa !11
  %263 = load double, ptr %26, align 8, !tbaa !11
  %264 = call double @llvm.fmuladd.f64(double %262, double %263, double 1.000000e+00)
  %265 = fdiv double %261, %264
  store double %265, ptr %35, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #5
  %266 = load double, ptr %16, align 8, !tbaa !11
  %267 = load double, ptr %26, align 8, !tbaa !11
  %268 = call double @llvm.fmuladd.f64(double %266, double %267, double 1.000000e+00)
  %269 = fdiv double 1.000000e+00, %268
  store double %269, ptr %36, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #5
  %270 = load double, ptr %36, align 8, !tbaa !11
  %271 = load double, ptr %33, align 8, !tbaa !11
  %272 = fmul double %270, %271
  store double %272, ptr %37, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #5
  %273 = load double, ptr %36, align 8, !tbaa !11
  %274 = load double, ptr %34, align 8, !tbaa !11
  %275 = load double, ptr %27, align 8, !tbaa !11
  %276 = load double, ptr %16, align 8, !tbaa !11
  %277 = fmul double %275, %276
  %278 = load double, ptr %32, align 8, !tbaa !11
  %279 = fsub double %278, 1.000000e+00
  %280 = fmul double %277, %279
  %281 = load double, ptr %16, align 8, !tbaa !11
  %282 = load double, ptr %26, align 8, !tbaa !11
  %283 = call double @llvm.fmuladd.f64(double %281, double %282, double 1.000000e+00)
  %284 = call double @pow(double noundef %283, double noundef 2.000000e+00) #5
  %285 = fdiv double %280, %284
  %286 = fneg double %285
  %287 = call double @llvm.fmuladd.f64(double %273, double %274, double %286)
  store double %287, ptr %38, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #5
  %288 = load double, ptr %23, align 8, !tbaa !11
  %289 = call double @pow(double noundef %288, double noundef 0xC005555555555555) #5
  %290 = load double, ptr %25, align 8, !tbaa !11
  %291 = fmul double %289, %290
  store double %291, ptr %39, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #5
  %292 = load double, ptr %23, align 8, !tbaa !11
  %293 = call double @pow(double noundef %292, double noundef 0xC005555555555555) #5
  store double %293, ptr %40, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #5
  %294 = load double, ptr %23, align 8, !tbaa !11
  %295 = call double @pow(double noundef %294, double noundef 0xC00D555555555555) #5
  %296 = fmul double 0xC005555555555555, %295
  %297 = load double, ptr %25, align 8, !tbaa !11
  %298 = fmul double %296, %297
  store double %298, ptr %41, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #5
  %299 = load double, ptr %39, align 8, !tbaa !11
  %300 = fneg double %299
  %301 = load double, ptr %32, align 8, !tbaa !11
  %302 = fsub double 1.000000e+00, %301
  %303 = fmul double 0x3F8C71C71C71C71C, %302
  %304 = load double, ptr %30, align 8, !tbaa !11
  %305 = call double @llvm.fmuladd.f64(double -7.000000e+00, double %304, double 4.700000e+01)
  %306 = call double @llvm.fmuladd.f64(double %303, double %305, double 0xBFE5555555555555)
  %307 = fmul double %300, %306
  store double %307, ptr %42, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #5
  %308 = load double, ptr %39, align 8, !tbaa !11
  %309 = fneg double %308
  %310 = load double, ptr %30, align 8, !tbaa !11
  %311 = call double @llvm.fmuladd.f64(double 0x3FB8E38E38E38E39, double %310, double 0xBFE4E38E38E38E39)
  %312 = fmul double %309, %311
  store double %312, ptr %43, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #5
  %313 = load double, ptr %32, align 8, !tbaa !11
  %314 = fsub double 1.000000e+00, %313
  %315 = fmul double 0xBF8C71C71C71C71C, %314
  %316 = load double, ptr %30, align 8, !tbaa !11
  %317 = call double @llvm.fmuladd.f64(double -7.000000e+00, double %316, double 4.700000e+01)
  %318 = call double @llvm.fmuladd.f64(double %315, double %317, double 0x3FE5555555555555)
  store double %318, ptr %44, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #5
  %319 = load double, ptr %43, align 8, !tbaa !11
  %320 = load double, ptr %33, align 8, !tbaa !11
  %321 = fmul double %319, %320
  store double %321, ptr %45, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #5
  %322 = load double, ptr %44, align 8, !tbaa !11
  %323 = load double, ptr %40, align 8, !tbaa !11
  %324 = fmul double %322, %323
  store double %324, ptr %46, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #5
  %325 = load double, ptr %31, align 8, !tbaa !11
  %326 = fneg double %325
  %327 = load double, ptr %39, align 8, !tbaa !11
  %328 = fmul double %326, %327
  %329 = load double, ptr %32, align 8, !tbaa !11
  %330 = call double @llvm.fmuladd.f64(double 0x3FB8E38E38E38E39, double %329, double 0xBFB8E38E38E38E39)
  %331 = load double, ptr %44, align 8, !tbaa !11
  %332 = load double, ptr %41, align 8, !tbaa !11
  %333 = fmul double %331, %332
  %334 = call double @llvm.fmuladd.f64(double %328, double %330, double %333)
  %335 = load double, ptr %43, align 8, !tbaa !11
  %336 = load double, ptr %34, align 8, !tbaa !11
  %337 = call double @llvm.fmuladd.f64(double %335, double %336, double %334)
  store double %337, ptr %47, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #5
  store double 0.000000e+00, ptr %48, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #5
  store double 0.000000e+00, ptr %49, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #5
  store double 0.000000e+00, ptr %50, align 8, !tbaa !11
  %338 = load double, ptr %24, align 8, !tbaa !11
  %339 = fcmp olt double %338, 0xBC9CD2B297D889BC
  br i1 %339, label %340, label %396

340:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #5
  %341 = load double, ptr %24, align 8, !tbaa !11
  %342 = fneg double %341
  %343 = call double @sqrt(double noundef %342) #5
  %344 = fmul double 0x3FF6A09E667F3BCD, %343
  %345 = load double, ptr %23, align 8, !tbaa !11
  %346 = fdiv double %344, %345
  store double %346, ptr %51, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #5
  %347 = load double, ptr %24, align 8, !tbaa !11
  %348 = fneg double %347
  %349 = call double @sqrt(double noundef %348) #5
  %350 = fmul double 0x3FE6A09E667F3BCD, %349
  %351 = load double, ptr %23, align 8, !tbaa !11
  %352 = load double, ptr %24, align 8, !tbaa !11
  %353 = fmul double %351, %352
  %354 = fdiv double %350, %353
  store double %354, ptr %52, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #5
  %355 = load double, ptr %24, align 8, !tbaa !11
  %356 = fneg double %355
  %357 = call double @sqrt(double noundef %356) #5
  %358 = fmul double 0xBFF6A09E667F3BCD, %357
  %359 = load double, ptr %23, align 8, !tbaa !11
  %360 = call double @pow(double noundef %359, double noundef 2.000000e+00) #5
  %361 = fdiv double %358, %360
  store double %361, ptr %53, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #5
  store double 0.000000e+00, ptr %54, align 8, !tbaa !11
  %362 = load double, ptr %51, align 8, !tbaa !11
  %363 = fsub double 1.000000e+00, %362
  %364 = fcmp ogt double %363, 0x3C9CD2B297D889BC
  br i1 %364, label %365, label %381

365:                                              ; preds = %340
  %366 = load double, ptr %51, align 8, !tbaa !11
  %367 = fsub double 1.000000e+00, %366
  %368 = call double @pow(double noundef %367, double noundef 0x4005555555555555) #5
  %369 = load double, ptr %51, align 8, !tbaa !11
  %370 = fadd double %369, 1.000000e+00
  %371 = call double @pow(double noundef %370, double noundef 0x4005555555555555) #5
  %372 = fadd double %368, %371
  store double %372, ptr %49, align 8, !tbaa !11
  %373 = load double, ptr %51, align 8, !tbaa !11
  %374 = fsub double 1.000000e+00, %373
  %375 = call double @pow(double noundef %374, double noundef 0x3FFAAAAAAAAAAAAB) #5
  %376 = load double, ptr %51, align 8, !tbaa !11
  %377 = fadd double %376, 1.000000e+00
  %378 = call double @pow(double noundef %377, double noundef 0x3FFAAAAAAAAAAAAB) #5
  %379 = fmul double 0x4005555555555555, %378
  %380 = call double @llvm.fmuladd.f64(double 0xC005555555555555, double %375, double %379)
  store double %380, ptr %54, align 8, !tbaa !11
  br label %389

381:                                              ; preds = %340
  %382 = load double, ptr %51, align 8, !tbaa !11
  %383 = fadd double %382, 1.000000e+00
  %384 = call double @pow(double noundef %383, double noundef 0x4005555555555555) #5
  store double %384, ptr %49, align 8, !tbaa !11
  %385 = load double, ptr %51, align 8, !tbaa !11
  %386 = fadd double %385, 1.000000e+00
  %387 = call double @pow(double noundef %386, double noundef 0x3FFAAAAAAAAAAAAB) #5
  %388 = fmul double 0x4005555555555555, %387
  store double %388, ptr %54, align 8, !tbaa !11
  br label %389

389:                                              ; preds = %381, %365
  %390 = load double, ptr %54, align 8, !tbaa !11
  %391 = load double, ptr %52, align 8, !tbaa !11
  %392 = fmul double %390, %391
  store double %392, ptr %48, align 8, !tbaa !11
  %393 = load double, ptr %54, align 8, !tbaa !11
  %394 = load double, ptr %53, align 8, !tbaa !11
  %395 = fmul double %393, %394
  store double %395, ptr %50, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  br label %483

396:                                              ; preds = %157
  %397 = load double, ptr %24, align 8, !tbaa !11
  %398 = fcmp olt double %397, 0x3C9CD2B297D889BC
  br i1 %398, label %399, label %414

399:                                              ; preds = %396
  %400 = load double, ptr %32, align 8, !tbaa !11
  %401 = call double @pow(double noundef %400, double noundef 2.000000e+00) #5
  %402 = load double, ptr %32, align 8, !tbaa !11
  %403 = fmul double 0x4011C71C71C71C72, %402
  %404 = call double @llvm.fmuladd.f64(double 0xBFB511E8D2B3183B, double %401, double %403)
  %405 = fadd double %404, 2.000000e+00
  store double %405, ptr %49, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #5
  %406 = load double, ptr %32, align 8, !tbaa !11
  %407 = call double @llvm.fmuladd.f64(double 0xBFC511E8D2B3183B, double %406, double 0x4011C71C71C71C72)
  store double %407, ptr %55, align 8, !tbaa !11
  %408 = load double, ptr %55, align 8, !tbaa !11
  %409 = load double, ptr %33, align 8, !tbaa !11
  %410 = fmul double %408, %409
  store double %410, ptr %48, align 8, !tbaa !11
  %411 = load double, ptr %55, align 8, !tbaa !11
  %412 = load double, ptr %34, align 8, !tbaa !11
  %413 = fmul double %411, %412
  store double %413, ptr %50, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  br label %482

414:                                              ; preds = %396
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #5
  %415 = load double, ptr %24, align 8, !tbaa !11
  %416 = call double @sqrt(double noundef %415) #5
  %417 = fmul double 0x3FF6A09E667F3BCD, %416
  %418 = load double, ptr %23, align 8, !tbaa !11
  %419 = fdiv double %417, %418
  store double %419, ptr %56, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #5
  %420 = load double, ptr %23, align 8, !tbaa !11
  %421 = load double, ptr %24, align 8, !tbaa !11
  %422 = call double @sqrt(double noundef %421) #5
  %423 = fmul double %420, %422
  %424 = fdiv double 0x3FE6A09E667F3BCD, %423
  store double %424, ptr %57, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #5
  %425 = load double, ptr %24, align 8, !tbaa !11
  %426 = call double @sqrt(double noundef %425) #5
  %427 = fmul double 0xBFF6A09E667F3BCD, %426
  %428 = load double, ptr %23, align 8, !tbaa !11
  %429 = call double @pow(double noundef %428, double noundef 2.000000e+00) #5
  %430 = fdiv double %427, %429
  store double %430, ptr %58, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #5
  %431 = load double, ptr %56, align 8, !tbaa !11
  %432 = call double @atan(double noundef %431) #5
  %433 = fmul double 0x4005555555555555, %432
  store double %433, ptr %59, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #5
  %434 = load double, ptr %56, align 8, !tbaa !11
  %435 = call double @pow(double noundef %434, double noundef 2.000000e+00) #5
  %436 = fadd double %435, 1.000000e+00
  %437 = fdiv double 0x4005555555555555, %436
  store double %437, ptr %60, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #5
  %438 = load double, ptr %57, align 8, !tbaa !11
  %439 = load double, ptr %60, align 8, !tbaa !11
  %440 = fmul double %438, %439
  store double %440, ptr %61, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #5
  %441 = load double, ptr %58, align 8, !tbaa !11
  %442 = load double, ptr %60, align 8, !tbaa !11
  %443 = fmul double %441, %442
  store double %443, ptr %62, align 8, !tbaa !11
  %444 = load double, ptr %56, align 8, !tbaa !11
  %445 = call double @pow(double noundef %444, double noundef 2.000000e+00) #5
  %446 = fadd double %445, 1.000000e+00
  %447 = call double @pow(double noundef %446, double noundef 0x3FF5555555555555) #5
  %448 = fmul double 2.000000e+00, %447
  %449 = load double, ptr %59, align 8, !tbaa !11
  %450 = call double @cos(double noundef %449) #5
  %451 = fmul double %448, %450
  store double %451, ptr %49, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #5
  %452 = load double, ptr %56, align 8, !tbaa !11
  %453 = call double @pow(double noundef %452, double noundef 2.000000e+00) #5
  %454 = fadd double %453, 1.000000e+00
  %455 = call double @pow(double noundef %454, double noundef 0x3FF5555555555555) #5
  %456 = fmul double -2.000000e+00, %455
  %457 = load double, ptr %59, align 8, !tbaa !11
  %458 = call double @sin(double noundef %457) #5
  %459 = fmul double %456, %458
  store double %459, ptr %63, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #5
  %460 = load double, ptr %56, align 8, !tbaa !11
  %461 = fmul double 0x4015555555555555, %460
  %462 = load double, ptr %56, align 8, !tbaa !11
  %463 = call double @pow(double noundef %462, double noundef 2.000000e+00) #5
  %464 = fadd double %463, 1.000000e+00
  %465 = call double @cbrt(double noundef %464) #6
  %466 = fmul double %461, %465
  %467 = load double, ptr %59, align 8, !tbaa !11
  %468 = call double @cos(double noundef %467) #5
  %469 = fmul double %466, %468
  store double %469, ptr %64, align 8, !tbaa !11
  %470 = load double, ptr %57, align 8, !tbaa !11
  %471 = load double, ptr %64, align 8, !tbaa !11
  %472 = load double, ptr %63, align 8, !tbaa !11
  %473 = load double, ptr %61, align 8, !tbaa !11
  %474 = fmul double %472, %473
  %475 = call double @llvm.fmuladd.f64(double %470, double %471, double %474)
  store double %475, ptr %48, align 8, !tbaa !11
  %476 = load double, ptr %58, align 8, !tbaa !11
  %477 = load double, ptr %64, align 8, !tbaa !11
  %478 = load double, ptr %63, align 8, !tbaa !11
  %479 = load double, ptr %62, align 8, !tbaa !11
  %480 = fmul double %478, %479
  %481 = call double @llvm.fmuladd.f64(double %476, double %477, double %480)
  store double %481, ptr %50, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #5
  br label %482

482:                                              ; preds = %414, %399
  br label %483

483:                                              ; preds = %482, %389
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #5
  %484 = load double, ptr %49, align 8, !tbaa !11
  %485 = fmul double -5.000000e-01, %484
  %486 = load double, ptr %17, align 8, !tbaa !11
  %487 = fmul double %485, %486
  %488 = load double, ptr %32, align 8, !tbaa !11
  %489 = fsub double 1.000000e+00, %488
  %490 = fmul double %487, %489
  store double %490, ptr %65, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #5
  %491 = load double, ptr %49, align 8, !tbaa !11
  %492 = fmul double 5.000000e-01, %491
  %493 = load double, ptr %17, align 8, !tbaa !11
  %494 = fmul double %492, %493
  store double %494, ptr %66, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #5
  %495 = load double, ptr %17, align 8, !tbaa !11
  %496 = fmul double -5.000000e-01, %495
  %497 = load double, ptr %32, align 8, !tbaa !11
  %498 = fsub double 1.000000e+00, %497
  %499 = fmul double %496, %498
  store double %499, ptr %67, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #5
  %500 = load double, ptr %48, align 8, !tbaa !11
  %501 = load double, ptr %67, align 8, !tbaa !11
  %502 = load double, ptr %66, align 8, !tbaa !11
  %503 = load double, ptr %33, align 8, !tbaa !11
  %504 = fmul double %502, %503
  %505 = call double @llvm.fmuladd.f64(double %500, double %501, double %504)
  store double %505, ptr %68, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #5
  %506 = load double, ptr %50, align 8, !tbaa !11
  %507 = load double, ptr %67, align 8, !tbaa !11
  %508 = load double, ptr %66, align 8, !tbaa !11
  %509 = load double, ptr %34, align 8, !tbaa !11
  %510 = fmul double %508, %509
  %511 = call double @llvm.fmuladd.f64(double %506, double %507, double %510)
  store double %511, ptr %69, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #5
  %512 = load double, ptr %23, align 8, !tbaa !11
  %513 = call double @pow(double noundef %512, double noundef 0xBFF5555555555555) #5
  %514 = load double, ptr %25, align 8, !tbaa !11
  %515 = call double @sqrt(double noundef %514) #5
  %516 = fmul double %513, %515
  store double %516, ptr %70, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #5
  %517 = load double, ptr %23, align 8, !tbaa !11
  %518 = call double @pow(double noundef %517, double noundef 0xBFF5555555555555) #5
  %519 = fmul double 5.000000e-01, %518
  %520 = load double, ptr %25, align 8, !tbaa !11
  %521 = call double @sqrt(double noundef %520) #5
  %522 = fdiv double %519, %521
  store double %522, ptr %71, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #5
  %523 = load double, ptr %23, align 8, !tbaa !11
  %524 = call double @pow(double noundef %523, double noundef 0xC002AAAAAAAAAAAA) #5
  %525 = fmul double 0xBFF5555555555555, %524
  %526 = load double, ptr %25, align 8, !tbaa !11
  %527 = call double @sqrt(double noundef %526) #5
  %528 = fmul double %525, %527
  store double %528, ptr %72, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #5
  %529 = call double @pow(double noundef 2.000000e+00, double noundef 0x3FE5555555555555) #5
  %530 = fmul double 2.000000e+00, %529
  %531 = load double, ptr %19, align 8, !tbaa !11
  %532 = fmul double %530, %531
  %533 = load double, ptr %70, align 8, !tbaa !11
  %534 = call double @pow(double noundef %533, double noundef 2.000000e+00) #5
  %535 = fmul double %532, %534
  %536 = load double, ptr %32, align 8, !tbaa !11
  %537 = fsub double 1.000000e+00, %536
  %538 = fmul double %535, %537
  %539 = load double, ptr %30, align 8, !tbaa !11
  %540 = call double @llvm.fmuladd.f64(double 0xBFAC71C71C71C71C, double %539, double 2.500000e+00)
  %541 = fmul double %538, %540
  %542 = load double, ptr %32, align 8, !tbaa !11
  %543 = fadd double %542, 1.000000e+00
  %544 = fmul double %541, %543
  store double %544, ptr %73, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #5
  %545 = call double @pow(double noundef 2.000000e+00, double noundef 0x3FE5555555555555) #5
  %546 = fmul double 4.000000e+00, %545
  %547 = load double, ptr %19, align 8, !tbaa !11
  %548 = fmul double %546, %547
  %549 = load double, ptr %70, align 8, !tbaa !11
  %550 = fmul double %548, %549
  %551 = load double, ptr %32, align 8, !tbaa !11
  %552 = fsub double 1.000000e+00, %551
  %553 = fmul double %550, %552
  %554 = load double, ptr %30, align 8, !tbaa !11
  %555 = call double @llvm.fmuladd.f64(double 0xBFAC71C71C71C71C, double %554, double 2.500000e+00)
  %556 = fmul double %553, %555
  %557 = load double, ptr %32, align 8, !tbaa !11
  %558 = fadd double %557, 1.000000e+00
  %559 = fmul double %556, %558
  store double %559, ptr %74, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #5
  %560 = call double @pow(double noundef 2.000000e+00, double noundef 0x3FE5555555555555) #5
  %561 = fmul double 2.000000e+00, %560
  %562 = load double, ptr %19, align 8, !tbaa !11
  %563 = fmul double %561, %562
  %564 = load double, ptr %70, align 8, !tbaa !11
  %565 = call double @pow(double noundef %564, double noundef 2.000000e+00) #5
  %566 = fmul double %563, %565
  %567 = load double, ptr %32, align 8, !tbaa !11
  %568 = fsub double 1.000000e+00, %567
  %569 = fmul double %566, %568
  %570 = load double, ptr %30, align 8, !tbaa !11
  %571 = call double @llvm.fmuladd.f64(double 0xBFAC71C71C71C71C, double %570, double 2.500000e+00)
  %572 = call double @pow(double noundef 2.000000e+00, double noundef 0x3FE5555555555555) #5
  %573 = fmul double 2.000000e+00, %572
  %574 = load double, ptr %19, align 8, !tbaa !11
  %575 = fmul double %573, %574
  %576 = load double, ptr %70, align 8, !tbaa !11
  %577 = call double @pow(double noundef %576, double noundef 2.000000e+00) #5
  %578 = fmul double %575, %577
  %579 = load double, ptr %30, align 8, !tbaa !11
  %580 = call double @llvm.fmuladd.f64(double 0xBFAC71C71C71C71C, double %579, double 2.500000e+00)
  %581 = fmul double %578, %580
  %582 = load double, ptr %32, align 8, !tbaa !11
  %583 = fadd double %582, 1.000000e+00
  %584 = fmul double %581, %583
  %585 = fneg double %584
  %586 = call double @llvm.fmuladd.f64(double %569, double %571, double %585)
  store double %586, ptr %75, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #5
  %587 = load double, ptr %75, align 8, !tbaa !11
  %588 = load double, ptr %33, align 8, !tbaa !11
  %589 = fmul double %587, %588
  store double %589, ptr %76, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #5
  %590 = load double, ptr %74, align 8, !tbaa !11
  %591 = load double, ptr %71, align 8, !tbaa !11
  %592 = fmul double %590, %591
  store double %592, ptr %77, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #5
  %593 = call double @pow(double noundef 2.000000e+00, double noundef 0x3FE5555555555555) #5
  %594 = fmul double 0xBFBC71C71C71C71C, %593
  %595 = load double, ptr %31, align 8, !tbaa !11
  %596 = fmul double %594, %595
  %597 = load double, ptr %19, align 8, !tbaa !11
  %598 = fmul double %596, %597
  %599 = load double, ptr %70, align 8, !tbaa !11
  %600 = call double @pow(double noundef %599, double noundef 2.000000e+00) #5
  %601 = fmul double %598, %600
  %602 = load double, ptr %32, align 8, !tbaa !11
  %603 = fsub double 1.000000e+00, %602
  %604 = fmul double %601, %603
  %605 = load double, ptr %32, align 8, !tbaa !11
  %606 = fadd double %605, 1.000000e+00
  %607 = load double, ptr %74, align 8, !tbaa !11
  %608 = load double, ptr %72, align 8, !tbaa !11
  %609 = fmul double %607, %608
  %610 = call double @llvm.fmuladd.f64(double %604, double %606, double %609)
  %611 = load double, ptr %75, align 8, !tbaa !11
  %612 = load double, ptr %34, align 8, !tbaa !11
  %613 = call double @llvm.fmuladd.f64(double %611, double %612, double %610)
  store double %613, ptr %78, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #5
  %614 = call double @pow(double noundef 2.000000e+00, double noundef 0x3FE5555555555555) #5
  %615 = fmul double 2.000000e+00, %614
  %616 = load double, ptr %20, align 8, !tbaa !11
  %617 = fmul double %615, %616
  %618 = load double, ptr %70, align 8, !tbaa !11
  %619 = call double @pow(double noundef %618, double noundef 2.000000e+00) #5
  %620 = fmul double %617, %619
  %621 = load double, ptr %32, align 8, !tbaa !11
  %622 = fsub double 1.000000e+00, %621
  %623 = fmul double %620, %622
  %624 = load double, ptr %30, align 8, !tbaa !11
  %625 = fsub double %624, 1.100000e+01
  %626 = fmul double %623, %625
  %627 = load double, ptr %32, align 8, !tbaa !11
  %628 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %627, double 1.000000e+00)
  %629 = fmul double %626, %628
  store double %629, ptr %79, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #5
  %630 = call double @pow(double noundef 2.000000e+00, double noundef 0x3FE5555555555555) #5
  %631 = fmul double 4.000000e+00, %630
  %632 = load double, ptr %20, align 8, !tbaa !11
  %633 = fmul double %631, %632
  %634 = load double, ptr %70, align 8, !tbaa !11
  %635 = fmul double %633, %634
  %636 = load double, ptr %32, align 8, !tbaa !11
  %637 = fsub double 1.000000e+00, %636
  %638 = fmul double %635, %637
  %639 = load double, ptr %30, align 8, !tbaa !11
  %640 = fsub double %639, 1.100000e+01
  %641 = fmul double %638, %640
  %642 = load double, ptr %32, align 8, !tbaa !11
  %643 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %642, double 1.000000e+00)
  %644 = fmul double %641, %643
  store double %644, ptr %80, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #5
  %645 = call double @pow(double noundef 2.000000e+00, double noundef 0x3FE5555555555555) #5
  %646 = fmul double 6.000000e+00, %645
  %647 = load double, ptr %20, align 8, !tbaa !11
  %648 = fmul double %646, %647
  %649 = load double, ptr %70, align 8, !tbaa !11
  %650 = call double @pow(double noundef %649, double noundef 2.000000e+00) #5
  %651 = fmul double %648, %650
  %652 = load double, ptr %32, align 8, !tbaa !11
  %653 = fsub double 1.000000e+00, %652
  %654 = fmul double %651, %653
  %655 = load double, ptr %30, align 8, !tbaa !11
  %656 = fsub double %655, 1.100000e+01
  %657 = call double @pow(double noundef 2.000000e+00, double noundef 0x3FE5555555555555) #5
  %658 = fmul double 2.000000e+00, %657
  %659 = load double, ptr %20, align 8, !tbaa !11
  %660 = fmul double %658, %659
  %661 = load double, ptr %70, align 8, !tbaa !11
  %662 = call double @pow(double noundef %661, double noundef 2.000000e+00) #5
  %663 = fmul double %660, %662
  %664 = load double, ptr %30, align 8, !tbaa !11
  %665 = fsub double %664, 1.100000e+01
  %666 = fmul double %663, %665
  %667 = load double, ptr %32, align 8, !tbaa !11
  %668 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %667, double 1.000000e+00)
  %669 = fmul double %666, %668
  %670 = fneg double %669
  %671 = call double @llvm.fmuladd.f64(double %654, double %656, double %670)
  store double %671, ptr %81, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #5
  %672 = load double, ptr %81, align 8, !tbaa !11
  %673 = load double, ptr %33, align 8, !tbaa !11
  %674 = fmul double %672, %673
  store double %674, ptr %82, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #5
  %675 = load double, ptr %80, align 8, !tbaa !11
  %676 = load double, ptr %71, align 8, !tbaa !11
  %677 = fmul double %675, %676
  store double %677, ptr %83, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #5
  %678 = call double @pow(double noundef 2.000000e+00, double noundef 0x3FE5555555555555) #5
  %679 = fmul double 2.000000e+00, %678
  %680 = load double, ptr %31, align 8, !tbaa !11
  %681 = fmul double %679, %680
  %682 = load double, ptr %20, align 8, !tbaa !11
  %683 = fmul double %681, %682
  %684 = load double, ptr %70, align 8, !tbaa !11
  %685 = call double @pow(double noundef %684, double noundef 2.000000e+00) #5
  %686 = fmul double %683, %685
  %687 = load double, ptr %32, align 8, !tbaa !11
  %688 = fsub double 1.000000e+00, %687
  %689 = fmul double %686, %688
  %690 = load double, ptr %32, align 8, !tbaa !11
  %691 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %690, double 1.000000e+00)
  %692 = load double, ptr %80, align 8, !tbaa !11
  %693 = load double, ptr %72, align 8, !tbaa !11
  %694 = fmul double %692, %693
  %695 = call double @llvm.fmuladd.f64(double %689, double %691, double %694)
  %696 = load double, ptr %81, align 8, !tbaa !11
  %697 = load double, ptr %34, align 8, !tbaa !11
  %698 = call double @llvm.fmuladd.f64(double %696, double %697, double %695)
  store double %698, ptr %84, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #5
  %699 = call double @pow(double noundef 2.000000e+00, double noundef 0x3FE5555555555555) #5
  %700 = fmul double -2.000000e+00, %699
  %701 = load double, ptr %18, align 8, !tbaa !11
  %702 = fmul double %700, %701
  %703 = load double, ptr %39, align 8, !tbaa !11
  %704 = fmul double %702, %703
  %705 = load double, ptr %32, align 8, !tbaa !11
  %706 = load double, ptr %32, align 8, !tbaa !11
  %707 = fsub double 1.000000e+00, %706
  %708 = call double @pow(double noundef %707, double noundef 2.000000e+00) #5
  %709 = fmul double 2.500000e-01, %708
  %710 = fneg double %709
  %711 = call double @llvm.fmuladd.f64(double 0x3FE5555555555555, double %705, double %710)
  %712 = fadd double %711, 0x3FE5555555555555
  %713 = fmul double %704, %712
  store double %713, ptr %85, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #5
  %714 = call double @pow(double noundef 2.000000e+00, double noundef 0x3FE5555555555555) #5
  %715 = fmul double -2.000000e+00, %714
  %716 = load double, ptr %18, align 8, !tbaa !11
  %717 = fmul double %715, %716
  %718 = load double, ptr %39, align 8, !tbaa !11
  %719 = fmul double %717, %718
  %720 = load double, ptr %32, align 8, !tbaa !11
  %721 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %720, double 0x3FF2AAAAAAAAAAAB)
  %722 = fmul double %719, %721
  store double %722, ptr %86, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #5
  %723 = call double @pow(double noundef 2.000000e+00, double noundef 0x3FE5555555555555) #5
  %724 = fmul double -2.000000e+00, %723
  %725 = load double, ptr %18, align 8, !tbaa !11
  %726 = fmul double %724, %725
  %727 = load double, ptr %32, align 8, !tbaa !11
  %728 = load double, ptr %32, align 8, !tbaa !11
  %729 = fsub double 1.000000e+00, %728
  %730 = call double @pow(double noundef %729, double noundef 2.000000e+00) #5
  %731 = fmul double 2.500000e-01, %730
  %732 = fneg double %731
  %733 = call double @llvm.fmuladd.f64(double 0x3FE5555555555555, double %727, double %732)
  %734 = fadd double %733, 0x3FE5555555555555
  %735 = fmul double %726, %734
  store double %735, ptr %87, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #5
  %736 = load double, ptr %86, align 8, !tbaa !11
  %737 = load double, ptr %33, align 8, !tbaa !11
  %738 = fmul double %736, %737
  store double %738, ptr %88, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #5
  %739 = load double, ptr %87, align 8, !tbaa !11
  %740 = load double, ptr %40, align 8, !tbaa !11
  %741 = fmul double %739, %740
  store double %741, ptr %89, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #5
  %742 = load double, ptr %87, align 8, !tbaa !11
  %743 = load double, ptr %41, align 8, !tbaa !11
  %744 = load double, ptr %86, align 8, !tbaa !11
  %745 = load double, ptr %34, align 8, !tbaa !11
  %746 = fmul double %744, %745
  %747 = call double @llvm.fmuladd.f64(double %742, double %743, double %746)
  store double %747, ptr %90, align 8, !tbaa !11
  %748 = load double, ptr %13, align 8, !tbaa !11
  %749 = load double, ptr %28, align 8, !tbaa !11
  %750 = load double, ptr %42, align 8, !tbaa !11
  %751 = load double, ptr %65, align 8, !tbaa !11
  %752 = fadd double %750, %751
  %753 = load double, ptr %73, align 8, !tbaa !11
  %754 = fadd double %752, %753
  %755 = load double, ptr %79, align 8, !tbaa !11
  %756 = fadd double %754, %755
  %757 = load double, ptr %85, align 8, !tbaa !11
  %758 = fadd double %756, %757
  %759 = load double, ptr %35, align 8, !tbaa !11
  %760 = call double @llvm.fmuladd.f64(double %749, double %758, double %759)
  %761 = fmul double %748, %760
  %762 = load ptr, ptr %10, align 8, !tbaa !9
  %763 = load i32, ptr %21, align 4, !tbaa !5
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds double, ptr %762, i64 %764
  store double %761, ptr %765, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #5
  %766 = load double, ptr %23, align 8, !tbaa !11
  %767 = load double, ptr %13, align 8, !tbaa !11
  %768 = fmul double %766, %767
  %769 = load double, ptr %28, align 8, !tbaa !11
  %770 = fmul double %768, %769
  store double %770, ptr %91, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #5
  %771 = load double, ptr %23, align 8, !tbaa !11
  %772 = load double, ptr %13, align 8, !tbaa !11
  %773 = fmul double %771, %772
  %774 = load double, ptr %28, align 8, !tbaa !11
  %775 = fmul double %773, %774
  store double %775, ptr %92, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #5
  %776 = load double, ptr %23, align 8, !tbaa !11
  %777 = load double, ptr %13, align 8, !tbaa !11
  %778 = fmul double %776, %777
  %779 = load double, ptr %28, align 8, !tbaa !11
  %780 = fmul double %778, %779
  store double %780, ptr %93, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #5
  %781 = load double, ptr %23, align 8, !tbaa !11
  %782 = load double, ptr %13, align 8, !tbaa !11
  %783 = fmul double %781, %782
  store double %783, ptr %94, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #5
  %784 = load double, ptr %23, align 8, !tbaa !11
  %785 = load double, ptr %13, align 8, !tbaa !11
  %786 = fmul double %784, %785
  %787 = load double, ptr %28, align 8, !tbaa !11
  %788 = fmul double %786, %787
  store double %788, ptr %95, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #5
  %789 = load double, ptr %23, align 8, !tbaa !11
  %790 = load double, ptr %13, align 8, !tbaa !11
  %791 = fmul double %789, %790
  %792 = load double, ptr %28, align 8, !tbaa !11
  %793 = fmul double %791, %792
  store double %793, ptr %96, align 8, !tbaa !11
  %794 = load double, ptr %94, align 8, !tbaa !11
  %795 = load double, ptr %37, align 8, !tbaa !11
  %796 = load double, ptr %93, align 8, !tbaa !11
  %797 = load double, ptr %45, align 8, !tbaa !11
  %798 = fmul double %796, %797
  %799 = call double @llvm.fmuladd.f64(double %794, double %795, double %798)
  %800 = load double, ptr %96, align 8, !tbaa !11
  %801 = load double, ptr %68, align 8, !tbaa !11
  %802 = call double @llvm.fmuladd.f64(double %800, double %801, double %799)
  %803 = load double, ptr %91, align 8, !tbaa !11
  %804 = load double, ptr %76, align 8, !tbaa !11
  %805 = call double @llvm.fmuladd.f64(double %803, double %804, double %802)
  %806 = load double, ptr %92, align 8, !tbaa !11
  %807 = load double, ptr %82, align 8, !tbaa !11
  %808 = call double @llvm.fmuladd.f64(double %806, double %807, double %805)
  %809 = load double, ptr %95, align 8, !tbaa !11
  %810 = load double, ptr %88, align 8, !tbaa !11
  %811 = call double @llvm.fmuladd.f64(double %809, double %810, double %808)
  %812 = load ptr, ptr %11, align 8, !tbaa !9
  %813 = load i32, ptr %21, align 4, !tbaa !5
  %814 = mul nsw i32 2, %813
  %815 = add nsw i32 %814, 1
  %816 = sext i32 %815 to i64
  %817 = getelementptr inbounds double, ptr %812, i64 %816
  store double %811, ptr %817, align 8, !tbaa !11
  %818 = load double, ptr %93, align 8, !tbaa !11
  %819 = load double, ptr %46, align 8, !tbaa !11
  %820 = load double, ptr %91, align 8, !tbaa !11
  %821 = load double, ptr %77, align 8, !tbaa !11
  %822 = fmul double %820, %821
  %823 = call double @llvm.fmuladd.f64(double %818, double %819, double %822)
  %824 = load double, ptr %92, align 8, !tbaa !11
  %825 = load double, ptr %83, align 8, !tbaa !11
  %826 = call double @llvm.fmuladd.f64(double %824, double %825, double %823)
  %827 = load double, ptr %95, align 8, !tbaa !11
  %828 = load double, ptr %89, align 8, !tbaa !11
  %829 = call double @llvm.fmuladd.f64(double %827, double %828, double %826)
  %830 = load ptr, ptr %12, align 8, !tbaa !9
  %831 = load i32, ptr %21, align 4, !tbaa !5
  %832 = mul nsw i32 3, %831
  %833 = add nsw i32 %832, 0
  %834 = sext i32 %833 to i64
  %835 = getelementptr inbounds double, ptr %830, i64 %834
  store double %829, ptr %835, align 8, !tbaa !11
  %836 = load double, ptr %94, align 8, !tbaa !11
  %837 = load double, ptr %38, align 8, !tbaa !11
  %838 = load double, ptr %93, align 8, !tbaa !11
  %839 = load double, ptr %47, align 8, !tbaa !11
  %840 = fmul double %838, %839
  %841 = call double @llvm.fmuladd.f64(double %836, double %837, double %840)
  %842 = load double, ptr %96, align 8, !tbaa !11
  %843 = load double, ptr %69, align 8, !tbaa !11
  %844 = call double @llvm.fmuladd.f64(double %842, double %843, double %841)
  %845 = load double, ptr %91, align 8, !tbaa !11
  %846 = load double, ptr %78, align 8, !tbaa !11
  %847 = call double @llvm.fmuladd.f64(double %845, double %846, double %844)
  %848 = load double, ptr %92, align 8, !tbaa !11
  %849 = load double, ptr %84, align 8, !tbaa !11
  %850 = call double @llvm.fmuladd.f64(double %848, double %849, double %847)
  %851 = load double, ptr %95, align 8, !tbaa !11
  %852 = load double, ptr %90, align 8, !tbaa !11
  %853 = call double @llvm.fmuladd.f64(double %851, double %852, double %850)
  %854 = load double, ptr %23, align 8, !tbaa !11
  %855 = load double, ptr %29, align 8, !tbaa !11
  %856 = fmul double %854, %855
  %857 = load double, ptr %13, align 8, !tbaa !11
  %858 = fmul double %856, %857
  %859 = load double, ptr %42, align 8, !tbaa !11
  %860 = load double, ptr %65, align 8, !tbaa !11
  %861 = fadd double %859, %860
  %862 = load double, ptr %73, align 8, !tbaa !11
  %863 = fadd double %861, %862
  %864 = load double, ptr %79, align 8, !tbaa !11
  %865 = fadd double %863, %864
  %866 = load double, ptr %85, align 8, !tbaa !11
  %867 = fadd double %865, %866
  %868 = call double @llvm.fmuladd.f64(double %858, double %867, double %853)
  %869 = load double, ptr %13, align 8, !tbaa !11
  %870 = load double, ptr %28, align 8, !tbaa !11
  %871 = load double, ptr %42, align 8, !tbaa !11
  %872 = load double, ptr %65, align 8, !tbaa !11
  %873 = fadd double %871, %872
  %874 = load double, ptr %73, align 8, !tbaa !11
  %875 = fadd double %873, %874
  %876 = load double, ptr %79, align 8, !tbaa !11
  %877 = fadd double %875, %876
  %878 = load double, ptr %85, align 8, !tbaa !11
  %879 = fadd double %877, %878
  %880 = load double, ptr %35, align 8, !tbaa !11
  %881 = call double @llvm.fmuladd.f64(double %870, double %879, double %880)
  %882 = call double @llvm.fmuladd.f64(double %869, double %881, double %868)
  %883 = load ptr, ptr %11, align 8, !tbaa !9
  %884 = load i32, ptr %21, align 4, !tbaa !5
  %885 = mul nsw i32 2, %884
  %886 = add nsw i32 %885, 0
  %887 = sext i32 %886 to i64
  %888 = getelementptr inbounds double, ptr %883, i64 %887
  store double %882, ptr %888, align 8, !tbaa !11
  %889 = load ptr, ptr %12, align 8, !tbaa !9
  %890 = load i32, ptr %21, align 4, !tbaa !5
  %891 = mul nsw i32 3, %890
  %892 = add nsw i32 %891, 1
  %893 = sext i32 %892 to i64
  %894 = getelementptr inbounds double, ptr %889, i64 %893
  store double 0.000000e+00, ptr %894, align 8, !tbaa !11
  %895 = load ptr, ptr %12, align 8, !tbaa !9
  %896 = load i32, ptr %21, align 4, !tbaa !5
  %897 = mul nsw i32 3, %896
  %898 = add nsw i32 %897, 2
  %899 = sext i32 %898 to i64
  %900 = getelementptr inbounds double, ptr %895, i64 %899
  store double 0.000000e+00, ptr %900, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  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
  store i32 0, ptr %22, align 4
  br label %901

901:                                              ; preds = %483, %122
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  %902 = load i32, ptr %22, align 4
  switch i32 %902, label %908 [
    i32 0, label %903
    i32 4, label %904
  ]

903:                                              ; preds = %901
  br label %904

904:                                              ; preds = %903, %901
  %905 = load i32, ptr %21, align 4, !tbaa !5
  %906 = add nsw i32 %905, 1
  store i32 %906, ptr %21, align 4, !tbaa !5
  br label %107, !llvm.loop !13

907:                                              ; preds = %111
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, 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
  ret void

908:                                              ; preds = %901
  unreachable
}

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

; Function Attrs: nounwind
declare double @pow(double noundef, double noundef) #2

; Function Attrs: nounwind willreturn memory(none)
declare double @cbrt(double noundef) #3

; Function Attrs: nounwind
declare double @exp(double noundef) #2

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

; Function Attrs: nounwind
declare double @sqrt(double noundef) #2

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

; Function Attrs: nounwind
declare double @atan(double noundef) #2

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !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 memory(write, argmem: readwrite) uwtable
define dso_local void @_ZN7pdftlyp15compute_exc_vxcEiPKdS1_PdS2_S2_(i32 noundef %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef writeonly %3, ptr nocapture noundef writeonly %4, ptr nocapture noundef writeonly %5) local_unnamed_addr #0 {
  %7 = tail call double @cbrt(double noundef 2.000000e+00) #6
  %8 = fmul double %7, 1.250000e-01
  %9 = fmul double %8, 2.500000e-01
  %10 = fmul double %9, 0x3FAC71C71C71C71C
  %11 = icmp sgt i32 %0, 0
  br i1 %11, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %6
  %12 = insertelement <2 x double> poison, double %10, i64 0
  %13 = insertelement <2 x double> %12, double %9, i64 1
  %14 = fmul <2 x double> %13, <double 0x400965FEA53D6E3C, double 0x400965FEA53D6E3C>
  %15 = fmul double %9, 0x401965FEA53D6E3C
  %16 = extractelement <2 x double> %14, i64 1
  %17 = fneg double %16
  %18 = fmul double %10, 0x401965FEA53D6E3C
  %19 = fmul double %10, 0x40230C7EFBEE12AD
  %20 = extractelement <2 x double> %14, i64 0
  %21 = fneg double %20
  %22 = fmul double %8, 0xC00965FEA53D6E3C
  %wide.trip.count = zext nneg i32 %0 to i64
  br label %23

._crit_edge:                                      ; preds = %313, %6
  ret void

23:                                               ; preds = %.lr.ph, %313
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %313 ]
  %24 = shl nuw nsw i64 %indvars.iv, 1
  %25 = getelementptr inbounds double, ptr %1, i64 %24
  %26 = load double, ptr %25, align 8, !tbaa !5
  %27 = fcmp olt double %26, 0x3C9CD2B297D889BC
  br i1 %27, label %28, label %32

28:                                               ; preds = %23
  %29 = getelementptr inbounds double, ptr %3, i64 %indvars.iv
  store double 0.000000e+00, ptr %29, align 8, !tbaa !5
  %30 = getelementptr inbounds double, ptr %4, i64 %24
  store <2 x double> zeroinitializer, ptr %30, align 8, !tbaa !5
  %.idx = mul i64 %indvars.iv, 24
  %31 = getelementptr inbounds i8, ptr %5, i64 %.idx
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %31, i8 0, i64 24, i1 false)
  br label %313

32:                                               ; preds = %23
  %33 = or disjoint i64 %24, 1
  %34 = getelementptr inbounds double, ptr %1, i64 %33
  %35 = load double, ptr %34, align 8, !tbaa !5
  %36 = mul nuw nsw i64 %indvars.iv, 3
  %37 = getelementptr inbounds double, ptr %2, i64 %36
  %38 = load double, ptr %37, align 8, !tbaa !5
  %39 = tail call double @pow(double noundef %26, double noundef 0xBFD5555555555555) #7
  %40 = tail call double @pow(double noundef %26, double noundef 0x3FF5555555555555) #7
  %41 = fdiv double 0xBFD5555555555555, %40
  %42 = fmul double %39, -2.533000e-01
  %43 = tail call double @exp(double noundef %42) #7
  %44 = fmul double %43, 1.320000e-01
  %45 = tail call double @llvm.fmuladd.f64(double %39, double 3.490000e-01, double 1.000000e+00)
  %46 = fdiv double %44, %45
  %47 = tail call double @exp(double noundef %42) #7
  %48 = fmul double %47, -3.343560e-02
  %49 = fdiv double %48, %45
  %50 = tail call double @exp(double noundef %42) #7
  %51 = fmul double %50, 4.606800e-02
  %square = fmul double %45, %45
  %52 = fdiv double %51, %square
  %53 = fsub double %49, %52
  %54 = fmul double %41, %53
  %55 = fdiv double 3.490000e-01, %45
  %56 = fadd double %55, 2.533000e-01
  %57 = fmul double %39, %56
  %58 = fmul double %39, 0x3FBF2E59AF9EBE9B
  %59 = fdiv double %58, %square
  %60 = fsub double 2.533000e-01, %59
  %61 = fadd double %55, %60
  %62 = fmul double %41, %61
  %63 = fmul double %35, -2.000000e+00
  %square348 = fmul double %26, %26
  %64 = fdiv double %63, %square348
  %65 = fmul double %35, 4.000000e+00
  %66 = tail call double @pow(double noundef %26, double noundef 3.000000e+00) #7
  %67 = insertelement <2 x double> <double poison, double -2.000000e+00>, double %65, i64 0
  %68 = insertelement <2 x double> poison, double %66, i64 0
  %69 = insertelement <2 x double> %68, double %square348, i64 1
  %70 = fdiv <2 x double> %67, %69
  %71 = fadd double %64, -1.000000e+00
  %72 = fdiv double %71, %45
  %73 = fdiv double 1.000000e+00, %45
  %74 = extractelement <2 x double> %70, i64 1
  %75 = fmul double %74, %73
  %76 = fmul double %41, -3.490000e-01
  %77 = fmul double %71, %76
  %78 = fdiv double %77, %square
  %79 = extractelement <2 x double> %70, i64 0
  %80 = tail call double @llvm.fmuladd.f64(double %73, double %79, double %78)
  %81 = tail call double @pow(double noundef %26, double noundef 0xC005555555555555) #7
  %82 = fmul double %38, %81
  %83 = tail call double @pow(double noundef %26, double noundef 0xC005555555555555) #7
  %84 = tail call double @pow(double noundef %26, double noundef 0xC00D555555555555) #7
  %85 = fmul double %84, 0xC005555555555555
  %86 = fmul double %38, %85
  %87 = fneg double %82
  %88 = fsub double 1.000000e+00, %64
  %89 = fmul double %88, 0x3F8C71C71C71C71C
  %90 = tail call double @llvm.fmuladd.f64(double %57, double -7.000000e+00, double 4.700000e+01)
  %91 = tail call double @llvm.fmuladd.f64(double %89, double %90, double 0xBFE5555555555555)
  %92 = tail call double @llvm.fmuladd.f64(double %57, double 0x3FB8E38E38E38E39, double 0xBFE4E38E38E38E39)
  %93 = fmul double %92, %87
  %94 = fmul double %88, 0xBF8C71C71C71C71C
  %95 = tail call double @llvm.fmuladd.f64(double %94, double %90, double 0x3FE5555555555555)
  %96 = fmul double %74, %93
  %97 = fmul double %95, %83
  %98 = fneg double %62
  %99 = fmul double %82, %98
  %100 = tail call double @llvm.fmuladd.f64(double %64, double 0x3FB8E38E38E38E39, double 0xBFB8E38E38E38E39)
  %101 = fmul double %95, %86
  %102 = tail call double @llvm.fmuladd.f64(double %99, double %100, double %101)
  %103 = tail call double @llvm.fmuladd.f64(double %93, double %79, double %102)
  %104 = fcmp olt double %35, 0xBC9CD2B297D889BC
  br i1 %104, label %105, label %139

105:                                              ; preds = %32
  %106 = fneg double %35
  %107 = tail call double @sqrt(double noundef %106) #7
  %108 = fmul double %107, 0x3FF6A09E667F3BCD
  %109 = fdiv double %108, %26
  %110 = tail call double @sqrt(double noundef %106) #7
  %111 = fmul double %26, %35
  %112 = tail call double @sqrt(double noundef %106) #7
  %113 = insertelement <2 x double> poison, double %112, i64 0
  %114 = insertelement <2 x double> %113, double %110, i64 1
  %115 = fmul <2 x double> %114, <double 0xBFF6A09E667F3BCD, double 0x3FE6A09E667F3BCD>
  %116 = insertelement <2 x double> poison, double %square348, i64 0
  %117 = insertelement <2 x double> %116, double %111, i64 1
  %118 = fdiv <2 x double> %115, %117
  %119 = fsub double 1.000000e+00, %109
  %120 = fcmp ogt double %119, 0x3C9CD2B297D889BC
  br i1 %120, label %121, label %130

121:                                              ; preds = %105
  %122 = tail call double @pow(double noundef %119, double noundef 0x4005555555555555) #7
  %123 = fadd double %109, 1.000000e+00
  %124 = tail call double @pow(double noundef %123, double noundef 0x4005555555555555) #7
  %125 = fadd double %122, %124
  %126 = tail call double @pow(double noundef %119, double noundef 0x3FFAAAAAAAAAAAAB) #7
  %127 = tail call double @pow(double noundef %123, double noundef 0x3FFAAAAAAAAAAAAB) #7
  %128 = fmul double %127, 0x4005555555555555
  %129 = tail call double @llvm.fmuladd.f64(double %126, double 0xC005555555555555, double %128)
  br label %135

130:                                              ; preds = %105
  %131 = fadd double %109, 1.000000e+00
  %132 = tail call double @pow(double noundef %131, double noundef 0x4005555555555555) #7
  %133 = tail call double @pow(double noundef %131, double noundef 0x3FFAAAAAAAAAAAAB) #7
  %134 = fmul double %133, 0x4005555555555555
  br label %135

135:                                              ; preds = %130, %121
  %.0342 = phi double [ %129, %121 ], [ %134, %130 ]
  %.0340 = phi double [ %125, %121 ], [ %132, %130 ]
  %136 = insertelement <2 x double> poison, double %.0342, i64 0
  %137 = shufflevector <2 x double> %136, <2 x double> poison, <2 x i32> zeroinitializer
  %138 = fmul <2 x double> %118, %137
  br label %187

139:                                              ; preds = %32
  %140 = fcmp olt double %35, 0x3C9CD2B297D889BC
  br i1 %140, label %141, label %149

141:                                              ; preds = %139
  %square356 = fmul double %64, %64
  %142 = fmul double %64, 0x4011C71C71C71C72
  %143 = tail call double @llvm.fmuladd.f64(double %square356, double 0xBFB511E8D2B3183B, double %142)
  %144 = fadd double %143, 2.000000e+00
  %145 = tail call double @llvm.fmuladd.f64(double %64, double 0xBFC511E8D2B3183B, double 0x4011C71C71C71C72)
  %146 = insertelement <2 x double> poison, double %145, i64 0
  %147 = shufflevector <2 x double> %146, <2 x double> poison, <2 x i32> zeroinitializer
  %148 = fmul <2 x double> %147, %70
  br label %187

149:                                              ; preds = %139
  %150 = tail call double @sqrt(double noundef %35) #7
  %151 = fmul double %150, 0x3FF6A09E667F3BCD
  %152 = fdiv double %151, %26
  %153 = tail call double @sqrt(double noundef %35) #7
  %154 = fmul double %26, %153
  %155 = tail call double @sqrt(double noundef %35) #7
  %156 = fmul double %155, 0xBFF6A09E667F3BCD
  %157 = tail call double @atan(double noundef %152) #7
  %158 = fmul double %157, 0x4005555555555555
  %square352 = fmul double %152, %152
  %159 = fadd double %square352, 1.000000e+00
  %160 = fdiv double 0x4005555555555555, %159
  %161 = tail call double @pow(double noundef %159, double noundef 0x3FF5555555555555) #7
  %162 = fmul double %161, 2.000000e+00
  %163 = tail call double @cos(double noundef %158) #7
  %164 = fmul double %162, %163
  %165 = tail call double @pow(double noundef %159, double noundef 0x3FF5555555555555) #7
  %166 = fmul double %165, -2.000000e+00
  %167 = tail call double @sin(double noundef %158) #7
  %168 = fmul double %166, %167
  %169 = fmul double %152, 0x4015555555555555
  %170 = tail call double @cbrt(double noundef %159) #6
  %171 = fmul double %169, %170
  %172 = tail call double @cos(double noundef %158) #7
  %173 = fmul double %171, %172
  %174 = insertelement <2 x double> <double poison, double 0x3FE6A09E667F3BCD>, double %156, i64 0
  %175 = insertelement <2 x double> poison, double %square348, i64 0
  %176 = insertelement <2 x double> %175, double %154, i64 1
  %177 = fdiv <2 x double> %174, %176
  %178 = insertelement <2 x double> %177, double %160, i64 0
  %179 = insertelement <2 x double> %177, double %160, i64 1
  %180 = fmul <2 x double> %178, %179
  %181 = insertelement <2 x double> poison, double %168, i64 0
  %182 = shufflevector <2 x double> %181, <2 x double> poison, <2 x i32> zeroinitializer
  %183 = fmul <2 x double> %180, %182
  %184 = insertelement <2 x double> poison, double %173, i64 0
  %185 = shufflevector <2 x double> %184, <2 x double> poison, <2 x i32> zeroinitializer
  %186 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %177, <2 x double> %185, <2 x double> %183)
  br label %187

187:                                              ; preds = %141, %149, %135
  %.1 = phi double [ %.0340, %135 ], [ %144, %141 ], [ %164, %149 ]
  %188 = phi <2 x double> [ %138, %135 ], [ %148, %141 ], [ %186, %149 ]
  %189 = fmul double %.1, -5.000000e-01
  %190 = fmul double %189, 0x4006F849880FC5B7
  %191 = fmul double %88, %190
  %192 = fmul double %.1, 5.000000e-01
  %193 = fmul double %192, 0x4006F849880FC5B7
  %194 = fmul double %88, 0xBFF6F849880FC5B7
  %195 = fmul double %74, %193
  %196 = extractelement <2 x double> %188, i64 1
  %197 = tail call double @llvm.fmuladd.f64(double %196, double %194, double %195)
  %198 = fmul double %79, %193
  %199 = extractelement <2 x double> %188, i64 0
  %200 = tail call double @llvm.fmuladd.f64(double %199, double %194, double %198)
  %201 = tail call double @pow(double noundef %26, double noundef 0xBFF5555555555555) #7
  %202 = tail call double @sqrt(double noundef %38) #7
  %203 = fmul double %201, %202
  %204 = tail call double @pow(double noundef %26, double noundef 0xBFF5555555555555) #7
  %205 = fmul double %204, 5.000000e-01
  %206 = tail call double @sqrt(double noundef %38) #7
  %207 = fdiv double %205, %206
  %208 = tail call double @pow(double noundef %26, double noundef 0xC002AAAAAAAAAAAA) #7
  %209 = fmul double %208, 0xBFF5555555555555
  %210 = tail call double @sqrt(double noundef %38) #7
  %211 = fmul double %209, %210
  %square358 = fmul double %203, %203
  %212 = tail call double @llvm.fmuladd.f64(double %57, double 0xBFAC71C71C71C71C, double 2.500000e+00)
  %213 = fadd double %64, 1.000000e+00
  %214 = fmul double %15, %203
  %215 = fmul double %88, %214
  %216 = fmul double %212, %215
  %217 = fmul double %213, %216
  %218 = fmul double %square358, %17
  %219 = fmul double %212, %218
  %220 = fmul double %213, %219
  %221 = fmul double %207, %217
  %222 = fmul double %62, 0xBFC6938D04A861FC
  %223 = fmul double %9, %222
  %224 = fmul double %223, %square358
  %225 = fmul double %88, %224
  %226 = fmul double %217, %211
  %227 = tail call double @llvm.fmuladd.f64(double %225, double %213, double %226)
  %228 = fadd double %57, -1.100000e+01
  %229 = tail call double @llvm.fmuladd.f64(double %64, double 3.000000e+00, double 1.000000e+00)
  %230 = insertelement <2 x double> poison, double %square358, i64 0
  %231 = shufflevector <2 x double> %230, <2 x double> poison, <2 x i32> zeroinitializer
  %232 = fmul <2 x double> %14, %231
  %233 = insertelement <2 x double> poison, double %88, i64 0
  %234 = shufflevector <2 x double> %233, <2 x double> poison, <2 x i32> zeroinitializer
  %235 = fmul <2 x double> %234, %232
  %236 = extractelement <2 x double> %235, i64 1
  %237 = tail call double @llvm.fmuladd.f64(double %236, double %212, double %220)
  %238 = fmul double %74, %237
  %239 = tail call double @llvm.fmuladd.f64(double %237, double %79, double %227)
  %240 = insertelement <2 x double> poison, double %228, i64 0
  %241 = insertelement <2 x double> %240, double %212, i64 1
  %242 = fmul <2 x double> %241, %235
  %243 = insertelement <2 x double> poison, double %229, i64 0
  %244 = insertelement <2 x double> %243, double %213, i64 1
  %245 = fmul <2 x double> %244, %242
  %246 = fmul double %18, %203
  %247 = fmul double %88, %246
  %248 = fmul double %228, %247
  %249 = fmul double %229, %248
  %250 = fmul double %19, %square358
  %251 = fmul double %88, %250
  %252 = fmul double %square358, %21
  %253 = fmul double %228, %252
  %254 = fmul double %229, %253
  %255 = tail call double @llvm.fmuladd.f64(double %251, double %228, double %254)
  %256 = fmul double %74, %255
  %257 = fmul double %207, %249
  %258 = fmul double %62, 0x400965FEA53D6E3C
  %259 = fmul double %10, %258
  %260 = fmul double %259, %square358
  %261 = fmul double %88, %260
  %262 = fmul double %249, %211
  %263 = tail call double @llvm.fmuladd.f64(double %261, double %229, double %262)
  %264 = tail call double @llvm.fmuladd.f64(double %255, double %79, double %263)
  %265 = fmul double %22, %82
  %square366 = fmul double %88, %88
  %266 = fmul double %square366, -2.500000e-01
  %267 = tail call double @llvm.fmuladd.f64(double %64, double 0x3FE5555555555555, double %266)
  %268 = fadd double %267, 0x3FE5555555555555
  %269 = fmul double %268, %265
  %270 = tail call double @llvm.fmuladd.f64(double %64, double -5.000000e-01, double 0x3FF2AAAAAAAAAAAB)
  %271 = fmul double %270, %265
  %272 = fmul double %22, %268
  %273 = fmul double %74, %271
  %274 = fmul double %272, %83
  %275 = fmul double %79, %271
  %276 = tail call double @llvm.fmuladd.f64(double %272, double %86, double %275)
  %277 = fmul double %91, %82
  %278 = fsub double %191, %277
  %279 = extractelement <2 x double> %245, i64 1
  %280 = fadd double %278, %279
  %281 = extractelement <2 x double> %245, i64 0
  %282 = fadd double %281, %280
  %283 = fadd double %269, %282
  %284 = tail call double @llvm.fmuladd.f64(double %46, double %283, double %72)
  %285 = fmul double %284, 4.918000e-02
  %286 = getelementptr inbounds double, ptr %3, i64 %indvars.iv
  store double %285, ptr %286, align 8, !tbaa !5
  %287 = fmul double %26, 4.918000e-02
  %288 = fmul double %287, %46
  %289 = fmul double %288, %96
  %290 = tail call double @llvm.fmuladd.f64(double %287, double %75, double %289)
  %291 = tail call double @llvm.fmuladd.f64(double %288, double %197, double %290)
  %292 = tail call double @llvm.fmuladd.f64(double %288, double %238, double %291)
  %293 = tail call double @llvm.fmuladd.f64(double %288, double %256, double %292)
  %294 = tail call double @llvm.fmuladd.f64(double %288, double %273, double %293)
  %295 = getelementptr inbounds double, ptr %4, i64 %33
  store double %294, ptr %295, align 8, !tbaa !5
  %296 = fmul double %288, %221
  %297 = tail call double @llvm.fmuladd.f64(double %288, double %97, double %296)
  %298 = tail call double @llvm.fmuladd.f64(double %288, double %257, double %297)
  %299 = tail call double @llvm.fmuladd.f64(double %288, double %274, double %298)
  %300 = getelementptr inbounds double, ptr %5, i64 %36
  store double %299, ptr %300, align 8, !tbaa !5
  %301 = fmul double %288, %103
  %302 = tail call double @llvm.fmuladd.f64(double %287, double %80, double %301)
  %303 = tail call double @llvm.fmuladd.f64(double %288, double %200, double %302)
  %304 = tail call double @llvm.fmuladd.f64(double %288, double %239, double %303)
  %305 = tail call double @llvm.fmuladd.f64(double %288, double %264, double %304)
  %306 = tail call double @llvm.fmuladd.f64(double %288, double %276, double %305)
  %307 = fmul double %26, %54
  %308 = fmul double %307, 4.918000e-02
  %309 = tail call double @llvm.fmuladd.f64(double %308, double %283, double %306)
  %310 = tail call double @llvm.fmuladd.f64(double %284, double 4.918000e-02, double %309)
  %311 = getelementptr inbounds double, ptr %4, i64 %24
  store double %310, ptr %311, align 8, !tbaa !5
  %312 = getelementptr inbounds i8, ptr %300, i64 8
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %312, i8 0, i64 16, i1 false)
  br label %313

313:                                              ; preds = %187, %28
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %23, !llvm.loop !9
}

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @pow(double noundef, double noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(none)
declare double @cbrt(double noundef) local_unnamed_addr #2

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

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

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

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #5

attributes #0 = { mustprogress nofree nounwind memory(write, argmem: readwrite) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { 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 #2 = { mustprogress nofree nosync nounwind willreturn memory(none) "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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nounwind willreturn memory(none) }
attributes #7 = { 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 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass