; LLVM IR from VeloxChem/VeloxChem :: src/pdft_func/PairDensityVWN.ll (ZN11pdftvwn_rpa15compute_exc_vxcEiPKdPdS2_)

; 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 @_ZN11pdftvwn_rpa15compute_exc_vxcEiPKdPdS2_(i32 noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3) #0 {
  %5 = alloca i32, align 4
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %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 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
  store i32 %0, ptr %5, align 4, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !9
  store ptr %2, ptr %7, align 8, !tbaa !9
  store ptr %3, ptr %8, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #5
  %62 = call double @pow(double noundef 0x400921FB54442D18, double noundef 0xBFD5555555555555) #5
  %63 = fmul double 0x3FED12ED0AF1A27F, %62
  store double %63, ptr %9, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #5
  store double 0x4042C4C09FE90AEE, ptr %10, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #5
  %64 = load double, ptr %10, align 8, !tbaa !11
  %65 = fdiv double 0x40A6D061CFA140A8, %64
  %66 = fadd double 0x4082322F6E020040, %65
  store double %66, ptr %11, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  store double 0x4055CB142D328BDC, ptr %12, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #5
  %67 = load double, ptr %12, align 8, !tbaa !11
  %68 = fdiv double 0x407DBD0EE79636F1, %67
  %69 = fadd double 0x40412CAB8A2835AE, %68
  store double %69, ptr %13, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  %70 = call double @cbrt(double noundef 2.000000e+00) #6
  %71 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %70, double -2.000000e+00)
  %72 = fdiv double 1.000000e+00, %71
  store double %72, ptr %14, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #5
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %73

73:                                               ; preds = %530, %4
  %74 = load i32, ptr %15, align 4, !tbaa !5
  %75 = load i32, ptr %5, align 4, !tbaa !5
  %76 = icmp slt i32 %74, %75
  br i1 %76, label %78, label %77

77:                                               ; preds = %73
  store i32 2, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  br label %533

78:                                               ; preds = %73
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  %79 = load ptr, ptr %6, align 8, !tbaa !9
  %80 = load i32, ptr %15, align 4, !tbaa !5
  %81 = mul nsw i32 2, %80
  %82 = add nsw i32 %81, 0
  %83 = sext i32 %82 to i64
  %84 = getelementptr inbounds double, ptr %79, i64 %83
  %85 = load double, ptr %84, align 8, !tbaa !11
  store double %85, ptr %17, align 8, !tbaa !11
  %86 = load double, ptr %17, align 8, !tbaa !11
  %87 = fcmp olt double %86, 0x3C9CD2B297D889BC
  br i1 %87, label %88, label %105

88:                                               ; preds = %78
  %89 = load ptr, ptr %7, align 8, !tbaa !9
  %90 = load i32, ptr %15, align 4, !tbaa !5
  %91 = sext i32 %90 to i64
  %92 = getelementptr inbounds double, ptr %89, i64 %91
  store double 0.000000e+00, ptr %92, align 8, !tbaa !11
  %93 = load ptr, ptr %8, align 8, !tbaa !9
  %94 = load i32, ptr %15, align 4, !tbaa !5
  %95 = mul nsw i32 2, %94
  %96 = add nsw i32 %95, 0
  %97 = sext i32 %96 to i64
  %98 = getelementptr inbounds double, ptr %93, i64 %97
  store double 0.000000e+00, ptr %98, align 8, !tbaa !11
  %99 = load ptr, ptr %8, align 8, !tbaa !9
  %100 = load i32, ptr %15, align 4, !tbaa !5
  %101 = mul nsw i32 2, %100
  %102 = add nsw i32 %101, 1
  %103 = sext i32 %102 to i64
  %104 = getelementptr inbounds double, ptr %99, i64 %103
  store double 0.000000e+00, ptr %104, align 8, !tbaa !11
  store i32 4, ptr %16, align 4
  br label %527

105:                                              ; preds = %78
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  %106 = load ptr, ptr %6, align 8, !tbaa !9
  %107 = load i32, ptr %15, align 4, !tbaa !5
  %108 = mul nsw i32 2, %107
  %109 = add nsw i32 %108, 1
  %110 = sext i32 %109 to i64
  %111 = getelementptr inbounds double, ptr %106, i64 %110
  %112 = load double, ptr %111, align 8, !tbaa !11
  store double %112, ptr %18, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  %113 = load double, ptr %9, align 8, !tbaa !11
  %114 = load double, ptr %17, align 8, !tbaa !11
  %115 = call double @cbrt(double noundef %114) #6
  %116 = fdiv double %113, %115
  store double %116, ptr %19, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  %117 = load double, ptr %9, align 8, !tbaa !11
  %118 = fmul double 0xBFD5555555555555, %117
  %119 = load double, ptr %17, align 8, !tbaa !11
  %120 = call double @pow(double noundef %119, double noundef 0x3FF5555555555555) #5
  %121 = fdiv double %118, %120
  store double %121, ptr %20, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #5
  %122 = load double, ptr %19, align 8, !tbaa !11
  %123 = call double @sqrt(double noundef %122) #5
  %124 = load double, ptr %19, align 8, !tbaa !11
  %125 = call double @llvm.fmuladd.f64(double 1.307200e+01, double %123, double %124)
  %126 = fadd double %125, 4.271980e+01
  store double %126, ptr %21, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  %127 = load double, ptr %20, align 8, !tbaa !11
  %128 = load double, ptr %19, align 8, !tbaa !11
  %129 = call double @sqrt(double noundef %128) #5
  %130 = fdiv double 6.536000e+00, %129
  %131 = fadd double 1.000000e+00, %130
  %132 = fmul double %127, %131
  store double %132, ptr %22, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  %133 = load double, ptr %19, align 8, !tbaa !11
  %134 = load double, ptr %21, align 8, !tbaa !11
  %135 = fdiv double %133, %134
  %136 = call double @log(double noundef %135) #5
  store double %136, ptr %23, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  %137 = load double, ptr %22, align 8, !tbaa !11
  %138 = fneg double %137
  %139 = load double, ptr %21, align 8, !tbaa !11
  %140 = fdiv double %138, %139
  %141 = load double, ptr %20, align 8, !tbaa !11
  %142 = load double, ptr %19, align 8, !tbaa !11
  %143 = fdiv double %141, %142
  %144 = fadd double %140, %143
  store double %144, ptr %24, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  %145 = load double, ptr %11, align 8, !tbaa !11
  %146 = load double, ptr %19, align 8, !tbaa !11
  %147 = call double @sqrt(double noundef %146) #5
  %148 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %147, double 1.307200e+01)
  %149 = fdiv double 0x3FA6FD1E429EA74D, %148
  %150 = call double @atan(double noundef %149) #5
  %151 = fmul double %145, %150
  store double %151, ptr %25, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  %152 = load double, ptr %20, align 8, !tbaa !11
  %153 = fmul double 0xBF313866A0C2FF25, %152
  %154 = load double, ptr %11, align 8, !tbaa !11
  %155 = fmul double %153, %154
  %156 = load double, ptr %19, align 8, !tbaa !11
  %157 = call double @sqrt(double noundef %156) #5
  %158 = load double, ptr %19, align 8, !tbaa !11
  %159 = call double @sqrt(double noundef %158) #5
  %160 = call double @llvm.fmuladd.f64(double 0x3FC39576C1A52187, double %159, double 1.000000e+00)
  %161 = call double @pow(double noundef %160, double noundef 2.000000e+00) #5
  %162 = fdiv double 0x3EE8BDF9854DFFFE, %161
  %163 = fadd double 1.000000e+00, %162
  %164 = fmul double %157, %163
  %165 = load double, ptr %19, align 8, !tbaa !11
  %166 = call double @sqrt(double noundef %165) #5
  %167 = call double @llvm.fmuladd.f64(double 0x3FC39576C1A52187, double %166, double 1.000000e+00)
  %168 = call double @pow(double noundef %167, double noundef 2.000000e+00) #5
  %169 = fmul double %164, %168
  %170 = fdiv double %155, %169
  store double %170, ptr %26, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #5
  %171 = load double, ptr %19, align 8, !tbaa !11
  %172 = call double @sqrt(double noundef %171) #5
  %173 = fadd double %172, 4.092860e-01
  %174 = call double @pow(double noundef %173, double noundef 2.000000e+00) #5
  %175 = load double, ptr %21, align 8, !tbaa !11
  %176 = fdiv double %174, %175
  %177 = call double @log(double noundef %176) #5
  %178 = fmul double 0xC015669750608CFF, %177
  %179 = load double, ptr %10, align 8, !tbaa !11
  %180 = fdiv double %178, %179
  store double %180, ptr %27, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #5
  %181 = load double, ptr %22, align 8, !tbaa !11
  %182 = fmul double 0x4015669750608CFF, %181
  %183 = load double, ptr %10, align 8, !tbaa !11
  %184 = load double, ptr %21, align 8, !tbaa !11
  %185 = fmul double %183, %184
  %186 = fdiv double %182, %185
  %187 = load double, ptr %20, align 8, !tbaa !11
  %188 = fmul double 0x4015669750608CFF, %187
  %189 = load double, ptr %10, align 8, !tbaa !11
  %190 = load double, ptr %19, align 8, !tbaa !11
  %191 = call double @sqrt(double noundef %190) #5
  %192 = fmul double %189, %191
  %193 = load double, ptr %19, align 8, !tbaa !11
  %194 = call double @sqrt(double noundef %193) #5
  %195 = fadd double %194, 4.092860e-01
  %196 = fmul double %192, %195
  %197 = fdiv double %188, %196
  %198 = fsub double %186, %197
  store double %198, ptr %28, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #5
  %199 = load double, ptr %23, align 8, !tbaa !11
  %200 = load double, ptr %25, align 8, !tbaa !11
  %201 = fmul double 3.109070e-02, %200
  %202 = call double @llvm.fmuladd.f64(double 3.109070e-02, double %199, double %201)
  %203 = load double, ptr %27, align 8, !tbaa !11
  %204 = call double @llvm.fmuladd.f64(double -3.109070e-02, double %203, double %202)
  store double %204, ptr %29, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  %205 = load double, ptr %24, align 8, !tbaa !11
  %206 = load double, ptr %26, align 8, !tbaa !11
  %207 = fmul double 3.109070e-02, %206
  %208 = call double @llvm.fmuladd.f64(double 3.109070e-02, double %205, double %207)
  %209 = load double, ptr %28, align 8, !tbaa !11
  %210 = call double @llvm.fmuladd.f64(double -3.109070e-02, double %209, double %208)
  store double %210, ptr %30, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #5
  %211 = load double, ptr %19, align 8, !tbaa !11
  %212 = call double @sqrt(double noundef %211) #5
  %213 = load double, ptr %19, align 8, !tbaa !11
  %214 = call double @llvm.fmuladd.f64(double 2.012310e+01, double %212, double %213)
  %215 = fadd double %214, 1.015780e+02
  store double %215, ptr %31, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #5
  %216 = load double, ptr %20, align 8, !tbaa !11
  %217 = load double, ptr %19, align 8, !tbaa !11
  %218 = call double @sqrt(double noundef %217) #5
  %219 = fdiv double 0x40241F837B4A233A, %218
  %220 = fadd double 1.000000e+00, %219
  %221 = fmul double %216, %220
  store double %221, ptr %32, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #5
  %222 = load double, ptr %19, align 8, !tbaa !11
  %223 = load double, ptr %31, align 8, !tbaa !11
  %224 = fdiv double %222, %223
  %225 = call double @log(double noundef %224) #5
  store double %225, ptr %33, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #5
  %226 = load double, ptr %32, align 8, !tbaa !11
  %227 = fneg double %226
  %228 = load double, ptr %31, align 8, !tbaa !11
  %229 = fdiv double %227, %228
  %230 = load double, ptr %20, align 8, !tbaa !11
  %231 = load double, ptr %19, align 8, !tbaa !11
  %232 = fdiv double %230, %231
  %233 = fadd double %229, %232
  store double %233, ptr %34, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #5
  %234 = load double, ptr %13, align 8, !tbaa !11
  %235 = load double, ptr %19, align 8, !tbaa !11
  %236 = call double @sqrt(double noundef %235) #5
  %237 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %236, double 2.012310e+01)
  %238 = fdiv double 0x3FF2BF390FCF6FB6, %237
  %239 = call double @atan(double noundef %238) #5
  %240 = fmul double %234, %239
  store double %240, ptr %35, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #5
  %241 = load double, ptr %20, align 8, !tbaa !11
  %242 = fmul double 0xBF67B413D0054732, %241
  %243 = load double, ptr %13, align 8, !tbaa !11
  %244 = fmul double %242, %243
  %245 = load double, ptr %19, align 8, !tbaa !11
  %246 = call double @sqrt(double noundef %245) #5
  %247 = load double, ptr %19, align 8, !tbaa !11
  %248 = call double @sqrt(double noundef %247) #5
  %249 = call double @llvm.fmuladd.f64(double 0x3FB9718264C225FC, double %248, double 1.000000e+00)
  %250 = call double @pow(double noundef %249, double noundef 2.000000e+00) #5
  %251 = fdiv double 0x3F6BC5E07F7BE5FF, %250
  %252 = fadd double 1.000000e+00, %251
  %253 = fmul double %246, %252
  %254 = load double, ptr %19, align 8, !tbaa !11
  %255 = call double @sqrt(double noundef %254) #5
  %256 = call double @llvm.fmuladd.f64(double 0x3FB9718264C225FC, double %255, double 1.000000e+00)
  %257 = call double @pow(double noundef %256, double noundef 2.000000e+00) #5
  %258 = fmul double %253, %257
  %259 = fdiv double %244, %258
  store double %259, ptr %36, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #5
  %260 = load double, ptr %19, align 8, !tbaa !11
  %261 = call double @sqrt(double noundef %260) #5
  %262 = fadd double %261, 7.432940e-01
  %263 = call double @pow(double noundef %262, double noundef 2.000000e+00) #5
  %264 = load double, ptr %31, align 8, !tbaa !11
  %265 = fdiv double %263, %264
  %266 = call double @log(double noundef %265) #5
  %267 = fmul double 0xC02DEA2DA50AD926, %266
  %268 = load double, ptr %12, align 8, !tbaa !11
  %269 = fdiv double %267, %268
  store double %269, ptr %37, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #5
  %270 = load double, ptr %32, align 8, !tbaa !11
  %271 = fmul double 0x402DEA2DA50AD926, %270
  %272 = load double, ptr %12, align 8, !tbaa !11
  %273 = load double, ptr %31, align 8, !tbaa !11
  %274 = fmul double %272, %273
  %275 = fdiv double %271, %274
  %276 = load double, ptr %20, align 8, !tbaa !11
  %277 = fmul double 0x402DEA2DA50AD926, %276
  %278 = load double, ptr %12, align 8, !tbaa !11
  %279 = load double, ptr %19, align 8, !tbaa !11
  %280 = call double @sqrt(double noundef %279) #5
  %281 = fmul double %278, %280
  %282 = load double, ptr %19, align 8, !tbaa !11
  %283 = call double @sqrt(double noundef %282) #5
  %284 = fadd double %283, 7.432940e-01
  %285 = fmul double %281, %284
  %286 = fdiv double %277, %285
  %287 = fsub double %275, %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 %33, align 8, !tbaa !11
  %289 = load double, ptr %35, align 8, !tbaa !11
  %290 = fmul double 0x3F8FD63D8ED6C7F8, %289
  %291 = call double @llvm.fmuladd.f64(double 0x3F8FD63D8ED6C7F8, double %288, double %290)
  %292 = load double, ptr %37, align 8, !tbaa !11
  %293 = call double @llvm.fmuladd.f64(double 0xBF8FD63D8ED6C7F8, double %292, double %291)
  store double %293, ptr %39, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #5
  %294 = load double, ptr %34, align 8, !tbaa !11
  %295 = load double, ptr %36, align 8, !tbaa !11
  %296 = fmul double 0x3F8FD63D8ED6C7F8, %295
  %297 = call double @llvm.fmuladd.f64(double 0x3F8FD63D8ED6C7F8, double %294, double %296)
  %298 = load double, ptr %38, align 8, !tbaa !11
  %299 = call double @llvm.fmuladd.f64(double 0xBF8FD63D8ED6C7F8, double %298, double %297)
  store double %299, ptr %40, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #5
  store double 0.000000e+00, ptr %41, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #5
  store double 0.000000e+00, ptr %42, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #5
  store double 0.000000e+00, ptr %43, align 8, !tbaa !11
  %300 = load double, ptr %18, align 8, !tbaa !11
  %301 = fcmp olt double %300, 0xBC9CD2B297D889BC
  br i1 %301, label %302, label %358

302:                                              ; preds = %105
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #5
  %303 = load double, ptr %18, align 8, !tbaa !11
  %304 = fneg double %303
  %305 = call double @sqrt(double noundef %304) #5
  %306 = fmul double 0x3FF6A09E667F3BCD, %305
  %307 = load double, ptr %17, align 8, !tbaa !11
  %308 = fdiv double %306, %307
  store double %308, ptr %44, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #5
  %309 = load double, ptr %18, align 8, !tbaa !11
  %310 = fneg double %309
  %311 = call double @sqrt(double noundef %310) #5
  %312 = fmul double 0x3FE6A09E667F3BCD, %311
  %313 = load double, ptr %17, align 8, !tbaa !11
  %314 = load double, ptr %18, align 8, !tbaa !11
  %315 = fmul double %313, %314
  %316 = fdiv double %312, %315
  store double %316, ptr %45, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #5
  %317 = load double, ptr %18, align 8, !tbaa !11
  %318 = fneg double %317
  %319 = call double @sqrt(double noundef %318) #5
  %320 = fmul double 0xBFF6A09E667F3BCD, %319
  %321 = load double, ptr %17, align 8, !tbaa !11
  %322 = call double @pow(double noundef %321, double noundef 2.000000e+00) #5
  %323 = fdiv double %320, %322
  store double %323, ptr %46, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #5
  store double 0.000000e+00, ptr %47, align 8, !tbaa !11
  %324 = load double, ptr %44, align 8, !tbaa !11
  %325 = fsub double 1.000000e+00, %324
  %326 = fcmp ogt double %325, 0x3C9CD2B297D889BC
  br i1 %326, label %327, label %343

327:                                              ; preds = %302
  %328 = load double, ptr %44, align 8, !tbaa !11
  %329 = fsub double 1.000000e+00, %328
  %330 = call double @pow(double noundef %329, double noundef 0x3FF5555555555555) #5
  %331 = load double, ptr %44, align 8, !tbaa !11
  %332 = fadd double %331, 1.000000e+00
  %333 = call double @pow(double noundef %332, double noundef 0x3FF5555555555555) #5
  %334 = fadd double %330, %333
  store double %334, ptr %42, align 8, !tbaa !11
  %335 = load double, ptr %44, align 8, !tbaa !11
  %336 = fsub double 1.000000e+00, %335
  %337 = call double @cbrt(double noundef %336) #6
  %338 = load double, ptr %44, align 8, !tbaa !11
  %339 = fadd double %338, 1.000000e+00
  %340 = call double @cbrt(double noundef %339) #6
  %341 = fmul double 0x3FF5555555555555, %340
  %342 = call double @llvm.fmuladd.f64(double 0xBFF5555555555555, double %337, double %341)
  store double %342, ptr %47, align 8, !tbaa !11
  br label %351

343:                                              ; preds = %302
  %344 = load double, ptr %44, align 8, !tbaa !11
  %345 = fadd double %344, 1.000000e+00
  %346 = call double @pow(double noundef %345, double noundef 0x3FF5555555555555) #5
  store double %346, ptr %42, align 8, !tbaa !11
  %347 = load double, ptr %44, align 8, !tbaa !11
  %348 = fadd double %347, 1.000000e+00
  %349 = call double @cbrt(double noundef %348) #6
  %350 = fmul double 0x3FF5555555555555, %349
  store double %350, ptr %47, align 8, !tbaa !11
  br label %351

351:                                              ; preds = %343, %327
  %352 = load double, ptr %47, align 8, !tbaa !11
  %353 = load double, ptr %45, align 8, !tbaa !11
  %354 = fmul double %352, %353
  store double %354, ptr %41, align 8, !tbaa !11
  %355 = load double, ptr %47, align 8, !tbaa !11
  %356 = load double, ptr %46, align 8, !tbaa !11
  %357 = fmul double %355, %356
  store double %357, ptr %43, align 8, !tbaa !11
  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
  br label %458

358:                                              ; preds = %105
  %359 = load double, ptr %18, align 8, !tbaa !11
  %360 = fcmp olt double %359, 0x3C9CD2B297D889BC
  br i1 %360, label %361, label %389

361:                                              ; preds = %358
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #5
  %362 = load double, ptr %18, align 8, !tbaa !11
  %363 = fmul double -2.000000e+00, %362
  %364 = load double, ptr %17, align 8, !tbaa !11
  %365 = call double @pow(double noundef %364, double noundef 2.000000e+00) #5
  %366 = fdiv double %363, %365
  store double %366, ptr %48, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #5
  %367 = load double, ptr %17, align 8, !tbaa !11
  %368 = call double @pow(double noundef %367, double noundef 2.000000e+00) #5
  %369 = fdiv double -2.000000e+00, %368
  store double %369, ptr %49, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #5
  %370 = load double, ptr %18, align 8, !tbaa !11
  %371 = fmul double 4.000000e+00, %370
  %372 = load double, ptr %17, align 8, !tbaa !11
  %373 = call double @pow(double noundef %372, double noundef 3.000000e+00) #5
  %374 = fdiv double %371, %373
  store double %374, ptr %50, align 8, !tbaa !11
  %375 = load double, ptr %48, align 8, !tbaa !11
  %376 = call double @pow(double noundef %375, double noundef 2.000000e+00) #5
  %377 = load double, ptr %48, align 8, !tbaa !11
  %378 = fmul double 0x3FDC71C71C71C71C, %377
  %379 = call double @llvm.fmuladd.f64(double 0x3FA511E8D2B3183B, double %376, double %378)
  %380 = fadd double %379, 2.000000e+00
  store double %380, ptr %42, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #5
  %381 = load double, ptr %48, align 8, !tbaa !11
  %382 = call double @llvm.fmuladd.f64(double 0x3FB511E8D2B3183B, double %381, double 0x3FDC71C71C71C71C)
  store double %382, ptr %51, align 8, !tbaa !11
  %383 = load double, ptr %51, align 8, !tbaa !11
  %384 = load double, ptr %49, align 8, !tbaa !11
  %385 = fmul double %383, %384
  store double %385, ptr %41, align 8, !tbaa !11
  %386 = load double, ptr %51, align 8, !tbaa !11
  %387 = load double, ptr %50, align 8, !tbaa !11
  %388 = fmul double %386, %387
  store double %388, ptr %43, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #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
  br label %457

389:                                              ; preds = %358
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #5
  %390 = load double, ptr %18, align 8, !tbaa !11
  %391 = call double @sqrt(double noundef %390) #5
  %392 = fmul double 0x3FF6A09E667F3BCD, %391
  %393 = load double, ptr %17, align 8, !tbaa !11
  %394 = fdiv double %392, %393
  store double %394, ptr %52, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #5
  %395 = load double, ptr %17, align 8, !tbaa !11
  %396 = load double, ptr %18, align 8, !tbaa !11
  %397 = call double @sqrt(double noundef %396) #5
  %398 = fmul double %395, %397
  %399 = fdiv double 0x3FE6A09E667F3BCD, %398
  store double %399, ptr %53, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #5
  %400 = load double, ptr %18, align 8, !tbaa !11
  %401 = call double @sqrt(double noundef %400) #5
  %402 = fmul double 0xBFF6A09E667F3BCD, %401
  %403 = load double, ptr %17, align 8, !tbaa !11
  %404 = call double @pow(double noundef %403, double noundef 2.000000e+00) #5
  %405 = fdiv double %402, %404
  store double %405, ptr %54, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #5
  %406 = load double, ptr %52, align 8, !tbaa !11
  %407 = call double @atan(double noundef %406) #5
  %408 = fmul double 0x3FF5555555555555, %407
  store double %408, ptr %55, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #5
  %409 = load double, ptr %52, align 8, !tbaa !11
  %410 = call double @pow(double noundef %409, double noundef 2.000000e+00) #5
  %411 = fadd double %410, 1.000000e+00
  %412 = fdiv double 0x3FF5555555555555, %411
  store double %412, ptr %56, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #5
  %413 = load double, ptr %53, align 8, !tbaa !11
  %414 = load double, ptr %56, align 8, !tbaa !11
  %415 = fmul double %413, %414
  store double %415, ptr %57, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #5
  %416 = load double, ptr %54, align 8, !tbaa !11
  %417 = load double, ptr %56, align 8, !tbaa !11
  %418 = fmul double %416, %417
  store double %418, ptr %58, align 8, !tbaa !11
  %419 = load double, ptr %52, align 8, !tbaa !11
  %420 = call double @pow(double noundef %419, double noundef 2.000000e+00) #5
  %421 = fadd double %420, 1.000000e+00
  %422 = call double @pow(double noundef %421, double noundef 0x3FE5555555555555) #5
  %423 = fmul double 2.000000e+00, %422
  %424 = load double, ptr %55, align 8, !tbaa !11
  %425 = call double @cos(double noundef %424) #5
  %426 = fmul double %423, %425
  store double %426, ptr %42, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #5
  %427 = load double, ptr %52, align 8, !tbaa !11
  %428 = fmul double 0x4005555555555555, %427
  %429 = load double, ptr %55, align 8, !tbaa !11
  %430 = call double @cos(double noundef %429) #5
  %431 = fmul double %428, %430
  %432 = load double, ptr %52, align 8, !tbaa !11
  %433 = call double @pow(double noundef %432, double noundef 2.000000e+00) #5
  %434 = fadd double %433, 1.000000e+00
  %435 = call double @cbrt(double noundef %434) #6
  %436 = fdiv double %431, %435
  store double %436, ptr %59, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #5
  %437 = load double, ptr %52, align 8, !tbaa !11
  %438 = call double @pow(double noundef %437, double noundef 2.000000e+00) #5
  %439 = fadd double %438, 1.000000e+00
  %440 = call double @pow(double noundef %439, double noundef 0x3FE5555555555555) #5
  %441 = fmul double -2.000000e+00, %440
  %442 = load double, ptr %55, align 8, !tbaa !11
  %443 = call double @sin(double noundef %442) #5
  %444 = fmul double %441, %443
  store double %444, ptr %60, align 8, !tbaa !11
  %445 = load double, ptr %53, align 8, !tbaa !11
  %446 = load double, ptr %59, align 8, !tbaa !11
  %447 = load double, ptr %60, align 8, !tbaa !11
  %448 = load double, ptr %57, align 8, !tbaa !11
  %449 = fmul double %447, %448
  %450 = call double @llvm.fmuladd.f64(double %445, double %446, double %449)
  store double %450, ptr %41, align 8, !tbaa !11
  %451 = load double, ptr %54, align 8, !tbaa !11
  %452 = load double, ptr %59, align 8, !tbaa !11
  %453 = load double, ptr %60, align 8, !tbaa !11
  %454 = load double, ptr %58, align 8, !tbaa !11
  %455 = fmul double %453, %454
  %456 = call double @llvm.fmuladd.f64(double %451, double %452, double %455)
  store double %456, ptr %43, align 8, !tbaa !11
  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
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  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
  br label %457

457:                                              ; preds = %389, %361
  br label %458

458:                                              ; preds = %457, %351
  %459 = load double, ptr %29, align 8, !tbaa !11
  %460 = load double, ptr %14, align 8, !tbaa !11
  %461 = load double, ptr %29, align 8, !tbaa !11
  %462 = fneg double %461
  %463 = load double, ptr %39, align 8, !tbaa !11
  %464 = fadd double %462, %463
  %465 = fmul double %460, %464
  %466 = load double, ptr %42, align 8, !tbaa !11
  %467 = fsub double %466, 2.000000e+00
  %468 = call double @llvm.fmuladd.f64(double %465, double %467, double %459)
  %469 = load ptr, ptr %7, align 8, !tbaa !9
  %470 = load i32, ptr %15, align 4, !tbaa !5
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds double, ptr %469, i64 %471
  store double %468, ptr %472, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #5
  %473 = load double, ptr %17, align 8, !tbaa !11
  %474 = load double, ptr %14, align 8, !tbaa !11
  %475 = fmul double %473, %474
  %476 = load double, ptr %29, align 8, !tbaa !11
  %477 = fneg double %476
  %478 = load double, ptr %39, align 8, !tbaa !11
  %479 = fadd double %477, %478
  %480 = fmul double %475, %479
  store double %480, ptr %61, align 8, !tbaa !11
  %481 = load double, ptr %61, align 8, !tbaa !11
  %482 = load double, ptr %41, align 8, !tbaa !11
  %483 = fmul double %481, %482
  %484 = load ptr, ptr %8, align 8, !tbaa !9
  %485 = load i32, ptr %15, align 4, !tbaa !5
  %486 = mul nsw i32 2, %485
  %487 = add nsw i32 %486, 1
  %488 = sext i32 %487 to i64
  %489 = getelementptr inbounds double, ptr %484, i64 %488
  store double %483, ptr %489, align 8, !tbaa !11
  %490 = load double, ptr %61, align 8, !tbaa !11
  %491 = load double, ptr %43, align 8, !tbaa !11
  %492 = load double, ptr %17, align 8, !tbaa !11
  %493 = load double, ptr %30, align 8, !tbaa !11
  %494 = fmul double %492, %493
  %495 = load double, ptr %14, align 8, !tbaa !11
  %496 = fneg double %495
  %497 = load double, ptr %42, align 8, !tbaa !11
  %498 = fsub double %497, 2.000000e+00
  %499 = call double @llvm.fmuladd.f64(double %496, double %498, double 1.000000e+00)
  %500 = fmul double %494, %499
  %501 = call double @llvm.fmuladd.f64(double %490, double %491, double %500)
  %502 = load double, ptr %17, align 8, !tbaa !11
  %503 = load double, ptr %40, align 8, !tbaa !11
  %504 = fmul double %502, %503
  %505 = load double, ptr %14, align 8, !tbaa !11
  %506 = fmul double %504, %505
  %507 = load double, ptr %42, align 8, !tbaa !11
  %508 = fsub double %507, 2.000000e+00
  %509 = call double @llvm.fmuladd.f64(double %506, double %508, double %501)
  %510 = load double, ptr %29, align 8, !tbaa !11
  %511 = fadd double %509, %510
  %512 = load double, ptr %14, align 8, !tbaa !11
  %513 = load double, ptr %29, align 8, !tbaa !11
  %514 = fneg double %513
  %515 = load double, ptr %39, align 8, !tbaa !11
  %516 = fadd double %514, %515
  %517 = fmul double %512, %516
  %518 = load double, ptr %42, align 8, !tbaa !11
  %519 = fsub double %518, 2.000000e+00
  %520 = call double @llvm.fmuladd.f64(double %517, double %519, double %511)
  %521 = load ptr, ptr %8, align 8, !tbaa !9
  %522 = load i32, ptr %15, align 4, !tbaa !5
  %523 = mul nsw i32 2, %522
  %524 = add nsw i32 %523, 0
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds double, ptr %521, i64 %525
  store double %520, ptr %526, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #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
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  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
  store i32 0, ptr %16, align 4
  br label %527

527:                                              ; preds = %458, %88
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  %528 = load i32, ptr %16, align 4
  switch i32 %528, label %534 [
    i32 0, label %529
    i32 4, label %530
  ]

529:                                              ; preds = %527
  br label %530

530:                                              ; preds = %529, %527
  %531 = load i32, ptr %15, align 4, !tbaa !5
  %532 = add nsw i32 %531, 1
  store i32 %532, ptr %15, align 4, !tbaa !5
  br label %73, !llvm.loop !13

533:                                              ; preds = %77
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  ret void

534:                                              ; preds = %527
  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: 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: nounwind
declare double @log(double noundef) #2

; Function Attrs: nounwind
declare double @atan(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 @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 @_ZN11pdftvwn_rpa15compute_exc_vxcEiPKdPdS2_(i32 noundef %0, ptr nocapture noundef readonly %1, ptr nocapture noundef writeonly %2, ptr nocapture noundef writeonly %3) local_unnamed_addr #0 {
  %5 = tail call double @cbrt(double noundef 2.000000e+00) #5
  %6 = tail call double @llvm.fmuladd.f64(double %5, double 2.000000e+00, double -2.000000e+00)
  %7 = fdiv double 1.000000e+00, %6
  %8 = icmp sgt i32 %0, 0
  br i1 %8, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %4
  %9 = fneg double %7
  %wide.trip.count = zext nneg i32 %0 to i64
  br label %10

._crit_edge:                                      ; preds = %245, %4
  ret void

10:                                               ; preds = %.lr.ph, %245
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %245 ]
  %11 = shl nuw nsw i64 %indvars.iv, 1
  %12 = getelementptr inbounds double, ptr %1, i64 %11
  %13 = load double, ptr %12, align 8, !tbaa !5
  %14 = fcmp olt double %13, 0x3C9CD2B297D889BC
  br i1 %14, label %15, label %19

15:                                               ; preds = %10
  %16 = getelementptr inbounds double, ptr %2, i64 %indvars.iv
  store double 0.000000e+00, ptr %16, align 8, !tbaa !5
  %17 = getelementptr inbounds double, ptr %3, i64 %11
  store double 0.000000e+00, ptr %17, align 8, !tbaa !5
  %18 = or disjoint i64 %11, 1
  br label %245

19:                                               ; preds = %10
  %20 = or disjoint i64 %11, 1
  %21 = getelementptr inbounds double, ptr %1, i64 %20
  %22 = load double, ptr %21, align 8, !tbaa !5
  %23 = tail call double @cbrt(double noundef %13) #5
  %24 = fdiv double 0x3FE3D9E945CF0E15, %23
  %25 = tail call double @pow(double noundef %13, double noundef 0x3FF5555555555555) #6
  %26 = fdiv double 0xBFCA77E1B269681C, %25
  %27 = tail call double @sqrt(double noundef %24) #6
  %28 = tail call double @llvm.fmuladd.f64(double %27, double 1.307200e+01, double %24)
  %29 = fadd double %28, 4.271980e+01
  %30 = tail call double @sqrt(double noundef %24) #6
  %31 = fdiv double 6.536000e+00, %30
  %32 = fadd double %31, 1.000000e+00
  %33 = fmul double %26, %32
  %34 = fdiv double %24, %29
  %35 = tail call double @log(double noundef %34) #6
  %36 = fdiv double %26, %24
  %37 = fdiv double %33, %29
  %38 = fsub double %36, %37
  %39 = tail call double @sqrt(double noundef %24) #6
  %40 = tail call double @llvm.fmuladd.f64(double %39, double 2.000000e+00, double 1.307200e+01)
  %41 = fdiv double 0x3FA6FD1E429EA74D, %40
  %42 = tail call double @atan(double noundef %41) #6
  %43 = fmul double %42, 0x4084A08B0D1E041D
  %44 = fmul double %26, 0xBF313866A0C2FF25
  %45 = fmul double %44, 0x4084A08B0D1E041D
  %46 = tail call double @sqrt(double noundef %24) #6
  %47 = tail call double @sqrt(double noundef %24) #6
  %48 = tail call double @llvm.fmuladd.f64(double %47, double 0x3FC39576C1A52187, double 1.000000e+00)
  %square = fmul double %48, %48
  %49 = fdiv double 0x3EE8BDF9854DFFFE, %square
  %50 = fadd double %49, 1.000000e+00
  %51 = fmul double %46, %50
  %52 = tail call double @sqrt(double noundef %24) #6
  %53 = tail call double @llvm.fmuladd.f64(double %52, double 0x3FC39576C1A52187, double 1.000000e+00)
  %square184 = fmul double %53, %53
  %54 = fmul double %square184, %51
  %55 = fdiv double %45, %54
  %56 = tail call double @sqrt(double noundef %24) #6
  %57 = fadd double %56, 4.092860e-01
  %square185 = fmul double %57, %57
  %58 = fdiv double %square185, %29
  %59 = tail call double @log(double noundef %58) #6
  %60 = fmul double %59, 0xC015669750608CFF
  %61 = fdiv double %60, 0x4042C4C09FE90AEE
  %62 = fmul double %33, 0x4015669750608CFF
  %63 = fmul double %29, 0x4042C4C09FE90AEE
  %64 = fdiv double %62, %63
  %65 = fmul double %26, 0x4015669750608CFF
  %66 = tail call double @sqrt(double noundef %24) #6
  %67 = fmul double %66, 0x4042C4C09FE90AEE
  %68 = tail call double @sqrt(double noundef %24) #6
  %69 = fadd double %68, 4.092860e-01
  %70 = fmul double %67, %69
  %71 = fdiv double %65, %70
  %72 = fsub double %64, %71
  %73 = fmul double %43, 3.109070e-02
  %74 = tail call double @llvm.fmuladd.f64(double %35, double 3.109070e-02, double %73)
  %75 = tail call double @llvm.fmuladd.f64(double %61, double -3.109070e-02, double %74)
  %76 = fmul double %55, 3.109070e-02
  %77 = tail call double @llvm.fmuladd.f64(double %38, double 3.109070e-02, double %76)
  %78 = tail call double @llvm.fmuladd.f64(double %72, double -3.109070e-02, double %77)
  %79 = tail call double @sqrt(double noundef %24) #6
  %80 = tail call double @llvm.fmuladd.f64(double %79, double 2.012310e+01, double %24)
  %81 = fadd double %80, 1.015780e+02
  %82 = tail call double @sqrt(double noundef %24) #6
  %83 = fdiv double 0x40241F837B4A233A, %82
  %84 = fadd double %83, 1.000000e+00
  %85 = fmul double %26, %84
  %86 = fdiv double %24, %81
  %87 = tail call double @log(double noundef %86) #6
  %88 = fdiv double %85, %81
  %89 = fsub double %36, %88
  %90 = tail call double @sqrt(double noundef %24) #6
  %91 = tail call double @llvm.fmuladd.f64(double %90, double 2.000000e+00, double 2.012310e+01)
  %92 = fdiv double 0x3FF2BF390FCF6FB6, %91
  %93 = tail call double @atan(double noundef %92) #6
  %94 = fmul double %93, 0x4043E754CD7FF740
  %95 = fmul double %26, 0xBF67B413D0054732
  %96 = fmul double %95, 0x4043E754CD7FF740
  %97 = tail call double @sqrt(double noundef %24) #6
  %98 = tail call double @sqrt(double noundef %24) #6
  %99 = tail call double @llvm.fmuladd.f64(double %98, double 0x3FB9718264C225FC, double 1.000000e+00)
  %square186 = fmul double %99, %99
  %100 = fdiv double 0x3F6BC5E07F7BE5FF, %square186
  %101 = fadd double %100, 1.000000e+00
  %102 = fmul double %97, %101
  %103 = tail call double @sqrt(double noundef %24) #6
  %104 = tail call double @llvm.fmuladd.f64(double %103, double 0x3FB9718264C225FC, double 1.000000e+00)
  %square187 = fmul double %104, %104
  %105 = fmul double %square187, %102
  %106 = fdiv double %96, %105
  %107 = tail call double @sqrt(double noundef %24) #6
  %108 = fadd double %107, 7.432940e-01
  %square188 = fmul double %108, %108
  %109 = fdiv double %square188, %81
  %110 = tail call double @log(double noundef %109) #6
  %111 = fmul double %110, 0xC02DEA2DA50AD926
  %112 = fdiv double %111, 0x4055CB142D328BDC
  %113 = fmul double %85, 0x402DEA2DA50AD926
  %114 = fmul double %81, 0x4055CB142D328BDC
  %115 = fdiv double %113, %114
  %116 = fmul double %26, 0x402DEA2DA50AD926
  %117 = tail call double @sqrt(double noundef %24) #6
  %118 = fmul double %117, 0x4055CB142D328BDC
  %119 = tail call double @sqrt(double noundef %24) #6
  %120 = fadd double %119, 7.432940e-01
  %121 = fmul double %118, %120
  %122 = fdiv double %116, %121
  %123 = fsub double %115, %122
  %124 = fmul double %94, 0x3F8FD63D8ED6C7F8
  %125 = tail call double @llvm.fmuladd.f64(double %87, double 0x3F8FD63D8ED6C7F8, double %124)
  %126 = tail call double @llvm.fmuladd.f64(double %112, double 0xBF8FD63D8ED6C7F8, double %125)
  %127 = fmul double %106, 0x3F8FD63D8ED6C7F8
  %128 = tail call double @llvm.fmuladd.f64(double %89, double 0x3F8FD63D8ED6C7F8, double %127)
  %129 = tail call double @llvm.fmuladd.f64(double %123, double 0xBF8FD63D8ED6C7F8, double %128)
  %130 = fcmp olt double %22, 0xBC9CD2B297D889BC
  br i1 %130, label %131, label %166

131:                                              ; preds = %19
  %132 = fneg double %22
  %133 = tail call double @sqrt(double noundef %132) #6
  %134 = fmul double %133, 0x3FF6A09E667F3BCD
  %135 = fdiv double %134, %13
  %136 = tail call double @sqrt(double noundef %132) #6
  %137 = insertelement <2 x double> poison, double %13, i64 0
  %138 = shufflevector <2 x double> %137, <2 x double> poison, <2 x i32> zeroinitializer
  %139 = insertelement <2 x double> %137, double %22, i64 1
  %140 = fmul <2 x double> %138, %139
  %141 = tail call double @sqrt(double noundef %132) #6
  %142 = insertelement <2 x double> poison, double %141, i64 0
  %143 = insertelement <2 x double> %142, double %136, i64 1
  %144 = fmul <2 x double> %143, <double 0xBFF6A09E667F3BCD, double 0x3FE6A09E667F3BCD>
  %145 = fdiv <2 x double> %144, %140
  %146 = fsub double 1.000000e+00, %135
  %147 = fcmp ogt double %146, 0x3C9CD2B297D889BC
  br i1 %147, label %148, label %157

148:                                              ; preds = %131
  %149 = tail call double @pow(double noundef %146, double noundef 0x3FF5555555555555) #6
  %150 = fadd double %135, 1.000000e+00
  %151 = tail call double @pow(double noundef %150, double noundef 0x3FF5555555555555) #6
  %152 = fadd double %149, %151
  %153 = tail call double @cbrt(double noundef %146) #5
  %154 = tail call double @cbrt(double noundef %150) #5
  %155 = fmul double %154, 0x3FF5555555555555
  %156 = tail call double @llvm.fmuladd.f64(double %153, double 0xBFF5555555555555, double %155)
  br label %162

157:                                              ; preds = %131
  %158 = fadd double %135, 1.000000e+00
  %159 = tail call double @pow(double noundef %158, double noundef 0x3FF5555555555555) #6
  %160 = tail call double @cbrt(double noundef %158) #5
  %161 = fmul double %160, 0x3FF5555555555555
  br label %162

162:                                              ; preds = %157, %148
  %.0179 = phi double [ %156, %148 ], [ %161, %157 ]
  %.0177 = phi double [ %152, %148 ], [ %159, %157 ]
  %163 = insertelement <2 x double> poison, double %.0179, i64 0
  %164 = shufflevector <2 x double> %163, <2 x double> poison, <2 x i32> zeroinitializer
  %165 = fmul <2 x double> %145, %164
  br label %223

166:                                              ; preds = %19
  %167 = fcmp olt double %22, 0x3C9CD2B297D889BC
  br i1 %167, label %168, label %184

168:                                              ; preds = %166
  %169 = fmul double %22, -2.000000e+00
  %square194 = fmul double %13, %13
  %170 = fdiv double %169, %square194
  %171 = fmul double %22, 4.000000e+00
  %172 = tail call double @pow(double noundef %13, double noundef 3.000000e+00) #6
  %173 = insertelement <2 x double> <double poison, double -2.000000e+00>, double %171, i64 0
  %174 = insertelement <2 x double> poison, double %172, i64 0
  %175 = insertelement <2 x double> %174, double %square194, i64 1
  %176 = fdiv <2 x double> %173, %175
  %square196 = fmul double %170, %170
  %177 = fmul double %170, 0x3FDC71C71C71C71C
  %178 = tail call double @llvm.fmuladd.f64(double %square196, double 0x3FA511E8D2B3183B, double %177)
  %179 = fadd double %178, 2.000000e+00
  %180 = tail call double @llvm.fmuladd.f64(double %170, double 0x3FB511E8D2B3183B, double 0x3FDC71C71C71C71C)
  %181 = insertelement <2 x double> poison, double %180, i64 0
  %182 = shufflevector <2 x double> %181, <2 x double> poison, <2 x i32> zeroinitializer
  %183 = fmul <2 x double> %182, %176
  br label %223

184:                                              ; preds = %166
  %185 = tail call double @sqrt(double noundef %22) #6
  %186 = fmul double %185, 0x3FF6A09E667F3BCD
  %187 = fdiv double %186, %13
  %188 = tail call double @sqrt(double noundef %22) #6
  %189 = tail call double @sqrt(double noundef %22) #6
  %190 = fmul double %189, 0xBFF6A09E667F3BCD
  %191 = tail call double @atan(double noundef %187) #6
  %192 = fmul double %191, 0x3FF5555555555555
  %square190 = fmul double %187, %187
  %193 = fadd double %square190, 1.000000e+00
  %194 = fdiv double 0x3FF5555555555555, %193
  %195 = tail call double @pow(double noundef %193, double noundef 0x3FE5555555555555) #6
  %196 = fmul double %195, 2.000000e+00
  %197 = tail call double @cos(double noundef %192) #6
  %198 = fmul double %196, %197
  %199 = fmul double %187, 0x4005555555555555
  %200 = tail call double @cos(double noundef %192) #6
  %201 = fmul double %199, %200
  %202 = tail call double @cbrt(double noundef %193) #5
  %203 = fdiv double %201, %202
  %204 = tail call double @pow(double noundef %193, double noundef 0x3FE5555555555555) #6
  %205 = fmul double %204, -2.000000e+00
  %206 = tail call double @sin(double noundef %192) #6
  %207 = fmul double %205, %206
  %208 = insertelement <2 x double> poison, double %13, i64 0
  %209 = shufflevector <2 x double> %208, <2 x double> poison, <2 x i32> zeroinitializer
  %210 = insertelement <2 x double> %209, double %188, i64 1
  %211 = fmul <2 x double> %209, %210
  %212 = insertelement <2 x double> <double poison, double 0x3FE6A09E667F3BCD>, double %190, i64 0
  %213 = fdiv <2 x double> %212, %211
  %214 = insertelement <2 x double> %213, double %194, i64 0
  %215 = insertelement <2 x double> %213, double %194, i64 1
  %216 = fmul <2 x double> %214, %215
  %217 = insertelement <2 x double> poison, double %207, i64 0
  %218 = shufflevector <2 x double> %217, <2 x double> poison, <2 x i32> zeroinitializer
  %219 = fmul <2 x double> %216, %218
  %220 = insertelement <2 x double> poison, double %203, i64 0
  %221 = shufflevector <2 x double> %220, <2 x double> poison, <2 x i32> zeroinitializer
  %222 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %213, <2 x double> %221, <2 x double> %219)
  br label %223

223:                                              ; preds = %168, %184, %162
  %.1 = phi double [ %.0177, %162 ], [ %179, %168 ], [ %198, %184 ]
  %224 = phi <2 x double> [ %165, %162 ], [ %183, %168 ], [ %222, %184 ]
  %225 = fsub double %126, %75
  %226 = fmul double %7, %225
  %227 = fadd double %.1, -2.000000e+00
  %228 = tail call double @llvm.fmuladd.f64(double %226, double %227, double %75)
  %229 = getelementptr inbounds double, ptr %2, i64 %indvars.iv
  store double %228, ptr %229, align 8, !tbaa !5
  %230 = fmul double %7, %13
  %231 = fmul double %230, %225
  %232 = extractelement <2 x double> %224, i64 1
  %233 = fmul double %231, %232
  %234 = getelementptr inbounds double, ptr %3, i64 %20
  store double %233, ptr %234, align 8, !tbaa !5
  %235 = fmul double %13, %78
  %236 = tail call double @llvm.fmuladd.f64(double %9, double %227, double 1.000000e+00)
  %237 = fmul double %235, %236
  %238 = extractelement <2 x double> %224, i64 0
  %239 = tail call double @llvm.fmuladd.f64(double %231, double %238, double %237)
  %240 = fmul double %13, %129
  %241 = fmul double %7, %240
  %242 = tail call double @llvm.fmuladd.f64(double %241, double %227, double %239)
  %243 = fadd double %75, %242
  %244 = tail call double @llvm.fmuladd.f64(double %226, double %227, double %243)
  br label %245

245:                                              ; preds = %223, %15
  %.sink201 = phi i64 [ %11, %223 ], [ %18, %15 ]
  %.sink = phi double [ %244, %223 ], [ 0.000000e+00, %15 ]
  %246 = getelementptr inbounds double, ptr %3, i64 %.sink201
  store double %.sink, ptr %246, align 8, !tbaa !5
  %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 %10, !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 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 @log(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 nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #4

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 nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nounwind willreturn memory(none) }
attributes #6 = { 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,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass