; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (dlasd4)

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

@.str = external hidden unnamed_addr constant [8 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @dlasd4_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8) #0 {
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca i64, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca i64, align 8
  %26 = alloca double, align 8
  %27 = alloca [3 x double], align 16
  %28 = alloca i64, align 8
  %29 = alloca double, align 8
  %30 = alloca [3 x double], align 16
  %31 = alloca i64, 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 i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca i64, 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 i64, align 8
  %52 = alloca double, align 8
  %53 = alloca i64, align 8
  %54 = alloca double, align 8
  %55 = alloca double, align 8
  %56 = alloca double, align 8
  %57 = alloca i64, align 8
  %58 = alloca i64, align 8
  %59 = alloca double, align 8
  %60 = alloca double, align 8
  %61 = alloca double, align 8
  %62 = alloca i32, align 4
  store ptr %0, ptr %11, align 8, !tbaa !5
  store ptr %1, ptr %12, align 8, !tbaa !5
  store ptr %2, ptr %13, align 8, !tbaa !5
  store ptr %3, ptr %14, align 8, !tbaa !5
  store ptr %4, ptr %15, align 8, !tbaa !5
  store ptr %5, ptr %16, align 8, !tbaa !5
  store ptr %6, ptr %17, align 8, !tbaa !5
  store ptr %7, ptr %18, align 8, !tbaa !5
  store ptr %8, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 24, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 24, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #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
  %63 = load ptr, ptr %18, align 8, !tbaa !5
  %64 = getelementptr inbounds double, ptr %63, i32 -1
  store ptr %64, ptr %18, align 8, !tbaa !5
  %65 = load ptr, ptr %15, align 8, !tbaa !5
  %66 = getelementptr inbounds double, ptr %65, i32 -1
  store ptr %66, ptr %15, align 8, !tbaa !5
  %67 = load ptr, ptr %14, align 8, !tbaa !5
  %68 = getelementptr inbounds double, ptr %67, i32 -1
  store ptr %68, ptr %14, align 8, !tbaa !5
  %69 = load ptr, ptr %13, align 8, !tbaa !5
  %70 = getelementptr inbounds double, ptr %69, i32 -1
  store ptr %70, ptr %13, align 8, !tbaa !5
  %71 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 0, ptr %71, align 8, !tbaa !9
  %72 = load ptr, ptr %11, align 8, !tbaa !5
  %73 = load i64, ptr %72, align 8, !tbaa !9
  %74 = icmp eq i64 %73, 1
  br i1 %74, label %75, label %99

75:                                               ; preds = %9
  %76 = load ptr, ptr %13, align 8, !tbaa !5
  %77 = getelementptr inbounds double, ptr %76, i64 1
  %78 = load double, ptr %77, align 8, !tbaa !11
  %79 = load ptr, ptr %13, align 8, !tbaa !5
  %80 = getelementptr inbounds double, ptr %79, i64 1
  %81 = load double, ptr %80, align 8, !tbaa !11
  %82 = load ptr, ptr %16, align 8, !tbaa !5
  %83 = load double, ptr %82, align 8, !tbaa !11
  %84 = load ptr, ptr %14, align 8, !tbaa !5
  %85 = getelementptr inbounds double, ptr %84, i64 1
  %86 = load double, ptr %85, align 8, !tbaa !11
  %87 = fmul double %83, %86
  %88 = load ptr, ptr %14, align 8, !tbaa !5
  %89 = getelementptr inbounds double, ptr %88, i64 1
  %90 = load double, ptr %89, align 8, !tbaa !11
  %91 = fmul double %87, %90
  %92 = call double @llvm.fmuladd.f64(double %78, double %81, double %91)
  %93 = call double @sqrt(double noundef %92) #5
  %94 = load ptr, ptr %17, align 8, !tbaa !5
  store double %93, ptr %94, align 8, !tbaa !11
  %95 = load ptr, ptr %15, align 8, !tbaa !5
  %96 = getelementptr inbounds double, ptr %95, i64 1
  store double 1.000000e+00, ptr %96, align 8, !tbaa !11
  %97 = load ptr, ptr %18, align 8, !tbaa !5
  %98 = getelementptr inbounds double, ptr %97, i64 1
  store double 1.000000e+00, ptr %98, align 8, !tbaa !11
  store i32 0, ptr %10, align 4
  store i32 1, ptr %62, align 4
  br label %3583

99:                                               ; preds = %9
  %100 = load ptr, ptr %11, align 8, !tbaa !5
  %101 = load i64, ptr %100, align 8, !tbaa !9
  %102 = icmp eq i64 %101, 2
  br i1 %102, label %103, label %116

103:                                              ; preds = %99
  %104 = load ptr, ptr %12, align 8, !tbaa !5
  %105 = load ptr, ptr %13, align 8, !tbaa !5
  %106 = getelementptr inbounds double, ptr %105, i64 1
  %107 = load ptr, ptr %14, align 8, !tbaa !5
  %108 = getelementptr inbounds double, ptr %107, i64 1
  %109 = load ptr, ptr %15, align 8, !tbaa !5
  %110 = getelementptr inbounds double, ptr %109, i64 1
  %111 = load ptr, ptr %16, align 8, !tbaa !5
  %112 = load ptr, ptr %17, align 8, !tbaa !5
  %113 = load ptr, ptr %18, align 8, !tbaa !5
  %114 = getelementptr inbounds double, ptr %113, i64 1
  %115 = call i32 @dlasd5_(ptr noundef %104, ptr noundef %106, ptr noundef %108, ptr noundef %110, ptr noundef %111, ptr noundef %112, ptr noundef %114)
  store i32 0, ptr %10, align 4
  store i32 1, ptr %62, align 4
  br label %3583

116:                                              ; preds = %99
  %117 = call double @dlamch_(ptr noundef @.str)
  store double %117, ptr %34, align 8, !tbaa !11
  %118 = load ptr, ptr %16, align 8, !tbaa !5
  %119 = load double, ptr %118, align 8, !tbaa !11
  %120 = fdiv double 1.000000e+00, %119
  store double %120, ptr %61, align 8, !tbaa !11
  %121 = load ptr, ptr %12, align 8, !tbaa !5
  %122 = load i64, ptr %121, align 8, !tbaa !9
  %123 = load ptr, ptr %11, align 8, !tbaa !5
  %124 = load i64, ptr %123, align 8, !tbaa !9
  %125 = icmp eq i64 %122, %124
  br i1 %125, label %126, label %1338

126:                                              ; preds = %116
  %127 = load ptr, ptr %11, align 8, !tbaa !5
  %128 = load i64, ptr %127, align 8, !tbaa !9
  %129 = sub nsw i64 %128, 1
  store i64 %129, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %51, align 8, !tbaa !9
  %130 = load ptr, ptr %16, align 8, !tbaa !5
  %131 = load double, ptr %130, align 8, !tbaa !11
  %132 = fdiv double %131, 2.000000e+00
  store double %132, ptr %42, align 8, !tbaa !11
  %133 = load double, ptr %42, align 8, !tbaa !11
  %134 = load ptr, ptr %13, align 8, !tbaa !5
  %135 = load ptr, ptr %11, align 8, !tbaa !5
  %136 = load i64, ptr %135, align 8, !tbaa !9
  %137 = getelementptr inbounds double, ptr %134, i64 %136
  %138 = load double, ptr %137, align 8, !tbaa !11
  %139 = load ptr, ptr %13, align 8, !tbaa !5
  %140 = load ptr, ptr %11, align 8, !tbaa !5
  %141 = load i64, ptr %140, align 8, !tbaa !9
  %142 = getelementptr inbounds double, ptr %139, i64 %141
  %143 = load double, ptr %142, align 8, !tbaa !11
  %144 = load ptr, ptr %13, align 8, !tbaa !5
  %145 = load ptr, ptr %11, align 8, !tbaa !5
  %146 = load i64, ptr %145, align 8, !tbaa !9
  %147 = getelementptr inbounds double, ptr %144, i64 %146
  %148 = load double, ptr %147, align 8, !tbaa !11
  %149 = load double, ptr %42, align 8, !tbaa !11
  %150 = call double @llvm.fmuladd.f64(double %143, double %148, double %149)
  %151 = call double @sqrt(double noundef %150) #5
  %152 = fadd double %138, %151
  %153 = fdiv double %133, %152
  store double %153, ptr %46, align 8, !tbaa !11
  %154 = load ptr, ptr %11, align 8, !tbaa !5
  %155 = load i64, ptr %154, align 8, !tbaa !9
  store i64 %155, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %25, align 8, !tbaa !9
  br label %156

156:                                              ; preds = %191, %126
  %157 = load i64, ptr %25, align 8, !tbaa !9
  %158 = load i64, ptr %20, align 8, !tbaa !9
  %159 = icmp sle i64 %157, %158
  br i1 %159, label %160, label %194

160:                                              ; preds = %156
  %161 = load ptr, ptr %13, align 8, !tbaa !5
  %162 = load i64, ptr %25, align 8, !tbaa !9
  %163 = getelementptr inbounds double, ptr %161, i64 %162
  %164 = load double, ptr %163, align 8, !tbaa !11
  %165 = load ptr, ptr %13, align 8, !tbaa !5
  %166 = load ptr, ptr %11, align 8, !tbaa !5
  %167 = load i64, ptr %166, align 8, !tbaa !9
  %168 = getelementptr inbounds double, ptr %165, i64 %167
  %169 = load double, ptr %168, align 8, !tbaa !11
  %170 = fadd double %164, %169
  %171 = load double, ptr %46, align 8, !tbaa !11
  %172 = fadd double %170, %171
  %173 = load ptr, ptr %18, align 8, !tbaa !5
  %174 = load i64, ptr %25, align 8, !tbaa !9
  %175 = getelementptr inbounds double, ptr %173, i64 %174
  store double %172, ptr %175, align 8, !tbaa !11
  %176 = load ptr, ptr %13, align 8, !tbaa !5
  %177 = load i64, ptr %25, align 8, !tbaa !9
  %178 = getelementptr inbounds double, ptr %176, i64 %177
  %179 = load double, ptr %178, align 8, !tbaa !11
  %180 = load ptr, ptr %13, align 8, !tbaa !5
  %181 = load ptr, ptr %11, align 8, !tbaa !5
  %182 = load i64, ptr %181, align 8, !tbaa !9
  %183 = getelementptr inbounds double, ptr %180, i64 %182
  %184 = load double, ptr %183, align 8, !tbaa !11
  %185 = fsub double %179, %184
  %186 = load double, ptr %46, align 8, !tbaa !11
  %187 = fsub double %185, %186
  %188 = load ptr, ptr %15, align 8, !tbaa !5
  %189 = load i64, ptr %25, align 8, !tbaa !9
  %190 = getelementptr inbounds double, ptr %188, i64 %189
  store double %187, ptr %190, align 8, !tbaa !11
  br label %191

191:                                              ; preds = %160
  %192 = load i64, ptr %25, align 8, !tbaa !9
  %193 = add nsw i64 %192, 1
  store i64 %193, ptr %25, align 8, !tbaa !9
  br label %156, !llvm.loop !13

194:                                              ; preds = %156
  store double 0.000000e+00, ptr %36, align 8, !tbaa !11
  %195 = load ptr, ptr %11, align 8, !tbaa !5
  %196 = load i64, ptr %195, align 8, !tbaa !9
  %197 = sub nsw i64 %196, 2
  store i64 %197, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %25, align 8, !tbaa !9
  br label %198

198:                                              ; preds = %224, %194
  %199 = load i64, ptr %25, align 8, !tbaa !9
  %200 = load i64, ptr %20, align 8, !tbaa !9
  %201 = icmp sle i64 %199, %200
  br i1 %201, label %202, label %227

202:                                              ; preds = %198
  %203 = load ptr, ptr %14, align 8, !tbaa !5
  %204 = load i64, ptr %25, align 8, !tbaa !9
  %205 = getelementptr inbounds double, ptr %203, i64 %204
  %206 = load double, ptr %205, align 8, !tbaa !11
  %207 = load ptr, ptr %14, align 8, !tbaa !5
  %208 = load i64, ptr %25, align 8, !tbaa !9
  %209 = getelementptr inbounds double, ptr %207, i64 %208
  %210 = load double, ptr %209, align 8, !tbaa !11
  %211 = fmul double %206, %210
  %212 = load ptr, ptr %15, align 8, !tbaa !5
  %213 = load i64, ptr %25, align 8, !tbaa !9
  %214 = getelementptr inbounds double, ptr %212, i64 %213
  %215 = load double, ptr %214, align 8, !tbaa !11
  %216 = load ptr, ptr %18, align 8, !tbaa !5
  %217 = load i64, ptr %25, align 8, !tbaa !9
  %218 = getelementptr inbounds double, ptr %216, i64 %217
  %219 = load double, ptr %218, align 8, !tbaa !11
  %220 = fmul double %215, %219
  %221 = fdiv double %211, %220
  %222 = load double, ptr %36, align 8, !tbaa !11
  %223 = fadd double %222, %221
  store double %223, ptr %36, align 8, !tbaa !11
  br label %224

224:                                              ; preds = %202
  %225 = load i64, ptr %25, align 8, !tbaa !9
  %226 = add nsw i64 %225, 1
  store i64 %226, ptr %25, align 8, !tbaa !9
  br label %198, !llvm.loop !15

227:                                              ; preds = %198
  %228 = load double, ptr %61, align 8, !tbaa !11
  %229 = load double, ptr %36, align 8, !tbaa !11
  %230 = fadd double %228, %229
  store double %230, ptr %24, align 8, !tbaa !11
  %231 = load double, ptr %24, align 8, !tbaa !11
  %232 = load ptr, ptr %14, align 8, !tbaa !5
  %233 = load i64, ptr %28, align 8, !tbaa !9
  %234 = getelementptr inbounds double, ptr %232, i64 %233
  %235 = load double, ptr %234, align 8, !tbaa !11
  %236 = load ptr, ptr %14, align 8, !tbaa !5
  %237 = load i64, ptr %28, align 8, !tbaa !9
  %238 = getelementptr inbounds double, ptr %236, i64 %237
  %239 = load double, ptr %238, align 8, !tbaa !11
  %240 = fmul double %235, %239
  %241 = load ptr, ptr %15, align 8, !tbaa !5
  %242 = load i64, ptr %28, align 8, !tbaa !9
  %243 = getelementptr inbounds double, ptr %241, i64 %242
  %244 = load double, ptr %243, align 8, !tbaa !11
  %245 = load ptr, ptr %18, align 8, !tbaa !5
  %246 = load i64, ptr %28, align 8, !tbaa !9
  %247 = getelementptr inbounds double, ptr %245, i64 %246
  %248 = load double, ptr %247, align 8, !tbaa !11
  %249 = fmul double %244, %248
  %250 = fdiv double %240, %249
  %251 = fadd double %231, %250
  %252 = load ptr, ptr %14, align 8, !tbaa !5
  %253 = load ptr, ptr %11, align 8, !tbaa !5
  %254 = load i64, ptr %253, align 8, !tbaa !9
  %255 = getelementptr inbounds double, ptr %252, i64 %254
  %256 = load double, ptr %255, align 8, !tbaa !11
  %257 = load ptr, ptr %14, align 8, !tbaa !5
  %258 = load ptr, ptr %11, align 8, !tbaa !5
  %259 = load i64, ptr %258, align 8, !tbaa !9
  %260 = getelementptr inbounds double, ptr %257, i64 %259
  %261 = load double, ptr %260, align 8, !tbaa !11
  %262 = fmul double %256, %261
  %263 = load ptr, ptr %15, align 8, !tbaa !5
  %264 = load ptr, ptr %11, align 8, !tbaa !5
  %265 = load i64, ptr %264, align 8, !tbaa !9
  %266 = getelementptr inbounds double, ptr %263, i64 %265
  %267 = load double, ptr %266, align 8, !tbaa !11
  %268 = load ptr, ptr %18, align 8, !tbaa !5
  %269 = load ptr, ptr %11, align 8, !tbaa !5
  %270 = load i64, ptr %269, align 8, !tbaa !9
  %271 = getelementptr inbounds double, ptr %268, i64 %270
  %272 = load double, ptr %271, align 8, !tbaa !11
  %273 = fmul double %267, %272
  %274 = fdiv double %262, %273
  %275 = fadd double %251, %274
  store double %275, ptr %26, align 8, !tbaa !11
  %276 = load double, ptr %26, align 8, !tbaa !11
  %277 = fcmp ole double %276, 0.000000e+00
  br i1 %277, label %278, label %459

278:                                              ; preds = %227
  %279 = load ptr, ptr %13, align 8, !tbaa !5
  %280 = load ptr, ptr %11, align 8, !tbaa !5
  %281 = load i64, ptr %280, align 8, !tbaa !9
  %282 = getelementptr inbounds double, ptr %279, i64 %281
  %283 = load double, ptr %282, align 8, !tbaa !11
  %284 = load ptr, ptr %13, align 8, !tbaa !5
  %285 = load ptr, ptr %11, align 8, !tbaa !5
  %286 = load i64, ptr %285, align 8, !tbaa !9
  %287 = getelementptr inbounds double, ptr %284, i64 %286
  %288 = load double, ptr %287, align 8, !tbaa !11
  %289 = load ptr, ptr %16, align 8, !tbaa !5
  %290 = load double, ptr %289, align 8, !tbaa !11
  %291 = call double @llvm.fmuladd.f64(double %283, double %288, double %290)
  %292 = call double @sqrt(double noundef %291) #5
  store double %292, ptr %46, align 8, !tbaa !11
  %293 = load ptr, ptr %14, align 8, !tbaa !5
  %294 = load ptr, ptr %11, align 8, !tbaa !5
  %295 = load i64, ptr %294, align 8, !tbaa !9
  %296 = sub nsw i64 %295, 1
  %297 = getelementptr inbounds double, ptr %293, i64 %296
  %298 = load double, ptr %297, align 8, !tbaa !11
  %299 = load ptr, ptr %14, align 8, !tbaa !5
  %300 = load ptr, ptr %11, align 8, !tbaa !5
  %301 = load i64, ptr %300, align 8, !tbaa !9
  %302 = sub nsw i64 %301, 1
  %303 = getelementptr inbounds double, ptr %299, i64 %302
  %304 = load double, ptr %303, align 8, !tbaa !11
  %305 = fmul double %298, %304
  %306 = load ptr, ptr %13, align 8, !tbaa !5
  %307 = load ptr, ptr %11, align 8, !tbaa !5
  %308 = load i64, ptr %307, align 8, !tbaa !9
  %309 = sub nsw i64 %308, 1
  %310 = getelementptr inbounds double, ptr %306, i64 %309
  %311 = load double, ptr %310, align 8, !tbaa !11
  %312 = load double, ptr %46, align 8, !tbaa !11
  %313 = fadd double %311, %312
  %314 = load ptr, ptr %13, align 8, !tbaa !5
  %315 = load ptr, ptr %11, align 8, !tbaa !5
  %316 = load i64, ptr %315, align 8, !tbaa !9
  %317 = getelementptr inbounds double, ptr %314, i64 %316
  %318 = load double, ptr %317, align 8, !tbaa !11
  %319 = load ptr, ptr %13, align 8, !tbaa !5
  %320 = load ptr, ptr %11, align 8, !tbaa !5
  %321 = load i64, ptr %320, align 8, !tbaa !9
  %322 = sub nsw i64 %321, 1
  %323 = getelementptr inbounds double, ptr %319, i64 %322
  %324 = load double, ptr %323, align 8, !tbaa !11
  %325 = fsub double %318, %324
  %326 = load ptr, ptr %16, align 8, !tbaa !5
  %327 = load double, ptr %326, align 8, !tbaa !11
  %328 = load ptr, ptr %13, align 8, !tbaa !5
  %329 = load ptr, ptr %11, align 8, !tbaa !5
  %330 = load i64, ptr %329, align 8, !tbaa !9
  %331 = getelementptr inbounds double, ptr %328, i64 %330
  %332 = load double, ptr %331, align 8, !tbaa !11
  %333 = load double, ptr %46, align 8, !tbaa !11
  %334 = fadd double %332, %333
  %335 = fdiv double %327, %334
  %336 = fadd double %325, %335
  %337 = fmul double %313, %336
  %338 = fdiv double %305, %337
  %339 = load ptr, ptr %14, align 8, !tbaa !5
  %340 = load ptr, ptr %11, align 8, !tbaa !5
  %341 = load i64, ptr %340, align 8, !tbaa !9
  %342 = getelementptr inbounds double, ptr %339, i64 %341
  %343 = load double, ptr %342, align 8, !tbaa !11
  %344 = load ptr, ptr %14, align 8, !tbaa !5
  %345 = load ptr, ptr %11, align 8, !tbaa !5
  %346 = load i64, ptr %345, align 8, !tbaa !9
  %347 = getelementptr inbounds double, ptr %344, i64 %346
  %348 = load double, ptr %347, align 8, !tbaa !11
  %349 = fmul double %343, %348
  %350 = load ptr, ptr %16, align 8, !tbaa !5
  %351 = load double, ptr %350, align 8, !tbaa !11
  %352 = fdiv double %349, %351
  %353 = fadd double %338, %352
  store double %353, ptr %42, align 8, !tbaa !11
  %354 = load double, ptr %24, align 8, !tbaa !11
  %355 = load double, ptr %42, align 8, !tbaa !11
  %356 = fcmp ole double %354, %355
  br i1 %356, label %357, label %360

357:                                              ; preds = %278
  %358 = load ptr, ptr %16, align 8, !tbaa !5
  %359 = load double, ptr %358, align 8, !tbaa !11
  store double %359, ptr %35, align 8, !tbaa !11
  br label %458

360:                                              ; preds = %278
  %361 = load ptr, ptr %13, align 8, !tbaa !5
  %362 = load ptr, ptr %11, align 8, !tbaa !5
  %363 = load i64, ptr %362, align 8, !tbaa !9
  %364 = getelementptr inbounds double, ptr %361, i64 %363
  %365 = load double, ptr %364, align 8, !tbaa !11
  %366 = load ptr, ptr %13, align 8, !tbaa !5
  %367 = load ptr, ptr %11, align 8, !tbaa !5
  %368 = load i64, ptr %367, align 8, !tbaa !9
  %369 = sub nsw i64 %368, 1
  %370 = getelementptr inbounds double, ptr %366, i64 %369
  %371 = load double, ptr %370, align 8, !tbaa !11
  %372 = fsub double %365, %371
  %373 = load ptr, ptr %13, align 8, !tbaa !5
  %374 = load ptr, ptr %11, align 8, !tbaa !5
  %375 = load i64, ptr %374, align 8, !tbaa !9
  %376 = getelementptr inbounds double, ptr %373, i64 %375
  %377 = load double, ptr %376, align 8, !tbaa !11
  %378 = load ptr, ptr %13, align 8, !tbaa !5
  %379 = load ptr, ptr %11, align 8, !tbaa !5
  %380 = load i64, ptr %379, align 8, !tbaa !9
  %381 = sub nsw i64 %380, 1
  %382 = getelementptr inbounds double, ptr %378, i64 %381
  %383 = load double, ptr %382, align 8, !tbaa !11
  %384 = fadd double %377, %383
  %385 = fmul double %372, %384
  store double %385, ptr %49, align 8, !tbaa !11
  %386 = load double, ptr %24, align 8, !tbaa !11
  %387 = fneg double %386
  %388 = load double, ptr %49, align 8, !tbaa !11
  %389 = load ptr, ptr %14, align 8, !tbaa !5
  %390 = load ptr, ptr %11, align 8, !tbaa !5
  %391 = load i64, ptr %390, align 8, !tbaa !9
  %392 = sub nsw i64 %391, 1
  %393 = getelementptr inbounds double, ptr %389, i64 %392
  %394 = load double, ptr %393, align 8, !tbaa !11
  %395 = load ptr, ptr %14, align 8, !tbaa !5
  %396 = load ptr, ptr %11, align 8, !tbaa !5
  %397 = load i64, ptr %396, align 8, !tbaa !9
  %398 = sub nsw i64 %397, 1
  %399 = getelementptr inbounds double, ptr %395, i64 %398
  %400 = load double, ptr %399, align 8, !tbaa !11
  %401 = fmul double %394, %400
  %402 = call double @llvm.fmuladd.f64(double %387, double %388, double %401)
  %403 = load ptr, ptr %14, align 8, !tbaa !5
  %404 = load ptr, ptr %11, align 8, !tbaa !5
  %405 = load i64, ptr %404, align 8, !tbaa !9
  %406 = getelementptr inbounds double, ptr %403, i64 %405
  %407 = load double, ptr %406, align 8, !tbaa !11
  %408 = load ptr, ptr %14, align 8, !tbaa !5
  %409 = load ptr, ptr %11, align 8, !tbaa !5
  %410 = load i64, ptr %409, align 8, !tbaa !9
  %411 = getelementptr inbounds double, ptr %408, i64 %410
  %412 = load double, ptr %411, align 8, !tbaa !11
  %413 = call double @llvm.fmuladd.f64(double %407, double %412, double %402)
  store double %413, ptr %22, align 8, !tbaa !11
  %414 = load ptr, ptr %14, align 8, !tbaa !5
  %415 = load ptr, ptr %11, align 8, !tbaa !5
  %416 = load i64, ptr %415, align 8, !tbaa !9
  %417 = getelementptr inbounds double, ptr %414, i64 %416
  %418 = load double, ptr %417, align 8, !tbaa !11
  %419 = load ptr, ptr %14, align 8, !tbaa !5
  %420 = load ptr, ptr %11, align 8, !tbaa !5
  %421 = load i64, ptr %420, align 8, !tbaa !9
  %422 = getelementptr inbounds double, ptr %419, i64 %421
  %423 = load double, ptr %422, align 8, !tbaa !11
  %424 = fmul double %418, %423
  %425 = load double, ptr %49, align 8, !tbaa !11
  %426 = fmul double %424, %425
  store double %426, ptr %23, align 8, !tbaa !11
  %427 = load double, ptr %22, align 8, !tbaa !11
  %428 = fcmp olt double %427, 0.000000e+00
  br i1 %428, label %429, label %443

429:                                              ; preds = %360
  %430 = load double, ptr %23, align 8, !tbaa !11
  %431 = fmul double %430, 2.000000e+00
  %432 = load double, ptr %22, align 8, !tbaa !11
  %433 = load double, ptr %22, align 8, !tbaa !11
  %434 = load double, ptr %23, align 8, !tbaa !11
  %435 = fmul double %434, 4.000000e+00
  %436 = load double, ptr %24, align 8, !tbaa !11
  %437 = fmul double %435, %436
  %438 = call double @llvm.fmuladd.f64(double %432, double %433, double %437)
  %439 = call double @sqrt(double noundef %438) #5
  %440 = load double, ptr %22, align 8, !tbaa !11
  %441 = fsub double %439, %440
  %442 = fdiv double %431, %441
  store double %442, ptr %35, align 8, !tbaa !11
  br label %457

443:                                              ; preds = %360
  %444 = load double, ptr %22, align 8, !tbaa !11
  %445 = load double, ptr %22, align 8, !tbaa !11
  %446 = load double, ptr %22, align 8, !tbaa !11
  %447 = load double, ptr %23, align 8, !tbaa !11
  %448 = fmul double %447, 4.000000e+00
  %449 = load double, ptr %24, align 8, !tbaa !11
  %450 = fmul double %448, %449
  %451 = call double @llvm.fmuladd.f64(double %445, double %446, double %450)
  %452 = call double @sqrt(double noundef %451) #5
  %453 = fadd double %444, %452
  %454 = load double, ptr %24, align 8, !tbaa !11
  %455 = fmul double %454, 2.000000e+00
  %456 = fdiv double %453, %455
  store double %456, ptr %35, align 8, !tbaa !11
  br label %457

457:                                              ; preds = %443, %429
  br label %458

458:                                              ; preds = %457, %357
  br label %557

459:                                              ; preds = %227
  %460 = load ptr, ptr %13, align 8, !tbaa !5
  %461 = load ptr, ptr %11, align 8, !tbaa !5
  %462 = load i64, ptr %461, align 8, !tbaa !9
  %463 = getelementptr inbounds double, ptr %460, i64 %462
  %464 = load double, ptr %463, align 8, !tbaa !11
  %465 = load ptr, ptr %13, align 8, !tbaa !5
  %466 = load ptr, ptr %11, align 8, !tbaa !5
  %467 = load i64, ptr %466, align 8, !tbaa !9
  %468 = sub nsw i64 %467, 1
  %469 = getelementptr inbounds double, ptr %465, i64 %468
  %470 = load double, ptr %469, align 8, !tbaa !11
  %471 = fsub double %464, %470
  %472 = load ptr, ptr %13, align 8, !tbaa !5
  %473 = load ptr, ptr %11, align 8, !tbaa !5
  %474 = load i64, ptr %473, align 8, !tbaa !9
  %475 = getelementptr inbounds double, ptr %472, i64 %474
  %476 = load double, ptr %475, align 8, !tbaa !11
  %477 = load ptr, ptr %13, align 8, !tbaa !5
  %478 = load ptr, ptr %11, align 8, !tbaa !5
  %479 = load i64, ptr %478, align 8, !tbaa !9
  %480 = sub nsw i64 %479, 1
  %481 = getelementptr inbounds double, ptr %477, i64 %480
  %482 = load double, ptr %481, align 8, !tbaa !11
  %483 = fadd double %476, %482
  %484 = fmul double %471, %483
  store double %484, ptr %49, align 8, !tbaa !11
  %485 = load double, ptr %24, align 8, !tbaa !11
  %486 = fneg double %485
  %487 = load double, ptr %49, align 8, !tbaa !11
  %488 = load ptr, ptr %14, align 8, !tbaa !5
  %489 = load ptr, ptr %11, align 8, !tbaa !5
  %490 = load i64, ptr %489, align 8, !tbaa !9
  %491 = sub nsw i64 %490, 1
  %492 = getelementptr inbounds double, ptr %488, i64 %491
  %493 = load double, ptr %492, align 8, !tbaa !11
  %494 = load ptr, ptr %14, align 8, !tbaa !5
  %495 = load ptr, ptr %11, align 8, !tbaa !5
  %496 = load i64, ptr %495, align 8, !tbaa !9
  %497 = sub nsw i64 %496, 1
  %498 = getelementptr inbounds double, ptr %494, i64 %497
  %499 = load double, ptr %498, align 8, !tbaa !11
  %500 = fmul double %493, %499
  %501 = call double @llvm.fmuladd.f64(double %486, double %487, double %500)
  %502 = load ptr, ptr %14, align 8, !tbaa !5
  %503 = load ptr, ptr %11, align 8, !tbaa !5
  %504 = load i64, ptr %503, align 8, !tbaa !9
  %505 = getelementptr inbounds double, ptr %502, i64 %504
  %506 = load double, ptr %505, align 8, !tbaa !11
  %507 = load ptr, ptr %14, align 8, !tbaa !5
  %508 = load ptr, ptr %11, align 8, !tbaa !5
  %509 = load i64, ptr %508, align 8, !tbaa !9
  %510 = getelementptr inbounds double, ptr %507, i64 %509
  %511 = load double, ptr %510, align 8, !tbaa !11
  %512 = call double @llvm.fmuladd.f64(double %506, double %511, double %501)
  store double %512, ptr %22, align 8, !tbaa !11
  %513 = load ptr, ptr %14, align 8, !tbaa !5
  %514 = load ptr, ptr %11, align 8, !tbaa !5
  %515 = load i64, ptr %514, align 8, !tbaa !9
  %516 = getelementptr inbounds double, ptr %513, i64 %515
  %517 = load double, ptr %516, align 8, !tbaa !11
  %518 = load ptr, ptr %14, align 8, !tbaa !5
  %519 = load ptr, ptr %11, align 8, !tbaa !5
  %520 = load i64, ptr %519, align 8, !tbaa !9
  %521 = getelementptr inbounds double, ptr %518, i64 %520
  %522 = load double, ptr %521, align 8, !tbaa !11
  %523 = fmul double %517, %522
  %524 = load double, ptr %49, align 8, !tbaa !11
  %525 = fmul double %523, %524
  store double %525, ptr %23, align 8, !tbaa !11
  %526 = load double, ptr %22, align 8, !tbaa !11
  %527 = fcmp olt double %526, 0.000000e+00
  br i1 %527, label %528, label %542

528:                                              ; preds = %459
  %529 = load double, ptr %23, align 8, !tbaa !11
  %530 = fmul double %529, 2.000000e+00
  %531 = load double, ptr %22, align 8, !tbaa !11
  %532 = load double, ptr %22, align 8, !tbaa !11
  %533 = load double, ptr %23, align 8, !tbaa !11
  %534 = fmul double %533, 4.000000e+00
  %535 = load double, ptr %24, align 8, !tbaa !11
  %536 = fmul double %534, %535
  %537 = call double @llvm.fmuladd.f64(double %531, double %532, double %536)
  %538 = call double @sqrt(double noundef %537) #5
  %539 = load double, ptr %22, align 8, !tbaa !11
  %540 = fsub double %538, %539
  %541 = fdiv double %530, %540
  store double %541, ptr %35, align 8, !tbaa !11
  br label %556

542:                                              ; preds = %459
  %543 = load double, ptr %22, align 8, !tbaa !11
  %544 = load double, ptr %22, align 8, !tbaa !11
  %545 = load double, ptr %22, align 8, !tbaa !11
  %546 = load double, ptr %23, align 8, !tbaa !11
  %547 = fmul double %546, 4.000000e+00
  %548 = load double, ptr %24, align 8, !tbaa !11
  %549 = fmul double %547, %548
  %550 = call double @llvm.fmuladd.f64(double %544, double %545, double %549)
  %551 = call double @sqrt(double noundef %550) #5
  %552 = fadd double %543, %551
  %553 = load double, ptr %24, align 8, !tbaa !11
  %554 = fmul double %553, 2.000000e+00
  %555 = fdiv double %552, %554
  store double %555, ptr %35, align 8, !tbaa !11
  br label %556

556:                                              ; preds = %542, %528
  br label %557

557:                                              ; preds = %556, %458
  %558 = load double, ptr %35, align 8, !tbaa !11
  %559 = load ptr, ptr %13, align 8, !tbaa !5
  %560 = load ptr, ptr %11, align 8, !tbaa !5
  %561 = load i64, ptr %560, align 8, !tbaa !9
  %562 = getelementptr inbounds double, ptr %559, i64 %561
  %563 = load double, ptr %562, align 8, !tbaa !11
  %564 = load ptr, ptr %13, align 8, !tbaa !5
  %565 = load ptr, ptr %11, align 8, !tbaa !5
  %566 = load i64, ptr %565, align 8, !tbaa !9
  %567 = getelementptr inbounds double, ptr %564, i64 %566
  %568 = load double, ptr %567, align 8, !tbaa !11
  %569 = load ptr, ptr %13, align 8, !tbaa !5
  %570 = load ptr, ptr %11, align 8, !tbaa !5
  %571 = load i64, ptr %570, align 8, !tbaa !9
  %572 = getelementptr inbounds double, ptr %569, i64 %571
  %573 = load double, ptr %572, align 8, !tbaa !11
  %574 = load double, ptr %35, align 8, !tbaa !11
  %575 = call double @llvm.fmuladd.f64(double %568, double %573, double %574)
  %576 = call double @sqrt(double noundef %575) #5
  %577 = fadd double %563, %576
  %578 = fdiv double %558, %577
  store double %578, ptr %32, align 8, !tbaa !11
  %579 = load ptr, ptr %13, align 8, !tbaa !5
  %580 = load ptr, ptr %11, align 8, !tbaa !5
  %581 = load i64, ptr %580, align 8, !tbaa !9
  %582 = getelementptr inbounds double, ptr %579, i64 %581
  %583 = load double, ptr %582, align 8, !tbaa !11
  %584 = load double, ptr %32, align 8, !tbaa !11
  %585 = fadd double %583, %584
  %586 = load ptr, ptr %17, align 8, !tbaa !5
  store double %585, ptr %586, align 8, !tbaa !11
  %587 = load ptr, ptr %11, align 8, !tbaa !5
  %588 = load i64, ptr %587, align 8, !tbaa !9
  store i64 %588, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %25, align 8, !tbaa !9
  br label %589

589:                                              ; preds = %624, %557
  %590 = load i64, ptr %25, align 8, !tbaa !9
  %591 = load i64, ptr %20, align 8, !tbaa !9
  %592 = icmp sle i64 %590, %591
  br i1 %592, label %593, label %627

593:                                              ; preds = %589
  %594 = load ptr, ptr %13, align 8, !tbaa !5
  %595 = load i64, ptr %25, align 8, !tbaa !9
  %596 = getelementptr inbounds double, ptr %594, i64 %595
  %597 = load double, ptr %596, align 8, !tbaa !11
  %598 = load ptr, ptr %13, align 8, !tbaa !5
  %599 = load ptr, ptr %12, align 8, !tbaa !5
  %600 = load i64, ptr %599, align 8, !tbaa !9
  %601 = getelementptr inbounds double, ptr %598, i64 %600
  %602 = load double, ptr %601, align 8, !tbaa !11
  %603 = fsub double %597, %602
  %604 = load double, ptr %32, align 8, !tbaa !11
  %605 = fsub double %603, %604
  %606 = load ptr, ptr %15, align 8, !tbaa !5
  %607 = load i64, ptr %25, align 8, !tbaa !9
  %608 = getelementptr inbounds double, ptr %606, i64 %607
  store double %605, ptr %608, align 8, !tbaa !11
  %609 = load ptr, ptr %13, align 8, !tbaa !5
  %610 = load i64, ptr %25, align 8, !tbaa !9
  %611 = getelementptr inbounds double, ptr %609, i64 %610
  %612 = load double, ptr %611, align 8, !tbaa !11
  %613 = load ptr, ptr %13, align 8, !tbaa !5
  %614 = load ptr, ptr %12, align 8, !tbaa !5
  %615 = load i64, ptr %614, align 8, !tbaa !9
  %616 = getelementptr inbounds double, ptr %613, i64 %615
  %617 = load double, ptr %616, align 8, !tbaa !11
  %618 = fadd double %612, %617
  %619 = load double, ptr %32, align 8, !tbaa !11
  %620 = fadd double %618, %619
  %621 = load ptr, ptr %18, align 8, !tbaa !5
  %622 = load i64, ptr %25, align 8, !tbaa !9
  %623 = getelementptr inbounds double, ptr %621, i64 %622
  store double %620, ptr %623, align 8, !tbaa !11
  br label %624

624:                                              ; preds = %593
  %625 = load i64, ptr %25, align 8, !tbaa !9
  %626 = add nsw i64 %625, 1
  store i64 %626, ptr %25, align 8, !tbaa !9
  br label %589, !llvm.loop !16

627:                                              ; preds = %589
  store double 0.000000e+00, ptr %40, align 8, !tbaa !11
  store double 0.000000e+00, ptr %36, align 8, !tbaa !11
  store double 0.000000e+00, ptr %59, align 8, !tbaa !11
  %628 = load i64, ptr %28, align 8, !tbaa !9
  store i64 %628, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %25, align 8, !tbaa !9
  br label %629

629:                                              ; preds = %662, %627
  %630 = load i64, ptr %25, align 8, !tbaa !9
  %631 = load i64, ptr %20, align 8, !tbaa !9
  %632 = icmp sle i64 %630, %631
  br i1 %632, label %633, label %665

633:                                              ; preds = %629
  %634 = load ptr, ptr %14, align 8, !tbaa !5
  %635 = load i64, ptr %25, align 8, !tbaa !9
  %636 = getelementptr inbounds double, ptr %634, i64 %635
  %637 = load double, ptr %636, align 8, !tbaa !11
  %638 = load ptr, ptr %15, align 8, !tbaa !5
  %639 = load i64, ptr %25, align 8, !tbaa !9
  %640 = getelementptr inbounds double, ptr %638, i64 %639
  %641 = load double, ptr %640, align 8, !tbaa !11
  %642 = load ptr, ptr %18, align 8, !tbaa !5
  %643 = load i64, ptr %25, align 8, !tbaa !9
  %644 = getelementptr inbounds double, ptr %642, i64 %643
  %645 = load double, ptr %644, align 8, !tbaa !11
  %646 = fmul double %641, %645
  %647 = fdiv double %637, %646
  store double %647, ptr %42, align 8, !tbaa !11
  %648 = load ptr, ptr %14, align 8, !tbaa !5
  %649 = load i64, ptr %25, align 8, !tbaa !9
  %650 = getelementptr inbounds double, ptr %648, i64 %649
  %651 = load double, ptr %650, align 8, !tbaa !11
  %652 = load double, ptr %42, align 8, !tbaa !11
  %653 = load double, ptr %36, align 8, !tbaa !11
  %654 = call double @llvm.fmuladd.f64(double %651, double %652, double %653)
  store double %654, ptr %36, align 8, !tbaa !11
  %655 = load double, ptr %42, align 8, !tbaa !11
  %656 = load double, ptr %42, align 8, !tbaa !11
  %657 = load double, ptr %40, align 8, !tbaa !11
  %658 = call double @llvm.fmuladd.f64(double %655, double %656, double %657)
  store double %658, ptr %40, align 8, !tbaa !11
  %659 = load double, ptr %36, align 8, !tbaa !11
  %660 = load double, ptr %59, align 8, !tbaa !11
  %661 = fadd double %660, %659
  store double %661, ptr %59, align 8, !tbaa !11
  br label %662

662:                                              ; preds = %633
  %663 = load i64, ptr %25, align 8, !tbaa !9
  %664 = add nsw i64 %663, 1
  store i64 %664, ptr %25, align 8, !tbaa !9
  br label %629, !llvm.loop !17

665:                                              ; preds = %629
  %666 = load double, ptr %59, align 8, !tbaa !11
  %667 = fcmp oge double %666, 0.000000e+00
  br i1 %667, label %668, label %670

668:                                              ; preds = %665
  %669 = load double, ptr %59, align 8, !tbaa !11
  br label %673

670:                                              ; preds = %665
  %671 = load double, ptr %59, align 8, !tbaa !11
  %672 = fneg double %671
  br label %673

673:                                              ; preds = %670, %668
  %674 = phi double [ %669, %668 ], [ %672, %670 ]
  store double %674, ptr %59, align 8, !tbaa !11
  %675 = load ptr, ptr %14, align 8, !tbaa !5
  %676 = load ptr, ptr %11, align 8, !tbaa !5
  %677 = load i64, ptr %676, align 8, !tbaa !9
  %678 = getelementptr inbounds double, ptr %675, i64 %677
  %679 = load double, ptr %678, align 8, !tbaa !11
  %680 = load ptr, ptr %15, align 8, !tbaa !5
  %681 = load ptr, ptr %11, align 8, !tbaa !5
  %682 = load i64, ptr %681, align 8, !tbaa !9
  %683 = getelementptr inbounds double, ptr %680, i64 %682
  %684 = load double, ptr %683, align 8, !tbaa !11
  %685 = load ptr, ptr %18, align 8, !tbaa !5
  %686 = load ptr, ptr %11, align 8, !tbaa !5
  %687 = load i64, ptr %686, align 8, !tbaa !9
  %688 = getelementptr inbounds double, ptr %685, i64 %687
  %689 = load double, ptr %688, align 8, !tbaa !11
  %690 = fmul double %684, %689
  %691 = fdiv double %679, %690
  store double %691, ptr %42, align 8, !tbaa !11
  %692 = load ptr, ptr %14, align 8, !tbaa !5
  %693 = load ptr, ptr %11, align 8, !tbaa !5
  %694 = load i64, ptr %693, align 8, !tbaa !9
  %695 = getelementptr inbounds double, ptr %692, i64 %694
  %696 = load double, ptr %695, align 8, !tbaa !11
  %697 = load double, ptr %42, align 8, !tbaa !11
  %698 = fmul double %696, %697
  store double %698, ptr %33, align 8, !tbaa !11
  %699 = load double, ptr %42, align 8, !tbaa !11
  %700 = load double, ptr %42, align 8, !tbaa !11
  %701 = fmul double %699, %700
  store double %701, ptr %39, align 8, !tbaa !11
  %702 = load double, ptr %33, align 8, !tbaa !11
  %703 = fneg double %702
  %704 = load double, ptr %36, align 8, !tbaa !11
  %705 = fsub double %703, %704
  %706 = load double, ptr %59, align 8, !tbaa !11
  %707 = call double @llvm.fmuladd.f64(double %705, double 8.000000e+00, double %706)
  %708 = load double, ptr %33, align 8, !tbaa !11
  %709 = fsub double %707, %708
  %710 = load double, ptr %61, align 8, !tbaa !11
  %711 = fadd double %709, %710
  %712 = load double, ptr %35, align 8, !tbaa !11
  %713 = fcmp oge double %712, 0.000000e+00
  br i1 %713, label %714, label %716

714:                                              ; preds = %673
  %715 = load double, ptr %35, align 8, !tbaa !11
  br label %719

716:                                              ; preds = %673
  %717 = load double, ptr %35, align 8, !tbaa !11
  %718 = fneg double %717
  br label %719

719:                                              ; preds = %716, %714
  %720 = phi double [ %715, %714 ], [ %718, %716 ]
  %721 = load double, ptr %40, align 8, !tbaa !11
  %722 = load double, ptr %39, align 8, !tbaa !11
  %723 = fadd double %721, %722
  %724 = call double @llvm.fmuladd.f64(double %720, double %723, double %711)
  store double %724, ptr %59, align 8, !tbaa !11
  %725 = load double, ptr %61, align 8, !tbaa !11
  %726 = load double, ptr %33, align 8, !tbaa !11
  %727 = fadd double %725, %726
  %728 = load double, ptr %36, align 8, !tbaa !11
  %729 = fadd double %727, %728
  store double %729, ptr %26, align 8, !tbaa !11
  %730 = load double, ptr %26, align 8, !tbaa !11
  %731 = fcmp oge double %730, 0.000000e+00
  br i1 %731, label %732, label %734

732:                                              ; preds = %719
  %733 = load double, ptr %26, align 8, !tbaa !11
  br label %737

734:                                              ; preds = %719
  %735 = load double, ptr %26, align 8, !tbaa !11
  %736 = fneg double %735
  br label %737

737:                                              ; preds = %734, %732
  %738 = phi double [ %733, %732 ], [ %736, %734 ]
  %739 = load double, ptr %34, align 8, !tbaa !11
  %740 = load double, ptr %59, align 8, !tbaa !11
  %741 = fmul double %739, %740
  %742 = fcmp ole double %738, %741
  br i1 %742, label %743, label %744

743:                                              ; preds = %737
  br label %3582

744:                                              ; preds = %737
  %745 = load i64, ptr %51, align 8, !tbaa !9
  %746 = add nsw i64 %745, 1
  store i64 %746, ptr %51, align 8, !tbaa !9
  %747 = load ptr, ptr %18, align 8, !tbaa !5
  %748 = load ptr, ptr %11, align 8, !tbaa !5
  %749 = load i64, ptr %748, align 8, !tbaa !9
  %750 = sub nsw i64 %749, 1
  %751 = getelementptr inbounds double, ptr %747, i64 %750
  %752 = load double, ptr %751, align 8, !tbaa !11
  %753 = load ptr, ptr %15, align 8, !tbaa !5
  %754 = load ptr, ptr %11, align 8, !tbaa !5
  %755 = load i64, ptr %754, align 8, !tbaa !9
  %756 = sub nsw i64 %755, 1
  %757 = getelementptr inbounds double, ptr %753, i64 %756
  %758 = load double, ptr %757, align 8, !tbaa !11
  %759 = fmul double %752, %758
  store double %759, ptr %56, align 8, !tbaa !11
  %760 = load ptr, ptr %18, align 8, !tbaa !5
  %761 = load ptr, ptr %11, align 8, !tbaa !5
  %762 = load i64, ptr %761, align 8, !tbaa !9
  %763 = getelementptr inbounds double, ptr %760, i64 %762
  %764 = load double, ptr %763, align 8, !tbaa !11
  %765 = load ptr, ptr %15, align 8, !tbaa !5
  %766 = load ptr, ptr %11, align 8, !tbaa !5
  %767 = load i64, ptr %766, align 8, !tbaa !9
  %768 = getelementptr inbounds double, ptr %765, i64 %767
  %769 = load double, ptr %768, align 8, !tbaa !11
  %770 = fmul double %764, %769
  store double %770, ptr %54, align 8, !tbaa !11
  %771 = load double, ptr %26, align 8, !tbaa !11
  %772 = load double, ptr %56, align 8, !tbaa !11
  %773 = load double, ptr %40, align 8, !tbaa !11
  %774 = fneg double %772
  %775 = call double @llvm.fmuladd.f64(double %774, double %773, double %771)
  %776 = load double, ptr %54, align 8, !tbaa !11
  %777 = load double, ptr %39, align 8, !tbaa !11
  %778 = fneg double %776
  %779 = call double @llvm.fmuladd.f64(double %778, double %777, double %775)
  store double %779, ptr %24, align 8, !tbaa !11
  %780 = load double, ptr %54, align 8, !tbaa !11
  %781 = load double, ptr %56, align 8, !tbaa !11
  %782 = fadd double %780, %781
  %783 = load double, ptr %26, align 8, !tbaa !11
  %784 = load double, ptr %54, align 8, !tbaa !11
  %785 = load double, ptr %56, align 8, !tbaa !11
  %786 = fmul double %784, %785
  %787 = load double, ptr %40, align 8, !tbaa !11
  %788 = load double, ptr %39, align 8, !tbaa !11
  %789 = fadd double %787, %788
  %790 = fmul double %786, %789
  %791 = fneg double %790
  %792 = call double @llvm.fmuladd.f64(double %782, double %783, double %791)
  store double %792, ptr %22, align 8, !tbaa !11
  %793 = load double, ptr %54, align 8, !tbaa !11
  %794 = load double, ptr %56, align 8, !tbaa !11
  %795 = fmul double %793, %794
  %796 = load double, ptr %26, align 8, !tbaa !11
  %797 = fmul double %795, %796
  store double %797, ptr %23, align 8, !tbaa !11
  %798 = load double, ptr %24, align 8, !tbaa !11
  %799 = fcmp olt double %798, 0.000000e+00
  br i1 %799, label %800, label %810

800:                                              ; preds = %744
  %801 = load double, ptr %24, align 8, !tbaa !11
  %802 = fcmp oge double %801, 0.000000e+00
  br i1 %802, label %803, label %805

803:                                              ; preds = %800
  %804 = load double, ptr %24, align 8, !tbaa !11
  br label %808

805:                                              ; preds = %800
  %806 = load double, ptr %24, align 8, !tbaa !11
  %807 = fneg double %806
  br label %808

808:                                              ; preds = %805, %803
  %809 = phi double [ %804, %803 ], [ %807, %805 ]
  store double %809, ptr %24, align 8, !tbaa !11
  br label %810

810:                                              ; preds = %808, %744
  %811 = load double, ptr %24, align 8, !tbaa !11
  %812 = fcmp oeq double %811, 0.000000e+00
  br i1 %812, label %813, label %822

813:                                              ; preds = %810
  %814 = load ptr, ptr %16, align 8, !tbaa !5
  %815 = load double, ptr %814, align 8, !tbaa !11
  %816 = load ptr, ptr %17, align 8, !tbaa !5
  %817 = load double, ptr %816, align 8, !tbaa !11
  %818 = load ptr, ptr %17, align 8, !tbaa !5
  %819 = load double, ptr %818, align 8, !tbaa !11
  %820 = fneg double %817
  %821 = call double @llvm.fmuladd.f64(double %820, double %819, double %815)
  store double %821, ptr %32, align 8, !tbaa !11
  br label %874

822:                                              ; preds = %810
  %823 = load double, ptr %22, align 8, !tbaa !11
  %824 = fcmp oge double %823, 0.000000e+00
  br i1 %824, label %825, label %849

825:                                              ; preds = %822
  %826 = load double, ptr %22, align 8, !tbaa !11
  %827 = load double, ptr %22, align 8, !tbaa !11
  %828 = load double, ptr %22, align 8, !tbaa !11
  %829 = load double, ptr %23, align 8, !tbaa !11
  %830 = fmul double %829, 4.000000e+00
  %831 = load double, ptr %24, align 8, !tbaa !11
  %832 = fmul double %830, %831
  %833 = fneg double %832
  %834 = call double @llvm.fmuladd.f64(double %827, double %828, double %833)
  store double %834, ptr %21, align 8, !tbaa !11
  %835 = load double, ptr %21, align 8, !tbaa !11
  %836 = fcmp oge double %835, 0.000000e+00
  br i1 %836, label %837, label %839

837:                                              ; preds = %825
  %838 = load double, ptr %21, align 8, !tbaa !11
  br label %842

839:                                              ; preds = %825
  %840 = load double, ptr %21, align 8, !tbaa !11
  %841 = fneg double %840
  br label %842

842:                                              ; preds = %839, %837
  %843 = phi double [ %838, %837 ], [ %841, %839 ]
  %844 = call double @sqrt(double noundef %843) #5
  %845 = fadd double %826, %844
  %846 = load double, ptr %24, align 8, !tbaa !11
  %847 = fmul double %846, 2.000000e+00
  %848 = fdiv double %845, %847
  store double %848, ptr %32, align 8, !tbaa !11
  br label %873

849:                                              ; preds = %822
  %850 = load double, ptr %23, align 8, !tbaa !11
  %851 = fmul double %850, 2.000000e+00
  %852 = load double, ptr %22, align 8, !tbaa !11
  %853 = load double, ptr %22, align 8, !tbaa !11
  %854 = load double, ptr %22, align 8, !tbaa !11
  %855 = load double, ptr %23, align 8, !tbaa !11
  %856 = fmul double %855, 4.000000e+00
  %857 = load double, ptr %24, align 8, !tbaa !11
  %858 = fmul double %856, %857
  %859 = fneg double %858
  %860 = call double @llvm.fmuladd.f64(double %853, double %854, double %859)
  store double %860, ptr %21, align 8, !tbaa !11
  %861 = load double, ptr %21, align 8, !tbaa !11
  %862 = fcmp oge double %861, 0.000000e+00
  br i1 %862, label %863, label %865

863:                                              ; preds = %849
  %864 = load double, ptr %21, align 8, !tbaa !11
  br label %868

865:                                              ; preds = %849
  %866 = load double, ptr %21, align 8, !tbaa !11
  %867 = fneg double %866
  br label %868

868:                                              ; preds = %865, %863
  %869 = phi double [ %864, %863 ], [ %867, %865 ]
  %870 = call double @sqrt(double noundef %869) #5
  %871 = fsub double %852, %870
  %872 = fdiv double %851, %871
  store double %872, ptr %32, align 8, !tbaa !11
  br label %873

873:                                              ; preds = %868, %842
  br label %874

874:                                              ; preds = %873, %813
  %875 = load double, ptr %26, align 8, !tbaa !11
  %876 = load double, ptr %32, align 8, !tbaa !11
  %877 = fmul double %875, %876
  %878 = fcmp ogt double %877, 0.000000e+00
  br i1 %878, label %879, label %886

879:                                              ; preds = %874
  %880 = load double, ptr %26, align 8, !tbaa !11
  %881 = fneg double %880
  %882 = load double, ptr %40, align 8, !tbaa !11
  %883 = load double, ptr %39, align 8, !tbaa !11
  %884 = fadd double %882, %883
  %885 = fdiv double %881, %884
  store double %885, ptr %32, align 8, !tbaa !11
  br label %886

886:                                              ; preds = %879, %874
  %887 = load double, ptr %32, align 8, !tbaa !11
  %888 = load double, ptr %54, align 8, !tbaa !11
  %889 = fsub double %887, %888
  store double %889, ptr %42, align 8, !tbaa !11
  %890 = load double, ptr %42, align 8, !tbaa !11
  %891 = load ptr, ptr %16, align 8, !tbaa !5
  %892 = load double, ptr %891, align 8, !tbaa !11
  %893 = fcmp ogt double %890, %892
  br i1 %893, label %894, label %899

894:                                              ; preds = %886
  %895 = load ptr, ptr %16, align 8, !tbaa !5
  %896 = load double, ptr %895, align 8, !tbaa !11
  %897 = load double, ptr %54, align 8, !tbaa !11
  %898 = fadd double %896, %897
  store double %898, ptr %32, align 8, !tbaa !11
  br label %899

899:                                              ; preds = %894, %886
  %900 = load double, ptr %32, align 8, !tbaa !11
  %901 = load double, ptr %35, align 8, !tbaa !11
  %902 = fadd double %901, %900
  store double %902, ptr %35, align 8, !tbaa !11
  %903 = load ptr, ptr %17, align 8, !tbaa !5
  %904 = load double, ptr %903, align 8, !tbaa !11
  %905 = load double, ptr %32, align 8, !tbaa !11
  %906 = load ptr, ptr %17, align 8, !tbaa !5
  %907 = load double, ptr %906, align 8, !tbaa !11
  %908 = load ptr, ptr %17, align 8, !tbaa !5
  %909 = load double, ptr %908, align 8, !tbaa !11
  %910 = call double @llvm.fmuladd.f64(double %907, double %909, double %905)
  %911 = call double @sqrt(double noundef %910) #5
  %912 = fadd double %904, %911
  %913 = load double, ptr %32, align 8, !tbaa !11
  %914 = fdiv double %913, %912
  store double %914, ptr %32, align 8, !tbaa !11
  %915 = load ptr, ptr %11, align 8, !tbaa !5
  %916 = load i64, ptr %915, align 8, !tbaa !9
  store i64 %916, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %25, align 8, !tbaa !9
  br label %917

917:                                              ; preds = %934, %899
  %918 = load i64, ptr %25, align 8, !tbaa !9
  %919 = load i64, ptr %20, align 8, !tbaa !9
  %920 = icmp sle i64 %918, %919
  br i1 %920, label %921, label %937

921:                                              ; preds = %917
  %922 = load double, ptr %32, align 8, !tbaa !11
  %923 = load ptr, ptr %15, align 8, !tbaa !5
  %924 = load i64, ptr %25, align 8, !tbaa !9
  %925 = getelementptr inbounds double, ptr %923, i64 %924
  %926 = load double, ptr %925, align 8, !tbaa !11
  %927 = fsub double %926, %922
  store double %927, ptr %925, align 8, !tbaa !11
  %928 = load double, ptr %32, align 8, !tbaa !11
  %929 = load ptr, ptr %18, align 8, !tbaa !5
  %930 = load i64, ptr %25, align 8, !tbaa !9
  %931 = getelementptr inbounds double, ptr %929, i64 %930
  %932 = load double, ptr %931, align 8, !tbaa !11
  %933 = fadd double %932, %928
  store double %933, ptr %931, align 8, !tbaa !11
  br label %934

934:                                              ; preds = %921
  %935 = load i64, ptr %25, align 8, !tbaa !9
  %936 = add nsw i64 %935, 1
  store i64 %936, ptr %25, align 8, !tbaa !9
  br label %917, !llvm.loop !18

937:                                              ; preds = %917
  %938 = load double, ptr %32, align 8, !tbaa !11
  %939 = load ptr, ptr %17, align 8, !tbaa !5
  %940 = load double, ptr %939, align 8, !tbaa !11
  %941 = fadd double %940, %938
  store double %941, ptr %939, align 8, !tbaa !11
  store double 0.000000e+00, ptr %40, align 8, !tbaa !11
  store double 0.000000e+00, ptr %36, align 8, !tbaa !11
  store double 0.000000e+00, ptr %59, align 8, !tbaa !11
  %942 = load i64, ptr %28, align 8, !tbaa !9
  store i64 %942, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %25, align 8, !tbaa !9
  br label %943

943:                                              ; preds = %976, %937
  %944 = load i64, ptr %25, align 8, !tbaa !9
  %945 = load i64, ptr %20, align 8, !tbaa !9
  %946 = icmp sle i64 %944, %945
  br i1 %946, label %947, label %979

947:                                              ; preds = %943
  %948 = load ptr, ptr %14, align 8, !tbaa !5
  %949 = load i64, ptr %25, align 8, !tbaa !9
  %950 = getelementptr inbounds double, ptr %948, i64 %949
  %951 = load double, ptr %950, align 8, !tbaa !11
  %952 = load ptr, ptr %18, align 8, !tbaa !5
  %953 = load i64, ptr %25, align 8, !tbaa !9
  %954 = getelementptr inbounds double, ptr %952, i64 %953
  %955 = load double, ptr %954, align 8, !tbaa !11
  %956 = load ptr, ptr %15, align 8, !tbaa !5
  %957 = load i64, ptr %25, align 8, !tbaa !9
  %958 = getelementptr inbounds double, ptr %956, i64 %957
  %959 = load double, ptr %958, align 8, !tbaa !11
  %960 = fmul double %955, %959
  %961 = fdiv double %951, %960
  store double %961, ptr %42, align 8, !tbaa !11
  %962 = load ptr, ptr %14, align 8, !tbaa !5
  %963 = load i64, ptr %25, align 8, !tbaa !9
  %964 = getelementptr inbounds double, ptr %962, i64 %963
  %965 = load double, ptr %964, align 8, !tbaa !11
  %966 = load double, ptr %42, align 8, !tbaa !11
  %967 = load double, ptr %36, align 8, !tbaa !11
  %968 = call double @llvm.fmuladd.f64(double %965, double %966, double %967)
  store double %968, ptr %36, align 8, !tbaa !11
  %969 = load double, ptr %42, align 8, !tbaa !11
  %970 = load double, ptr %42, align 8, !tbaa !11
  %971 = load double, ptr %40, align 8, !tbaa !11
  %972 = call double @llvm.fmuladd.f64(double %969, double %970, double %971)
  store double %972, ptr %40, align 8, !tbaa !11
  %973 = load double, ptr %36, align 8, !tbaa !11
  %974 = load double, ptr %59, align 8, !tbaa !11
  %975 = fadd double %974, %973
  store double %975, ptr %59, align 8, !tbaa !11
  br label %976

976:                                              ; preds = %947
  %977 = load i64, ptr %25, align 8, !tbaa !9
  %978 = add nsw i64 %977, 1
  store i64 %978, ptr %25, align 8, !tbaa !9
  br label %943, !llvm.loop !19

979:                                              ; preds = %943
  %980 = load double, ptr %59, align 8, !tbaa !11
  %981 = fcmp oge double %980, 0.000000e+00
  br i1 %981, label %982, label %984

982:                                              ; preds = %979
  %983 = load double, ptr %59, align 8, !tbaa !11
  br label %987

984:                                              ; preds = %979
  %985 = load double, ptr %59, align 8, !tbaa !11
  %986 = fneg double %985
  br label %987

987:                                              ; preds = %984, %982
  %988 = phi double [ %983, %982 ], [ %986, %984 ]
  store double %988, ptr %59, align 8, !tbaa !11
  %989 = load ptr, ptr %14, align 8, !tbaa !5
  %990 = load ptr, ptr %11, align 8, !tbaa !5
  %991 = load i64, ptr %990, align 8, !tbaa !9
  %992 = getelementptr inbounds double, ptr %989, i64 %991
  %993 = load double, ptr %992, align 8, !tbaa !11
  %994 = load ptr, ptr %18, align 8, !tbaa !5
  %995 = load ptr, ptr %11, align 8, !tbaa !5
  %996 = load i64, ptr %995, align 8, !tbaa !9
  %997 = getelementptr inbounds double, ptr %994, i64 %996
  %998 = load double, ptr %997, align 8, !tbaa !11
  %999 = load ptr, ptr %15, align 8, !tbaa !5
  %1000 = load ptr, ptr %11, align 8, !tbaa !5
  %1001 = load i64, ptr %1000, align 8, !tbaa !9
  %1002 = getelementptr inbounds double, ptr %999, i64 %1001
  %1003 = load double, ptr %1002, align 8, !tbaa !11
  %1004 = fmul double %998, %1003
  %1005 = fdiv double %993, %1004
  store double %1005, ptr %42, align 8, !tbaa !11
  %1006 = load ptr, ptr %14, align 8, !tbaa !5
  %1007 = load ptr, ptr %11, align 8, !tbaa !5
  %1008 = load i64, ptr %1007, align 8, !tbaa !9
  %1009 = getelementptr inbounds double, ptr %1006, i64 %1008
  %1010 = load double, ptr %1009, align 8, !tbaa !11
  %1011 = load double, ptr %42, align 8, !tbaa !11
  %1012 = fmul double %1010, %1011
  store double %1012, ptr %33, align 8, !tbaa !11
  %1013 = load double, ptr %42, align 8, !tbaa !11
  %1014 = load double, ptr %42, align 8, !tbaa !11
  %1015 = fmul double %1013, %1014
  store double %1015, ptr %39, align 8, !tbaa !11
  %1016 = load double, ptr %33, align 8, !tbaa !11
  %1017 = fneg double %1016
  %1018 = load double, ptr %36, align 8, !tbaa !11
  %1019 = fsub double %1017, %1018
  %1020 = load double, ptr %59, align 8, !tbaa !11
  %1021 = call double @llvm.fmuladd.f64(double %1019, double 8.000000e+00, double %1020)
  %1022 = load double, ptr %33, align 8, !tbaa !11
  %1023 = fsub double %1021, %1022
  %1024 = load double, ptr %61, align 8, !tbaa !11
  %1025 = fadd double %1023, %1024
  %1026 = load double, ptr %35, align 8, !tbaa !11
  %1027 = fcmp oge double %1026, 0.000000e+00
  br i1 %1027, label %1028, label %1030

1028:                                             ; preds = %987
  %1029 = load double, ptr %35, align 8, !tbaa !11
  br label %1033

1030:                                             ; preds = %987
  %1031 = load double, ptr %35, align 8, !tbaa !11
  %1032 = fneg double %1031
  br label %1033

1033:                                             ; preds = %1030, %1028
  %1034 = phi double [ %1029, %1028 ], [ %1032, %1030 ]
  %1035 = load double, ptr %40, align 8, !tbaa !11
  %1036 = load double, ptr %39, align 8, !tbaa !11
  %1037 = fadd double %1035, %1036
  %1038 = call double @llvm.fmuladd.f64(double %1034, double %1037, double %1025)
  store double %1038, ptr %59, align 8, !tbaa !11
  %1039 = load double, ptr %61, align 8, !tbaa !11
  %1040 = load double, ptr %33, align 8, !tbaa !11
  %1041 = fadd double %1039, %1040
  %1042 = load double, ptr %36, align 8, !tbaa !11
  %1043 = fadd double %1041, %1042
  store double %1043, ptr %26, align 8, !tbaa !11
  %1044 = load i64, ptr %51, align 8, !tbaa !9
  %1045 = add nsw i64 %1044, 1
  store i64 %1045, ptr %41, align 8, !tbaa !9
  %1046 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %1046, ptr %51, align 8, !tbaa !9
  br label %1047

1047:                                             ; preds = %1333, %1033
  %1048 = load i64, ptr %51, align 8, !tbaa !9
  %1049 = icmp sle i64 %1048, 20
  br i1 %1049, label %1050, label %1336

1050:                                             ; preds = %1047
  %1051 = load double, ptr %26, align 8, !tbaa !11
  %1052 = fcmp oge double %1051, 0.000000e+00
  br i1 %1052, label %1053, label %1055

1053:                                             ; preds = %1050
  %1054 = load double, ptr %26, align 8, !tbaa !11
  br label %1058

1055:                                             ; preds = %1050
  %1056 = load double, ptr %26, align 8, !tbaa !11
  %1057 = fneg double %1056
  br label %1058

1058:                                             ; preds = %1055, %1053
  %1059 = phi double [ %1054, %1053 ], [ %1057, %1055 ]
  %1060 = load double, ptr %34, align 8, !tbaa !11
  %1061 = load double, ptr %59, align 8, !tbaa !11
  %1062 = fmul double %1060, %1061
  %1063 = fcmp ole double %1059, %1062
  br i1 %1063, label %1064, label %1065

1064:                                             ; preds = %1058
  br label %3582

1065:                                             ; preds = %1058
  %1066 = load ptr, ptr %18, align 8, !tbaa !5
  %1067 = load ptr, ptr %11, align 8, !tbaa !5
  %1068 = load i64, ptr %1067, align 8, !tbaa !9
  %1069 = sub nsw i64 %1068, 1
  %1070 = getelementptr inbounds double, ptr %1066, i64 %1069
  %1071 = load double, ptr %1070, align 8, !tbaa !11
  %1072 = load ptr, ptr %15, align 8, !tbaa !5
  %1073 = load ptr, ptr %11, align 8, !tbaa !5
  %1074 = load i64, ptr %1073, align 8, !tbaa !9
  %1075 = sub nsw i64 %1074, 1
  %1076 = getelementptr inbounds double, ptr %1072, i64 %1075
  %1077 = load double, ptr %1076, align 8, !tbaa !11
  %1078 = fmul double %1071, %1077
  store double %1078, ptr %56, align 8, !tbaa !11
  %1079 = load ptr, ptr %18, align 8, !tbaa !5
  %1080 = load ptr, ptr %11, align 8, !tbaa !5
  %1081 = load i64, ptr %1080, align 8, !tbaa !9
  %1082 = getelementptr inbounds double, ptr %1079, i64 %1081
  %1083 = load double, ptr %1082, align 8, !tbaa !11
  %1084 = load ptr, ptr %15, align 8, !tbaa !5
  %1085 = load ptr, ptr %11, align 8, !tbaa !5
  %1086 = load i64, ptr %1085, align 8, !tbaa !9
  %1087 = getelementptr inbounds double, ptr %1084, i64 %1086
  %1088 = load double, ptr %1087, align 8, !tbaa !11
  %1089 = fmul double %1083, %1088
  store double %1089, ptr %54, align 8, !tbaa !11
  %1090 = load double, ptr %26, align 8, !tbaa !11
  %1091 = load double, ptr %56, align 8, !tbaa !11
  %1092 = load double, ptr %40, align 8, !tbaa !11
  %1093 = fneg double %1091
  %1094 = call double @llvm.fmuladd.f64(double %1093, double %1092, double %1090)
  %1095 = load double, ptr %54, align 8, !tbaa !11
  %1096 = load double, ptr %39, align 8, !tbaa !11
  %1097 = fneg double %1095
  %1098 = call double @llvm.fmuladd.f64(double %1097, double %1096, double %1094)
  store double %1098, ptr %24, align 8, !tbaa !11
  %1099 = load double, ptr %54, align 8, !tbaa !11
  %1100 = load double, ptr %56, align 8, !tbaa !11
  %1101 = fadd double %1099, %1100
  %1102 = load double, ptr %26, align 8, !tbaa !11
  %1103 = load double, ptr %56, align 8, !tbaa !11
  %1104 = load double, ptr %54, align 8, !tbaa !11
  %1105 = fmul double %1103, %1104
  %1106 = load double, ptr %40, align 8, !tbaa !11
  %1107 = load double, ptr %39, align 8, !tbaa !11
  %1108 = fadd double %1106, %1107
  %1109 = fmul double %1105, %1108
  %1110 = fneg double %1109
  %1111 = call double @llvm.fmuladd.f64(double %1101, double %1102, double %1110)
  store double %1111, ptr %22, align 8, !tbaa !11
  %1112 = load double, ptr %56, align 8, !tbaa !11
  %1113 = load double, ptr %54, align 8, !tbaa !11
  %1114 = fmul double %1112, %1113
  %1115 = load double, ptr %26, align 8, !tbaa !11
  %1116 = fmul double %1114, %1115
  store double %1116, ptr %23, align 8, !tbaa !11
  %1117 = load double, ptr %22, align 8, !tbaa !11
  %1118 = fcmp oge double %1117, 0.000000e+00
  br i1 %1118, label %1119, label %1143

1119:                                             ; preds = %1065
  %1120 = load double, ptr %22, align 8, !tbaa !11
  %1121 = load double, ptr %22, align 8, !tbaa !11
  %1122 = load double, ptr %22, align 8, !tbaa !11
  %1123 = load double, ptr %23, align 8, !tbaa !11
  %1124 = fmul double %1123, 4.000000e+00
  %1125 = load double, ptr %24, align 8, !tbaa !11
  %1126 = fmul double %1124, %1125
  %1127 = fneg double %1126
  %1128 = call double @llvm.fmuladd.f64(double %1121, double %1122, double %1127)
  store double %1128, ptr %21, align 8, !tbaa !11
  %1129 = load double, ptr %21, align 8, !tbaa !11
  %1130 = fcmp oge double %1129, 0.000000e+00
  br i1 %1130, label %1131, label %1133

1131:                                             ; preds = %1119
  %1132 = load double, ptr %21, align 8, !tbaa !11
  br label %1136

1133:                                             ; preds = %1119
  %1134 = load double, ptr %21, align 8, !tbaa !11
  %1135 = fneg double %1134
  br label %1136

1136:                                             ; preds = %1133, %1131
  %1137 = phi double [ %1132, %1131 ], [ %1135, %1133 ]
  %1138 = call double @sqrt(double noundef %1137) #5
  %1139 = fadd double %1120, %1138
  %1140 = load double, ptr %24, align 8, !tbaa !11
  %1141 = fmul double %1140, 2.000000e+00
  %1142 = fdiv double %1139, %1141
  store double %1142, ptr %32, align 8, !tbaa !11
  br label %1167

1143:                                             ; preds = %1065
  %1144 = load double, ptr %23, align 8, !tbaa !11
  %1145 = fmul double %1144, 2.000000e+00
  %1146 = load double, ptr %22, align 8, !tbaa !11
  %1147 = load double, ptr %22, align 8, !tbaa !11
  %1148 = load double, ptr %22, align 8, !tbaa !11
  %1149 = load double, ptr %23, align 8, !tbaa !11
  %1150 = fmul double %1149, 4.000000e+00
  %1151 = load double, ptr %24, align 8, !tbaa !11
  %1152 = fmul double %1150, %1151
  %1153 = fneg double %1152
  %1154 = call double @llvm.fmuladd.f64(double %1147, double %1148, double %1153)
  store double %1154, ptr %21, align 8, !tbaa !11
  %1155 = load double, ptr %21, align 8, !tbaa !11
  %1156 = fcmp oge double %1155, 0.000000e+00
  br i1 %1156, label %1157, label %1159

1157:                                             ; preds = %1143
  %1158 = load double, ptr %21, align 8, !tbaa !11
  br label %1162

1159:                                             ; preds = %1143
  %1160 = load double, ptr %21, align 8, !tbaa !11
  %1161 = fneg double %1160
  br label %1162

1162:                                             ; preds = %1159, %1157
  %1163 = phi double [ %1158, %1157 ], [ %1161, %1159 ]
  %1164 = call double @sqrt(double noundef %1163) #5
  %1165 = fsub double %1146, %1164
  %1166 = fdiv double %1145, %1165
  store double %1166, ptr %32, align 8, !tbaa !11
  br label %1167

1167:                                             ; preds = %1162, %1136
  %1168 = load double, ptr %26, align 8, !tbaa !11
  %1169 = load double, ptr %32, align 8, !tbaa !11
  %1170 = fmul double %1168, %1169
  %1171 = fcmp ogt double %1170, 0.000000e+00
  br i1 %1171, label %1172, label %1179

1172:                                             ; preds = %1167
  %1173 = load double, ptr %26, align 8, !tbaa !11
  %1174 = fneg double %1173
  %1175 = load double, ptr %40, align 8, !tbaa !11
  %1176 = load double, ptr %39, align 8, !tbaa !11
  %1177 = fadd double %1175, %1176
  %1178 = fdiv double %1174, %1177
  store double %1178, ptr %32, align 8, !tbaa !11
  br label %1179

1179:                                             ; preds = %1172, %1167
  %1180 = load double, ptr %32, align 8, !tbaa !11
  %1181 = load double, ptr %54, align 8, !tbaa !11
  %1182 = fsub double %1180, %1181
  store double %1182, ptr %42, align 8, !tbaa !11
  %1183 = load double, ptr %42, align 8, !tbaa !11
  %1184 = fcmp ole double %1183, 0.000000e+00
  br i1 %1184, label %1185, label %1188

1185:                                             ; preds = %1179
  %1186 = load double, ptr %32, align 8, !tbaa !11
  %1187 = fdiv double %1186, 2.000000e+00
  store double %1187, ptr %32, align 8, !tbaa !11
  br label %1188

1188:                                             ; preds = %1185, %1179
  %1189 = load double, ptr %32, align 8, !tbaa !11
  %1190 = load double, ptr %35, align 8, !tbaa !11
  %1191 = fadd double %1190, %1189
  store double %1191, ptr %35, align 8, !tbaa !11
  %1192 = load ptr, ptr %17, align 8, !tbaa !5
  %1193 = load double, ptr %1192, align 8, !tbaa !11
  %1194 = load double, ptr %32, align 8, !tbaa !11
  %1195 = load ptr, ptr %17, align 8, !tbaa !5
  %1196 = load double, ptr %1195, align 8, !tbaa !11
  %1197 = load ptr, ptr %17, align 8, !tbaa !5
  %1198 = load double, ptr %1197, align 8, !tbaa !11
  %1199 = call double @llvm.fmuladd.f64(double %1196, double %1198, double %1194)
  %1200 = call double @sqrt(double noundef %1199) #5
  %1201 = fadd double %1193, %1200
  %1202 = load double, ptr %32, align 8, !tbaa !11
  %1203 = fdiv double %1202, %1201
  store double %1203, ptr %32, align 8, !tbaa !11
  %1204 = load ptr, ptr %11, align 8, !tbaa !5
  %1205 = load i64, ptr %1204, align 8, !tbaa !9
  store i64 %1205, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %25, align 8, !tbaa !9
  br label %1206

1206:                                             ; preds = %1223, %1188
  %1207 = load i64, ptr %25, align 8, !tbaa !9
  %1208 = load i64, ptr %20, align 8, !tbaa !9
  %1209 = icmp sle i64 %1207, %1208
  br i1 %1209, label %1210, label %1226

1210:                                             ; preds = %1206
  %1211 = load double, ptr %32, align 8, !tbaa !11
  %1212 = load ptr, ptr %15, align 8, !tbaa !5
  %1213 = load i64, ptr %25, align 8, !tbaa !9
  %1214 = getelementptr inbounds double, ptr %1212, i64 %1213
  %1215 = load double, ptr %1214, align 8, !tbaa !11
  %1216 = fsub double %1215, %1211
  store double %1216, ptr %1214, align 8, !tbaa !11
  %1217 = load double, ptr %32, align 8, !tbaa !11
  %1218 = load ptr, ptr %18, align 8, !tbaa !5
  %1219 = load i64, ptr %25, align 8, !tbaa !9
  %1220 = getelementptr inbounds double, ptr %1218, i64 %1219
  %1221 = load double, ptr %1220, align 8, !tbaa !11
  %1222 = fadd double %1221, %1217
  store double %1222, ptr %1220, align 8, !tbaa !11
  br label %1223

1223:                                             ; preds = %1210
  %1224 = load i64, ptr %25, align 8, !tbaa !9
  %1225 = add nsw i64 %1224, 1
  store i64 %1225, ptr %25, align 8, !tbaa !9
  br label %1206, !llvm.loop !20

1226:                                             ; preds = %1206
  %1227 = load double, ptr %32, align 8, !tbaa !11
  %1228 = load ptr, ptr %17, align 8, !tbaa !5
  %1229 = load double, ptr %1228, align 8, !tbaa !11
  %1230 = fadd double %1229, %1227
  store double %1230, ptr %1228, align 8, !tbaa !11
  store double 0.000000e+00, ptr %40, align 8, !tbaa !11
  store double 0.000000e+00, ptr %36, align 8, !tbaa !11
  store double 0.000000e+00, ptr %59, align 8, !tbaa !11
  %1231 = load i64, ptr %28, align 8, !tbaa !9
  store i64 %1231, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %25, align 8, !tbaa !9
  br label %1232

1232:                                             ; preds = %1265, %1226
  %1233 = load i64, ptr %25, align 8, !tbaa !9
  %1234 = load i64, ptr %20, align 8, !tbaa !9
  %1235 = icmp sle i64 %1233, %1234
  br i1 %1235, label %1236, label %1268

1236:                                             ; preds = %1232
  %1237 = load ptr, ptr %14, align 8, !tbaa !5
  %1238 = load i64, ptr %25, align 8, !tbaa !9
  %1239 = getelementptr inbounds double, ptr %1237, i64 %1238
  %1240 = load double, ptr %1239, align 8, !tbaa !11
  %1241 = load ptr, ptr %18, align 8, !tbaa !5
  %1242 = load i64, ptr %25, align 8, !tbaa !9
  %1243 = getelementptr inbounds double, ptr %1241, i64 %1242
  %1244 = load double, ptr %1243, align 8, !tbaa !11
  %1245 = load ptr, ptr %15, align 8, !tbaa !5
  %1246 = load i64, ptr %25, align 8, !tbaa !9
  %1247 = getelementptr inbounds double, ptr %1245, i64 %1246
  %1248 = load double, ptr %1247, align 8, !tbaa !11
  %1249 = fmul double %1244, %1248
  %1250 = fdiv double %1240, %1249
  store double %1250, ptr %42, align 8, !tbaa !11
  %1251 = load ptr, ptr %14, align 8, !tbaa !5
  %1252 = load i64, ptr %25, align 8, !tbaa !9
  %1253 = getelementptr inbounds double, ptr %1251, i64 %1252
  %1254 = load double, ptr %1253, align 8, !tbaa !11
  %1255 = load double, ptr %42, align 8, !tbaa !11
  %1256 = load double, ptr %36, align 8, !tbaa !11
  %1257 = call double @llvm.fmuladd.f64(double %1254, double %1255, double %1256)
  store double %1257, ptr %36, align 8, !tbaa !11
  %1258 = load double, ptr %42, align 8, !tbaa !11
  %1259 = load double, ptr %42, align 8, !tbaa !11
  %1260 = load double, ptr %40, align 8, !tbaa !11
  %1261 = call double @llvm.fmuladd.f64(double %1258, double %1259, double %1260)
  store double %1261, ptr %40, align 8, !tbaa !11
  %1262 = load double, ptr %36, align 8, !tbaa !11
  %1263 = load double, ptr %59, align 8, !tbaa !11
  %1264 = fadd double %1263, %1262
  store double %1264, ptr %59, align 8, !tbaa !11
  br label %1265

1265:                                             ; preds = %1236
  %1266 = load i64, ptr %25, align 8, !tbaa !9
  %1267 = add nsw i64 %1266, 1
  store i64 %1267, ptr %25, align 8, !tbaa !9
  br label %1232, !llvm.loop !21

1268:                                             ; preds = %1232
  %1269 = load double, ptr %59, align 8, !tbaa !11
  %1270 = fcmp oge double %1269, 0.000000e+00
  br i1 %1270, label %1271, label %1273

1271:                                             ; preds = %1268
  %1272 = load double, ptr %59, align 8, !tbaa !11
  br label %1276

1273:                                             ; preds = %1268
  %1274 = load double, ptr %59, align 8, !tbaa !11
  %1275 = fneg double %1274
  br label %1276

1276:                                             ; preds = %1273, %1271
  %1277 = phi double [ %1272, %1271 ], [ %1275, %1273 ]
  store double %1277, ptr %59, align 8, !tbaa !11
  %1278 = load ptr, ptr %14, align 8, !tbaa !5
  %1279 = load ptr, ptr %11, align 8, !tbaa !5
  %1280 = load i64, ptr %1279, align 8, !tbaa !9
  %1281 = getelementptr inbounds double, ptr %1278, i64 %1280
  %1282 = load double, ptr %1281, align 8, !tbaa !11
  %1283 = load ptr, ptr %18, align 8, !tbaa !5
  %1284 = load ptr, ptr %11, align 8, !tbaa !5
  %1285 = load i64, ptr %1284, align 8, !tbaa !9
  %1286 = getelementptr inbounds double, ptr %1283, i64 %1285
  %1287 = load double, ptr %1286, align 8, !tbaa !11
  %1288 = load ptr, ptr %15, align 8, !tbaa !5
  %1289 = load ptr, ptr %11, align 8, !tbaa !5
  %1290 = load i64, ptr %1289, align 8, !tbaa !9
  %1291 = getelementptr inbounds double, ptr %1288, i64 %1290
  %1292 = load double, ptr %1291, align 8, !tbaa !11
  %1293 = fmul double %1287, %1292
  %1294 = fdiv double %1282, %1293
  store double %1294, ptr %42, align 8, !tbaa !11
  %1295 = load ptr, ptr %14, align 8, !tbaa !5
  %1296 = load ptr, ptr %11, align 8, !tbaa !5
  %1297 = load i64, ptr %1296, align 8, !tbaa !9
  %1298 = getelementptr inbounds double, ptr %1295, i64 %1297
  %1299 = load double, ptr %1298, align 8, !tbaa !11
  %1300 = load double, ptr %42, align 8, !tbaa !11
  %1301 = fmul double %1299, %1300
  store double %1301, ptr %33, align 8, !tbaa !11
  %1302 = load double, ptr %42, align 8, !tbaa !11
  %1303 = load double, ptr %42, align 8, !tbaa !11
  %1304 = fmul double %1302, %1303
  store double %1304, ptr %39, align 8, !tbaa !11
  %1305 = load double, ptr %33, align 8, !tbaa !11
  %1306 = fneg double %1305
  %1307 = load double, ptr %36, align 8, !tbaa !11
  %1308 = fsub double %1306, %1307
  %1309 = load double, ptr %59, align 8, !tbaa !11
  %1310 = call double @llvm.fmuladd.f64(double %1308, double 8.000000e+00, double %1309)
  %1311 = load double, ptr %33, align 8, !tbaa !11
  %1312 = fsub double %1310, %1311
  %1313 = load double, ptr %61, align 8, !tbaa !11
  %1314 = fadd double %1312, %1313
  %1315 = load double, ptr %35, align 8, !tbaa !11
  %1316 = fcmp oge double %1315, 0.000000e+00
  br i1 %1316, label %1317, label %1319

1317:                                             ; preds = %1276
  %1318 = load double, ptr %35, align 8, !tbaa !11
  br label %1322

1319:                                             ; preds = %1276
  %1320 = load double, ptr %35, align 8, !tbaa !11
  %1321 = fneg double %1320
  br label %1322

1322:                                             ; preds = %1319, %1317
  %1323 = phi double [ %1318, %1317 ], [ %1321, %1319 ]
  %1324 = load double, ptr %40, align 8, !tbaa !11
  %1325 = load double, ptr %39, align 8, !tbaa !11
  %1326 = fadd double %1324, %1325
  %1327 = call double @llvm.fmuladd.f64(double %1323, double %1326, double %1314)
  store double %1327, ptr %59, align 8, !tbaa !11
  %1328 = load double, ptr %61, align 8, !tbaa !11
  %1329 = load double, ptr %33, align 8, !tbaa !11
  %1330 = fadd double %1328, %1329
  %1331 = load double, ptr %36, align 8, !tbaa !11
  %1332 = fadd double %1330, %1331
  store double %1332, ptr %26, align 8, !tbaa !11
  br label %1333

1333:                                             ; preds = %1322
  %1334 = load i64, ptr %51, align 8, !tbaa !9
  %1335 = add nsw i64 %1334, 1
  store i64 %1335, ptr %51, align 8, !tbaa !9
  br label %1047, !llvm.loop !22

1336:                                             ; preds = %1047
  %1337 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 1, ptr %1337, align 8, !tbaa !9
  br label %3582

1338:                                             ; preds = %116
  store i64 1, ptr %51, align 8, !tbaa !9
  %1339 = load ptr, ptr %12, align 8, !tbaa !5
  %1340 = load i64, ptr %1339, align 8, !tbaa !9
  %1341 = add nsw i64 %1340, 1
  store i64 %1341, ptr %31, align 8, !tbaa !9
  %1342 = load ptr, ptr %13, align 8, !tbaa !5
  %1343 = load i64, ptr %31, align 8, !tbaa !9
  %1344 = getelementptr inbounds double, ptr %1342, i64 %1343
  %1345 = load double, ptr %1344, align 8, !tbaa !11
  %1346 = load ptr, ptr %13, align 8, !tbaa !5
  %1347 = load ptr, ptr %12, align 8, !tbaa !5
  %1348 = load i64, ptr %1347, align 8, !tbaa !9
  %1349 = getelementptr inbounds double, ptr %1346, i64 %1348
  %1350 = load double, ptr %1349, align 8, !tbaa !11
  %1351 = fsub double %1345, %1350
  %1352 = load ptr, ptr %13, align 8, !tbaa !5
  %1353 = load i64, ptr %31, align 8, !tbaa !9
  %1354 = getelementptr inbounds double, ptr %1352, i64 %1353
  %1355 = load double, ptr %1354, align 8, !tbaa !11
  %1356 = load ptr, ptr %13, align 8, !tbaa !5
  %1357 = load ptr, ptr %12, align 8, !tbaa !5
  %1358 = load i64, ptr %1357, align 8, !tbaa !9
  %1359 = getelementptr inbounds double, ptr %1356, i64 %1358
  %1360 = load double, ptr %1359, align 8, !tbaa !11
  %1361 = fadd double %1355, %1360
  %1362 = fmul double %1351, %1361
  store double %1362, ptr %49, align 8, !tbaa !11
  %1363 = load double, ptr %49, align 8, !tbaa !11
  %1364 = fdiv double %1363, 2.000000e+00
  store double %1364, ptr %55, align 8, !tbaa !11
  %1365 = load double, ptr %55, align 8, !tbaa !11
  %1366 = load ptr, ptr %13, align 8, !tbaa !5
  %1367 = load ptr, ptr %12, align 8, !tbaa !5
  %1368 = load i64, ptr %1367, align 8, !tbaa !9
  %1369 = getelementptr inbounds double, ptr %1366, i64 %1368
  %1370 = load double, ptr %1369, align 8, !tbaa !11
  %1371 = load ptr, ptr %13, align 8, !tbaa !5
  %1372 = load ptr, ptr %12, align 8, !tbaa !5
  %1373 = load i64, ptr %1372, align 8, !tbaa !9
  %1374 = getelementptr inbounds double, ptr %1371, i64 %1373
  %1375 = load double, ptr %1374, align 8, !tbaa !11
  %1376 = load ptr, ptr %13, align 8, !tbaa !5
  %1377 = load ptr, ptr %12, align 8, !tbaa !5
  %1378 = load i64, ptr %1377, align 8, !tbaa !9
  %1379 = getelementptr inbounds double, ptr %1376, i64 %1378
  %1380 = load double, ptr %1379, align 8, !tbaa !11
  %1381 = load double, ptr %55, align 8, !tbaa !11
  %1382 = call double @llvm.fmuladd.f64(double %1375, double %1380, double %1381)
  %1383 = call double @sqrt(double noundef %1382) #5
  %1384 = fadd double %1370, %1383
  %1385 = fdiv double %1365, %1384
  store double %1385, ptr %42, align 8, !tbaa !11
  %1386 = load ptr, ptr %11, align 8, !tbaa !5
  %1387 = load i64, ptr %1386, align 8, !tbaa !9
  store i64 %1387, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %25, align 8, !tbaa !9
  br label %1388

1388:                                             ; preds = %1423, %1338
  %1389 = load i64, ptr %25, align 8, !tbaa !9
  %1390 = load i64, ptr %20, align 8, !tbaa !9
  %1391 = icmp sle i64 %1389, %1390
  br i1 %1391, label %1392, label %1426

1392:                                             ; preds = %1388
  %1393 = load ptr, ptr %13, align 8, !tbaa !5
  %1394 = load i64, ptr %25, align 8, !tbaa !9
  %1395 = getelementptr inbounds double, ptr %1393, i64 %1394
  %1396 = load double, ptr %1395, align 8, !tbaa !11
  %1397 = load ptr, ptr %13, align 8, !tbaa !5
  %1398 = load ptr, ptr %12, align 8, !tbaa !5
  %1399 = load i64, ptr %1398, align 8, !tbaa !9
  %1400 = getelementptr inbounds double, ptr %1397, i64 %1399
  %1401 = load double, ptr %1400, align 8, !tbaa !11
  %1402 = fadd double %1396, %1401
  %1403 = load double, ptr %42, align 8, !tbaa !11
  %1404 = fadd double %1402, %1403
  %1405 = load ptr, ptr %18, align 8, !tbaa !5
  %1406 = load i64, ptr %25, align 8, !tbaa !9
  %1407 = getelementptr inbounds double, ptr %1405, i64 %1406
  store double %1404, ptr %1407, align 8, !tbaa !11
  %1408 = load ptr, ptr %13, align 8, !tbaa !5
  %1409 = load i64, ptr %25, align 8, !tbaa !9
  %1410 = getelementptr inbounds double, ptr %1408, i64 %1409
  %1411 = load double, ptr %1410, align 8, !tbaa !11
  %1412 = load ptr, ptr %13, align 8, !tbaa !5
  %1413 = load ptr, ptr %12, align 8, !tbaa !5
  %1414 = load i64, ptr %1413, align 8, !tbaa !9
  %1415 = getelementptr inbounds double, ptr %1412, i64 %1414
  %1416 = load double, ptr %1415, align 8, !tbaa !11
  %1417 = fsub double %1411, %1416
  %1418 = load double, ptr %42, align 8, !tbaa !11
  %1419 = fsub double %1417, %1418
  %1420 = load ptr, ptr %15, align 8, !tbaa !5
  %1421 = load i64, ptr %25, align 8, !tbaa !9
  %1422 = getelementptr inbounds double, ptr %1420, i64 %1421
  store double %1419, ptr %1422, align 8, !tbaa !11
  br label %1423

1423:                                             ; preds = %1392
  %1424 = load i64, ptr %25, align 8, !tbaa !9
  %1425 = add nsw i64 %1424, 1
  store i64 %1425, ptr %25, align 8, !tbaa !9
  br label %1388, !llvm.loop !23

1426:                                             ; preds = %1388
  store double 0.000000e+00, ptr %36, align 8, !tbaa !11
  %1427 = load ptr, ptr %12, align 8, !tbaa !5
  %1428 = load i64, ptr %1427, align 8, !tbaa !9
  %1429 = sub nsw i64 %1428, 1
  store i64 %1429, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %25, align 8, !tbaa !9
  br label %1430

1430:                                             ; preds = %1456, %1426
  %1431 = load i64, ptr %25, align 8, !tbaa !9
  %1432 = load i64, ptr %20, align 8, !tbaa !9
  %1433 = icmp sle i64 %1431, %1432
  br i1 %1433, label %1434, label %1459

1434:                                             ; preds = %1430
  %1435 = load ptr, ptr %14, align 8, !tbaa !5
  %1436 = load i64, ptr %25, align 8, !tbaa !9
  %1437 = getelementptr inbounds double, ptr %1435, i64 %1436
  %1438 = load double, ptr %1437, align 8, !tbaa !11
  %1439 = load ptr, ptr %14, align 8, !tbaa !5
  %1440 = load i64, ptr %25, align 8, !tbaa !9
  %1441 = getelementptr inbounds double, ptr %1439, i64 %1440
  %1442 = load double, ptr %1441, align 8, !tbaa !11
  %1443 = fmul double %1438, %1442
  %1444 = load ptr, ptr %18, align 8, !tbaa !5
  %1445 = load i64, ptr %25, align 8, !tbaa !9
  %1446 = getelementptr inbounds double, ptr %1444, i64 %1445
  %1447 = load double, ptr %1446, align 8, !tbaa !11
  %1448 = load ptr, ptr %15, align 8, !tbaa !5
  %1449 = load i64, ptr %25, align 8, !tbaa !9
  %1450 = getelementptr inbounds double, ptr %1448, i64 %1449
  %1451 = load double, ptr %1450, align 8, !tbaa !11
  %1452 = fmul double %1447, %1451
  %1453 = fdiv double %1443, %1452
  %1454 = load double, ptr %36, align 8, !tbaa !11
  %1455 = fadd double %1454, %1453
  store double %1455, ptr %36, align 8, !tbaa !11
  br label %1456

1456:                                             ; preds = %1434
  %1457 = load i64, ptr %25, align 8, !tbaa !9
  %1458 = add nsw i64 %1457, 1
  store i64 %1458, ptr %25, align 8, !tbaa !9
  br label %1430, !llvm.loop !24

1459:                                             ; preds = %1430
  store double 0.000000e+00, ptr %33, align 8, !tbaa !11
  %1460 = load ptr, ptr %12, align 8, !tbaa !5
  %1461 = load i64, ptr %1460, align 8, !tbaa !9
  %1462 = add nsw i64 %1461, 2
  store i64 %1462, ptr %20, align 8, !tbaa !9
  %1463 = load ptr, ptr %11, align 8, !tbaa !5
  %1464 = load i64, ptr %1463, align 8, !tbaa !9
  store i64 %1464, ptr %25, align 8, !tbaa !9
  br label %1465

1465:                                             ; preds = %1491, %1459
  %1466 = load i64, ptr %25, align 8, !tbaa !9
  %1467 = load i64, ptr %20, align 8, !tbaa !9
  %1468 = icmp sge i64 %1466, %1467
  br i1 %1468, label %1469, label %1494

1469:                                             ; preds = %1465
  %1470 = load ptr, ptr %14, align 8, !tbaa !5
  %1471 = load i64, ptr %25, align 8, !tbaa !9
  %1472 = getelementptr inbounds double, ptr %1470, i64 %1471
  %1473 = load double, ptr %1472, align 8, !tbaa !11
  %1474 = load ptr, ptr %14, align 8, !tbaa !5
  %1475 = load i64, ptr %25, align 8, !tbaa !9
  %1476 = getelementptr inbounds double, ptr %1474, i64 %1475
  %1477 = load double, ptr %1476, align 8, !tbaa !11
  %1478 = fmul double %1473, %1477
  %1479 = load ptr, ptr %18, align 8, !tbaa !5
  %1480 = load i64, ptr %25, align 8, !tbaa !9
  %1481 = getelementptr inbounds double, ptr %1479, i64 %1480
  %1482 = load double, ptr %1481, align 8, !tbaa !11
  %1483 = load ptr, ptr %15, align 8, !tbaa !5
  %1484 = load i64, ptr %25, align 8, !tbaa !9
  %1485 = getelementptr inbounds double, ptr %1483, i64 %1484
  %1486 = load double, ptr %1485, align 8, !tbaa !11
  %1487 = fmul double %1482, %1486
  %1488 = fdiv double %1478, %1487
  %1489 = load double, ptr %33, align 8, !tbaa !11
  %1490 = fadd double %1489, %1488
  store double %1490, ptr %33, align 8, !tbaa !11
  br label %1491

1491:                                             ; preds = %1469
  %1492 = load i64, ptr %25, align 8, !tbaa !9
  %1493 = add nsw i64 %1492, -1
  store i64 %1493, ptr %25, align 8, !tbaa !9
  br label %1465, !llvm.loop !25

1494:                                             ; preds = %1465
  %1495 = load double, ptr %61, align 8, !tbaa !11
  %1496 = load double, ptr %36, align 8, !tbaa !11
  %1497 = fadd double %1495, %1496
  %1498 = load double, ptr %33, align 8, !tbaa !11
  %1499 = fadd double %1497, %1498
  store double %1499, ptr %24, align 8, !tbaa !11
  %1500 = load double, ptr %24, align 8, !tbaa !11
  %1501 = load ptr, ptr %14, align 8, !tbaa !5
  %1502 = load ptr, ptr %12, align 8, !tbaa !5
  %1503 = load i64, ptr %1502, align 8, !tbaa !9
  %1504 = getelementptr inbounds double, ptr %1501, i64 %1503
  %1505 = load double, ptr %1504, align 8, !tbaa !11
  %1506 = load ptr, ptr %14, align 8, !tbaa !5
  %1507 = load ptr, ptr %12, align 8, !tbaa !5
  %1508 = load i64, ptr %1507, align 8, !tbaa !9
  %1509 = getelementptr inbounds double, ptr %1506, i64 %1508
  %1510 = load double, ptr %1509, align 8, !tbaa !11
  %1511 = fmul double %1505, %1510
  %1512 = load ptr, ptr %18, align 8, !tbaa !5
  %1513 = load ptr, ptr %12, align 8, !tbaa !5
  %1514 = load i64, ptr %1513, align 8, !tbaa !9
  %1515 = getelementptr inbounds double, ptr %1512, i64 %1514
  %1516 = load double, ptr %1515, align 8, !tbaa !11
  %1517 = load ptr, ptr %15, align 8, !tbaa !5
  %1518 = load ptr, ptr %12, align 8, !tbaa !5
  %1519 = load i64, ptr %1518, align 8, !tbaa !9
  %1520 = getelementptr inbounds double, ptr %1517, i64 %1519
  %1521 = load double, ptr %1520, align 8, !tbaa !11
  %1522 = fmul double %1516, %1521
  %1523 = fdiv double %1511, %1522
  %1524 = fadd double %1500, %1523
  %1525 = load ptr, ptr %14, align 8, !tbaa !5
  %1526 = load i64, ptr %31, align 8, !tbaa !9
  %1527 = getelementptr inbounds double, ptr %1525, i64 %1526
  %1528 = load double, ptr %1527, align 8, !tbaa !11
  %1529 = load ptr, ptr %14, align 8, !tbaa !5
  %1530 = load i64, ptr %31, align 8, !tbaa !9
  %1531 = getelementptr inbounds double, ptr %1529, i64 %1530
  %1532 = load double, ptr %1531, align 8, !tbaa !11
  %1533 = fmul double %1528, %1532
  %1534 = load ptr, ptr %18, align 8, !tbaa !5
  %1535 = load i64, ptr %31, align 8, !tbaa !9
  %1536 = getelementptr inbounds double, ptr %1534, i64 %1535
  %1537 = load double, ptr %1536, align 8, !tbaa !11
  %1538 = load ptr, ptr %15, align 8, !tbaa !5
  %1539 = load i64, ptr %31, align 8, !tbaa !9
  %1540 = getelementptr inbounds double, ptr %1538, i64 %1539
  %1541 = load double, ptr %1540, align 8, !tbaa !11
  %1542 = fmul double %1537, %1541
  %1543 = fdiv double %1533, %1542
  %1544 = fadd double %1524, %1543
  store double %1544, ptr %26, align 8, !tbaa !11
  %1545 = load double, ptr %26, align 8, !tbaa !11
  %1546 = fcmp ogt double %1545, 0.000000e+00
  br i1 %1546, label %1547, label %1657

1547:                                             ; preds = %1494
  store i64 1, ptr %58, align 8, !tbaa !9
  store double 0.000000e+00, ptr %44, align 8, !tbaa !11
  %1548 = load double, ptr %55, align 8, !tbaa !11
  store double %1548, ptr %45, align 8, !tbaa !11
  %1549 = load double, ptr %24, align 8, !tbaa !11
  %1550 = load double, ptr %49, align 8, !tbaa !11
  %1551 = load ptr, ptr %14, align 8, !tbaa !5
  %1552 = load ptr, ptr %12, align 8, !tbaa !5
  %1553 = load i64, ptr %1552, align 8, !tbaa !9
  %1554 = getelementptr inbounds double, ptr %1551, i64 %1553
  %1555 = load double, ptr %1554, align 8, !tbaa !11
  %1556 = load ptr, ptr %14, align 8, !tbaa !5
  %1557 = load ptr, ptr %12, align 8, !tbaa !5
  %1558 = load i64, ptr %1557, align 8, !tbaa !9
  %1559 = getelementptr inbounds double, ptr %1556, i64 %1558
  %1560 = load double, ptr %1559, align 8, !tbaa !11
  %1561 = fmul double %1555, %1560
  %1562 = call double @llvm.fmuladd.f64(double %1549, double %1550, double %1561)
  %1563 = load ptr, ptr %14, align 8, !tbaa !5
  %1564 = load i64, ptr %31, align 8, !tbaa !9
  %1565 = getelementptr inbounds double, ptr %1563, i64 %1564
  %1566 = load double, ptr %1565, align 8, !tbaa !11
  %1567 = load ptr, ptr %14, align 8, !tbaa !5
  %1568 = load i64, ptr %31, align 8, !tbaa !9
  %1569 = getelementptr inbounds double, ptr %1567, i64 %1568
  %1570 = load double, ptr %1569, align 8, !tbaa !11
  %1571 = call double @llvm.fmuladd.f64(double %1566, double %1570, double %1562)
  store double %1571, ptr %22, align 8, !tbaa !11
  %1572 = load ptr, ptr %14, align 8, !tbaa !5
  %1573 = load ptr, ptr %12, align 8, !tbaa !5
  %1574 = load i64, ptr %1573, align 8, !tbaa !9
  %1575 = getelementptr inbounds double, ptr %1572, i64 %1574
  %1576 = load double, ptr %1575, align 8, !tbaa !11
  %1577 = load ptr, ptr %14, align 8, !tbaa !5
  %1578 = load ptr, ptr %12, align 8, !tbaa !5
  %1579 = load i64, ptr %1578, align 8, !tbaa !9
  %1580 = getelementptr inbounds double, ptr %1577, i64 %1579
  %1581 = load double, ptr %1580, align 8, !tbaa !11
  %1582 = fmul double %1576, %1581
  %1583 = load double, ptr %49, align 8, !tbaa !11
  %1584 = fmul double %1582, %1583
  store double %1584, ptr %23, align 8, !tbaa !11
  %1585 = load double, ptr %22, align 8, !tbaa !11
  %1586 = fcmp ogt double %1585, 0.000000e+00
  br i1 %1586, label %1587, label %1611

1587:                                             ; preds = %1547
  %1588 = load double, ptr %23, align 8, !tbaa !11
  %1589 = fmul double %1588, 2.000000e+00
  %1590 = load double, ptr %22, align 8, !tbaa !11
  %1591 = load double, ptr %22, align 8, !tbaa !11
  %1592 = load double, ptr %22, align 8, !tbaa !11
  %1593 = load double, ptr %23, align 8, !tbaa !11
  %1594 = fmul double %1593, 4.000000e+00
  %1595 = load double, ptr %24, align 8, !tbaa !11
  %1596 = fmul double %1594, %1595
  %1597 = fneg double %1596
  %1598 = call double @llvm.fmuladd.f64(double %1591, double %1592, double %1597)
  store double %1598, ptr %21, align 8, !tbaa !11
  %1599 = load double, ptr %21, align 8, !tbaa !11
  %1600 = fcmp oge double %1599, 0.000000e+00
  br i1 %1600, label %1601, label %1603

1601:                                             ; preds = %1587
  %1602 = load double, ptr %21, align 8, !tbaa !11
  br label %1606

1603:                                             ; preds = %1587
  %1604 = load double, ptr %21, align 8, !tbaa !11
  %1605 = fneg double %1604
  br label %1606

1606:                                             ; preds = %1603, %1601
  %1607 = phi double [ %1602, %1601 ], [ %1605, %1603 ]
  %1608 = call double @sqrt(double noundef %1607) #5
  %1609 = fadd double %1590, %1608
  %1610 = fdiv double %1589, %1609
  store double %1610, ptr %35, align 8, !tbaa !11
  br label %1635

1611:                                             ; preds = %1547
  %1612 = load double, ptr %22, align 8, !tbaa !11
  %1613 = load double, ptr %22, align 8, !tbaa !11
  %1614 = load double, ptr %22, align 8, !tbaa !11
  %1615 = load double, ptr %23, align 8, !tbaa !11
  %1616 = fmul double %1615, 4.000000e+00
  %1617 = load double, ptr %24, align 8, !tbaa !11
  %1618 = fmul double %1616, %1617
  %1619 = fneg double %1618
  %1620 = call double @llvm.fmuladd.f64(double %1613, double %1614, double %1619)
  store double %1620, ptr %21, align 8, !tbaa !11
  %1621 = load double, ptr %21, align 8, !tbaa !11
  %1622 = fcmp oge double %1621, 0.000000e+00
  br i1 %1622, label %1623, label %1625

1623:                                             ; preds = %1611
  %1624 = load double, ptr %21, align 8, !tbaa !11
  br label %1628

1625:                                             ; preds = %1611
  %1626 = load double, ptr %21, align 8, !tbaa !11
  %1627 = fneg double %1626
  br label %1628

1628:                                             ; preds = %1625, %1623
  %1629 = phi double [ %1624, %1623 ], [ %1627, %1625 ]
  %1630 = call double @sqrt(double noundef %1629) #5
  %1631 = fsub double %1612, %1630
  %1632 = load double, ptr %24, align 8, !tbaa !11
  %1633 = fmul double %1632, 2.000000e+00
  %1634 = fdiv double %1631, %1633
  store double %1634, ptr %35, align 8, !tbaa !11
  br label %1635

1635:                                             ; preds = %1628, %1606
  %1636 = load double, ptr %35, align 8, !tbaa !11
  %1637 = load ptr, ptr %13, align 8, !tbaa !5
  %1638 = load ptr, ptr %12, align 8, !tbaa !5
  %1639 = load i64, ptr %1638, align 8, !tbaa !9
  %1640 = getelementptr inbounds double, ptr %1637, i64 %1639
  %1641 = load double, ptr %1640, align 8, !tbaa !11
  %1642 = load ptr, ptr %13, align 8, !tbaa !5
  %1643 = load ptr, ptr %12, align 8, !tbaa !5
  %1644 = load i64, ptr %1643, align 8, !tbaa !9
  %1645 = getelementptr inbounds double, ptr %1642, i64 %1644
  %1646 = load double, ptr %1645, align 8, !tbaa !11
  %1647 = load ptr, ptr %13, align 8, !tbaa !5
  %1648 = load ptr, ptr %12, align 8, !tbaa !5
  %1649 = load i64, ptr %1648, align 8, !tbaa !9
  %1650 = getelementptr inbounds double, ptr %1647, i64 %1649
  %1651 = load double, ptr %1650, align 8, !tbaa !11
  %1652 = load double, ptr %35, align 8, !tbaa !11
  %1653 = call double @llvm.fmuladd.f64(double %1646, double %1651, double %1652)
  %1654 = call double @sqrt(double noundef %1653) #5
  %1655 = fadd double %1641, %1654
  %1656 = fdiv double %1636, %1655
  store double %1656, ptr %32, align 8, !tbaa !11
  br label %1773

1657:                                             ; preds = %1494
  store i64 0, ptr %58, align 8, !tbaa !9
  %1658 = load double, ptr %55, align 8, !tbaa !11
  %1659 = fneg double %1658
  store double %1659, ptr %44, align 8, !tbaa !11
  store double 0.000000e+00, ptr %45, align 8, !tbaa !11
  %1660 = load double, ptr %24, align 8, !tbaa !11
  %1661 = load double, ptr %49, align 8, !tbaa !11
  %1662 = load ptr, ptr %14, align 8, !tbaa !5
  %1663 = load ptr, ptr %12, align 8, !tbaa !5
  %1664 = load i64, ptr %1663, align 8, !tbaa !9
  %1665 = getelementptr inbounds double, ptr %1662, i64 %1664
  %1666 = load double, ptr %1665, align 8, !tbaa !11
  %1667 = load ptr, ptr %14, align 8, !tbaa !5
  %1668 = load ptr, ptr %12, align 8, !tbaa !5
  %1669 = load i64, ptr %1668, align 8, !tbaa !9
  %1670 = getelementptr inbounds double, ptr %1667, i64 %1669
  %1671 = load double, ptr %1670, align 8, !tbaa !11
  %1672 = fmul double %1666, %1671
  %1673 = fneg double %1672
  %1674 = call double @llvm.fmuladd.f64(double %1660, double %1661, double %1673)
  %1675 = load ptr, ptr %14, align 8, !tbaa !5
  %1676 = load i64, ptr %31, align 8, !tbaa !9
  %1677 = getelementptr inbounds double, ptr %1675, i64 %1676
  %1678 = load double, ptr %1677, align 8, !tbaa !11
  %1679 = load ptr, ptr %14, align 8, !tbaa !5
  %1680 = load i64, ptr %31, align 8, !tbaa !9
  %1681 = getelementptr inbounds double, ptr %1679, i64 %1680
  %1682 = load double, ptr %1681, align 8, !tbaa !11
  %1683 = fneg double %1678
  %1684 = call double @llvm.fmuladd.f64(double %1683, double %1682, double %1674)
  store double %1684, ptr %22, align 8, !tbaa !11
  %1685 = load ptr, ptr %14, align 8, !tbaa !5
  %1686 = load i64, ptr %31, align 8, !tbaa !9
  %1687 = getelementptr inbounds double, ptr %1685, i64 %1686
  %1688 = load double, ptr %1687, align 8, !tbaa !11
  %1689 = load ptr, ptr %14, align 8, !tbaa !5
  %1690 = load i64, ptr %31, align 8, !tbaa !9
  %1691 = getelementptr inbounds double, ptr %1689, i64 %1690
  %1692 = load double, ptr %1691, align 8, !tbaa !11
  %1693 = fmul double %1688, %1692
  %1694 = load double, ptr %49, align 8, !tbaa !11
  %1695 = fmul double %1693, %1694
  store double %1695, ptr %23, align 8, !tbaa !11
  %1696 = load double, ptr %22, align 8, !tbaa !11
  %1697 = fcmp olt double %1696, 0.000000e+00
  br i1 %1697, label %1698, label %1721

1698:                                             ; preds = %1657
  %1699 = load double, ptr %23, align 8, !tbaa !11
  %1700 = fmul double %1699, 2.000000e+00
  %1701 = load double, ptr %22, align 8, !tbaa !11
  %1702 = load double, ptr %22, align 8, !tbaa !11
  %1703 = load double, ptr %22, align 8, !tbaa !11
  %1704 = load double, ptr %23, align 8, !tbaa !11
  %1705 = fmul double %1704, 4.000000e+00
  %1706 = load double, ptr %24, align 8, !tbaa !11
  %1707 = fmul double %1705, %1706
  %1708 = call double @llvm.fmuladd.f64(double %1702, double %1703, double %1707)
  store double %1708, ptr %21, align 8, !tbaa !11
  %1709 = load double, ptr %21, align 8, !tbaa !11
  %1710 = fcmp oge double %1709, 0.000000e+00
  br i1 %1710, label %1711, label %1713

1711:                                             ; preds = %1698
  %1712 = load double, ptr %21, align 8, !tbaa !11
  br label %1716

1713:                                             ; preds = %1698
  %1714 = load double, ptr %21, align 8, !tbaa !11
  %1715 = fneg double %1714
  br label %1716

1716:                                             ; preds = %1713, %1711
  %1717 = phi double [ %1712, %1711 ], [ %1715, %1713 ]
  %1718 = call double @sqrt(double noundef %1717) #5
  %1719 = fsub double %1701, %1718
  %1720 = fdiv double %1700, %1719
  store double %1720, ptr %35, align 8, !tbaa !11
  br label %1745

1721:                                             ; preds = %1657
  %1722 = load double, ptr %22, align 8, !tbaa !11
  %1723 = load double, ptr %22, align 8, !tbaa !11
  %1724 = load double, ptr %22, align 8, !tbaa !11
  %1725 = load double, ptr %23, align 8, !tbaa !11
  %1726 = fmul double %1725, 4.000000e+00
  %1727 = load double, ptr %24, align 8, !tbaa !11
  %1728 = fmul double %1726, %1727
  %1729 = call double @llvm.fmuladd.f64(double %1723, double %1724, double %1728)
  store double %1729, ptr %21, align 8, !tbaa !11
  %1730 = load double, ptr %21, align 8, !tbaa !11
  %1731 = fcmp oge double %1730, 0.000000e+00
  br i1 %1731, label %1732, label %1734

1732:                                             ; preds = %1721
  %1733 = load double, ptr %21, align 8, !tbaa !11
  br label %1737

1734:                                             ; preds = %1721
  %1735 = load double, ptr %21, align 8, !tbaa !11
  %1736 = fneg double %1735
  br label %1737

1737:                                             ; preds = %1734, %1732
  %1738 = phi double [ %1733, %1732 ], [ %1736, %1734 ]
  %1739 = call double @sqrt(double noundef %1738) #5
  %1740 = fadd double %1722, %1739
  %1741 = fneg double %1740
  %1742 = load double, ptr %24, align 8, !tbaa !11
  %1743 = fmul double %1742, 2.000000e+00
  %1744 = fdiv double %1741, %1743
  store double %1744, ptr %35, align 8, !tbaa !11
  br label %1745

1745:                                             ; preds = %1737, %1716
  %1746 = load double, ptr %35, align 8, !tbaa !11
  %1747 = load ptr, ptr %13, align 8, !tbaa !5
  %1748 = load i64, ptr %31, align 8, !tbaa !9
  %1749 = getelementptr inbounds double, ptr %1747, i64 %1748
  %1750 = load double, ptr %1749, align 8, !tbaa !11
  %1751 = load ptr, ptr %13, align 8, !tbaa !5
  %1752 = load i64, ptr %31, align 8, !tbaa !9
  %1753 = getelementptr inbounds double, ptr %1751, i64 %1752
  %1754 = load double, ptr %1753, align 8, !tbaa !11
  %1755 = load ptr, ptr %13, align 8, !tbaa !5
  %1756 = load i64, ptr %31, align 8, !tbaa !9
  %1757 = getelementptr inbounds double, ptr %1755, i64 %1756
  %1758 = load double, ptr %1757, align 8, !tbaa !11
  %1759 = load double, ptr %35, align 8, !tbaa !11
  %1760 = call double @llvm.fmuladd.f64(double %1754, double %1758, double %1759)
  store double %1760, ptr %21, align 8, !tbaa !11
  %1761 = load double, ptr %21, align 8, !tbaa !11
  %1762 = fcmp oge double %1761, 0.000000e+00
  br i1 %1762, label %1763, label %1765

1763:                                             ; preds = %1745
  %1764 = load double, ptr %21, align 8, !tbaa !11
  br label %1768

1765:                                             ; preds = %1745
  %1766 = load double, ptr %21, align 8, !tbaa !11
  %1767 = fneg double %1766
  br label %1768

1768:                                             ; preds = %1765, %1763
  %1769 = phi double [ %1764, %1763 ], [ %1767, %1765 ]
  %1770 = call double @sqrt(double noundef %1769) #5
  %1771 = fadd double %1750, %1770
  %1772 = fdiv double %1746, %1771
  store double %1772, ptr %32, align 8, !tbaa !11
  br label %1773

1773:                                             ; preds = %1768, %1635
  %1774 = load i64, ptr %58, align 8, !tbaa !9
  %1775 = icmp ne i64 %1774, 0
  br i1 %1775, label %1776, label %1828

1776:                                             ; preds = %1773
  %1777 = load ptr, ptr %12, align 8, !tbaa !5
  %1778 = load i64, ptr %1777, align 8, !tbaa !9
  store i64 %1778, ptr %28, align 8, !tbaa !9
  %1779 = load ptr, ptr %13, align 8, !tbaa !5
  %1780 = load ptr, ptr %12, align 8, !tbaa !5
  %1781 = load i64, ptr %1780, align 8, !tbaa !9
  %1782 = getelementptr inbounds double, ptr %1779, i64 %1781
  %1783 = load double, ptr %1782, align 8, !tbaa !11
  %1784 = load double, ptr %32, align 8, !tbaa !11
  %1785 = fadd double %1783, %1784
  %1786 = load ptr, ptr %17, align 8, !tbaa !5
  store double %1785, ptr %1786, align 8, !tbaa !11
  %1787 = load ptr, ptr %11, align 8, !tbaa !5
  %1788 = load i64, ptr %1787, align 8, !tbaa !9
  store i64 %1788, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %25, align 8, !tbaa !9
  br label %1789

1789:                                             ; preds = %1824, %1776
  %1790 = load i64, ptr %25, align 8, !tbaa !9
  %1791 = load i64, ptr %20, align 8, !tbaa !9
  %1792 = icmp sle i64 %1790, %1791
  br i1 %1792, label %1793, label %1827

1793:                                             ; preds = %1789
  %1794 = load ptr, ptr %13, align 8, !tbaa !5
  %1795 = load i64, ptr %25, align 8, !tbaa !9
  %1796 = getelementptr inbounds double, ptr %1794, i64 %1795
  %1797 = load double, ptr %1796, align 8, !tbaa !11
  %1798 = load ptr, ptr %13, align 8, !tbaa !5
  %1799 = load ptr, ptr %12, align 8, !tbaa !5
  %1800 = load i64, ptr %1799, align 8, !tbaa !9
  %1801 = getelementptr inbounds double, ptr %1798, i64 %1800
  %1802 = load double, ptr %1801, align 8, !tbaa !11
  %1803 = fadd double %1797, %1802
  %1804 = load double, ptr %32, align 8, !tbaa !11
  %1805 = fadd double %1803, %1804
  %1806 = load ptr, ptr %18, align 8, !tbaa !5
  %1807 = load i64, ptr %25, align 8, !tbaa !9
  %1808 = getelementptr inbounds double, ptr %1806, i64 %1807
  store double %1805, ptr %1808, align 8, !tbaa !11
  %1809 = load ptr, ptr %13, align 8, !tbaa !5
  %1810 = load i64, ptr %25, align 8, !tbaa !9
  %1811 = getelementptr inbounds double, ptr %1809, i64 %1810
  %1812 = load double, ptr %1811, align 8, !tbaa !11
  %1813 = load ptr, ptr %13, align 8, !tbaa !5
  %1814 = load ptr, ptr %12, align 8, !tbaa !5
  %1815 = load i64, ptr %1814, align 8, !tbaa !9
  %1816 = getelementptr inbounds double, ptr %1813, i64 %1815
  %1817 = load double, ptr %1816, align 8, !tbaa !11
  %1818 = fsub double %1812, %1817
  %1819 = load double, ptr %32, align 8, !tbaa !11
  %1820 = fsub double %1818, %1819
  %1821 = load ptr, ptr %15, align 8, !tbaa !5
  %1822 = load i64, ptr %25, align 8, !tbaa !9
  %1823 = getelementptr inbounds double, ptr %1821, i64 %1822
  store double %1820, ptr %1823, align 8, !tbaa !11
  br label %1824

1824:                                             ; preds = %1793
  %1825 = load i64, ptr %25, align 8, !tbaa !9
  %1826 = add nsw i64 %1825, 1
  store i64 %1826, ptr %25, align 8, !tbaa !9
  br label %1789, !llvm.loop !26

1827:                                             ; preds = %1789
  br label %1878

1828:                                             ; preds = %1773
  %1829 = load ptr, ptr %12, align 8, !tbaa !5
  %1830 = load i64, ptr %1829, align 8, !tbaa !9
  %1831 = add nsw i64 %1830, 1
  store i64 %1831, ptr %28, align 8, !tbaa !9
  %1832 = load ptr, ptr %13, align 8, !tbaa !5
  %1833 = load i64, ptr %31, align 8, !tbaa !9
  %1834 = getelementptr inbounds double, ptr %1832, i64 %1833
  %1835 = load double, ptr %1834, align 8, !tbaa !11
  %1836 = load double, ptr %32, align 8, !tbaa !11
  %1837 = fadd double %1835, %1836
  %1838 = load ptr, ptr %17, align 8, !tbaa !5
  store double %1837, ptr %1838, align 8, !tbaa !11
  %1839 = load ptr, ptr %11, align 8, !tbaa !5
  %1840 = load i64, ptr %1839, align 8, !tbaa !9
  store i64 %1840, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %25, align 8, !tbaa !9
  br label %1841

1841:                                             ; preds = %1874, %1828
  %1842 = load i64, ptr %25, align 8, !tbaa !9
  %1843 = load i64, ptr %20, align 8, !tbaa !9
  %1844 = icmp sle i64 %1842, %1843
  br i1 %1844, label %1845, label %1877

1845:                                             ; preds = %1841
  %1846 = load ptr, ptr %13, align 8, !tbaa !5
  %1847 = load i64, ptr %25, align 8, !tbaa !9
  %1848 = getelementptr inbounds double, ptr %1846, i64 %1847
  %1849 = load double, ptr %1848, align 8, !tbaa !11
  %1850 = load ptr, ptr %13, align 8, !tbaa !5
  %1851 = load i64, ptr %31, align 8, !tbaa !9
  %1852 = getelementptr inbounds double, ptr %1850, i64 %1851
  %1853 = load double, ptr %1852, align 8, !tbaa !11
  %1854 = fadd double %1849, %1853
  %1855 = load double, ptr %32, align 8, !tbaa !11
  %1856 = fadd double %1854, %1855
  %1857 = load ptr, ptr %18, align 8, !tbaa !5
  %1858 = load i64, ptr %25, align 8, !tbaa !9
  %1859 = getelementptr inbounds double, ptr %1857, i64 %1858
  store double %1856, ptr %1859, align 8, !tbaa !11
  %1860 = load ptr, ptr %13, align 8, !tbaa !5
  %1861 = load i64, ptr %25, align 8, !tbaa !9
  %1862 = getelementptr inbounds double, ptr %1860, i64 %1861
  %1863 = load double, ptr %1862, align 8, !tbaa !11
  %1864 = load ptr, ptr %13, align 8, !tbaa !5
  %1865 = load i64, ptr %31, align 8, !tbaa !9
  %1866 = getelementptr inbounds double, ptr %1864, i64 %1865
  %1867 = load double, ptr %1866, align 8, !tbaa !11
  %1868 = fsub double %1863, %1867
  %1869 = load double, ptr %32, align 8, !tbaa !11
  %1870 = fsub double %1868, %1869
  %1871 = load ptr, ptr %15, align 8, !tbaa !5
  %1872 = load i64, ptr %25, align 8, !tbaa !9
  %1873 = getelementptr inbounds double, ptr %1871, i64 %1872
  store double %1870, ptr %1873, align 8, !tbaa !11
  br label %1874

1874:                                             ; preds = %1845
  %1875 = load i64, ptr %25, align 8, !tbaa !9
  %1876 = add nsw i64 %1875, 1
  store i64 %1876, ptr %25, align 8, !tbaa !9
  br label %1841, !llvm.loop !27

1877:                                             ; preds = %1841
  br label %1878

1878:                                             ; preds = %1877, %1827
  %1879 = load i64, ptr %28, align 8, !tbaa !9
  %1880 = sub nsw i64 %1879, 1
  store i64 %1880, ptr %37, align 8, !tbaa !9
  %1881 = load i64, ptr %28, align 8, !tbaa !9
  %1882 = add nsw i64 %1881, 1
  store i64 %1882, ptr %38, align 8, !tbaa !9
  store double 0.000000e+00, ptr %40, align 8, !tbaa !11
  store double 0.000000e+00, ptr %36, align 8, !tbaa !11
  store double 0.000000e+00, ptr %59, align 8, !tbaa !11
  %1883 = load i64, ptr %37, align 8, !tbaa !9
  store i64 %1883, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %25, align 8, !tbaa !9
  br label %1884

1884:                                             ; preds = %1917, %1878
  %1885 = load i64, ptr %25, align 8, !tbaa !9
  %1886 = load i64, ptr %20, align 8, !tbaa !9
  %1887 = icmp sle i64 %1885, %1886
  br i1 %1887, label %1888, label %1920

1888:                                             ; preds = %1884
  %1889 = load ptr, ptr %14, align 8, !tbaa !5
  %1890 = load i64, ptr %25, align 8, !tbaa !9
  %1891 = getelementptr inbounds double, ptr %1889, i64 %1890
  %1892 = load double, ptr %1891, align 8, !tbaa !11
  %1893 = load ptr, ptr %18, align 8, !tbaa !5
  %1894 = load i64, ptr %25, align 8, !tbaa !9
  %1895 = getelementptr inbounds double, ptr %1893, i64 %1894
  %1896 = load double, ptr %1895, align 8, !tbaa !11
  %1897 = load ptr, ptr %15, align 8, !tbaa !5
  %1898 = load i64, ptr %25, align 8, !tbaa !9
  %1899 = getelementptr inbounds double, ptr %1897, i64 %1898
  %1900 = load double, ptr %1899, align 8, !tbaa !11
  %1901 = fmul double %1896, %1900
  %1902 = fdiv double %1892, %1901
  store double %1902, ptr %42, align 8, !tbaa !11
  %1903 = load ptr, ptr %14, align 8, !tbaa !5
  %1904 = load i64, ptr %25, align 8, !tbaa !9
  %1905 = getelementptr inbounds double, ptr %1903, i64 %1904
  %1906 = load double, ptr %1905, align 8, !tbaa !11
  %1907 = load double, ptr %42, align 8, !tbaa !11
  %1908 = load double, ptr %36, align 8, !tbaa !11
  %1909 = call double @llvm.fmuladd.f64(double %1906, double %1907, double %1908)
  store double %1909, ptr %36, align 8, !tbaa !11
  %1910 = load double, ptr %42, align 8, !tbaa !11
  %1911 = load double, ptr %42, align 8, !tbaa !11
  %1912 = load double, ptr %40, align 8, !tbaa !11
  %1913 = call double @llvm.fmuladd.f64(double %1910, double %1911, double %1912)
  store double %1913, ptr %40, align 8, !tbaa !11
  %1914 = load double, ptr %36, align 8, !tbaa !11
  %1915 = load double, ptr %59, align 8, !tbaa !11
  %1916 = fadd double %1915, %1914
  store double %1916, ptr %59, align 8, !tbaa !11
  br label %1917

1917:                                             ; preds = %1888
  %1918 = load i64, ptr %25, align 8, !tbaa !9
  %1919 = add nsw i64 %1918, 1
  store i64 %1919, ptr %25, align 8, !tbaa !9
  br label %1884, !llvm.loop !28

1920:                                             ; preds = %1884
  %1921 = load double, ptr %59, align 8, !tbaa !11
  %1922 = fcmp oge double %1921, 0.000000e+00
  br i1 %1922, label %1923, label %1925

1923:                                             ; preds = %1920
  %1924 = load double, ptr %59, align 8, !tbaa !11
  br label %1928

1925:                                             ; preds = %1920
  %1926 = load double, ptr %59, align 8, !tbaa !11
  %1927 = fneg double %1926
  br label %1928

1928:                                             ; preds = %1925, %1923
  %1929 = phi double [ %1924, %1923 ], [ %1927, %1925 ]
  store double %1929, ptr %59, align 8, !tbaa !11
  store double 0.000000e+00, ptr %39, align 8, !tbaa !11
  store double 0.000000e+00, ptr %33, align 8, !tbaa !11
  %1930 = load i64, ptr %38, align 8, !tbaa !9
  store i64 %1930, ptr %20, align 8, !tbaa !9
  %1931 = load ptr, ptr %11, align 8, !tbaa !5
  %1932 = load i64, ptr %1931, align 8, !tbaa !9
  store i64 %1932, ptr %25, align 8, !tbaa !9
  br label %1933

1933:                                             ; preds = %1966, %1928
  %1934 = load i64, ptr %25, align 8, !tbaa !9
  %1935 = load i64, ptr %20, align 8, !tbaa !9
  %1936 = icmp sge i64 %1934, %1935
  br i1 %1936, label %1937, label %1969

1937:                                             ; preds = %1933
  %1938 = load ptr, ptr %14, align 8, !tbaa !5
  %1939 = load i64, ptr %25, align 8, !tbaa !9
  %1940 = getelementptr inbounds double, ptr %1938, i64 %1939
  %1941 = load double, ptr %1940, align 8, !tbaa !11
  %1942 = load ptr, ptr %18, align 8, !tbaa !5
  %1943 = load i64, ptr %25, align 8, !tbaa !9
  %1944 = getelementptr inbounds double, ptr %1942, i64 %1943
  %1945 = load double, ptr %1944, align 8, !tbaa !11
  %1946 = load ptr, ptr %15, align 8, !tbaa !5
  %1947 = load i64, ptr %25, align 8, !tbaa !9
  %1948 = getelementptr inbounds double, ptr %1946, i64 %1947
  %1949 = load double, ptr %1948, align 8, !tbaa !11
  %1950 = fmul double %1945, %1949
  %1951 = fdiv double %1941, %1950
  store double %1951, ptr %42, align 8, !tbaa !11
  %1952 = load ptr, ptr %14, align 8, !tbaa !5
  %1953 = load i64, ptr %25, align 8, !tbaa !9
  %1954 = getelementptr inbounds double, ptr %1952, i64 %1953
  %1955 = load double, ptr %1954, align 8, !tbaa !11
  %1956 = load double, ptr %42, align 8, !tbaa !11
  %1957 = load double, ptr %33, align 8, !tbaa !11
  %1958 = call double @llvm.fmuladd.f64(double %1955, double %1956, double %1957)
  store double %1958, ptr %33, align 8, !tbaa !11
  %1959 = load double, ptr %42, align 8, !tbaa !11
  %1960 = load double, ptr %42, align 8, !tbaa !11
  %1961 = load double, ptr %39, align 8, !tbaa !11
  %1962 = call double @llvm.fmuladd.f64(double %1959, double %1960, double %1961)
  store double %1962, ptr %39, align 8, !tbaa !11
  %1963 = load double, ptr %33, align 8, !tbaa !11
  %1964 = load double, ptr %59, align 8, !tbaa !11
  %1965 = fadd double %1964, %1963
  store double %1965, ptr %59, align 8, !tbaa !11
  br label %1966

1966:                                             ; preds = %1937
  %1967 = load i64, ptr %25, align 8, !tbaa !9
  %1968 = add nsw i64 %1967, -1
  store i64 %1968, ptr %25, align 8, !tbaa !9
  br label %1933, !llvm.loop !29

1969:                                             ; preds = %1933
  %1970 = load double, ptr %61, align 8, !tbaa !11
  %1971 = load double, ptr %33, align 8, !tbaa !11
  %1972 = fadd double %1970, %1971
  %1973 = load double, ptr %36, align 8, !tbaa !11
  %1974 = fadd double %1972, %1973
  store double %1974, ptr %26, align 8, !tbaa !11
  store i64 0, ptr %57, align 8, !tbaa !9
  %1975 = load i64, ptr %58, align 8, !tbaa !9
  %1976 = icmp ne i64 %1975, 0
  br i1 %1976, label %1977, label %1982

1977:                                             ; preds = %1969
  %1978 = load double, ptr %26, align 8, !tbaa !11
  %1979 = fcmp olt double %1978, 0.000000e+00
  br i1 %1979, label %1980, label %1981

1980:                                             ; preds = %1977
  store i64 1, ptr %57, align 8, !tbaa !9
  br label %1981

1981:                                             ; preds = %1980, %1977
  br label %1987

1982:                                             ; preds = %1969
  %1983 = load double, ptr %26, align 8, !tbaa !11
  %1984 = fcmp ogt double %1983, 0.000000e+00
  br i1 %1984, label %1985, label %1986

1985:                                             ; preds = %1982
  store i64 1, ptr %57, align 8, !tbaa !9
  br label %1986

1986:                                             ; preds = %1985, %1982
  br label %1987

1987:                                             ; preds = %1986, %1981
  %1988 = load i64, ptr %28, align 8, !tbaa !9
  %1989 = icmp eq i64 %1988, 1
  br i1 %1989, label %1995, label %1990

1990:                                             ; preds = %1987
  %1991 = load i64, ptr %28, align 8, !tbaa !9
  %1992 = load ptr, ptr %11, align 8, !tbaa !5
  %1993 = load i64, ptr %1992, align 8, !tbaa !9
  %1994 = icmp eq i64 %1991, %1993
  br i1 %1994, label %1995, label %1996

1995:                                             ; preds = %1990, %1987
  store i64 0, ptr %57, align 8, !tbaa !9
  br label %1996

1996:                                             ; preds = %1995, %1990
  %1997 = load ptr, ptr %14, align 8, !tbaa !5
  %1998 = load i64, ptr %28, align 8, !tbaa !9
  %1999 = getelementptr inbounds double, ptr %1997, i64 %1998
  %2000 = load double, ptr %1999, align 8, !tbaa !11
  %2001 = load ptr, ptr %18, align 8, !tbaa !5
  %2002 = load i64, ptr %28, align 8, !tbaa !9
  %2003 = getelementptr inbounds double, ptr %2001, i64 %2002
  %2004 = load double, ptr %2003, align 8, !tbaa !11
  %2005 = load ptr, ptr %15, align 8, !tbaa !5
  %2006 = load i64, ptr %28, align 8, !tbaa !9
  %2007 = getelementptr inbounds double, ptr %2005, i64 %2006
  %2008 = load double, ptr %2007, align 8, !tbaa !11
  %2009 = fmul double %2004, %2008
  %2010 = fdiv double %2000, %2009
  store double %2010, ptr %42, align 8, !tbaa !11
  %2011 = load double, ptr %40, align 8, !tbaa !11
  %2012 = load double, ptr %39, align 8, !tbaa !11
  %2013 = fadd double %2011, %2012
  %2014 = load double, ptr %42, align 8, !tbaa !11
  %2015 = load double, ptr %42, align 8, !tbaa !11
  %2016 = call double @llvm.fmuladd.f64(double %2014, double %2015, double %2013)
  store double %2016, ptr %29, align 8, !tbaa !11
  %2017 = load ptr, ptr %14, align 8, !tbaa !5
  %2018 = load i64, ptr %28, align 8, !tbaa !9
  %2019 = getelementptr inbounds double, ptr %2017, i64 %2018
  %2020 = load double, ptr %2019, align 8, !tbaa !11
  %2021 = load double, ptr %42, align 8, !tbaa !11
  %2022 = fmul double %2020, %2021
  store double %2022, ptr %42, align 8, !tbaa !11
  %2023 = load double, ptr %42, align 8, !tbaa !11
  %2024 = load double, ptr %26, align 8, !tbaa !11
  %2025 = fadd double %2024, %2023
  store double %2025, ptr %26, align 8, !tbaa !11
  %2026 = load double, ptr %33, align 8, !tbaa !11
  %2027 = load double, ptr %36, align 8, !tbaa !11
  %2028 = fsub double %2026, %2027
  %2029 = load double, ptr %59, align 8, !tbaa !11
  %2030 = call double @llvm.fmuladd.f64(double %2028, double 8.000000e+00, double %2029)
  %2031 = load double, ptr %61, align 8, !tbaa !11
  %2032 = call double @llvm.fmuladd.f64(double %2031, double 2.000000e+00, double %2030)
  %2033 = load double, ptr %42, align 8, !tbaa !11
  %2034 = fcmp oge double %2033, 0.000000e+00
  br i1 %2034, label %2035, label %2037

2035:                                             ; preds = %1996
  %2036 = load double, ptr %42, align 8, !tbaa !11
  br label %2040

2037:                                             ; preds = %1996
  %2038 = load double, ptr %42, align 8, !tbaa !11
  %2039 = fneg double %2038
  br label %2040

2040:                                             ; preds = %2037, %2035
  %2041 = phi double [ %2036, %2035 ], [ %2039, %2037 ]
  %2042 = call double @llvm.fmuladd.f64(double %2041, double 3.000000e+00, double %2032)
  %2043 = load double, ptr %35, align 8, !tbaa !11
  %2044 = fcmp oge double %2043, 0.000000e+00
  br i1 %2044, label %2045, label %2047

2045:                                             ; preds = %2040
  %2046 = load double, ptr %35, align 8, !tbaa !11
  br label %2050

2047:                                             ; preds = %2040
  %2048 = load double, ptr %35, align 8, !tbaa !11
  %2049 = fneg double %2048
  br label %2050

2050:                                             ; preds = %2047, %2045
  %2051 = phi double [ %2046, %2045 ], [ %2049, %2047 ]
  %2052 = load double, ptr %29, align 8, !tbaa !11
  %2053 = call double @llvm.fmuladd.f64(double %2051, double %2052, double %2042)
  store double %2053, ptr %59, align 8, !tbaa !11
  %2054 = load double, ptr %26, align 8, !tbaa !11
  %2055 = fcmp oge double %2054, 0.000000e+00
  br i1 %2055, label %2056, label %2058

2056:                                             ; preds = %2050
  %2057 = load double, ptr %26, align 8, !tbaa !11
  br label %2061

2058:                                             ; preds = %2050
  %2059 = load double, ptr %26, align 8, !tbaa !11
  %2060 = fneg double %2059
  br label %2061

2061:                                             ; preds = %2058, %2056
  %2062 = phi double [ %2057, %2056 ], [ %2060, %2058 ]
  %2063 = load double, ptr %34, align 8, !tbaa !11
  %2064 = load double, ptr %59, align 8, !tbaa !11
  %2065 = fmul double %2063, %2064
  %2066 = fcmp ole double %2062, %2065
  br i1 %2066, label %2067, label %2068

2067:                                             ; preds = %2061
  br label %3582

2068:                                             ; preds = %2061
  %2069 = load double, ptr %26, align 8, !tbaa !11
  %2070 = fcmp ole double %2069, 0.000000e+00
  br i1 %2070, label %2071, label %2081

2071:                                             ; preds = %2068
  %2072 = load double, ptr %44, align 8, !tbaa !11
  %2073 = load double, ptr %35, align 8, !tbaa !11
  %2074 = fcmp oge double %2072, %2073
  br i1 %2074, label %2075, label %2077

2075:                                             ; preds = %2071
  %2076 = load double, ptr %44, align 8, !tbaa !11
  br label %2079

2077:                                             ; preds = %2071
  %2078 = load double, ptr %35, align 8, !tbaa !11
  br label %2079

2079:                                             ; preds = %2077, %2075
  %2080 = phi double [ %2076, %2075 ], [ %2078, %2077 ]
  store double %2080, ptr %44, align 8, !tbaa !11
  br label %2091

2081:                                             ; preds = %2068
  %2082 = load double, ptr %45, align 8, !tbaa !11
  %2083 = load double, ptr %35, align 8, !tbaa !11
  %2084 = fcmp ole double %2082, %2083
  br i1 %2084, label %2085, label %2087

2085:                                             ; preds = %2081
  %2086 = load double, ptr %45, align 8, !tbaa !11
  br label %2089

2087:                                             ; preds = %2081
  %2088 = load double, ptr %35, align 8, !tbaa !11
  br label %2089

2089:                                             ; preds = %2087, %2085
  %2090 = phi double [ %2086, %2085 ], [ %2088, %2087 ]
  store double %2090, ptr %45, align 8, !tbaa !11
  br label %2091

2091:                                             ; preds = %2089, %2079
  %2092 = load i64, ptr %51, align 8, !tbaa !9
  %2093 = add nsw i64 %2092, 1
  store i64 %2093, ptr %51, align 8, !tbaa !9
  %2094 = load i64, ptr %57, align 8, !tbaa !9
  %2095 = icmp ne i64 %2094, 0
  br i1 %2095, label %2274, label %2096

2096:                                             ; preds = %2091
  %2097 = load ptr, ptr %18, align 8, !tbaa !5
  %2098 = load i64, ptr %31, align 8, !tbaa !9
  %2099 = getelementptr inbounds double, ptr %2097, i64 %2098
  %2100 = load double, ptr %2099, align 8, !tbaa !11
  %2101 = load ptr, ptr %15, align 8, !tbaa !5
  %2102 = load i64, ptr %31, align 8, !tbaa !9
  %2103 = getelementptr inbounds double, ptr %2101, i64 %2102
  %2104 = load double, ptr %2103, align 8, !tbaa !11
  %2105 = fmul double %2100, %2104
  store double %2105, ptr %60, align 8, !tbaa !11
  %2106 = load ptr, ptr %18, align 8, !tbaa !5
  %2107 = load ptr, ptr %12, align 8, !tbaa !5
  %2108 = load i64, ptr %2107, align 8, !tbaa !9
  %2109 = getelementptr inbounds double, ptr %2106, i64 %2108
  %2110 = load double, ptr %2109, align 8, !tbaa !11
  %2111 = load ptr, ptr %15, align 8, !tbaa !5
  %2112 = load ptr, ptr %12, align 8, !tbaa !5
  %2113 = load i64, ptr %2112, align 8, !tbaa !9
  %2114 = getelementptr inbounds double, ptr %2111, i64 %2113
  %2115 = load double, ptr %2114, align 8, !tbaa !11
  %2116 = fmul double %2110, %2115
  store double %2116, ptr %52, align 8, !tbaa !11
  %2117 = load i64, ptr %58, align 8, !tbaa !9
  %2118 = icmp ne i64 %2117, 0
  br i1 %2118, label %2119, label %2137

2119:                                             ; preds = %2096
  %2120 = load ptr, ptr %14, align 8, !tbaa !5
  %2121 = load ptr, ptr %12, align 8, !tbaa !5
  %2122 = load i64, ptr %2121, align 8, !tbaa !9
  %2123 = getelementptr inbounds double, ptr %2120, i64 %2122
  %2124 = load double, ptr %2123, align 8, !tbaa !11
  %2125 = load double, ptr %52, align 8, !tbaa !11
  %2126 = fdiv double %2124, %2125
  store double %2126, ptr %21, align 8, !tbaa !11
  %2127 = load double, ptr %26, align 8, !tbaa !11
  %2128 = load double, ptr %60, align 8, !tbaa !11
  %2129 = load double, ptr %29, align 8, !tbaa !11
  %2130 = fneg double %2128
  %2131 = call double @llvm.fmuladd.f64(double %2130, double %2129, double %2127)
  %2132 = load double, ptr %49, align 8, !tbaa !11
  %2133 = load double, ptr %21, align 8, !tbaa !11
  %2134 = load double, ptr %21, align 8, !tbaa !11
  %2135 = fmul double %2133, %2134
  %2136 = call double @llvm.fmuladd.f64(double %2132, double %2135, double %2131)
  store double %2136, ptr %24, align 8, !tbaa !11
  br label %2155

2137:                                             ; preds = %2096
  %2138 = load ptr, ptr %14, align 8, !tbaa !5
  %2139 = load i64, ptr %31, align 8, !tbaa !9
  %2140 = getelementptr inbounds double, ptr %2138, i64 %2139
  %2141 = load double, ptr %2140, align 8, !tbaa !11
  %2142 = load double, ptr %60, align 8, !tbaa !11
  %2143 = fdiv double %2141, %2142
  store double %2143, ptr %21, align 8, !tbaa !11
  %2144 = load double, ptr %26, align 8, !tbaa !11
  %2145 = load double, ptr %52, align 8, !tbaa !11
  %2146 = load double, ptr %29, align 8, !tbaa !11
  %2147 = fneg double %2145
  %2148 = call double @llvm.fmuladd.f64(double %2147, double %2146, double %2144)
  %2149 = load double, ptr %49, align 8, !tbaa !11
  %2150 = load double, ptr %21, align 8, !tbaa !11
  %2151 = load double, ptr %21, align 8, !tbaa !11
  %2152 = fmul double %2150, %2151
  %2153 = fneg double %2149
  %2154 = call double @llvm.fmuladd.f64(double %2153, double %2152, double %2148)
  store double %2154, ptr %24, align 8, !tbaa !11
  br label %2155

2155:                                             ; preds = %2137, %2119
  %2156 = load double, ptr %60, align 8, !tbaa !11
  %2157 = load double, ptr %52, align 8, !tbaa !11
  %2158 = fadd double %2156, %2157
  %2159 = load double, ptr %26, align 8, !tbaa !11
  %2160 = load double, ptr %60, align 8, !tbaa !11
  %2161 = load double, ptr %52, align 8, !tbaa !11
  %2162 = fmul double %2160, %2161
  %2163 = load double, ptr %29, align 8, !tbaa !11
  %2164 = fmul double %2162, %2163
  %2165 = fneg double %2164
  %2166 = call double @llvm.fmuladd.f64(double %2158, double %2159, double %2165)
  store double %2166, ptr %22, align 8, !tbaa !11
  %2167 = load double, ptr %60, align 8, !tbaa !11
  %2168 = load double, ptr %52, align 8, !tbaa !11
  %2169 = fmul double %2167, %2168
  %2170 = load double, ptr %26, align 8, !tbaa !11
  %2171 = fmul double %2169, %2170
  store double %2171, ptr %23, align 8, !tbaa !11
  %2172 = load double, ptr %24, align 8, !tbaa !11
  %2173 = fcmp oeq double %2172, 0.000000e+00
  br i1 %2173, label %2174, label %2221

2174:                                             ; preds = %2155
  %2175 = load double, ptr %22, align 8, !tbaa !11
  %2176 = fcmp oeq double %2175, 0.000000e+00
  br i1 %2176, label %2177, label %2217

2177:                                             ; preds = %2174
  %2178 = load i64, ptr %58, align 8, !tbaa !9
  %2179 = icmp ne i64 %2178, 0
  br i1 %2179, label %2180, label %2199

2180:                                             ; preds = %2177
  %2181 = load ptr, ptr %14, align 8, !tbaa !5
  %2182 = load ptr, ptr %12, align 8, !tbaa !5
  %2183 = load i64, ptr %2182, align 8, !tbaa !9
  %2184 = getelementptr inbounds double, ptr %2181, i64 %2183
  %2185 = load double, ptr %2184, align 8, !tbaa !11
  %2186 = load ptr, ptr %14, align 8, !tbaa !5
  %2187 = load ptr, ptr %12, align 8, !tbaa !5
  %2188 = load i64, ptr %2187, align 8, !tbaa !9
  %2189 = getelementptr inbounds double, ptr %2186, i64 %2188
  %2190 = load double, ptr %2189, align 8, !tbaa !11
  %2191 = load double, ptr %60, align 8, !tbaa !11
  %2192 = load double, ptr %60, align 8, !tbaa !11
  %2193 = fmul double %2191, %2192
  %2194 = load double, ptr %40, align 8, !tbaa !11
  %2195 = load double, ptr %39, align 8, !tbaa !11
  %2196 = fadd double %2194, %2195
  %2197 = fmul double %2193, %2196
  %2198 = call double @llvm.fmuladd.f64(double %2185, double %2190, double %2197)
  store double %2198, ptr %22, align 8, !tbaa !11
  br label %2216

2199:                                             ; preds = %2177
  %2200 = load ptr, ptr %14, align 8, !tbaa !5
  %2201 = load i64, ptr %31, align 8, !tbaa !9
  %2202 = getelementptr inbounds double, ptr %2200, i64 %2201
  %2203 = load double, ptr %2202, align 8, !tbaa !11
  %2204 = load ptr, ptr %14, align 8, !tbaa !5
  %2205 = load i64, ptr %31, align 8, !tbaa !9
  %2206 = getelementptr inbounds double, ptr %2204, i64 %2205
  %2207 = load double, ptr %2206, align 8, !tbaa !11
  %2208 = load double, ptr %52, align 8, !tbaa !11
  %2209 = load double, ptr %52, align 8, !tbaa !11
  %2210 = fmul double %2208, %2209
  %2211 = load double, ptr %40, align 8, !tbaa !11
  %2212 = load double, ptr %39, align 8, !tbaa !11
  %2213 = fadd double %2211, %2212
  %2214 = fmul double %2210, %2213
  %2215 = call double @llvm.fmuladd.f64(double %2203, double %2207, double %2214)
  store double %2215, ptr %22, align 8, !tbaa !11
  br label %2216

2216:                                             ; preds = %2199, %2180
  br label %2217

2217:                                             ; preds = %2216, %2174
  %2218 = load double, ptr %23, align 8, !tbaa !11
  %2219 = load double, ptr %22, align 8, !tbaa !11
  %2220 = fdiv double %2218, %2219
  store double %2220, ptr %32, align 8, !tbaa !11
  br label %2273

2221:                                             ; preds = %2155
  %2222 = load double, ptr %22, align 8, !tbaa !11
  %2223 = fcmp ole double %2222, 0.000000e+00
  br i1 %2223, label %2224, label %2248

2224:                                             ; preds = %2221
  %2225 = load double, ptr %22, align 8, !tbaa !11
  %2226 = load double, ptr %22, align 8, !tbaa !11
  %2227 = load double, ptr %22, align 8, !tbaa !11
  %2228 = load double, ptr %23, align 8, !tbaa !11
  %2229 = fmul double %2228, 4.000000e+00
  %2230 = load double, ptr %24, align 8, !tbaa !11
  %2231 = fmul double %2229, %2230
  %2232 = fneg double %2231
  %2233 = call double @llvm.fmuladd.f64(double %2226, double %2227, double %2232)
  store double %2233, ptr %21, align 8, !tbaa !11
  %2234 = load double, ptr %21, align 8, !tbaa !11
  %2235 = fcmp oge double %2234, 0.000000e+00
  br i1 %2235, label %2236, label %2238

2236:                                             ; preds = %2224
  %2237 = load double, ptr %21, align 8, !tbaa !11
  br label %2241

2238:                                             ; preds = %2224
  %2239 = load double, ptr %21, align 8, !tbaa !11
  %2240 = fneg double %2239
  br label %2241

2241:                                             ; preds = %2238, %2236
  %2242 = phi double [ %2237, %2236 ], [ %2240, %2238 ]
  %2243 = call double @sqrt(double noundef %2242) #5
  %2244 = fsub double %2225, %2243
  %2245 = load double, ptr %24, align 8, !tbaa !11
  %2246 = fmul double %2245, 2.000000e+00
  %2247 = fdiv double %2244, %2246
  store double %2247, ptr %32, align 8, !tbaa !11
  br label %2272

2248:                                             ; preds = %2221
  %2249 = load double, ptr %23, align 8, !tbaa !11
  %2250 = fmul double %2249, 2.000000e+00
  %2251 = load double, ptr %22, align 8, !tbaa !11
  %2252 = load double, ptr %22, align 8, !tbaa !11
  %2253 = load double, ptr %22, align 8, !tbaa !11
  %2254 = load double, ptr %23, align 8, !tbaa !11
  %2255 = fmul double %2254, 4.000000e+00
  %2256 = load double, ptr %24, align 8, !tbaa !11
  %2257 = fmul double %2255, %2256
  %2258 = fneg double %2257
  %2259 = call double @llvm.fmuladd.f64(double %2252, double %2253, double %2258)
  store double %2259, ptr %21, align 8, !tbaa !11
  %2260 = load double, ptr %21, align 8, !tbaa !11
  %2261 = fcmp oge double %2260, 0.000000e+00
  br i1 %2261, label %2262, label %2264

2262:                                             ; preds = %2248
  %2263 = load double, ptr %21, align 8, !tbaa !11
  br label %2267

2264:                                             ; preds = %2248
  %2265 = load double, ptr %21, align 8, !tbaa !11
  %2266 = fneg double %2265
  br label %2267

2267:                                             ; preds = %2264, %2262
  %2268 = phi double [ %2263, %2262 ], [ %2266, %2264 ]
  %2269 = call double @sqrt(double noundef %2268) #5
  %2270 = fadd double %2251, %2269
  %2271 = fdiv double %2250, %2270
  store double %2271, ptr %32, align 8, !tbaa !11
  br label %2272

2272:                                             ; preds = %2267, %2241
  br label %2273

2273:                                             ; preds = %2272, %2217
  br label %2476

2274:                                             ; preds = %2091
  %2275 = load ptr, ptr %18, align 8, !tbaa !5
  %2276 = load i64, ptr %37, align 8, !tbaa !9
  %2277 = getelementptr inbounds double, ptr %2275, i64 %2276
  %2278 = load double, ptr %2277, align 8, !tbaa !11
  %2279 = load ptr, ptr %15, align 8, !tbaa !5
  %2280 = load i64, ptr %37, align 8, !tbaa !9
  %2281 = getelementptr inbounds double, ptr %2279, i64 %2280
  %2282 = load double, ptr %2281, align 8, !tbaa !11
  %2283 = fmul double %2278, %2282
  store double %2283, ptr %48, align 8, !tbaa !11
  %2284 = load ptr, ptr %18, align 8, !tbaa !5
  %2285 = load i64, ptr %38, align 8, !tbaa !9
  %2286 = getelementptr inbounds double, ptr %2284, i64 %2285
  %2287 = load double, ptr %2286, align 8, !tbaa !11
  %2288 = load ptr, ptr %15, align 8, !tbaa !5
  %2289 = load i64, ptr %38, align 8, !tbaa !9
  %2290 = getelementptr inbounds double, ptr %2288, i64 %2289
  %2291 = load double, ptr %2290, align 8, !tbaa !11
  %2292 = fmul double %2287, %2291
  store double %2292, ptr %50, align 8, !tbaa !11
  %2293 = load double, ptr %61, align 8, !tbaa !11
  %2294 = load double, ptr %36, align 8, !tbaa !11
  %2295 = fadd double %2293, %2294
  %2296 = load double, ptr %33, align 8, !tbaa !11
  %2297 = fadd double %2295, %2296
  store double %2297, ptr %42, align 8, !tbaa !11
  %2298 = load i64, ptr %58, align 8, !tbaa !9
  %2299 = icmp ne i64 %2298, 0
  br i1 %2299, label %2300, label %2371

2300:                                             ; preds = %2274
  %2301 = load ptr, ptr %14, align 8, !tbaa !5
  %2302 = load i64, ptr %37, align 8, !tbaa !9
  %2303 = getelementptr inbounds double, ptr %2301, i64 %2302
  %2304 = load double, ptr %2303, align 8, !tbaa !11
  %2305 = load double, ptr %48, align 8, !tbaa !11
  %2306 = fdiv double %2304, %2305
  store double %2306, ptr %46, align 8, !tbaa !11
  %2307 = load double, ptr %46, align 8, !tbaa !11
  %2308 = load double, ptr %46, align 8, !tbaa !11
  %2309 = fmul double %2308, %2307
  store double %2309, ptr %46, align 8, !tbaa !11
  %2310 = load double, ptr %42, align 8, !tbaa !11
  %2311 = load double, ptr %50, align 8, !tbaa !11
  %2312 = load double, ptr %40, align 8, !tbaa !11
  %2313 = load double, ptr %39, align 8, !tbaa !11
  %2314 = fadd double %2312, %2313
  %2315 = fneg double %2311
  %2316 = call double @llvm.fmuladd.f64(double %2315, double %2314, double %2310)
  %2317 = load ptr, ptr %13, align 8, !tbaa !5
  %2318 = load i64, ptr %37, align 8, !tbaa !9
  %2319 = getelementptr inbounds double, ptr %2317, i64 %2318
  %2320 = load double, ptr %2319, align 8, !tbaa !11
  %2321 = load ptr, ptr %13, align 8, !tbaa !5
  %2322 = load i64, ptr %38, align 8, !tbaa !9
  %2323 = getelementptr inbounds double, ptr %2321, i64 %2322
  %2324 = load double, ptr %2323, align 8, !tbaa !11
  %2325 = fsub double %2320, %2324
  %2326 = load ptr, ptr %13, align 8, !tbaa !5
  %2327 = load i64, ptr %37, align 8, !tbaa !9
  %2328 = getelementptr inbounds double, ptr %2326, i64 %2327
  %2329 = load double, ptr %2328, align 8, !tbaa !11
  %2330 = load ptr, ptr %13, align 8, !tbaa !5
  %2331 = load i64, ptr %38, align 8, !tbaa !9
  %2332 = getelementptr inbounds double, ptr %2330, i64 %2331
  %2333 = load double, ptr %2332, align 8, !tbaa !11
  %2334 = fadd double %2329, %2333
  %2335 = fmul double %2325, %2334
  %2336 = load double, ptr %46, align 8, !tbaa !11
  %2337 = fneg double %2335
  %2338 = call double @llvm.fmuladd.f64(double %2337, double %2336, double %2316)
  store double %2338, ptr %24, align 8, !tbaa !11
  %2339 = load ptr, ptr %14, align 8, !tbaa !5
  %2340 = load i64, ptr %37, align 8, !tbaa !9
  %2341 = getelementptr inbounds double, ptr %2339, i64 %2340
  %2342 = load double, ptr %2341, align 8, !tbaa !11
  %2343 = load ptr, ptr %14, align 8, !tbaa !5
  %2344 = load i64, ptr %37, align 8, !tbaa !9
  %2345 = getelementptr inbounds double, ptr %2343, i64 %2344
  %2346 = load double, ptr %2345, align 8, !tbaa !11
  %2347 = fmul double %2342, %2346
  %2348 = getelementptr inbounds [3 x double], ptr %30, i64 0, i64 0
  store double %2347, ptr %2348, align 16, !tbaa !11
  %2349 = load double, ptr %40, align 8, !tbaa !11
  %2350 = load double, ptr %46, align 8, !tbaa !11
  %2351 = fcmp olt double %2349, %2350
  br i1 %2351, label %2352, label %2359

2352:                                             ; preds = %2300
  %2353 = load double, ptr %50, align 8, !tbaa !11
  %2354 = load double, ptr %50, align 8, !tbaa !11
  %2355 = fmul double %2353, %2354
  %2356 = load double, ptr %39, align 8, !tbaa !11
  %2357 = fmul double %2355, %2356
  %2358 = getelementptr inbounds [3 x double], ptr %30, i64 0, i64 2
  store double %2357, ptr %2358, align 16, !tbaa !11
  br label %2370

2359:                                             ; preds = %2300
  %2360 = load double, ptr %50, align 8, !tbaa !11
  %2361 = load double, ptr %50, align 8, !tbaa !11
  %2362 = fmul double %2360, %2361
  %2363 = load double, ptr %40, align 8, !tbaa !11
  %2364 = load double, ptr %46, align 8, !tbaa !11
  %2365 = fsub double %2363, %2364
  %2366 = load double, ptr %39, align 8, !tbaa !11
  %2367 = fadd double %2365, %2366
  %2368 = fmul double %2362, %2367
  %2369 = getelementptr inbounds [3 x double], ptr %30, i64 0, i64 2
  store double %2368, ptr %2369, align 16, !tbaa !11
  br label %2370

2370:                                             ; preds = %2359, %2352
  br label %2442

2371:                                             ; preds = %2274
  %2372 = load ptr, ptr %14, align 8, !tbaa !5
  %2373 = load i64, ptr %38, align 8, !tbaa !9
  %2374 = getelementptr inbounds double, ptr %2372, i64 %2373
  %2375 = load double, ptr %2374, align 8, !tbaa !11
  %2376 = load double, ptr %50, align 8, !tbaa !11
  %2377 = fdiv double %2375, %2376
  store double %2377, ptr %46, align 8, !tbaa !11
  %2378 = load double, ptr %46, align 8, !tbaa !11
  %2379 = load double, ptr %46, align 8, !tbaa !11
  %2380 = fmul double %2379, %2378
  store double %2380, ptr %46, align 8, !tbaa !11
  %2381 = load double, ptr %42, align 8, !tbaa !11
  %2382 = load double, ptr %48, align 8, !tbaa !11
  %2383 = load double, ptr %40, align 8, !tbaa !11
  %2384 = load double, ptr %39, align 8, !tbaa !11
  %2385 = fadd double %2383, %2384
  %2386 = fneg double %2382
  %2387 = call double @llvm.fmuladd.f64(double %2386, double %2385, double %2381)
  %2388 = load ptr, ptr %13, align 8, !tbaa !5
  %2389 = load i64, ptr %38, align 8, !tbaa !9
  %2390 = getelementptr inbounds double, ptr %2388, i64 %2389
  %2391 = load double, ptr %2390, align 8, !tbaa !11
  %2392 = load ptr, ptr %13, align 8, !tbaa !5
  %2393 = load i64, ptr %37, align 8, !tbaa !9
  %2394 = getelementptr inbounds double, ptr %2392, i64 %2393
  %2395 = load double, ptr %2394, align 8, !tbaa !11
  %2396 = fsub double %2391, %2395
  %2397 = load ptr, ptr %13, align 8, !tbaa !5
  %2398 = load i64, ptr %37, align 8, !tbaa !9
  %2399 = getelementptr inbounds double, ptr %2397, i64 %2398
  %2400 = load double, ptr %2399, align 8, !tbaa !11
  %2401 = load ptr, ptr %13, align 8, !tbaa !5
  %2402 = load i64, ptr %38, align 8, !tbaa !9
  %2403 = getelementptr inbounds double, ptr %2401, i64 %2402
  %2404 = load double, ptr %2403, align 8, !tbaa !11
  %2405 = fadd double %2400, %2404
  %2406 = fmul double %2396, %2405
  %2407 = load double, ptr %46, align 8, !tbaa !11
  %2408 = fneg double %2406
  %2409 = call double @llvm.fmuladd.f64(double %2408, double %2407, double %2387)
  store double %2409, ptr %24, align 8, !tbaa !11
  %2410 = load double, ptr %39, align 8, !tbaa !11
  %2411 = load double, ptr %46, align 8, !tbaa !11
  %2412 = fcmp olt double %2410, %2411
  br i1 %2412, label %2413, label %2420

2413:                                             ; preds = %2371
  %2414 = load double, ptr %48, align 8, !tbaa !11
  %2415 = load double, ptr %48, align 8, !tbaa !11
  %2416 = fmul double %2414, %2415
  %2417 = load double, ptr %40, align 8, !tbaa !11
  %2418 = fmul double %2416, %2417
  %2419 = getelementptr inbounds [3 x double], ptr %30, i64 0, i64 0
  store double %2418, ptr %2419, align 16, !tbaa !11
  br label %2431

2420:                                             ; preds = %2371
  %2421 = load double, ptr %48, align 8, !tbaa !11
  %2422 = load double, ptr %48, align 8, !tbaa !11
  %2423 = fmul double %2421, %2422
  %2424 = load double, ptr %40, align 8, !tbaa !11
  %2425 = load double, ptr %39, align 8, !tbaa !11
  %2426 = load double, ptr %46, align 8, !tbaa !11
  %2427 = fsub double %2425, %2426
  %2428 = fadd double %2424, %2427
  %2429 = fmul double %2423, %2428
  %2430 = getelementptr inbounds [3 x double], ptr %30, i64 0, i64 0
  store double %2429, ptr %2430, align 16, !tbaa !11
  br label %2431

2431:                                             ; preds = %2420, %2413
  %2432 = load ptr, ptr %14, align 8, !tbaa !5
  %2433 = load i64, ptr %38, align 8, !tbaa !9
  %2434 = getelementptr inbounds double, ptr %2432, i64 %2433
  %2435 = load double, ptr %2434, align 8, !tbaa !11
  %2436 = load ptr, ptr %14, align 8, !tbaa !5
  %2437 = load i64, ptr %38, align 8, !tbaa !9
  %2438 = getelementptr inbounds double, ptr %2436, i64 %2437
  %2439 = load double, ptr %2438, align 8, !tbaa !11
  %2440 = fmul double %2435, %2439
  %2441 = getelementptr inbounds [3 x double], ptr %30, i64 0, i64 2
  store double %2440, ptr %2441, align 16, !tbaa !11
  br label %2442

2442:                                             ; preds = %2431, %2370
  %2443 = load ptr, ptr %14, align 8, !tbaa !5
  %2444 = load i64, ptr %28, align 8, !tbaa !9
  %2445 = getelementptr inbounds double, ptr %2443, i64 %2444
  %2446 = load double, ptr %2445, align 8, !tbaa !11
  %2447 = load ptr, ptr %14, align 8, !tbaa !5
  %2448 = load i64, ptr %28, align 8, !tbaa !9
  %2449 = getelementptr inbounds double, ptr %2447, i64 %2448
  %2450 = load double, ptr %2449, align 8, !tbaa !11
  %2451 = fmul double %2446, %2450
  %2452 = getelementptr inbounds [3 x double], ptr %30, i64 0, i64 1
  store double %2451, ptr %2452, align 8, !tbaa !11
  %2453 = load double, ptr %48, align 8, !tbaa !11
  %2454 = getelementptr inbounds [3 x double], ptr %27, i64 0, i64 0
  store double %2453, ptr %2454, align 16, !tbaa !11
  %2455 = load ptr, ptr %15, align 8, !tbaa !5
  %2456 = load i64, ptr %28, align 8, !tbaa !9
  %2457 = getelementptr inbounds double, ptr %2455, i64 %2456
  %2458 = load double, ptr %2457, align 8, !tbaa !11
  %2459 = load ptr, ptr %18, align 8, !tbaa !5
  %2460 = load i64, ptr %28, align 8, !tbaa !9
  %2461 = getelementptr inbounds double, ptr %2459, i64 %2460
  %2462 = load double, ptr %2461, align 8, !tbaa !11
  %2463 = fmul double %2458, %2462
  %2464 = getelementptr inbounds [3 x double], ptr %27, i64 0, i64 1
  store double %2463, ptr %2464, align 8, !tbaa !11
  %2465 = load double, ptr %50, align 8, !tbaa !11
  %2466 = getelementptr inbounds [3 x double], ptr %27, i64 0, i64 2
  store double %2465, ptr %2466, align 16, !tbaa !11
  %2467 = getelementptr inbounds [3 x double], ptr %27, i64 0, i64 0
  %2468 = getelementptr inbounds [3 x double], ptr %30, i64 0, i64 0
  %2469 = load ptr, ptr %19, align 8, !tbaa !5
  %2470 = call i32 @dlaed6_(ptr noundef %51, ptr noundef %58, ptr noundef %24, ptr noundef %2467, ptr noundef %2468, ptr noundef %26, ptr noundef %32, ptr noundef %2469)
  %2471 = load ptr, ptr %19, align 8, !tbaa !5
  %2472 = load i64, ptr %2471, align 8, !tbaa !9
  %2473 = icmp ne i64 %2472, 0
  br i1 %2473, label %2474, label %2475

2474:                                             ; preds = %2442
  br label %3582

2475:                                             ; preds = %2442
  br label %2476

2476:                                             ; preds = %2475, %2273
  %2477 = load double, ptr %26, align 8, !tbaa !11
  %2478 = load double, ptr %32, align 8, !tbaa !11
  %2479 = fmul double %2477, %2478
  %2480 = fcmp oge double %2479, 0.000000e+00
  br i1 %2480, label %2481, label %2486

2481:                                             ; preds = %2476
  %2482 = load double, ptr %26, align 8, !tbaa !11
  %2483 = fneg double %2482
  %2484 = load double, ptr %29, align 8, !tbaa !11
  %2485 = fdiv double %2483, %2484
  store double %2485, ptr %32, align 8, !tbaa !11
  br label %2486

2486:                                             ; preds = %2481, %2476
  %2487 = load i64, ptr %58, align 8, !tbaa !9
  %2488 = icmp ne i64 %2487, 0
  br i1 %2488, label %2489, label %2504

2489:                                             ; preds = %2486
  %2490 = load ptr, ptr %18, align 8, !tbaa !5
  %2491 = load ptr, ptr %12, align 8, !tbaa !5
  %2492 = load i64, ptr %2491, align 8, !tbaa !9
  %2493 = getelementptr inbounds double, ptr %2490, i64 %2492
  %2494 = load double, ptr %2493, align 8, !tbaa !11
  %2495 = load ptr, ptr %15, align 8, !tbaa !5
  %2496 = load ptr, ptr %12, align 8, !tbaa !5
  %2497 = load i64, ptr %2496, align 8, !tbaa !9
  %2498 = getelementptr inbounds double, ptr %2495, i64 %2497
  %2499 = load double, ptr %2498, align 8, !tbaa !11
  %2500 = fmul double %2494, %2499
  store double %2500, ptr %46, align 8, !tbaa !11
  %2501 = load double, ptr %32, align 8, !tbaa !11
  %2502 = load double, ptr %46, align 8, !tbaa !11
  %2503 = fsub double %2501, %2502
  store double %2503, ptr %42, align 8, !tbaa !11
  br label %2517

2504:                                             ; preds = %2486
  %2505 = load ptr, ptr %18, align 8, !tbaa !5
  %2506 = load i64, ptr %31, align 8, !tbaa !9
  %2507 = getelementptr inbounds double, ptr %2505, i64 %2506
  %2508 = load double, ptr %2507, align 8, !tbaa !11
  %2509 = load ptr, ptr %15, align 8, !tbaa !5
  %2510 = load i64, ptr %31, align 8, !tbaa !9
  %2511 = getelementptr inbounds double, ptr %2509, i64 %2510
  %2512 = load double, ptr %2511, align 8, !tbaa !11
  %2513 = fmul double %2508, %2512
  store double %2513, ptr %46, align 8, !tbaa !11
  %2514 = load double, ptr %32, align 8, !tbaa !11
  %2515 = load double, ptr %46, align 8, !tbaa !11
  %2516 = fsub double %2514, %2515
  store double %2516, ptr %42, align 8, !tbaa !11
  br label %2517

2517:                                             ; preds = %2504, %2489
  %2518 = load double, ptr %42, align 8, !tbaa !11
  %2519 = load double, ptr %45, align 8, !tbaa !11
  %2520 = fcmp ogt double %2518, %2519
  br i1 %2520, label %2525, label %2521

2521:                                             ; preds = %2517
  %2522 = load double, ptr %42, align 8, !tbaa !11
  %2523 = load double, ptr %44, align 8, !tbaa !11
  %2524 = fcmp olt double %2522, %2523
  br i1 %2524, label %2525, label %2539

2525:                                             ; preds = %2521, %2517
  %2526 = load double, ptr %26, align 8, !tbaa !11
  %2527 = fcmp olt double %2526, 0.000000e+00
  br i1 %2527, label %2528, label %2533

2528:                                             ; preds = %2525
  %2529 = load double, ptr %45, align 8, !tbaa !11
  %2530 = load double, ptr %35, align 8, !tbaa !11
  %2531 = fsub double %2529, %2530
  %2532 = fdiv double %2531, 2.000000e+00
  store double %2532, ptr %32, align 8, !tbaa !11
  br label %2538

2533:                                             ; preds = %2525
  %2534 = load double, ptr %44, align 8, !tbaa !11
  %2535 = load double, ptr %35, align 8, !tbaa !11
  %2536 = fsub double %2534, %2535
  %2537 = fdiv double %2536, 2.000000e+00
  store double %2537, ptr %32, align 8, !tbaa !11
  br label %2538

2538:                                             ; preds = %2533, %2528
  br label %2539

2539:                                             ; preds = %2538, %2521
  %2540 = load double, ptr %32, align 8, !tbaa !11
  %2541 = load double, ptr %35, align 8, !tbaa !11
  %2542 = fadd double %2541, %2540
  store double %2542, ptr %35, align 8, !tbaa !11
  %2543 = load ptr, ptr %17, align 8, !tbaa !5
  %2544 = load double, ptr %2543, align 8, !tbaa !11
  %2545 = load ptr, ptr %17, align 8, !tbaa !5
  %2546 = load double, ptr %2545, align 8, !tbaa !11
  %2547 = load ptr, ptr %17, align 8, !tbaa !5
  %2548 = load double, ptr %2547, align 8, !tbaa !11
  %2549 = load double, ptr %32, align 8, !tbaa !11
  %2550 = call double @llvm.fmuladd.f64(double %2546, double %2548, double %2549)
  %2551 = call double @sqrt(double noundef %2550) #5
  %2552 = fadd double %2544, %2551
  %2553 = load double, ptr %32, align 8, !tbaa !11
  %2554 = fdiv double %2553, %2552
  store double %2554, ptr %32, align 8, !tbaa !11
  %2555 = load double, ptr %26, align 8, !tbaa !11
  store double %2555, ptr %43, align 8, !tbaa !11
  %2556 = load double, ptr %32, align 8, !tbaa !11
  %2557 = load ptr, ptr %17, align 8, !tbaa !5
  %2558 = load double, ptr %2557, align 8, !tbaa !11
  %2559 = fadd double %2558, %2556
  store double %2559, ptr %2557, align 8, !tbaa !11
  %2560 = load ptr, ptr %11, align 8, !tbaa !5
  %2561 = load i64, ptr %2560, align 8, !tbaa !9
  store i64 %2561, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %25, align 8, !tbaa !9
  br label %2562

2562:                                             ; preds = %2579, %2539
  %2563 = load i64, ptr %25, align 8, !tbaa !9
  %2564 = load i64, ptr %20, align 8, !tbaa !9
  %2565 = icmp sle i64 %2563, %2564
  br i1 %2565, label %2566, label %2582

2566:                                             ; preds = %2562
  %2567 = load double, ptr %32, align 8, !tbaa !11
  %2568 = load ptr, ptr %18, align 8, !tbaa !5
  %2569 = load i64, ptr %25, align 8, !tbaa !9
  %2570 = getelementptr inbounds double, ptr %2568, i64 %2569
  %2571 = load double, ptr %2570, align 8, !tbaa !11
  %2572 = fadd double %2571, %2567
  store double %2572, ptr %2570, align 8, !tbaa !11
  %2573 = load double, ptr %32, align 8, !tbaa !11
  %2574 = load ptr, ptr %15, align 8, !tbaa !5
  %2575 = load i64, ptr %25, align 8, !tbaa !9
  %2576 = getelementptr inbounds double, ptr %2574, i64 %2575
  %2577 = load double, ptr %2576, align 8, !tbaa !11
  %2578 = fsub double %2577, %2573
  store double %2578, ptr %2576, align 8, !tbaa !11
  br label %2579

2579:                                             ; preds = %2566
  %2580 = load i64, ptr %25, align 8, !tbaa !9
  %2581 = add nsw i64 %2580, 1
  store i64 %2581, ptr %25, align 8, !tbaa !9
  br label %2562, !llvm.loop !30

2582:                                             ; preds = %2562
  store double 0.000000e+00, ptr %40, align 8, !tbaa !11
  store double 0.000000e+00, ptr %36, align 8, !tbaa !11
  store double 0.000000e+00, ptr %59, align 8, !tbaa !11
  %2583 = load i64, ptr %37, align 8, !tbaa !9
  store i64 %2583, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %25, align 8, !tbaa !9
  br label %2584

2584:                                             ; preds = %2617, %2582
  %2585 = load i64, ptr %25, align 8, !tbaa !9
  %2586 = load i64, ptr %20, align 8, !tbaa !9
  %2587 = icmp sle i64 %2585, %2586
  br i1 %2587, label %2588, label %2620

2588:                                             ; preds = %2584
  %2589 = load ptr, ptr %14, align 8, !tbaa !5
  %2590 = load i64, ptr %25, align 8, !tbaa !9
  %2591 = getelementptr inbounds double, ptr %2589, i64 %2590
  %2592 = load double, ptr %2591, align 8, !tbaa !11
  %2593 = load ptr, ptr %18, align 8, !tbaa !5
  %2594 = load i64, ptr %25, align 8, !tbaa !9
  %2595 = getelementptr inbounds double, ptr %2593, i64 %2594
  %2596 = load double, ptr %2595, align 8, !tbaa !11
  %2597 = load ptr, ptr %15, align 8, !tbaa !5
  %2598 = load i64, ptr %25, align 8, !tbaa !9
  %2599 = getelementptr inbounds double, ptr %2597, i64 %2598
  %2600 = load double, ptr %2599, align 8, !tbaa !11
  %2601 = fmul double %2596, %2600
  %2602 = fdiv double %2592, %2601
  store double %2602, ptr %42, align 8, !tbaa !11
  %2603 = load ptr, ptr %14, align 8, !tbaa !5
  %2604 = load i64, ptr %25, align 8, !tbaa !9
  %2605 = getelementptr inbounds double, ptr %2603, i64 %2604
  %2606 = load double, ptr %2605, align 8, !tbaa !11
  %2607 = load double, ptr %42, align 8, !tbaa !11
  %2608 = load double, ptr %36, align 8, !tbaa !11
  %2609 = call double @llvm.fmuladd.f64(double %2606, double %2607, double %2608)
  store double %2609, ptr %36, align 8, !tbaa !11
  %2610 = load double, ptr %42, align 8, !tbaa !11
  %2611 = load double, ptr %42, align 8, !tbaa !11
  %2612 = load double, ptr %40, align 8, !tbaa !11
  %2613 = call double @llvm.fmuladd.f64(double %2610, double %2611, double %2612)
  store double %2613, ptr %40, align 8, !tbaa !11
  %2614 = load double, ptr %36, align 8, !tbaa !11
  %2615 = load double, ptr %59, align 8, !tbaa !11
  %2616 = fadd double %2615, %2614
  store double %2616, ptr %59, align 8, !tbaa !11
  br label %2617

2617:                                             ; preds = %2588
  %2618 = load i64, ptr %25, align 8, !tbaa !9
  %2619 = add nsw i64 %2618, 1
  store i64 %2619, ptr %25, align 8, !tbaa !9
  br label %2584, !llvm.loop !31

2620:                                             ; preds = %2584
  %2621 = load double, ptr %59, align 8, !tbaa !11
  %2622 = fcmp oge double %2621, 0.000000e+00
  br i1 %2622, label %2623, label %2625

2623:                                             ; preds = %2620
  %2624 = load double, ptr %59, align 8, !tbaa !11
  br label %2628

2625:                                             ; preds = %2620
  %2626 = load double, ptr %59, align 8, !tbaa !11
  %2627 = fneg double %2626
  br label %2628

2628:                                             ; preds = %2625, %2623
  %2629 = phi double [ %2624, %2623 ], [ %2627, %2625 ]
  store double %2629, ptr %59, align 8, !tbaa !11
  store double 0.000000e+00, ptr %39, align 8, !tbaa !11
  store double 0.000000e+00, ptr %33, align 8, !tbaa !11
  %2630 = load i64, ptr %38, align 8, !tbaa !9
  store i64 %2630, ptr %20, align 8, !tbaa !9
  %2631 = load ptr, ptr %11, align 8, !tbaa !5
  %2632 = load i64, ptr %2631, align 8, !tbaa !9
  store i64 %2632, ptr %25, align 8, !tbaa !9
  br label %2633

2633:                                             ; preds = %2666, %2628
  %2634 = load i64, ptr %25, align 8, !tbaa !9
  %2635 = load i64, ptr %20, align 8, !tbaa !9
  %2636 = icmp sge i64 %2634, %2635
  br i1 %2636, label %2637, label %2669

2637:                                             ; preds = %2633
  %2638 = load ptr, ptr %14, align 8, !tbaa !5
  %2639 = load i64, ptr %25, align 8, !tbaa !9
  %2640 = getelementptr inbounds double, ptr %2638, i64 %2639
  %2641 = load double, ptr %2640, align 8, !tbaa !11
  %2642 = load ptr, ptr %18, align 8, !tbaa !5
  %2643 = load i64, ptr %25, align 8, !tbaa !9
  %2644 = getelementptr inbounds double, ptr %2642, i64 %2643
  %2645 = load double, ptr %2644, align 8, !tbaa !11
  %2646 = load ptr, ptr %15, align 8, !tbaa !5
  %2647 = load i64, ptr %25, align 8, !tbaa !9
  %2648 = getelementptr inbounds double, ptr %2646, i64 %2647
  %2649 = load double, ptr %2648, align 8, !tbaa !11
  %2650 = fmul double %2645, %2649
  %2651 = fdiv double %2641, %2650
  store double %2651, ptr %42, align 8, !tbaa !11
  %2652 = load ptr, ptr %14, align 8, !tbaa !5
  %2653 = load i64, ptr %25, align 8, !tbaa !9
  %2654 = getelementptr inbounds double, ptr %2652, i64 %2653
  %2655 = load double, ptr %2654, align 8, !tbaa !11
  %2656 = load double, ptr %42, align 8, !tbaa !11
  %2657 = load double, ptr %33, align 8, !tbaa !11
  %2658 = call double @llvm.fmuladd.f64(double %2655, double %2656, double %2657)
  store double %2658, ptr %33, align 8, !tbaa !11
  %2659 = load double, ptr %42, align 8, !tbaa !11
  %2660 = load double, ptr %42, align 8, !tbaa !11
  %2661 = load double, ptr %39, align 8, !tbaa !11
  %2662 = call double @llvm.fmuladd.f64(double %2659, double %2660, double %2661)
  store double %2662, ptr %39, align 8, !tbaa !11
  %2663 = load double, ptr %33, align 8, !tbaa !11
  %2664 = load double, ptr %59, align 8, !tbaa !11
  %2665 = fadd double %2664, %2663
  store double %2665, ptr %59, align 8, !tbaa !11
  br label %2666

2666:                                             ; preds = %2637
  %2667 = load i64, ptr %25, align 8, !tbaa !9
  %2668 = add nsw i64 %2667, -1
  store i64 %2668, ptr %25, align 8, !tbaa !9
  br label %2633, !llvm.loop !32

2669:                                             ; preds = %2633
  %2670 = load ptr, ptr %14, align 8, !tbaa !5
  %2671 = load i64, ptr %28, align 8, !tbaa !9
  %2672 = getelementptr inbounds double, ptr %2670, i64 %2671
  %2673 = load double, ptr %2672, align 8, !tbaa !11
  %2674 = load ptr, ptr %18, align 8, !tbaa !5
  %2675 = load i64, ptr %28, align 8, !tbaa !9
  %2676 = getelementptr inbounds double, ptr %2674, i64 %2675
  %2677 = load double, ptr %2676, align 8, !tbaa !11
  %2678 = load ptr, ptr %15, align 8, !tbaa !5
  %2679 = load i64, ptr %28, align 8, !tbaa !9
  %2680 = getelementptr inbounds double, ptr %2678, i64 %2679
  %2681 = load double, ptr %2680, align 8, !tbaa !11
  %2682 = fmul double %2677, %2681
  %2683 = fdiv double %2673, %2682
  store double %2683, ptr %42, align 8, !tbaa !11
  %2684 = load double, ptr %40, align 8, !tbaa !11
  %2685 = load double, ptr %39, align 8, !tbaa !11
  %2686 = fadd double %2684, %2685
  %2687 = load double, ptr %42, align 8, !tbaa !11
  %2688 = load double, ptr %42, align 8, !tbaa !11
  %2689 = call double @llvm.fmuladd.f64(double %2687, double %2688, double %2686)
  store double %2689, ptr %29, align 8, !tbaa !11
  %2690 = load ptr, ptr %14, align 8, !tbaa !5
  %2691 = load i64, ptr %28, align 8, !tbaa !9
  %2692 = getelementptr inbounds double, ptr %2690, i64 %2691
  %2693 = load double, ptr %2692, align 8, !tbaa !11
  %2694 = load double, ptr %42, align 8, !tbaa !11
  %2695 = fmul double %2693, %2694
  store double %2695, ptr %42, align 8, !tbaa !11
  %2696 = load double, ptr %61, align 8, !tbaa !11
  %2697 = load double, ptr %33, align 8, !tbaa !11
  %2698 = fadd double %2696, %2697
  %2699 = load double, ptr %36, align 8, !tbaa !11
  %2700 = fadd double %2698, %2699
  %2701 = load double, ptr %42, align 8, !tbaa !11
  %2702 = fadd double %2700, %2701
  store double %2702, ptr %26, align 8, !tbaa !11
  %2703 = load double, ptr %33, align 8, !tbaa !11
  %2704 = load double, ptr %36, align 8, !tbaa !11
  %2705 = fsub double %2703, %2704
  %2706 = load double, ptr %59, align 8, !tbaa !11
  %2707 = call double @llvm.fmuladd.f64(double %2705, double 8.000000e+00, double %2706)
  %2708 = load double, ptr %61, align 8, !tbaa !11
  %2709 = call double @llvm.fmuladd.f64(double %2708, double 2.000000e+00, double %2707)
  %2710 = load double, ptr %42, align 8, !tbaa !11
  %2711 = fcmp oge double %2710, 0.000000e+00
  br i1 %2711, label %2712, label %2714

2712:                                             ; preds = %2669
  %2713 = load double, ptr %42, align 8, !tbaa !11
  br label %2717

2714:                                             ; preds = %2669
  %2715 = load double, ptr %42, align 8, !tbaa !11
  %2716 = fneg double %2715
  br label %2717

2717:                                             ; preds = %2714, %2712
  %2718 = phi double [ %2713, %2712 ], [ %2716, %2714 ]
  %2719 = call double @llvm.fmuladd.f64(double %2718, double 3.000000e+00, double %2709)
  %2720 = load double, ptr %35, align 8, !tbaa !11
  %2721 = fcmp oge double %2720, 0.000000e+00
  br i1 %2721, label %2722, label %2724

2722:                                             ; preds = %2717
  %2723 = load double, ptr %35, align 8, !tbaa !11
  br label %2727

2724:                                             ; preds = %2717
  %2725 = load double, ptr %35, align 8, !tbaa !11
  %2726 = fneg double %2725
  br label %2727

2727:                                             ; preds = %2724, %2722
  %2728 = phi double [ %2723, %2722 ], [ %2726, %2724 ]
  %2729 = load double, ptr %29, align 8, !tbaa !11
  %2730 = call double @llvm.fmuladd.f64(double %2728, double %2729, double %2719)
  store double %2730, ptr %59, align 8, !tbaa !11
  %2731 = load double, ptr %26, align 8, !tbaa !11
  %2732 = fcmp ole double %2731, 0.000000e+00
  br i1 %2732, label %2733, label %2743

2733:                                             ; preds = %2727
  %2734 = load double, ptr %44, align 8, !tbaa !11
  %2735 = load double, ptr %35, align 8, !tbaa !11
  %2736 = fcmp oge double %2734, %2735
  br i1 %2736, label %2737, label %2739

2737:                                             ; preds = %2733
  %2738 = load double, ptr %44, align 8, !tbaa !11
  br label %2741

2739:                                             ; preds = %2733
  %2740 = load double, ptr %35, align 8, !tbaa !11
  br label %2741

2741:                                             ; preds = %2739, %2737
  %2742 = phi double [ %2738, %2737 ], [ %2740, %2739 ]
  store double %2742, ptr %44, align 8, !tbaa !11
  br label %2753

2743:                                             ; preds = %2727
  %2744 = load double, ptr %45, align 8, !tbaa !11
  %2745 = load double, ptr %35, align 8, !tbaa !11
  %2746 = fcmp ole double %2744, %2745
  br i1 %2746, label %2747, label %2749

2747:                                             ; preds = %2743
  %2748 = load double, ptr %45, align 8, !tbaa !11
  br label %2751

2749:                                             ; preds = %2743
  %2750 = load double, ptr %35, align 8, !tbaa !11
  br label %2751

2751:                                             ; preds = %2749, %2747
  %2752 = phi double [ %2748, %2747 ], [ %2750, %2749 ]
  store double %2752, ptr %45, align 8, !tbaa !11
  br label %2753

2753:                                             ; preds = %2751, %2741
  store i64 0, ptr %53, align 8, !tbaa !9
  %2754 = load i64, ptr %58, align 8, !tbaa !9
  %2755 = icmp ne i64 %2754, 0
  br i1 %2755, label %2756, label %2772

2756:                                             ; preds = %2753
  %2757 = load double, ptr %26, align 8, !tbaa !11
  %2758 = fneg double %2757
  %2759 = load double, ptr %43, align 8, !tbaa !11
  %2760 = fcmp oge double %2759, 0.000000e+00
  br i1 %2760, label %2761, label %2763

2761:                                             ; preds = %2756
  %2762 = load double, ptr %43, align 8, !tbaa !11
  br label %2766

2763:                                             ; preds = %2756
  %2764 = load double, ptr %43, align 8, !tbaa !11
  %2765 = fneg double %2764
  br label %2766

2766:                                             ; preds = %2763, %2761
  %2767 = phi double [ %2762, %2761 ], [ %2765, %2763 ]
  %2768 = fdiv double %2767, 1.000000e+01
  %2769 = fcmp ogt double %2758, %2768
  br i1 %2769, label %2770, label %2771

2770:                                             ; preds = %2766
  store i64 1, ptr %53, align 8, !tbaa !9
  br label %2771

2771:                                             ; preds = %2770, %2766
  br label %2787

2772:                                             ; preds = %2753
  %2773 = load double, ptr %26, align 8, !tbaa !11
  %2774 = load double, ptr %43, align 8, !tbaa !11
  %2775 = fcmp oge double %2774, 0.000000e+00
  br i1 %2775, label %2776, label %2778

2776:                                             ; preds = %2772
  %2777 = load double, ptr %43, align 8, !tbaa !11
  br label %2781

2778:                                             ; preds = %2772
  %2779 = load double, ptr %43, align 8, !tbaa !11
  %2780 = fneg double %2779
  br label %2781

2781:                                             ; preds = %2778, %2776
  %2782 = phi double [ %2777, %2776 ], [ %2780, %2778 ]
  %2783 = fdiv double %2782, 1.000000e+01
  %2784 = fcmp ogt double %2773, %2783
  br i1 %2784, label %2785, label %2786

2785:                                             ; preds = %2781
  store i64 1, ptr %53, align 8, !tbaa !9
  br label %2786

2786:                                             ; preds = %2785, %2781
  br label %2787

2787:                                             ; preds = %2786, %2771
  %2788 = load i64, ptr %51, align 8, !tbaa !9
  %2789 = add nsw i64 %2788, 1
  store i64 %2789, ptr %41, align 8, !tbaa !9
  %2790 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %2790, ptr %51, align 8, !tbaa !9
  br label %2791

2791:                                             ; preds = %3576, %2787
  %2792 = load i64, ptr %51, align 8, !tbaa !9
  %2793 = icmp sle i64 %2792, 20
  br i1 %2793, label %2794, label %3579

2794:                                             ; preds = %2791
  %2795 = load double, ptr %26, align 8, !tbaa !11
  %2796 = fcmp oge double %2795, 0.000000e+00
  br i1 %2796, label %2797, label %2799

2797:                                             ; preds = %2794
  %2798 = load double, ptr %26, align 8, !tbaa !11
  br label %2802

2799:                                             ; preds = %2794
  %2800 = load double, ptr %26, align 8, !tbaa !11
  %2801 = fneg double %2800
  br label %2802

2802:                                             ; preds = %2799, %2797
  %2803 = phi double [ %2798, %2797 ], [ %2801, %2799 ]
  %2804 = load double, ptr %34, align 8, !tbaa !11
  %2805 = load double, ptr %59, align 8, !tbaa !11
  %2806 = fmul double %2804, %2805
  %2807 = fcmp ole double %2803, %2806
  br i1 %2807, label %2808, label %2809

2808:                                             ; preds = %2802
  br label %3582

2809:                                             ; preds = %2802
  %2810 = load i64, ptr %57, align 8, !tbaa !9
  %2811 = icmp ne i64 %2810, 0
  br i1 %2811, label %3046, label %2812

2812:                                             ; preds = %2809
  %2813 = load ptr, ptr %18, align 8, !tbaa !5
  %2814 = load i64, ptr %31, align 8, !tbaa !9
  %2815 = getelementptr inbounds double, ptr %2813, i64 %2814
  %2816 = load double, ptr %2815, align 8, !tbaa !11
  %2817 = load ptr, ptr %15, align 8, !tbaa !5
  %2818 = load i64, ptr %31, align 8, !tbaa !9
  %2819 = getelementptr inbounds double, ptr %2817, i64 %2818
  %2820 = load double, ptr %2819, align 8, !tbaa !11
  %2821 = fmul double %2816, %2820
  store double %2821, ptr %60, align 8, !tbaa !11
  %2822 = load ptr, ptr %18, align 8, !tbaa !5
  %2823 = load ptr, ptr %12, align 8, !tbaa !5
  %2824 = load i64, ptr %2823, align 8, !tbaa !9
  %2825 = getelementptr inbounds double, ptr %2822, i64 %2824
  %2826 = load double, ptr %2825, align 8, !tbaa !11
  %2827 = load ptr, ptr %15, align 8, !tbaa !5
  %2828 = load ptr, ptr %12, align 8, !tbaa !5
  %2829 = load i64, ptr %2828, align 8, !tbaa !9
  %2830 = getelementptr inbounds double, ptr %2827, i64 %2829
  %2831 = load double, ptr %2830, align 8, !tbaa !11
  %2832 = fmul double %2826, %2831
  store double %2832, ptr %52, align 8, !tbaa !11
  %2833 = load i64, ptr %53, align 8, !tbaa !9
  %2834 = icmp ne i64 %2833, 0
  br i1 %2834, label %2875, label %2835

2835:                                             ; preds = %2812
  %2836 = load i64, ptr %58, align 8, !tbaa !9
  %2837 = icmp ne i64 %2836, 0
  br i1 %2837, label %2838, label %2856

2838:                                             ; preds = %2835
  %2839 = load ptr, ptr %14, align 8, !tbaa !5
  %2840 = load ptr, ptr %12, align 8, !tbaa !5
  %2841 = load i64, ptr %2840, align 8, !tbaa !9
  %2842 = getelementptr inbounds double, ptr %2839, i64 %2841
  %2843 = load double, ptr %2842, align 8, !tbaa !11
  %2844 = load double, ptr %52, align 8, !tbaa !11
  %2845 = fdiv double %2843, %2844
  store double %2845, ptr %21, align 8, !tbaa !11
  %2846 = load double, ptr %26, align 8, !tbaa !11
  %2847 = load double, ptr %60, align 8, !tbaa !11
  %2848 = load double, ptr %29, align 8, !tbaa !11
  %2849 = fneg double %2847
  %2850 = call double @llvm.fmuladd.f64(double %2849, double %2848, double %2846)
  %2851 = load double, ptr %49, align 8, !tbaa !11
  %2852 = load double, ptr %21, align 8, !tbaa !11
  %2853 = load double, ptr %21, align 8, !tbaa !11
  %2854 = fmul double %2852, %2853
  %2855 = call double @llvm.fmuladd.f64(double %2851, double %2854, double %2850)
  store double %2855, ptr %24, align 8, !tbaa !11
  br label %2874

2856:                                             ; preds = %2835
  %2857 = load ptr, ptr %14, align 8, !tbaa !5
  %2858 = load i64, ptr %31, align 8, !tbaa !9
  %2859 = getelementptr inbounds double, ptr %2857, i64 %2858
  %2860 = load double, ptr %2859, align 8, !tbaa !11
  %2861 = load double, ptr %60, align 8, !tbaa !11
  %2862 = fdiv double %2860, %2861
  store double %2862, ptr %21, align 8, !tbaa !11
  %2863 = load double, ptr %26, align 8, !tbaa !11
  %2864 = load double, ptr %52, align 8, !tbaa !11
  %2865 = load double, ptr %29, align 8, !tbaa !11
  %2866 = fneg double %2864
  %2867 = call double @llvm.fmuladd.f64(double %2866, double %2865, double %2863)
  %2868 = load double, ptr %49, align 8, !tbaa !11
  %2869 = load double, ptr %21, align 8, !tbaa !11
  %2870 = load double, ptr %21, align 8, !tbaa !11
  %2871 = fmul double %2869, %2870
  %2872 = fneg double %2868
  %2873 = call double @llvm.fmuladd.f64(double %2872, double %2871, double %2867)
  store double %2873, ptr %24, align 8, !tbaa !11
  br label %2874

2874:                                             ; preds = %2856, %2838
  br label %2912

2875:                                             ; preds = %2812
  %2876 = load ptr, ptr %14, align 8, !tbaa !5
  %2877 = load i64, ptr %28, align 8, !tbaa !9
  %2878 = getelementptr inbounds double, ptr %2876, i64 %2877
  %2879 = load double, ptr %2878, align 8, !tbaa !11
  %2880 = load ptr, ptr %18, align 8, !tbaa !5
  %2881 = load i64, ptr %28, align 8, !tbaa !9
  %2882 = getelementptr inbounds double, ptr %2880, i64 %2881
  %2883 = load double, ptr %2882, align 8, !tbaa !11
  %2884 = load ptr, ptr %15, align 8, !tbaa !5
  %2885 = load i64, ptr %28, align 8, !tbaa !9
  %2886 = getelementptr inbounds double, ptr %2884, i64 %2885
  %2887 = load double, ptr %2886, align 8, !tbaa !11
  %2888 = fmul double %2883, %2887
  %2889 = fdiv double %2879, %2888
  store double %2889, ptr %42, align 8, !tbaa !11
  %2890 = load i64, ptr %58, align 8, !tbaa !9
  %2891 = icmp ne i64 %2890, 0
  br i1 %2891, label %2892, label %2897

2892:                                             ; preds = %2875
  %2893 = load double, ptr %42, align 8, !tbaa !11
  %2894 = load double, ptr %42, align 8, !tbaa !11
  %2895 = load double, ptr %40, align 8, !tbaa !11
  %2896 = call double @llvm.fmuladd.f64(double %2893, double %2894, double %2895)
  store double %2896, ptr %40, align 8, !tbaa !11
  br label %2902

2897:                                             ; preds = %2875
  %2898 = load double, ptr %42, align 8, !tbaa !11
  %2899 = load double, ptr %42, align 8, !tbaa !11
  %2900 = load double, ptr %39, align 8, !tbaa !11
  %2901 = call double @llvm.fmuladd.f64(double %2898, double %2899, double %2900)
  store double %2901, ptr %39, align 8, !tbaa !11
  br label %2902

2902:                                             ; preds = %2897, %2892
  %2903 = load double, ptr %26, align 8, !tbaa !11
  %2904 = load double, ptr %52, align 8, !tbaa !11
  %2905 = load double, ptr %40, align 8, !tbaa !11
  %2906 = fneg double %2904
  %2907 = call double @llvm.fmuladd.f64(double %2906, double %2905, double %2903)
  %2908 = load double, ptr %60, align 8, !tbaa !11
  %2909 = load double, ptr %39, align 8, !tbaa !11
  %2910 = fneg double %2908
  %2911 = call double @llvm.fmuladd.f64(double %2910, double %2909, double %2907)
  store double %2911, ptr %24, align 8, !tbaa !11
  br label %2912

2912:                                             ; preds = %2902, %2874
  %2913 = load double, ptr %60, align 8, !tbaa !11
  %2914 = load double, ptr %52, align 8, !tbaa !11
  %2915 = fadd double %2913, %2914
  %2916 = load double, ptr %26, align 8, !tbaa !11
  %2917 = load double, ptr %60, align 8, !tbaa !11
  %2918 = load double, ptr %52, align 8, !tbaa !11
  %2919 = fmul double %2917, %2918
  %2920 = load double, ptr %29, align 8, !tbaa !11
  %2921 = fmul double %2919, %2920
  %2922 = fneg double %2921
  %2923 = call double @llvm.fmuladd.f64(double %2915, double %2916, double %2922)
  store double %2923, ptr %22, align 8, !tbaa !11
  %2924 = load double, ptr %60, align 8, !tbaa !11
  %2925 = load double, ptr %52, align 8, !tbaa !11
  %2926 = fmul double %2924, %2925
  %2927 = load double, ptr %26, align 8, !tbaa !11
  %2928 = fmul double %2926, %2927
  store double %2928, ptr %23, align 8, !tbaa !11
  %2929 = load double, ptr %24, align 8, !tbaa !11
  %2930 = fcmp oeq double %2929, 0.000000e+00
  br i1 %2930, label %2931, label %2993

2931:                                             ; preds = %2912
  %2932 = load double, ptr %22, align 8, !tbaa !11
  %2933 = fcmp oeq double %2932, 0.000000e+00
  br i1 %2933, label %2934, label %2989

2934:                                             ; preds = %2931
  %2935 = load i64, ptr %53, align 8, !tbaa !9
  %2936 = icmp ne i64 %2935, 0
  br i1 %2936, label %2977, label %2937

2937:                                             ; preds = %2934
  %2938 = load i64, ptr %58, align 8, !tbaa !9
  %2939 = icmp ne i64 %2938, 0
  br i1 %2939, label %2940, label %2959

2940:                                             ; preds = %2937
  %2941 = load ptr, ptr %14, align 8, !tbaa !5
  %2942 = load ptr, ptr %12, align 8, !tbaa !5
  %2943 = load i64, ptr %2942, align 8, !tbaa !9
  %2944 = getelementptr inbounds double, ptr %2941, i64 %2943
  %2945 = load double, ptr %2944, align 8, !tbaa !11
  %2946 = load ptr, ptr %14, align 8, !tbaa !5
  %2947 = load ptr, ptr %12, align 8, !tbaa !5
  %2948 = load i64, ptr %2947, align 8, !tbaa !9
  %2949 = getelementptr inbounds double, ptr %2946, i64 %2948
  %2950 = load double, ptr %2949, align 8, !tbaa !11
  %2951 = load double, ptr %60, align 8, !tbaa !11
  %2952 = load double, ptr %60, align 8, !tbaa !11
  %2953 = fmul double %2951, %2952
  %2954 = load double, ptr %40, align 8, !tbaa !11
  %2955 = load double, ptr %39, align 8, !tbaa !11
  %2956 = fadd double %2954, %2955
  %2957 = fmul double %2953, %2956
  %2958 = call double @llvm.fmuladd.f64(double %2945, double %2950, double %2957)
  store double %2958, ptr %22, align 8, !tbaa !11
  br label %2976

2959:                                             ; preds = %2937
  %2960 = load ptr, ptr %14, align 8, !tbaa !5
  %2961 = load i64, ptr %31, align 8, !tbaa !9
  %2962 = getelementptr inbounds double, ptr %2960, i64 %2961
  %2963 = load double, ptr %2962, align 8, !tbaa !11
  %2964 = load ptr, ptr %14, align 8, !tbaa !5
  %2965 = load i64, ptr %31, align 8, !tbaa !9
  %2966 = getelementptr inbounds double, ptr %2964, i64 %2965
  %2967 = load double, ptr %2966, align 8, !tbaa !11
  %2968 = load double, ptr %52, align 8, !tbaa !11
  %2969 = load double, ptr %52, align 8, !tbaa !11
  %2970 = fmul double %2968, %2969
  %2971 = load double, ptr %40, align 8, !tbaa !11
  %2972 = load double, ptr %39, align 8, !tbaa !11
  %2973 = fadd double %2971, %2972
  %2974 = fmul double %2970, %2973
  %2975 = call double @llvm.fmuladd.f64(double %2963, double %2967, double %2974)
  store double %2975, ptr %22, align 8, !tbaa !11
  br label %2976

2976:                                             ; preds = %2959, %2940
  br label %2988

2977:                                             ; preds = %2934
  %2978 = load double, ptr %52, align 8, !tbaa !11
  %2979 = load double, ptr %52, align 8, !tbaa !11
  %2980 = fmul double %2978, %2979
  %2981 = load double, ptr %40, align 8, !tbaa !11
  %2982 = load double, ptr %60, align 8, !tbaa !11
  %2983 = load double, ptr %60, align 8, !tbaa !11
  %2984 = fmul double %2982, %2983
  %2985 = load double, ptr %39, align 8, !tbaa !11
  %2986 = fmul double %2984, %2985
  %2987 = call double @llvm.fmuladd.f64(double %2980, double %2981, double %2986)
  store double %2987, ptr %22, align 8, !tbaa !11
  br label %2988

2988:                                             ; preds = %2977, %2976
  br label %2989

2989:                                             ; preds = %2988, %2931
  %2990 = load double, ptr %23, align 8, !tbaa !11
  %2991 = load double, ptr %22, align 8, !tbaa !11
  %2992 = fdiv double %2990, %2991
  store double %2992, ptr %32, align 8, !tbaa !11
  br label %3045

2993:                                             ; preds = %2912
  %2994 = load double, ptr %22, align 8, !tbaa !11
  %2995 = fcmp ole double %2994, 0.000000e+00
  br i1 %2995, label %2996, label %3020

2996:                                             ; preds = %2993
  %2997 = load double, ptr %22, align 8, !tbaa !11
  %2998 = load double, ptr %22, align 8, !tbaa !11
  %2999 = load double, ptr %22, align 8, !tbaa !11
  %3000 = load double, ptr %23, align 8, !tbaa !11
  %3001 = fmul double %3000, 4.000000e+00
  %3002 = load double, ptr %24, align 8, !tbaa !11
  %3003 = fmul double %3001, %3002
  %3004 = fneg double %3003
  %3005 = call double @llvm.fmuladd.f64(double %2998, double %2999, double %3004)
  store double %3005, ptr %21, align 8, !tbaa !11
  %3006 = load double, ptr %21, align 8, !tbaa !11
  %3007 = fcmp oge double %3006, 0.000000e+00
  br i1 %3007, label %3008, label %3010

3008:                                             ; preds = %2996
  %3009 = load double, ptr %21, align 8, !tbaa !11
  br label %3013

3010:                                             ; preds = %2996
  %3011 = load double, ptr %21, align 8, !tbaa !11
  %3012 = fneg double %3011
  br label %3013

3013:                                             ; preds = %3010, %3008
  %3014 = phi double [ %3009, %3008 ], [ %3012, %3010 ]
  %3015 = call double @sqrt(double noundef %3014) #5
  %3016 = fsub double %2997, %3015
  %3017 = load double, ptr %24, align 8, !tbaa !11
  %3018 = fmul double %3017, 2.000000e+00
  %3019 = fdiv double %3016, %3018
  store double %3019, ptr %32, align 8, !tbaa !11
  br label %3044

3020:                                             ; preds = %2993
  %3021 = load double, ptr %23, align 8, !tbaa !11
  %3022 = fmul double %3021, 2.000000e+00
  %3023 = load double, ptr %22, align 8, !tbaa !11
  %3024 = load double, ptr %22, align 8, !tbaa !11
  %3025 = load double, ptr %22, align 8, !tbaa !11
  %3026 = load double, ptr %23, align 8, !tbaa !11
  %3027 = fmul double %3026, 4.000000e+00
  %3028 = load double, ptr %24, align 8, !tbaa !11
  %3029 = fmul double %3027, %3028
  %3030 = fneg double %3029
  %3031 = call double @llvm.fmuladd.f64(double %3024, double %3025, double %3030)
  store double %3031, ptr %21, align 8, !tbaa !11
  %3032 = load double, ptr %21, align 8, !tbaa !11
  %3033 = fcmp oge double %3032, 0.000000e+00
  br i1 %3033, label %3034, label %3036

3034:                                             ; preds = %3020
  %3035 = load double, ptr %21, align 8, !tbaa !11
  br label %3039

3036:                                             ; preds = %3020
  %3037 = load double, ptr %21, align 8, !tbaa !11
  %3038 = fneg double %3037
  br label %3039

3039:                                             ; preds = %3036, %3034
  %3040 = phi double [ %3035, %3034 ], [ %3038, %3036 ]
  %3041 = call double @sqrt(double noundef %3040) #5
  %3042 = fadd double %3023, %3041
  %3043 = fdiv double %3022, %3042
  store double %3043, ptr %32, align 8, !tbaa !11
  br label %3044

3044:                                             ; preds = %3039, %3013
  br label %3045

3045:                                             ; preds = %3044, %2989
  br label %3266

3046:                                             ; preds = %2809
  %3047 = load ptr, ptr %18, align 8, !tbaa !5
  %3048 = load i64, ptr %37, align 8, !tbaa !9
  %3049 = getelementptr inbounds double, ptr %3047, i64 %3048
  %3050 = load double, ptr %3049, align 8, !tbaa !11
  %3051 = load ptr, ptr %15, align 8, !tbaa !5
  %3052 = load i64, ptr %37, align 8, !tbaa !9
  %3053 = getelementptr inbounds double, ptr %3051, i64 %3052
  %3054 = load double, ptr %3053, align 8, !tbaa !11
  %3055 = fmul double %3050, %3054
  store double %3055, ptr %48, align 8, !tbaa !11
  %3056 = load ptr, ptr %18, align 8, !tbaa !5
  %3057 = load i64, ptr %38, align 8, !tbaa !9
  %3058 = getelementptr inbounds double, ptr %3056, i64 %3057
  %3059 = load double, ptr %3058, align 8, !tbaa !11
  %3060 = load ptr, ptr %15, align 8, !tbaa !5
  %3061 = load i64, ptr %38, align 8, !tbaa !9
  %3062 = getelementptr inbounds double, ptr %3060, i64 %3061
  %3063 = load double, ptr %3062, align 8, !tbaa !11
  %3064 = fmul double %3059, %3063
  store double %3064, ptr %50, align 8, !tbaa !11
  %3065 = load double, ptr %61, align 8, !tbaa !11
  %3066 = load double, ptr %36, align 8, !tbaa !11
  %3067 = fadd double %3065, %3066
  %3068 = load double, ptr %33, align 8, !tbaa !11
  %3069 = fadd double %3067, %3068
  store double %3069, ptr %42, align 8, !tbaa !11
  %3070 = load i64, ptr %53, align 8, !tbaa !9
  %3071 = icmp ne i64 %3070, 0
  br i1 %3071, label %3072, label %3094

3072:                                             ; preds = %3046
  %3073 = load double, ptr %42, align 8, !tbaa !11
  %3074 = load double, ptr %48, align 8, !tbaa !11
  %3075 = load double, ptr %40, align 8, !tbaa !11
  %3076 = fneg double %3074
  %3077 = call double @llvm.fmuladd.f64(double %3076, double %3075, double %3073)
  %3078 = load double, ptr %50, align 8, !tbaa !11
  %3079 = load double, ptr %39, align 8, !tbaa !11
  %3080 = fneg double %3078
  %3081 = call double @llvm.fmuladd.f64(double %3080, double %3079, double %3077)
  store double %3081, ptr %24, align 8, !tbaa !11
  %3082 = load double, ptr %48, align 8, !tbaa !11
  %3083 = load double, ptr %48, align 8, !tbaa !11
  %3084 = fmul double %3082, %3083
  %3085 = load double, ptr %40, align 8, !tbaa !11
  %3086 = fmul double %3084, %3085
  %3087 = getelementptr inbounds [3 x double], ptr %30, i64 0, i64 0
  store double %3086, ptr %3087, align 16, !tbaa !11
  %3088 = load double, ptr %50, align 8, !tbaa !11
  %3089 = load double, ptr %50, align 8, !tbaa !11
  %3090 = fmul double %3088, %3089
  %3091 = load double, ptr %39, align 8, !tbaa !11
  %3092 = fmul double %3090, %3091
  %3093 = getelementptr inbounds [3 x double], ptr %30, i64 0, i64 2
  store double %3092, ptr %3093, align 16, !tbaa !11
  br label %3242

3094:                                             ; preds = %3046
  %3095 = load i64, ptr %58, align 8, !tbaa !9
  %3096 = icmp ne i64 %3095, 0
  br i1 %3096, label %3097, label %3169

3097:                                             ; preds = %3094
  %3098 = load ptr, ptr %14, align 8, !tbaa !5
  %3099 = load i64, ptr %37, align 8, !tbaa !9
  %3100 = getelementptr inbounds double, ptr %3098, i64 %3099
  %3101 = load double, ptr %3100, align 8, !tbaa !11
  %3102 = load double, ptr %48, align 8, !tbaa !11
  %3103 = fdiv double %3101, %3102
  store double %3103, ptr %46, align 8, !tbaa !11
  %3104 = load double, ptr %46, align 8, !tbaa !11
  %3105 = load double, ptr %46, align 8, !tbaa !11
  %3106 = fmul double %3105, %3104
  store double %3106, ptr %46, align 8, !tbaa !11
  %3107 = load ptr, ptr %13, align 8, !tbaa !5
  %3108 = load i64, ptr %37, align 8, !tbaa !9
  %3109 = getelementptr inbounds double, ptr %3107, i64 %3108
  %3110 = load double, ptr %3109, align 8, !tbaa !11
  %3111 = load ptr, ptr %13, align 8, !tbaa !5
  %3112 = load i64, ptr %38, align 8, !tbaa !9
  %3113 = getelementptr inbounds double, ptr %3111, i64 %3112
  %3114 = load double, ptr %3113, align 8, !tbaa !11
  %3115 = fsub double %3110, %3114
  %3116 = load ptr, ptr %13, align 8, !tbaa !5
  %3117 = load i64, ptr %37, align 8, !tbaa !9
  %3118 = getelementptr inbounds double, ptr %3116, i64 %3117
  %3119 = load double, ptr %3118, align 8, !tbaa !11
  %3120 = load ptr, ptr %13, align 8, !tbaa !5
  %3121 = load i64, ptr %38, align 8, !tbaa !9
  %3122 = getelementptr inbounds double, ptr %3120, i64 %3121
  %3123 = load double, ptr %3122, align 8, !tbaa !11
  %3124 = fadd double %3119, %3123
  %3125 = fmul double %3115, %3124
  %3126 = load double, ptr %46, align 8, !tbaa !11
  %3127 = fmul double %3125, %3126
  store double %3127, ptr %47, align 8, !tbaa !11
  %3128 = load double, ptr %42, align 8, !tbaa !11
  %3129 = load double, ptr %50, align 8, !tbaa !11
  %3130 = load double, ptr %40, align 8, !tbaa !11
  %3131 = load double, ptr %39, align 8, !tbaa !11
  %3132 = fadd double %3130, %3131
  %3133 = fneg double %3129
  %3134 = call double @llvm.fmuladd.f64(double %3133, double %3132, double %3128)
  %3135 = load double, ptr %47, align 8, !tbaa !11
  %3136 = fsub double %3134, %3135
  store double %3136, ptr %24, align 8, !tbaa !11
  %3137 = load ptr, ptr %14, align 8, !tbaa !5
  %3138 = load i64, ptr %37, align 8, !tbaa !9
  %3139 = getelementptr inbounds double, ptr %3137, i64 %3138
  %3140 = load double, ptr %3139, align 8, !tbaa !11
  %3141 = load ptr, ptr %14, align 8, !tbaa !5
  %3142 = load i64, ptr %37, align 8, !tbaa !9
  %3143 = getelementptr inbounds double, ptr %3141, i64 %3142
  %3144 = load double, ptr %3143, align 8, !tbaa !11
  %3145 = fmul double %3140, %3144
  %3146 = getelementptr inbounds [3 x double], ptr %30, i64 0, i64 0
  store double %3145, ptr %3146, align 16, !tbaa !11
  %3147 = load double, ptr %40, align 8, !tbaa !11
  %3148 = load double, ptr %46, align 8, !tbaa !11
  %3149 = fcmp olt double %3147, %3148
  br i1 %3149, label %3150, label %3157

3150:                                             ; preds = %3097
  %3151 = load double, ptr %50, align 8, !tbaa !11
  %3152 = load double, ptr %50, align 8, !tbaa !11
  %3153 = fmul double %3151, %3152
  %3154 = load double, ptr %39, align 8, !tbaa !11
  %3155 = fmul double %3153, %3154
  %3156 = getelementptr inbounds [3 x double], ptr %30, i64 0, i64 2
  store double %3155, ptr %3156, align 16, !tbaa !11
  br label %3168

3157:                                             ; preds = %3097
  %3158 = load double, ptr %50, align 8, !tbaa !11
  %3159 = load double, ptr %50, align 8, !tbaa !11
  %3160 = fmul double %3158, %3159
  %3161 = load double, ptr %40, align 8, !tbaa !11
  %3162 = load double, ptr %46, align 8, !tbaa !11
  %3163 = fsub double %3161, %3162
  %3164 = load double, ptr %39, align 8, !tbaa !11
  %3165 = fadd double %3163, %3164
  %3166 = fmul double %3160, %3165
  %3167 = getelementptr inbounds [3 x double], ptr %30, i64 0, i64 2
  store double %3166, ptr %3167, align 16, !tbaa !11
  br label %3168

3168:                                             ; preds = %3157, %3150
  br label %3241

3169:                                             ; preds = %3094
  %3170 = load ptr, ptr %14, align 8, !tbaa !5
  %3171 = load i64, ptr %38, align 8, !tbaa !9
  %3172 = getelementptr inbounds double, ptr %3170, i64 %3171
  %3173 = load double, ptr %3172, align 8, !tbaa !11
  %3174 = load double, ptr %50, align 8, !tbaa !11
  %3175 = fdiv double %3173, %3174
  store double %3175, ptr %46, align 8, !tbaa !11
  %3176 = load double, ptr %46, align 8, !tbaa !11
  %3177 = load double, ptr %46, align 8, !tbaa !11
  %3178 = fmul double %3177, %3176
  store double %3178, ptr %46, align 8, !tbaa !11
  %3179 = load ptr, ptr %13, align 8, !tbaa !5
  %3180 = load i64, ptr %38, align 8, !tbaa !9
  %3181 = getelementptr inbounds double, ptr %3179, i64 %3180
  %3182 = load double, ptr %3181, align 8, !tbaa !11
  %3183 = load ptr, ptr %13, align 8, !tbaa !5
  %3184 = load i64, ptr %37, align 8, !tbaa !9
  %3185 = getelementptr inbounds double, ptr %3183, i64 %3184
  %3186 = load double, ptr %3185, align 8, !tbaa !11
  %3187 = fsub double %3182, %3186
  %3188 = load ptr, ptr %13, align 8, !tbaa !5
  %3189 = load i64, ptr %37, align 8, !tbaa !9
  %3190 = getelementptr inbounds double, ptr %3188, i64 %3189
  %3191 = load double, ptr %3190, align 8, !tbaa !11
  %3192 = load ptr, ptr %13, align 8, !tbaa !5
  %3193 = load i64, ptr %38, align 8, !tbaa !9
  %3194 = getelementptr inbounds double, ptr %3192, i64 %3193
  %3195 = load double, ptr %3194, align 8, !tbaa !11
  %3196 = fadd double %3191, %3195
  %3197 = fmul double %3187, %3196
  %3198 = load double, ptr %46, align 8, !tbaa !11
  %3199 = fmul double %3197, %3198
  store double %3199, ptr %47, align 8, !tbaa !11
  %3200 = load double, ptr %42, align 8, !tbaa !11
  %3201 = load double, ptr %48, align 8, !tbaa !11
  %3202 = load double, ptr %40, align 8, !tbaa !11
  %3203 = load double, ptr %39, align 8, !tbaa !11
  %3204 = fadd double %3202, %3203
  %3205 = fneg double %3201
  %3206 = call double @llvm.fmuladd.f64(double %3205, double %3204, double %3200)
  %3207 = load double, ptr %47, align 8, !tbaa !11
  %3208 = fsub double %3206, %3207
  store double %3208, ptr %24, align 8, !tbaa !11
  %3209 = load double, ptr %39, align 8, !tbaa !11
  %3210 = load double, ptr %46, align 8, !tbaa !11
  %3211 = fcmp olt double %3209, %3210
  br i1 %3211, label %3212, label %3219

3212:                                             ; preds = %3169
  %3213 = load double, ptr %48, align 8, !tbaa !11
  %3214 = load double, ptr %48, align 8, !tbaa !11
  %3215 = fmul double %3213, %3214
  %3216 = load double, ptr %40, align 8, !tbaa !11
  %3217 = fmul double %3215, %3216
  %3218 = getelementptr inbounds [3 x double], ptr %30, i64 0, i64 0
  store double %3217, ptr %3218, align 16, !tbaa !11
  br label %3230

3219:                                             ; preds = %3169
  %3220 = load double, ptr %48, align 8, !tbaa !11
  %3221 = load double, ptr %48, align 8, !tbaa !11
  %3222 = fmul double %3220, %3221
  %3223 = load double, ptr %40, align 8, !tbaa !11
  %3224 = load double, ptr %39, align 8, !tbaa !11
  %3225 = load double, ptr %46, align 8, !tbaa !11
  %3226 = fsub double %3224, %3225
  %3227 = fadd double %3223, %3226
  %3228 = fmul double %3222, %3227
  %3229 = getelementptr inbounds [3 x double], ptr %30, i64 0, i64 0
  store double %3228, ptr %3229, align 16, !tbaa !11
  br label %3230

3230:                                             ; preds = %3219, %3212
  %3231 = load ptr, ptr %14, align 8, !tbaa !5
  %3232 = load i64, ptr %38, align 8, !tbaa !9
  %3233 = getelementptr inbounds double, ptr %3231, i64 %3232
  %3234 = load double, ptr %3233, align 8, !tbaa !11
  %3235 = load ptr, ptr %14, align 8, !tbaa !5
  %3236 = load i64, ptr %38, align 8, !tbaa !9
  %3237 = getelementptr inbounds double, ptr %3235, i64 %3236
  %3238 = load double, ptr %3237, align 8, !tbaa !11
  %3239 = fmul double %3234, %3238
  %3240 = getelementptr inbounds [3 x double], ptr %30, i64 0, i64 2
  store double %3239, ptr %3240, align 16, !tbaa !11
  br label %3241

3241:                                             ; preds = %3230, %3168
  br label %3242

3242:                                             ; preds = %3241, %3072
  %3243 = load double, ptr %48, align 8, !tbaa !11
  %3244 = getelementptr inbounds [3 x double], ptr %27, i64 0, i64 0
  store double %3243, ptr %3244, align 16, !tbaa !11
  %3245 = load ptr, ptr %15, align 8, !tbaa !5
  %3246 = load i64, ptr %28, align 8, !tbaa !9
  %3247 = getelementptr inbounds double, ptr %3245, i64 %3246
  %3248 = load double, ptr %3247, align 8, !tbaa !11
  %3249 = load ptr, ptr %18, align 8, !tbaa !5
  %3250 = load i64, ptr %28, align 8, !tbaa !9
  %3251 = getelementptr inbounds double, ptr %3249, i64 %3250
  %3252 = load double, ptr %3251, align 8, !tbaa !11
  %3253 = fmul double %3248, %3252
  %3254 = getelementptr inbounds [3 x double], ptr %27, i64 0, i64 1
  store double %3253, ptr %3254, align 8, !tbaa !11
  %3255 = load double, ptr %50, align 8, !tbaa !11
  %3256 = getelementptr inbounds [3 x double], ptr %27, i64 0, i64 2
  store double %3255, ptr %3256, align 16, !tbaa !11
  %3257 = getelementptr inbounds [3 x double], ptr %27, i64 0, i64 0
  %3258 = getelementptr inbounds [3 x double], ptr %30, i64 0, i64 0
  %3259 = load ptr, ptr %19, align 8, !tbaa !5
  %3260 = call i32 @dlaed6_(ptr noundef %51, ptr noundef %58, ptr noundef %24, ptr noundef %3257, ptr noundef %3258, ptr noundef %26, ptr noundef %32, ptr noundef %3259)
  %3261 = load ptr, ptr %19, align 8, !tbaa !5
  %3262 = load i64, ptr %3261, align 8, !tbaa !9
  %3263 = icmp ne i64 %3262, 0
  br i1 %3263, label %3264, label %3265

3264:                                             ; preds = %3242
  br label %3582

3265:                                             ; preds = %3242
  br label %3266

3266:                                             ; preds = %3265, %3045
  %3267 = load double, ptr %26, align 8, !tbaa !11
  %3268 = load double, ptr %32, align 8, !tbaa !11
  %3269 = fmul double %3267, %3268
  %3270 = fcmp oge double %3269, 0.000000e+00
  br i1 %3270, label %3271, label %3276

3271:                                             ; preds = %3266
  %3272 = load double, ptr %26, align 8, !tbaa !11
  %3273 = fneg double %3272
  %3274 = load double, ptr %29, align 8, !tbaa !11
  %3275 = fdiv double %3273, %3274
  store double %3275, ptr %32, align 8, !tbaa !11
  br label %3276

3276:                                             ; preds = %3271, %3266
  %3277 = load i64, ptr %58, align 8, !tbaa !9
  %3278 = icmp ne i64 %3277, 0
  br i1 %3278, label %3279, label %3294

3279:                                             ; preds = %3276
  %3280 = load ptr, ptr %18, align 8, !tbaa !5
  %3281 = load ptr, ptr %12, align 8, !tbaa !5
  %3282 = load i64, ptr %3281, align 8, !tbaa !9
  %3283 = getelementptr inbounds double, ptr %3280, i64 %3282
  %3284 = load double, ptr %3283, align 8, !tbaa !11
  %3285 = load ptr, ptr %15, align 8, !tbaa !5
  %3286 = load ptr, ptr %12, align 8, !tbaa !5
  %3287 = load i64, ptr %3286, align 8, !tbaa !9
  %3288 = getelementptr inbounds double, ptr %3285, i64 %3287
  %3289 = load double, ptr %3288, align 8, !tbaa !11
  %3290 = fmul double %3284, %3289
  store double %3290, ptr %46, align 8, !tbaa !11
  %3291 = load double, ptr %32, align 8, !tbaa !11
  %3292 = load double, ptr %46, align 8, !tbaa !11
  %3293 = fsub double %3291, %3292
  store double %3293, ptr %42, align 8, !tbaa !11
  br label %3307

3294:                                             ; preds = %3276
  %3295 = load ptr, ptr %18, align 8, !tbaa !5
  %3296 = load i64, ptr %31, align 8, !tbaa !9
  %3297 = getelementptr inbounds double, ptr %3295, i64 %3296
  %3298 = load double, ptr %3297, align 8, !tbaa !11
  %3299 = load ptr, ptr %15, align 8, !tbaa !5
  %3300 = load i64, ptr %31, align 8, !tbaa !9
  %3301 = getelementptr inbounds double, ptr %3299, i64 %3300
  %3302 = load double, ptr %3301, align 8, !tbaa !11
  %3303 = fmul double %3298, %3302
  store double %3303, ptr %46, align 8, !tbaa !11
  %3304 = load double, ptr %32, align 8, !tbaa !11
  %3305 = load double, ptr %46, align 8, !tbaa !11
  %3306 = fsub double %3304, %3305
  store double %3306, ptr %42, align 8, !tbaa !11
  br label %3307

3307:                                             ; preds = %3294, %3279
  %3308 = load double, ptr %42, align 8, !tbaa !11
  %3309 = load double, ptr %45, align 8, !tbaa !11
  %3310 = fcmp ogt double %3308, %3309
  br i1 %3310, label %3315, label %3311

3311:                                             ; preds = %3307
  %3312 = load double, ptr %42, align 8, !tbaa !11
  %3313 = load double, ptr %44, align 8, !tbaa !11
  %3314 = fcmp olt double %3312, %3313
  br i1 %3314, label %3315, label %3329

3315:                                             ; preds = %3311, %3307
  %3316 = load double, ptr %26, align 8, !tbaa !11
  %3317 = fcmp olt double %3316, 0.000000e+00
  br i1 %3317, label %3318, label %3323

3318:                                             ; preds = %3315
  %3319 = load double, ptr %45, align 8, !tbaa !11
  %3320 = load double, ptr %35, align 8, !tbaa !11
  %3321 = fsub double %3319, %3320
  %3322 = fdiv double %3321, 2.000000e+00
  store double %3322, ptr %32, align 8, !tbaa !11
  br label %3328

3323:                                             ; preds = %3315
  %3324 = load double, ptr %44, align 8, !tbaa !11
  %3325 = load double, ptr %35, align 8, !tbaa !11
  %3326 = fsub double %3324, %3325
  %3327 = fdiv double %3326, 2.000000e+00
  store double %3327, ptr %32, align 8, !tbaa !11
  br label %3328

3328:                                             ; preds = %3323, %3318
  br label %3329

3329:                                             ; preds = %3328, %3311
  %3330 = load double, ptr %32, align 8, !tbaa !11
  %3331 = load double, ptr %35, align 8, !tbaa !11
  %3332 = fadd double %3331, %3330
  store double %3332, ptr %35, align 8, !tbaa !11
  %3333 = load ptr, ptr %17, align 8, !tbaa !5
  %3334 = load double, ptr %3333, align 8, !tbaa !11
  %3335 = load ptr, ptr %17, align 8, !tbaa !5
  %3336 = load double, ptr %3335, align 8, !tbaa !11
  %3337 = load ptr, ptr %17, align 8, !tbaa !5
  %3338 = load double, ptr %3337, align 8, !tbaa !11
  %3339 = load double, ptr %32, align 8, !tbaa !11
  %3340 = call double @llvm.fmuladd.f64(double %3336, double %3338, double %3339)
  %3341 = call double @sqrt(double noundef %3340) #5
  %3342 = fadd double %3334, %3341
  %3343 = load double, ptr %32, align 8, !tbaa !11
  %3344 = fdiv double %3343, %3342
  store double %3344, ptr %32, align 8, !tbaa !11
  %3345 = load double, ptr %32, align 8, !tbaa !11
  %3346 = load ptr, ptr %17, align 8, !tbaa !5
  %3347 = load double, ptr %3346, align 8, !tbaa !11
  %3348 = fadd double %3347, %3345
  store double %3348, ptr %3346, align 8, !tbaa !11
  %3349 = load ptr, ptr %11, align 8, !tbaa !5
  %3350 = load i64, ptr %3349, align 8, !tbaa !9
  store i64 %3350, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %25, align 8, !tbaa !9
  br label %3351

3351:                                             ; preds = %3368, %3329
  %3352 = load i64, ptr %25, align 8, !tbaa !9
  %3353 = load i64, ptr %20, align 8, !tbaa !9
  %3354 = icmp sle i64 %3352, %3353
  br i1 %3354, label %3355, label %3371

3355:                                             ; preds = %3351
  %3356 = load double, ptr %32, align 8, !tbaa !11
  %3357 = load ptr, ptr %18, align 8, !tbaa !5
  %3358 = load i64, ptr %25, align 8, !tbaa !9
  %3359 = getelementptr inbounds double, ptr %3357, i64 %3358
  %3360 = load double, ptr %3359, align 8, !tbaa !11
  %3361 = fadd double %3360, %3356
  store double %3361, ptr %3359, align 8, !tbaa !11
  %3362 = load double, ptr %32, align 8, !tbaa !11
  %3363 = load ptr, ptr %15, align 8, !tbaa !5
  %3364 = load i64, ptr %25, align 8, !tbaa !9
  %3365 = getelementptr inbounds double, ptr %3363, i64 %3364
  %3366 = load double, ptr %3365, align 8, !tbaa !11
  %3367 = fsub double %3366, %3362
  store double %3367, ptr %3365, align 8, !tbaa !11
  br label %3368

3368:                                             ; preds = %3355
  %3369 = load i64, ptr %25, align 8, !tbaa !9
  %3370 = add nsw i64 %3369, 1
  store i64 %3370, ptr %25, align 8, !tbaa !9
  br label %3351, !llvm.loop !33

3371:                                             ; preds = %3351
  %3372 = load double, ptr %26, align 8, !tbaa !11
  store double %3372, ptr %43, align 8, !tbaa !11
  store double 0.000000e+00, ptr %40, align 8, !tbaa !11
  store double 0.000000e+00, ptr %36, align 8, !tbaa !11
  store double 0.000000e+00, ptr %59, align 8, !tbaa !11
  %3373 = load i64, ptr %37, align 8, !tbaa !9
  store i64 %3373, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %25, align 8, !tbaa !9
  br label %3374

3374:                                             ; preds = %3407, %3371
  %3375 = load i64, ptr %25, align 8, !tbaa !9
  %3376 = load i64, ptr %20, align 8, !tbaa !9
  %3377 = icmp sle i64 %3375, %3376
  br i1 %3377, label %3378, label %3410

3378:                                             ; preds = %3374
  %3379 = load ptr, ptr %14, align 8, !tbaa !5
  %3380 = load i64, ptr %25, align 8, !tbaa !9
  %3381 = getelementptr inbounds double, ptr %3379, i64 %3380
  %3382 = load double, ptr %3381, align 8, !tbaa !11
  %3383 = load ptr, ptr %18, align 8, !tbaa !5
  %3384 = load i64, ptr %25, align 8, !tbaa !9
  %3385 = getelementptr inbounds double, ptr %3383, i64 %3384
  %3386 = load double, ptr %3385, align 8, !tbaa !11
  %3387 = load ptr, ptr %15, align 8, !tbaa !5
  %3388 = load i64, ptr %25, align 8, !tbaa !9
  %3389 = getelementptr inbounds double, ptr %3387, i64 %3388
  %3390 = load double, ptr %3389, align 8, !tbaa !11
  %3391 = fmul double %3386, %3390
  %3392 = fdiv double %3382, %3391
  store double %3392, ptr %42, align 8, !tbaa !11
  %3393 = load ptr, ptr %14, align 8, !tbaa !5
  %3394 = load i64, ptr %25, align 8, !tbaa !9
  %3395 = getelementptr inbounds double, ptr %3393, i64 %3394
  %3396 = load double, ptr %3395, align 8, !tbaa !11
  %3397 = load double, ptr %42, align 8, !tbaa !11
  %3398 = load double, ptr %36, align 8, !tbaa !11
  %3399 = call double @llvm.fmuladd.f64(double %3396, double %3397, double %3398)
  store double %3399, ptr %36, align 8, !tbaa !11
  %3400 = load double, ptr %42, align 8, !tbaa !11
  %3401 = load double, ptr %42, align 8, !tbaa !11
  %3402 = load double, ptr %40, align 8, !tbaa !11
  %3403 = call double @llvm.fmuladd.f64(double %3400, double %3401, double %3402)
  store double %3403, ptr %40, align 8, !tbaa !11
  %3404 = load double, ptr %36, align 8, !tbaa !11
  %3405 = load double, ptr %59, align 8, !tbaa !11
  %3406 = fadd double %3405, %3404
  store double %3406, ptr %59, align 8, !tbaa !11
  br label %3407

3407:                                             ; preds = %3378
  %3408 = load i64, ptr %25, align 8, !tbaa !9
  %3409 = add nsw i64 %3408, 1
  store i64 %3409, ptr %25, align 8, !tbaa !9
  br label %3374, !llvm.loop !34

3410:                                             ; preds = %3374
  %3411 = load double, ptr %59, align 8, !tbaa !11
  %3412 = fcmp oge double %3411, 0.000000e+00
  br i1 %3412, label %3413, label %3415

3413:                                             ; preds = %3410
  %3414 = load double, ptr %59, align 8, !tbaa !11
  br label %3418

3415:                                             ; preds = %3410
  %3416 = load double, ptr %59, align 8, !tbaa !11
  %3417 = fneg double %3416
  br label %3418

3418:                                             ; preds = %3415, %3413
  %3419 = phi double [ %3414, %3413 ], [ %3417, %3415 ]
  store double %3419, ptr %59, align 8, !tbaa !11
  store double 0.000000e+00, ptr %39, align 8, !tbaa !11
  store double 0.000000e+00, ptr %33, align 8, !tbaa !11
  %3420 = load i64, ptr %38, align 8, !tbaa !9
  store i64 %3420, ptr %20, align 8, !tbaa !9
  %3421 = load ptr, ptr %11, align 8, !tbaa !5
  %3422 = load i64, ptr %3421, align 8, !tbaa !9
  store i64 %3422, ptr %25, align 8, !tbaa !9
  br label %3423

3423:                                             ; preds = %3456, %3418
  %3424 = load i64, ptr %25, align 8, !tbaa !9
  %3425 = load i64, ptr %20, align 8, !tbaa !9
  %3426 = icmp sge i64 %3424, %3425
  br i1 %3426, label %3427, label %3459

3427:                                             ; preds = %3423
  %3428 = load ptr, ptr %14, align 8, !tbaa !5
  %3429 = load i64, ptr %25, align 8, !tbaa !9
  %3430 = getelementptr inbounds double, ptr %3428, i64 %3429
  %3431 = load double, ptr %3430, align 8, !tbaa !11
  %3432 = load ptr, ptr %18, align 8, !tbaa !5
  %3433 = load i64, ptr %25, align 8, !tbaa !9
  %3434 = getelementptr inbounds double, ptr %3432, i64 %3433
  %3435 = load double, ptr %3434, align 8, !tbaa !11
  %3436 = load ptr, ptr %15, align 8, !tbaa !5
  %3437 = load i64, ptr %25, align 8, !tbaa !9
  %3438 = getelementptr inbounds double, ptr %3436, i64 %3437
  %3439 = load double, ptr %3438, align 8, !tbaa !11
  %3440 = fmul double %3435, %3439
  %3441 = fdiv double %3431, %3440
  store double %3441, ptr %42, align 8, !tbaa !11
  %3442 = load ptr, ptr %14, align 8, !tbaa !5
  %3443 = load i64, ptr %25, align 8, !tbaa !9
  %3444 = getelementptr inbounds double, ptr %3442, i64 %3443
  %3445 = load double, ptr %3444, align 8, !tbaa !11
  %3446 = load double, ptr %42, align 8, !tbaa !11
  %3447 = load double, ptr %33, align 8, !tbaa !11
  %3448 = call double @llvm.fmuladd.f64(double %3445, double %3446, double %3447)
  store double %3448, ptr %33, align 8, !tbaa !11
  %3449 = load double, ptr %42, align 8, !tbaa !11
  %3450 = load double, ptr %42, align 8, !tbaa !11
  %3451 = load double, ptr %39, align 8, !tbaa !11
  %3452 = call double @llvm.fmuladd.f64(double %3449, double %3450, double %3451)
  store double %3452, ptr %39, align 8, !tbaa !11
  %3453 = load double, ptr %33, align 8, !tbaa !11
  %3454 = load double, ptr %59, align 8, !tbaa !11
  %3455 = fadd double %3454, %3453
  store double %3455, ptr %59, align 8, !tbaa !11
  br label %3456

3456:                                             ; preds = %3427
  %3457 = load i64, ptr %25, align 8, !tbaa !9
  %3458 = add nsw i64 %3457, -1
  store i64 %3458, ptr %25, align 8, !tbaa !9
  br label %3423, !llvm.loop !35

3459:                                             ; preds = %3423
  %3460 = load ptr, ptr %14, align 8, !tbaa !5
  %3461 = load i64, ptr %28, align 8, !tbaa !9
  %3462 = getelementptr inbounds double, ptr %3460, i64 %3461
  %3463 = load double, ptr %3462, align 8, !tbaa !11
  %3464 = load ptr, ptr %18, align 8, !tbaa !5
  %3465 = load i64, ptr %28, align 8, !tbaa !9
  %3466 = getelementptr inbounds double, ptr %3464, i64 %3465
  %3467 = load double, ptr %3466, align 8, !tbaa !11
  %3468 = load ptr, ptr %15, align 8, !tbaa !5
  %3469 = load i64, ptr %28, align 8, !tbaa !9
  %3470 = getelementptr inbounds double, ptr %3468, i64 %3469
  %3471 = load double, ptr %3470, align 8, !tbaa !11
  %3472 = fmul double %3467, %3471
  %3473 = fdiv double %3463, %3472
  store double %3473, ptr %42, align 8, !tbaa !11
  %3474 = load double, ptr %40, align 8, !tbaa !11
  %3475 = load double, ptr %39, align 8, !tbaa !11
  %3476 = fadd double %3474, %3475
  %3477 = load double, ptr %42, align 8, !tbaa !11
  %3478 = load double, ptr %42, align 8, !tbaa !11
  %3479 = call double @llvm.fmuladd.f64(double %3477, double %3478, double %3476)
  store double %3479, ptr %29, align 8, !tbaa !11
  %3480 = load ptr, ptr %14, align 8, !tbaa !5
  %3481 = load i64, ptr %28, align 8, !tbaa !9
  %3482 = getelementptr inbounds double, ptr %3480, i64 %3481
  %3483 = load double, ptr %3482, align 8, !tbaa !11
  %3484 = load double, ptr %42, align 8, !tbaa !11
  %3485 = fmul double %3483, %3484
  store double %3485, ptr %42, align 8, !tbaa !11
  %3486 = load double, ptr %61, align 8, !tbaa !11
  %3487 = load double, ptr %33, align 8, !tbaa !11
  %3488 = fadd double %3486, %3487
  %3489 = load double, ptr %36, align 8, !tbaa !11
  %3490 = fadd double %3488, %3489
  %3491 = load double, ptr %42, align 8, !tbaa !11
  %3492 = fadd double %3490, %3491
  store double %3492, ptr %26, align 8, !tbaa !11
  %3493 = load double, ptr %33, align 8, !tbaa !11
  %3494 = load double, ptr %36, align 8, !tbaa !11
  %3495 = fsub double %3493, %3494
  %3496 = load double, ptr %59, align 8, !tbaa !11
  %3497 = call double @llvm.fmuladd.f64(double %3495, double 8.000000e+00, double %3496)
  %3498 = load double, ptr %61, align 8, !tbaa !11
  %3499 = call double @llvm.fmuladd.f64(double %3498, double 2.000000e+00, double %3497)
  %3500 = load double, ptr %42, align 8, !tbaa !11
  %3501 = fcmp oge double %3500, 0.000000e+00
  br i1 %3501, label %3502, label %3504

3502:                                             ; preds = %3459
  %3503 = load double, ptr %42, align 8, !tbaa !11
  br label %3507

3504:                                             ; preds = %3459
  %3505 = load double, ptr %42, align 8, !tbaa !11
  %3506 = fneg double %3505
  br label %3507

3507:                                             ; preds = %3504, %3502
  %3508 = phi double [ %3503, %3502 ], [ %3506, %3504 ]
  %3509 = call double @llvm.fmuladd.f64(double %3508, double 3.000000e+00, double %3499)
  %3510 = load double, ptr %35, align 8, !tbaa !11
  %3511 = fcmp oge double %3510, 0.000000e+00
  br i1 %3511, label %3512, label %3514

3512:                                             ; preds = %3507
  %3513 = load double, ptr %35, align 8, !tbaa !11
  br label %3517

3514:                                             ; preds = %3507
  %3515 = load double, ptr %35, align 8, !tbaa !11
  %3516 = fneg double %3515
  br label %3517

3517:                                             ; preds = %3514, %3512
  %3518 = phi double [ %3513, %3512 ], [ %3516, %3514 ]
  %3519 = load double, ptr %29, align 8, !tbaa !11
  %3520 = call double @llvm.fmuladd.f64(double %3518, double %3519, double %3509)
  store double %3520, ptr %59, align 8, !tbaa !11
  %3521 = load double, ptr %26, align 8, !tbaa !11
  %3522 = load double, ptr %43, align 8, !tbaa !11
  %3523 = fmul double %3521, %3522
  %3524 = fcmp ogt double %3523, 0.000000e+00
  br i1 %3524, label %3525, label %3552

3525:                                             ; preds = %3517
  %3526 = load double, ptr %26, align 8, !tbaa !11
  %3527 = fcmp oge double %3526, 0.000000e+00
  br i1 %3527, label %3528, label %3530

3528:                                             ; preds = %3525
  %3529 = load double, ptr %26, align 8, !tbaa !11
  br label %3533

3530:                                             ; preds = %3525
  %3531 = load double, ptr %26, align 8, !tbaa !11
  %3532 = fneg double %3531
  br label %3533

3533:                                             ; preds = %3530, %3528
  %3534 = phi double [ %3529, %3528 ], [ %3532, %3530 ]
  %3535 = load double, ptr %43, align 8, !tbaa !11
  %3536 = fcmp oge double %3535, 0.000000e+00
  br i1 %3536, label %3537, label %3539

3537:                                             ; preds = %3533
  %3538 = load double, ptr %43, align 8, !tbaa !11
  br label %3542

3539:                                             ; preds = %3533
  %3540 = load double, ptr %43, align 8, !tbaa !11
  %3541 = fneg double %3540
  br label %3542

3542:                                             ; preds = %3539, %3537
  %3543 = phi double [ %3538, %3537 ], [ %3541, %3539 ]
  %3544 = fdiv double %3543, 1.000000e+01
  %3545 = fcmp ogt double %3534, %3544
  br i1 %3545, label %3546, label %3552

3546:                                             ; preds = %3542
  %3547 = load i64, ptr %53, align 8, !tbaa !9
  %3548 = icmp ne i64 %3547, 0
  %3549 = xor i1 %3548, true
  %3550 = zext i1 %3549 to i32
  %3551 = sext i32 %3550 to i64
  store i64 %3551, ptr %53, align 8, !tbaa !9
  br label %3552

3552:                                             ; preds = %3546, %3542, %3517
  %3553 = load double, ptr %26, align 8, !tbaa !11
  %3554 = fcmp ole double %3553, 0.000000e+00
  br i1 %3554, label %3555, label %3565

3555:                                             ; preds = %3552
  %3556 = load double, ptr %44, align 8, !tbaa !11
  %3557 = load double, ptr %35, align 8, !tbaa !11
  %3558 = fcmp oge double %3556, %3557
  br i1 %3558, label %3559, label %3561

3559:                                             ; preds = %3555
  %3560 = load double, ptr %44, align 8, !tbaa !11
  br label %3563

3561:                                             ; preds = %3555
  %3562 = load double, ptr %35, align 8, !tbaa !11
  br label %3563

3563:                                             ; preds = %3561, %3559
  %3564 = phi double [ %3560, %3559 ], [ %3562, %3561 ]
  store double %3564, ptr %44, align 8, !tbaa !11
  br label %3575

3565:                                             ; preds = %3552
  %3566 = load double, ptr %45, align 8, !tbaa !11
  %3567 = load double, ptr %35, align 8, !tbaa !11
  %3568 = fcmp ole double %3566, %3567
  br i1 %3568, label %3569, label %3571

3569:                                             ; preds = %3565
  %3570 = load double, ptr %45, align 8, !tbaa !11
  br label %3573

3571:                                             ; preds = %3565
  %3572 = load double, ptr %35, align 8, !tbaa !11
  br label %3573

3573:                                             ; preds = %3571, %3569
  %3574 = phi double [ %3570, %3569 ], [ %3572, %3571 ]
  store double %3574, ptr %45, align 8, !tbaa !11
  br label %3575

3575:                                             ; preds = %3573, %3563
  br label %3576

3576:                                             ; preds = %3575
  %3577 = load i64, ptr %51, align 8, !tbaa !9
  %3578 = add nsw i64 %3577, 1
  store i64 %3578, ptr %51, align 8, !tbaa !9
  br label %2791, !llvm.loop !36

3579:                                             ; preds = %2791
  %3580 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 1, ptr %3580, align 8, !tbaa !9
  br label %3581

3581:                                             ; preds = %3579
  br label %3582

3582:                                             ; preds = %3581, %3264, %2808, %2474, %2067, %1336, %1064, %743
  store i32 0, ptr %10, align 4
  store i32 1, ptr %62, align 4
  br label %3583

3583:                                             ; preds = %3582, %103, %75
  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 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 24, 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 24, 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
  %3584 = load i32, ptr %10, align 4
  ret i32 %3584
}

; 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 @sqrt(double noundef) #2

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

declare i32 @dlasd5_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

declare double @dlamch_(ptr noundef) #4

declare i32 @dlaed6_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

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

attributes #0 = { 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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { "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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !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}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}
!31 = distinct !{!31, !14}
!32 = distinct !{!32, !14}
!33 = distinct !{!33, !14}
!34 = distinct !{!34, !14}
!35 = distinct !{!35, !14}
!36 = distinct !{!36, !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"

@.str = external hidden unnamed_addr constant [8 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dlasd4_(ptr nocapture noundef readonly %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8) local_unnamed_addr #0 {
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca [3 x double], align 16
  %13 = alloca [3 x double], align 16
  %14 = alloca double, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #6
  %17 = getelementptr inbounds i8, ptr %7, i64 -8
  %18 = getelementptr inbounds i8, ptr %4, i64 -8
  %19 = getelementptr inbounds i8, ptr %3, i64 -8
  %20 = getelementptr inbounds i8, ptr %2, i64 -8
  store i64 0, ptr %8, align 8, !tbaa !5
  %21 = load i64, ptr %0, align 8, !tbaa !5
  switch i64 %21, label %32 [
    i64 1, label %22
    i64 2, label %30
  ]

22:                                               ; preds = %9
  %23 = load double, ptr %2, align 8, !tbaa !9
  %24 = load double, ptr %5, align 8, !tbaa !9
  %25 = load double, ptr %3, align 8, !tbaa !9
  %26 = fmul double %24, %25
  %27 = fmul double %25, %26
  %28 = tail call double @llvm.fmuladd.f64(double %23, double %23, double %27)
  %29 = tail call double @sqrt(double noundef %28) #6
  store double %29, ptr %6, align 8, !tbaa !9
  store double 1.000000e+00, ptr %4, align 8, !tbaa !9
  store double 1.000000e+00, ptr %7, align 8, !tbaa !9
  br label %.loopexit1473

30:                                               ; preds = %9
  %31 = tail call i32 @dlasd5_(ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7) #6
  br label %.loopexit1473

32:                                               ; preds = %9
  %33 = tail call double @dlamch_(ptr noundef nonnull @.str) #6
  %34 = load double, ptr %5, align 8, !tbaa !9
  %35 = fdiv double 1.000000e+00, %34
  %36 = load i64, ptr %1, align 8, !tbaa !5
  %37 = load i64, ptr %0, align 8, !tbaa !5
  %38 = icmp eq i64 %36, %37
  br i1 %38, label %39, label %736

39:                                               ; preds = %32
  %40 = add nsw i64 %36, -1
  %41 = fmul double %34, 5.000000e-01
  %42 = getelementptr inbounds double, ptr %20, i64 %36
  %43 = load double, ptr %42, align 8, !tbaa !9
  %44 = tail call double @llvm.fmuladd.f64(double %43, double %43, double %41)
  %45 = tail call double @sqrt(double noundef %44) #6
  %46 = fadd double %43, %45
  %47 = fdiv double %41, %46
  %48 = load i64, ptr %0, align 8, !tbaa !5
  %.not14591589 = icmp slt i64 %48, 1
  br i1 %.not14591589, label %._crit_edge1599, label %.lr.ph1592

.lr.ph1592:                                       ; preds = %39
  %49 = getelementptr inbounds double, ptr %20, i64 %48
  %min.iters.check1994 = icmp ult i64 %48, 14
  br i1 %min.iters.check1994, label %scalar.ph1993.preheader, label %vector.memcheck1969

vector.memcheck1969:                              ; preds = %.lr.ph1592
  %50 = shl i64 %48, 3
  %scevgep1970 = getelementptr i8, ptr %7, i64 %50
  %scevgep1971 = getelementptr i8, ptr %4, i64 %50
  %scevgep1972 = getelementptr i8, ptr %2, i64 %50
  %bound01973 = icmp ugt ptr %scevgep1971, %7
  %bound11974 = icmp ugt ptr %scevgep1970, %4
  %found.conflict1975 = and i1 %bound01973, %bound11974
  %bound01976 = icmp ugt ptr %scevgep1972, %7
  %bound11977 = icmp ult ptr %49, %scevgep1970
  %found.conflict1978 = and i1 %bound01976, %bound11977
  %conflict.rdx1979 = or i1 %found.conflict1975, %found.conflict1978
  %bound01980 = icmp ugt ptr %scevgep1972, %7
  %bound11981 = icmp ugt ptr %scevgep1970, %2
  %found.conflict1982 = and i1 %bound01980, %bound11981
  %conflict.rdx1983 = or i1 %conflict.rdx1979, %found.conflict1982
  %bound01984 = icmp ugt ptr %scevgep1972, %4
  %bound11985 = icmp ult ptr %49, %scevgep1971
  %found.conflict1986 = and i1 %bound01984, %bound11985
  %conflict.rdx1987 = or i1 %conflict.rdx1983, %found.conflict1986
  %bound01988 = icmp ugt ptr %scevgep1972, %4
  %bound11989 = icmp ugt ptr %scevgep1971, %2
  %found.conflict1990 = and i1 %bound01988, %bound11989
  %conflict.rdx1991 = or i1 %conflict.rdx1987, %found.conflict1990
  br i1 %conflict.rdx1991, label %scalar.ph1993.preheader, label %vector.ph1995

vector.ph1995:                                    ; preds = %vector.memcheck1969
  %n.vec1997 = and i64 %48, 9223372036854775806
  %ind.end1998 = or i64 %48, 1
  %broadcast.splatinsert2006 = insertelement <2 x double> poison, double %47, i64 0
  %broadcast.splat2007 = shufflevector <2 x double> %broadcast.splatinsert2006, <2 x double> poison, <2 x i32> zeroinitializer
  %51 = load double, ptr %49, align 8, !tbaa !9, !alias.scope !11
  %broadcast.splatinsert2004 = insertelement <2 x double> poison, double %51, i64 0
  %broadcast.splat2005 = shufflevector <2 x double> %broadcast.splatinsert2004, <2 x double> poison, <2 x i32> zeroinitializer
  %52 = load double, ptr %49, align 8, !tbaa !9, !alias.scope !11
  %broadcast.splatinsert2009 = insertelement <2 x double> poison, double %52, i64 0
  %broadcast.splat2010 = shufflevector <2 x double> %broadcast.splatinsert2009, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body2000

vector.body2000:                                  ; preds = %vector.body2000, %vector.ph1995
  %index2001 = phi i64 [ 0, %vector.ph1995 ], [ %index.next2011, %vector.body2000 ]
  %53 = getelementptr double, ptr %2, i64 %index2001
  %wide.load2003 = load <2 x double>, ptr %53, align 8, !tbaa !9, !alias.scope !14
  %54 = fadd <2 x double> %wide.load2003, %broadcast.splat2005
  %55 = fadd <2 x double> %broadcast.splat2007, %54
  %56 = getelementptr double, ptr %7, i64 %index2001
  store <2 x double> %55, ptr %56, align 8, !tbaa !9, !alias.scope !16, !noalias !18
  %wide.load2008 = load <2 x double>, ptr %53, align 8, !tbaa !9, !alias.scope !14
  %57 = fsub <2 x double> %wide.load2008, %broadcast.splat2010
  %58 = fsub <2 x double> %57, %broadcast.splat2007
  %59 = getelementptr double, ptr %4, i64 %index2001
  store <2 x double> %58, ptr %59, align 8, !tbaa !9, !alias.scope !20, !noalias !21
  %index.next2011 = add nuw i64 %index2001, 2
  %60 = icmp eq i64 %index.next2011, %n.vec1997
  br i1 %60, label %middle.block1992, label %vector.body2000, !llvm.loop !22

middle.block1992:                                 ; preds = %vector.body2000
  %cmp.n2012 = icmp eq i64 %48, %n.vec1997
  br i1 %cmp.n2012, label %._crit_edge1593, label %scalar.ph1993.preheader

scalar.ph1993.preheader:                          ; preds = %middle.block1992, %vector.memcheck1969, %.lr.ph1592
  %.013801590.ph = phi i64 [ 1, %vector.memcheck1969 ], [ 1, %.lr.ph1592 ], [ %ind.end1998, %middle.block1992 ]
  %xtraiter2184 = and i64 %48, 1
  %lcmp.mod2185.not = icmp eq i64 %xtraiter2184, 0
  br i1 %lcmp.mod2185.not, label %scalar.ph1993.prol.loopexit, label %scalar.ph1993.prol

scalar.ph1993.prol:                               ; preds = %scalar.ph1993.preheader
  %61 = getelementptr inbounds double, ptr %20, i64 %.013801590.ph
  %62 = load double, ptr %61, align 8, !tbaa !9
  %63 = load double, ptr %49, align 8, !tbaa !9
  %64 = fadd double %62, %63
  %65 = fadd double %47, %64
  %66 = getelementptr inbounds double, ptr %17, i64 %.013801590.ph
  store double %65, ptr %66, align 8, !tbaa !9
  %67 = load double, ptr %61, align 8, !tbaa !9
  %68 = load double, ptr %49, align 8, !tbaa !9
  %69 = fsub double %67, %68
  %70 = fsub double %69, %47
  %71 = getelementptr inbounds double, ptr %18, i64 %.013801590.ph
  store double %70, ptr %71, align 8, !tbaa !9
  %72 = add nuw i64 %.013801590.ph, 1
  br label %scalar.ph1993.prol.loopexit

scalar.ph1993.prol.loopexit:                      ; preds = %scalar.ph1993.prol, %scalar.ph1993.preheader
  %.013801590.unr = phi i64 [ %.013801590.ph, %scalar.ph1993.preheader ], [ %72, %scalar.ph1993.prol ]
  %73 = icmp eq i64 %48, %.013801590.ph
  br i1 %73, label %._crit_edge1593, label %scalar.ph1993

scalar.ph1993:                                    ; preds = %scalar.ph1993.prol.loopexit, %scalar.ph1993
  %.013801590 = phi i64 [ %97, %scalar.ph1993 ], [ %.013801590.unr, %scalar.ph1993.prol.loopexit ]
  %74 = getelementptr inbounds double, ptr %20, i64 %.013801590
  %75 = load double, ptr %74, align 8, !tbaa !9
  %76 = load double, ptr %49, align 8, !tbaa !9
  %77 = fadd double %75, %76
  %78 = fadd double %47, %77
  %79 = getelementptr inbounds double, ptr %17, i64 %.013801590
  store double %78, ptr %79, align 8, !tbaa !9
  %80 = load double, ptr %74, align 8, !tbaa !9
  %81 = load double, ptr %49, align 8, !tbaa !9
  %82 = fsub double %80, %81
  %83 = fsub double %82, %47
  %84 = getelementptr inbounds double, ptr %18, i64 %.013801590
  store double %83, ptr %84, align 8, !tbaa !9
  %85 = add nuw i64 %.013801590, 1
  %86 = getelementptr double, ptr %2, i64 %.013801590
  %87 = load double, ptr %86, align 8, !tbaa !9
  %88 = load double, ptr %49, align 8, !tbaa !9
  %89 = fadd double %87, %88
  %90 = fadd double %47, %89
  %91 = getelementptr double, ptr %7, i64 %.013801590
  store double %90, ptr %91, align 8, !tbaa !9
  %92 = load double, ptr %86, align 8, !tbaa !9
  %93 = load double, ptr %49, align 8, !tbaa !9
  %94 = fsub double %92, %93
  %95 = fsub double %94, %47
  %96 = getelementptr double, ptr %4, i64 %.013801590
  store double %95, ptr %96, align 8, !tbaa !9
  %97 = add nuw i64 %.013801590, 2
  %exitcond1710.not.1 = icmp eq i64 %85, %48
  br i1 %exitcond1710.not.1, label %._crit_edge1593, label %scalar.ph1993, !llvm.loop !26

._crit_edge1593:                                  ; preds = %scalar.ph1993.prol.loopexit, %scalar.ph1993, %middle.block1992
  %.not14601594 = icmp slt i64 %48, 3
  br i1 %.not14601594, label %._crit_edge1599, label %.lr.ph1598.preheader

.lr.ph1598.preheader:                             ; preds = %._crit_edge1593
  %xtraiter2186 = and i64 %48, 1
  %98 = icmp eq i64 %48, 3
  br i1 %98, label %._crit_edge1599.loopexit.unr-lcssa, label %.lr.ph1598.preheader.new

.lr.ph1598.preheader.new:                         ; preds = %.lr.ph1598.preheader
  %99 = and i64 %48, 9223372036854775806
  %100 = add nsw i64 %99, -4
  br label %.lr.ph1598

.lr.ph1598:                                       ; preds = %.lr.ph1598, %.lr.ph1598.preheader.new
  %.013581596 = phi double [ 0.000000e+00, %.lr.ph1598.preheader.new ], [ %120, %.lr.ph1598 ]
  %.113811595 = phi i64 [ 1, %.lr.ph1598.preheader.new ], [ %121, %.lr.ph1598 ]
  %niter2190 = phi i64 [ 0, %.lr.ph1598.preheader.new ], [ %niter2190.next.1, %.lr.ph1598 ]
  %101 = getelementptr inbounds double, ptr %19, i64 %.113811595
  %102 = load double, ptr %101, align 8, !tbaa !9
  %103 = fmul double %102, %102
  %104 = getelementptr inbounds double, ptr %18, i64 %.113811595
  %105 = load double, ptr %104, align 8, !tbaa !9
  %106 = getelementptr inbounds double, ptr %17, i64 %.113811595
  %107 = load double, ptr %106, align 8, !tbaa !9
  %108 = fmul double %105, %107
  %109 = fdiv double %103, %108
  %110 = fadd double %.013581596, %109
  %111 = getelementptr double, ptr %3, i64 %.113811595
  %112 = load double, ptr %111, align 8, !tbaa !9
  %113 = fmul double %112, %112
  %114 = getelementptr double, ptr %4, i64 %.113811595
  %115 = load double, ptr %114, align 8, !tbaa !9
  %116 = getelementptr double, ptr %7, i64 %.113811595
  %117 = load double, ptr %116, align 8, !tbaa !9
  %118 = fmul double %115, %117
  %119 = fdiv double %113, %118
  %120 = fadd double %110, %119
  %121 = add nuw i64 %.113811595, 2
  %niter2190.next.1 = add i64 %niter2190, 2
  %niter2190.ncmp.1 = icmp eq i64 %niter2190, %100
  br i1 %niter2190.ncmp.1, label %._crit_edge1599.loopexit.unr-lcssa, label %.lr.ph1598, !llvm.loop !27

._crit_edge1599.loopexit.unr-lcssa:               ; preds = %.lr.ph1598, %.lr.ph1598.preheader
  %.lcssa2115.ph = phi double [ poison, %.lr.ph1598.preheader ], [ %120, %.lr.ph1598 ]
  %.013581596.unr = phi double [ 0.000000e+00, %.lr.ph1598.preheader ], [ %120, %.lr.ph1598 ]
  %.113811595.unr = phi i64 [ 1, %.lr.ph1598.preheader ], [ %121, %.lr.ph1598 ]
  %lcmp.mod2187.not = icmp eq i64 %xtraiter2186, 0
  br i1 %lcmp.mod2187.not, label %._crit_edge1599, label %.lr.ph1598.epil

.lr.ph1598.epil:                                  ; preds = %._crit_edge1599.loopexit.unr-lcssa
  %122 = getelementptr inbounds double, ptr %19, i64 %.113811595.unr
  %123 = load double, ptr %122, align 8, !tbaa !9
  %124 = fmul double %123, %123
  %125 = getelementptr inbounds double, ptr %18, i64 %.113811595.unr
  %126 = load double, ptr %125, align 8, !tbaa !9
  %127 = getelementptr inbounds double, ptr %17, i64 %.113811595.unr
  %128 = load double, ptr %127, align 8, !tbaa !9
  %129 = fmul double %126, %128
  %130 = fdiv double %124, %129
  %131 = fadd double %.013581596.unr, %130
  br label %._crit_edge1599

._crit_edge1599:                                  ; preds = %.lr.ph1598.epil, %._crit_edge1599.loopexit.unr-lcssa, %39, %._crit_edge1593
  %.01358.lcssa = phi double [ 0.000000e+00, %._crit_edge1593 ], [ 0.000000e+00, %39 ], [ %.lcssa2115.ph, %._crit_edge1599.loopexit.unr-lcssa ], [ %131, %.lr.ph1598.epil ]
  %132 = fadd double %35, %.01358.lcssa
  %133 = getelementptr inbounds double, ptr %19, i64 %40
  %134 = load double, ptr %133, align 8, !tbaa !9
  %135 = getelementptr inbounds double, ptr %18, i64 %40
  %136 = load double, ptr %135, align 8, !tbaa !9
  %137 = getelementptr inbounds double, ptr %17, i64 %40
  %138 = load double, ptr %137, align 8, !tbaa !9
  %139 = getelementptr inbounds double, ptr %19, i64 %48
  %140 = load double, ptr %139, align 8, !tbaa !9
  %141 = getelementptr inbounds double, ptr %18, i64 %48
  %142 = load double, ptr %141, align 8, !tbaa !9
  %143 = getelementptr inbounds double, ptr %17, i64 %48
  %144 = load double, ptr %143, align 8, !tbaa !9
  %145 = insertelement <2 x double> poison, double %134, i64 0
  %146 = insertelement <2 x double> %145, double %140, i64 1
  %147 = fmul <2 x double> %146, %146
  %148 = insertelement <2 x double> poison, double %136, i64 0
  %149 = insertelement <2 x double> %148, double %142, i64 1
  %150 = insertelement <2 x double> poison, double %138, i64 0
  %151 = insertelement <2 x double> %150, double %144, i64 1
  %152 = fmul <2 x double> %149, %151
  %153 = fdiv <2 x double> %147, %152
  %154 = extractelement <2 x double> %153, i64 0
  %155 = fadd double %132, %154
  %156 = extractelement <2 x double> %153, i64 1
  %157 = fadd double %155, %156
  %158 = fcmp ugt double %157, 0.000000e+00
  %159 = getelementptr inbounds double, ptr %20, i64 %48
  %160 = load double, ptr %159, align 8, !tbaa !9
  br i1 %158, label %214, label %161

161:                                              ; preds = %._crit_edge1599
  %162 = load double, ptr %5, align 8, !tbaa !9
  %163 = tail call double @llvm.fmuladd.f64(double %160, double %160, double %162)
  %164 = tail call double @sqrt(double noundef %163) #6
  %165 = load i64, ptr %0, align 8, !tbaa !5
  %166 = add nsw i64 %165, -1
  %167 = getelementptr inbounds double, ptr %19, i64 %166
  %168 = getelementptr inbounds double, ptr %20, i64 %166
  %169 = load double, ptr %168, align 8, !tbaa !9
  %170 = fadd double %164, %169
  %171 = getelementptr inbounds double, ptr %20, i64 %165
  %172 = load double, ptr %171, align 8, !tbaa !9
  %173 = fsub double %172, %169
  %174 = load double, ptr %5, align 8, !tbaa !9
  %175 = fadd double %164, %172
  %176 = fdiv double %174, %175
  %177 = fadd double %173, %176
  %178 = fmul double %170, %177
  %179 = load <2 x double>, ptr %167, align 8, !tbaa !9
  %180 = fmul <2 x double> %179, %179
  %181 = insertelement <2 x double> poison, double %178, i64 0
  %182 = insertelement <2 x double> %181, double %174, i64 1
  %183 = fdiv <2 x double> %180, %182
  %shift = shufflevector <2 x double> %183, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %184 = fadd <2 x double> %shift, %183
  %185 = extractelement <2 x double> %184, i64 0
  %186 = fcmp ugt double %132, %185
  br i1 %186, label %187, label %246

187:                                              ; preds = %161
  %188 = fadd double %169, %172
  %189 = fmul double %173, %188
  %190 = fneg double %132
  %191 = extractelement <2 x double> %180, i64 0
  %192 = tail call double @llvm.fmuladd.f64(double %190, double %189, double %191)
  %193 = extractelement <2 x double> %179, i64 1
  %194 = tail call double @llvm.fmuladd.f64(double %193, double %193, double %192)
  %195 = extractelement <2 x double> %180, i64 1
  %196 = fmul double %189, %195
  %197 = fcmp olt double %194, 0.000000e+00
  br i1 %197, label %198, label %206

198:                                              ; preds = %187
  %199 = fmul double %196, 2.000000e+00
  %200 = fmul double %196, 4.000000e+00
  %201 = fmul double %132, %200
  %202 = tail call double @llvm.fmuladd.f64(double %194, double %194, double %201)
  %203 = tail call double @sqrt(double noundef %202) #6
  %204 = fsub double %203, %194
  %205 = fdiv double %199, %204
  br label %246

206:                                              ; preds = %187
  %207 = fmul double %196, 4.000000e+00
  %208 = fmul double %132, %207
  %209 = tail call double @llvm.fmuladd.f64(double %194, double %194, double %208)
  %210 = tail call double @sqrt(double noundef %209) #6
  %211 = fadd double %194, %210
  %212 = fmul double %132, 2.000000e+00
  %213 = fdiv double %211, %212
  br label %246

214:                                              ; preds = %._crit_edge1599
  %215 = add nsw i64 %48, -1
  %216 = getelementptr inbounds double, ptr %20, i64 %215
  %217 = load double, ptr %216, align 8, !tbaa !9
  %218 = fsub double %160, %217
  %219 = fadd double %160, %217
  %220 = fmul double %218, %219
  %221 = fneg double %132
  %222 = getelementptr inbounds double, ptr %19, i64 %215
  %223 = load double, ptr %222, align 8, !tbaa !9
  %224 = fmul double %223, %223
  %225 = tail call double @llvm.fmuladd.f64(double %221, double %220, double %224)
  %226 = tail call double @llvm.fmuladd.f64(double %140, double %140, double %225)
  %227 = extractelement <2 x double> %147, i64 1
  %228 = fmul double %227, %220
  %229 = fcmp olt double %226, 0.000000e+00
  br i1 %229, label %230, label %238

230:                                              ; preds = %214
  %231 = fmul double %228, 2.000000e+00
  %232 = fmul double %228, 4.000000e+00
  %233 = fmul double %132, %232
  %234 = tail call double @llvm.fmuladd.f64(double %226, double %226, double %233)
  %235 = tail call double @sqrt(double noundef %234) #6
  %236 = fsub double %235, %226
  %237 = fdiv double %231, %236
  br label %246

238:                                              ; preds = %214
  %239 = fmul double %228, 4.000000e+00
  %240 = fmul double %132, %239
  %241 = tail call double @llvm.fmuladd.f64(double %226, double %226, double %240)
  %242 = tail call double @sqrt(double noundef %241) #6
  %243 = fadd double %226, %242
  %244 = fmul double %132, 2.000000e+00
  %245 = fdiv double %243, %244
  br label %246

246:                                              ; preds = %161, %230, %238, %206, %198
  %.01367 = phi double [ %205, %198 ], [ %213, %206 ], [ %237, %230 ], [ %245, %238 ], [ %174, %161 ]
  %247 = load i64, ptr %0, align 8, !tbaa !5
  %248 = getelementptr inbounds double, ptr %20, i64 %247
  %249 = load double, ptr %248, align 8, !tbaa !9
  %250 = tail call double @llvm.fmuladd.f64(double %249, double %249, double %.01367)
  %251 = tail call double @sqrt(double noundef %250) #6
  %252 = fadd double %249, %251
  %253 = fdiv double %.01367, %252
  %254 = load i64, ptr %0, align 8, !tbaa !5
  %255 = getelementptr inbounds double, ptr %20, i64 %254
  %256 = load double, ptr %255, align 8, !tbaa !9
  %257 = fadd double %253, %256
  store double %257, ptr %6, align 8, !tbaa !9
  %.not14611601 = icmp slt i64 %254, 1
  br i1 %.not14611601, label %.preheader, label %.lr.ph1604

.lr.ph1604:                                       ; preds = %246
  %258 = load i64, ptr %1, align 8, !tbaa !5
  %259 = getelementptr inbounds double, ptr %20, i64 %258
  %min.iters.check2039 = icmp ult i64 %254, 14
  br i1 %min.iters.check2039, label %scalar.ph2038.preheader, label %vector.memcheck2013

scalar.ph2038.preheader:                          ; preds = %middle.block2037, %vector.memcheck2013, %.lr.ph1604
  %.213821602.ph = phi i64 [ 1, %vector.memcheck2013 ], [ 1, %.lr.ph1604 ], [ %ind.end2043, %middle.block2037 ]
  %xtraiter2191 = and i64 %254, 1
  %lcmp.mod2192.not = icmp eq i64 %xtraiter2191, 0
  br i1 %lcmp.mod2192.not, label %scalar.ph2038.prol.loopexit, label %scalar.ph2038.prol

scalar.ph2038.prol:                               ; preds = %scalar.ph2038.preheader
  %260 = getelementptr inbounds double, ptr %20, i64 %.213821602.ph
  %261 = load double, ptr %260, align 8, !tbaa !9
  %262 = load double, ptr %259, align 8, !tbaa !9
  %263 = fsub double %261, %262
  %264 = fsub double %263, %253
  %265 = getelementptr inbounds double, ptr %18, i64 %.213821602.ph
  store double %264, ptr %265, align 8, !tbaa !9
  %266 = load double, ptr %260, align 8, !tbaa !9
  %267 = load double, ptr %259, align 8, !tbaa !9
  %268 = fadd double %266, %267
  %269 = fadd double %253, %268
  %270 = getelementptr inbounds double, ptr %17, i64 %.213821602.ph
  store double %269, ptr %270, align 8, !tbaa !9
  %271 = add nuw i64 %.213821602.ph, 1
  br label %scalar.ph2038.prol.loopexit

scalar.ph2038.prol.loopexit:                      ; preds = %scalar.ph2038.prol, %scalar.ph2038.preheader
  %.213821602.unr = phi i64 [ %.213821602.ph, %scalar.ph2038.preheader ], [ %271, %scalar.ph2038.prol ]
  %272 = icmp eq i64 %254, %.213821602.ph
  br i1 %272, label %.preheader, label %scalar.ph2038

vector.memcheck2013:                              ; preds = %.lr.ph1604
  %273 = shl i64 %254, 3
  %scevgep2014 = getelementptr i8, ptr %4, i64 %273
  %scevgep2015 = getelementptr i8, ptr %7, i64 %273
  %274 = shl nsw i64 %258, 3
  %scevgep2016 = getelementptr i8, ptr %2, i64 %274
  %scevgep2017 = getelementptr i8, ptr %2, i64 %273
  %bound02018 = icmp ugt ptr %scevgep2015, %4
  %bound12019 = icmp ugt ptr %scevgep2014, %7
  %found.conflict2020 = and i1 %bound02018, %bound12019
  %bound02021 = icmp ugt ptr %scevgep2016, %4
  %bound12022 = icmp ult ptr %259, %scevgep2014
  %found.conflict2023 = and i1 %bound02021, %bound12022
  %conflict.rdx2024 = or i1 %found.conflict2020, %found.conflict2023
  %bound02025 = icmp ugt ptr %scevgep2017, %4
  %bound12026 = icmp ugt ptr %scevgep2014, %2
  %found.conflict2027 = and i1 %bound02025, %bound12026
  %conflict.rdx2028 = or i1 %conflict.rdx2024, %found.conflict2027
  %bound02029 = icmp ugt ptr %scevgep2016, %7
  %bound12030 = icmp ult ptr %259, %scevgep2015
  %found.conflict2031 = and i1 %bound02029, %bound12030
  %conflict.rdx2032 = or i1 %conflict.rdx2028, %found.conflict2031
  %bound02033 = icmp ugt ptr %scevgep2017, %7
  %bound12034 = icmp ugt ptr %scevgep2015, %2
  %found.conflict2035 = and i1 %bound02033, %bound12034
  %conflict.rdx2036 = or i1 %conflict.rdx2032, %found.conflict2035
  br i1 %conflict.rdx2036, label %scalar.ph2038.preheader, label %vector.ph2040

vector.ph2040:                                    ; preds = %vector.memcheck2013
  %n.vec2042 = and i64 %254, 9223372036854775806
  %ind.end2043 = or i64 %254, 1
  %broadcast.splatinsert2051 = insertelement <2 x double> poison, double %253, i64 0
  %broadcast.splat2052 = shufflevector <2 x double> %broadcast.splatinsert2051, <2 x double> poison, <2 x i32> zeroinitializer
  %275 = load double, ptr %259, align 8, !tbaa !9, !alias.scope !28
  %broadcast.splatinsert2049 = insertelement <2 x double> poison, double %275, i64 0
  %broadcast.splat2050 = shufflevector <2 x double> %broadcast.splatinsert2049, <2 x double> poison, <2 x i32> zeroinitializer
  %276 = load double, ptr %259, align 8, !tbaa !9, !alias.scope !28
  %broadcast.splatinsert2054 = insertelement <2 x double> poison, double %276, i64 0
  %broadcast.splat2055 = shufflevector <2 x double> %broadcast.splatinsert2054, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body2045

vector.body2045:                                  ; preds = %vector.body2045, %vector.ph2040
  %index2046 = phi i64 [ 0, %vector.ph2040 ], [ %index.next2056, %vector.body2045 ]
  %277 = getelementptr double, ptr %2, i64 %index2046
  %wide.load2048 = load <2 x double>, ptr %277, align 8, !tbaa !9, !alias.scope !31
  %278 = fsub <2 x double> %wide.load2048, %broadcast.splat2050
  %279 = fsub <2 x double> %278, %broadcast.splat2052
  %280 = getelementptr double, ptr %4, i64 %index2046
  store <2 x double> %279, ptr %280, align 8, !tbaa !9, !alias.scope !33, !noalias !35
  %wide.load2053 = load <2 x double>, ptr %277, align 8, !tbaa !9, !alias.scope !31
  %281 = fadd <2 x double> %wide.load2053, %broadcast.splat2055
  %282 = fadd <2 x double> %broadcast.splat2052, %281
  %283 = getelementptr double, ptr %7, i64 %index2046
  store <2 x double> %282, ptr %283, align 8, !tbaa !9, !alias.scope !37, !noalias !38
  %index.next2056 = add nuw i64 %index2046, 2
  %284 = icmp eq i64 %index.next2056, %n.vec2042
  br i1 %284, label %middle.block2037, label %vector.body2045, !llvm.loop !39

middle.block2037:                                 ; preds = %vector.body2045
  %cmp.n2057 = icmp eq i64 %254, %n.vec2042
  br i1 %cmp.n2057, label %.preheader, label %scalar.ph2038.preheader

.preheader:                                       ; preds = %scalar.ph2038.prol.loopexit, %scalar.ph2038, %middle.block2037, %246
  %.not1462.not1605 = icmp sgt i64 %36, 1
  br i1 %.not1462.not1605, label %.lr.ph1610.preheader, label %._crit_edge1611

.lr.ph1610.preheader:                             ; preds = %.preheader
  %285 = add nsw i64 %36, -1
  %xtraiter2193 = and i64 %285, 1
  %286 = icmp eq i64 %36, 2
  br i1 %286, label %._crit_edge1611.loopexit.unr-lcssa, label %.lr.ph1610.preheader.new

.lr.ph1610.preheader.new:                         ; preds = %.lr.ph1610.preheader
  %unroll_iter2198 = and i64 %285, -2
  br label %.lr.ph1610

scalar.ph2038:                                    ; preds = %scalar.ph2038.prol.loopexit, %scalar.ph2038
  %.213821602 = phi i64 [ %310, %scalar.ph2038 ], [ %.213821602.unr, %scalar.ph2038.prol.loopexit ]
  %287 = getelementptr inbounds double, ptr %20, i64 %.213821602
  %288 = load double, ptr %287, align 8, !tbaa !9
  %289 = load double, ptr %259, align 8, !tbaa !9
  %290 = fsub double %288, %289
  %291 = fsub double %290, %253
  %292 = getelementptr inbounds double, ptr %18, i64 %.213821602
  store double %291, ptr %292, align 8, !tbaa !9
  %293 = load double, ptr %287, align 8, !tbaa !9
  %294 = load double, ptr %259, align 8, !tbaa !9
  %295 = fadd double %293, %294
  %296 = fadd double %253, %295
  %297 = getelementptr inbounds double, ptr %17, i64 %.213821602
  store double %296, ptr %297, align 8, !tbaa !9
  %298 = add nuw i64 %.213821602, 1
  %299 = getelementptr double, ptr %2, i64 %.213821602
  %300 = load double, ptr %299, align 8, !tbaa !9
  %301 = load double, ptr %259, align 8, !tbaa !9
  %302 = fsub double %300, %301
  %303 = fsub double %302, %253
  %304 = getelementptr double, ptr %4, i64 %.213821602
  store double %303, ptr %304, align 8, !tbaa !9
  %305 = load double, ptr %299, align 8, !tbaa !9
  %306 = load double, ptr %259, align 8, !tbaa !9
  %307 = fadd double %305, %306
  %308 = fadd double %253, %307
  %309 = getelementptr double, ptr %7, i64 %.213821602
  store double %308, ptr %309, align 8, !tbaa !9
  %310 = add nuw i64 %.213821602, 2
  %exitcond1712.not.1 = icmp eq i64 %298, %254
  br i1 %exitcond1712.not.1, label %.preheader, label %scalar.ph2038, !llvm.loop !40

.lr.ph1610:                                       ; preds = %.lr.ph1610, %.lr.ph1610.preheader.new
  %.013231609 = phi double [ 0.000000e+00, %.lr.ph1610.preheader.new ], [ %339, %.lr.ph1610 ]
  %.313831606 = phi i64 [ 1, %.lr.ph1610.preheader.new ], [ %340, %.lr.ph1610 ]
  %311 = phi <2 x double> [ zeroinitializer, %.lr.ph1610.preheader.new ], [ %337, %.lr.ph1610 ]
  %niter2199 = phi i64 [ 0, %.lr.ph1610.preheader.new ], [ %niter2199.next.1, %.lr.ph1610 ]
  %312 = getelementptr inbounds double, ptr %19, i64 %.313831606
  %313 = load double, ptr %312, align 8, !tbaa !9
  %314 = getelementptr inbounds double, ptr %18, i64 %.313831606
  %315 = load double, ptr %314, align 8, !tbaa !9
  %316 = getelementptr inbounds double, ptr %17, i64 %.313831606
  %317 = load double, ptr %316, align 8, !tbaa !9
  %318 = fmul double %315, %317
  %319 = fdiv double %313, %318
  %320 = insertelement <2 x double> poison, double %313, i64 0
  %321 = insertelement <2 x double> %320, double %319, i64 1
  %322 = shufflevector <2 x double> %321, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %323 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %321, <2 x double> %322, <2 x double> %311)
  %324 = extractelement <2 x double> %323, i64 0
  %325 = fadd double %.013231609, %324
  %326 = getelementptr double, ptr %3, i64 %.313831606
  %327 = load double, ptr %326, align 8, !tbaa !9
  %328 = getelementptr double, ptr %4, i64 %.313831606
  %329 = load double, ptr %328, align 8, !tbaa !9
  %330 = getelementptr double, ptr %7, i64 %.313831606
  %331 = load double, ptr %330, align 8, !tbaa !9
  %332 = fmul double %329, %331
  %333 = fdiv double %327, %332
  %334 = insertelement <2 x double> poison, double %327, i64 0
  %335 = insertelement <2 x double> %334, double %333, i64 1
  %336 = shufflevector <2 x double> %335, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %337 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %335, <2 x double> %336, <2 x double> %323)
  %338 = extractelement <2 x double> %337, i64 0
  %339 = fadd double %325, %338
  %340 = add nuw nsw i64 %.313831606, 2
  %niter2199.next.1 = add i64 %niter2199, 2
  %niter2199.ncmp.1 = icmp eq i64 %niter2199.next.1, %unroll_iter2198
  br i1 %niter2199.ncmp.1, label %._crit_edge1611.loopexit.unr-lcssa, label %.lr.ph1610, !llvm.loop !41

._crit_edge1611.loopexit.unr-lcssa:               ; preds = %.lr.ph1610, %.lr.ph1610.preheader
  %.lcssa2114.ph = phi <2 x double> [ poison, %.lr.ph1610.preheader ], [ %337, %.lr.ph1610 ]
  %.lcssa2113.ph = phi double [ poison, %.lr.ph1610.preheader ], [ %339, %.lr.ph1610 ]
  %.013231609.unr = phi double [ 0.000000e+00, %.lr.ph1610.preheader ], [ %339, %.lr.ph1610 ]
  %.313831606.unr = phi i64 [ 1, %.lr.ph1610.preheader ], [ %340, %.lr.ph1610 ]
  %.unr2194 = phi <2 x double> [ zeroinitializer, %.lr.ph1610.preheader ], [ %337, %.lr.ph1610 ]
  %lcmp.mod2195.not = icmp eq i64 %xtraiter2193, 0
  br i1 %lcmp.mod2195.not, label %._crit_edge1611, label %.lr.ph1610.epil

.lr.ph1610.epil:                                  ; preds = %._crit_edge1611.loopexit.unr-lcssa
  %341 = getelementptr inbounds double, ptr %19, i64 %.313831606.unr
  %342 = load double, ptr %341, align 8, !tbaa !9
  %343 = getelementptr inbounds double, ptr %18, i64 %.313831606.unr
  %344 = load double, ptr %343, align 8, !tbaa !9
  %345 = getelementptr inbounds double, ptr %17, i64 %.313831606.unr
  %346 = load double, ptr %345, align 8, !tbaa !9
  %347 = fmul double %344, %346
  %348 = fdiv double %342, %347
  %349 = insertelement <2 x double> poison, double %342, i64 0
  %350 = insertelement <2 x double> %349, double %348, i64 1
  %351 = shufflevector <2 x double> %350, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %352 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %350, <2 x double> %351, <2 x double> %.unr2194)
  %353 = extractelement <2 x double> %352, i64 0
  %354 = fadd double %.013231609.unr, %353
  br label %._crit_edge1611

._crit_edge1611:                                  ; preds = %.lr.ph1610.epil, %._crit_edge1611.loopexit.unr-lcssa, %.preheader
  %.01323.lcssa = phi double [ 0.000000e+00, %.preheader ], [ %.lcssa2113.ph, %._crit_edge1611.loopexit.unr-lcssa ], [ %354, %.lr.ph1610.epil ]
  %355 = phi <2 x double> [ zeroinitializer, %.preheader ], [ %.lcssa2114.ph, %._crit_edge1611.loopexit.unr-lcssa ], [ %352, %.lr.ph1610.epil ]
  %356 = fcmp oge double %.01323.lcssa, 0.000000e+00
  %357 = fneg double %.01323.lcssa
  %358 = select i1 %356, double %.01323.lcssa, double %357
  %359 = getelementptr inbounds double, ptr %19, i64 %254
  %360 = load double, ptr %359, align 8, !tbaa !9
  %361 = getelementptr inbounds double, ptr %18, i64 %254
  %362 = load double, ptr %361, align 8, !tbaa !9
  %363 = getelementptr inbounds double, ptr %17, i64 %254
  %364 = load double, ptr %363, align 8, !tbaa !9
  %365 = fmul double %362, %364
  %366 = fdiv double %360, %365
  %367 = fmul double %360, %366
  %368 = fmul double %366, %366
  %369 = fneg double %367
  %370 = extractelement <2 x double> %355, i64 0
  %371 = fsub double %369, %370
  %372 = tail call double @llvm.fmuladd.f64(double %371, double 8.000000e+00, double %358)
  %373 = fsub double %372, %367
  %374 = fadd double %35, %373
  %375 = fcmp oge double %.01367, 0.000000e+00
  %376 = fneg double %.01367
  %377 = select i1 %375, double %.01367, double %376
  %378 = extractelement <2 x double> %355, i64 1
  %379 = fadd double %378, %368
  %380 = tail call double @llvm.fmuladd.f64(double %377, double %379, double %374)
  %381 = fadd double %35, %367
  %382 = fadd double %370, %381
  %383 = fcmp oge double %382, 0.000000e+00
  %384 = fneg double %382
  %385 = select i1 %383, double %382, double %384
  %386 = fmul double %33, %380
  %387 = fcmp ugt double %385, %386
  br i1 %387, label %thread-pre-split, label %.loopexit1473

thread-pre-split:                                 ; preds = %._crit_edge1611
  %388 = add nsw i64 %254, -1
  %389 = getelementptr inbounds double, ptr %17, i64 %388
  %390 = load double, ptr %389, align 8, !tbaa !9
  %391 = getelementptr inbounds double, ptr %18, i64 %388
  %392 = load double, ptr %391, align 8, !tbaa !9
  %393 = fmul double %390, %392
  %394 = fneg double %393
  %395 = tail call double @llvm.fmuladd.f64(double %394, double %378, double %382)
  %396 = fneg double %365
  %397 = tail call double @llvm.fmuladd.f64(double %396, double %368, double %395)
  %398 = fadd double %365, %393
  %399 = fmul double %365, %393
  %400 = fneg double %399
  %401 = fmul double %379, %400
  %402 = tail call double @llvm.fmuladd.f64(double %398, double %382, double %401)
  %403 = fmul double %382, %399
  %404 = fcmp olt double %397, 0.000000e+00
  %405 = fneg double %397
  %406 = select i1 %404, double %405, double %397
  %407 = fcmp oeq double %397, 0.000000e+00
  br i1 %407, label %408, label %413

408:                                              ; preds = %thread-pre-split
  %409 = load double, ptr %5, align 8, !tbaa !9
  %410 = load double, ptr %6, align 8, !tbaa !9
  %411 = fneg double %410
  %412 = tail call double @llvm.fmuladd.f64(double %411, double %410, double %409)
  br label %437

413:                                              ; preds = %thread-pre-split
  %414 = fcmp ult double %402, 0.000000e+00
  br i1 %414, label %426, label %415

415:                                              ; preds = %413
  %416 = fmul double %403, -4.000000e+00
  %417 = fmul double %416, %406
  %418 = tail call double @llvm.fmuladd.f64(double %402, double %402, double %417)
  %419 = fcmp oge double %418, 0.000000e+00
  %420 = fneg double %418
  %421 = select i1 %419, double %418, double %420
  %422 = tail call double @sqrt(double noundef %421) #6
  %423 = fadd double %402, %422
  %424 = fmul double %406, 2.000000e+00
  %425 = fdiv double %423, %424
  br label %437

426:                                              ; preds = %413
  %427 = fmul double %403, 2.000000e+00
  %428 = fmul double %403, -4.000000e+00
  %429 = fmul double %428, %406
  %430 = tail call double @llvm.fmuladd.f64(double %402, double %402, double %429)
  %431 = fcmp oge double %430, 0.000000e+00
  %432 = fneg double %430
  %433 = select i1 %431, double %430, double %432
  %434 = tail call double @sqrt(double noundef %433) #6
  %435 = fsub double %402, %434
  %436 = fdiv double %427, %435
  br label %437

437:                                              ; preds = %415, %426, %408
  %438 = phi double [ %425, %415 ], [ %436, %426 ], [ %412, %408 ]
  %439 = fmul double %382, %438
  %440 = fcmp ogt double %439, 0.000000e+00
  %441 = fdiv double %384, %379
  %442 = select i1 %440, double %441, double %438
  %443 = fsub double %442, %365
  %444 = load double, ptr %5, align 8, !tbaa !9
  %445 = fcmp ogt double %443, %444
  %446 = fadd double %365, %444
  %447 = select i1 %445, double %446, double %442
  %448 = fadd double %.01367, %447
  %449 = load double, ptr %6, align 8, !tbaa !9
  %450 = tail call double @llvm.fmuladd.f64(double %449, double %449, double %447)
  %451 = tail call double @sqrt(double noundef %450) #6
  %452 = fadd double %449, %451
  %453 = fdiv double %447, %452
  %454 = load i64, ptr %0, align 8, !tbaa !5
  %.not14631615 = icmp slt i64 %454, 1
  br i1 %.not14631615, label %._crit_edge1619, label %.lr.ph1618.preheader

.lr.ph1618.preheader:                             ; preds = %437
  %min.iters.check2066 = icmp ult i64 %454, 4
  br i1 %min.iters.check2066, label %.lr.ph1618.preheader2112, label %vector.memcheck2058

vector.memcheck2058:                              ; preds = %.lr.ph1618.preheader
  %455 = shl i64 %454, 3
  %scevgep2059 = getelementptr i8, ptr %4, i64 %455
  %scevgep2060 = getelementptr i8, ptr %7, i64 %455
  %bound02061 = icmp ugt ptr %scevgep2060, %4
  %bound12062 = icmp ugt ptr %scevgep2059, %7
  %found.conflict2063 = and i1 %bound02061, %bound12062
  br i1 %found.conflict2063, label %.lr.ph1618.preheader2112, label %vector.ph2067

vector.ph2067:                                    ; preds = %vector.memcheck2058
  %n.vec2069 = and i64 %454, 9223372036854775804
  %ind.end2070 = or disjoint i64 %n.vec2069, 1
  %broadcast.splatinsert2077 = insertelement <2 x double> poison, double %453, i64 0
  %broadcast.splat2078 = shufflevector <2 x double> %broadcast.splatinsert2077, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body2072

vector.body2072:                                  ; preds = %vector.body2072, %vector.ph2067
  %index2073 = phi i64 [ 0, %vector.ph2067 ], [ %index.next2081, %vector.body2072 ]
  %456 = getelementptr double, ptr %4, i64 %index2073
  %457 = getelementptr inbounds i8, ptr %456, i64 16
  %wide.load2075 = load <2 x double>, ptr %456, align 8, !tbaa !9, !alias.scope !42, !noalias !45
  %wide.load2076 = load <2 x double>, ptr %457, align 8, !tbaa !9, !alias.scope !42, !noalias !45
  %458 = fsub <2 x double> %wide.load2075, %broadcast.splat2078
  %459 = fsub <2 x double> %wide.load2076, %broadcast.splat2078
  store <2 x double> %458, ptr %456, align 8, !tbaa !9, !alias.scope !42, !noalias !45
  store <2 x double> %459, ptr %457, align 8, !tbaa !9, !alias.scope !42, !noalias !45
  %460 = getelementptr double, ptr %7, i64 %index2073
  %461 = getelementptr inbounds i8, ptr %460, i64 16
  %wide.load2079 = load <2 x double>, ptr %460, align 8, !tbaa !9, !alias.scope !45
  %wide.load2080 = load <2 x double>, ptr %461, align 8, !tbaa !9, !alias.scope !45
  %462 = fadd <2 x double> %broadcast.splat2078, %wide.load2079
  %463 = fadd <2 x double> %broadcast.splat2078, %wide.load2080
  store <2 x double> %462, ptr %460, align 8, !tbaa !9, !alias.scope !45
  store <2 x double> %463, ptr %461, align 8, !tbaa !9, !alias.scope !45
  %index.next2081 = add nuw i64 %index2073, 4
  %464 = icmp eq i64 %index.next2081, %n.vec2069
  br i1 %464, label %middle.block2064, label %vector.body2072, !llvm.loop !47

middle.block2064:                                 ; preds = %vector.body2072
  %cmp.n2082 = icmp eq i64 %454, %n.vec2069
  br i1 %cmp.n2082, label %._crit_edge1619, label %.lr.ph1618.preheader2112

.lr.ph1618.preheader2112:                         ; preds = %middle.block2064, %vector.memcheck2058, %.lr.ph1618.preheader
  %.413841616.ph = phi i64 [ 1, %vector.memcheck2058 ], [ 1, %.lr.ph1618.preheader ], [ %ind.end2070, %middle.block2064 ]
  %xtraiter2200 = and i64 %454, 1
  %lcmp.mod2201.not = icmp eq i64 %xtraiter2200, 0
  br i1 %lcmp.mod2201.not, label %.lr.ph1618.prol.loopexit, label %.lr.ph1618.prol

.lr.ph1618.prol:                                  ; preds = %.lr.ph1618.preheader2112
  %465 = getelementptr inbounds double, ptr %18, i64 %.413841616.ph
  %466 = load double, ptr %465, align 8, !tbaa !9
  %467 = fsub double %466, %453
  store double %467, ptr %465, align 8, !tbaa !9
  %468 = getelementptr inbounds double, ptr %17, i64 %.413841616.ph
  %469 = load double, ptr %468, align 8, !tbaa !9
  %470 = fadd double %453, %469
  store double %470, ptr %468, align 8, !tbaa !9
  %471 = add nuw i64 %.413841616.ph, 1
  br label %.lr.ph1618.prol.loopexit

.lr.ph1618.prol.loopexit:                         ; preds = %.lr.ph1618.prol, %.lr.ph1618.preheader2112
  %.413841616.unr = phi i64 [ %.413841616.ph, %.lr.ph1618.preheader2112 ], [ %471, %.lr.ph1618.prol ]
  %472 = icmp eq i64 %454, %.413841616.ph
  br i1 %472, label %._crit_edge1619, label %.lr.ph1618

.lr.ph1618:                                       ; preds = %.lr.ph1618.prol.loopexit, %.lr.ph1618
  %.413841616 = phi i64 [ %486, %.lr.ph1618 ], [ %.413841616.unr, %.lr.ph1618.prol.loopexit ]
  %473 = getelementptr inbounds double, ptr %18, i64 %.413841616
  %474 = load double, ptr %473, align 8, !tbaa !9
  %475 = fsub double %474, %453
  store double %475, ptr %473, align 8, !tbaa !9
  %476 = getelementptr inbounds double, ptr %17, i64 %.413841616
  %477 = load double, ptr %476, align 8, !tbaa !9
  %478 = fadd double %453, %477
  store double %478, ptr %476, align 8, !tbaa !9
  %479 = add nuw i64 %.413841616, 1
  %480 = getelementptr double, ptr %4, i64 %.413841616
  %481 = load double, ptr %480, align 8, !tbaa !9
  %482 = fsub double %481, %453
  store double %482, ptr %480, align 8, !tbaa !9
  %483 = getelementptr double, ptr %7, i64 %.413841616
  %484 = load double, ptr %483, align 8, !tbaa !9
  %485 = fadd double %453, %484
  store double %485, ptr %483, align 8, !tbaa !9
  %486 = add nuw i64 %.413841616, 2
  %exitcond1714.not.1 = icmp eq i64 %479, %454
  br i1 %exitcond1714.not.1, label %._crit_edge1619, label %.lr.ph1618, !llvm.loop !48

._crit_edge1619:                                  ; preds = %.lr.ph1618.prol.loopexit, %.lr.ph1618, %middle.block2064, %437
  %487 = load double, ptr %6, align 8, !tbaa !9
  %488 = fadd double %453, %487
  store double %488, ptr %6, align 8, !tbaa !9
  br i1 %.not1462.not1605, label %.lr.ph1626.preheader, label %.lr.ph1662

.lr.ph1626.preheader:                             ; preds = %._crit_edge1619
  %489 = add nsw i64 %36, -1
  %xtraiter2202 = and i64 %489, 1
  %490 = icmp eq i64 %36, 2
  br i1 %490, label %.lr.ph1662.loopexit.unr-lcssa, label %.lr.ph1626.preheader.new

.lr.ph1626.preheader.new:                         ; preds = %.lr.ph1626.preheader
  %unroll_iter2207 = and i64 %489, -2
  br label %.lr.ph1626

.lr.ph1626:                                       ; preds = %.lr.ph1626, %.lr.ph1626.preheader.new
  %.11624 = phi double [ 0.000000e+00, %.lr.ph1626.preheader.new ], [ %519, %.lr.ph1626 ]
  %.513851621 = phi i64 [ 1, %.lr.ph1626.preheader.new ], [ %520, %.lr.ph1626 ]
  %491 = phi <2 x double> [ zeroinitializer, %.lr.ph1626.preheader.new ], [ %517, %.lr.ph1626 ]
  %niter2208 = phi i64 [ 0, %.lr.ph1626.preheader.new ], [ %niter2208.next.1, %.lr.ph1626 ]
  %492 = getelementptr inbounds double, ptr %19, i64 %.513851621
  %493 = load double, ptr %492, align 8, !tbaa !9
  %494 = getelementptr inbounds double, ptr %17, i64 %.513851621
  %495 = load double, ptr %494, align 8, !tbaa !9
  %496 = getelementptr inbounds double, ptr %18, i64 %.513851621
  %497 = load double, ptr %496, align 8, !tbaa !9
  %498 = fmul double %495, %497
  %499 = fdiv double %493, %498
  %500 = insertelement <2 x double> poison, double %493, i64 0
  %501 = insertelement <2 x double> %500, double %499, i64 1
  %502 = shufflevector <2 x double> %501, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %503 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %501, <2 x double> %502, <2 x double> %491)
  %504 = extractelement <2 x double> %503, i64 0
  %505 = fadd double %.11624, %504
  %506 = getelementptr double, ptr %3, i64 %.513851621
  %507 = load double, ptr %506, align 8, !tbaa !9
  %508 = getelementptr double, ptr %7, i64 %.513851621
  %509 = load double, ptr %508, align 8, !tbaa !9
  %510 = getelementptr double, ptr %4, i64 %.513851621
  %511 = load double, ptr %510, align 8, !tbaa !9
  %512 = fmul double %509, %511
  %513 = fdiv double %507, %512
  %514 = insertelement <2 x double> poison, double %507, i64 0
  %515 = insertelement <2 x double> %514, double %513, i64 1
  %516 = shufflevector <2 x double> %515, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %517 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %515, <2 x double> %516, <2 x double> %503)
  %518 = extractelement <2 x double> %517, i64 0
  %519 = fadd double %505, %518
  %520 = add nuw nsw i64 %.513851621, 2
  %niter2208.next.1 = add i64 %niter2208, 2
  %niter2208.ncmp.1 = icmp eq i64 %niter2208.next.1, %unroll_iter2207
  br i1 %niter2208.ncmp.1, label %.lr.ph1662.loopexit.unr-lcssa, label %.lr.ph1626, !llvm.loop !49

.lr.ph1662.loopexit.unr-lcssa:                    ; preds = %.lr.ph1626, %.lr.ph1626.preheader
  %.lcssa2111.ph = phi <2 x double> [ poison, %.lr.ph1626.preheader ], [ %517, %.lr.ph1626 ]
  %.lcssa2110.ph = phi double [ poison, %.lr.ph1626.preheader ], [ %519, %.lr.ph1626 ]
  %.11624.unr = phi double [ 0.000000e+00, %.lr.ph1626.preheader ], [ %519, %.lr.ph1626 ]
  %.513851621.unr = phi i64 [ 1, %.lr.ph1626.preheader ], [ %520, %.lr.ph1626 ]
  %.unr2203 = phi <2 x double> [ zeroinitializer, %.lr.ph1626.preheader ], [ %517, %.lr.ph1626 ]
  %lcmp.mod2204.not = icmp eq i64 %xtraiter2202, 0
  br i1 %lcmp.mod2204.not, label %.lr.ph1662, label %.lr.ph1626.epil

.lr.ph1626.epil:                                  ; preds = %.lr.ph1662.loopexit.unr-lcssa
  %521 = getelementptr inbounds double, ptr %19, i64 %.513851621.unr
  %522 = load double, ptr %521, align 8, !tbaa !9
  %523 = getelementptr inbounds double, ptr %17, i64 %.513851621.unr
  %524 = load double, ptr %523, align 8, !tbaa !9
  %525 = getelementptr inbounds double, ptr %18, i64 %.513851621.unr
  %526 = load double, ptr %525, align 8, !tbaa !9
  %527 = fmul double %524, %526
  %528 = fdiv double %522, %527
  %529 = insertelement <2 x double> poison, double %522, i64 0
  %530 = insertelement <2 x double> %529, double %528, i64 1
  %531 = shufflevector <2 x double> %530, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %532 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %530, <2 x double> %531, <2 x double> %.unr2203)
  %533 = extractelement <2 x double> %532, i64 0
  %534 = fadd double %.11624.unr, %533
  br label %.lr.ph1662

.lr.ph1662:                                       ; preds = %.lr.ph1626.epil, %.lr.ph1662.loopexit.unr-lcssa, %._crit_edge1619
  %.1.lcssa = phi double [ 0.000000e+00, %._crit_edge1619 ], [ %.lcssa2110.ph, %.lr.ph1662.loopexit.unr-lcssa ], [ %534, %.lr.ph1626.epil ]
  %535 = phi <2 x double> [ zeroinitializer, %._crit_edge1619 ], [ %.lcssa2111.ph, %.lr.ph1662.loopexit.unr-lcssa ], [ %532, %.lr.ph1626.epil ]
  %536 = getelementptr inbounds double, ptr %19, i64 %454
  %537 = load double, ptr %536, align 8, !tbaa !9
  %538 = getelementptr inbounds double, ptr %17, i64 %454
  %539 = load double, ptr %538, align 8, !tbaa !9
  %540 = getelementptr inbounds double, ptr %18, i64 %454
  %541 = load double, ptr %540, align 8, !tbaa !9
  %542 = fmul double %539, %541
  %543 = fdiv double %537, %542
  %544 = fmul double %537, %543
  %545 = fadd double %35, %544
  %546 = extractelement <2 x double> %535, i64 0
  %547 = fadd double %546, %545
  %548 = fcmp oge double %448, 0.000000e+00
  %549 = fneg double %448
  %550 = select i1 %548, double %448, double %549
  %551 = fmul double %543, %543
  %552 = extractelement <2 x double> %535, i64 1
  %553 = fadd double %552, %551
  %554 = fneg double %544
  %555 = fsub double %554, %546
  %556 = fcmp oge double %.1.lcssa, 0.000000e+00
  %557 = fneg double %.1.lcssa
  %558 = select i1 %556, double %.1.lcssa, double %557
  %559 = tail call double @llvm.fmuladd.f64(double %555, double 8.000000e+00, double %558)
  %560 = fsub double %559, %544
  %561 = fadd double %35, %560
  %562 = tail call double @llvm.fmuladd.f64(double %550, double %553, double %561)
  %563 = add i64 %36, -1
  %xtraiter2211 = and i64 %563, 1
  %564 = icmp eq i64 %36, 2
  %unroll_iter2216 = and i64 %563, -2
  %lcmp.mod2213.not = icmp eq i64 %xtraiter2211, 0
  br label %565

565:                                              ; preds = %.lr.ph1662, %._crit_edge1643
  %566 = phi double [ %541, %.lr.ph1662 ], [ %717, %._crit_edge1643 ]
  %567 = phi double [ %539, %.lr.ph1662 ], [ %715, %._crit_edge1643 ]
  %568 = phi i64 [ %454, %.lr.ph1662 ], [ %629, %._crit_edge1643 ]
  %storemerge14651660 = phi i64 [ 3, %.lr.ph1662 ], [ %storemerge1465, %._crit_edge1643 ]
  %.21659 = phi double [ %562, %.lr.ph1662 ], [ %733, %._crit_edge1643 ]
  %.213431658 = phi double [ %552, %.lr.ph1662 ], [ %731, %._crit_edge1643 ]
  %.013511657 = phi double [ %551, %.lr.ph1662 ], [ %721, %._crit_edge1643 ]
  %.113681656 = phi double [ %448, %.lr.ph1662 ], [ %623, %._crit_edge1643 ]
  %storemerge14661655 = phi double [ %547, %.lr.ph1662 ], [ %735, %._crit_edge1643 ]
  %569 = fcmp oge double %storemerge14661655, 0.000000e+00
  %570 = fneg double %storemerge14661655
  %571 = select i1 %569, double %storemerge14661655, double %570
  %572 = fmul double %33, %.21659
  %573 = fcmp ugt double %571, %572
  br i1 %573, label %574, label %.loopexit1473

574:                                              ; preds = %565
  %575 = add nsw i64 %568, -1
  %576 = getelementptr inbounds double, ptr %17, i64 %575
  %577 = load double, ptr %576, align 8, !tbaa !9
  %578 = getelementptr inbounds double, ptr %18, i64 %575
  %579 = load double, ptr %578, align 8, !tbaa !9
  %580 = fmul double %577, %579
  %581 = fmul double %567, %566
  %582 = fneg double %580
  %583 = tail call double @llvm.fmuladd.f64(double %582, double %.213431658, double %storemerge14661655)
  %584 = fneg double %581
  %585 = tail call double @llvm.fmuladd.f64(double %584, double %.013511657, double %583)
  %586 = fadd double %580, %581
  %587 = fmul double %580, %581
  %588 = fadd double %.013511657, %.213431658
  %589 = fneg double %587
  %590 = fmul double %588, %589
  %591 = tail call double @llvm.fmuladd.f64(double %586, double %storemerge14661655, double %590)
  %592 = fmul double %storemerge14661655, %587
  %593 = fcmp ult double %591, 0.000000e+00
  br i1 %593, label %605, label %594

594:                                              ; preds = %574
  %595 = fmul double %592, -4.000000e+00
  %596 = fmul double %585, %595
  %597 = tail call double @llvm.fmuladd.f64(double %591, double %591, double %596)
  %598 = fcmp oge double %597, 0.000000e+00
  %599 = fneg double %597
  %600 = select i1 %598, double %597, double %599
  %601 = tail call double @sqrt(double noundef %600) #6
  %602 = fadd double %591, %601
  %603 = fmul double %585, 2.000000e+00
  %604 = fdiv double %602, %603
  br label %616

605:                                              ; preds = %574
  %606 = fmul double %592, 2.000000e+00
  %607 = fmul double %592, -4.000000e+00
  %608 = fmul double %585, %607
  %609 = tail call double @llvm.fmuladd.f64(double %591, double %591, double %608)
  %610 = fcmp oge double %609, 0.000000e+00
  %611 = fneg double %609
  %612 = select i1 %610, double %609, double %611
  %613 = tail call double @sqrt(double noundef %612) #6
  %614 = fsub double %591, %613
  %615 = fdiv double %606, %614
  br label %616

616:                                              ; preds = %605, %594
  %storemerge1467 = phi double [ %615, %605 ], [ %604, %594 ]
  %617 = fmul double %storemerge1467, %storemerge14661655
  %618 = fcmp ogt double %617, 0.000000e+00
  %619 = fdiv double %570, %588
  %storemerge14671652 = select i1 %618, double %619, double %storemerge1467
  %620 = fsub double %storemerge14671652, %581
  %621 = fcmp ugt double %620, 0.000000e+00
  %622 = fmul double %storemerge14671652, 5.000000e-01
  %storemerge14671653 = select i1 %621, double %storemerge14671652, double %622
  %623 = fadd double %.113681656, %storemerge14671653
  %624 = load double, ptr %6, align 8, !tbaa !9
  %625 = tail call double @llvm.fmuladd.f64(double %624, double %624, double %storemerge14671653)
  %626 = tail call double @sqrt(double noundef %625) #6
  %627 = fadd double %624, %626
  %628 = fdiv double %storemerge14671653, %627
  %629 = load i64, ptr %0, align 8, !tbaa !5
  %.not14681631 = icmp slt i64 %629, 1
  br i1 %.not14681631, label %._crit_edge1635, label %.lr.ph1634.preheader

.lr.ph1634.preheader:                             ; preds = %616
  %min.iters.check2091 = icmp ult i64 %629, 4
  br i1 %min.iters.check2091, label %.lr.ph1634.preheader2108, label %vector.memcheck2083

vector.memcheck2083:                              ; preds = %.lr.ph1634.preheader
  %630 = shl i64 %629, 3
  %scevgep2084 = getelementptr i8, ptr %4, i64 %630
  %scevgep2085 = getelementptr i8, ptr %7, i64 %630
  %bound02086 = icmp ugt ptr %scevgep2085, %4
  %bound12087 = icmp ugt ptr %scevgep2084, %7
  %found.conflict2088 = and i1 %bound02086, %bound12087
  br i1 %found.conflict2088, label %.lr.ph1634.preheader2108, label %vector.ph2092

vector.ph2092:                                    ; preds = %vector.memcheck2083
  %n.vec2094 = and i64 %629, 9223372036854775804
  %ind.end2095 = or disjoint i64 %n.vec2094, 1
  %broadcast.splatinsert2102 = insertelement <2 x double> poison, double %628, i64 0
  %broadcast.splat2103 = shufflevector <2 x double> %broadcast.splatinsert2102, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body2097

vector.body2097:                                  ; preds = %vector.body2097, %vector.ph2092
  %index2098 = phi i64 [ 0, %vector.ph2092 ], [ %index.next2106, %vector.body2097 ]
  %631 = getelementptr double, ptr %4, i64 %index2098
  %632 = getelementptr inbounds i8, ptr %631, i64 16
  %wide.load2100 = load <2 x double>, ptr %631, align 8, !tbaa !9, !alias.scope !50, !noalias !53
  %wide.load2101 = load <2 x double>, ptr %632, align 8, !tbaa !9, !alias.scope !50, !noalias !53
  %633 = fsub <2 x double> %wide.load2100, %broadcast.splat2103
  %634 = fsub <2 x double> %wide.load2101, %broadcast.splat2103
  store <2 x double> %633, ptr %631, align 8, !tbaa !9, !alias.scope !50, !noalias !53
  store <2 x double> %634, ptr %632, align 8, !tbaa !9, !alias.scope !50, !noalias !53
  %635 = getelementptr double, ptr %7, i64 %index2098
  %636 = getelementptr inbounds i8, ptr %635, i64 16
  %wide.load2104 = load <2 x double>, ptr %635, align 8, !tbaa !9, !alias.scope !53
  %wide.load2105 = load <2 x double>, ptr %636, align 8, !tbaa !9, !alias.scope !53
  %637 = fadd <2 x double> %broadcast.splat2103, %wide.load2104
  %638 = fadd <2 x double> %broadcast.splat2103, %wide.load2105
  store <2 x double> %637, ptr %635, align 8, !tbaa !9, !alias.scope !53
  store <2 x double> %638, ptr %636, align 8, !tbaa !9, !alias.scope !53
  %index.next2106 = add nuw i64 %index2098, 4
  %639 = icmp eq i64 %index.next2106, %n.vec2094
  br i1 %639, label %middle.block2089, label %vector.body2097, !llvm.loop !55

middle.block2089:                                 ; preds = %vector.body2097
  %cmp.n2107 = icmp eq i64 %629, %n.vec2094
  br i1 %cmp.n2107, label %._crit_edge1635, label %.lr.ph1634.preheader2108

.lr.ph1634.preheader2108:                         ; preds = %middle.block2089, %vector.memcheck2083, %.lr.ph1634.preheader
  %.613861632.ph = phi i64 [ 1, %vector.memcheck2083 ], [ 1, %.lr.ph1634.preheader ], [ %ind.end2095, %middle.block2089 ]
  %xtraiter2209 = and i64 %629, 1
  %lcmp.mod2210.not = icmp eq i64 %xtraiter2209, 0
  br i1 %lcmp.mod2210.not, label %.lr.ph1634.prol.loopexit, label %.lr.ph1634.prol

.lr.ph1634.prol:                                  ; preds = %.lr.ph1634.preheader2108
  %640 = getelementptr inbounds double, ptr %18, i64 %.613861632.ph
  %641 = load double, ptr %640, align 8, !tbaa !9
  %642 = fsub double %641, %628
  store double %642, ptr %640, align 8, !tbaa !9
  %643 = getelementptr inbounds double, ptr %17, i64 %.613861632.ph
  %644 = load double, ptr %643, align 8, !tbaa !9
  %645 = fadd double %628, %644
  store double %645, ptr %643, align 8, !tbaa !9
  %646 = add nuw i64 %.613861632.ph, 1
  br label %.lr.ph1634.prol.loopexit

.lr.ph1634.prol.loopexit:                         ; preds = %.lr.ph1634.prol, %.lr.ph1634.preheader2108
  %.613861632.unr = phi i64 [ %.613861632.ph, %.lr.ph1634.preheader2108 ], [ %646, %.lr.ph1634.prol ]
  %647 = icmp eq i64 %629, %.613861632.ph
  br i1 %647, label %._crit_edge1635, label %.lr.ph1634

.lr.ph1634:                                       ; preds = %.lr.ph1634.prol.loopexit, %.lr.ph1634
  %.613861632 = phi i64 [ %661, %.lr.ph1634 ], [ %.613861632.unr, %.lr.ph1634.prol.loopexit ]
  %648 = getelementptr inbounds double, ptr %18, i64 %.613861632
  %649 = load double, ptr %648, align 8, !tbaa !9
  %650 = fsub double %649, %628
  store double %650, ptr %648, align 8, !tbaa !9
  %651 = getelementptr inbounds double, ptr %17, i64 %.613861632
  %652 = load double, ptr %651, align 8, !tbaa !9
  %653 = fadd double %628, %652
  store double %653, ptr %651, align 8, !tbaa !9
  %654 = add nuw i64 %.613861632, 1
  %655 = getelementptr double, ptr %4, i64 %.613861632
  %656 = load double, ptr %655, align 8, !tbaa !9
  %657 = fsub double %656, %628
  store double %657, ptr %655, align 8, !tbaa !9
  %658 = getelementptr double, ptr %7, i64 %.613861632
  %659 = load double, ptr %658, align 8, !tbaa !9
  %660 = fadd double %628, %659
  store double %660, ptr %658, align 8, !tbaa !9
  %661 = add nuw i64 %.613861632, 2
  %exitcond1716.not.1 = icmp eq i64 %654, %629
  br i1 %exitcond1716.not.1, label %._crit_edge1635, label %.lr.ph1634, !llvm.loop !56

._crit_edge1635:                                  ; preds = %.lr.ph1634.prol.loopexit, %.lr.ph1634, %middle.block2089, %616
  %662 = load double, ptr %6, align 8, !tbaa !9
  %663 = fadd double %628, %662
  store double %663, ptr %6, align 8, !tbaa !9
  br i1 %.not1462.not1605, label %.lr.ph1642.preheader, label %._crit_edge1643

.lr.ph1642.preheader:                             ; preds = %._crit_edge1635
  br i1 %564, label %._crit_edge1643.loopexit.unr-lcssa, label %.lr.ph1642

.lr.ph1642:                                       ; preds = %.lr.ph1642.preheader, %.lr.ph1642
  %.31640 = phi double [ %692, %.lr.ph1642 ], [ 0.000000e+00, %.lr.ph1642.preheader ]
  %.713871637 = phi i64 [ %693, %.lr.ph1642 ], [ 1, %.lr.ph1642.preheader ]
  %664 = phi <2 x double> [ %690, %.lr.ph1642 ], [ zeroinitializer, %.lr.ph1642.preheader ]
  %niter2217 = phi i64 [ %niter2217.next.1, %.lr.ph1642 ], [ 0, %.lr.ph1642.preheader ]
  %665 = getelementptr inbounds double, ptr %19, i64 %.713871637
  %666 = load double, ptr %665, align 8, !tbaa !9
  %667 = getelementptr inbounds double, ptr %17, i64 %.713871637
  %668 = load double, ptr %667, align 8, !tbaa !9
  %669 = getelementptr inbounds double, ptr %18, i64 %.713871637
  %670 = load double, ptr %669, align 8, !tbaa !9
  %671 = fmul double %668, %670
  %672 = fdiv double %666, %671
  %673 = insertelement <2 x double> poison, double %666, i64 0
  %674 = insertelement <2 x double> %673, double %672, i64 1
  %675 = shufflevector <2 x double> %674, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %676 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %674, <2 x double> %675, <2 x double> %664)
  %677 = extractelement <2 x double> %676, i64 0
  %678 = fadd double %.31640, %677
  %679 = getelementptr double, ptr %3, i64 %.713871637
  %680 = load double, ptr %679, align 8, !tbaa !9
  %681 = getelementptr double, ptr %7, i64 %.713871637
  %682 = load double, ptr %681, align 8, !tbaa !9
  %683 = getelementptr double, ptr %4, i64 %.713871637
  %684 = load double, ptr %683, align 8, !tbaa !9
  %685 = fmul double %682, %684
  %686 = fdiv double %680, %685
  %687 = insertelement <2 x double> poison, double %680, i64 0
  %688 = insertelement <2 x double> %687, double %686, i64 1
  %689 = shufflevector <2 x double> %688, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %690 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %688, <2 x double> %689, <2 x double> %676)
  %691 = extractelement <2 x double> %690, i64 0
  %692 = fadd double %678, %691
  %693 = add nuw nsw i64 %.713871637, 2
  %niter2217.next.1 = add i64 %niter2217, 2
  %niter2217.ncmp.1 = icmp eq i64 %niter2217.next.1, %unroll_iter2216
  br i1 %niter2217.ncmp.1, label %._crit_edge1643.loopexit.unr-lcssa, label %.lr.ph1642, !llvm.loop !57

._crit_edge1643.loopexit.unr-lcssa:               ; preds = %.lr.ph1642, %.lr.ph1642.preheader
  %.lcssa2109.ph = phi <2 x double> [ poison, %.lr.ph1642.preheader ], [ %690, %.lr.ph1642 ]
  %.lcssa.ph = phi double [ poison, %.lr.ph1642.preheader ], [ %692, %.lr.ph1642 ]
  %.31640.unr = phi double [ 0.000000e+00, %.lr.ph1642.preheader ], [ %692, %.lr.ph1642 ]
  %.713871637.unr = phi i64 [ 1, %.lr.ph1642.preheader ], [ %693, %.lr.ph1642 ]
  %.unr2212 = phi <2 x double> [ zeroinitializer, %.lr.ph1642.preheader ], [ %690, %.lr.ph1642 ]
  br i1 %lcmp.mod2213.not, label %._crit_edge1643, label %.lr.ph1642.epil

.lr.ph1642.epil:                                  ; preds = %._crit_edge1643.loopexit.unr-lcssa
  %694 = getelementptr inbounds double, ptr %19, i64 %.713871637.unr
  %695 = load double, ptr %694, align 8, !tbaa !9
  %696 = getelementptr inbounds double, ptr %17, i64 %.713871637.unr
  %697 = load double, ptr %696, align 8, !tbaa !9
  %698 = getelementptr inbounds double, ptr %18, i64 %.713871637.unr
  %699 = load double, ptr %698, align 8, !tbaa !9
  %700 = fmul double %697, %699
  %701 = fdiv double %695, %700
  %702 = insertelement <2 x double> poison, double %695, i64 0
  %703 = insertelement <2 x double> %702, double %701, i64 1
  %704 = shufflevector <2 x double> %703, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %705 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %703, <2 x double> %704, <2 x double> %.unr2212)
  %706 = extractelement <2 x double> %705, i64 0
  %707 = fadd double %.31640.unr, %706
  br label %._crit_edge1643

._crit_edge1643:                                  ; preds = %.lr.ph1642.epil, %._crit_edge1643.loopexit.unr-lcssa, %._crit_edge1635
  %.3.lcssa = phi double [ 0.000000e+00, %._crit_edge1635 ], [ %.lcssa.ph, %._crit_edge1643.loopexit.unr-lcssa ], [ %707, %.lr.ph1642.epil ]
  %708 = phi <2 x double> [ zeroinitializer, %._crit_edge1635 ], [ %.lcssa2109.ph, %._crit_edge1643.loopexit.unr-lcssa ], [ %705, %.lr.ph1642.epil ]
  %709 = fcmp oge double %.3.lcssa, 0.000000e+00
  %710 = fneg double %.3.lcssa
  %711 = select i1 %709, double %.3.lcssa, double %710
  %712 = getelementptr inbounds double, ptr %19, i64 %629
  %713 = load double, ptr %712, align 8, !tbaa !9
  %714 = getelementptr inbounds double, ptr %17, i64 %629
  %715 = load double, ptr %714, align 8, !tbaa !9
  %716 = getelementptr inbounds double, ptr %18, i64 %629
  %717 = load double, ptr %716, align 8, !tbaa !9
  %718 = fmul double %715, %717
  %719 = fdiv double %713, %718
  %720 = fmul double %713, %719
  %721 = fmul double %719, %719
  %722 = fneg double %720
  %723 = extractelement <2 x double> %708, i64 0
  %724 = fsub double %722, %723
  %725 = tail call double @llvm.fmuladd.f64(double %724, double 8.000000e+00, double %711)
  %726 = fsub double %725, %720
  %727 = fadd double %35, %726
  %728 = fcmp oge double %623, 0.000000e+00
  %729 = fneg double %623
  %730 = select i1 %728, double %623, double %729
  %731 = extractelement <2 x double> %708, i64 1
  %732 = fadd double %731, %721
  %733 = tail call double @llvm.fmuladd.f64(double %730, double %732, double %727)
  %734 = fadd double %35, %720
  %735 = fadd double %723, %734
  %storemerge1465 = add i64 %storemerge14651660, 1
  %exitcond1718.not = icmp eq i64 %storemerge1465, 21
  br i1 %exitcond1718.not, label %._crit_edge1663, label %565, !llvm.loop !58

._crit_edge1663:                                  ; preds = %._crit_edge1643
  store i64 1, ptr %8, align 8, !tbaa !5
  br label %.loopexit1473

736:                                              ; preds = %32
  store i64 1, ptr %15, align 8, !tbaa !5
  %737 = getelementptr double, ptr %2, i64 %36
  %738 = load double, ptr %737, align 8, !tbaa !9
  %739 = getelementptr inbounds double, ptr %20, i64 %36
  %740 = load double, ptr %739, align 8, !tbaa !9
  %741 = fsub double %738, %740
  %742 = fadd double %738, %740
  %743 = fmul double %741, %742
  %744 = fmul double %743, 5.000000e-01
  %745 = tail call double @llvm.fmuladd.f64(double %740, double %740, double %744)
  %746 = tail call double @sqrt(double noundef %745) #6
  %747 = fadd double %740, %746
  %748 = fdiv double %744, %747
  %749 = load i64, ptr %0, align 8, !tbaa !5
  %.not1477 = icmp slt i64 %749, 1
  %.pre = load i64, ptr %1, align 8, !tbaa !5
  br i1 %.not1477, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %736
  %750 = getelementptr inbounds double, ptr %20, i64 %.pre
  %min.iters.check = icmp ult i64 %749, 14
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph
  %751 = shl i64 %749, 3
  %scevgep = getelementptr i8, ptr %7, i64 %751
  %scevgep1806 = getelementptr i8, ptr %4, i64 %751
  %752 = shl i64 %.pre, 3
  %scevgep1807 = getelementptr i8, ptr %2, i64 %752
  %scevgep1808 = getelementptr i8, ptr %2, i64 %751
  %bound0 = icmp ugt ptr %scevgep1806, %7
  %bound1 = icmp ugt ptr %scevgep, %4
  %found.conflict = and i1 %bound0, %bound1
  %bound01809 = icmp ugt ptr %scevgep1807, %7
  %bound11810 = icmp ult ptr %750, %scevgep
  %found.conflict1811 = and i1 %bound01809, %bound11810
  %conflict.rdx = or i1 %found.conflict, %found.conflict1811
  %bound01812 = icmp ugt ptr %scevgep1808, %7
  %bound11813 = icmp ugt ptr %scevgep, %2
  %found.conflict1814 = and i1 %bound01812, %bound11813
  %conflict.rdx1815 = or i1 %conflict.rdx, %found.conflict1814
  %bound01816 = icmp ugt ptr %scevgep1807, %4
  %bound11817 = icmp ult ptr %750, %scevgep1806
  %found.conflict1818 = and i1 %bound01816, %bound11817
  %conflict.rdx1819 = or i1 %conflict.rdx1815, %found.conflict1818
  %bound01820 = icmp ugt ptr %scevgep1808, %4
  %bound11821 = icmp ugt ptr %scevgep1806, %2
  %found.conflict1822 = and i1 %bound01820, %bound11821
  %conflict.rdx1823 = or i1 %conflict.rdx1819, %found.conflict1822
  br i1 %conflict.rdx1823, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %749, 9223372036854775806
  %ind.end = or i64 %749, 1
  %broadcast.splatinsert1824 = insertelement <2 x double> poison, double %748, i64 0
  %broadcast.splat1825 = shufflevector <2 x double> %broadcast.splatinsert1824, <2 x double> poison, <2 x i32> zeroinitializer
  %753 = load double, ptr %750, align 8, !tbaa !9, !alias.scope !59
  %broadcast.splatinsert = insertelement <2 x double> poison, double %753, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  %754 = load double, ptr %750, align 8, !tbaa !9, !alias.scope !59
  %broadcast.splatinsert1827 = insertelement <2 x double> poison, double %754, i64 0
  %broadcast.splat1828 = shufflevector <2 x double> %broadcast.splatinsert1827, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %755 = getelementptr double, ptr %2, i64 %index
  %wide.load = load <2 x double>, ptr %755, align 8, !tbaa !9, !alias.scope !62
  %756 = fadd <2 x double> %wide.load, %broadcast.splat
  %757 = fadd <2 x double> %broadcast.splat1825, %756
  %758 = getelementptr double, ptr %7, i64 %index
  store <2 x double> %757, ptr %758, align 8, !tbaa !9, !alias.scope !64, !noalias !66
  %wide.load1826 = load <2 x double>, ptr %755, align 8, !tbaa !9, !alias.scope !62
  %759 = fsub <2 x double> %wide.load1826, %broadcast.splat1828
  %760 = fsub <2 x double> %759, %broadcast.splat1825
  %761 = getelementptr double, ptr %4, i64 %index
  store <2 x double> %760, ptr %761, align 8, !tbaa !9, !alias.scope !68, !noalias !69
  %index.next = add nuw i64 %index, 2
  %762 = icmp eq i64 %index.next, %n.vec
  br i1 %762, label %middle.block, label %vector.body, !llvm.loop !70

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %749, %n.vec
  br i1 %cmp.n, label %._crit_edge, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph
  %.813881478.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph ], [ %ind.end, %middle.block ]
  %xtraiter = and i64 %749, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %763 = getelementptr inbounds double, ptr %20, i64 %.813881478.ph
  %764 = load double, ptr %763, align 8, !tbaa !9
  %765 = load double, ptr %750, align 8, !tbaa !9
  %766 = fadd double %764, %765
  %767 = fadd double %748, %766
  %768 = getelementptr inbounds double, ptr %17, i64 %.813881478.ph
  store double %767, ptr %768, align 8, !tbaa !9
  %769 = load double, ptr %763, align 8, !tbaa !9
  %770 = load double, ptr %750, align 8, !tbaa !9
  %771 = fsub double %769, %770
  %772 = fsub double %771, %748
  %773 = getelementptr inbounds double, ptr %18, i64 %.813881478.ph
  store double %772, ptr %773, align 8, !tbaa !9
  %774 = add nuw i64 %.813881478.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.813881478.unr = phi i64 [ %.813881478.ph, %scalar.ph.preheader ], [ %774, %scalar.ph.prol ]
  %775 = icmp eq i64 %749, %.813881478.ph
  br i1 %775, label %._crit_edge, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %.813881478 = phi i64 [ %799, %scalar.ph ], [ %.813881478.unr, %scalar.ph.prol.loopexit ]
  %776 = getelementptr inbounds double, ptr %20, i64 %.813881478
  %777 = load double, ptr %776, align 8, !tbaa !9
  %778 = load double, ptr %750, align 8, !tbaa !9
  %779 = fadd double %777, %778
  %780 = fadd double %748, %779
  %781 = getelementptr inbounds double, ptr %17, i64 %.813881478
  store double %780, ptr %781, align 8, !tbaa !9
  %782 = load double, ptr %776, align 8, !tbaa !9
  %783 = load double, ptr %750, align 8, !tbaa !9
  %784 = fsub double %782, %783
  %785 = fsub double %784, %748
  %786 = getelementptr inbounds double, ptr %18, i64 %.813881478
  store double %785, ptr %786, align 8, !tbaa !9
  %787 = add nuw i64 %.813881478, 1
  %788 = getelementptr double, ptr %2, i64 %.813881478
  %789 = load double, ptr %788, align 8, !tbaa !9
  %790 = load double, ptr %750, align 8, !tbaa !9
  %791 = fadd double %789, %790
  %792 = fadd double %748, %791
  %793 = getelementptr double, ptr %7, i64 %.813881478
  store double %792, ptr %793, align 8, !tbaa !9
  %794 = load double, ptr %788, align 8, !tbaa !9
  %795 = load double, ptr %750, align 8, !tbaa !9
  %796 = fsub double %794, %795
  %797 = fsub double %796, %748
  %798 = getelementptr double, ptr %4, i64 %.813881478
  store double %797, ptr %798, align 8, !tbaa !9
  %799 = add nuw i64 %.813881478, 2
  %exitcond.not.1 = icmp eq i64 %787, %749
  br i1 %exitcond.not.1, label %._crit_edge, label %scalar.ph, !llvm.loop !71

._crit_edge:                                      ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block, %736
  %.not1425.not1479 = icmp sgt i64 %.pre, 1
  br i1 %.not1425.not1479, label %.lr.ph1483.preheader, label %._crit_edge1484

.lr.ph1483.preheader:                             ; preds = %._crit_edge
  %800 = add nsw i64 %.pre, -1
  %xtraiter2140 = and i64 %800, 1
  %801 = icmp eq i64 %.pre, 2
  br i1 %801, label %._crit_edge1484.loopexit.unr-lcssa, label %.lr.ph1483.preheader.new

.lr.ph1483.preheader.new:                         ; preds = %.lr.ph1483.preheader
  %unroll_iter = and i64 %800, -2
  br label %.lr.ph1483

.lr.ph1483:                                       ; preds = %.lr.ph1483, %.lr.ph1483.preheader.new
  %.413621481 = phi double [ 0.000000e+00, %.lr.ph1483.preheader.new ], [ %821, %.lr.ph1483 ]
  %.913891480 = phi i64 [ 1, %.lr.ph1483.preheader.new ], [ %822, %.lr.ph1483 ]
  %niter = phi i64 [ 0, %.lr.ph1483.preheader.new ], [ %niter.next.1, %.lr.ph1483 ]
  %802 = getelementptr inbounds double, ptr %19, i64 %.913891480
  %803 = load double, ptr %802, align 8, !tbaa !9
  %804 = fmul double %803, %803
  %805 = getelementptr inbounds double, ptr %17, i64 %.913891480
  %806 = load double, ptr %805, align 8, !tbaa !9
  %807 = getelementptr inbounds double, ptr %18, i64 %.913891480
  %808 = load double, ptr %807, align 8, !tbaa !9
  %809 = fmul double %806, %808
  %810 = fdiv double %804, %809
  %811 = fadd double %.413621481, %810
  %812 = getelementptr double, ptr %3, i64 %.913891480
  %813 = load double, ptr %812, align 8, !tbaa !9
  %814 = fmul double %813, %813
  %815 = getelementptr double, ptr %7, i64 %.913891480
  %816 = load double, ptr %815, align 8, !tbaa !9
  %817 = getelementptr double, ptr %4, i64 %.913891480
  %818 = load double, ptr %817, align 8, !tbaa !9
  %819 = fmul double %816, %818
  %820 = fdiv double %814, %819
  %821 = fadd double %811, %820
  %822 = add nuw nsw i64 %.913891480, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge1484.loopexit.unr-lcssa, label %.lr.ph1483, !llvm.loop !72

._crit_edge1484.loopexit.unr-lcssa:               ; preds = %.lr.ph1483, %.lr.ph1483.preheader
  %.lcssa2139.ph = phi double [ poison, %.lr.ph1483.preheader ], [ %821, %.lr.ph1483 ]
  %.413621481.unr = phi double [ 0.000000e+00, %.lr.ph1483.preheader ], [ %821, %.lr.ph1483 ]
  %.913891480.unr = phi i64 [ 1, %.lr.ph1483.preheader ], [ %822, %.lr.ph1483 ]
  %lcmp.mod2141.not = icmp eq i64 %xtraiter2140, 0
  br i1 %lcmp.mod2141.not, label %._crit_edge1484, label %.lr.ph1483.epil

.lr.ph1483.epil:                                  ; preds = %._crit_edge1484.loopexit.unr-lcssa
  %823 = getelementptr inbounds double, ptr %19, i64 %.913891480.unr
  %824 = load double, ptr %823, align 8, !tbaa !9
  %825 = fmul double %824, %824
  %826 = getelementptr inbounds double, ptr %17, i64 %.913891480.unr
  %827 = load double, ptr %826, align 8, !tbaa !9
  %828 = getelementptr inbounds double, ptr %18, i64 %.913891480.unr
  %829 = load double, ptr %828, align 8, !tbaa !9
  %830 = fmul double %827, %829
  %831 = fdiv double %825, %830
  %832 = fadd double %.413621481.unr, %831
  br label %._crit_edge1484

._crit_edge1484:                                  ; preds = %.lr.ph1483.epil, %._crit_edge1484.loopexit.unr-lcssa, %._crit_edge
  %.41362.lcssa = phi double [ 0.000000e+00, %._crit_edge ], [ %.lcssa2139.ph, %._crit_edge1484.loopexit.unr-lcssa ], [ %832, %.lr.ph1483.epil ]
  %833 = add nsw i64 %.pre, 2
  %.not14261485 = icmp slt i64 %749, %833
  br i1 %.not14261485, label %._crit_edge1490, label %.lr.ph1489.preheader

.lr.ph1489.preheader:                             ; preds = %._crit_edge1484
  %834 = add i64 %749, -2
  %835 = sub i64 %.pre, %749
  %836 = and i64 %835, 1
  %lcmp.mod2144.not.not = icmp eq i64 %836, 0
  br i1 %lcmp.mod2144.not.not, label %.lr.ph1489.prol, label %.lr.ph1489.prol.loopexit

.lr.ph1489.prol:                                  ; preds = %.lr.ph1489.preheader
  %837 = getelementptr inbounds double, ptr %19, i64 %749
  %838 = load double, ptr %837, align 8, !tbaa !9
  %839 = fmul double %838, %838
  %840 = getelementptr inbounds double, ptr %17, i64 %749
  %841 = load double, ptr %840, align 8, !tbaa !9
  %842 = getelementptr inbounds double, ptr %18, i64 %749
  %843 = load double, ptr %842, align 8, !tbaa !9
  %844 = fmul double %841, %843
  %845 = fdiv double %839, %844
  %846 = fadd double %845, 0.000000e+00
  %847 = add nsw i64 %749, -1
  br label %.lr.ph1489.prol.loopexit

.lr.ph1489.prol.loopexit:                         ; preds = %.lr.ph1489.prol, %.lr.ph1489.preheader
  %.013731487.unr = phi double [ 0.000000e+00, %.lr.ph1489.preheader ], [ %846, %.lr.ph1489.prol ]
  %.1013901486.unr = phi i64 [ %749, %.lr.ph1489.preheader ], [ %847, %.lr.ph1489.prol ]
  %.lcssa2138.unr = phi double [ poison, %.lr.ph1489.preheader ], [ %846, %.lr.ph1489.prol ]
  %848 = icmp eq i64 %834, %.pre
  br i1 %848, label %._crit_edge1490, label %.lr.ph1489

.lr.ph1489:                                       ; preds = %.lr.ph1489.prol.loopexit, %.lr.ph1489
  %.013731487 = phi double [ %869, %.lr.ph1489 ], [ %.013731487.unr, %.lr.ph1489.prol.loopexit ]
  %.1013901486 = phi i64 [ %870, %.lr.ph1489 ], [ %.1013901486.unr, %.lr.ph1489.prol.loopexit ]
  %849 = getelementptr inbounds double, ptr %19, i64 %.1013901486
  %850 = load double, ptr %849, align 8, !tbaa !9
  %851 = fmul double %850, %850
  %852 = getelementptr inbounds double, ptr %17, i64 %.1013901486
  %853 = load double, ptr %852, align 8, !tbaa !9
  %854 = getelementptr inbounds double, ptr %18, i64 %.1013901486
  %855 = load double, ptr %854, align 8, !tbaa !9
  %856 = fmul double %853, %855
  %857 = fdiv double %851, %856
  %858 = fadd double %.013731487, %857
  %859 = add nsw i64 %.1013901486, -1
  %860 = getelementptr inbounds double, ptr %19, i64 %859
  %861 = load double, ptr %860, align 8, !tbaa !9
  %862 = fmul double %861, %861
  %863 = getelementptr inbounds double, ptr %17, i64 %859
  %864 = load double, ptr %863, align 8, !tbaa !9
  %865 = getelementptr inbounds double, ptr %18, i64 %859
  %866 = load double, ptr %865, align 8, !tbaa !9
  %867 = fmul double %864, %866
  %868 = fdiv double %862, %867
  %869 = fadd double %858, %868
  %870 = add nsw i64 %.1013901486, -2
  %.not1426.not.1 = icmp sgt i64 %859, %833
  br i1 %.not1426.not.1, label %.lr.ph1489, label %._crit_edge1490, !llvm.loop !73

._crit_edge1490:                                  ; preds = %.lr.ph1489.prol.loopexit, %.lr.ph1489, %._crit_edge1484
  %.01373.lcssa = phi double [ 0.000000e+00, %._crit_edge1484 ], [ %.lcssa2138.unr, %.lr.ph1489.prol.loopexit ], [ %869, %.lr.ph1489 ]
  %871 = fadd double %35, %.41362.lcssa
  %872 = fadd double %871, %.01373.lcssa
  store double %872, ptr %10, align 8, !tbaa !9
  %873 = getelementptr inbounds double, ptr %19, i64 %.pre
  %874 = load double, ptr %873, align 8, !tbaa !9
  %875 = getelementptr inbounds double, ptr %17, i64 %.pre
  %876 = load double, ptr %875, align 8, !tbaa !9
  %877 = getelementptr inbounds double, ptr %18, i64 %.pre
  %878 = load double, ptr %877, align 8, !tbaa !9
  %879 = getelementptr double, ptr %3, i64 %36
  %880 = load double, ptr %879, align 8, !tbaa !9
  %881 = getelementptr double, ptr %7, i64 %36
  %882 = load double, ptr %881, align 8, !tbaa !9
  %883 = getelementptr double, ptr %4, i64 %36
  %884 = load double, ptr %883, align 8, !tbaa !9
  %885 = insertelement <2 x double> poison, double %874, i64 0
  %886 = insertelement <2 x double> %885, double %880, i64 1
  %887 = fmul <2 x double> %886, %886
  %888 = insertelement <2 x double> poison, double %876, i64 0
  %889 = insertelement <2 x double> %888, double %882, i64 1
  %890 = insertelement <2 x double> poison, double %878, i64 0
  %891 = insertelement <2 x double> %890, double %884, i64 1
  %892 = fmul <2 x double> %889, %891
  %893 = fdiv <2 x double> %887, %892
  %894 = extractelement <2 x double> %893, i64 0
  %895 = fadd double %872, %894
  %896 = extractelement <2 x double> %893, i64 1
  %897 = fadd double %895, %896
  store double %897, ptr %11, align 8, !tbaa !9
  %898 = fcmp ule double %897, 0.000000e+00
  br i1 %898, label %927, label %899

899:                                              ; preds = %._crit_edge1490
  store i64 1, ptr %16, align 8, !tbaa !5
  %900 = extractelement <2 x double> %887, i64 0
  %901 = tail call double @llvm.fmuladd.f64(double %872, double %743, double %900)
  %902 = tail call double @llvm.fmuladd.f64(double %880, double %880, double %901)
  %903 = fmul double %743, %900
  %904 = fcmp ogt double %902, 0.000000e+00
  br i1 %904, label %905, label %916

905:                                              ; preds = %899
  %906 = fmul double %903, 2.000000e+00
  %907 = fmul double %903, -4.000000e+00
  %908 = fmul double %872, %907
  %909 = tail call double @llvm.fmuladd.f64(double %902, double %902, double %908)
  %910 = fcmp oge double %909, 0.000000e+00
  %911 = fneg double %909
  %912 = select i1 %910, double %909, double %911
  %913 = tail call double @sqrt(double noundef %912) #6
  %914 = fadd double %902, %913
  %915 = fdiv double %906, %914
  br label %960

916:                                              ; preds = %899
  %917 = fmul double %903, -4.000000e+00
  %918 = fmul double %872, %917
  %919 = tail call double @llvm.fmuladd.f64(double %902, double %902, double %918)
  %920 = fcmp oge double %919, 0.000000e+00
  %921 = fneg double %919
  %922 = select i1 %920, double %919, double %921
  %923 = tail call double @sqrt(double noundef %922) #6
  %924 = fsub double %902, %923
  %925 = fmul double %872, 2.000000e+00
  %926 = fdiv double %924, %925
  br label %960

927:                                              ; preds = %._crit_edge1490
  store i64 0, ptr %16, align 8, !tbaa !5
  %928 = fneg double %744
  %929 = fneg double %874
  %930 = fmul double %874, %929
  %931 = tail call double @llvm.fmuladd.f64(double %872, double %743, double %930)
  %932 = fneg double %880
  %933 = tail call double @llvm.fmuladd.f64(double %932, double %880, double %931)
  %934 = extractelement <2 x double> %887, i64 1
  %935 = fmul double %743, %934
  %936 = fcmp olt double %933, 0.000000e+00
  br i1 %936, label %937, label %948

937:                                              ; preds = %927
  %938 = fmul double %935, 2.000000e+00
  %939 = fmul double %935, 4.000000e+00
  %940 = fmul double %872, %939
  %941 = tail call double @llvm.fmuladd.f64(double %933, double %933, double %940)
  %942 = fcmp oge double %941, 0.000000e+00
  %943 = fneg double %941
  %944 = select i1 %942, double %941, double %943
  %945 = tail call double @sqrt(double noundef %944) #6
  %946 = fsub double %933, %945
  %947 = fdiv double %938, %946
  br label %1022

948:                                              ; preds = %927
  %949 = fmul double %935, 4.000000e+00
  %950 = fmul double %872, %949
  %951 = tail call double @llvm.fmuladd.f64(double %933, double %933, double %950)
  %952 = fcmp oge double %951, 0.000000e+00
  %953 = fneg double %951
  %954 = select i1 %952, double %951, double %953
  %955 = tail call double @sqrt(double noundef %954) #6
  %956 = fadd double %933, %955
  %957 = fneg double %956
  %958 = fmul double %872, 2.000000e+00
  %959 = fdiv double %957, %958
  br label %1022

960:                                              ; preds = %916, %905
  %.21369 = phi double [ %915, %905 ], [ %926, %916 ]
  %961 = load i64, ptr %1, align 8, !tbaa !5
  %962 = getelementptr inbounds double, ptr %20, i64 %961
  %963 = load double, ptr %962, align 8, !tbaa !9
  %964 = tail call double @llvm.fmuladd.f64(double %963, double %963, double %.21369)
  %965 = tail call double @sqrt(double noundef %964) #6
  %966 = fadd double %963, %965
  %967 = fdiv double %.21369, %966
  store double %967, ptr %14, align 8, !tbaa !9
  %968 = load i64, ptr %1, align 8, !tbaa !5
  %969 = getelementptr inbounds double, ptr %20, i64 %968
  %970 = load double, ptr %969, align 8, !tbaa !9
  %971 = fadd double %967, %970
  store double %971, ptr %6, align 8, !tbaa !9
  %972 = load i64, ptr %0, align 8, !tbaa !5
  %.not14291492 = icmp slt i64 %972, 1
  br i1 %.not14291492, label %.loopexit1475, label %.lr.ph1495.preheader

.lr.ph1495.preheader:                             ; preds = %960
  %min.iters.check1855 = icmp ult i64 %972, 14
  br i1 %min.iters.check1855, label %.lr.ph1495.preheader2136, label %vector.memcheck1829

vector.memcheck1829:                              ; preds = %.lr.ph1495.preheader
  %973 = shl i64 %972, 3
  %scevgep1830 = getelementptr i8, ptr %7, i64 %973
  %scevgep1831 = getelementptr i8, ptr %4, i64 %973
  %974 = shl nsw i64 %968, 3
  %scevgep1832 = getelementptr i8, ptr %2, i64 %974
  %scevgep1833 = getelementptr i8, ptr %2, i64 %973
  %bound01834 = icmp ugt ptr %scevgep1831, %7
  %bound11835 = icmp ugt ptr %scevgep1830, %4
  %found.conflict1836 = and i1 %bound01834, %bound11835
  %bound01837 = icmp ugt ptr %scevgep1832, %7
  %bound11838 = icmp ult ptr %969, %scevgep1830
  %found.conflict1839 = and i1 %bound01837, %bound11838
  %conflict.rdx1840 = or i1 %found.conflict1836, %found.conflict1839
  %bound01841 = icmp ugt ptr %scevgep1833, %7
  %bound11842 = icmp ugt ptr %scevgep1830, %2
  %found.conflict1843 = and i1 %bound01841, %bound11842
  %conflict.rdx1844 = or i1 %conflict.rdx1840, %found.conflict1843
  %bound01845 = icmp ugt ptr %scevgep1832, %4
  %bound11846 = icmp ult ptr %969, %scevgep1831
  %found.conflict1847 = and i1 %bound01845, %bound11846
  %conflict.rdx1848 = or i1 %conflict.rdx1844, %found.conflict1847
  %bound01849 = icmp ugt ptr %scevgep1833, %4
  %bound11850 = icmp ugt ptr %scevgep1831, %2
  %found.conflict1851 = and i1 %bound01849, %bound11850
  %conflict.rdx1852 = or i1 %conflict.rdx1848, %found.conflict1851
  br i1 %conflict.rdx1852, label %.lr.ph1495.preheader2136, label %vector.ph1856

vector.ph1856:                                    ; preds = %vector.memcheck1829
  %n.vec1858 = and i64 %972, 9223372036854775806
  %ind.end1859 = or i64 %972, 1
  %broadcast.splatinsert1867 = insertelement <2 x double> poison, double %967, i64 0
  %broadcast.splat1868 = shufflevector <2 x double> %broadcast.splatinsert1867, <2 x double> poison, <2 x i32> zeroinitializer
  %975 = load double, ptr %969, align 8, !tbaa !9, !alias.scope !74
  %broadcast.splatinsert1865 = insertelement <2 x double> poison, double %975, i64 0
  %broadcast.splat1866 = shufflevector <2 x double> %broadcast.splatinsert1865, <2 x double> poison, <2 x i32> zeroinitializer
  %976 = load double, ptr %969, align 8, !tbaa !9, !alias.scope !74
  %broadcast.splatinsert1870 = insertelement <2 x double> poison, double %976, i64 0
  %broadcast.splat1871 = shufflevector <2 x double> %broadcast.splatinsert1870, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1861

vector.body1861:                                  ; preds = %vector.body1861, %vector.ph1856
  %index1862 = phi i64 [ 0, %vector.ph1856 ], [ %index.next1872, %vector.body1861 ]
  %977 = getelementptr double, ptr %2, i64 %index1862
  %wide.load1864 = load <2 x double>, ptr %977, align 8, !tbaa !9, !alias.scope !77
  %978 = fadd <2 x double> %wide.load1864, %broadcast.splat1866
  %979 = fadd <2 x double> %broadcast.splat1868, %978
  %980 = getelementptr double, ptr %7, i64 %index1862
  store <2 x double> %979, ptr %980, align 8, !tbaa !9, !alias.scope !79, !noalias !81
  %wide.load1869 = load <2 x double>, ptr %977, align 8, !tbaa !9, !alias.scope !77
  %981 = fsub <2 x double> %wide.load1869, %broadcast.splat1871
  %982 = fsub <2 x double> %981, %broadcast.splat1868
  %983 = getelementptr double, ptr %4, i64 %index1862
  store <2 x double> %982, ptr %983, align 8, !tbaa !9, !alias.scope !83, !noalias !84
  %index.next1872 = add nuw i64 %index1862, 2
  %984 = icmp eq i64 %index.next1872, %n.vec1858
  br i1 %984, label %middle.block1853, label %vector.body1861, !llvm.loop !85

middle.block1853:                                 ; preds = %vector.body1861
  %cmp.n1873 = icmp eq i64 %972, %n.vec1858
  br i1 %cmp.n1873, label %.loopexit1475, label %.lr.ph1495.preheader2136

.lr.ph1495.preheader2136:                         ; preds = %middle.block1853, %vector.memcheck1829, %.lr.ph1495.preheader
  %.111493.ph = phi i64 [ 1, %vector.memcheck1829 ], [ 1, %.lr.ph1495.preheader ], [ %ind.end1859, %middle.block1853 ]
  %xtraiter2145 = and i64 %972, 1
  %lcmp.mod2146.not = icmp eq i64 %xtraiter2145, 0
  br i1 %lcmp.mod2146.not, label %.lr.ph1495.prol.loopexit, label %.lr.ph1495.prol

.lr.ph1495.prol:                                  ; preds = %.lr.ph1495.preheader2136
  %985 = getelementptr inbounds double, ptr %20, i64 %.111493.ph
  %986 = load double, ptr %985, align 8, !tbaa !9
  %987 = load double, ptr %969, align 8, !tbaa !9
  %988 = fadd double %986, %987
  %989 = fadd double %967, %988
  %990 = getelementptr inbounds double, ptr %17, i64 %.111493.ph
  store double %989, ptr %990, align 8, !tbaa !9
  %991 = load double, ptr %985, align 8, !tbaa !9
  %992 = load double, ptr %969, align 8, !tbaa !9
  %993 = fsub double %991, %992
  %994 = fsub double %993, %967
  %995 = getelementptr inbounds double, ptr %18, i64 %.111493.ph
  store double %994, ptr %995, align 8, !tbaa !9
  %996 = add nuw i64 %.111493.ph, 1
  br label %.lr.ph1495.prol.loopexit

.lr.ph1495.prol.loopexit:                         ; preds = %.lr.ph1495.prol, %.lr.ph1495.preheader2136
  %.111493.unr = phi i64 [ %.111493.ph, %.lr.ph1495.preheader2136 ], [ %996, %.lr.ph1495.prol ]
  %997 = icmp eq i64 %972, %.111493.ph
  br i1 %997, label %.loopexit1475, label %.lr.ph1495

.lr.ph1495:                                       ; preds = %.lr.ph1495.prol.loopexit, %.lr.ph1495
  %.111493 = phi i64 [ %1021, %.lr.ph1495 ], [ %.111493.unr, %.lr.ph1495.prol.loopexit ]
  %998 = getelementptr inbounds double, ptr %20, i64 %.111493
  %999 = load double, ptr %998, align 8, !tbaa !9
  %1000 = load double, ptr %969, align 8, !tbaa !9
  %1001 = fadd double %999, %1000
  %1002 = fadd double %967, %1001
  %1003 = getelementptr inbounds double, ptr %17, i64 %.111493
  store double %1002, ptr %1003, align 8, !tbaa !9
  %1004 = load double, ptr %998, align 8, !tbaa !9
  %1005 = load double, ptr %969, align 8, !tbaa !9
  %1006 = fsub double %1004, %1005
  %1007 = fsub double %1006, %967
  %1008 = getelementptr inbounds double, ptr %18, i64 %.111493
  store double %1007, ptr %1008, align 8, !tbaa !9
  %1009 = add nuw i64 %.111493, 1
  %1010 = getelementptr double, ptr %2, i64 %.111493
  %1011 = load double, ptr %1010, align 8, !tbaa !9
  %1012 = load double, ptr %969, align 8, !tbaa !9
  %1013 = fadd double %1011, %1012
  %1014 = fadd double %967, %1013
  %1015 = getelementptr double, ptr %7, i64 %.111493
  store double %1014, ptr %1015, align 8, !tbaa !9
  %1016 = load double, ptr %1010, align 8, !tbaa !9
  %1017 = load double, ptr %969, align 8, !tbaa !9
  %1018 = fsub double %1016, %1017
  %1019 = fsub double %1018, %967
  %1020 = getelementptr double, ptr %4, i64 %.111493
  store double %1019, ptr %1020, align 8, !tbaa !9
  %1021 = add nuw i64 %.111493, 2
  %exitcond1703.not.1 = icmp eq i64 %1009, %972
  br i1 %exitcond1703.not.1, label %.loopexit1475, label %.lr.ph1495, !llvm.loop !86

1022:                                             ; preds = %937, %948
  %.31370 = phi double [ %947, %937 ], [ %959, %948 ]
  %1023 = load double, ptr %737, align 8, !tbaa !9
  %1024 = tail call double @llvm.fmuladd.f64(double %1023, double %1023, double %.31370)
  %1025 = fcmp oge double %1024, 0.000000e+00
  %1026 = fneg double %1024
  %1027 = select i1 %1025, double %1024, double %1026
  %1028 = tail call double @sqrt(double noundef %1027) #6
  %1029 = fadd double %1023, %1028
  %1030 = fdiv double %.31370, %1029
  store double %1030, ptr %14, align 8, !tbaa !9
  %1031 = load i64, ptr %1, align 8, !tbaa !5
  %1032 = add nsw i64 %1031, 1
  %1033 = load double, ptr %737, align 8, !tbaa !9
  %1034 = fadd double %1030, %1033
  store double %1034, ptr %6, align 8, !tbaa !9
  %1035 = load i64, ptr %0, align 8, !tbaa !5
  %.not14281496 = icmp slt i64 %1035, 1
  br i1 %.not14281496, label %.loopexit1475, label %.lr.ph1499.preheader

.lr.ph1499.preheader:                             ; preds = %1022
  %min.iters.check1900 = icmp ult i64 %1035, 14
  br i1 %min.iters.check1900, label %.lr.ph1499.preheader2135, label %vector.memcheck1874

vector.memcheck1874:                              ; preds = %.lr.ph1499.preheader
  %1036 = shl i64 %1035, 3
  %scevgep1875 = getelementptr i8, ptr %7, i64 %1036
  %scevgep1876 = getelementptr i8, ptr %4, i64 %1036
  %1037 = shl i64 %36, 3
  %1038 = getelementptr i8, ptr %2, i64 %1037
  %scevgep1877 = getelementptr i8, ptr %1038, i64 8
  %scevgep1878 = getelementptr i8, ptr %2, i64 %1036
  %bound01879 = icmp ugt ptr %scevgep1876, %7
  %bound11880 = icmp ugt ptr %scevgep1875, %4
  %found.conflict1881 = and i1 %bound01879, %bound11880
  %bound01882 = icmp ugt ptr %scevgep1877, %7
  %bound11883 = icmp ult ptr %737, %scevgep1875
  %found.conflict1884 = and i1 %bound01882, %bound11883
  %conflict.rdx1885 = or i1 %found.conflict1881, %found.conflict1884
  %bound01886 = icmp ugt ptr %scevgep1878, %7
  %bound11887 = icmp ugt ptr %scevgep1875, %2
  %found.conflict1888 = and i1 %bound01886, %bound11887
  %conflict.rdx1889 = or i1 %conflict.rdx1885, %found.conflict1888
  %bound01890 = icmp ugt ptr %scevgep1877, %4
  %bound11891 = icmp ult ptr %737, %scevgep1876
  %found.conflict1892 = and i1 %bound01890, %bound11891
  %conflict.rdx1893 = or i1 %conflict.rdx1889, %found.conflict1892
  %bound01894 = icmp ugt ptr %scevgep1878, %4
  %bound11895 = icmp ugt ptr %scevgep1876, %2
  %found.conflict1896 = and i1 %bound01894, %bound11895
  %conflict.rdx1897 = or i1 %conflict.rdx1893, %found.conflict1896
  br i1 %conflict.rdx1897, label %.lr.ph1499.preheader2135, label %vector.ph1901

vector.ph1901:                                    ; preds = %vector.memcheck1874
  %n.vec1903 = and i64 %1035, 9223372036854775806
  %ind.end1904 = or i64 %1035, 1
  %broadcast.splatinsert1912 = insertelement <2 x double> poison, double %1030, i64 0
  %broadcast.splat1913 = shufflevector <2 x double> %broadcast.splatinsert1912, <2 x double> poison, <2 x i32> zeroinitializer
  %1039 = load double, ptr %737, align 8, !tbaa !9, !alias.scope !87
  %broadcast.splatinsert1910 = insertelement <2 x double> poison, double %1039, i64 0
  %broadcast.splat1911 = shufflevector <2 x double> %broadcast.splatinsert1910, <2 x double> poison, <2 x i32> zeroinitializer
  %1040 = load double, ptr %737, align 8, !tbaa !9, !alias.scope !87
  %broadcast.splatinsert1915 = insertelement <2 x double> poison, double %1040, i64 0
  %broadcast.splat1916 = shufflevector <2 x double> %broadcast.splatinsert1915, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1906

vector.body1906:                                  ; preds = %vector.body1906, %vector.ph1901
  %index1907 = phi i64 [ 0, %vector.ph1901 ], [ %index.next1917, %vector.body1906 ]
  %1041 = getelementptr double, ptr %2, i64 %index1907
  %wide.load1909 = load <2 x double>, ptr %1041, align 8, !tbaa !9, !alias.scope !90
  %1042 = fadd <2 x double> %wide.load1909, %broadcast.splat1911
  %1043 = fadd <2 x double> %broadcast.splat1913, %1042
  %1044 = getelementptr double, ptr %7, i64 %index1907
  store <2 x double> %1043, ptr %1044, align 8, !tbaa !9, !alias.scope !92, !noalias !94
  %wide.load1914 = load <2 x double>, ptr %1041, align 8, !tbaa !9, !alias.scope !90
  %1045 = fsub <2 x double> %wide.load1914, %broadcast.splat1916
  %1046 = fsub <2 x double> %1045, %broadcast.splat1913
  %1047 = getelementptr double, ptr %4, i64 %index1907
  store <2 x double> %1046, ptr %1047, align 8, !tbaa !9, !alias.scope !96, !noalias !97
  %index.next1917 = add nuw i64 %index1907, 2
  %1048 = icmp eq i64 %index.next1917, %n.vec1903
  br i1 %1048, label %middle.block1898, label %vector.body1906, !llvm.loop !98

middle.block1898:                                 ; preds = %vector.body1906
  %cmp.n1918 = icmp eq i64 %1035, %n.vec1903
  br i1 %cmp.n1918, label %.loopexit1475, label %.lr.ph1499.preheader2135

.lr.ph1499.preheader2135:                         ; preds = %middle.block1898, %vector.memcheck1874, %.lr.ph1499.preheader
  %.121497.ph = phi i64 [ 1, %vector.memcheck1874 ], [ 1, %.lr.ph1499.preheader ], [ %ind.end1904, %middle.block1898 ]
  %xtraiter2147 = and i64 %1035, 1
  %lcmp.mod2148.not = icmp eq i64 %xtraiter2147, 0
  br i1 %lcmp.mod2148.not, label %.lr.ph1499.prol.loopexit, label %.lr.ph1499.prol

.lr.ph1499.prol:                                  ; preds = %.lr.ph1499.preheader2135
  %1049 = getelementptr inbounds double, ptr %20, i64 %.121497.ph
  %1050 = load double, ptr %1049, align 8, !tbaa !9
  %1051 = load double, ptr %737, align 8, !tbaa !9
  %1052 = fadd double %1050, %1051
  %1053 = fadd double %1030, %1052
  %1054 = getelementptr inbounds double, ptr %17, i64 %.121497.ph
  store double %1053, ptr %1054, align 8, !tbaa !9
  %1055 = load double, ptr %1049, align 8, !tbaa !9
  %1056 = load double, ptr %737, align 8, !tbaa !9
  %1057 = fsub double %1055, %1056
  %1058 = fsub double %1057, %1030
  %1059 = getelementptr inbounds double, ptr %18, i64 %.121497.ph
  store double %1058, ptr %1059, align 8, !tbaa !9
  %1060 = add nuw i64 %.121497.ph, 1
  br label %.lr.ph1499.prol.loopexit

.lr.ph1499.prol.loopexit:                         ; preds = %.lr.ph1499.prol, %.lr.ph1499.preheader2135
  %.121497.unr = phi i64 [ %.121497.ph, %.lr.ph1499.preheader2135 ], [ %1060, %.lr.ph1499.prol ]
  %1061 = icmp eq i64 %1035, %.121497.ph
  br i1 %1061, label %.loopexit1475, label %.lr.ph1499

.lr.ph1499:                                       ; preds = %.lr.ph1499.prol.loopexit, %.lr.ph1499
  %.121497 = phi i64 [ %1085, %.lr.ph1499 ], [ %.121497.unr, %.lr.ph1499.prol.loopexit ]
  %1062 = getelementptr inbounds double, ptr %20, i64 %.121497
  %1063 = load double, ptr %1062, align 8, !tbaa !9
  %1064 = load double, ptr %737, align 8, !tbaa !9
  %1065 = fadd double %1063, %1064
  %1066 = fadd double %1030, %1065
  %1067 = getelementptr inbounds double, ptr %17, i64 %.121497
  store double %1066, ptr %1067, align 8, !tbaa !9
  %1068 = load double, ptr %1062, align 8, !tbaa !9
  %1069 = load double, ptr %737, align 8, !tbaa !9
  %1070 = fsub double %1068, %1069
  %1071 = fsub double %1070, %1030
  %1072 = getelementptr inbounds double, ptr %18, i64 %.121497
  store double %1071, ptr %1072, align 8, !tbaa !9
  %1073 = add nuw i64 %.121497, 1
  %1074 = getelementptr double, ptr %2, i64 %.121497
  %1075 = load double, ptr %1074, align 8, !tbaa !9
  %1076 = load double, ptr %737, align 8, !tbaa !9
  %1077 = fadd double %1075, %1076
  %1078 = fadd double %1030, %1077
  %1079 = getelementptr double, ptr %7, i64 %.121497
  store double %1078, ptr %1079, align 8, !tbaa !9
  %1080 = load double, ptr %1074, align 8, !tbaa !9
  %1081 = load double, ptr %737, align 8, !tbaa !9
  %1082 = fsub double %1080, %1081
  %1083 = fsub double %1082, %1030
  %1084 = getelementptr double, ptr %4, i64 %.121497
  store double %1083, ptr %1084, align 8, !tbaa !9
  %1085 = add nuw i64 %.121497, 2
  %exitcond1704.not.1 = icmp eq i64 %1073, %1035
  br i1 %exitcond1704.not.1, label %.loopexit1475, label %.lr.ph1499, !llvm.loop !99

.loopexit1475:                                    ; preds = %.lr.ph1495.prol.loopexit, %.lr.ph1495, %.lr.ph1499.prol.loopexit, %.lr.ph1499, %middle.block1853, %middle.block1898, %960, %1022
  %.013291735 = phi double [ 0.000000e+00, %1022 ], [ %744, %960 ], [ 0.000000e+00, %middle.block1898 ], [ %744, %middle.block1853 ], [ 0.000000e+00, %.lr.ph1499 ], [ 0.000000e+00, %.lr.ph1499.prol.loopexit ], [ %744, %.lr.ph1495 ], [ %744, %.lr.ph1495.prol.loopexit ]
  %.013341733 = phi double [ %928, %1022 ], [ 0.000000e+00, %960 ], [ %928, %middle.block1898 ], [ 0.000000e+00, %middle.block1853 ], [ %928, %.lr.ph1499 ], [ %928, %.lr.ph1499.prol.loopexit ], [ 0.000000e+00, %.lr.ph1495 ], [ 0.000000e+00, %.lr.ph1495.prol.loopexit ]
  %.413711731 = phi double [ %.31370, %1022 ], [ %.21369, %960 ], [ %.31370, %middle.block1898 ], [ %.21369, %middle.block1853 ], [ %.31370, %.lr.ph1499 ], [ %.31370, %.lr.ph1499.prol.loopexit ], [ %.21369, %.lr.ph1495 ], [ %.21369, %.lr.ph1495.prol.loopexit ]
  %1086 = phi i64 [ %1031, %1022 ], [ %968, %960 ], [ %1031, %middle.block1898 ], [ %968, %middle.block1853 ], [ %1031, %.lr.ph1499 ], [ %1031, %.lr.ph1499.prol.loopexit ], [ %968, %.lr.ph1495 ], [ %968, %.lr.ph1495.prol.loopexit ]
  %1087 = phi i64 [ %1035, %1022 ], [ %972, %960 ], [ %1035, %middle.block1898 ], [ %972, %middle.block1853 ], [ %1035, %.lr.ph1499 ], [ %1035, %.lr.ph1499.prol.loopexit ], [ %972, %.lr.ph1495 ], [ %972, %.lr.ph1495.prol.loopexit ]
  %.01379 = phi i64 [ %1032, %1022 ], [ %968, %960 ], [ %1032, %middle.block1898 ], [ %968, %middle.block1853 ], [ %1032, %.lr.ph1499 ], [ %1032, %.lr.ph1499.prol.loopexit ], [ %968, %.lr.ph1495 ], [ %968, %.lr.ph1495.prol.loopexit ]
  %1088 = add nsw i64 %.01379, -1
  %.not1430.not1500 = icmp sgt i64 %.01379, 1
  br i1 %.not1430.not1500, label %.lr.ph1506.preheader, label %._crit_edge1507

.lr.ph1506.preheader:                             ; preds = %.loopexit1475
  %1089 = add nsw i64 %.01379, -1
  %xtraiter2149 = and i64 %1089, 1
  %1090 = icmp eq i64 %.01379, 2
  br i1 %1090, label %._crit_edge1507.loopexit.unr-lcssa, label %.lr.ph1506.preheader.new

.lr.ph1506.preheader.new:                         ; preds = %.lr.ph1506.preheader
  %unroll_iter2153 = and i64 %1089, -2
  br label %.lr.ph1506

.lr.ph1506:                                       ; preds = %.lr.ph1506, %.lr.ph1506.preheader.new
  %.41504 = phi double [ 0.000000e+00, %.lr.ph1506.preheader.new ], [ %1119, %.lr.ph1506 ]
  %.131501 = phi i64 [ 1, %.lr.ph1506.preheader.new ], [ %1120, %.lr.ph1506 ]
  %1091 = phi <2 x double> [ zeroinitializer, %.lr.ph1506.preheader.new ], [ %1117, %.lr.ph1506 ]
  %niter2154 = phi i64 [ 0, %.lr.ph1506.preheader.new ], [ %niter2154.next.1, %.lr.ph1506 ]
  %1092 = getelementptr inbounds double, ptr %19, i64 %.131501
  %1093 = load double, ptr %1092, align 8, !tbaa !9
  %1094 = getelementptr inbounds double, ptr %17, i64 %.131501
  %1095 = load double, ptr %1094, align 8, !tbaa !9
  %1096 = getelementptr inbounds double, ptr %18, i64 %.131501
  %1097 = load double, ptr %1096, align 8, !tbaa !9
  %1098 = fmul double %1095, %1097
  %1099 = fdiv double %1093, %1098
  %1100 = insertelement <2 x double> poison, double %1093, i64 0
  %1101 = insertelement <2 x double> %1100, double %1099, i64 1
  %1102 = shufflevector <2 x double> %1101, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %1103 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1101, <2 x double> %1102, <2 x double> %1091)
  %1104 = extractelement <2 x double> %1103, i64 0
  %1105 = fadd double %.41504, %1104
  %1106 = getelementptr double, ptr %3, i64 %.131501
  %1107 = load double, ptr %1106, align 8, !tbaa !9
  %1108 = getelementptr double, ptr %7, i64 %.131501
  %1109 = load double, ptr %1108, align 8, !tbaa !9
  %1110 = getelementptr double, ptr %4, i64 %.131501
  %1111 = load double, ptr %1110, align 8, !tbaa !9
  %1112 = fmul double %1109, %1111
  %1113 = fdiv double %1107, %1112
  %1114 = insertelement <2 x double> poison, double %1107, i64 0
  %1115 = insertelement <2 x double> %1114, double %1113, i64 1
  %1116 = shufflevector <2 x double> %1115, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %1117 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1115, <2 x double> %1116, <2 x double> %1103)
  %1118 = extractelement <2 x double> %1117, i64 0
  %1119 = fadd double %1105, %1118
  %1120 = add nuw nsw i64 %.131501, 2
  %niter2154.next.1 = add i64 %niter2154, 2
  %niter2154.ncmp.1 = icmp eq i64 %niter2154.next.1, %unroll_iter2153
  br i1 %niter2154.ncmp.1, label %._crit_edge1507.loopexit.unr-lcssa, label %.lr.ph1506, !llvm.loop !100

._crit_edge1507.loopexit.unr-lcssa:               ; preds = %.lr.ph1506, %.lr.ph1506.preheader
  %.lcssa2134.ph = phi <2 x double> [ poison, %.lr.ph1506.preheader ], [ %1117, %.lr.ph1506 ]
  %.lcssa2133.ph = phi double [ poison, %.lr.ph1506.preheader ], [ %1119, %.lr.ph1506 ]
  %.41504.unr = phi double [ 0.000000e+00, %.lr.ph1506.preheader ], [ %1119, %.lr.ph1506 ]
  %.131501.unr = phi i64 [ 1, %.lr.ph1506.preheader ], [ %1120, %.lr.ph1506 ]
  %.unr = phi <2 x double> [ zeroinitializer, %.lr.ph1506.preheader ], [ %1117, %.lr.ph1506 ]
  %lcmp.mod2150.not = icmp eq i64 %xtraiter2149, 0
  br i1 %lcmp.mod2150.not, label %._crit_edge1507, label %.lr.ph1506.epil

.lr.ph1506.epil:                                  ; preds = %._crit_edge1507.loopexit.unr-lcssa
  %1121 = getelementptr inbounds double, ptr %19, i64 %.131501.unr
  %1122 = load double, ptr %1121, align 8, !tbaa !9
  %1123 = getelementptr inbounds double, ptr %17, i64 %.131501.unr
  %1124 = load double, ptr %1123, align 8, !tbaa !9
  %1125 = getelementptr inbounds double, ptr %18, i64 %.131501.unr
  %1126 = load double, ptr %1125, align 8, !tbaa !9
  %1127 = fmul double %1124, %1126
  %1128 = fdiv double %1122, %1127
  %1129 = insertelement <2 x double> poison, double %1122, i64 0
  %1130 = insertelement <2 x double> %1129, double %1128, i64 1
  %1131 = shufflevector <2 x double> %1130, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %1132 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1130, <2 x double> %1131, <2 x double> %.unr)
  %1133 = extractelement <2 x double> %1132, i64 0
  %1134 = fadd double %.41504.unr, %1133
  br label %._crit_edge1507

._crit_edge1507:                                  ; preds = %.lr.ph1506.epil, %._crit_edge1507.loopexit.unr-lcssa, %.loopexit1475
  %.4.lcssa = phi double [ 0.000000e+00, %.loopexit1475 ], [ %.lcssa2133.ph, %._crit_edge1507.loopexit.unr-lcssa ], [ %1134, %.lr.ph1506.epil ]
  %1135 = phi <2 x double> [ zeroinitializer, %.loopexit1475 ], [ %.lcssa2134.ph, %._crit_edge1507.loopexit.unr-lcssa ], [ %1132, %.lr.ph1506.epil ]
  %1136 = fcmp oge double %.4.lcssa, 0.000000e+00
  %1137 = fneg double %.4.lcssa
  %1138 = select i1 %1136, double %.4.lcssa, double %1137
  %.not1431.not1511 = icmp sgt i64 %1087, %.01379
  br i1 %.not1431.not1511, label %.lr.ph1517.preheader, label %._crit_edge1518

.lr.ph1517.preheader:                             ; preds = %._crit_edge1507
  %1139 = sub i64 %1087, %.01379
  %.neg = add i64 %.01379, 1
  %xtraiter2155 = and i64 %1139, 1
  %lcmp.mod2156.not = icmp eq i64 %xtraiter2155, 0
  br i1 %lcmp.mod2156.not, label %.lr.ph1517.prol.loopexit, label %.lr.ph1517.prol

.lr.ph1517.prol:                                  ; preds = %.lr.ph1517.preheader
  %1140 = getelementptr inbounds double, ptr %19, i64 %1087
  %1141 = load double, ptr %1140, align 8, !tbaa !9
  %1142 = getelementptr inbounds double, ptr %17, i64 %1087
  %1143 = load double, ptr %1142, align 8, !tbaa !9
  %1144 = getelementptr inbounds double, ptr %18, i64 %1087
  %1145 = load double, ptr %1144, align 8, !tbaa !9
  %1146 = fmul double %1143, %1145
  %1147 = fdiv double %1141, %1146
  %1148 = insertelement <2 x double> poison, double %1141, i64 0
  %1149 = insertelement <2 x double> %1148, double %1147, i64 1
  %1150 = shufflevector <2 x double> %1149, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %1151 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1149, <2 x double> %1150, <2 x double> zeroinitializer)
  %1152 = extractelement <2 x double> %1151, i64 0
  %1153 = fadd double %1138, %1152
  %1154 = add nsw i64 %1087, -1
  br label %.lr.ph1517.prol.loopexit

.lr.ph1517.prol.loopexit:                         ; preds = %.lr.ph1517.prol, %.lr.ph1517.preheader
  %.51515.unr = phi double [ %1138, %.lr.ph1517.preheader ], [ %1153, %.lr.ph1517.prol ]
  %.141512.unr = phi i64 [ %1087, %.lr.ph1517.preheader ], [ %1154, %.lr.ph1517.prol ]
  %.unr2157 = phi <2 x double> [ zeroinitializer, %.lr.ph1517.preheader ], [ %1151, %.lr.ph1517.prol ]
  %.lcssa2132.unr = phi <2 x double> [ poison, %.lr.ph1517.preheader ], [ %1151, %.lr.ph1517.prol ]
  %.lcssa2131.unr = phi double [ poison, %.lr.ph1517.preheader ], [ %1153, %.lr.ph1517.prol ]
  %1155 = icmp eq i64 %1087, %.neg
  br i1 %1155, label %._crit_edge1518, label %.lr.ph1517

.lr.ph1517:                                       ; preds = %.lr.ph1517.prol.loopexit, %.lr.ph1517
  %.51515 = phi double [ %1185, %.lr.ph1517 ], [ %.51515.unr, %.lr.ph1517.prol.loopexit ]
  %.141512 = phi i64 [ %1186, %.lr.ph1517 ], [ %.141512.unr, %.lr.ph1517.prol.loopexit ]
  %1156 = phi <2 x double> [ %1183, %.lr.ph1517 ], [ %.unr2157, %.lr.ph1517.prol.loopexit ]
  %1157 = getelementptr inbounds double, ptr %19, i64 %.141512
  %1158 = load double, ptr %1157, align 8, !tbaa !9
  %1159 = getelementptr inbounds double, ptr %17, i64 %.141512
  %1160 = load double, ptr %1159, align 8, !tbaa !9
  %1161 = getelementptr inbounds double, ptr %18, i64 %.141512
  %1162 = load double, ptr %1161, align 8, !tbaa !9
  %1163 = fmul double %1160, %1162
  %1164 = fdiv double %1158, %1163
  %1165 = insertelement <2 x double> poison, double %1158, i64 0
  %1166 = insertelement <2 x double> %1165, double %1164, i64 1
  %1167 = shufflevector <2 x double> %1166, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %1168 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1166, <2 x double> %1167, <2 x double> %1156)
  %1169 = extractelement <2 x double> %1168, i64 0
  %1170 = fadd double %.51515, %1169
  %1171 = add nsw i64 %.141512, -1
  %1172 = getelementptr inbounds double, ptr %19, i64 %1171
  %1173 = load double, ptr %1172, align 8, !tbaa !9
  %1174 = getelementptr inbounds double, ptr %17, i64 %1171
  %1175 = load double, ptr %1174, align 8, !tbaa !9
  %1176 = getelementptr inbounds double, ptr %18, i64 %1171
  %1177 = load double, ptr %1176, align 8, !tbaa !9
  %1178 = fmul double %1175, %1177
  %1179 = fdiv double %1173, %1178
  %1180 = insertelement <2 x double> poison, double %1173, i64 0
  %1181 = insertelement <2 x double> %1180, double %1179, i64 1
  %1182 = shufflevector <2 x double> %1181, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %1183 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1181, <2 x double> %1182, <2 x double> %1168)
  %1184 = extractelement <2 x double> %1183, i64 0
  %1185 = fadd double %1170, %1184
  %1186 = add nsw i64 %.141512, -2
  %.not1431.not.1 = icmp sgt i64 %1186, %.01379
  br i1 %.not1431.not.1, label %.lr.ph1517, label %._crit_edge1518, !llvm.loop !101

._crit_edge1518:                                  ; preds = %.lr.ph1517.prol.loopexit, %.lr.ph1517, %._crit_edge1507
  %.5.lcssa = phi double [ %1138, %._crit_edge1507 ], [ %.lcssa2131.unr, %.lr.ph1517.prol.loopexit ], [ %1185, %.lr.ph1517 ]
  %1187 = phi <2 x double> [ zeroinitializer, %._crit_edge1507 ], [ %.lcssa2132.unr, %.lr.ph1517.prol.loopexit ], [ %1183, %.lr.ph1517 ]
  %1188 = extractelement <2 x double> %1187, i64 0
  %1189 = fadd double %35, %1188
  %1190 = extractelement <2 x double> %1135, i64 0
  %1191 = fadd double %1190, %1189
  br i1 %898, label %1195, label %1192

1192:                                             ; preds = %._crit_edge1518
  %1193 = fcmp olt double %1191, 0.000000e+00
  br i1 %1193, label %1194, label %1198

1194:                                             ; preds = %1192
  br label %1198

1195:                                             ; preds = %._crit_edge1518
  %1196 = fcmp ogt double %1191, 0.000000e+00
  br i1 %1196, label %1197, label %1198

1197:                                             ; preds = %1195
  br label %1198

1198:                                             ; preds = %1195, %1197, %1192, %1194
  %.not14331472 = phi i1 [ false, %1194 ], [ true, %1192 ], [ false, %1197 ], [ true, %1195 ]
  %1199 = icmp eq i64 %.01379, 1
  %1200 = icmp eq i64 %.01379, %1087
  %or.cond1471 = or i1 %1199, %1200
  %1201 = getelementptr inbounds double, ptr %19, i64 %.01379
  %1202 = load double, ptr %1201, align 8, !tbaa !9
  %1203 = getelementptr inbounds double, ptr %17, i64 %.01379
  %1204 = load double, ptr %1203, align 8, !tbaa !9
  %1205 = getelementptr inbounds double, ptr %18, i64 %.01379
  %1206 = load double, ptr %1205, align 8, !tbaa !9
  %1207 = fmul double %1204, %1206
  %1208 = fdiv double %1202, %1207
  %1209 = extractelement <2 x double> %1187, i64 1
  %1210 = extractelement <2 x double> %1135, i64 1
  %1211 = fadd double %1210, %1209
  %1212 = tail call double @llvm.fmuladd.f64(double %1208, double %1208, double %1211)
  %1213 = fmul double %1202, %1208
  %1214 = fadd double %1191, %1213
  store double %1214, ptr %11, align 8, !tbaa !9
  %1215 = fsub <2 x double> %1187, %1135
  %1216 = extractelement <2 x double> %1215, i64 0
  %1217 = tail call double @llvm.fmuladd.f64(double %1216, double 8.000000e+00, double %.5.lcssa)
  %1218 = tail call double @llvm.fmuladd.f64(double %35, double 2.000000e+00, double %1217)
  %1219 = fcmp oge double %1213, 0.000000e+00
  %1220 = fneg double %1213
  %1221 = select i1 %1219, double %1213, double %1220
  %1222 = tail call double @llvm.fmuladd.f64(double %1221, double 3.000000e+00, double %1218)
  %1223 = fcmp oge double %.413711731, 0.000000e+00
  %1224 = fneg double %.413711731
  %1225 = select i1 %1223, double %.413711731, double %1224
  %1226 = tail call double @llvm.fmuladd.f64(double %1225, double %1212, double %1222)
  %1227 = fcmp oge double %1214, 0.000000e+00
  %1228 = fneg double %1214
  %1229 = select i1 %1227, double %1214, double %1228
  %1230 = fmul double %33, %1226
  %1231 = fcmp ugt double %1229, %1230
  br i1 %1231, label %1232, label %.loopexit1473

1232:                                             ; preds = %1198
  %1233 = fcmp ugt double %1214, 0.000000e+00
  br i1 %1233, label %1237, label %1234

1234:                                             ; preds = %1232
  %1235 = fcmp oge double %.013341733, %.413711731
  %1236 = select i1 %1235, double %.013341733, double %.413711731
  br label %1240

1237:                                             ; preds = %1232
  %1238 = fcmp ole double %.013291735, %.413711731
  %1239 = select i1 %1238, double %.013291735, double %.413711731
  br label %1240

1240:                                             ; preds = %1237, %1234
  %.11335 = phi double [ %1236, %1234 ], [ %.013341733, %1237 ]
  %.11330 = phi double [ %.013291735, %1234 ], [ %1239, %1237 ]
  store i64 2, ptr %15, align 8, !tbaa !5
  %.not1433 = or i1 %or.cond1471, %.not14331472
  br i1 %.not1433, label %1241, label %1315

1241:                                             ; preds = %1240
  %1242 = load double, ptr %881, align 8, !tbaa !9
  %1243 = load double, ptr %883, align 8, !tbaa !9
  %1244 = fmul double %1242, %1243
  %1245 = getelementptr inbounds double, ptr %17, i64 %1086
  %1246 = load double, ptr %1245, align 8, !tbaa !9
  %1247 = getelementptr inbounds double, ptr %18, i64 %1086
  %1248 = load double, ptr %1247, align 8, !tbaa !9
  %1249 = fmul double %1246, %1248
  br i1 %898, label %1258, label %1250

1250:                                             ; preds = %1241
  %1251 = getelementptr inbounds double, ptr %19, i64 %1086
  %1252 = load double, ptr %1251, align 8, !tbaa !9
  %1253 = fdiv double %1252, %1249
  %1254 = fneg double %1244
  %1255 = tail call double @llvm.fmuladd.f64(double %1254, double %1212, double %1214)
  %1256 = fmul double %1253, %1253
  %1257 = tail call double @llvm.fmuladd.f64(double %743, double %1256, double %1255)
  br label %1266

1258:                                             ; preds = %1241
  %1259 = load double, ptr %879, align 8, !tbaa !9
  %1260 = fdiv double %1259, %1244
  %1261 = fneg double %1249
  %1262 = tail call double @llvm.fmuladd.f64(double %1261, double %1212, double %1214)
  %1263 = fmul double %1260, %1260
  %1264 = fneg double %743
  %1265 = tail call double @llvm.fmuladd.f64(double %1264, double %1263, double %1262)
  br label %1266

1266:                                             ; preds = %1258, %1250
  %1267 = phi double [ %1265, %1258 ], [ %1257, %1250 ]
  store double %1267, ptr %10, align 8, !tbaa !9
  %1268 = fadd double %1244, %1249
  %1269 = fmul double %1244, %1249
  %1270 = fneg double %1269
  %1271 = fmul double %1212, %1270
  %1272 = tail call double @llvm.fmuladd.f64(double %1268, double %1214, double %1271)
  %1273 = fmul double %1214, %1269
  %1274 = fcmp oeq double %1267, 0.000000e+00
  br i1 %1274, label %1275, label %1291

1275:                                             ; preds = %1266
  %1276 = fcmp oeq double %1272, 0.000000e+00
  br i1 %1276, label %1277, label %1289

1277:                                             ; preds = %1275
  br i1 %898, label %1284, label %1278

1278:                                             ; preds = %1277
  %1279 = getelementptr inbounds double, ptr %19, i64 %1086
  %1280 = load double, ptr %1279, align 8, !tbaa !9
  %1281 = fmul double %1244, %1244
  %1282 = fmul double %1211, %1281
  %1283 = tail call double @llvm.fmuladd.f64(double %1280, double %1280, double %1282)
  br label %1289

1284:                                             ; preds = %1277
  %1285 = load double, ptr %879, align 8, !tbaa !9
  %1286 = fmul double %1249, %1249
  %1287 = fmul double %1211, %1286
  %1288 = tail call double @llvm.fmuladd.f64(double %1285, double %1285, double %1287)
  br label %1289

1289:                                             ; preds = %1278, %1284, %1275
  %.01391 = phi double [ %1283, %1278 ], [ %1288, %1284 ], [ %1272, %1275 ]
  %1290 = fdiv double %1273, %.01391
  store double %1290, ptr %14, align 8, !tbaa !9
  br label %1382

1291:                                             ; preds = %1266
  %1292 = fcmp ugt double %1272, 0.000000e+00
  br i1 %1292, label %1304, label %1293

1293:                                             ; preds = %1291
  %1294 = fmul double %1273, -4.000000e+00
  %1295 = fmul double %1294, %1267
  %1296 = tail call double @llvm.fmuladd.f64(double %1272, double %1272, double %1295)
  %1297 = fcmp oge double %1296, 0.000000e+00
  %1298 = fneg double %1296
  %1299 = select i1 %1297, double %1296, double %1298
  %1300 = tail call double @sqrt(double noundef %1299) #6
  %1301 = fsub double %1272, %1300
  %1302 = fmul double %1267, 2.000000e+00
  %1303 = fdiv double %1301, %1302
  store double %1303, ptr %14, align 8, !tbaa !9
  br label %1382

1304:                                             ; preds = %1291
  %1305 = fmul double %1273, 2.000000e+00
  %1306 = fmul double %1273, -4.000000e+00
  %1307 = fmul double %1306, %1267
  %1308 = tail call double @llvm.fmuladd.f64(double %1272, double %1272, double %1307)
  %1309 = fcmp oge double %1308, 0.000000e+00
  %1310 = fneg double %1308
  %1311 = select i1 %1309, double %1308, double %1310
  %1312 = tail call double @sqrt(double noundef %1311) #6
  %1313 = fadd double %1272, %1312
  %1314 = fdiv double %1305, %1313
  store double %1314, ptr %14, align 8, !tbaa !9
  br label %1382

1315:                                             ; preds = %1240
  %1316 = getelementptr inbounds double, ptr %17, i64 %1088
  %1317 = load double, ptr %1316, align 8, !tbaa !9
  %1318 = getelementptr inbounds double, ptr %18, i64 %1088
  %1319 = load double, ptr %1318, align 8, !tbaa !9
  %1320 = fmul double %1317, %1319
  %1321 = getelementptr double, ptr %7, i64 %.01379
  %1322 = load double, ptr %1321, align 8, !tbaa !9
  %1323 = getelementptr double, ptr %4, i64 %.01379
  %1324 = load double, ptr %1323, align 8, !tbaa !9
  %1325 = fmul double %1322, %1324
  %1326 = fadd double %35, %1190
  %1327 = fadd double %1326, %1188
  br i1 %898, label %1353, label %1328

1328:                                             ; preds = %1315
  %1329 = getelementptr inbounds double, ptr %19, i64 %1088
  %1330 = load double, ptr %1329, align 8, !tbaa !9
  %1331 = fdiv double %1330, %1320
  %1332 = fmul double %1331, %1331
  %1333 = fneg double %1325
  %1334 = tail call double @llvm.fmuladd.f64(double %1333, double %1211, double %1327)
  %1335 = getelementptr inbounds double, ptr %20, i64 %1088
  %1336 = load double, ptr %1335, align 8, !tbaa !9
  %1337 = getelementptr double, ptr %2, i64 %.01379
  %1338 = load double, ptr %1337, align 8, !tbaa !9
  %1339 = fsub double %1336, %1338
  %1340 = fadd double %1336, %1338
  %1341 = fneg double %1339
  %1342 = fmul double %1340, %1341
  %1343 = tail call double @llvm.fmuladd.f64(double %1342, double %1332, double %1334)
  store double %1343, ptr %10, align 8, !tbaa !9
  %1344 = fmul double %1330, %1330
  store double %1344, ptr %13, align 16, !tbaa !9
  %1345 = fcmp olt double %1210, %1332
  %1346 = fmul double %1325, %1325
  br i1 %1345, label %1347, label %1349

1347:                                             ; preds = %1328
  %1348 = fmul double %1209, %1346
  br label %1374

1349:                                             ; preds = %1328
  %1350 = fsub double %1210, %1332
  %1351 = fadd double %1209, %1350
  %1352 = fmul double %1346, %1351
  br label %1374

1353:                                             ; preds = %1315
  %1354 = getelementptr double, ptr %3, i64 %.01379
  %1355 = load double, ptr %1354, align 8, !tbaa !9
  %1356 = fdiv double %1355, %1325
  %1357 = fmul double %1356, %1356
  %1358 = fneg double %1320
  %1359 = tail call double @llvm.fmuladd.f64(double %1358, double %1211, double %1327)
  %1360 = getelementptr double, ptr %2, i64 %.01379
  %1361 = load double, ptr %1360, align 8, !tbaa !9
  %1362 = getelementptr inbounds double, ptr %20, i64 %1088
  %1363 = load double, ptr %1362, align 8, !tbaa !9
  %1364 = fsub double %1361, %1363
  %1365 = fadd double %1361, %1363
  %1366 = fneg double %1364
  %1367 = fmul double %1365, %1366
  %1368 = tail call double @llvm.fmuladd.f64(double %1367, double %1357, double %1359)
  store double %1368, ptr %10, align 8, !tbaa !9
  %1369 = fcmp olt double %1209, %1357
  %1370 = fmul double %1320, %1320
  %1371 = fsub double %1209, %1357
  %1372 = fadd double %1210, %1371
  %storemerge1438.v = select i1 %1369, double %1210, double %1372
  %storemerge1438 = fmul double %storemerge1438.v, %1370
  store double %storemerge1438, ptr %13, align 16, !tbaa !9
  %1373 = fmul double %1355, %1355
  br label %1374

1374:                                             ; preds = %1347, %1349, %1353
  %.sink = phi double [ %1348, %1347 ], [ %1352, %1349 ], [ %1373, %1353 ]
  %1375 = getelementptr inbounds i8, ptr %13, i64 16
  store double %.sink, ptr %1375, align 16, !tbaa !9
  %1376 = fmul double %1202, %1202
  %1377 = getelementptr inbounds i8, ptr %13, i64 8
  store double %1376, ptr %1377, align 8, !tbaa !9
  store double %1320, ptr %12, align 16, !tbaa !9
  %1378 = getelementptr inbounds i8, ptr %12, i64 8
  store double %1207, ptr %1378, align 8, !tbaa !9
  %1379 = getelementptr inbounds i8, ptr %12, i64 16
  store double %1325, ptr %1379, align 16, !tbaa !9
  %1380 = call i32 @dlaed6_(ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %10, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %11, ptr noundef nonnull %14, ptr noundef nonnull %8) #6
  %1381 = load i64, ptr %8, align 8, !tbaa !5
  %.not1439 = icmp eq i64 %1381, 0
  br i1 %.not1439, label %._crit_edge1719, label %.loopexit1473

._crit_edge1719:                                  ; preds = %1374
  %.pre1720 = load double, ptr %11, align 8, !tbaa !9
  %.pre1721 = load double, ptr %14, align 8, !tbaa !9
  br label %1382

1382:                                             ; preds = %._crit_edge1719, %1289, %1304, %1293
  %1383 = phi double [ %.pre1721, %._crit_edge1719 ], [ %1290, %1289 ], [ %1314, %1304 ], [ %1303, %1293 ]
  %1384 = phi double [ %.pre1720, %._crit_edge1719 ], [ %1214, %1289 ], [ %1214, %1304 ], [ %1214, %1293 ]
  %1385 = fmul double %1384, %1383
  %1386 = fcmp ult double %1385, 0.000000e+00
  br i1 %1386, label %1390, label %1387

1387:                                             ; preds = %1382
  %1388 = fneg double %1384
  %1389 = fdiv double %1388, %1212
  store double %1389, ptr %14, align 8, !tbaa !9
  br label %1390

1390:                                             ; preds = %1387, %1382
  %1391 = phi double [ %1389, %1387 ], [ %1383, %1382 ]
  %1392 = load i64, ptr %16, align 8, !tbaa !5
  %.not1440 = icmp eq i64 %1392, 0
  br i1 %.not1440, label %1397, label %1393

1393:                                             ; preds = %1390
  %1394 = load i64, ptr %1, align 8, !tbaa !5
  %1395 = getelementptr inbounds double, ptr %17, i64 %1394
  %1396 = getelementptr inbounds double, ptr %18, i64 %1394
  br label %1397

1397:                                             ; preds = %1390, %1393
  %.sink1770 = phi ptr [ %1396, %1393 ], [ %883, %1390 ]
  %.sink1768.in = phi ptr [ %1395, %1393 ], [ %881, %1390 ]
  %.sink1768 = load double, ptr %.sink1768.in, align 8, !tbaa !9
  %1398 = load double, ptr %.sink1770, align 8, !tbaa !9
  %1399 = fmul double %.sink1768, %1398
  %.01339 = fsub double %1391, %1399
  %1400 = fcmp ogt double %.01339, %.11330
  %1401 = fcmp olt double %.01339, %.11335
  %or.cond = select i1 %1400, i1 true, i1 %1401
  br i1 %or.cond, label %1402, label %1410

1402:                                             ; preds = %1397
  %1403 = fcmp olt double %1384, 0.000000e+00
  br i1 %1403, label %1404, label %1407

1404:                                             ; preds = %1402
  %1405 = fsub double %.11330, %.413711731
  %1406 = fmul double %1405, 5.000000e-01
  store double %1406, ptr %14, align 8, !tbaa !9
  br label %1410

1407:                                             ; preds = %1402
  %1408 = fsub double %.11335, %.413711731
  %1409 = fmul double %1408, 5.000000e-01
  store double %1409, ptr %14, align 8, !tbaa !9
  br label %1410

1410:                                             ; preds = %1397, %1404, %1407
  %1411 = phi double [ %1391, %1397 ], [ %1406, %1404 ], [ %1409, %1407 ]
  %1412 = fadd double %.413711731, %1411
  %1413 = load double, ptr %6, align 8, !tbaa !9
  %1414 = call double @llvm.fmuladd.f64(double %1413, double %1413, double %1411)
  %1415 = call double @sqrt(double noundef %1414) #6
  %1416 = fadd double %1413, %1415
  %1417 = load double, ptr %14, align 8, !tbaa !9
  %1418 = fdiv double %1417, %1416
  store double %1418, ptr %14, align 8, !tbaa !9
  %1419 = load double, ptr %11, align 8, !tbaa !9
  %1420 = load double, ptr %6, align 8, !tbaa !9
  %1421 = fadd double %1418, %1420
  store double %1421, ptr %6, align 8, !tbaa !9
  %1422 = load i64, ptr %0, align 8, !tbaa !5
  %.not14411522 = icmp slt i64 %1422, 1
  br i1 %.not14411522, label %.preheader1474, label %.lr.ph1525.preheader

.lr.ph1525.preheader:                             ; preds = %1410
  %min.iters.check1927 = icmp ult i64 %1422, 4
  br i1 %min.iters.check1927, label %.lr.ph1525.preheader2130, label %vector.memcheck1919

.lr.ph1525.preheader2130:                         ; preds = %middle.block1925, %vector.memcheck1919, %.lr.ph1525.preheader
  %.151523.ph = phi i64 [ 1, %vector.memcheck1919 ], [ 1, %.lr.ph1525.preheader ], [ %ind.end1931, %middle.block1925 ]
  %xtraiter2158 = and i64 %1422, 1
  %lcmp.mod2159.not = icmp eq i64 %xtraiter2158, 0
  br i1 %lcmp.mod2159.not, label %.lr.ph1525.prol.loopexit, label %.lr.ph1525.prol

.lr.ph1525.prol:                                  ; preds = %.lr.ph1525.preheader2130
  %1423 = getelementptr inbounds double, ptr %17, i64 %.151523.ph
  %1424 = load double, ptr %1423, align 8, !tbaa !9
  %1425 = fadd double %1418, %1424
  store double %1425, ptr %1423, align 8, !tbaa !9
  %1426 = getelementptr inbounds double, ptr %18, i64 %.151523.ph
  %1427 = load double, ptr %1426, align 8, !tbaa !9
  %1428 = fsub double %1427, %1418
  store double %1428, ptr %1426, align 8, !tbaa !9
  %1429 = add nuw i64 %.151523.ph, 1
  br label %.lr.ph1525.prol.loopexit

.lr.ph1525.prol.loopexit:                         ; preds = %.lr.ph1525.prol, %.lr.ph1525.preheader2130
  %.151523.unr = phi i64 [ %.151523.ph, %.lr.ph1525.preheader2130 ], [ %1429, %.lr.ph1525.prol ]
  %1430 = icmp eq i64 %1422, %.151523.ph
  br i1 %1430, label %.preheader1474, label %.lr.ph1525

vector.memcheck1919:                              ; preds = %.lr.ph1525.preheader
  %1431 = shl i64 %1422, 3
  %scevgep1920 = getelementptr i8, ptr %7, i64 %1431
  %scevgep1921 = getelementptr i8, ptr %4, i64 %1431
  %bound01922 = icmp ugt ptr %scevgep1921, %7
  %bound11923 = icmp ugt ptr %scevgep1920, %4
  %found.conflict1924 = and i1 %bound01922, %bound11923
  br i1 %found.conflict1924, label %.lr.ph1525.preheader2130, label %vector.ph1928

vector.ph1928:                                    ; preds = %vector.memcheck1919
  %n.vec1930 = and i64 %1422, 9223372036854775804
  %ind.end1931 = or disjoint i64 %n.vec1930, 1
  %broadcast.splatinsert1938 = insertelement <2 x double> poison, double %1418, i64 0
  %broadcast.splat1939 = shufflevector <2 x double> %broadcast.splatinsert1938, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1933

vector.body1933:                                  ; preds = %vector.body1933, %vector.ph1928
  %index1934 = phi i64 [ 0, %vector.ph1928 ], [ %index.next1942, %vector.body1933 ]
  %1432 = getelementptr double, ptr %7, i64 %index1934
  %1433 = getelementptr inbounds i8, ptr %1432, i64 16
  %wide.load1936 = load <2 x double>, ptr %1432, align 8, !tbaa !9, !alias.scope !102, !noalias !105
  %wide.load1937 = load <2 x double>, ptr %1433, align 8, !tbaa !9, !alias.scope !102, !noalias !105
  %1434 = fadd <2 x double> %broadcast.splat1939, %wide.load1936
  %1435 = fadd <2 x double> %broadcast.splat1939, %wide.load1937
  store <2 x double> %1434, ptr %1432, align 8, !tbaa !9, !alias.scope !102, !noalias !105
  store <2 x double> %1435, ptr %1433, align 8, !tbaa !9, !alias.scope !102, !noalias !105
  %1436 = getelementptr double, ptr %4, i64 %index1934
  %1437 = getelementptr inbounds i8, ptr %1436, i64 16
  %wide.load1940 = load <2 x double>, ptr %1436, align 8, !tbaa !9, !alias.scope !105
  %wide.load1941 = load <2 x double>, ptr %1437, align 8, !tbaa !9, !alias.scope !105
  %1438 = fsub <2 x double> %wide.load1940, %broadcast.splat1939
  %1439 = fsub <2 x double> %wide.load1941, %broadcast.splat1939
  store <2 x double> %1438, ptr %1436, align 8, !tbaa !9, !alias.scope !105
  store <2 x double> %1439, ptr %1437, align 8, !tbaa !9, !alias.scope !105
  %index.next1942 = add nuw i64 %index1934, 4
  %1440 = icmp eq i64 %index.next1942, %n.vec1930
  br i1 %1440, label %middle.block1925, label %vector.body1933, !llvm.loop !107

middle.block1925:                                 ; preds = %vector.body1933
  %cmp.n1943 = icmp eq i64 %1422, %n.vec1930
  br i1 %cmp.n1943, label %.preheader1474, label %.lr.ph1525.preheader2130

.preheader1474:                                   ; preds = %.lr.ph1525.prol.loopexit, %.lr.ph1525, %middle.block1925, %1410
  br i1 %.not1430.not1500, label %.lr.ph1531.preheader, label %._crit_edge1532

.lr.ph1531.preheader:                             ; preds = %.preheader1474
  %1441 = add nsw i64 %.01379, -1
  %xtraiter2160 = and i64 %1441, 1
  %1442 = icmp eq i64 %.01379, 2
  br i1 %1442, label %._crit_edge1532.loopexit.unr-lcssa, label %.lr.ph1531.preheader.new

.lr.ph1531.preheader.new:                         ; preds = %.lr.ph1531.preheader
  %unroll_iter2166 = and i64 %1441, -2
  br label %.lr.ph1531

.lr.ph1525:                                       ; preds = %.lr.ph1525.prol.loopexit, %.lr.ph1525
  %.151523 = phi i64 [ %1456, %.lr.ph1525 ], [ %.151523.unr, %.lr.ph1525.prol.loopexit ]
  %1443 = getelementptr inbounds double, ptr %17, i64 %.151523
  %1444 = load double, ptr %1443, align 8, !tbaa !9
  %1445 = fadd double %1418, %1444
  store double %1445, ptr %1443, align 8, !tbaa !9
  %1446 = getelementptr inbounds double, ptr %18, i64 %.151523
  %1447 = load double, ptr %1446, align 8, !tbaa !9
  %1448 = fsub double %1447, %1418
  store double %1448, ptr %1446, align 8, !tbaa !9
  %1449 = add nuw i64 %.151523, 1
  %1450 = getelementptr double, ptr %7, i64 %.151523
  %1451 = load double, ptr %1450, align 8, !tbaa !9
  %1452 = fadd double %1418, %1451
  store double %1452, ptr %1450, align 8, !tbaa !9
  %1453 = getelementptr double, ptr %4, i64 %.151523
  %1454 = load double, ptr %1453, align 8, !tbaa !9
  %1455 = fsub double %1454, %1418
  store double %1455, ptr %1453, align 8, !tbaa !9
  %1456 = add nuw i64 %.151523, 2
  %exitcond1706.not.1 = icmp eq i64 %1449, %1422
  br i1 %exitcond1706.not.1, label %.preheader1474, label %.lr.ph1525, !llvm.loop !108

.lr.ph1531:                                       ; preds = %.lr.ph1531, %.lr.ph1531.preheader.new
  %.61530 = phi double [ 0.000000e+00, %.lr.ph1531.preheader.new ], [ %1485, %.lr.ph1531 ]
  %.161527 = phi i64 [ 1, %.lr.ph1531.preheader.new ], [ %1486, %.lr.ph1531 ]
  %1457 = phi <2 x double> [ zeroinitializer, %.lr.ph1531.preheader.new ], [ %1483, %.lr.ph1531 ]
  %niter2167 = phi i64 [ 0, %.lr.ph1531.preheader.new ], [ %niter2167.next.1, %.lr.ph1531 ]
  %1458 = getelementptr inbounds double, ptr %19, i64 %.161527
  %1459 = load double, ptr %1458, align 8, !tbaa !9
  %1460 = getelementptr inbounds double, ptr %17, i64 %.161527
  %1461 = load double, ptr %1460, align 8, !tbaa !9
  %1462 = getelementptr inbounds double, ptr %18, i64 %.161527
  %1463 = load double, ptr %1462, align 8, !tbaa !9
  %1464 = fmul double %1461, %1463
  %1465 = fdiv double %1459, %1464
  %1466 = insertelement <2 x double> poison, double %1465, i64 0
  %1467 = insertelement <2 x double> %1466, double %1459, i64 1
  %1468 = shufflevector <2 x double> %1466, <2 x double> poison, <2 x i32> zeroinitializer
  %1469 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1467, <2 x double> %1468, <2 x double> %1457)
  %1470 = extractelement <2 x double> %1469, i64 1
  %1471 = fadd double %.61530, %1470
  %1472 = getelementptr double, ptr %3, i64 %.161527
  %1473 = load double, ptr %1472, align 8, !tbaa !9
  %1474 = getelementptr double, ptr %7, i64 %.161527
  %1475 = load double, ptr %1474, align 8, !tbaa !9
  %1476 = getelementptr double, ptr %4, i64 %.161527
  %1477 = load double, ptr %1476, align 8, !tbaa !9
  %1478 = fmul double %1475, %1477
  %1479 = fdiv double %1473, %1478
  %1480 = insertelement <2 x double> poison, double %1479, i64 0
  %1481 = insertelement <2 x double> %1480, double %1473, i64 1
  %1482 = shufflevector <2 x double> %1480, <2 x double> poison, <2 x i32> zeroinitializer
  %1483 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1481, <2 x double> %1482, <2 x double> %1469)
  %1484 = extractelement <2 x double> %1483, i64 1
  %1485 = fadd double %1471, %1484
  %1486 = add nuw nsw i64 %.161527, 2
  %niter2167.next.1 = add i64 %niter2167, 2
  %niter2167.ncmp.1 = icmp eq i64 %niter2167.next.1, %unroll_iter2166
  br i1 %niter2167.ncmp.1, label %._crit_edge1532.loopexit.unr-lcssa.loopexit, label %.lr.ph1531, !llvm.loop !109

._crit_edge1532.loopexit.unr-lcssa.loopexit:      ; preds = %.lr.ph1531
  %1487 = extractelement <2 x double> %1483, i64 0
  br label %._crit_edge1532.loopexit.unr-lcssa

._crit_edge1532.loopexit.unr-lcssa:               ; preds = %._crit_edge1532.loopexit.unr-lcssa.loopexit, %.lr.ph1531.preheader
  %.lcssa2129.ph = phi double [ poison, %.lr.ph1531.preheader ], [ %1484, %._crit_edge1532.loopexit.unr-lcssa.loopexit ]
  %.lcssa2128.ph = phi double [ poison, %.lr.ph1531.preheader ], [ %1485, %._crit_edge1532.loopexit.unr-lcssa.loopexit ]
  %.lcssa2127.ph = phi double [ poison, %.lr.ph1531.preheader ], [ %1487, %._crit_edge1532.loopexit.unr-lcssa.loopexit ]
  %.61530.unr = phi double [ 0.000000e+00, %.lr.ph1531.preheader ], [ %1485, %._crit_edge1532.loopexit.unr-lcssa.loopexit ]
  %.161527.unr = phi i64 [ 1, %.lr.ph1531.preheader ], [ %1486, %._crit_edge1532.loopexit.unr-lcssa.loopexit ]
  %.unr2161 = phi <2 x double> [ zeroinitializer, %.lr.ph1531.preheader ], [ %1483, %._crit_edge1532.loopexit.unr-lcssa.loopexit ]
  %lcmp.mod2162.not = icmp eq i64 %xtraiter2160, 0
  br i1 %lcmp.mod2162.not, label %._crit_edge1532, label %.lr.ph1531.epil

.lr.ph1531.epil:                                  ; preds = %._crit_edge1532.loopexit.unr-lcssa
  %1488 = getelementptr inbounds double, ptr %19, i64 %.161527.unr
  %1489 = load double, ptr %1488, align 8, !tbaa !9
  %1490 = getelementptr inbounds double, ptr %17, i64 %.161527.unr
  %1491 = load double, ptr %1490, align 8, !tbaa !9
  %1492 = getelementptr inbounds double, ptr %18, i64 %.161527.unr
  %1493 = load double, ptr %1492, align 8, !tbaa !9
  %1494 = fmul double %1491, %1493
  %1495 = fdiv double %1489, %1494
  %1496 = insertelement <2 x double> poison, double %1495, i64 0
  %1497 = insertelement <2 x double> %1496, double %1489, i64 1
  %1498 = shufflevector <2 x double> %1496, <2 x double> poison, <2 x i32> zeroinitializer
  %1499 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1497, <2 x double> %1498, <2 x double> %.unr2161)
  %1500 = extractelement <2 x double> %1499, i64 1
  %1501 = fadd double %.61530.unr, %1500
  %1502 = extractelement <2 x double> %1499, i64 0
  br label %._crit_edge1532

._crit_edge1532:                                  ; preds = %.lr.ph1531.epil, %._crit_edge1532.loopexit.unr-lcssa, %.preheader1474
  %.61364.lcssa = phi double [ 0.000000e+00, %.preheader1474 ], [ %.lcssa2129.ph, %._crit_edge1532.loopexit.unr-lcssa ], [ %1500, %.lr.ph1531.epil ]
  %.51346.lcssa = phi double [ 0.000000e+00, %.preheader1474 ], [ %.lcssa2127.ph, %._crit_edge1532.loopexit.unr-lcssa ], [ %1502, %.lr.ph1531.epil ]
  %.6.lcssa = phi double [ 0.000000e+00, %.preheader1474 ], [ %.lcssa2128.ph, %._crit_edge1532.loopexit.unr-lcssa ], [ %1501, %.lr.ph1531.epil ]
  %1503 = fcmp oge double %.6.lcssa, 0.000000e+00
  %1504 = fneg double %.6.lcssa
  %1505 = select i1 %1503, double %.6.lcssa, double %1504
  %.not1443.not1536 = icmp sgt i64 %1422, %.01379
  br i1 %.not1443.not1536, label %.lr.ph1542.preheader, label %._crit_edge1543

.lr.ph1542.preheader:                             ; preds = %._crit_edge1532
  %1506 = sub i64 %1422, %.01379
  %.neg2218 = add i64 %.01379, 1
  %xtraiter2168 = and i64 %1506, 1
  %lcmp.mod2169.not = icmp eq i64 %xtraiter2168, 0
  br i1 %lcmp.mod2169.not, label %.lr.ph1542.prol.loopexit, label %.lr.ph1542.prol

.lr.ph1542.prol:                                  ; preds = %.lr.ph1542.preheader
  %1507 = getelementptr inbounds double, ptr %19, i64 %1422
  %1508 = load double, ptr %1507, align 8, !tbaa !9
  %1509 = getelementptr inbounds double, ptr %17, i64 %1422
  %1510 = load double, ptr %1509, align 8, !tbaa !9
  %1511 = getelementptr inbounds double, ptr %18, i64 %1422
  %1512 = load double, ptr %1511, align 8, !tbaa !9
  %1513 = fmul double %1510, %1512
  %1514 = fdiv double %1508, %1513
  %1515 = insertelement <2 x double> poison, double %1514, i64 0
  %1516 = insertelement <2 x double> %1515, double %1508, i64 1
  %1517 = shufflevector <2 x double> %1515, <2 x double> poison, <2 x i32> zeroinitializer
  %1518 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1516, <2 x double> %1517, <2 x double> zeroinitializer)
  %1519 = extractelement <2 x double> %1518, i64 1
  %1520 = fadd double %1505, %1519
  %1521 = add nsw i64 %1422, -1
  %1522 = extractelement <2 x double> %1518, i64 0
  br label %.lr.ph1542.prol.loopexit

.lr.ph1542.prol.loopexit:                         ; preds = %.lr.ph1542.prol, %.lr.ph1542.preheader
  %.71540.unr = phi double [ %1505, %.lr.ph1542.preheader ], [ %1520, %.lr.ph1542.prol ]
  %.171537.unr = phi i64 [ %1422, %.lr.ph1542.preheader ], [ %1521, %.lr.ph1542.prol ]
  %.unr2170 = phi <2 x double> [ zeroinitializer, %.lr.ph1542.preheader ], [ %1518, %.lr.ph1542.prol ]
  %.lcssa2126.unr = phi double [ poison, %.lr.ph1542.preheader ], [ %1519, %.lr.ph1542.prol ]
  %.lcssa2125.unr = phi double [ poison, %.lr.ph1542.preheader ], [ %1520, %.lr.ph1542.prol ]
  %.lcssa2124.unr = phi double [ poison, %.lr.ph1542.preheader ], [ %1522, %.lr.ph1542.prol ]
  %1523 = icmp eq i64 %1422, %.neg2218
  br i1 %1523, label %._crit_edge1543, label %.lr.ph1542

.lr.ph1542:                                       ; preds = %.lr.ph1542.prol.loopexit, %.lr.ph1542
  %.71540 = phi double [ %1553, %.lr.ph1542 ], [ %.71540.unr, %.lr.ph1542.prol.loopexit ]
  %.171537 = phi i64 [ %1554, %.lr.ph1542 ], [ %.171537.unr, %.lr.ph1542.prol.loopexit ]
  %1524 = phi <2 x double> [ %1551, %.lr.ph1542 ], [ %.unr2170, %.lr.ph1542.prol.loopexit ]
  %1525 = getelementptr inbounds double, ptr %19, i64 %.171537
  %1526 = load double, ptr %1525, align 8, !tbaa !9
  %1527 = getelementptr inbounds double, ptr %17, i64 %.171537
  %1528 = load double, ptr %1527, align 8, !tbaa !9
  %1529 = getelementptr inbounds double, ptr %18, i64 %.171537
  %1530 = load double, ptr %1529, align 8, !tbaa !9
  %1531 = fmul double %1528, %1530
  %1532 = fdiv double %1526, %1531
  %1533 = insertelement <2 x double> poison, double %1532, i64 0
  %1534 = insertelement <2 x double> %1533, double %1526, i64 1
  %1535 = shufflevector <2 x double> %1533, <2 x double> poison, <2 x i32> zeroinitializer
  %1536 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1534, <2 x double> %1535, <2 x double> %1524)
  %1537 = extractelement <2 x double> %1536, i64 1
  %1538 = fadd double %.71540, %1537
  %1539 = add nsw i64 %.171537, -1
  %1540 = getelementptr inbounds double, ptr %19, i64 %1539
  %1541 = load double, ptr %1540, align 8, !tbaa !9
  %1542 = getelementptr inbounds double, ptr %17, i64 %1539
  %1543 = load double, ptr %1542, align 8, !tbaa !9
  %1544 = getelementptr inbounds double, ptr %18, i64 %1539
  %1545 = load double, ptr %1544, align 8, !tbaa !9
  %1546 = fmul double %1543, %1545
  %1547 = fdiv double %1541, %1546
  %1548 = insertelement <2 x double> poison, double %1547, i64 0
  %1549 = insertelement <2 x double> %1548, double %1541, i64 1
  %1550 = shufflevector <2 x double> %1548, <2 x double> poison, <2 x i32> zeroinitializer
  %1551 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1549, <2 x double> %1550, <2 x double> %1536)
  %1552 = extractelement <2 x double> %1551, i64 1
  %1553 = fadd double %1538, %1552
  %1554 = add nsw i64 %.171537, -2
  %.not1443.not.1 = icmp sgt i64 %1554, %.01379
  br i1 %.not1443.not.1, label %.lr.ph1542, label %._crit_edge1543.loopexit.unr-lcssa, !llvm.loop !110

._crit_edge1543.loopexit.unr-lcssa:               ; preds = %.lr.ph1542
  %1555 = extractelement <2 x double> %1551, i64 0
  br label %._crit_edge1543

._crit_edge1543:                                  ; preds = %._crit_edge1543.loopexit.unr-lcssa, %.lr.ph1542.prol.loopexit, %._crit_edge1532
  %.21375.lcssa = phi double [ 0.000000e+00, %._crit_edge1532 ], [ %.lcssa2126.unr, %.lr.ph1542.prol.loopexit ], [ %1552, %._crit_edge1543.loopexit.unr-lcssa ]
  %.21353.lcssa = phi double [ 0.000000e+00, %._crit_edge1532 ], [ %.lcssa2124.unr, %.lr.ph1542.prol.loopexit ], [ %1555, %._crit_edge1543.loopexit.unr-lcssa ]
  %.7.lcssa = phi double [ %1505, %._crit_edge1532 ], [ %.lcssa2125.unr, %.lr.ph1542.prol.loopexit ], [ %1553, %._crit_edge1543.loopexit.unr-lcssa ]
  %1556 = load double, ptr %1201, align 8, !tbaa !9
  %1557 = load double, ptr %1203, align 8, !tbaa !9
  %1558 = load double, ptr %1205, align 8, !tbaa !9
  %1559 = fmul double %1557, %1558
  %1560 = fdiv double %1556, %1559
  %1561 = fadd double %.51346.lcssa, %.21353.lcssa
  %1562 = call double @llvm.fmuladd.f64(double %1560, double %1560, double %1561)
  %1563 = fmul double %1556, %1560
  %1564 = fadd double %35, %.21375.lcssa
  %1565 = fadd double %.61364.lcssa, %1564
  %1566 = fadd double %1565, %1563
  store double %1566, ptr %11, align 8, !tbaa !9
  %1567 = fsub double %.21375.lcssa, %.61364.lcssa
  %1568 = call double @llvm.fmuladd.f64(double %1567, double 8.000000e+00, double %.7.lcssa)
  %1569 = call double @llvm.fmuladd.f64(double %35, double 2.000000e+00, double %1568)
  %1570 = fcmp oge double %1563, 0.000000e+00
  %1571 = fneg double %1563
  %1572 = select i1 %1570, double %1563, double %1571
  %1573 = call double @llvm.fmuladd.f64(double %1572, double 3.000000e+00, double %1569)
  %1574 = fcmp oge double %1412, 0.000000e+00
  %1575 = fneg double %1412
  %1576 = select i1 %1574, double %1412, double %1575
  %1577 = call double @llvm.fmuladd.f64(double %1576, double %1562, double %1573)
  %1578 = fcmp ugt double %1566, 0.000000e+00
  br i1 %1578, label %1582, label %1579

1579:                                             ; preds = %._crit_edge1543
  %1580 = fcmp oge double %.11335, %1412
  %1581 = select i1 %1580, double %.11335, double %1412
  br label %1585

1582:                                             ; preds = %._crit_edge1543
  %1583 = fcmp ole double %.11330, %1412
  %1584 = select i1 %1583, double %.11330, double %1412
  br label %1585

1585:                                             ; preds = %1582, %1579
  %.21336 = phi double [ %1581, %1579 ], [ %.11335, %1582 ]
  %.21331 = phi double [ %.11330, %1579 ], [ %1584, %1582 ]
  %1586 = load i64, ptr %16, align 8, !tbaa !5
  %.not1444 = icmp eq i64 %1586, 0
  br i1 %.not1444, label %1595, label %1587

1587:                                             ; preds = %1585
  %1588 = fneg double %1566
  %1589 = fcmp oge double %1419, 0.000000e+00
  %1590 = fneg double %1419
  %1591 = select i1 %1589, double %1419, double %1590
  %1592 = fdiv double %1591, 1.000000e+01
  %1593 = fcmp olt double %1592, %1588
  br i1 %1593, label %1594, label %1602

1594:                                             ; preds = %1587
  br label %1602

1595:                                             ; preds = %1585
  %1596 = fcmp oge double %1419, 0.000000e+00
  %1597 = fneg double %1419
  %1598 = select i1 %1596, double %1419, double %1597
  %1599 = fdiv double %1598, 1.000000e+01
  %1600 = fcmp ogt double %1566, %1599
  br i1 %1600, label %1601, label %1602

1601:                                             ; preds = %1595
  br label %1602

1602:                                             ; preds = %1595, %1601, %1587, %1594
  %.01326 = phi i64 [ 1, %1594 ], [ 0, %1587 ], [ 1, %1601 ], [ 0, %1595 ]
  %storemerge1445.in1574 = load i64, ptr %15, align 8, !tbaa !5
  %storemerge14451575 = add nsw i64 %storemerge1445.in1574, 1
  store i64 %storemerge14451575, ptr %15, align 8, !tbaa !5
  %1603 = icmp slt i64 %storemerge1445.in1574, 20
  br i1 %1603, label %.lr.ph1587, label %._crit_edge1588

.lr.ph1587:                                       ; preds = %1602
  %1604 = getelementptr inbounds double, ptr %17, i64 %1088
  %1605 = getelementptr inbounds double, ptr %18, i64 %1088
  %1606 = getelementptr double, ptr %7, i64 %.01379
  %1607 = getelementptr double, ptr %4, i64 %.01379
  %1608 = getelementptr inbounds i8, ptr %13, i64 16
  %1609 = getelementptr inbounds double, ptr %19, i64 %1088
  %1610 = getelementptr inbounds double, ptr %20, i64 %1088
  %1611 = getelementptr double, ptr %2, i64 %.01379
  %1612 = getelementptr double, ptr %3, i64 %.01379
  %1613 = getelementptr inbounds i8, ptr %12, i64 8
  %1614 = getelementptr inbounds i8, ptr %12, i64 16
  %1615 = fneg double %743
  %1616 = add i64 %.01379, -1
  %.neg2219 = add i64 %.01379, 1
  %xtraiter2173 = and i64 %1616, 1
  %1617 = icmp eq i64 %.01379, 2
  %unroll_iter2179 = and i64 %1616, -2
  %lcmp.mod2175.not = icmp eq i64 %xtraiter2173, 0
  br label %1618

1618:                                             ; preds = %.lr.ph1587, %2005
  %1619 = phi double [ %1556, %.lr.ph1587 ], [ %1962, %2005 ]
  %1620 = phi double [ %1557, %.lr.ph1587 ], [ %1963, %2005 ]
  %1621 = phi double [ %1558, %.lr.ph1587 ], [ %1964, %2005 ]
  %1622 = phi double [ %1566, %.lr.ph1587 ], [ %1972, %2005 ]
  %.81585 = phi double [ %1577, %.lr.ph1587 ], [ %1983, %2005 ]
  %.113271584 = phi i64 [ %.01326, %.lr.ph1587 ], [ %.21328, %2005 ]
  %.313321583 = phi double [ %.21331, %.lr.ph1587 ], [ %.41333, %2005 ]
  %.313371582 = phi double [ %.21336, %.lr.ph1587 ], [ %.41338, %2005 ]
  %.613471581 = phi double [ %.51346.lcssa, %.lr.ph1587 ], [ %.91350.lcssa, %2005 ]
  %.313541580 = phi double [ %.21353.lcssa, %.lr.ph1587 ], [ %.61357.lcssa, %2005 ]
  %.713651579 = phi double [ %.61364.lcssa, %.lr.ph1587 ], [ %.81366.lcssa, %2005 ]
  %.513721578 = phi double [ %1412, %.lr.ph1587 ], [ %1820, %2005 ]
  %.313761577 = phi double [ %.21375.lcssa, %.lr.ph1587 ], [ %.41377.lcssa, %2005 ]
  %.013781576 = phi double [ %1562, %.lr.ph1587 ], [ %1968, %2005 ]
  %1623 = fcmp oge double %1622, 0.000000e+00
  %1624 = fneg double %1622
  %1625 = select i1 %1623, double %1622, double %1624
  %1626 = fmul double %33, %.81585
  %1627 = fcmp ugt double %1625, %1626
  br i1 %1627, label %1628, label %.loopexit1473

1628:                                             ; preds = %1618
  br i1 %.not1433, label %1629, label %1725

1629:                                             ; preds = %1628
  %1630 = load double, ptr %881, align 8, !tbaa !9
  %1631 = load double, ptr %883, align 8, !tbaa !9
  %1632 = fmul double %1630, %1631
  %1633 = load i64, ptr %1, align 8, !tbaa !5
  %1634 = getelementptr inbounds double, ptr %17, i64 %1633
  %1635 = load double, ptr %1634, align 8, !tbaa !9
  %1636 = getelementptr inbounds double, ptr %18, i64 %1633
  %1637 = load double, ptr %1636, align 8, !tbaa !9
  %1638 = fmul double %1635, %1637
  %.not1446 = icmp eq i64 %.113271584, 0
  br i1 %.not1446, label %1639, label %1656

1639:                                             ; preds = %1629
  %1640 = load i64, ptr %16, align 8, !tbaa !5
  %.not1447 = icmp eq i64 %1640, 0
  br i1 %.not1447, label %1649, label %1641

1641:                                             ; preds = %1639
  %1642 = getelementptr inbounds double, ptr %19, i64 %1633
  %1643 = load double, ptr %1642, align 8, !tbaa !9
  %1644 = fdiv double %1643, %1638
  %1645 = fneg double %1632
  %1646 = call double @llvm.fmuladd.f64(double %1645, double %.013781576, double %1622)
  %1647 = fmul double %1644, %1644
  %1648 = call double @llvm.fmuladd.f64(double %743, double %1647, double %1646)
  store double %1648, ptr %10, align 8, !tbaa !9
  br label %1666

1649:                                             ; preds = %1639
  %1650 = load double, ptr %879, align 8, !tbaa !9
  %1651 = fdiv double %1650, %1632
  %1652 = fneg double %1638
  %1653 = call double @llvm.fmuladd.f64(double %1652, double %.013781576, double %1622)
  %1654 = fmul double %1651, %1651
  %1655 = call double @llvm.fmuladd.f64(double %1615, double %1654, double %1653)
  store double %1655, ptr %10, align 8, !tbaa !9
  br label %1666

1656:                                             ; preds = %1629
  %1657 = fmul double %1620, %1621
  %1658 = fdiv double %1619, %1657
  %1659 = load i64, ptr %16, align 8, !tbaa !5
  %.not1448 = icmp eq i64 %1659, 0
  %1660 = call double @llvm.fmuladd.f64(double %1658, double %1658, double %.613471581)
  %1661 = call double @llvm.fmuladd.f64(double %1658, double %1658, double %.313541580)
  %.41355 = select i1 %.not1448, double %1661, double %.313541580
  %.71348 = select i1 %.not1448, double %.613471581, double %1660
  %1662 = fneg double %1638
  %1663 = call double @llvm.fmuladd.f64(double %1662, double %.71348, double %1622)
  %1664 = fneg double %1632
  %1665 = call double @llvm.fmuladd.f64(double %1664, double %.41355, double %1663)
  store double %1665, ptr %10, align 8, !tbaa !9
  br label %1666

1666:                                             ; preds = %1641, %1649, %1656
  %1667 = phi i64 [ %1659, %1656 ], [ 1, %1641 ], [ 0, %1649 ]
  %1668 = phi double [ %1665, %1656 ], [ %1648, %1641 ], [ %1655, %1649 ]
  %.51356 = phi double [ %.41355, %1656 ], [ %.313541580, %1641 ], [ %.313541580, %1649 ]
  %.81349 = phi double [ %.71348, %1656 ], [ %.613471581, %1641 ], [ %.613471581, %1649 ]
  %1669 = fadd double %1632, %1638
  %1670 = fmul double %1632, %1638
  %1671 = fneg double %1670
  %1672 = fmul double %.013781576, %1671
  %1673 = call double @llvm.fmuladd.f64(double %1669, double %1622, double %1672)
  %1674 = fmul double %1622, %1670
  %1675 = fcmp oeq double %1668, 0.000000e+00
  br i1 %1675, label %1676, label %1700

1676:                                             ; preds = %1666
  %1677 = fcmp oeq double %1673, 0.000000e+00
  br i1 %1677, label %1678, label %1698

1678:                                             ; preds = %1676
  br i1 %.not1446, label %1679, label %1693

1679:                                             ; preds = %1678
  %.not1449 = icmp eq i64 %1667, 0
  br i1 %.not1449, label %1687, label %1680

1680:                                             ; preds = %1679
  %1681 = getelementptr inbounds double, ptr %19, i64 %1633
  %1682 = load double, ptr %1681, align 8, !tbaa !9
  %1683 = fmul double %1632, %1632
  %1684 = fadd double %.51356, %.81349
  %1685 = fmul double %1683, %1684
  %1686 = call double @llvm.fmuladd.f64(double %1682, double %1682, double %1685)
  br label %1698

1687:                                             ; preds = %1679
  %1688 = load double, ptr %879, align 8, !tbaa !9
  %1689 = fmul double %1638, %1638
  %1690 = fadd double %.51356, %.81349
  %1691 = fmul double %1689, %1690
  %1692 = call double @llvm.fmuladd.f64(double %1688, double %1688, double %1691)
  br label %1698

1693:                                             ; preds = %1678
  %1694 = fmul double %1638, %1638
  %1695 = fmul double %1632, %1632
  %1696 = fmul double %1695, %.51356
  %1697 = call double @llvm.fmuladd.f64(double %1694, double %.81349, double %1696)
  br label %1698

1698:                                             ; preds = %1693, %1687, %1680, %1676
  %.11392 = phi double [ %1697, %1693 ], [ %1686, %1680 ], [ %1692, %1687 ], [ %1673, %1676 ]
  %1699 = fdiv double %1674, %.11392
  store double %1699, ptr %14, align 8, !tbaa !9
  br label %1790

1700:                                             ; preds = %1666
  %1701 = fcmp ugt double %1673, 0.000000e+00
  br i1 %1701, label %1714, label %1702

1702:                                             ; preds = %1700
  %1703 = fmul double %1674, -4.000000e+00
  %1704 = fmul double %1703, %1668
  %1705 = call double @llvm.fmuladd.f64(double %1673, double %1673, double %1704)
  %1706 = fcmp oge double %1705, 0.000000e+00
  %1707 = fneg double %1705
  %1708 = select i1 %1706, double %1705, double %1707
  %1709 = call double @sqrt(double noundef %1708) #6
  %1710 = fsub double %1673, %1709
  %1711 = load double, ptr %10, align 8, !tbaa !9
  %1712 = fmul double %1711, 2.000000e+00
  %1713 = fdiv double %1710, %1712
  store double %1713, ptr %14, align 8, !tbaa !9
  br label %1790

1714:                                             ; preds = %1700
  %1715 = fmul double %1674, 2.000000e+00
  %1716 = fmul double %1674, -4.000000e+00
  %1717 = fmul double %1716, %1668
  %1718 = call double @llvm.fmuladd.f64(double %1673, double %1673, double %1717)
  %1719 = fcmp oge double %1718, 0.000000e+00
  %1720 = fneg double %1718
  %1721 = select i1 %1719, double %1718, double %1720
  %1722 = call double @sqrt(double noundef %1721) #6
  %1723 = fadd double %1673, %1722
  %1724 = fdiv double %1715, %1723
  store double %1724, ptr %14, align 8, !tbaa !9
  br label %1790

1725:                                             ; preds = %1628
  %1726 = load double, ptr %1604, align 8, !tbaa !9
  %1727 = load double, ptr %1605, align 8, !tbaa !9
  %1728 = fmul double %1726, %1727
  %1729 = load double, ptr %1606, align 8, !tbaa !9
  %1730 = load double, ptr %1607, align 8, !tbaa !9
  %1731 = fmul double %1729, %1730
  %1732 = fadd double %35, %.713651579
  %1733 = fadd double %.313761577, %1732
  %.not1450 = icmp eq i64 %.113271584, 0
  br i1 %.not1450, label %1743, label %1734

1734:                                             ; preds = %1725
  %1735 = fneg double %1728
  %1736 = call double @llvm.fmuladd.f64(double %1735, double %.613471581, double %1733)
  %1737 = fneg double %1731
  %1738 = call double @llvm.fmuladd.f64(double %1737, double %.313541580, double %1736)
  store double %1738, ptr %10, align 8, !tbaa !9
  %1739 = fmul double %1728, %1728
  %1740 = fmul double %.613471581, %1739
  store double %1740, ptr %13, align 16, !tbaa !9
  %1741 = fmul double %1731, %1731
  %1742 = fmul double %.313541580, %1741
  br label %1786

1743:                                             ; preds = %1725
  %1744 = load i64, ptr %16, align 8, !tbaa !5
  %.not1451 = icmp eq i64 %1744, 0
  %1745 = fadd double %.313541580, %.613471581
  br i1 %.not1451, label %1768, label %1746

1746:                                             ; preds = %1743
  %1747 = load double, ptr %1609, align 8, !tbaa !9
  %1748 = fdiv double %1747, %1728
  %1749 = fmul double %1748, %1748
  %1750 = load double, ptr %1610, align 8, !tbaa !9
  %1751 = load double, ptr %1611, align 8, !tbaa !9
  %1752 = fsub double %1750, %1751
  %1753 = fadd double %1750, %1751
  %1754 = fmul double %1752, %1753
  %1755 = fmul double %1749, %1754
  %1756 = fneg double %1731
  %1757 = call double @llvm.fmuladd.f64(double %1756, double %1745, double %1733)
  %1758 = fsub double %1757, %1755
  store double %1758, ptr %10, align 8, !tbaa !9
  %1759 = fmul double %1747, %1747
  store double %1759, ptr %13, align 16, !tbaa !9
  %1760 = fcmp olt double %.613471581, %1749
  %1761 = fmul double %1731, %1731
  br i1 %1760, label %1762, label %1764

1762:                                             ; preds = %1746
  %1763 = fmul double %.313541580, %1761
  br label %1786

1764:                                             ; preds = %1746
  %1765 = fsub double %.613471581, %1749
  %1766 = fadd double %.313541580, %1765
  %1767 = fmul double %1761, %1766
  br label %1786

1768:                                             ; preds = %1743
  %1769 = load double, ptr %1612, align 8, !tbaa !9
  %1770 = fdiv double %1769, %1731
  %1771 = fmul double %1770, %1770
  %1772 = load double, ptr %1611, align 8, !tbaa !9
  %1773 = load double, ptr %1610, align 8, !tbaa !9
  %1774 = fsub double %1772, %1773
  %1775 = fadd double %1772, %1773
  %1776 = fmul double %1774, %1775
  %1777 = fmul double %1771, %1776
  %1778 = fneg double %1728
  %1779 = call double @llvm.fmuladd.f64(double %1778, double %1745, double %1733)
  %1780 = fsub double %1779, %1777
  store double %1780, ptr %10, align 8, !tbaa !9
  %1781 = fcmp olt double %.313541580, %1771
  %1782 = fmul double %1728, %1728
  %1783 = fsub double %.313541580, %1771
  %1784 = fadd double %.613471581, %1783
  %storemerge1452.v = select i1 %1781, double %.613471581, double %1784
  %storemerge1452 = fmul double %storemerge1452.v, %1782
  store double %storemerge1452, ptr %13, align 16, !tbaa !9
  %1785 = fmul double %1769, %1769
  br label %1786

1786:                                             ; preds = %1768, %1764, %1762, %1734
  %.sink1771 = phi double [ %1785, %1768 ], [ %1767, %1764 ], [ %1763, %1762 ], [ %1742, %1734 ]
  store double %.sink1771, ptr %1608, align 16, !tbaa !9
  store double %1728, ptr %12, align 16, !tbaa !9
  %1787 = fmul double %1621, %1620
  store double %1787, ptr %1613, align 8, !tbaa !9
  store double %1731, ptr %1614, align 16, !tbaa !9
  %1788 = call i32 @dlaed6_(ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %10, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %11, ptr noundef nonnull %14, ptr noundef nonnull %8) #6
  %1789 = load i64, ptr %8, align 8, !tbaa !5
  %.not1453 = icmp eq i64 %1789, 0
  br i1 %.not1453, label %._crit_edge1722, label %.loopexit1473

._crit_edge1722:                                  ; preds = %1786
  %.pre1723 = load double, ptr %14, align 8, !tbaa !9
  br label %1790

1790:                                             ; preds = %._crit_edge1722, %1698, %1714, %1702
  %1791 = phi double [ %.pre1723, %._crit_edge1722 ], [ %1699, %1698 ], [ %1724, %1714 ], [ %1713, %1702 ]
  %1792 = load double, ptr %11, align 8, !tbaa !9
  %1793 = fmul double %1792, %1791
  %1794 = fcmp ult double %1793, 0.000000e+00
  br i1 %1794, label %1798, label %1795

1795:                                             ; preds = %1790
  %1796 = fneg double %1792
  %1797 = fdiv double %1796, %.013781576
  store double %1797, ptr %14, align 8, !tbaa !9
  br label %1798

1798:                                             ; preds = %1795, %1790
  %1799 = phi double [ %1797, %1795 ], [ %1791, %1790 ]
  %1800 = load i64, ptr %16, align 8, !tbaa !5
  %.not1454 = icmp eq i64 %1800, 0
  br i1 %.not1454, label %1805, label %1801

1801:                                             ; preds = %1798
  %1802 = load i64, ptr %1, align 8, !tbaa !5
  %1803 = getelementptr inbounds double, ptr %17, i64 %1802
  %1804 = getelementptr inbounds double, ptr %18, i64 %1802
  br label %1805

1805:                                             ; preds = %1798, %1801
  %.sink1774 = phi ptr [ %1804, %1801 ], [ %883, %1798 ]
  %.sink1772.in = phi ptr [ %1803, %1801 ], [ %881, %1798 ]
  %.sink1772 = load double, ptr %.sink1772.in, align 8, !tbaa !9
  %1806 = load double, ptr %.sink1774, align 8, !tbaa !9
  %1807 = fmul double %.sink1772, %1806
  %.11340 = fsub double %1799, %1807
  %1808 = fcmp ogt double %.11340, %.313321583
  %1809 = fcmp olt double %.11340, %.313371582
  %or.cond1470 = select i1 %1808, i1 true, i1 %1809
  br i1 %or.cond1470, label %1810, label %1818

1810:                                             ; preds = %1805
  %1811 = fcmp olt double %1792, 0.000000e+00
  br i1 %1811, label %1812, label %1815

1812:                                             ; preds = %1810
  %1813 = fsub double %.313321583, %.513721578
  %1814 = fmul double %1813, 5.000000e-01
  store double %1814, ptr %14, align 8, !tbaa !9
  br label %1818

1815:                                             ; preds = %1810
  %1816 = fsub double %.313371582, %.513721578
  %1817 = fmul double %1816, 5.000000e-01
  store double %1817, ptr %14, align 8, !tbaa !9
  br label %1818

1818:                                             ; preds = %1805, %1812, %1815
  %1819 = phi double [ %1799, %1805 ], [ %1814, %1812 ], [ %1817, %1815 ]
  %1820 = fadd double %.513721578, %1819
  %1821 = load double, ptr %6, align 8, !tbaa !9
  %1822 = call double @llvm.fmuladd.f64(double %1821, double %1821, double %1819)
  %1823 = call double @sqrt(double noundef %1822) #6
  %1824 = fadd double %1821, %1823
  %1825 = load double, ptr %14, align 8, !tbaa !9
  %1826 = fdiv double %1825, %1824
  store double %1826, ptr %14, align 8, !tbaa !9
  %1827 = load double, ptr %6, align 8, !tbaa !9
  %1828 = fadd double %1826, %1827
  store double %1828, ptr %6, align 8, !tbaa !9
  %1829 = load i64, ptr %0, align 8, !tbaa !5
  %.not14551547 = icmp slt i64 %1829, 1
  br i1 %.not14551547, label %._crit_edge1551, label %.lr.ph1550.preheader

.lr.ph1550.preheader:                             ; preds = %1818
  %min.iters.check1952 = icmp ult i64 %1829, 4
  br i1 %min.iters.check1952, label %.lr.ph1550.preheader2116, label %vector.memcheck1944

vector.memcheck1944:                              ; preds = %.lr.ph1550.preheader
  %1830 = shl i64 %1829, 3
  %scevgep1945 = getelementptr i8, ptr %7, i64 %1830
  %scevgep1946 = getelementptr i8, ptr %4, i64 %1830
  %bound01947 = icmp ugt ptr %scevgep1946, %7
  %bound11948 = icmp ugt ptr %scevgep1945, %4
  %found.conflict1949 = and i1 %bound01947, %bound11948
  br i1 %found.conflict1949, label %.lr.ph1550.preheader2116, label %vector.ph1953

vector.ph1953:                                    ; preds = %vector.memcheck1944
  %n.vec1955 = and i64 %1829, 9223372036854775804
  %ind.end1956 = or disjoint i64 %n.vec1955, 1
  %broadcast.splatinsert1963 = insertelement <2 x double> poison, double %1826, i64 0
  %broadcast.splat1964 = shufflevector <2 x double> %broadcast.splatinsert1963, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1958

vector.body1958:                                  ; preds = %vector.body1958, %vector.ph1953
  %index1959 = phi i64 [ 0, %vector.ph1953 ], [ %index.next1967, %vector.body1958 ]
  %1831 = getelementptr double, ptr %7, i64 %index1959
  %1832 = getelementptr inbounds i8, ptr %1831, i64 16
  %wide.load1961 = load <2 x double>, ptr %1831, align 8, !tbaa !9, !alias.scope !111, !noalias !114
  %wide.load1962 = load <2 x double>, ptr %1832, align 8, !tbaa !9, !alias.scope !111, !noalias !114
  %1833 = fadd <2 x double> %broadcast.splat1964, %wide.load1961
  %1834 = fadd <2 x double> %broadcast.splat1964, %wide.load1962
  store <2 x double> %1833, ptr %1831, align 8, !tbaa !9, !alias.scope !111, !noalias !114
  store <2 x double> %1834, ptr %1832, align 8, !tbaa !9, !alias.scope !111, !noalias !114
  %1835 = getelementptr double, ptr %4, i64 %index1959
  %1836 = getelementptr inbounds i8, ptr %1835, i64 16
  %wide.load1965 = load <2 x double>, ptr %1835, align 8, !tbaa !9, !alias.scope !114
  %wide.load1966 = load <2 x double>, ptr %1836, align 8, !tbaa !9, !alias.scope !114
  %1837 = fsub <2 x double> %wide.load1965, %broadcast.splat1964
  %1838 = fsub <2 x double> %wide.load1966, %broadcast.splat1964
  store <2 x double> %1837, ptr %1835, align 8, !tbaa !9, !alias.scope !114
  store <2 x double> %1838, ptr %1836, align 8, !tbaa !9, !alias.scope !114
  %index.next1967 = add nuw i64 %index1959, 4
  %1839 = icmp eq i64 %index.next1967, %n.vec1955
  br i1 %1839, label %middle.block1950, label %vector.body1958, !llvm.loop !116

middle.block1950:                                 ; preds = %vector.body1958
  %cmp.n1968 = icmp eq i64 %1829, %n.vec1955
  br i1 %cmp.n1968, label %._crit_edge1551, label %.lr.ph1550.preheader2116

.lr.ph1550.preheader2116:                         ; preds = %middle.block1950, %vector.memcheck1944, %.lr.ph1550.preheader
  %.181548.ph = phi i64 [ 1, %vector.memcheck1944 ], [ 1, %.lr.ph1550.preheader ], [ %ind.end1956, %middle.block1950 ]
  %xtraiter2171 = and i64 %1829, 1
  %lcmp.mod2172.not = icmp eq i64 %xtraiter2171, 0
  br i1 %lcmp.mod2172.not, label %.lr.ph1550.prol.loopexit, label %.lr.ph1550.prol

.lr.ph1550.prol:                                  ; preds = %.lr.ph1550.preheader2116
  %1840 = getelementptr inbounds double, ptr %17, i64 %.181548.ph
  %1841 = load double, ptr %1840, align 8, !tbaa !9
  %1842 = fadd double %1826, %1841
  store double %1842, ptr %1840, align 8, !tbaa !9
  %1843 = getelementptr inbounds double, ptr %18, i64 %.181548.ph
  %1844 = load double, ptr %1843, align 8, !tbaa !9
  %1845 = fsub double %1844, %1826
  store double %1845, ptr %1843, align 8, !tbaa !9
  %1846 = add nuw i64 %.181548.ph, 1
  br label %.lr.ph1550.prol.loopexit

.lr.ph1550.prol.loopexit:                         ; preds = %.lr.ph1550.prol, %.lr.ph1550.preheader2116
  %.181548.unr = phi i64 [ %.181548.ph, %.lr.ph1550.preheader2116 ], [ %1846, %.lr.ph1550.prol ]
  %1847 = icmp eq i64 %1829, %.181548.ph
  br i1 %1847, label %._crit_edge1551, label %.lr.ph1550

.lr.ph1550:                                       ; preds = %.lr.ph1550.prol.loopexit, %.lr.ph1550
  %.181548 = phi i64 [ %1861, %.lr.ph1550 ], [ %.181548.unr, %.lr.ph1550.prol.loopexit ]
  %1848 = getelementptr inbounds double, ptr %17, i64 %.181548
  %1849 = load double, ptr %1848, align 8, !tbaa !9
  %1850 = fadd double %1826, %1849
  store double %1850, ptr %1848, align 8, !tbaa !9
  %1851 = getelementptr inbounds double, ptr %18, i64 %.181548
  %1852 = load double, ptr %1851, align 8, !tbaa !9
  %1853 = fsub double %1852, %1826
  store double %1853, ptr %1851, align 8, !tbaa !9
  %1854 = add nuw i64 %.181548, 1
  %1855 = getelementptr double, ptr %7, i64 %.181548
  %1856 = load double, ptr %1855, align 8, !tbaa !9
  %1857 = fadd double %1826, %1856
  store double %1857, ptr %1855, align 8, !tbaa !9
  %1858 = getelementptr double, ptr %4, i64 %.181548
  %1859 = load double, ptr %1858, align 8, !tbaa !9
  %1860 = fsub double %1859, %1826
  store double %1860, ptr %1858, align 8, !tbaa !9
  %1861 = add nuw i64 %.181548, 2
  %exitcond1708.not.1 = icmp eq i64 %1854, %1829
  br i1 %exitcond1708.not.1, label %._crit_edge1551, label %.lr.ph1550, !llvm.loop !117

._crit_edge1551:                                  ; preds = %.lr.ph1550.prol.loopexit, %.lr.ph1550, %middle.block1950, %1818
  %1862 = load double, ptr %11, align 8, !tbaa !9
  br i1 %.not1430.not1500, label %.lr.ph1558.preheader, label %._crit_edge1559

.lr.ph1558.preheader:                             ; preds = %._crit_edge1551
  br i1 %1617, label %._crit_edge1559.loopexit.unr-lcssa, label %.lr.ph1558

.lr.ph1558:                                       ; preds = %.lr.ph1558.preheader, %.lr.ph1558
  %.91556 = phi double [ %1891, %.lr.ph1558 ], [ 0.000000e+00, %.lr.ph1558.preheader ]
  %.191553 = phi i64 [ %1892, %.lr.ph1558 ], [ 1, %.lr.ph1558.preheader ]
  %1863 = phi <2 x double> [ %1889, %.lr.ph1558 ], [ zeroinitializer, %.lr.ph1558.preheader ]
  %niter2180 = phi i64 [ %niter2180.next.1, %.lr.ph1558 ], [ 0, %.lr.ph1558.preheader ]
  %1864 = getelementptr inbounds double, ptr %19, i64 %.191553
  %1865 = load double, ptr %1864, align 8, !tbaa !9
  %1866 = getelementptr inbounds double, ptr %17, i64 %.191553
  %1867 = load double, ptr %1866, align 8, !tbaa !9
  %1868 = getelementptr inbounds double, ptr %18, i64 %.191553
  %1869 = load double, ptr %1868, align 8, !tbaa !9
  %1870 = fmul double %1867, %1869
  %1871 = fdiv double %1865, %1870
  %1872 = insertelement <2 x double> poison, double %1871, i64 0
  %1873 = insertelement <2 x double> %1872, double %1865, i64 1
  %1874 = shufflevector <2 x double> %1872, <2 x double> poison, <2 x i32> zeroinitializer
  %1875 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1873, <2 x double> %1874, <2 x double> %1863)
  %1876 = extractelement <2 x double> %1875, i64 1
  %1877 = fadd double %.91556, %1876
  %1878 = getelementptr double, ptr %3, i64 %.191553
  %1879 = load double, ptr %1878, align 8, !tbaa !9
  %1880 = getelementptr double, ptr %7, i64 %.191553
  %1881 = load double, ptr %1880, align 8, !tbaa !9
  %1882 = getelementptr double, ptr %4, i64 %.191553
  %1883 = load double, ptr %1882, align 8, !tbaa !9
  %1884 = fmul double %1881, %1883
  %1885 = fdiv double %1879, %1884
  %1886 = insertelement <2 x double> poison, double %1885, i64 0
  %1887 = insertelement <2 x double> %1886, double %1879, i64 1
  %1888 = shufflevector <2 x double> %1886, <2 x double> poison, <2 x i32> zeroinitializer
  %1889 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1887, <2 x double> %1888, <2 x double> %1875)
  %1890 = extractelement <2 x double> %1889, i64 1
  %1891 = fadd double %1877, %1890
  %1892 = add nuw nsw i64 %.191553, 2
  %niter2180.next.1 = add i64 %niter2180, 2
  %niter2180.ncmp.1 = icmp eq i64 %niter2180.next.1, %unroll_iter2179
  br i1 %niter2180.ncmp.1, label %._crit_edge1559.loopexit.unr-lcssa.loopexit, label %.lr.ph1558, !llvm.loop !118

._crit_edge1559.loopexit.unr-lcssa.loopexit:      ; preds = %.lr.ph1558
  %1893 = extractelement <2 x double> %1889, i64 0
  br label %._crit_edge1559.loopexit.unr-lcssa

._crit_edge1559.loopexit.unr-lcssa:               ; preds = %._crit_edge1559.loopexit.unr-lcssa.loopexit, %.lr.ph1558.preheader
  %.lcssa2120.ph = phi double [ poison, %.lr.ph1558.preheader ], [ %1890, %._crit_edge1559.loopexit.unr-lcssa.loopexit ]
  %.lcssa2119.ph = phi double [ poison, %.lr.ph1558.preheader ], [ %1891, %._crit_edge1559.loopexit.unr-lcssa.loopexit ]
  %.lcssa2118.ph = phi double [ poison, %.lr.ph1558.preheader ], [ %1893, %._crit_edge1559.loopexit.unr-lcssa.loopexit ]
  %.91556.unr = phi double [ 0.000000e+00, %.lr.ph1558.preheader ], [ %1891, %._crit_edge1559.loopexit.unr-lcssa.loopexit ]
  %.191553.unr = phi i64 [ 1, %.lr.ph1558.preheader ], [ %1892, %._crit_edge1559.loopexit.unr-lcssa.loopexit ]
  %.unr2174 = phi <2 x double> [ zeroinitializer, %.lr.ph1558.preheader ], [ %1889, %._crit_edge1559.loopexit.unr-lcssa.loopexit ]
  br i1 %lcmp.mod2175.not, label %._crit_edge1559, label %.lr.ph1558.epil

.lr.ph1558.epil:                                  ; preds = %._crit_edge1559.loopexit.unr-lcssa
  %1894 = getelementptr inbounds double, ptr %19, i64 %.191553.unr
  %1895 = load double, ptr %1894, align 8, !tbaa !9
  %1896 = getelementptr inbounds double, ptr %17, i64 %.191553.unr
  %1897 = load double, ptr %1896, align 8, !tbaa !9
  %1898 = getelementptr inbounds double, ptr %18, i64 %.191553.unr
  %1899 = load double, ptr %1898, align 8, !tbaa !9
  %1900 = fmul double %1897, %1899
  %1901 = fdiv double %1895, %1900
  %1902 = insertelement <2 x double> poison, double %1901, i64 0
  %1903 = insertelement <2 x double> %1902, double %1895, i64 1
  %1904 = shufflevector <2 x double> %1902, <2 x double> poison, <2 x i32> zeroinitializer
  %1905 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1903, <2 x double> %1904, <2 x double> %.unr2174)
  %1906 = extractelement <2 x double> %1905, i64 1
  %1907 = fadd double %.91556.unr, %1906
  %1908 = extractelement <2 x double> %1905, i64 0
  br label %._crit_edge1559

._crit_edge1559:                                  ; preds = %.lr.ph1558.epil, %._crit_edge1559.loopexit.unr-lcssa, %._crit_edge1551
  %.81366.lcssa = phi double [ 0.000000e+00, %._crit_edge1551 ], [ %.lcssa2120.ph, %._crit_edge1559.loopexit.unr-lcssa ], [ %1906, %.lr.ph1558.epil ]
  %.91350.lcssa = phi double [ 0.000000e+00, %._crit_edge1551 ], [ %.lcssa2118.ph, %._crit_edge1559.loopexit.unr-lcssa ], [ %1908, %.lr.ph1558.epil ]
  %.9.lcssa = phi double [ 0.000000e+00, %._crit_edge1551 ], [ %.lcssa2119.ph, %._crit_edge1559.loopexit.unr-lcssa ], [ %1907, %.lr.ph1558.epil ]
  %1909 = fcmp oge double %.9.lcssa, 0.000000e+00
  %1910 = fneg double %.9.lcssa
  %1911 = select i1 %1909, double %.9.lcssa, double %1910
  %.not1457.not1563 = icmp sgt i64 %1829, %.01379
  br i1 %.not1457.not1563, label %.lr.ph1569.preheader, label %._crit_edge1570

.lr.ph1569.preheader:                             ; preds = %._crit_edge1559
  %1912 = sub i64 %1829, %.01379
  %xtraiter2181 = and i64 %1912, 1
  %lcmp.mod2182.not = icmp eq i64 %xtraiter2181, 0
  br i1 %lcmp.mod2182.not, label %.lr.ph1569.prol.loopexit, label %.lr.ph1569.prol

.lr.ph1569.prol:                                  ; preds = %.lr.ph1569.preheader
  %1913 = getelementptr inbounds double, ptr %19, i64 %1829
  %1914 = load double, ptr %1913, align 8, !tbaa !9
  %1915 = getelementptr inbounds double, ptr %17, i64 %1829
  %1916 = load double, ptr %1915, align 8, !tbaa !9
  %1917 = getelementptr inbounds double, ptr %18, i64 %1829
  %1918 = load double, ptr %1917, align 8, !tbaa !9
  %1919 = fmul double %1916, %1918
  %1920 = fdiv double %1914, %1919
  %1921 = insertelement <2 x double> poison, double %1920, i64 0
  %1922 = insertelement <2 x double> %1921, double %1914, i64 1
  %1923 = shufflevector <2 x double> %1921, <2 x double> poison, <2 x i32> zeroinitializer
  %1924 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1922, <2 x double> %1923, <2 x double> zeroinitializer)
  %1925 = extractelement <2 x double> %1924, i64 1
  %1926 = fadd double %1911, %1925
  %1927 = add nsw i64 %1829, -1
  %1928 = extractelement <2 x double> %1924, i64 0
  br label %.lr.ph1569.prol.loopexit

.lr.ph1569.prol.loopexit:                         ; preds = %.lr.ph1569.prol, %.lr.ph1569.preheader
  %.101567.unr = phi double [ %1911, %.lr.ph1569.preheader ], [ %1926, %.lr.ph1569.prol ]
  %.201564.unr = phi i64 [ %1829, %.lr.ph1569.preheader ], [ %1927, %.lr.ph1569.prol ]
  %.unr2183 = phi <2 x double> [ zeroinitializer, %.lr.ph1569.preheader ], [ %1924, %.lr.ph1569.prol ]
  %.lcssa2123.unr = phi double [ poison, %.lr.ph1569.preheader ], [ %1925, %.lr.ph1569.prol ]
  %.lcssa2122.unr = phi double [ poison, %.lr.ph1569.preheader ], [ %1926, %.lr.ph1569.prol ]
  %.lcssa2121.unr = phi double [ poison, %.lr.ph1569.preheader ], [ %1928, %.lr.ph1569.prol ]
  %1929 = icmp eq i64 %1829, %.neg2219
  br i1 %1929, label %._crit_edge1570, label %.lr.ph1569

.lr.ph1569:                                       ; preds = %.lr.ph1569.prol.loopexit, %.lr.ph1569
  %.101567 = phi double [ %1959, %.lr.ph1569 ], [ %.101567.unr, %.lr.ph1569.prol.loopexit ]
  %.201564 = phi i64 [ %1960, %.lr.ph1569 ], [ %.201564.unr, %.lr.ph1569.prol.loopexit ]
  %1930 = phi <2 x double> [ %1957, %.lr.ph1569 ], [ %.unr2183, %.lr.ph1569.prol.loopexit ]
  %1931 = getelementptr inbounds double, ptr %19, i64 %.201564
  %1932 = load double, ptr %1931, align 8, !tbaa !9
  %1933 = getelementptr inbounds double, ptr %17, i64 %.201564
  %1934 = load double, ptr %1933, align 8, !tbaa !9
  %1935 = getelementptr inbounds double, ptr %18, i64 %.201564
  %1936 = load double, ptr %1935, align 8, !tbaa !9
  %1937 = fmul double %1934, %1936
  %1938 = fdiv double %1932, %1937
  %1939 = insertelement <2 x double> poison, double %1938, i64 0
  %1940 = insertelement <2 x double> %1939, double %1932, i64 1
  %1941 = shufflevector <2 x double> %1939, <2 x double> poison, <2 x i32> zeroinitializer
  %1942 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1940, <2 x double> %1941, <2 x double> %1930)
  %1943 = extractelement <2 x double> %1942, i64 1
  %1944 = fadd double %.101567, %1943
  %1945 = add nsw i64 %.201564, -1
  %1946 = getelementptr inbounds double, ptr %19, i64 %1945
  %1947 = load double, ptr %1946, align 8, !tbaa !9
  %1948 = getelementptr inbounds double, ptr %17, i64 %1945
  %1949 = load double, ptr %1948, align 8, !tbaa !9
  %1950 = getelementptr inbounds double, ptr %18, i64 %1945
  %1951 = load double, ptr %1950, align 8, !tbaa !9
  %1952 = fmul double %1949, %1951
  %1953 = fdiv double %1947, %1952
  %1954 = insertelement <2 x double> poison, double %1953, i64 0
  %1955 = insertelement <2 x double> %1954, double %1947, i64 1
  %1956 = shufflevector <2 x double> %1954, <2 x double> poison, <2 x i32> zeroinitializer
  %1957 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1955, <2 x double> %1956, <2 x double> %1942)
  %1958 = extractelement <2 x double> %1957, i64 1
  %1959 = fadd double %1944, %1958
  %1960 = add nsw i64 %.201564, -2
  %.not1457.not.1 = icmp sgt i64 %1960, %.01379
  br i1 %.not1457.not.1, label %.lr.ph1569, label %._crit_edge1570.loopexit.unr-lcssa, !llvm.loop !119

._crit_edge1570.loopexit.unr-lcssa:               ; preds = %.lr.ph1569
  %1961 = extractelement <2 x double> %1957, i64 0
  br label %._crit_edge1570

._crit_edge1570:                                  ; preds = %._crit_edge1570.loopexit.unr-lcssa, %.lr.ph1569.prol.loopexit, %._crit_edge1559
  %.41377.lcssa = phi double [ 0.000000e+00, %._crit_edge1559 ], [ %.lcssa2123.unr, %.lr.ph1569.prol.loopexit ], [ %1958, %._crit_edge1570.loopexit.unr-lcssa ]
  %.61357.lcssa = phi double [ 0.000000e+00, %._crit_edge1559 ], [ %.lcssa2121.unr, %.lr.ph1569.prol.loopexit ], [ %1961, %._crit_edge1570.loopexit.unr-lcssa ]
  %.10.lcssa = phi double [ %1911, %._crit_edge1559 ], [ %.lcssa2122.unr, %.lr.ph1569.prol.loopexit ], [ %1959, %._crit_edge1570.loopexit.unr-lcssa ]
  %1962 = load double, ptr %1201, align 8, !tbaa !9
  %1963 = load double, ptr %1203, align 8, !tbaa !9
  %1964 = load double, ptr %1205, align 8, !tbaa !9
  %1965 = fmul double %1963, %1964
  %1966 = fdiv double %1962, %1965
  %1967 = fadd double %.91350.lcssa, %.61357.lcssa
  %1968 = call double @llvm.fmuladd.f64(double %1966, double %1966, double %1967)
  %1969 = fmul double %1962, %1966
  %1970 = fadd double %35, %.41377.lcssa
  %1971 = fadd double %.81366.lcssa, %1970
  %1972 = fadd double %1971, %1969
  store double %1972, ptr %11, align 8, !tbaa !9
  %1973 = fsub double %.41377.lcssa, %.81366.lcssa
  %1974 = call double @llvm.fmuladd.f64(double %1973, double 8.000000e+00, double %.10.lcssa)
  %1975 = call double @llvm.fmuladd.f64(double %35, double 2.000000e+00, double %1974)
  %1976 = fcmp oge double %1969, 0.000000e+00
  %1977 = fneg double %1969
  %1978 = select i1 %1976, double %1969, double %1977
  %1979 = call double @llvm.fmuladd.f64(double %1978, double 3.000000e+00, double %1975)
  %1980 = fcmp oge double %1820, 0.000000e+00
  %1981 = fneg double %1820
  %1982 = select i1 %1980, double %1820, double %1981
  %1983 = call double @llvm.fmuladd.f64(double %1982, double %1968, double %1979)
  %1984 = fmul double %1862, %1972
  %1985 = fcmp ogt double %1984, 0.000000e+00
  br i1 %1985, label %1986, label %1997

1986:                                             ; preds = %._crit_edge1570
  %1987 = fcmp oge double %1972, 0.000000e+00
  %1988 = fneg double %1972
  %1989 = select i1 %1987, double %1972, double %1988
  %1990 = fcmp oge double %1862, 0.000000e+00
  %1991 = fneg double %1862
  %1992 = select i1 %1990, double %1862, double %1991
  %1993 = fdiv double %1992, 1.000000e+01
  %1994 = fcmp ogt double %1989, %1993
  br i1 %1994, label %1995, label %1997

1995:                                             ; preds = %1986
  %.not1458 = icmp eq i64 %.113271584, 0
  %1996 = zext i1 %.not1458 to i64
  br label %1997

1997:                                             ; preds = %1995, %1986, %._crit_edge1570
  %.21328 = phi i64 [ %1996, %1995 ], [ %.113271584, %1986 ], [ %.113271584, %._crit_edge1570 ]
  %1998 = fcmp ugt double %1972, 0.000000e+00
  br i1 %1998, label %2002, label %1999

1999:                                             ; preds = %1997
  %2000 = fcmp oge double %.313371582, %1820
  %2001 = select i1 %2000, double %.313371582, double %1820
  br label %2005

2002:                                             ; preds = %1997
  %2003 = fcmp ole double %.313321583, %1820
  %2004 = select i1 %2003, double %.313321583, double %1820
  br label %2005

2005:                                             ; preds = %1999, %2002
  %.41338 = phi double [ %2001, %1999 ], [ %.313371582, %2002 ]
  %.41333 = phi double [ %.313321583, %1999 ], [ %2004, %2002 ]
  %storemerge1445.in = load i64, ptr %15, align 8, !tbaa !5
  %storemerge1445 = add nsw i64 %storemerge1445.in, 1
  store i64 %storemerge1445, ptr %15, align 8, !tbaa !5
  %2006 = icmp slt i64 %storemerge1445.in, 20
  br i1 %2006, label %1618, label %._crit_edge1588, !llvm.loop !120

._crit_edge1588:                                  ; preds = %2005, %1602
  store i64 1, ptr %8, align 8, !tbaa !5
  br label %.loopexit1473

.loopexit1473:                                    ; preds = %1618, %1786, %565, %._crit_edge1663, %._crit_edge1588, %._crit_edge1611, %1198, %1374, %30, %22
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  ret i32 0
}

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(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

declare i32 @dlasd5_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

declare double @dlamch_(ptr noundef) local_unnamed_addr #4

declare i32 @dlaed6_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

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

attributes #0 = { 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 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { "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 = { nocallback nofree nosync nounwind speculatable 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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!12}
!12 = distinct !{!12, !13}
!13 = distinct !{!13, !"LVerDomain"}
!14 = !{!15}
!15 = distinct !{!15, !13}
!16 = !{!17}
!17 = distinct !{!17, !13}
!18 = !{!19, !12, !15}
!19 = distinct !{!19, !13}
!20 = !{!19}
!21 = !{!12, !15}
!22 = distinct !{!22, !23, !24, !25}
!23 = !{!"llvm.loop.mustprogress"}
!24 = !{!"llvm.loop.isvectorized", i32 1}
!25 = !{!"llvm.loop.unroll.runtime.disable"}
!26 = distinct !{!26, !23, !24}
!27 = distinct !{!27, !23}
!28 = !{!29}
!29 = distinct !{!29, !30}
!30 = distinct !{!30, !"LVerDomain"}
!31 = !{!32}
!32 = distinct !{!32, !30}
!33 = !{!34}
!34 = distinct !{!34, !30}
!35 = !{!36, !29, !32}
!36 = distinct !{!36, !30}
!37 = !{!36}
!38 = !{!29, !32}
!39 = distinct !{!39, !23, !24, !25}
!40 = distinct !{!40, !23, !24}
!41 = distinct !{!41, !23}
!42 = !{!43}
!43 = distinct !{!43, !44}
!44 = distinct !{!44, !"LVerDomain"}
!45 = !{!46}
!46 = distinct !{!46, !44}
!47 = distinct !{!47, !23, !24, !25}
!48 = distinct !{!48, !23, !24}
!49 = distinct !{!49, !23}
!50 = !{!51}
!51 = distinct !{!51, !52}
!52 = distinct !{!52, !"LVerDomain"}
!53 = !{!54}
!54 = distinct !{!54, !52}
!55 = distinct !{!55, !23, !24, !25}
!56 = distinct !{!56, !23, !24}
!57 = distinct !{!57, !23}
!58 = distinct !{!58, !23}
!59 = !{!60}
!60 = distinct !{!60, !61}
!61 = distinct !{!61, !"LVerDomain"}
!62 = !{!63}
!63 = distinct !{!63, !61}
!64 = !{!65}
!65 = distinct !{!65, !61}
!66 = !{!67, !60, !63}
!67 = distinct !{!67, !61}
!68 = !{!67}
!69 = !{!60, !63}
!70 = distinct !{!70, !23, !24, !25}
!71 = distinct !{!71, !23, !24}
!72 = distinct !{!72, !23}
!73 = distinct !{!73, !23}
!74 = !{!75}
!75 = distinct !{!75, !76}
!76 = distinct !{!76, !"LVerDomain"}
!77 = !{!78}
!78 = distinct !{!78, !76}
!79 = !{!80}
!80 = distinct !{!80, !76}
!81 = !{!82, !75, !78}
!82 = distinct !{!82, !76}
!83 = !{!82}
!84 = !{!75, !78}
!85 = distinct !{!85, !23, !24, !25}
!86 = distinct !{!86, !23, !24}
!87 = !{!88}
!88 = distinct !{!88, !89}
!89 = distinct !{!89, !"LVerDomain"}
!90 = !{!91}
!91 = distinct !{!91, !89}
!92 = !{!93}
!93 = distinct !{!93, !89}
!94 = !{!95, !88, !91}
!95 = distinct !{!95, !89}
!96 = !{!95}
!97 = !{!88, !91}
!98 = distinct !{!98, !23, !24, !25}
!99 = distinct !{!99, !23, !24}
!100 = distinct !{!100, !23}
!101 = distinct !{!101, !23}
!102 = !{!103}
!103 = distinct !{!103, !104}
!104 = distinct !{!104, !"LVerDomain"}
!105 = !{!106}
!106 = distinct !{!106, !104}
!107 = distinct !{!107, !23, !24, !25}
!108 = distinct !{!108, !23, !24}
!109 = distinct !{!109, !23}
!110 = distinct !{!110, !23}
!111 = !{!112}
!112 = distinct !{!112, !113}
!113 = distinct !{!113, !"LVerDomain"}
!114 = !{!115}
!115 = distinct !{!115, !113}
!116 = distinct !{!116, !23, !24, !25}
!117 = distinct !{!117, !23, !24}
!118 = distinct !{!118, !23}
!119 = distinct !{!119, !23}
!120 = distinct !{!120, !23}


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