; LLVM IR from stillwater-sc/universal :: applications/accuracy/roots (rpoly_ak1)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z8Quad_ak1dddPdS_S_S_(double noundef, double noundef, double noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z10QuadSD_ak1iddPdS_S_S_(i32 noundef, double noundef, double noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z10calcSC_ak1iddPdS_S_S_S_S_S_S_S_S_ddS_(i32 noundef, double noundef, double noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, double noundef, double noundef, ptr noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z9nextK_ak1iidddPdS_S_S_S_(i32 noundef, i32 noundef, double noundef, double noundef, double noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z10newest_ak1iPdS_ddddddddddddS_iS_(i32 noundef, ptr noundef, ptr noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, ptr noundef, i32 noundef, ptr noundef) #2

; Function Attrs: mustprogress uwtable
define dso_local void @_Z10QuadIT_ak1iPiddPdS0_S0_S0_S0_iS0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_(i32 noundef %0, ptr noundef %1, double noundef %2, double noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, i32 noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22) #4 {
  %24 = alloca i32, align 4
  %25 = alloca ptr, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca i32, align 4
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %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 %24, align 4, !tbaa !5
  store ptr %1, ptr %25, align 8, !tbaa !9
  store double %2, ptr %26, align 8, !tbaa !11
  store double %3, ptr %27, align 8, !tbaa !11
  store ptr %4, ptr %28, align 8, !tbaa !9
  store ptr %5, ptr %29, align 8, !tbaa !9
  store ptr %6, ptr %30, align 8, !tbaa !9
  store ptr %7, ptr %31, align 8, !tbaa !9
  store ptr %8, ptr %32, align 8, !tbaa !9
  store i32 %9, ptr %33, align 4, !tbaa !5
  store ptr %10, ptr %34, align 8, !tbaa !9
  store ptr %11, ptr %35, align 8, !tbaa !9
  store ptr %12, ptr %36, align 8, !tbaa !9
  store ptr %13, ptr %37, align 8, !tbaa !9
  store ptr %14, ptr %38, align 8, !tbaa !9
  store ptr %15, ptr %39, align 8, !tbaa !9
  store ptr %16, ptr %40, align 8, !tbaa !9
  store ptr %17, ptr %41, align 8, !tbaa !9
  store ptr %18, ptr %42, align 8, !tbaa !9
  store ptr %19, ptr %43, align 8, !tbaa !9
  store ptr %20, ptr %44, align 8, !tbaa !9
  store ptr %21, ptr %45, align 8, !tbaa !9
  store ptr %22, ptr %46, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #5
  store i32 0, ptr %48, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #5
  store i32 0, ptr %50, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #5
  store double 0.000000e+00, ptr %54, align 8, !tbaa !11
  store double 1.000000e-02, ptr %55, align 8, !tbaa !11
  %62 = load ptr, ptr %25, align 8, !tbaa !9
  store i32 0, ptr %62, align 4, !tbaa !5
  %63 = load double, ptr %26, align 8, !tbaa !11
  store double %63, ptr %57, align 8, !tbaa !11
  %64 = load double, ptr %27, align 8, !tbaa !11
  store double %64, ptr %59, align 8, !tbaa !11
  br label %65

65:                                               ; preds = %347, %23
  %66 = load double, ptr %57, align 8, !tbaa !11
  %67 = load double, ptr %59, align 8, !tbaa !11
  %68 = load ptr, ptr %28, align 8, !tbaa !9
  %69 = load ptr, ptr %29, align 8, !tbaa !9
  %70 = load ptr, ptr %30, align 8, !tbaa !9
  %71 = load ptr, ptr %31, align 8, !tbaa !9
  call void @_Z8Quad_ak1dddPdS_S_S_(double noundef 1.000000e+00, double noundef %66, double noundef %67, ptr noundef %68, ptr noundef %69, ptr noundef %70, ptr noundef %71)
  %72 = load ptr, ptr %28, align 8, !tbaa !9
  %73 = load double, ptr %72, align 8, !tbaa !11
  %74 = call double @llvm.fabs.f64(double %73)
  %75 = load ptr, ptr %30, align 8, !tbaa !9
  %76 = load double, ptr %75, align 8, !tbaa !11
  %77 = call double @llvm.fabs.f64(double %76)
  %78 = fsub double %74, %77
  %79 = call double @llvm.fabs.f64(double %78)
  %80 = load ptr, ptr %30, align 8, !tbaa !9
  %81 = load double, ptr %80, align 8, !tbaa !11
  %82 = call double @llvm.fabs.f64(double %81)
  %83 = fmul double 1.000000e-02, %82
  %84 = fcmp ogt double %79, %83
  br i1 %84, label %85, label %86

85:                                               ; preds = %65
  br label %350

86:                                               ; preds = %65
  %87 = load i32, ptr %33, align 4, !tbaa !5
  %88 = load double, ptr %57, align 8, !tbaa !11
  %89 = load double, ptr %59, align 8, !tbaa !11
  %90 = load ptr, ptr %36, align 8, !tbaa !9
  %91 = load ptr, ptr %32, align 8, !tbaa !9
  %92 = load ptr, ptr %34, align 8, !tbaa !9
  %93 = load ptr, ptr %35, align 8, !tbaa !9
  call void @_Z10QuadSD_ak1iddPdS_S_S_(i32 noundef %87, double noundef %88, double noundef %89, ptr noundef %90, ptr noundef %91, ptr noundef %92, ptr noundef %93)
  %94 = load ptr, ptr %28, align 8, !tbaa !9
  %95 = load double, ptr %94, align 8, !tbaa !11
  %96 = load ptr, ptr %35, align 8, !tbaa !9
  %97 = load double, ptr %96, align 8, !tbaa !11
  %98 = load ptr, ptr %34, align 8, !tbaa !9
  %99 = load double, ptr %98, align 8, !tbaa !11
  %100 = fneg double %95
  %101 = call double @llvm.fmuladd.f64(double %100, double %97, double %99)
  %102 = call double @llvm.fabs.f64(double %101)
  %103 = load ptr, ptr %29, align 8, !tbaa !9
  %104 = load double, ptr %103, align 8, !tbaa !11
  %105 = load ptr, ptr %35, align 8, !tbaa !9
  %106 = load double, ptr %105, align 8, !tbaa !11
  %107 = fmul double %104, %106
  %108 = call double @llvm.fabs.f64(double %107)
  %109 = fadd double %102, %108
  store double %109, ptr %53, align 8, !tbaa !11
  %110 = load double, ptr %59, align 8, !tbaa !11
  %111 = call double @llvm.fabs.f64(double %110)
  %112 = call double @sqrt(double noundef %111) #5
  store double %112, ptr %61, align 8, !tbaa !11
  %113 = load ptr, ptr %32, align 8, !tbaa !9
  %114 = getelementptr inbounds double, ptr %113, i64 0
  %115 = load double, ptr %114, align 8, !tbaa !11
  %116 = call double @llvm.fabs.f64(double %115)
  %117 = fmul double 2.000000e+00, %116
  store double %117, ptr %52, align 8, !tbaa !11
  %118 = load ptr, ptr %28, align 8, !tbaa !9
  %119 = load double, ptr %118, align 8, !tbaa !11
  %120 = load ptr, ptr %35, align 8, !tbaa !9
  %121 = load double, ptr %120, align 8, !tbaa !11
  %122 = fmul double %119, %121
  %123 = fneg double %122
  store double %123, ptr %56, align 8, !tbaa !11
  store i32 1, ptr %47, align 4, !tbaa !5
  br label %124

124:                                              ; preds = %138, %86
  %125 = load i32, ptr %47, align 4, !tbaa !5
  %126 = load i32, ptr %24, align 4, !tbaa !5
  %127 = icmp slt i32 %125, %126
  br i1 %127, label %128, label %141

128:                                              ; preds = %124
  %129 = load double, ptr %52, align 8, !tbaa !11
  %130 = load double, ptr %61, align 8, !tbaa !11
  %131 = load ptr, ptr %32, align 8, !tbaa !9
  %132 = load i32, ptr %47, align 4, !tbaa !5
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds double, ptr %131, i64 %133
  %135 = load double, ptr %134, align 8, !tbaa !11
  %136 = call double @llvm.fabs.f64(double %135)
  %137 = call double @llvm.fmuladd.f64(double %129, double %130, double %136)
  store double %137, ptr %52, align 8, !tbaa !11
  br label %138

138:                                              ; preds = %128
  %139 = load i32, ptr %47, align 4, !tbaa !5
  %140 = add nsw i32 %139, 1
  store i32 %140, ptr %47, align 4, !tbaa !5
  br label %124, !llvm.loop !13

141:                                              ; preds = %124
  %142 = load double, ptr %52, align 8, !tbaa !11
  %143 = load double, ptr %61, align 8, !tbaa !11
  %144 = load ptr, ptr %34, align 8, !tbaa !9
  %145 = load double, ptr %144, align 8, !tbaa !11
  %146 = load double, ptr %56, align 8, !tbaa !11
  %147 = fadd double %145, %146
  %148 = call double @llvm.fabs.f64(double %147)
  %149 = call double @llvm.fmuladd.f64(double %142, double %143, double %148)
  store double %149, ptr %52, align 8, !tbaa !11
  %150 = load double, ptr %52, align 8, !tbaa !11
  %151 = load double, ptr %56, align 8, !tbaa !11
  %152 = call double @llvm.fabs.f64(double %151)
  %153 = fmul double 2.000000e+00, %152
  %154 = call double @llvm.fmuladd.f64(double 9.000000e+00, double %150, double %153)
  %155 = load ptr, ptr %34, align 8, !tbaa !9
  %156 = load double, ptr %155, align 8, !tbaa !11
  %157 = load double, ptr %56, align 8, !tbaa !11
  %158 = fadd double %156, %157
  %159 = call double @llvm.fabs.f64(double %158)
  %160 = load double, ptr %61, align 8, !tbaa !11
  %161 = load ptr, ptr %35, align 8, !tbaa !9
  %162 = load double, ptr %161, align 8, !tbaa !11
  %163 = call double @llvm.fabs.f64(double %162)
  %164 = call double @llvm.fmuladd.f64(double %160, double %163, double %159)
  %165 = call double @llvm.fmuladd.f64(double -7.000000e+00, double %164, double %154)
  %166 = fmul double %165, 0x3CB0000000000000
  store double %166, ptr %52, align 8, !tbaa !11
  %167 = load double, ptr %53, align 8, !tbaa !11
  %168 = load double, ptr %52, align 8, !tbaa !11
  %169 = fmul double 2.000000e+01, %168
  %170 = fcmp ole double %167, %169
  br i1 %170, label %171, label %173

171:                                              ; preds = %141
  %172 = load ptr, ptr %25, align 8, !tbaa !9
  store i32 2, ptr %172, align 4, !tbaa !5
  br label %350

173:                                              ; preds = %141
  %174 = load i32, ptr %48, align 4, !tbaa !5
  %175 = add nsw i32 %174, 1
  store i32 %175, ptr %48, align 4, !tbaa !5
  %176 = load i32, ptr %48, align 4, !tbaa !5
  %177 = icmp sgt i32 %176, 20
  br i1 %177, label %178, label %179

178:                                              ; preds = %173
  br label %350

179:                                              ; preds = %173
  %180 = load i32, ptr %48, align 4, !tbaa !5
  %181 = icmp sge i32 %180, 2
  br i1 %181, label %182, label %258

182:                                              ; preds = %179
  %183 = load double, ptr %55, align 8, !tbaa !11
  %184 = fcmp ole double %183, 1.000000e-02
  br i1 %184, label %185, label %257

185:                                              ; preds = %182
  %186 = load double, ptr %53, align 8, !tbaa !11
  %187 = load double, ptr %54, align 8, !tbaa !11
  %188 = fcmp oge double %186, %187
  br i1 %188, label %189, label %257

189:                                              ; preds = %185
  %190 = load i32, ptr %50, align 4, !tbaa !5
  %191 = icmp ne i32 %190, 0
  br i1 %191, label %257, label %192

192:                                              ; preds = %189
  %193 = load double, ptr %55, align 8, !tbaa !11
  %194 = fcmp olt double %193, 0x3CB0000000000000
  br i1 %194, label %195, label %197

195:                                              ; preds = %192
  %196 = call double @sqrt(double noundef 0x3CB0000000000000) #5
  br label %200

197:                                              ; preds = %192
  %198 = load double, ptr %55, align 8, !tbaa !11
  %199 = call double @sqrt(double noundef %198) #5
  br label %200

200:                                              ; preds = %197, %195
  %201 = phi double [ %196, %195 ], [ %199, %197 ]
  store double %201, ptr %55, align 8, !tbaa !11
  %202 = load double, ptr %57, align 8, !tbaa !11
  %203 = load double, ptr %55, align 8, !tbaa !11
  %204 = load double, ptr %57, align 8, !tbaa !11
  %205 = fneg double %202
  %206 = call double @llvm.fmuladd.f64(double %205, double %203, double %204)
  store double %206, ptr %57, align 8, !tbaa !11
  %207 = load double, ptr %59, align 8, !tbaa !11
  %208 = load double, ptr %55, align 8, !tbaa !11
  %209 = load double, ptr %59, align 8, !tbaa !11
  %210 = call double @llvm.fmuladd.f64(double %207, double %208, double %209)
  store double %210, ptr %59, align 8, !tbaa !11
  %211 = load i32, ptr %33, align 4, !tbaa !5
  %212 = load double, ptr %57, align 8, !tbaa !11
  %213 = load double, ptr %59, align 8, !tbaa !11
  %214 = load ptr, ptr %36, align 8, !tbaa !9
  %215 = load ptr, ptr %32, align 8, !tbaa !9
  %216 = load ptr, ptr %34, align 8, !tbaa !9
  %217 = load ptr, ptr %35, align 8, !tbaa !9
  call void @_Z10QuadSD_ak1iddPdS_S_S_(i32 noundef %211, double noundef %212, double noundef %213, ptr noundef %214, ptr noundef %215, ptr noundef %216, ptr noundef %217)
  store i32 0, ptr %47, align 4, !tbaa !5
  br label %218

218:                                              ; preds = %253, %200
  %219 = load i32, ptr %47, align 4, !tbaa !5
  %220 = icmp slt i32 %219, 5
  br i1 %220, label %221, label %256

221:                                              ; preds = %218
  %222 = load i32, ptr %24, align 4, !tbaa !5
  %223 = load ptr, ptr %34, align 8, !tbaa !9
  %224 = load double, ptr %223, align 8, !tbaa !11
  %225 = load ptr, ptr %35, align 8, !tbaa !9
  %226 = load double, ptr %225, align 8, !tbaa !11
  %227 = load ptr, ptr %38, align 8, !tbaa !9
  %228 = load ptr, ptr %39, align 8, !tbaa !9
  %229 = load ptr, ptr %40, align 8, !tbaa !9
  %230 = load ptr, ptr %41, align 8, !tbaa !9
  %231 = load ptr, ptr %42, align 8, !tbaa !9
  %232 = load ptr, ptr %43, align 8, !tbaa !9
  %233 = load ptr, ptr %44, align 8, !tbaa !9
  %234 = load ptr, ptr %45, align 8, !tbaa !9
  %235 = load ptr, ptr %46, align 8, !tbaa !9
  %236 = load double, ptr %57, align 8, !tbaa !11
  %237 = load double, ptr %59, align 8, !tbaa !11
  %238 = load ptr, ptr %37, align 8, !tbaa !9
  %239 = call noundef i32 @_Z10calcSC_ak1iddPdS_S_S_S_S_S_S_S_S_ddS_(i32 noundef %222, double noundef %224, double noundef %226, ptr noundef %227, ptr noundef %228, ptr noundef %229, ptr noundef %51, ptr noundef %230, ptr noundef %231, ptr noundef %232, ptr noundef %233, ptr noundef %234, ptr noundef %235, double noundef %236, double noundef %237, ptr noundef %238)
  store i32 %239, ptr %49, align 4, !tbaa !5
  %240 = load i32, ptr %24, align 4, !tbaa !5
  %241 = load i32, ptr %49, align 4, !tbaa !5
  %242 = load ptr, ptr %34, align 8, !tbaa !9
  %243 = load double, ptr %242, align 8, !tbaa !11
  %244 = load ptr, ptr %35, align 8, !tbaa !9
  %245 = load double, ptr %244, align 8, !tbaa !11
  %246 = load ptr, ptr %38, align 8, !tbaa !9
  %247 = load double, ptr %246, align 8, !tbaa !11
  %248 = load ptr, ptr %39, align 8, !tbaa !9
  %249 = load ptr, ptr %40, align 8, !tbaa !9
  %250 = load ptr, ptr %46, align 8, !tbaa !9
  %251 = load ptr, ptr %37, align 8, !tbaa !9
  %252 = load ptr, ptr %32, align 8, !tbaa !9
  call void @_Z9nextK_ak1iidddPdS_S_S_S_(i32 noundef %240, i32 noundef %241, double noundef %243, double noundef %245, double noundef %247, ptr noundef %248, ptr noundef %249, ptr noundef %250, ptr noundef %251, ptr noundef %252)
  br label %253

253:                                              ; preds = %221
  %254 = load i32, ptr %47, align 4, !tbaa !5
  %255 = add nsw i32 %254, 1
  store i32 %255, ptr %47, align 4, !tbaa !5
  br label %218, !llvm.loop !15

256:                                              ; preds = %218
  store i32 1, ptr %50, align 4, !tbaa !5
  store i32 0, ptr %48, align 4, !tbaa !5
  br label %257

257:                                              ; preds = %256, %189, %185, %182
  br label %258

258:                                              ; preds = %257, %179
  %259 = load double, ptr %53, align 8, !tbaa !11
  store double %259, ptr %54, align 8, !tbaa !11
  %260 = load i32, ptr %24, align 4, !tbaa !5
  %261 = load ptr, ptr %34, align 8, !tbaa !9
  %262 = load double, ptr %261, align 8, !tbaa !11
  %263 = load ptr, ptr %35, align 8, !tbaa !9
  %264 = load double, ptr %263, align 8, !tbaa !11
  %265 = load ptr, ptr %38, align 8, !tbaa !9
  %266 = load ptr, ptr %39, align 8, !tbaa !9
  %267 = load ptr, ptr %40, align 8, !tbaa !9
  %268 = load ptr, ptr %41, align 8, !tbaa !9
  %269 = load ptr, ptr %42, align 8, !tbaa !9
  %270 = load ptr, ptr %43, align 8, !tbaa !9
  %271 = load ptr, ptr %44, align 8, !tbaa !9
  %272 = load ptr, ptr %45, align 8, !tbaa !9
  %273 = load ptr, ptr %46, align 8, !tbaa !9
  %274 = load double, ptr %57, align 8, !tbaa !11
  %275 = load double, ptr %59, align 8, !tbaa !11
  %276 = load ptr, ptr %37, align 8, !tbaa !9
  %277 = call noundef i32 @_Z10calcSC_ak1iddPdS_S_S_S_S_S_S_S_S_ddS_(i32 noundef %260, double noundef %262, double noundef %264, ptr noundef %265, ptr noundef %266, ptr noundef %267, ptr noundef %51, ptr noundef %268, ptr noundef %269, ptr noundef %270, ptr noundef %271, ptr noundef %272, ptr noundef %273, double noundef %274, double noundef %275, ptr noundef %276)
  store i32 %277, ptr %49, align 4, !tbaa !5
  %278 = load i32, ptr %24, align 4, !tbaa !5
  %279 = load i32, ptr %49, align 4, !tbaa !5
  %280 = load ptr, ptr %34, align 8, !tbaa !9
  %281 = load double, ptr %280, align 8, !tbaa !11
  %282 = load ptr, ptr %35, align 8, !tbaa !9
  %283 = load double, ptr %282, align 8, !tbaa !11
  %284 = load ptr, ptr %38, align 8, !tbaa !9
  %285 = load double, ptr %284, align 8, !tbaa !11
  %286 = load ptr, ptr %39, align 8, !tbaa !9
  %287 = load ptr, ptr %40, align 8, !tbaa !9
  %288 = load ptr, ptr %46, align 8, !tbaa !9
  %289 = load ptr, ptr %37, align 8, !tbaa !9
  %290 = load ptr, ptr %32, align 8, !tbaa !9
  call void @_Z9nextK_ak1iidddPdS_S_S_S_(i32 noundef %278, i32 noundef %279, double noundef %281, double noundef %283, double noundef %285, ptr noundef %286, ptr noundef %287, ptr noundef %288, ptr noundef %289, ptr noundef %290)
  %291 = load i32, ptr %24, align 4, !tbaa !5
  %292 = load ptr, ptr %34, align 8, !tbaa !9
  %293 = load double, ptr %292, align 8, !tbaa !11
  %294 = load ptr, ptr %35, align 8, !tbaa !9
  %295 = load double, ptr %294, align 8, !tbaa !11
  %296 = load ptr, ptr %38, align 8, !tbaa !9
  %297 = load ptr, ptr %39, align 8, !tbaa !9
  %298 = load ptr, ptr %40, align 8, !tbaa !9
  %299 = load ptr, ptr %41, align 8, !tbaa !9
  %300 = load ptr, ptr %42, align 8, !tbaa !9
  %301 = load ptr, ptr %43, align 8, !tbaa !9
  %302 = load ptr, ptr %44, align 8, !tbaa !9
  %303 = load ptr, ptr %45, align 8, !tbaa !9
  %304 = load ptr, ptr %46, align 8, !tbaa !9
  %305 = load double, ptr %57, align 8, !tbaa !11
  %306 = load double, ptr %59, align 8, !tbaa !11
  %307 = load ptr, ptr %37, align 8, !tbaa !9
  %308 = call noundef i32 @_Z10calcSC_ak1iddPdS_S_S_S_S_S_S_S_S_ddS_(i32 noundef %291, double noundef %293, double noundef %295, ptr noundef %296, ptr noundef %297, ptr noundef %298, ptr noundef %51, ptr noundef %299, ptr noundef %300, ptr noundef %301, ptr noundef %302, ptr noundef %303, ptr noundef %304, double noundef %305, double noundef %306, ptr noundef %307)
  store i32 %308, ptr %49, align 4, !tbaa !5
  %309 = load i32, ptr %49, align 4, !tbaa !5
  %310 = load ptr, ptr %34, align 8, !tbaa !9
  %311 = load double, ptr %310, align 8, !tbaa !11
  %312 = load ptr, ptr %38, align 8, !tbaa !9
  %313 = load double, ptr %312, align 8, !tbaa !11
  %314 = load ptr, ptr %39, align 8, !tbaa !9
  %315 = load double, ptr %314, align 8, !tbaa !11
  %316 = load ptr, ptr %40, align 8, !tbaa !9
  %317 = load double, ptr %316, align 8, !tbaa !11
  %318 = load ptr, ptr %35, align 8, !tbaa !9
  %319 = load double, ptr %318, align 8, !tbaa !11
  %320 = load double, ptr %51, align 8, !tbaa !11
  %321 = load ptr, ptr %41, align 8, !tbaa !9
  %322 = load double, ptr %321, align 8, !tbaa !11
  %323 = load ptr, ptr %43, align 8, !tbaa !9
  %324 = load double, ptr %323, align 8, !tbaa !11
  %325 = load ptr, ptr %44, align 8, !tbaa !9
  %326 = load double, ptr %325, align 8, !tbaa !11
  %327 = load ptr, ptr %45, align 8, !tbaa !9
  %328 = load double, ptr %327, align 8, !tbaa !11
  %329 = load double, ptr %57, align 8, !tbaa !11
  %330 = load double, ptr %59, align 8, !tbaa !11
  %331 = load ptr, ptr %46, align 8, !tbaa !9
  %332 = load i32, ptr %24, align 4, !tbaa !5
  %333 = load ptr, ptr %36, align 8, !tbaa !9
  call void @_Z10newest_ak1iPdS_ddddddddddddS_iS_(i32 noundef %309, ptr noundef %58, ptr noundef %60, double noundef %311, double noundef %313, double noundef %315, double noundef %317, double noundef %319, double noundef %320, double noundef %322, double noundef %324, double noundef %326, double noundef %328, double noundef %329, double noundef %330, ptr noundef %331, i32 noundef %332, ptr noundef %333)
  %334 = load double, ptr %60, align 8, !tbaa !11
  %335 = fcmp une double %334, 0.000000e+00
  br i1 %335, label %336, label %346

336:                                              ; preds = %258
  %337 = load double, ptr %59, align 8, !tbaa !11
  %338 = fneg double %337
  %339 = load double, ptr %60, align 8, !tbaa !11
  %340 = fadd double %338, %339
  %341 = load double, ptr %60, align 8, !tbaa !11
  %342 = fdiv double %340, %341
  %343 = call double @llvm.fabs.f64(double %342)
  store double %343, ptr %55, align 8, !tbaa !11
  %344 = load double, ptr %58, align 8, !tbaa !11
  store double %344, ptr %57, align 8, !tbaa !11
  %345 = load double, ptr %60, align 8, !tbaa !11
  store double %345, ptr %59, align 8, !tbaa !11
  br label %346

346:                                              ; preds = %336, %258
  br label %347

347:                                              ; preds = %346
  %348 = load double, ptr %60, align 8, !tbaa !11
  %349 = fcmp une double %348, 0.000000e+00
  br i1 %349, label %65, label %350, !llvm.loop !16

350:                                              ; preds = %347, %178, %171, %85
  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
  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
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #5
  ret void
}

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

!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"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}


; 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 nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z8Quad_ak1dddPdS_S_S_(double noundef, double noundef, double noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z10QuadSD_ak1iddPdS_S_S_(i32 noundef, double noundef, double noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z10calcSC_ak1iddPdS_S_S_S_S_S_S_S_S_ddS_(i32 noundef, double noundef, double noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, double noundef, double noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z9nextK_ak1iidddPdS_S_S_S_(i32 noundef, i32 noundef, double noundef, double noundef, double noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z10newest_ak1iPdS_ddddddddddddS_iS_(i32 noundef, ptr noundef, ptr noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
define dso_local void @_Z10QuadIT_ak1iPiddPdS0_S0_S0_S0_iS0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_(i32 noundef %0, ptr nocapture noundef writeonly %1, double noundef %2, double noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, i32 noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22) local_unnamed_addr #1 {
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #4
  store i32 0, ptr %1, align 4, !tbaa !5
  %27 = icmp sgt i32 %0, 1
  %wide.trip.count = zext i32 %0 to i64
  %28 = add nsw i64 %wide.trip.count, -1
  %29 = add nsw i64 %wide.trip.count, -2
  %xtraiter = and i64 %28, 3
  %30 = icmp ult i64 %29, 3
  %unroll_iter = and i64 %28, -4
  %invariant.gep = getelementptr inbounds i8, ptr %8, i64 8
  %invariant.gep187 = getelementptr inbounds i8, ptr %8, i64 16
  %invariant.gep189 = getelementptr inbounds i8, ptr %8, i64 24
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br label %31

31:                                               ; preds = %151, %23
  %.0168 = phi i32 [ 0, %23 ], [ %.1169, %151 ]
  %.0166 = phi double [ 0.000000e+00, %23 ], [ %50, %151 ]
  %.0163 = phi double [ 1.000000e-02, %23 ], [ %154, %151 ]
  %.0161 = phi i32 [ 0, %23 ], [ %.1162, %151 ]
  %.0158 = phi double [ %2, %23 ], [ %155, %151 ]
  %.0156 = phi double [ %3, %23 ], [ %149, %151 ]
  call void @_Z8Quad_ak1dddPdS_S_S_(double noundef 1.000000e+00, double noundef %.0158, double noundef %.0156, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7)
  %32 = load double, ptr %4, align 8, !tbaa !9
  %33 = call double @llvm.fabs.f64(double %32)
  %34 = load double, ptr %6, align 8, !tbaa !9
  %35 = call double @llvm.fabs.f64(double %34)
  %36 = fsub double %33, %35
  %37 = call double @llvm.fabs.f64(double %36)
  %38 = fmul double %35, 1.000000e-02
  %39 = fcmp ogt double %37, %38
  br i1 %39, label %.thread, label %40

40:                                               ; preds = %31
  call void @_Z10QuadSD_ak1iddPdS_S_S_(i32 noundef %9, double noundef %.0158, double noundef %.0156, ptr noundef %12, ptr noundef %8, ptr noundef %10, ptr noundef %11)
  %41 = load double, ptr %4, align 8, !tbaa !9
  %42 = load double, ptr %11, align 8, !tbaa !9
  %43 = load double, ptr %10, align 8, !tbaa !9
  %44 = fneg double %41
  %45 = call double @llvm.fmuladd.f64(double %44, double %42, double %43)
  %46 = call double @llvm.fabs.f64(double %45)
  %47 = load double, ptr %5, align 8, !tbaa !9
  %48 = fmul double %42, %47
  %49 = call double @llvm.fabs.f64(double %48)
  %50 = fadd double %46, %49
  %51 = call double @llvm.fabs.f64(double %.0156)
  %sqrt = call double @llvm.sqrt.f64(double %51)
  %52 = load double, ptr %8, align 8, !tbaa !9
  %53 = call double @llvm.fabs.f64(double %52)
  %54 = fmul double %53, 2.000000e+00
  %55 = fmul double %42, %44
  br i1 %27, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %40
  br i1 %30, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next.3, %.lr.ph ], [ 1, %.lr.ph.preheader ]
  %.0167178 = phi double [ %68, %.lr.ph ], [ %54, %.lr.ph.preheader ]
  %niter = phi i64 [ %niter.next.3, %.lr.ph ], [ 0, %.lr.ph.preheader ]
  %56 = getelementptr inbounds double, ptr %8, i64 %indvars.iv
  %57 = load double, ptr %56, align 8, !tbaa !9
  %58 = call double @llvm.fabs.f64(double %57)
  %59 = call double @llvm.fmuladd.f64(double %.0167178, double %sqrt, double %58)
  %gep = getelementptr inbounds double, ptr %invariant.gep, i64 %indvars.iv
  %60 = load double, ptr %gep, align 8, !tbaa !9
  %61 = call double @llvm.fabs.f64(double %60)
  %62 = call double @llvm.fmuladd.f64(double %59, double %sqrt, double %61)
  %gep188 = getelementptr inbounds double, ptr %invariant.gep187, i64 %indvars.iv
  %63 = load double, ptr %gep188, align 8, !tbaa !9
  %64 = call double @llvm.fabs.f64(double %63)
  %65 = call double @llvm.fmuladd.f64(double %62, double %sqrt, double %64)
  %gep190 = getelementptr inbounds double, ptr %invariant.gep189, i64 %indvars.iv
  %66 = load double, ptr %gep190, align 8, !tbaa !9
  %67 = call double @llvm.fabs.f64(double %66)
  %68 = call double @llvm.fmuladd.f64(double %65, double %sqrt, double %67)
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph, !llvm.loop !11

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph, %.lr.ph.preheader
  %.lcssa.ph = phi double [ poison, %.lr.ph.preheader ], [ %68, %.lr.ph ]
  %indvars.iv.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next.3, %.lr.ph ]
  %.0167178.unr = phi double [ %54, %.lr.ph.preheader ], [ %68, %.lr.ph ]
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %._crit_edge.loopexit.unr-lcssa, %.lr.ph.epil
  %indvars.iv.epil = phi i64 [ %indvars.iv.next.epil, %.lr.ph.epil ], [ %indvars.iv.unr, %._crit_edge.loopexit.unr-lcssa ]
  %.0167178.epil = phi double [ %72, %.lr.ph.epil ], [ %.0167178.unr, %._crit_edge.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph.epil ], [ 0, %._crit_edge.loopexit.unr-lcssa ]
  %69 = getelementptr inbounds double, ptr %8, i64 %indvars.iv.epil
  %70 = load double, ptr %69, align 8, !tbaa !9
  %71 = call double @llvm.fabs.f64(double %70)
  %72 = call double @llvm.fmuladd.f64(double %.0167178.epil, double %sqrt, double %71)
  %indvars.iv.next.epil = add nuw nsw i64 %indvars.iv.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge, label %.lr.ph.epil, !llvm.loop !13

._crit_edge:                                      ; preds = %._crit_edge.loopexit.unr-lcssa, %.lr.ph.epil, %40
  %.0167.lcssa = phi double [ %54, %40 ], [ %.lcssa.ph, %._crit_edge.loopexit.unr-lcssa ], [ %72, %.lr.ph.epil ]
  %73 = fadd double %55, %43
  %74 = call double @llvm.fabs.f64(double %73)
  %75 = call double @llvm.fmuladd.f64(double %.0167.lcssa, double %sqrt, double %74)
  %76 = call double @llvm.fabs.f64(double %55)
  %77 = fmul double %76, 2.000000e+00
  %78 = call double @llvm.fmuladd.f64(double %75, double 9.000000e+00, double %77)
  %79 = call double @llvm.fabs.f64(double %42)
  %80 = call double @llvm.fmuladd.f64(double %sqrt, double %79, double %74)
  %81 = call double @llvm.fmuladd.f64(double %80, double -7.000000e+00, double %78)
  %82 = fmul double %81, 0x3CB0000000000000
  %83 = fmul double %82, 2.000000e+01
  %84 = fcmp ugt double %50, %83
  br i1 %84, label %86, label %85

85:                                               ; preds = %._crit_edge
  store i32 2, ptr %1, align 4, !tbaa !5
  br label %.thread

86:                                               ; preds = %._crit_edge
  %87 = add nsw i32 %.0161, 1
  %88 = icmp sgt i32 %.0161, 19
  br i1 %88, label %.thread, label %89

89:                                               ; preds = %86
  %90 = icmp sgt i32 %.0161, 0
  %91 = fcmp ole double %.0163, 1.000000e-02
  %or.cond3 = and i1 %91, %90
  br i1 %or.cond3, label %92, label %.loopexit

92:                                               ; preds = %89
  %93 = fcmp ult double %50, %.0166
  %94 = icmp ne i32 %.0168, 0
  %or.cond = select i1 %93, i1 true, i1 %94
  br i1 %or.cond, label %.loopexit, label %.loopexit.loopexit

.loopexit.loopexit:                               ; preds = %92
  %95 = fcmp olt double %.0163, 0x3CB0000000000000
  %sqrt177 = call double @llvm.sqrt.f64(double %.0163)
  %96 = select i1 %95, double 0x3E50000000000000, double %sqrt177
  %97 = fneg double %.0158
  %98 = call double @llvm.fmuladd.f64(double %97, double %96, double %.0158)
  %99 = call double @llvm.fmuladd.f64(double %.0156, double %96, double %.0156)
  call void @_Z10QuadSD_ak1iddPdS_S_S_(i32 noundef %9, double noundef %98, double noundef %99, ptr noundef %12, ptr noundef nonnull %8, ptr noundef nonnull %10, ptr noundef nonnull %11)
  %100 = load double, ptr %10, align 8, !tbaa !9
  %101 = load double, ptr %11, align 8, !tbaa !9
  %102 = call noundef i32 @_Z10calcSC_ak1iddPdS_S_S_S_S_S_S_S_S_ddS_(i32 noundef %0, double noundef %100, double noundef %101, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef nonnull %24, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, double noundef %98, double noundef %99, ptr noundef %13)
  %103 = load double, ptr %10, align 8, !tbaa !9
  %104 = load double, ptr %11, align 8, !tbaa !9
  %105 = load double, ptr %14, align 8, !tbaa !9
  call void @_Z9nextK_ak1iidddPdS_S_S_S_(i32 noundef %0, i32 noundef %102, double noundef %103, double noundef %104, double noundef %105, ptr noundef %15, ptr noundef %16, ptr noundef %22, ptr noundef %13, ptr noundef nonnull %8)
  %106 = load double, ptr %10, align 8, !tbaa !9
  %107 = load double, ptr %11, align 8, !tbaa !9
  %108 = call noundef i32 @_Z10calcSC_ak1iddPdS_S_S_S_S_S_S_S_S_ddS_(i32 noundef %0, double noundef %106, double noundef %107, ptr noundef nonnull %14, ptr noundef %15, ptr noundef %16, ptr noundef nonnull %24, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, double noundef %98, double noundef %99, ptr noundef %13)
  %109 = load double, ptr %10, align 8, !tbaa !9
  %110 = load double, ptr %11, align 8, !tbaa !9
  %111 = load double, ptr %14, align 8, !tbaa !9
  call void @_Z9nextK_ak1iidddPdS_S_S_S_(i32 noundef %0, i32 noundef %108, double noundef %109, double noundef %110, double noundef %111, ptr noundef %15, ptr noundef %16, ptr noundef %22, ptr noundef %13, ptr noundef nonnull %8)
  %112 = load double, ptr %10, align 8, !tbaa !9
  %113 = load double, ptr %11, align 8, !tbaa !9
  %114 = call noundef i32 @_Z10calcSC_ak1iddPdS_S_S_S_S_S_S_S_S_ddS_(i32 noundef %0, double noundef %112, double noundef %113, ptr noundef nonnull %14, ptr noundef %15, ptr noundef %16, ptr noundef nonnull %24, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, double noundef %98, double noundef %99, ptr noundef %13)
  %115 = load double, ptr %10, align 8, !tbaa !9
  %116 = load double, ptr %11, align 8, !tbaa !9
  %117 = load double, ptr %14, align 8, !tbaa !9
  call void @_Z9nextK_ak1iidddPdS_S_S_S_(i32 noundef %0, i32 noundef %114, double noundef %115, double noundef %116, double noundef %117, ptr noundef %15, ptr noundef %16, ptr noundef %22, ptr noundef %13, ptr noundef nonnull %8)
  %118 = load double, ptr %10, align 8, !tbaa !9
  %119 = load double, ptr %11, align 8, !tbaa !9
  %120 = call noundef i32 @_Z10calcSC_ak1iddPdS_S_S_S_S_S_S_S_S_ddS_(i32 noundef %0, double noundef %118, double noundef %119, ptr noundef nonnull %14, ptr noundef %15, ptr noundef %16, ptr noundef nonnull %24, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, double noundef %98, double noundef %99, ptr noundef %13)
  %121 = load double, ptr %10, align 8, !tbaa !9
  %122 = load double, ptr %11, align 8, !tbaa !9
  %123 = load double, ptr %14, align 8, !tbaa !9
  call void @_Z9nextK_ak1iidddPdS_S_S_S_(i32 noundef %0, i32 noundef %120, double noundef %121, double noundef %122, double noundef %123, ptr noundef %15, ptr noundef %16, ptr noundef %22, ptr noundef %13, ptr noundef nonnull %8)
  %124 = load double, ptr %10, align 8, !tbaa !9
  %125 = load double, ptr %11, align 8, !tbaa !9
  %126 = call noundef i32 @_Z10calcSC_ak1iddPdS_S_S_S_S_S_S_S_S_ddS_(i32 noundef %0, double noundef %124, double noundef %125, ptr noundef nonnull %14, ptr noundef %15, ptr noundef %16, ptr noundef nonnull %24, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, double noundef %98, double noundef %99, ptr noundef %13)
  %127 = load double, ptr %10, align 8, !tbaa !9
  %128 = load double, ptr %11, align 8, !tbaa !9
  %129 = load double, ptr %14, align 8, !tbaa !9
  call void @_Z9nextK_ak1iidddPdS_S_S_S_(i32 noundef %0, i32 noundef %126, double noundef %127, double noundef %128, double noundef %129, ptr noundef %15, ptr noundef %16, ptr noundef %22, ptr noundef %13, ptr noundef nonnull %8)
  %.pre = load double, ptr %10, align 8, !tbaa !9
  %.pre183 = load double, ptr %11, align 8, !tbaa !9
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %92, %89
  %130 = phi double [ %42, %92 ], [ %42, %89 ], [ %.pre183, %.loopexit.loopexit ]
  %131 = phi double [ %43, %92 ], [ %43, %89 ], [ %.pre, %.loopexit.loopexit ]
  %.1169 = phi i32 [ %.0168, %92 ], [ %.0168, %89 ], [ 1, %.loopexit.loopexit ]
  %.1162 = phi i32 [ %87, %92 ], [ %87, %89 ], [ 0, %.loopexit.loopexit ]
  %.1159 = phi double [ %.0158, %92 ], [ %.0158, %89 ], [ %98, %.loopexit.loopexit ]
  %.1157 = phi double [ %.0156, %92 ], [ %.0156, %89 ], [ %99, %.loopexit.loopexit ]
  %132 = call noundef i32 @_Z10calcSC_ak1iddPdS_S_S_S_S_S_S_S_S_ddS_(i32 noundef %0, double noundef %131, double noundef %130, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef nonnull %24, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, double noundef %.1159, double noundef %.1157, ptr noundef %13)
  %133 = load double, ptr %10, align 8, !tbaa !9
  %134 = load double, ptr %11, align 8, !tbaa !9
  %135 = load double, ptr %14, align 8, !tbaa !9
  call void @_Z9nextK_ak1iidddPdS_S_S_S_(i32 noundef %0, i32 noundef %132, double noundef %133, double noundef %134, double noundef %135, ptr noundef %15, ptr noundef %16, ptr noundef %22, ptr noundef %13, ptr noundef nonnull %8)
  %136 = load double, ptr %10, align 8, !tbaa !9
  %137 = load double, ptr %11, align 8, !tbaa !9
  %138 = call noundef i32 @_Z10calcSC_ak1iddPdS_S_S_S_S_S_S_S_S_ddS_(i32 noundef %0, double noundef %136, double noundef %137, ptr noundef nonnull %14, ptr noundef %15, ptr noundef %16, ptr noundef nonnull %24, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, double noundef %.1159, double noundef %.1157, ptr noundef %13)
  %139 = load double, ptr %10, align 8, !tbaa !9
  %140 = load double, ptr %14, align 8, !tbaa !9
  %141 = load double, ptr %15, align 8, !tbaa !9
  %142 = load double, ptr %16, align 8, !tbaa !9
  %143 = load double, ptr %11, align 8, !tbaa !9
  %144 = load double, ptr %24, align 8, !tbaa !9
  %145 = load double, ptr %17, align 8, !tbaa !9
  %146 = load double, ptr %19, align 8, !tbaa !9
  %147 = load double, ptr %20, align 8, !tbaa !9
  %148 = load double, ptr %21, align 8, !tbaa !9
  call void @_Z10newest_ak1iPdS_ddddddddddddS_iS_(i32 noundef %138, ptr noundef nonnull %25, ptr noundef nonnull %26, double noundef %139, double noundef %140, double noundef %141, double noundef %142, double noundef %143, double noundef %144, double noundef %145, double noundef %146, double noundef %147, double noundef %148, double noundef %.1159, double noundef %.1157, ptr noundef %22, i32 noundef %0, ptr noundef %12)
  %149 = load double, ptr %26, align 8, !tbaa !9
  %150 = fcmp une double %149, 0.000000e+00
  br i1 %150, label %151, label %.thread

151:                                              ; preds = %.loopexit
  %152 = fsub double %149, %.1157
  %153 = fdiv double %152, %149
  %154 = call double @llvm.fabs.f64(double %153)
  %155 = load double, ptr %25, align 8, !tbaa !9
  br label %31

.thread:                                          ; preds = %.loopexit, %86, %31, %85
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #4
  ret void
}

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nounwind }

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

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


; Effective O3 passes: AggressiveInstCombinePass,EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass