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

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

101:                                              ; preds = %9
  %102 = load ptr, ptr %10, align 8, !tbaa !5
  %103 = load i32, ptr %102, align 4, !tbaa !9
  %104 = icmp eq i32 %103, 2
  br i1 %104, label %105, label %117

105:                                              ; preds = %101
  %106 = load ptr, ptr %11, align 8, !tbaa !5
  %107 = load ptr, ptr %12, align 8, !tbaa !5
  %108 = getelementptr inbounds double, ptr %107, i64 1
  %109 = load ptr, ptr %13, align 8, !tbaa !5
  %110 = getelementptr inbounds double, ptr %109, i64 1
  %111 = load ptr, ptr %14, align 8, !tbaa !5
  %112 = getelementptr inbounds double, ptr %111, i64 1
  %113 = load ptr, ptr %15, align 8, !tbaa !5
  %114 = load ptr, ptr %16, align 8, !tbaa !5
  %115 = load ptr, ptr %17, align 8, !tbaa !5
  %116 = getelementptr inbounds double, ptr %115, i64 1
  call void @dlasd5_(ptr noundef %106, ptr noundef %108, ptr noundef %110, ptr noundef %112, ptr noundef %113, ptr noundef %114, ptr noundef %116)
  store i32 1, ptr %64, align 4
  br label %4240

117:                                              ; preds = %101
  %118 = call double @dlamch_(ptr noundef @.str)
  store double %118, ptr %57, align 8, !tbaa !11
  %119 = load ptr, ptr %15, align 8, !tbaa !5
  %120 = load double, ptr %119, align 8, !tbaa !11
  %121 = fdiv double 1.000000e+00, %120
  store double %121, ptr %52, align 8, !tbaa !11
  store double 0.000000e+00, ptr %63, align 8, !tbaa !11
  %122 = load ptr, ptr %11, align 8, !tbaa !5
  %123 = load i32, ptr %122, align 4, !tbaa !9
  %124 = load ptr, ptr %10, align 8, !tbaa !5
  %125 = load i32, ptr %124, align 4, !tbaa !9
  %126 = icmp eq i32 %123, %125
  br i1 %126, label %127, label %1423

127:                                              ; preds = %117
  %128 = load ptr, ptr %10, align 8, !tbaa !5
  %129 = load i32, ptr %128, align 4, !tbaa !9
  %130 = sub nsw i32 %129, 1
  store i32 %130, ptr %46, align 4, !tbaa !9
  store i32 1, ptr %38, align 4, !tbaa !9
  %131 = load ptr, ptr %15, align 8, !tbaa !5
  %132 = load double, ptr %131, align 8, !tbaa !11
  %133 = fdiv double %132, 2.000000e+00
  store double %133, ptr %26, align 8, !tbaa !11
  %134 = load double, ptr %26, align 8, !tbaa !11
  %135 = load ptr, ptr %12, align 8, !tbaa !5
  %136 = load ptr, ptr %10, align 8, !tbaa !5
  %137 = load i32, ptr %136, align 4, !tbaa !9
  %138 = sext i32 %137 to i64
  %139 = getelementptr inbounds double, ptr %135, i64 %138
  %140 = load double, ptr %139, align 8, !tbaa !11
  %141 = load ptr, ptr %12, align 8, !tbaa !5
  %142 = load ptr, ptr %10, align 8, !tbaa !5
  %143 = load i32, ptr %142, align 4, !tbaa !9
  %144 = sext i32 %143 to i64
  %145 = getelementptr inbounds double, ptr %141, i64 %144
  %146 = load double, ptr %145, align 8, !tbaa !11
  %147 = load ptr, ptr %12, align 8, !tbaa !5
  %148 = load ptr, ptr %10, align 8, !tbaa !5
  %149 = load i32, ptr %148, align 4, !tbaa !9
  %150 = sext i32 %149 to i64
  %151 = getelementptr inbounds double, ptr %147, i64 %150
  %152 = load double, ptr %151, align 8, !tbaa !11
  %153 = load double, ptr %26, align 8, !tbaa !11
  %154 = call double @llvm.fmuladd.f64(double %146, double %152, double %153)
  %155 = call double @sqrt(double noundef %154) #5
  %156 = fadd double %140, %155
  %157 = fdiv double %134, %156
  store double %157, ptr %28, align 8, !tbaa !11
  %158 = load ptr, ptr %10, align 8, !tbaa !5
  %159 = load i32, ptr %158, align 4, !tbaa !9
  store i32 %159, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %160

160:                                              ; preds = %201, %127
  %161 = load i32, ptr %33, align 4, !tbaa !9
  %162 = load i32, ptr %19, align 4, !tbaa !9
  %163 = icmp sle i32 %161, %162
  br i1 %163, label %164, label %204

164:                                              ; preds = %160
  %165 = load ptr, ptr %12, align 8, !tbaa !5
  %166 = load i32, ptr %33, align 4, !tbaa !9
  %167 = sext i32 %166 to i64
  %168 = getelementptr inbounds double, ptr %165, i64 %167
  %169 = load double, ptr %168, align 8, !tbaa !11
  %170 = load ptr, ptr %12, align 8, !tbaa !5
  %171 = load ptr, ptr %10, align 8, !tbaa !5
  %172 = load i32, ptr %171, align 4, !tbaa !9
  %173 = sext i32 %172 to i64
  %174 = getelementptr inbounds double, ptr %170, i64 %173
  %175 = load double, ptr %174, align 8, !tbaa !11
  %176 = fadd double %169, %175
  %177 = load double, ptr %28, align 8, !tbaa !11
  %178 = fadd double %176, %177
  %179 = load ptr, ptr %17, align 8, !tbaa !5
  %180 = load i32, ptr %33, align 4, !tbaa !9
  %181 = sext i32 %180 to i64
  %182 = getelementptr inbounds double, ptr %179, i64 %181
  store double %178, ptr %182, align 8, !tbaa !11
  %183 = load ptr, ptr %12, align 8, !tbaa !5
  %184 = load i32, ptr %33, align 4, !tbaa !9
  %185 = sext i32 %184 to i64
  %186 = getelementptr inbounds double, ptr %183, i64 %185
  %187 = load double, ptr %186, align 8, !tbaa !11
  %188 = load ptr, ptr %12, align 8, !tbaa !5
  %189 = load ptr, ptr %10, align 8, !tbaa !5
  %190 = load i32, ptr %189, align 4, !tbaa !9
  %191 = sext i32 %190 to i64
  %192 = getelementptr inbounds double, ptr %188, i64 %191
  %193 = load double, ptr %192, align 8, !tbaa !11
  %194 = fsub double %187, %193
  %195 = load double, ptr %28, align 8, !tbaa !11
  %196 = fsub double %194, %195
  %197 = load ptr, ptr %14, align 8, !tbaa !5
  %198 = load i32, ptr %33, align 4, !tbaa !9
  %199 = sext i32 %198 to i64
  %200 = getelementptr inbounds double, ptr %197, i64 %199
  store double %196, ptr %200, align 8, !tbaa !11
  br label %201

201:                                              ; preds = %164
  %202 = load i32, ptr %33, align 4, !tbaa !9
  %203 = add nsw i32 %202, 1
  store i32 %203, ptr %33, align 4, !tbaa !9
  br label %160, !llvm.loop !13

204:                                              ; preds = %160
  store double 0.000000e+00, ptr %59, align 8, !tbaa !11
  %205 = load ptr, ptr %10, align 8, !tbaa !5
  %206 = load i32, ptr %205, align 4, !tbaa !9
  %207 = sub nsw i32 %206, 2
  store i32 %207, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %208

208:                                              ; preds = %238, %204
  %209 = load i32, ptr %33, align 4, !tbaa !9
  %210 = load i32, ptr %19, align 4, !tbaa !9
  %211 = icmp sle i32 %209, %210
  br i1 %211, label %212, label %241

212:                                              ; preds = %208
  %213 = load ptr, ptr %13, align 8, !tbaa !5
  %214 = load i32, ptr %33, align 4, !tbaa !9
  %215 = sext i32 %214 to i64
  %216 = getelementptr inbounds double, ptr %213, i64 %215
  %217 = load double, ptr %216, align 8, !tbaa !11
  %218 = load ptr, ptr %13, align 8, !tbaa !5
  %219 = load i32, ptr %33, align 4, !tbaa !9
  %220 = sext i32 %219 to i64
  %221 = getelementptr inbounds double, ptr %218, i64 %220
  %222 = load double, ptr %221, align 8, !tbaa !11
  %223 = fmul double %217, %222
  %224 = load ptr, ptr %14, align 8, !tbaa !5
  %225 = load i32, ptr %33, align 4, !tbaa !9
  %226 = sext i32 %225 to i64
  %227 = getelementptr inbounds double, ptr %224, i64 %226
  %228 = load double, ptr %227, align 8, !tbaa !11
  %229 = load ptr, ptr %17, align 8, !tbaa !5
  %230 = load i32, ptr %33, align 4, !tbaa !9
  %231 = sext i32 %230 to i64
  %232 = getelementptr inbounds double, ptr %229, i64 %231
  %233 = load double, ptr %232, align 8, !tbaa !11
  %234 = fmul double %228, %233
  %235 = fdiv double %223, %234
  %236 = load double, ptr %59, align 8, !tbaa !11
  %237 = fadd double %236, %235
  store double %237, ptr %59, align 8, !tbaa !11
  br label %238

238:                                              ; preds = %212
  %239 = load i32, ptr %33, align 4, !tbaa !9
  %240 = add nsw i32 %239, 1
  store i32 %240, ptr %33, align 4, !tbaa !9
  br label %208, !llvm.loop !15

241:                                              ; preds = %208
  %242 = load double, ptr %52, align 8, !tbaa !11
  %243 = load double, ptr %59, align 8, !tbaa !11
  %244 = fadd double %242, %243
  store double %244, ptr %32, align 8, !tbaa !11
  %245 = load double, ptr %32, align 8, !tbaa !11
  %246 = load ptr, ptr %13, align 8, !tbaa !5
  %247 = load i32, ptr %46, align 4, !tbaa !9
  %248 = sext i32 %247 to i64
  %249 = getelementptr inbounds double, ptr %246, i64 %248
  %250 = load double, ptr %249, align 8, !tbaa !11
  %251 = load ptr, ptr %13, align 8, !tbaa !5
  %252 = load i32, ptr %46, align 4, !tbaa !9
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds double, ptr %251, i64 %253
  %255 = load double, ptr %254, align 8, !tbaa !11
  %256 = fmul double %250, %255
  %257 = load ptr, ptr %14, align 8, !tbaa !5
  %258 = load i32, ptr %46, align 4, !tbaa !9
  %259 = sext i32 %258 to i64
  %260 = getelementptr inbounds double, ptr %257, i64 %259
  %261 = load double, ptr %260, align 8, !tbaa !11
  %262 = load ptr, ptr %17, align 8, !tbaa !5
  %263 = load i32, ptr %46, align 4, !tbaa !9
  %264 = sext i32 %263 to i64
  %265 = getelementptr inbounds double, ptr %262, i64 %264
  %266 = load double, ptr %265, align 8, !tbaa !11
  %267 = fmul double %261, %266
  %268 = fdiv double %256, %267
  %269 = fadd double %245, %268
  %270 = load ptr, ptr %13, align 8, !tbaa !5
  %271 = load ptr, ptr %10, align 8, !tbaa !5
  %272 = load i32, ptr %271, align 4, !tbaa !9
  %273 = sext i32 %272 to i64
  %274 = getelementptr inbounds double, ptr %270, i64 %273
  %275 = load double, ptr %274, align 8, !tbaa !11
  %276 = load ptr, ptr %13, align 8, !tbaa !5
  %277 = load ptr, ptr %10, align 8, !tbaa !5
  %278 = load i32, ptr %277, align 4, !tbaa !9
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds double, ptr %276, i64 %279
  %281 = load double, ptr %280, align 8, !tbaa !11
  %282 = fmul double %275, %281
  %283 = load ptr, ptr %14, align 8, !tbaa !5
  %284 = load ptr, ptr %10, align 8, !tbaa !5
  %285 = load i32, ptr %284, align 4, !tbaa !9
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds double, ptr %283, i64 %286
  %288 = load double, ptr %287, align 8, !tbaa !11
  %289 = load ptr, ptr %17, align 8, !tbaa !5
  %290 = load ptr, ptr %10, align 8, !tbaa !5
  %291 = load i32, ptr %290, align 4, !tbaa !9
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds double, ptr %289, i64 %292
  %294 = load double, ptr %293, align 8, !tbaa !11
  %295 = fmul double %288, %294
  %296 = fdiv double %282, %295
  %297 = fadd double %269, %296
  store double %297, ptr %34, align 8, !tbaa !11
  %298 = load double, ptr %34, align 8, !tbaa !11
  %299 = fcmp ole double %298, 0.000000e+00
  br i1 %299, label %300, label %525

300:                                              ; preds = %241
  %301 = load ptr, ptr %12, align 8, !tbaa !5
  %302 = load ptr, ptr %10, align 8, !tbaa !5
  %303 = load i32, ptr %302, align 4, !tbaa !9
  %304 = sext i32 %303 to i64
  %305 = getelementptr inbounds double, ptr %301, i64 %304
  %306 = load double, ptr %305, align 8, !tbaa !11
  %307 = load ptr, ptr %12, align 8, !tbaa !5
  %308 = load ptr, ptr %10, align 8, !tbaa !5
  %309 = load i32, ptr %308, align 4, !tbaa !9
  %310 = sext i32 %309 to i64
  %311 = getelementptr inbounds double, ptr %307, i64 %310
  %312 = load double, ptr %311, align 8, !tbaa !11
  %313 = load ptr, ptr %15, align 8, !tbaa !5
  %314 = load double, ptr %313, align 8, !tbaa !11
  %315 = call double @llvm.fmuladd.f64(double %306, double %312, double %314)
  %316 = call double @sqrt(double noundef %315) #5
  store double %316, ptr %28, align 8, !tbaa !11
  %317 = load ptr, ptr %13, align 8, !tbaa !5
  %318 = load ptr, ptr %10, align 8, !tbaa !5
  %319 = load i32, ptr %318, align 4, !tbaa !9
  %320 = sub nsw i32 %319, 1
  %321 = sext i32 %320 to i64
  %322 = getelementptr inbounds double, ptr %317, i64 %321
  %323 = load double, ptr %322, align 8, !tbaa !11
  %324 = load ptr, ptr %13, align 8, !tbaa !5
  %325 = load ptr, ptr %10, align 8, !tbaa !5
  %326 = load i32, ptr %325, align 4, !tbaa !9
  %327 = sub nsw i32 %326, 1
  %328 = sext i32 %327 to i64
  %329 = getelementptr inbounds double, ptr %324, i64 %328
  %330 = load double, ptr %329, align 8, !tbaa !11
  %331 = fmul double %323, %330
  %332 = load ptr, ptr %12, align 8, !tbaa !5
  %333 = load ptr, ptr %10, align 8, !tbaa !5
  %334 = load i32, ptr %333, align 4, !tbaa !9
  %335 = sub nsw i32 %334, 1
  %336 = sext i32 %335 to i64
  %337 = getelementptr inbounds double, ptr %332, i64 %336
  %338 = load double, ptr %337, align 8, !tbaa !11
  %339 = load double, ptr %28, align 8, !tbaa !11
  %340 = fadd double %338, %339
  %341 = load ptr, ptr %12, align 8, !tbaa !5
  %342 = load ptr, ptr %10, align 8, !tbaa !5
  %343 = load i32, ptr %342, align 4, !tbaa !9
  %344 = sext i32 %343 to i64
  %345 = getelementptr inbounds double, ptr %341, i64 %344
  %346 = load double, ptr %345, align 8, !tbaa !11
  %347 = load ptr, ptr %12, align 8, !tbaa !5
  %348 = load ptr, ptr %10, align 8, !tbaa !5
  %349 = load i32, ptr %348, align 4, !tbaa !9
  %350 = sub nsw i32 %349, 1
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds double, ptr %347, i64 %351
  %353 = load double, ptr %352, align 8, !tbaa !11
  %354 = fsub double %346, %353
  %355 = load ptr, ptr %15, align 8, !tbaa !5
  %356 = load double, ptr %355, align 8, !tbaa !11
  %357 = load ptr, ptr %12, align 8, !tbaa !5
  %358 = load ptr, ptr %10, align 8, !tbaa !5
  %359 = load i32, ptr %358, align 4, !tbaa !9
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds double, ptr %357, i64 %360
  %362 = load double, ptr %361, align 8, !tbaa !11
  %363 = load double, ptr %28, align 8, !tbaa !11
  %364 = fadd double %362, %363
  %365 = fdiv double %356, %364
  %366 = fadd double %354, %365
  %367 = fmul double %340, %366
  %368 = fdiv double %331, %367
  %369 = load ptr, ptr %13, align 8, !tbaa !5
  %370 = load ptr, ptr %10, align 8, !tbaa !5
  %371 = load i32, ptr %370, align 4, !tbaa !9
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds double, ptr %369, i64 %372
  %374 = load double, ptr %373, align 8, !tbaa !11
  %375 = load ptr, ptr %13, align 8, !tbaa !5
  %376 = load ptr, ptr %10, align 8, !tbaa !5
  %377 = load i32, ptr %376, align 4, !tbaa !9
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds double, ptr %375, i64 %378
  %380 = load double, ptr %379, align 8, !tbaa !11
  %381 = fmul double %374, %380
  %382 = load ptr, ptr %15, align 8, !tbaa !5
  %383 = load double, ptr %382, align 8, !tbaa !11
  %384 = fdiv double %381, %383
  %385 = fadd double %368, %384
  store double %385, ptr %26, align 8, !tbaa !11
  %386 = load double, ptr %32, align 8, !tbaa !11
  %387 = load double, ptr %26, align 8, !tbaa !11
  %388 = fcmp ole double %386, %387
  br i1 %388, label %389, label %392

389:                                              ; preds = %300
  %390 = load ptr, ptr %15, align 8, !tbaa !5
  %391 = load double, ptr %390, align 8, !tbaa !11
  store double %391, ptr %58, align 8, !tbaa !11
  br label %524

392:                                              ; preds = %300
  %393 = load ptr, ptr %12, align 8, !tbaa !5
  %394 = load ptr, ptr %10, align 8, !tbaa !5
  %395 = load i32, ptr %394, align 4, !tbaa !9
  %396 = sext i32 %395 to i64
  %397 = getelementptr inbounds double, ptr %393, i64 %396
  %398 = load double, ptr %397, align 8, !tbaa !11
  %399 = load ptr, ptr %12, align 8, !tbaa !5
  %400 = load ptr, ptr %10, align 8, !tbaa !5
  %401 = load i32, ptr %400, align 4, !tbaa !9
  %402 = sub nsw i32 %401, 1
  %403 = sext i32 %402 to i64
  %404 = getelementptr inbounds double, ptr %399, i64 %403
  %405 = load double, ptr %404, align 8, !tbaa !11
  %406 = fsub double %398, %405
  %407 = load ptr, ptr %12, align 8, !tbaa !5
  %408 = load ptr, ptr %10, align 8, !tbaa !5
  %409 = load i32, ptr %408, align 4, !tbaa !9
  %410 = sext i32 %409 to i64
  %411 = getelementptr inbounds double, ptr %407, i64 %410
  %412 = load double, ptr %411, align 8, !tbaa !11
  %413 = load ptr, ptr %12, align 8, !tbaa !5
  %414 = load ptr, ptr %10, align 8, !tbaa !5
  %415 = load i32, ptr %414, align 4, !tbaa !9
  %416 = sub nsw i32 %415, 1
  %417 = sext i32 %416 to i64
  %418 = getelementptr inbounds double, ptr %413, i64 %417
  %419 = load double, ptr %418, align 8, !tbaa !11
  %420 = fadd double %412, %419
  %421 = fmul double %406, %420
  store double %421, ptr %36, align 8, !tbaa !11
  %422 = load double, ptr %32, align 8, !tbaa !11
  %423 = fneg double %422
  %424 = load double, ptr %36, align 8, !tbaa !11
  %425 = load ptr, ptr %13, align 8, !tbaa !5
  %426 = load ptr, ptr %10, align 8, !tbaa !5
  %427 = load i32, ptr %426, align 4, !tbaa !9
  %428 = sub nsw i32 %427, 1
  %429 = sext i32 %428 to i64
  %430 = getelementptr inbounds double, ptr %425, i64 %429
  %431 = load double, ptr %430, align 8, !tbaa !11
  %432 = load ptr, ptr %13, align 8, !tbaa !5
  %433 = load ptr, ptr %10, align 8, !tbaa !5
  %434 = load i32, ptr %433, align 4, !tbaa !9
  %435 = sub nsw i32 %434, 1
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds double, ptr %432, i64 %436
  %438 = load double, ptr %437, align 8, !tbaa !11
  %439 = fmul double %431, %438
  %440 = call double @llvm.fmuladd.f64(double %423, double %424, double %439)
  %441 = load ptr, ptr %13, align 8, !tbaa !5
  %442 = load ptr, ptr %10, align 8, !tbaa !5
  %443 = load i32, ptr %442, align 4, !tbaa !9
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds double, ptr %441, i64 %444
  %446 = load double, ptr %445, align 8, !tbaa !11
  %447 = load ptr, ptr %13, align 8, !tbaa !5
  %448 = load ptr, ptr %10, align 8, !tbaa !5
  %449 = load i32, ptr %448, align 4, !tbaa !9
  %450 = sext i32 %449 to i64
  %451 = getelementptr inbounds double, ptr %447, i64 %450
  %452 = load double, ptr %451, align 8, !tbaa !11
  %453 = call double @llvm.fmuladd.f64(double %446, double %452, double %440)
  store double %453, ptr %30, align 8, !tbaa !11
  %454 = load ptr, ptr %13, align 8, !tbaa !5
  %455 = load ptr, ptr %10, align 8, !tbaa !5
  %456 = load i32, ptr %455, align 4, !tbaa !9
  %457 = sext i32 %456 to i64
  %458 = getelementptr inbounds double, ptr %454, i64 %457
  %459 = load double, ptr %458, align 8, !tbaa !11
  %460 = load ptr, ptr %13, align 8, !tbaa !5
  %461 = load ptr, ptr %10, align 8, !tbaa !5
  %462 = load i32, ptr %461, align 4, !tbaa !9
  %463 = sext i32 %462 to i64
  %464 = getelementptr inbounds double, ptr %460, i64 %463
  %465 = load double, ptr %464, align 8, !tbaa !11
  %466 = fmul double %459, %465
  %467 = load double, ptr %36, align 8, !tbaa !11
  %468 = fmul double %466, %467
  store double %468, ptr %31, align 8, !tbaa !11
  %469 = load double, ptr %30, align 8, !tbaa !11
  %470 = fcmp olt double %469, 0.000000e+00
  br i1 %470, label %471, label %485

471:                                              ; preds = %392
  %472 = load double, ptr %31, align 8, !tbaa !11
  %473 = fmul double %472, 2.000000e+00
  %474 = load double, ptr %30, align 8, !tbaa !11
  %475 = load double, ptr %30, align 8, !tbaa !11
  %476 = load double, ptr %31, align 8, !tbaa !11
  %477 = fmul double %476, 4.000000e+00
  %478 = load double, ptr %32, align 8, !tbaa !11
  %479 = fmul double %477, %478
  %480 = call double @llvm.fmuladd.f64(double %474, double %475, double %479)
  %481 = call double @sqrt(double noundef %480) #5
  %482 = load double, ptr %30, align 8, !tbaa !11
  %483 = fsub double %481, %482
  %484 = fdiv double %473, %483
  store double %484, ptr %63, align 8, !tbaa !11
  br label %499

485:                                              ; preds = %392
  %486 = load double, ptr %30, align 8, !tbaa !11
  %487 = load double, ptr %30, align 8, !tbaa !11
  %488 = load double, ptr %30, align 8, !tbaa !11
  %489 = load double, ptr %31, align 8, !tbaa !11
  %490 = fmul double %489, 4.000000e+00
  %491 = load double, ptr %32, align 8, !tbaa !11
  %492 = fmul double %490, %491
  %493 = call double @llvm.fmuladd.f64(double %487, double %488, double %492)
  %494 = call double @sqrt(double noundef %493) #5
  %495 = fadd double %486, %494
  %496 = load double, ptr %32, align 8, !tbaa !11
  %497 = fmul double %496, 2.000000e+00
  %498 = fdiv double %495, %497
  store double %498, ptr %63, align 8, !tbaa !11
  br label %499

499:                                              ; preds = %485, %471
  %500 = load double, ptr %63, align 8, !tbaa !11
  %501 = load ptr, ptr %12, align 8, !tbaa !5
  %502 = load ptr, ptr %10, align 8, !tbaa !5
  %503 = load i32, ptr %502, align 4, !tbaa !9
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds double, ptr %501, i64 %504
  %506 = load double, ptr %505, align 8, !tbaa !11
  %507 = load ptr, ptr %12, align 8, !tbaa !5
  %508 = load ptr, ptr %10, align 8, !tbaa !5
  %509 = load i32, ptr %508, align 4, !tbaa !9
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds double, ptr %507, i64 %510
  %512 = load double, ptr %511, align 8, !tbaa !11
  %513 = load ptr, ptr %12, align 8, !tbaa !5
  %514 = load ptr, ptr %10, align 8, !tbaa !5
  %515 = load i32, ptr %514, align 4, !tbaa !9
  %516 = sext i32 %515 to i64
  %517 = getelementptr inbounds double, ptr %513, i64 %516
  %518 = load double, ptr %517, align 8, !tbaa !11
  %519 = load double, ptr %63, align 8, !tbaa !11
  %520 = call double @llvm.fmuladd.f64(double %512, double %518, double %519)
  %521 = call double @sqrt(double noundef %520) #5
  %522 = fadd double %506, %521
  %523 = fdiv double %500, %522
  store double %523, ptr %58, align 8, !tbaa !11
  br label %524

524:                                              ; preds = %499, %389
  br label %657

525:                                              ; preds = %241
  %526 = load ptr, ptr %12, align 8, !tbaa !5
  %527 = load ptr, ptr %10, align 8, !tbaa !5
  %528 = load i32, ptr %527, align 4, !tbaa !9
  %529 = sext i32 %528 to i64
  %530 = getelementptr inbounds double, ptr %526, i64 %529
  %531 = load double, ptr %530, align 8, !tbaa !11
  %532 = load ptr, ptr %12, align 8, !tbaa !5
  %533 = load ptr, ptr %10, align 8, !tbaa !5
  %534 = load i32, ptr %533, align 4, !tbaa !9
  %535 = sub nsw i32 %534, 1
  %536 = sext i32 %535 to i64
  %537 = getelementptr inbounds double, ptr %532, i64 %536
  %538 = load double, ptr %537, align 8, !tbaa !11
  %539 = fsub double %531, %538
  %540 = load ptr, ptr %12, align 8, !tbaa !5
  %541 = load ptr, ptr %10, align 8, !tbaa !5
  %542 = load i32, ptr %541, align 4, !tbaa !9
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds double, ptr %540, i64 %543
  %545 = load double, ptr %544, align 8, !tbaa !11
  %546 = load ptr, ptr %12, align 8, !tbaa !5
  %547 = load ptr, ptr %10, align 8, !tbaa !5
  %548 = load i32, ptr %547, align 4, !tbaa !9
  %549 = sub nsw i32 %548, 1
  %550 = sext i32 %549 to i64
  %551 = getelementptr inbounds double, ptr %546, i64 %550
  %552 = load double, ptr %551, align 8, !tbaa !11
  %553 = fadd double %545, %552
  %554 = fmul double %539, %553
  store double %554, ptr %36, align 8, !tbaa !11
  %555 = load double, ptr %32, align 8, !tbaa !11
  %556 = fneg double %555
  %557 = load double, ptr %36, align 8, !tbaa !11
  %558 = load ptr, ptr %13, align 8, !tbaa !5
  %559 = load ptr, ptr %10, align 8, !tbaa !5
  %560 = load i32, ptr %559, align 4, !tbaa !9
  %561 = sub nsw i32 %560, 1
  %562 = sext i32 %561 to i64
  %563 = getelementptr inbounds double, ptr %558, i64 %562
  %564 = load double, ptr %563, align 8, !tbaa !11
  %565 = load ptr, ptr %13, align 8, !tbaa !5
  %566 = load ptr, ptr %10, align 8, !tbaa !5
  %567 = load i32, ptr %566, align 4, !tbaa !9
  %568 = sub nsw i32 %567, 1
  %569 = sext i32 %568 to i64
  %570 = getelementptr inbounds double, ptr %565, i64 %569
  %571 = load double, ptr %570, align 8, !tbaa !11
  %572 = fmul double %564, %571
  %573 = call double @llvm.fmuladd.f64(double %556, double %557, double %572)
  %574 = load ptr, ptr %13, align 8, !tbaa !5
  %575 = load ptr, ptr %10, align 8, !tbaa !5
  %576 = load i32, ptr %575, align 4, !tbaa !9
  %577 = sext i32 %576 to i64
  %578 = getelementptr inbounds double, ptr %574, i64 %577
  %579 = load double, ptr %578, align 8, !tbaa !11
  %580 = load ptr, ptr %13, align 8, !tbaa !5
  %581 = load ptr, ptr %10, align 8, !tbaa !5
  %582 = load i32, ptr %581, align 4, !tbaa !9
  %583 = sext i32 %582 to i64
  %584 = getelementptr inbounds double, ptr %580, i64 %583
  %585 = load double, ptr %584, align 8, !tbaa !11
  %586 = call double @llvm.fmuladd.f64(double %579, double %585, double %573)
  store double %586, ptr %30, align 8, !tbaa !11
  %587 = load ptr, ptr %13, align 8, !tbaa !5
  %588 = load ptr, ptr %10, align 8, !tbaa !5
  %589 = load i32, ptr %588, align 4, !tbaa !9
  %590 = sext i32 %589 to i64
  %591 = getelementptr inbounds double, ptr %587, i64 %590
  %592 = load double, ptr %591, align 8, !tbaa !11
  %593 = load ptr, ptr %13, align 8, !tbaa !5
  %594 = load ptr, ptr %10, align 8, !tbaa !5
  %595 = load i32, ptr %594, align 4, !tbaa !9
  %596 = sext i32 %595 to i64
  %597 = getelementptr inbounds double, ptr %593, i64 %596
  %598 = load double, ptr %597, align 8, !tbaa !11
  %599 = fmul double %592, %598
  %600 = load double, ptr %36, align 8, !tbaa !11
  %601 = fmul double %599, %600
  store double %601, ptr %31, align 8, !tbaa !11
  %602 = load double, ptr %30, align 8, !tbaa !11
  %603 = fcmp olt double %602, 0.000000e+00
  br i1 %603, label %604, label %618

604:                                              ; preds = %525
  %605 = load double, ptr %31, align 8, !tbaa !11
  %606 = fmul double %605, 2.000000e+00
  %607 = load double, ptr %30, align 8, !tbaa !11
  %608 = load double, ptr %30, align 8, !tbaa !11
  %609 = load double, ptr %31, align 8, !tbaa !11
  %610 = fmul double %609, 4.000000e+00
  %611 = load double, ptr %32, align 8, !tbaa !11
  %612 = fmul double %610, %611
  %613 = call double @llvm.fmuladd.f64(double %607, double %608, double %612)
  %614 = call double @sqrt(double noundef %613) #5
  %615 = load double, ptr %30, align 8, !tbaa !11
  %616 = fsub double %614, %615
  %617 = fdiv double %606, %616
  store double %617, ptr %63, align 8, !tbaa !11
  br label %632

618:                                              ; preds = %525
  %619 = load double, ptr %30, align 8, !tbaa !11
  %620 = load double, ptr %30, align 8, !tbaa !11
  %621 = load double, ptr %30, align 8, !tbaa !11
  %622 = load double, ptr %31, align 8, !tbaa !11
  %623 = fmul double %622, 4.000000e+00
  %624 = load double, ptr %32, align 8, !tbaa !11
  %625 = fmul double %623, %624
  %626 = call double @llvm.fmuladd.f64(double %620, double %621, double %625)
  %627 = call double @sqrt(double noundef %626) #5
  %628 = fadd double %619, %627
  %629 = load double, ptr %32, align 8, !tbaa !11
  %630 = fmul double %629, 2.000000e+00
  %631 = fdiv double %628, %630
  store double %631, ptr %63, align 8, !tbaa !11
  br label %632

632:                                              ; preds = %618, %604
  %633 = load double, ptr %63, align 8, !tbaa !11
  %634 = load ptr, ptr %12, align 8, !tbaa !5
  %635 = load ptr, ptr %10, align 8, !tbaa !5
  %636 = load i32, ptr %635, align 4, !tbaa !9
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds double, ptr %634, i64 %637
  %639 = load double, ptr %638, align 8, !tbaa !11
  %640 = load ptr, ptr %12, align 8, !tbaa !5
  %641 = load ptr, ptr %10, align 8, !tbaa !5
  %642 = load i32, ptr %641, align 4, !tbaa !9
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds double, ptr %640, i64 %643
  %645 = load double, ptr %644, align 8, !tbaa !11
  %646 = load ptr, ptr %12, align 8, !tbaa !5
  %647 = load ptr, ptr %10, align 8, !tbaa !5
  %648 = load i32, ptr %647, align 4, !tbaa !9
  %649 = sext i32 %648 to i64
  %650 = getelementptr inbounds double, ptr %646, i64 %649
  %651 = load double, ptr %650, align 8, !tbaa !11
  %652 = load double, ptr %63, align 8, !tbaa !11
  %653 = call double @llvm.fmuladd.f64(double %645, double %651, double %652)
  %654 = call double @sqrt(double noundef %653) #5
  %655 = fadd double %639, %654
  %656 = fdiv double %633, %655
  store double %656, ptr %58, align 8, !tbaa !11
  br label %657

657:                                              ; preds = %632, %524
  %658 = load ptr, ptr %12, align 8, !tbaa !5
  %659 = load ptr, ptr %10, align 8, !tbaa !5
  %660 = load i32, ptr %659, align 4, !tbaa !9
  %661 = sext i32 %660 to i64
  %662 = getelementptr inbounds double, ptr %658, i64 %661
  %663 = load double, ptr %662, align 8, !tbaa !11
  %664 = load double, ptr %58, align 8, !tbaa !11
  %665 = fadd double %663, %664
  %666 = load ptr, ptr %16, align 8, !tbaa !5
  store double %665, ptr %666, align 8, !tbaa !11
  %667 = load ptr, ptr %10, align 8, !tbaa !5
  %668 = load i32, ptr %667, align 4, !tbaa !9
  store i32 %668, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %669

669:                                              ; preds = %710, %657
  %670 = load i32, ptr %33, align 4, !tbaa !9
  %671 = load i32, ptr %19, align 4, !tbaa !9
  %672 = icmp sle i32 %670, %671
  br i1 %672, label %673, label %713

673:                                              ; preds = %669
  %674 = load ptr, ptr %12, align 8, !tbaa !5
  %675 = load i32, ptr %33, align 4, !tbaa !9
  %676 = sext i32 %675 to i64
  %677 = getelementptr inbounds double, ptr %674, i64 %676
  %678 = load double, ptr %677, align 8, !tbaa !11
  %679 = load ptr, ptr %12, align 8, !tbaa !5
  %680 = load ptr, ptr %10, align 8, !tbaa !5
  %681 = load i32, ptr %680, align 4, !tbaa !9
  %682 = sext i32 %681 to i64
  %683 = getelementptr inbounds double, ptr %679, i64 %682
  %684 = load double, ptr %683, align 8, !tbaa !11
  %685 = fsub double %678, %684
  %686 = load double, ptr %58, align 8, !tbaa !11
  %687 = fsub double %685, %686
  %688 = load ptr, ptr %14, align 8, !tbaa !5
  %689 = load i32, ptr %33, align 4, !tbaa !9
  %690 = sext i32 %689 to i64
  %691 = getelementptr inbounds double, ptr %688, i64 %690
  store double %687, ptr %691, align 8, !tbaa !11
  %692 = load ptr, ptr %12, align 8, !tbaa !5
  %693 = load i32, ptr %33, align 4, !tbaa !9
  %694 = sext i32 %693 to i64
  %695 = getelementptr inbounds double, ptr %692, i64 %694
  %696 = load double, ptr %695, align 8, !tbaa !11
  %697 = load ptr, ptr %12, align 8, !tbaa !5
  %698 = load ptr, ptr %10, align 8, !tbaa !5
  %699 = load i32, ptr %698, align 4, !tbaa !9
  %700 = sext i32 %699 to i64
  %701 = getelementptr inbounds double, ptr %697, i64 %700
  %702 = load double, ptr %701, align 8, !tbaa !11
  %703 = fadd double %696, %702
  %704 = load double, ptr %58, align 8, !tbaa !11
  %705 = fadd double %703, %704
  %706 = load ptr, ptr %17, align 8, !tbaa !5
  %707 = load i32, ptr %33, align 4, !tbaa !9
  %708 = sext i32 %707 to i64
  %709 = getelementptr inbounds double, ptr %706, i64 %708
  store double %705, ptr %709, align 8, !tbaa !11
  br label %710

710:                                              ; preds = %673
  %711 = load i32, ptr %33, align 4, !tbaa !9
  %712 = add nsw i32 %711, 1
  store i32 %712, ptr %33, align 4, !tbaa !9
  br label %669, !llvm.loop !16

713:                                              ; preds = %669
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  store double 0.000000e+00, ptr %59, align 8, !tbaa !11
  store double 0.000000e+00, ptr %50, align 8, !tbaa !11
  %714 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %714, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %715

715:                                              ; preds = %752, %713
  %716 = load i32, ptr %33, align 4, !tbaa !9
  %717 = load i32, ptr %19, align 4, !tbaa !9
  %718 = icmp sle i32 %716, %717
  br i1 %718, label %719, label %755

719:                                              ; preds = %715
  %720 = load ptr, ptr %13, align 8, !tbaa !5
  %721 = load i32, ptr %33, align 4, !tbaa !9
  %722 = sext i32 %721 to i64
  %723 = getelementptr inbounds double, ptr %720, i64 %722
  %724 = load double, ptr %723, align 8, !tbaa !11
  %725 = load ptr, ptr %14, align 8, !tbaa !5
  %726 = load i32, ptr %33, align 4, !tbaa !9
  %727 = sext i32 %726 to i64
  %728 = getelementptr inbounds double, ptr %725, i64 %727
  %729 = load double, ptr %728, align 8, !tbaa !11
  %730 = load ptr, ptr %17, align 8, !tbaa !5
  %731 = load i32, ptr %33, align 4, !tbaa !9
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds double, ptr %730, i64 %732
  %734 = load double, ptr %733, align 8, !tbaa !11
  %735 = fmul double %729, %734
  %736 = fdiv double %724, %735
  store double %736, ptr %26, align 8, !tbaa !11
  %737 = load ptr, ptr %13, align 8, !tbaa !5
  %738 = load i32, ptr %33, align 4, !tbaa !9
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds double, ptr %737, i64 %739
  %741 = load double, ptr %740, align 8, !tbaa !11
  %742 = load double, ptr %26, align 8, !tbaa !11
  %743 = load double, ptr %59, align 8, !tbaa !11
  %744 = call double @llvm.fmuladd.f64(double %741, double %742, double %743)
  store double %744, ptr %59, align 8, !tbaa !11
  %745 = load double, ptr %26, align 8, !tbaa !11
  %746 = load double, ptr %26, align 8, !tbaa !11
  %747 = load double, ptr %23, align 8, !tbaa !11
  %748 = call double @llvm.fmuladd.f64(double %745, double %746, double %747)
  store double %748, ptr %23, align 8, !tbaa !11
  %749 = load double, ptr %59, align 8, !tbaa !11
  %750 = load double, ptr %50, align 8, !tbaa !11
  %751 = fadd double %750, %749
  store double %751, ptr %50, align 8, !tbaa !11
  br label %752

752:                                              ; preds = %719
  %753 = load i32, ptr %33, align 4, !tbaa !9
  %754 = add nsw i32 %753, 1
  store i32 %754, ptr %33, align 4, !tbaa !9
  br label %715, !llvm.loop !17

755:                                              ; preds = %715
  %756 = load double, ptr %50, align 8, !tbaa !11
  %757 = fcmp oge double %756, 0.000000e+00
  br i1 %757, label %758, label %760

758:                                              ; preds = %755
  %759 = load double, ptr %50, align 8, !tbaa !11
  br label %763

760:                                              ; preds = %755
  %761 = load double, ptr %50, align 8, !tbaa !11
  %762 = fneg double %761
  br label %763

763:                                              ; preds = %760, %758
  %764 = phi double [ %759, %758 ], [ %762, %760 ]
  store double %764, ptr %50, align 8, !tbaa !11
  %765 = load ptr, ptr %13, align 8, !tbaa !5
  %766 = load ptr, ptr %10, align 8, !tbaa !5
  %767 = load i32, ptr %766, align 4, !tbaa !9
  %768 = sext i32 %767 to i64
  %769 = getelementptr inbounds double, ptr %765, i64 %768
  %770 = load double, ptr %769, align 8, !tbaa !11
  %771 = load ptr, ptr %14, align 8, !tbaa !5
  %772 = load ptr, ptr %10, align 8, !tbaa !5
  %773 = load i32, ptr %772, align 4, !tbaa !9
  %774 = sext i32 %773 to i64
  %775 = getelementptr inbounds double, ptr %771, i64 %774
  %776 = load double, ptr %775, align 8, !tbaa !11
  %777 = load ptr, ptr %17, align 8, !tbaa !5
  %778 = load ptr, ptr %10, align 8, !tbaa !5
  %779 = load i32, ptr %778, align 4, !tbaa !9
  %780 = sext i32 %779 to i64
  %781 = getelementptr inbounds double, ptr %777, i64 %780
  %782 = load double, ptr %781, align 8, !tbaa !11
  %783 = fmul double %776, %782
  %784 = fdiv double %770, %783
  store double %784, ptr %26, align 8, !tbaa !11
  %785 = load ptr, ptr %13, align 8, !tbaa !5
  %786 = load ptr, ptr %10, align 8, !tbaa !5
  %787 = load i32, ptr %786, align 4, !tbaa !9
  %788 = sext i32 %787 to i64
  %789 = getelementptr inbounds double, ptr %785, i64 %788
  %790 = load double, ptr %789, align 8, !tbaa !11
  %791 = load double, ptr %26, align 8, !tbaa !11
  %792 = fmul double %790, %791
  store double %792, ptr %56, align 8, !tbaa !11
  %793 = load double, ptr %26, align 8, !tbaa !11
  %794 = load double, ptr %26, align 8, !tbaa !11
  %795 = fmul double %793, %794
  store double %795, ptr %21, align 8, !tbaa !11
  %796 = load double, ptr %56, align 8, !tbaa !11
  %797 = fneg double %796
  %798 = load double, ptr %59, align 8, !tbaa !11
  %799 = fsub double %797, %798
  %800 = load double, ptr %50, align 8, !tbaa !11
  %801 = call double @llvm.fmuladd.f64(double %799, double 8.000000e+00, double %800)
  %802 = load double, ptr %56, align 8, !tbaa !11
  %803 = fsub double %801, %802
  %804 = load double, ptr %52, align 8, !tbaa !11
  %805 = fadd double %803, %804
  store double %805, ptr %50, align 8, !tbaa !11
  %806 = load double, ptr %52, align 8, !tbaa !11
  %807 = load double, ptr %56, align 8, !tbaa !11
  %808 = fadd double %806, %807
  %809 = load double, ptr %59, align 8, !tbaa !11
  %810 = fadd double %808, %809
  store double %810, ptr %34, align 8, !tbaa !11
  %811 = load double, ptr %34, align 8, !tbaa !11
  %812 = fcmp oge double %811, 0.000000e+00
  br i1 %812, label %813, label %815

813:                                              ; preds = %763
  %814 = load double, ptr %34, align 8, !tbaa !11
  br label %818

815:                                              ; preds = %763
  %816 = load double, ptr %34, align 8, !tbaa !11
  %817 = fneg double %816
  br label %818

818:                                              ; preds = %815, %813
  %819 = phi double [ %814, %813 ], [ %817, %815 ]
  %820 = load double, ptr %57, align 8, !tbaa !11
  %821 = load double, ptr %50, align 8, !tbaa !11
  %822 = fmul double %820, %821
  %823 = fcmp ole double %819, %822
  br i1 %823, label %824, label %825

824:                                              ; preds = %818
  br label %4239

825:                                              ; preds = %818
  %826 = load i32, ptr %38, align 4, !tbaa !9
  %827 = add nsw i32 %826, 1
  store i32 %827, ptr %38, align 4, !tbaa !9
  %828 = load ptr, ptr %17, align 8, !tbaa !5
  %829 = load ptr, ptr %10, align 8, !tbaa !5
  %830 = load i32, ptr %829, align 4, !tbaa !9
  %831 = sub nsw i32 %830, 1
  %832 = sext i32 %831 to i64
  %833 = getelementptr inbounds double, ptr %828, i64 %832
  %834 = load double, ptr %833, align 8, !tbaa !11
  %835 = load ptr, ptr %14, align 8, !tbaa !5
  %836 = load ptr, ptr %10, align 8, !tbaa !5
  %837 = load i32, ptr %836, align 4, !tbaa !9
  %838 = sub nsw i32 %837, 1
  %839 = sext i32 %838 to i64
  %840 = getelementptr inbounds double, ptr %835, i64 %839
  %841 = load double, ptr %840, align 8, !tbaa !11
  %842 = fmul double %834, %841
  store double %842, ptr %44, align 8, !tbaa !11
  %843 = load ptr, ptr %17, align 8, !tbaa !5
  %844 = load ptr, ptr %10, align 8, !tbaa !5
  %845 = load i32, ptr %844, align 4, !tbaa !9
  %846 = sext i32 %845 to i64
  %847 = getelementptr inbounds double, ptr %843, i64 %846
  %848 = load double, ptr %847, align 8, !tbaa !11
  %849 = load ptr, ptr %14, align 8, !tbaa !5
  %850 = load ptr, ptr %10, align 8, !tbaa !5
  %851 = load i32, ptr %850, align 4, !tbaa !9
  %852 = sext i32 %851 to i64
  %853 = getelementptr inbounds double, ptr %849, i64 %852
  %854 = load double, ptr %853, align 8, !tbaa !11
  %855 = fmul double %848, %854
  store double %855, ptr %41, align 8, !tbaa !11
  %856 = load double, ptr %34, align 8, !tbaa !11
  %857 = load double, ptr %44, align 8, !tbaa !11
  %858 = load double, ptr %23, align 8, !tbaa !11
  %859 = fneg double %857
  %860 = call double @llvm.fmuladd.f64(double %859, double %858, double %856)
  %861 = load double, ptr %41, align 8, !tbaa !11
  %862 = load double, ptr %21, align 8, !tbaa !11
  %863 = fneg double %861
  %864 = call double @llvm.fmuladd.f64(double %863, double %862, double %860)
  store double %864, ptr %32, align 8, !tbaa !11
  %865 = load double, ptr %41, align 8, !tbaa !11
  %866 = load double, ptr %44, align 8, !tbaa !11
  %867 = fadd double %865, %866
  %868 = load double, ptr %34, align 8, !tbaa !11
  %869 = load double, ptr %41, align 8, !tbaa !11
  %870 = load double, ptr %44, align 8, !tbaa !11
  %871 = fmul double %869, %870
  %872 = load double, ptr %23, align 8, !tbaa !11
  %873 = load double, ptr %21, align 8, !tbaa !11
  %874 = fadd double %872, %873
  %875 = fmul double %871, %874
  %876 = fneg double %875
  %877 = call double @llvm.fmuladd.f64(double %867, double %868, double %876)
  store double %877, ptr %30, align 8, !tbaa !11
  %878 = load double, ptr %41, align 8, !tbaa !11
  %879 = load double, ptr %44, align 8, !tbaa !11
  %880 = fmul double %878, %879
  %881 = load double, ptr %34, align 8, !tbaa !11
  %882 = fmul double %880, %881
  store double %882, ptr %31, align 8, !tbaa !11
  %883 = load double, ptr %32, align 8, !tbaa !11
  %884 = fcmp olt double %883, 0.000000e+00
  br i1 %884, label %885, label %895

885:                                              ; preds = %825
  %886 = load double, ptr %32, align 8, !tbaa !11
  %887 = fcmp oge double %886, 0.000000e+00
  br i1 %887, label %888, label %890

888:                                              ; preds = %885
  %889 = load double, ptr %32, align 8, !tbaa !11
  br label %893

890:                                              ; preds = %885
  %891 = load double, ptr %32, align 8, !tbaa !11
  %892 = fneg double %891
  br label %893

893:                                              ; preds = %890, %888
  %894 = phi double [ %889, %888 ], [ %892, %890 ]
  store double %894, ptr %32, align 8, !tbaa !11
  br label %895

895:                                              ; preds = %893, %825
  %896 = load double, ptr %32, align 8, !tbaa !11
  %897 = fcmp oeq double %896, 0.000000e+00
  br i1 %897, label %898, label %907

898:                                              ; preds = %895
  %899 = load ptr, ptr %15, align 8, !tbaa !5
  %900 = load double, ptr %899, align 8, !tbaa !11
  %901 = load ptr, ptr %16, align 8, !tbaa !5
  %902 = load double, ptr %901, align 8, !tbaa !11
  %903 = load ptr, ptr %16, align 8, !tbaa !5
  %904 = load double, ptr %903, align 8, !tbaa !11
  %905 = fneg double %902
  %906 = call double @llvm.fmuladd.f64(double %905, double %904, double %900)
  store double %906, ptr %55, align 8, !tbaa !11
  br label %959

907:                                              ; preds = %895
  %908 = load double, ptr %30, align 8, !tbaa !11
  %909 = fcmp oge double %908, 0.000000e+00
  br i1 %909, label %910, label %934

910:                                              ; preds = %907
  %911 = load double, ptr %30, align 8, !tbaa !11
  %912 = load double, ptr %30, align 8, !tbaa !11
  %913 = load double, ptr %30, align 8, !tbaa !11
  %914 = load double, ptr %31, align 8, !tbaa !11
  %915 = fmul double %914, 4.000000e+00
  %916 = load double, ptr %32, align 8, !tbaa !11
  %917 = fmul double %915, %916
  %918 = fneg double %917
  %919 = call double @llvm.fmuladd.f64(double %912, double %913, double %918)
  store double %919, ptr %20, align 8, !tbaa !11
  %920 = load double, ptr %20, align 8, !tbaa !11
  %921 = fcmp oge double %920, 0.000000e+00
  br i1 %921, label %922, label %924

922:                                              ; preds = %910
  %923 = load double, ptr %20, align 8, !tbaa !11
  br label %927

924:                                              ; preds = %910
  %925 = load double, ptr %20, align 8, !tbaa !11
  %926 = fneg double %925
  br label %927

927:                                              ; preds = %924, %922
  %928 = phi double [ %923, %922 ], [ %926, %924 ]
  %929 = call double @sqrt(double noundef %928) #5
  %930 = fadd double %911, %929
  %931 = load double, ptr %32, align 8, !tbaa !11
  %932 = fmul double %931, 2.000000e+00
  %933 = fdiv double %930, %932
  store double %933, ptr %55, align 8, !tbaa !11
  br label %958

934:                                              ; preds = %907
  %935 = load double, ptr %31, align 8, !tbaa !11
  %936 = fmul double %935, 2.000000e+00
  %937 = load double, ptr %30, align 8, !tbaa !11
  %938 = load double, ptr %30, align 8, !tbaa !11
  %939 = load double, ptr %30, align 8, !tbaa !11
  %940 = load double, ptr %31, align 8, !tbaa !11
  %941 = fmul double %940, 4.000000e+00
  %942 = load double, ptr %32, align 8, !tbaa !11
  %943 = fmul double %941, %942
  %944 = fneg double %943
  %945 = call double @llvm.fmuladd.f64(double %938, double %939, double %944)
  store double %945, ptr %20, align 8, !tbaa !11
  %946 = load double, ptr %20, align 8, !tbaa !11
  %947 = fcmp oge double %946, 0.000000e+00
  br i1 %947, label %948, label %950

948:                                              ; preds = %934
  %949 = load double, ptr %20, align 8, !tbaa !11
  br label %953

950:                                              ; preds = %934
  %951 = load double, ptr %20, align 8, !tbaa !11
  %952 = fneg double %951
  br label %953

953:                                              ; preds = %950, %948
  %954 = phi double [ %949, %948 ], [ %952, %950 ]
  %955 = call double @sqrt(double noundef %954) #5
  %956 = fsub double %937, %955
  %957 = fdiv double %936, %956
  store double %957, ptr %55, align 8, !tbaa !11
  br label %958

958:                                              ; preds = %953, %927
  br label %959

959:                                              ; preds = %958, %898
  %960 = load double, ptr %34, align 8, !tbaa !11
  %961 = load double, ptr %55, align 8, !tbaa !11
  %962 = fmul double %960, %961
  %963 = fcmp ogt double %962, 0.000000e+00
  br i1 %963, label %964, label %971

964:                                              ; preds = %959
  %965 = load double, ptr %34, align 8, !tbaa !11
  %966 = fneg double %965
  %967 = load double, ptr %23, align 8, !tbaa !11
  %968 = load double, ptr %21, align 8, !tbaa !11
  %969 = fadd double %967, %968
  %970 = fdiv double %966, %969
  store double %970, ptr %55, align 8, !tbaa !11
  br label %971

971:                                              ; preds = %964, %959
  %972 = load double, ptr %55, align 8, !tbaa !11
  %973 = load double, ptr %41, align 8, !tbaa !11
  %974 = fsub double %972, %973
  store double %974, ptr %26, align 8, !tbaa !11
  %975 = load double, ptr %26, align 8, !tbaa !11
  %976 = load ptr, ptr %15, align 8, !tbaa !5
  %977 = load double, ptr %976, align 8, !tbaa !11
  %978 = fcmp ogt double %975, %977
  br i1 %978, label %979, label %984

979:                                              ; preds = %971
  %980 = load ptr, ptr %15, align 8, !tbaa !5
  %981 = load double, ptr %980, align 8, !tbaa !11
  %982 = load double, ptr %41, align 8, !tbaa !11
  %983 = fadd double %981, %982
  store double %983, ptr %55, align 8, !tbaa !11
  br label %984

984:                                              ; preds = %979, %971
  %985 = load ptr, ptr %16, align 8, !tbaa !5
  %986 = load double, ptr %985, align 8, !tbaa !11
  %987 = load double, ptr %55, align 8, !tbaa !11
  %988 = load ptr, ptr %16, align 8, !tbaa !5
  %989 = load double, ptr %988, align 8, !tbaa !11
  %990 = load ptr, ptr %16, align 8, !tbaa !5
  %991 = load double, ptr %990, align 8, !tbaa !11
  %992 = call double @llvm.fmuladd.f64(double %989, double %991, double %987)
  %993 = call double @sqrt(double noundef %992) #5
  %994 = fadd double %986, %993
  %995 = load double, ptr %55, align 8, !tbaa !11
  %996 = fdiv double %995, %994
  store double %996, ptr %55, align 8, !tbaa !11
  %997 = load double, ptr %55, align 8, !tbaa !11
  %998 = load double, ptr %58, align 8, !tbaa !11
  %999 = fadd double %998, %997
  store double %999, ptr %58, align 8, !tbaa !11
  %1000 = load double, ptr %55, align 8, !tbaa !11
  %1001 = load ptr, ptr %16, align 8, !tbaa !5
  %1002 = load double, ptr %1001, align 8, !tbaa !11
  %1003 = fadd double %1002, %1000
  store double %1003, ptr %1001, align 8, !tbaa !11
  %1004 = load ptr, ptr %10, align 8, !tbaa !5
  %1005 = load i32, ptr %1004, align 4, !tbaa !9
  store i32 %1005, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %1006

1006:                                             ; preds = %1025, %984
  %1007 = load i32, ptr %33, align 4, !tbaa !9
  %1008 = load i32, ptr %19, align 4, !tbaa !9
  %1009 = icmp sle i32 %1007, %1008
  br i1 %1009, label %1010, label %1028

1010:                                             ; preds = %1006
  %1011 = load double, ptr %55, align 8, !tbaa !11
  %1012 = load ptr, ptr %14, align 8, !tbaa !5
  %1013 = load i32, ptr %33, align 4, !tbaa !9
  %1014 = sext i32 %1013 to i64
  %1015 = getelementptr inbounds double, ptr %1012, i64 %1014
  %1016 = load double, ptr %1015, align 8, !tbaa !11
  %1017 = fsub double %1016, %1011
  store double %1017, ptr %1015, align 8, !tbaa !11
  %1018 = load double, ptr %55, align 8, !tbaa !11
  %1019 = load ptr, ptr %17, align 8, !tbaa !5
  %1020 = load i32, ptr %33, align 4, !tbaa !9
  %1021 = sext i32 %1020 to i64
  %1022 = getelementptr inbounds double, ptr %1019, i64 %1021
  %1023 = load double, ptr %1022, align 8, !tbaa !11
  %1024 = fadd double %1023, %1018
  store double %1024, ptr %1022, align 8, !tbaa !11
  br label %1025

1025:                                             ; preds = %1010
  %1026 = load i32, ptr %33, align 4, !tbaa !9
  %1027 = add nsw i32 %1026, 1
  store i32 %1027, ptr %33, align 4, !tbaa !9
  br label %1006, !llvm.loop !18

1028:                                             ; preds = %1006
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  store double 0.000000e+00, ptr %59, align 8, !tbaa !11
  store double 0.000000e+00, ptr %50, align 8, !tbaa !11
  %1029 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %1029, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %1030

1030:                                             ; preds = %1067, %1028
  %1031 = load i32, ptr %33, align 4, !tbaa !9
  %1032 = load i32, ptr %19, align 4, !tbaa !9
  %1033 = icmp sle i32 %1031, %1032
  br i1 %1033, label %1034, label %1070

1034:                                             ; preds = %1030
  %1035 = load ptr, ptr %13, align 8, !tbaa !5
  %1036 = load i32, ptr %33, align 4, !tbaa !9
  %1037 = sext i32 %1036 to i64
  %1038 = getelementptr inbounds double, ptr %1035, i64 %1037
  %1039 = load double, ptr %1038, align 8, !tbaa !11
  %1040 = load ptr, ptr %17, align 8, !tbaa !5
  %1041 = load i32, ptr %33, align 4, !tbaa !9
  %1042 = sext i32 %1041 to i64
  %1043 = getelementptr inbounds double, ptr %1040, i64 %1042
  %1044 = load double, ptr %1043, align 8, !tbaa !11
  %1045 = load ptr, ptr %14, align 8, !tbaa !5
  %1046 = load i32, ptr %33, align 4, !tbaa !9
  %1047 = sext i32 %1046 to i64
  %1048 = getelementptr inbounds double, ptr %1045, i64 %1047
  %1049 = load double, ptr %1048, align 8, !tbaa !11
  %1050 = fmul double %1044, %1049
  %1051 = fdiv double %1039, %1050
  store double %1051, ptr %26, align 8, !tbaa !11
  %1052 = load ptr, ptr %13, align 8, !tbaa !5
  %1053 = load i32, ptr %33, align 4, !tbaa !9
  %1054 = sext i32 %1053 to i64
  %1055 = getelementptr inbounds double, ptr %1052, i64 %1054
  %1056 = load double, ptr %1055, align 8, !tbaa !11
  %1057 = load double, ptr %26, align 8, !tbaa !11
  %1058 = load double, ptr %59, align 8, !tbaa !11
  %1059 = call double @llvm.fmuladd.f64(double %1056, double %1057, double %1058)
  store double %1059, ptr %59, align 8, !tbaa !11
  %1060 = load double, ptr %26, align 8, !tbaa !11
  %1061 = load double, ptr %26, align 8, !tbaa !11
  %1062 = load double, ptr %23, align 8, !tbaa !11
  %1063 = call double @llvm.fmuladd.f64(double %1060, double %1061, double %1062)
  store double %1063, ptr %23, align 8, !tbaa !11
  %1064 = load double, ptr %59, align 8, !tbaa !11
  %1065 = load double, ptr %50, align 8, !tbaa !11
  %1066 = fadd double %1065, %1064
  store double %1066, ptr %50, align 8, !tbaa !11
  br label %1067

1067:                                             ; preds = %1034
  %1068 = load i32, ptr %33, align 4, !tbaa !9
  %1069 = add nsw i32 %1068, 1
  store i32 %1069, ptr %33, align 4, !tbaa !9
  br label %1030, !llvm.loop !19

1070:                                             ; preds = %1030
  %1071 = load double, ptr %50, align 8, !tbaa !11
  %1072 = fcmp oge double %1071, 0.000000e+00
  br i1 %1072, label %1073, label %1075

1073:                                             ; preds = %1070
  %1074 = load double, ptr %50, align 8, !tbaa !11
  br label %1078

1075:                                             ; preds = %1070
  %1076 = load double, ptr %50, align 8, !tbaa !11
  %1077 = fneg double %1076
  br label %1078

1078:                                             ; preds = %1075, %1073
  %1079 = phi double [ %1074, %1073 ], [ %1077, %1075 ]
  store double %1079, ptr %50, align 8, !tbaa !11
  %1080 = load ptr, ptr %17, align 8, !tbaa !5
  %1081 = load ptr, ptr %10, align 8, !tbaa !5
  %1082 = load i32, ptr %1081, align 4, !tbaa !9
  %1083 = sext i32 %1082 to i64
  %1084 = getelementptr inbounds double, ptr %1080, i64 %1083
  %1085 = load double, ptr %1084, align 8, !tbaa !11
  %1086 = load ptr, ptr %14, align 8, !tbaa !5
  %1087 = load ptr, ptr %10, align 8, !tbaa !5
  %1088 = load i32, ptr %1087, align 4, !tbaa !9
  %1089 = sext i32 %1088 to i64
  %1090 = getelementptr inbounds double, ptr %1086, i64 %1089
  %1091 = load double, ptr %1090, align 8, !tbaa !11
  %1092 = fmul double %1085, %1091
  store double %1092, ptr %63, align 8, !tbaa !11
  %1093 = load ptr, ptr %13, align 8, !tbaa !5
  %1094 = load ptr, ptr %10, align 8, !tbaa !5
  %1095 = load i32, ptr %1094, align 4, !tbaa !9
  %1096 = sext i32 %1095 to i64
  %1097 = getelementptr inbounds double, ptr %1093, i64 %1096
  %1098 = load double, ptr %1097, align 8, !tbaa !11
  %1099 = load double, ptr %63, align 8, !tbaa !11
  %1100 = fdiv double %1098, %1099
  store double %1100, ptr %26, align 8, !tbaa !11
  %1101 = load ptr, ptr %13, align 8, !tbaa !5
  %1102 = load ptr, ptr %10, align 8, !tbaa !5
  %1103 = load i32, ptr %1102, align 4, !tbaa !9
  %1104 = sext i32 %1103 to i64
  %1105 = getelementptr inbounds double, ptr %1101, i64 %1104
  %1106 = load double, ptr %1105, align 8, !tbaa !11
  %1107 = load double, ptr %26, align 8, !tbaa !11
  %1108 = fmul double %1106, %1107
  store double %1108, ptr %56, align 8, !tbaa !11
  %1109 = load double, ptr %26, align 8, !tbaa !11
  %1110 = load double, ptr %26, align 8, !tbaa !11
  %1111 = fmul double %1109, %1110
  store double %1111, ptr %21, align 8, !tbaa !11
  %1112 = load double, ptr %56, align 8, !tbaa !11
  %1113 = fneg double %1112
  %1114 = load double, ptr %59, align 8, !tbaa !11
  %1115 = fsub double %1113, %1114
  %1116 = load double, ptr %50, align 8, !tbaa !11
  %1117 = call double @llvm.fmuladd.f64(double %1115, double 8.000000e+00, double %1116)
  %1118 = load double, ptr %56, align 8, !tbaa !11
  %1119 = fsub double %1117, %1118
  %1120 = load double, ptr %52, align 8, !tbaa !11
  %1121 = fadd double %1119, %1120
  store double %1121, ptr %50, align 8, !tbaa !11
  %1122 = load double, ptr %52, align 8, !tbaa !11
  %1123 = load double, ptr %56, align 8, !tbaa !11
  %1124 = fadd double %1122, %1123
  %1125 = load double, ptr %59, align 8, !tbaa !11
  %1126 = fadd double %1124, %1125
  store double %1126, ptr %34, align 8, !tbaa !11
  %1127 = load i32, ptr %38, align 4, !tbaa !9
  %1128 = add nsw i32 %1127, 1
  store i32 %1128, ptr %25, align 4, !tbaa !9
  %1129 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %1129, ptr %38, align 4, !tbaa !9
  br label %1130

1130:                                             ; preds = %1418, %1078
  %1131 = load i32, ptr %38, align 4, !tbaa !9
  %1132 = icmp sle i32 %1131, 400
  br i1 %1132, label %1133, label %1421

1133:                                             ; preds = %1130
  %1134 = load double, ptr %34, align 8, !tbaa !11
  %1135 = fcmp oge double %1134, 0.000000e+00
  br i1 %1135, label %1136, label %1138

1136:                                             ; preds = %1133
  %1137 = load double, ptr %34, align 8, !tbaa !11
  br label %1141

1138:                                             ; preds = %1133
  %1139 = load double, ptr %34, align 8, !tbaa !11
  %1140 = fneg double %1139
  br label %1141

1141:                                             ; preds = %1138, %1136
  %1142 = phi double [ %1137, %1136 ], [ %1140, %1138 ]
  %1143 = load double, ptr %57, align 8, !tbaa !11
  %1144 = load double, ptr %50, align 8, !tbaa !11
  %1145 = fmul double %1143, %1144
  %1146 = fcmp ole double %1142, %1145
  br i1 %1146, label %1147, label %1148

1147:                                             ; preds = %1141
  br label %4239

1148:                                             ; preds = %1141
  %1149 = load ptr, ptr %17, align 8, !tbaa !5
  %1150 = load ptr, ptr %10, align 8, !tbaa !5
  %1151 = load i32, ptr %1150, align 4, !tbaa !9
  %1152 = sub nsw i32 %1151, 1
  %1153 = sext i32 %1152 to i64
  %1154 = getelementptr inbounds double, ptr %1149, i64 %1153
  %1155 = load double, ptr %1154, align 8, !tbaa !11
  %1156 = load ptr, ptr %14, align 8, !tbaa !5
  %1157 = load ptr, ptr %10, align 8, !tbaa !5
  %1158 = load i32, ptr %1157, align 4, !tbaa !9
  %1159 = sub nsw i32 %1158, 1
  %1160 = sext i32 %1159 to i64
  %1161 = getelementptr inbounds double, ptr %1156, i64 %1160
  %1162 = load double, ptr %1161, align 8, !tbaa !11
  %1163 = fmul double %1155, %1162
  store double %1163, ptr %44, align 8, !tbaa !11
  %1164 = load ptr, ptr %17, align 8, !tbaa !5
  %1165 = load ptr, ptr %10, align 8, !tbaa !5
  %1166 = load i32, ptr %1165, align 4, !tbaa !9
  %1167 = sext i32 %1166 to i64
  %1168 = getelementptr inbounds double, ptr %1164, i64 %1167
  %1169 = load double, ptr %1168, align 8, !tbaa !11
  %1170 = load ptr, ptr %14, align 8, !tbaa !5
  %1171 = load ptr, ptr %10, align 8, !tbaa !5
  %1172 = load i32, ptr %1171, align 4, !tbaa !9
  %1173 = sext i32 %1172 to i64
  %1174 = getelementptr inbounds double, ptr %1170, i64 %1173
  %1175 = load double, ptr %1174, align 8, !tbaa !11
  %1176 = fmul double %1169, %1175
  store double %1176, ptr %41, align 8, !tbaa !11
  %1177 = load double, ptr %34, align 8, !tbaa !11
  %1178 = load double, ptr %44, align 8, !tbaa !11
  %1179 = load double, ptr %23, align 8, !tbaa !11
  %1180 = fneg double %1178
  %1181 = call double @llvm.fmuladd.f64(double %1180, double %1179, double %1177)
  %1182 = load double, ptr %41, align 8, !tbaa !11
  %1183 = load double, ptr %21, align 8, !tbaa !11
  %1184 = fneg double %1182
  %1185 = call double @llvm.fmuladd.f64(double %1184, double %1183, double %1181)
  store double %1185, ptr %32, align 8, !tbaa !11
  %1186 = load double, ptr %41, align 8, !tbaa !11
  %1187 = load double, ptr %44, align 8, !tbaa !11
  %1188 = fadd double %1186, %1187
  %1189 = load double, ptr %34, align 8, !tbaa !11
  %1190 = load double, ptr %44, align 8, !tbaa !11
  %1191 = load double, ptr %41, align 8, !tbaa !11
  %1192 = fmul double %1190, %1191
  %1193 = load double, ptr %23, align 8, !tbaa !11
  %1194 = load double, ptr %21, align 8, !tbaa !11
  %1195 = fadd double %1193, %1194
  %1196 = fmul double %1192, %1195
  %1197 = fneg double %1196
  %1198 = call double @llvm.fmuladd.f64(double %1188, double %1189, double %1197)
  store double %1198, ptr %30, align 8, !tbaa !11
  %1199 = load double, ptr %44, align 8, !tbaa !11
  %1200 = load double, ptr %41, align 8, !tbaa !11
  %1201 = fmul double %1199, %1200
  %1202 = load double, ptr %34, align 8, !tbaa !11
  %1203 = fmul double %1201, %1202
  store double %1203, ptr %31, align 8, !tbaa !11
  %1204 = load double, ptr %30, align 8, !tbaa !11
  %1205 = fcmp oge double %1204, 0.000000e+00
  br i1 %1205, label %1206, label %1230

1206:                                             ; preds = %1148
  %1207 = load double, ptr %30, align 8, !tbaa !11
  %1208 = load double, ptr %30, align 8, !tbaa !11
  %1209 = load double, ptr %30, align 8, !tbaa !11
  %1210 = load double, ptr %31, align 8, !tbaa !11
  %1211 = fmul double %1210, 4.000000e+00
  %1212 = load double, ptr %32, align 8, !tbaa !11
  %1213 = fmul double %1211, %1212
  %1214 = fneg double %1213
  %1215 = call double @llvm.fmuladd.f64(double %1208, double %1209, double %1214)
  store double %1215, ptr %20, align 8, !tbaa !11
  %1216 = load double, ptr %20, align 8, !tbaa !11
  %1217 = fcmp oge double %1216, 0.000000e+00
  br i1 %1217, label %1218, label %1220

1218:                                             ; preds = %1206
  %1219 = load double, ptr %20, align 8, !tbaa !11
  br label %1223

1220:                                             ; preds = %1206
  %1221 = load double, ptr %20, align 8, !tbaa !11
  %1222 = fneg double %1221
  br label %1223

1223:                                             ; preds = %1220, %1218
  %1224 = phi double [ %1219, %1218 ], [ %1222, %1220 ]
  %1225 = call double @sqrt(double noundef %1224) #5
  %1226 = fadd double %1207, %1225
  %1227 = load double, ptr %32, align 8, !tbaa !11
  %1228 = fmul double %1227, 2.000000e+00
  %1229 = fdiv double %1226, %1228
  store double %1229, ptr %55, align 8, !tbaa !11
  br label %1254

1230:                                             ; preds = %1148
  %1231 = load double, ptr %31, align 8, !tbaa !11
  %1232 = fmul double %1231, 2.000000e+00
  %1233 = load double, ptr %30, align 8, !tbaa !11
  %1234 = load double, ptr %30, align 8, !tbaa !11
  %1235 = load double, ptr %30, align 8, !tbaa !11
  %1236 = load double, ptr %31, align 8, !tbaa !11
  %1237 = fmul double %1236, 4.000000e+00
  %1238 = load double, ptr %32, align 8, !tbaa !11
  %1239 = fmul double %1237, %1238
  %1240 = fneg double %1239
  %1241 = call double @llvm.fmuladd.f64(double %1234, double %1235, double %1240)
  store double %1241, ptr %20, align 8, !tbaa !11
  %1242 = load double, ptr %20, align 8, !tbaa !11
  %1243 = fcmp oge double %1242, 0.000000e+00
  br i1 %1243, label %1244, label %1246

1244:                                             ; preds = %1230
  %1245 = load double, ptr %20, align 8, !tbaa !11
  br label %1249

1246:                                             ; preds = %1230
  %1247 = load double, ptr %20, align 8, !tbaa !11
  %1248 = fneg double %1247
  br label %1249

1249:                                             ; preds = %1246, %1244
  %1250 = phi double [ %1245, %1244 ], [ %1248, %1246 ]
  %1251 = call double @sqrt(double noundef %1250) #5
  %1252 = fsub double %1233, %1251
  %1253 = fdiv double %1232, %1252
  store double %1253, ptr %55, align 8, !tbaa !11
  br label %1254

1254:                                             ; preds = %1249, %1223
  %1255 = load double, ptr %34, align 8, !tbaa !11
  %1256 = load double, ptr %55, align 8, !tbaa !11
  %1257 = fmul double %1255, %1256
  %1258 = fcmp ogt double %1257, 0.000000e+00
  br i1 %1258, label %1259, label %1266

1259:                                             ; preds = %1254
  %1260 = load double, ptr %34, align 8, !tbaa !11
  %1261 = fneg double %1260
  %1262 = load double, ptr %23, align 8, !tbaa !11
  %1263 = load double, ptr %21, align 8, !tbaa !11
  %1264 = fadd double %1262, %1263
  %1265 = fdiv double %1261, %1264
  store double %1265, ptr %55, align 8, !tbaa !11
  br label %1266

1266:                                             ; preds = %1259, %1254
  %1267 = load double, ptr %55, align 8, !tbaa !11
  %1268 = load double, ptr %41, align 8, !tbaa !11
  %1269 = fsub double %1267, %1268
  store double %1269, ptr %26, align 8, !tbaa !11
  %1270 = load double, ptr %26, align 8, !tbaa !11
  %1271 = fcmp ole double %1270, 0.000000e+00
  br i1 %1271, label %1272, label %1275

1272:                                             ; preds = %1266
  %1273 = load double, ptr %55, align 8, !tbaa !11
  %1274 = fdiv double %1273, 2.000000e+00
  store double %1274, ptr %55, align 8, !tbaa !11
  br label %1275

1275:                                             ; preds = %1272, %1266
  %1276 = load ptr, ptr %16, align 8, !tbaa !5
  %1277 = load double, ptr %1276, align 8, !tbaa !11
  %1278 = load double, ptr %55, align 8, !tbaa !11
  %1279 = load ptr, ptr %16, align 8, !tbaa !5
  %1280 = load double, ptr %1279, align 8, !tbaa !11
  %1281 = load ptr, ptr %16, align 8, !tbaa !5
  %1282 = load double, ptr %1281, align 8, !tbaa !11
  %1283 = call double @llvm.fmuladd.f64(double %1280, double %1282, double %1278)
  %1284 = call double @sqrt(double noundef %1283) #5
  %1285 = fadd double %1277, %1284
  %1286 = load double, ptr %55, align 8, !tbaa !11
  %1287 = fdiv double %1286, %1285
  store double %1287, ptr %55, align 8, !tbaa !11
  %1288 = load double, ptr %55, align 8, !tbaa !11
  %1289 = load double, ptr %58, align 8, !tbaa !11
  %1290 = fadd double %1289, %1288
  store double %1290, ptr %58, align 8, !tbaa !11
  %1291 = load double, ptr %55, align 8, !tbaa !11
  %1292 = load ptr, ptr %16, align 8, !tbaa !5
  %1293 = load double, ptr %1292, align 8, !tbaa !11
  %1294 = fadd double %1293, %1291
  store double %1294, ptr %1292, align 8, !tbaa !11
  %1295 = load ptr, ptr %10, align 8, !tbaa !5
  %1296 = load i32, ptr %1295, align 4, !tbaa !9
  store i32 %1296, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %1297

1297:                                             ; preds = %1316, %1275
  %1298 = load i32, ptr %33, align 4, !tbaa !9
  %1299 = load i32, ptr %19, align 4, !tbaa !9
  %1300 = icmp sle i32 %1298, %1299
  br i1 %1300, label %1301, label %1319

1301:                                             ; preds = %1297
  %1302 = load double, ptr %55, align 8, !tbaa !11
  %1303 = load ptr, ptr %14, align 8, !tbaa !5
  %1304 = load i32, ptr %33, align 4, !tbaa !9
  %1305 = sext i32 %1304 to i64
  %1306 = getelementptr inbounds double, ptr %1303, i64 %1305
  %1307 = load double, ptr %1306, align 8, !tbaa !11
  %1308 = fsub double %1307, %1302
  store double %1308, ptr %1306, align 8, !tbaa !11
  %1309 = load double, ptr %55, align 8, !tbaa !11
  %1310 = load ptr, ptr %17, align 8, !tbaa !5
  %1311 = load i32, ptr %33, align 4, !tbaa !9
  %1312 = sext i32 %1311 to i64
  %1313 = getelementptr inbounds double, ptr %1310, i64 %1312
  %1314 = load double, ptr %1313, align 8, !tbaa !11
  %1315 = fadd double %1314, %1309
  store double %1315, ptr %1313, align 8, !tbaa !11
  br label %1316

1316:                                             ; preds = %1301
  %1317 = load i32, ptr %33, align 4, !tbaa !9
  %1318 = add nsw i32 %1317, 1
  store i32 %1318, ptr %33, align 4, !tbaa !9
  br label %1297, !llvm.loop !20

1319:                                             ; preds = %1297
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  store double 0.000000e+00, ptr %59, align 8, !tbaa !11
  store double 0.000000e+00, ptr %50, align 8, !tbaa !11
  %1320 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %1320, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %1321

1321:                                             ; preds = %1358, %1319
  %1322 = load i32, ptr %33, align 4, !tbaa !9
  %1323 = load i32, ptr %19, align 4, !tbaa !9
  %1324 = icmp sle i32 %1322, %1323
  br i1 %1324, label %1325, label %1361

1325:                                             ; preds = %1321
  %1326 = load ptr, ptr %13, align 8, !tbaa !5
  %1327 = load i32, ptr %33, align 4, !tbaa !9
  %1328 = sext i32 %1327 to i64
  %1329 = getelementptr inbounds double, ptr %1326, i64 %1328
  %1330 = load double, ptr %1329, align 8, !tbaa !11
  %1331 = load ptr, ptr %17, align 8, !tbaa !5
  %1332 = load i32, ptr %33, align 4, !tbaa !9
  %1333 = sext i32 %1332 to i64
  %1334 = getelementptr inbounds double, ptr %1331, i64 %1333
  %1335 = load double, ptr %1334, align 8, !tbaa !11
  %1336 = load ptr, ptr %14, align 8, !tbaa !5
  %1337 = load i32, ptr %33, align 4, !tbaa !9
  %1338 = sext i32 %1337 to i64
  %1339 = getelementptr inbounds double, ptr %1336, i64 %1338
  %1340 = load double, ptr %1339, align 8, !tbaa !11
  %1341 = fmul double %1335, %1340
  %1342 = fdiv double %1330, %1341
  store double %1342, ptr %26, align 8, !tbaa !11
  %1343 = load ptr, ptr %13, align 8, !tbaa !5
  %1344 = load i32, ptr %33, align 4, !tbaa !9
  %1345 = sext i32 %1344 to i64
  %1346 = getelementptr inbounds double, ptr %1343, i64 %1345
  %1347 = load double, ptr %1346, align 8, !tbaa !11
  %1348 = load double, ptr %26, align 8, !tbaa !11
  %1349 = load double, ptr %59, align 8, !tbaa !11
  %1350 = call double @llvm.fmuladd.f64(double %1347, double %1348, double %1349)
  store double %1350, ptr %59, align 8, !tbaa !11
  %1351 = load double, ptr %26, align 8, !tbaa !11
  %1352 = load double, ptr %26, align 8, !tbaa !11
  %1353 = load double, ptr %23, align 8, !tbaa !11
  %1354 = call double @llvm.fmuladd.f64(double %1351, double %1352, double %1353)
  store double %1354, ptr %23, align 8, !tbaa !11
  %1355 = load double, ptr %59, align 8, !tbaa !11
  %1356 = load double, ptr %50, align 8, !tbaa !11
  %1357 = fadd double %1356, %1355
  store double %1357, ptr %50, align 8, !tbaa !11
  br label %1358

1358:                                             ; preds = %1325
  %1359 = load i32, ptr %33, align 4, !tbaa !9
  %1360 = add nsw i32 %1359, 1
  store i32 %1360, ptr %33, align 4, !tbaa !9
  br label %1321, !llvm.loop !21

1361:                                             ; preds = %1321
  %1362 = load double, ptr %50, align 8, !tbaa !11
  %1363 = fcmp oge double %1362, 0.000000e+00
  br i1 %1363, label %1364, label %1366

1364:                                             ; preds = %1361
  %1365 = load double, ptr %50, align 8, !tbaa !11
  br label %1369

1366:                                             ; preds = %1361
  %1367 = load double, ptr %50, align 8, !tbaa !11
  %1368 = fneg double %1367
  br label %1369

1369:                                             ; preds = %1366, %1364
  %1370 = phi double [ %1365, %1364 ], [ %1368, %1366 ]
  store double %1370, ptr %50, align 8, !tbaa !11
  %1371 = load ptr, ptr %17, align 8, !tbaa !5
  %1372 = load ptr, ptr %10, align 8, !tbaa !5
  %1373 = load i32, ptr %1372, align 4, !tbaa !9
  %1374 = sext i32 %1373 to i64
  %1375 = getelementptr inbounds double, ptr %1371, i64 %1374
  %1376 = load double, ptr %1375, align 8, !tbaa !11
  %1377 = load ptr, ptr %14, align 8, !tbaa !5
  %1378 = load ptr, ptr %10, align 8, !tbaa !5
  %1379 = load i32, ptr %1378, align 4, !tbaa !9
  %1380 = sext i32 %1379 to i64
  %1381 = getelementptr inbounds double, ptr %1377, i64 %1380
  %1382 = load double, ptr %1381, align 8, !tbaa !11
  %1383 = fmul double %1376, %1382
  store double %1383, ptr %63, align 8, !tbaa !11
  %1384 = load ptr, ptr %13, align 8, !tbaa !5
  %1385 = load ptr, ptr %10, align 8, !tbaa !5
  %1386 = load i32, ptr %1385, align 4, !tbaa !9
  %1387 = sext i32 %1386 to i64
  %1388 = getelementptr inbounds double, ptr %1384, i64 %1387
  %1389 = load double, ptr %1388, align 8, !tbaa !11
  %1390 = load double, ptr %63, align 8, !tbaa !11
  %1391 = fdiv double %1389, %1390
  store double %1391, ptr %26, align 8, !tbaa !11
  %1392 = load ptr, ptr %13, align 8, !tbaa !5
  %1393 = load ptr, ptr %10, align 8, !tbaa !5
  %1394 = load i32, ptr %1393, align 4, !tbaa !9
  %1395 = sext i32 %1394 to i64
  %1396 = getelementptr inbounds double, ptr %1392, i64 %1395
  %1397 = load double, ptr %1396, align 8, !tbaa !11
  %1398 = load double, ptr %26, align 8, !tbaa !11
  %1399 = fmul double %1397, %1398
  store double %1399, ptr %56, align 8, !tbaa !11
  %1400 = load double, ptr %26, align 8, !tbaa !11
  %1401 = load double, ptr %26, align 8, !tbaa !11
  %1402 = fmul double %1400, %1401
  store double %1402, ptr %21, align 8, !tbaa !11
  %1403 = load double, ptr %56, align 8, !tbaa !11
  %1404 = fneg double %1403
  %1405 = load double, ptr %59, align 8, !tbaa !11
  %1406 = fsub double %1404, %1405
  %1407 = load double, ptr %50, align 8, !tbaa !11
  %1408 = call double @llvm.fmuladd.f64(double %1406, double 8.000000e+00, double %1407)
  %1409 = load double, ptr %56, align 8, !tbaa !11
  %1410 = fsub double %1408, %1409
  %1411 = load double, ptr %52, align 8, !tbaa !11
  %1412 = fadd double %1410, %1411
  store double %1412, ptr %50, align 8, !tbaa !11
  %1413 = load double, ptr %52, align 8, !tbaa !11
  %1414 = load double, ptr %56, align 8, !tbaa !11
  %1415 = fadd double %1413, %1414
  %1416 = load double, ptr %59, align 8, !tbaa !11
  %1417 = fadd double %1415, %1416
  store double %1417, ptr %34, align 8, !tbaa !11
  br label %1418

1418:                                             ; preds = %1369
  %1419 = load i32, ptr %38, align 4, !tbaa !9
  %1420 = add nsw i32 %1419, 1
  store i32 %1420, ptr %38, align 4, !tbaa !9
  br label %1130, !llvm.loop !22

1421:                                             ; preds = %1130
  %1422 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 1, ptr %1422, align 4, !tbaa !9
  br label %4239

1423:                                             ; preds = %117
  store i32 1, ptr %38, align 4, !tbaa !9
  %1424 = load ptr, ptr %11, align 8, !tbaa !5
  %1425 = load i32, ptr %1424, align 4, !tbaa !9
  %1426 = add nsw i32 %1425, 1
  store i32 %1426, ptr %53, align 4, !tbaa !9
  %1427 = load ptr, ptr %12, align 8, !tbaa !5
  %1428 = load i32, ptr %53, align 4, !tbaa !9
  %1429 = sext i32 %1428 to i64
  %1430 = getelementptr inbounds double, ptr %1427, i64 %1429
  %1431 = load double, ptr %1430, align 8, !tbaa !11
  %1432 = load ptr, ptr %12, align 8, !tbaa !5
  %1433 = load ptr, ptr %11, align 8, !tbaa !5
  %1434 = load i32, ptr %1433, align 4, !tbaa !9
  %1435 = sext i32 %1434 to i64
  %1436 = getelementptr inbounds double, ptr %1432, i64 %1435
  %1437 = load double, ptr %1436, align 8, !tbaa !11
  %1438 = fsub double %1431, %1437
  %1439 = load ptr, ptr %12, align 8, !tbaa !5
  %1440 = load i32, ptr %53, align 4, !tbaa !9
  %1441 = sext i32 %1440 to i64
  %1442 = getelementptr inbounds double, ptr %1439, i64 %1441
  %1443 = load double, ptr %1442, align 8, !tbaa !11
  %1444 = load ptr, ptr %12, align 8, !tbaa !5
  %1445 = load ptr, ptr %11, align 8, !tbaa !5
  %1446 = load i32, ptr %1445, align 4, !tbaa !9
  %1447 = sext i32 %1446 to i64
  %1448 = getelementptr inbounds double, ptr %1444, i64 %1447
  %1449 = load double, ptr %1448, align 8, !tbaa !11
  %1450 = fadd double %1443, %1449
  %1451 = fmul double %1438, %1450
  store double %1451, ptr %36, align 8, !tbaa !11
  %1452 = load double, ptr %36, align 8, !tbaa !11
  %1453 = fdiv double %1452, 2.000000e+00
  store double %1453, ptr %42, align 8, !tbaa !11
  %1454 = load ptr, ptr %12, align 8, !tbaa !5
  %1455 = load ptr, ptr %11, align 8, !tbaa !5
  %1456 = load i32, ptr %1455, align 4, !tbaa !9
  %1457 = sext i32 %1456 to i64
  %1458 = getelementptr inbounds double, ptr %1454, i64 %1457
  %1459 = load double, ptr %1458, align 8, !tbaa !11
  %1460 = load ptr, ptr %12, align 8, !tbaa !5
  %1461 = load ptr, ptr %11, align 8, !tbaa !5
  %1462 = load i32, ptr %1461, align 4, !tbaa !9
  %1463 = sext i32 %1462 to i64
  %1464 = getelementptr inbounds double, ptr %1460, i64 %1463
  %1465 = load double, ptr %1464, align 8, !tbaa !11
  %1466 = load ptr, ptr %12, align 8, !tbaa !5
  %1467 = load i32, ptr %53, align 4, !tbaa !9
  %1468 = sext i32 %1467 to i64
  %1469 = getelementptr inbounds double, ptr %1466, i64 %1468
  %1470 = load double, ptr %1469, align 8, !tbaa !11
  %1471 = load ptr, ptr %12, align 8, !tbaa !5
  %1472 = load i32, ptr %53, align 4, !tbaa !9
  %1473 = sext i32 %1472 to i64
  %1474 = getelementptr inbounds double, ptr %1471, i64 %1473
  %1475 = load double, ptr %1474, align 8, !tbaa !11
  %1476 = fmul double %1470, %1475
  %1477 = call double @llvm.fmuladd.f64(double %1459, double %1465, double %1476)
  %1478 = fdiv double %1477, 2.000000e+00
  %1479 = call double @sqrt(double noundef %1478) #5
  store double %1479, ptr %54, align 8, !tbaa !11
  %1480 = load double, ptr %42, align 8, !tbaa !11
  %1481 = load ptr, ptr %12, align 8, !tbaa !5
  %1482 = load ptr, ptr %11, align 8, !tbaa !5
  %1483 = load i32, ptr %1482, align 4, !tbaa !9
  %1484 = sext i32 %1483 to i64
  %1485 = getelementptr inbounds double, ptr %1481, i64 %1484
  %1486 = load double, ptr %1485, align 8, !tbaa !11
  %1487 = load double, ptr %54, align 8, !tbaa !11
  %1488 = fadd double %1486, %1487
  %1489 = fdiv double %1480, %1488
  store double %1489, ptr %26, align 8, !tbaa !11
  %1490 = load ptr, ptr %10, align 8, !tbaa !5
  %1491 = load i32, ptr %1490, align 4, !tbaa !9
  store i32 %1491, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %1492

1492:                                             ; preds = %1533, %1423
  %1493 = load i32, ptr %33, align 4, !tbaa !9
  %1494 = load i32, ptr %19, align 4, !tbaa !9
  %1495 = icmp sle i32 %1493, %1494
  br i1 %1495, label %1496, label %1536

1496:                                             ; preds = %1492
  %1497 = load ptr, ptr %12, align 8, !tbaa !5
  %1498 = load i32, ptr %33, align 4, !tbaa !9
  %1499 = sext i32 %1498 to i64
  %1500 = getelementptr inbounds double, ptr %1497, i64 %1499
  %1501 = load double, ptr %1500, align 8, !tbaa !11
  %1502 = load ptr, ptr %12, align 8, !tbaa !5
  %1503 = load ptr, ptr %11, align 8, !tbaa !5
  %1504 = load i32, ptr %1503, align 4, !tbaa !9
  %1505 = sext i32 %1504 to i64
  %1506 = getelementptr inbounds double, ptr %1502, i64 %1505
  %1507 = load double, ptr %1506, align 8, !tbaa !11
  %1508 = fadd double %1501, %1507
  %1509 = load double, ptr %26, align 8, !tbaa !11
  %1510 = fadd double %1508, %1509
  %1511 = load ptr, ptr %17, align 8, !tbaa !5
  %1512 = load i32, ptr %33, align 4, !tbaa !9
  %1513 = sext i32 %1512 to i64
  %1514 = getelementptr inbounds double, ptr %1511, i64 %1513
  store double %1510, ptr %1514, align 8, !tbaa !11
  %1515 = load ptr, ptr %12, align 8, !tbaa !5
  %1516 = load i32, ptr %33, align 4, !tbaa !9
  %1517 = sext i32 %1516 to i64
  %1518 = getelementptr inbounds double, ptr %1515, i64 %1517
  %1519 = load double, ptr %1518, align 8, !tbaa !11
  %1520 = load ptr, ptr %12, align 8, !tbaa !5
  %1521 = load ptr, ptr %11, align 8, !tbaa !5
  %1522 = load i32, ptr %1521, align 4, !tbaa !9
  %1523 = sext i32 %1522 to i64
  %1524 = getelementptr inbounds double, ptr %1520, i64 %1523
  %1525 = load double, ptr %1524, align 8, !tbaa !11
  %1526 = fsub double %1519, %1525
  %1527 = load double, ptr %26, align 8, !tbaa !11
  %1528 = fsub double %1526, %1527
  %1529 = load ptr, ptr %14, align 8, !tbaa !5
  %1530 = load i32, ptr %33, align 4, !tbaa !9
  %1531 = sext i32 %1530 to i64
  %1532 = getelementptr inbounds double, ptr %1529, i64 %1531
  store double %1528, ptr %1532, align 8, !tbaa !11
  br label %1533

1533:                                             ; preds = %1496
  %1534 = load i32, ptr %33, align 4, !tbaa !9
  %1535 = add nsw i32 %1534, 1
  store i32 %1535, ptr %33, align 4, !tbaa !9
  br label %1492, !llvm.loop !23

1536:                                             ; preds = %1492
  store double 0.000000e+00, ptr %59, align 8, !tbaa !11
  %1537 = load ptr, ptr %11, align 8, !tbaa !5
  %1538 = load i32, ptr %1537, align 4, !tbaa !9
  %1539 = sub nsw i32 %1538, 1
  store i32 %1539, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %1540

1540:                                             ; preds = %1570, %1536
  %1541 = load i32, ptr %33, align 4, !tbaa !9
  %1542 = load i32, ptr %19, align 4, !tbaa !9
  %1543 = icmp sle i32 %1541, %1542
  br i1 %1543, label %1544, label %1573

1544:                                             ; preds = %1540
  %1545 = load ptr, ptr %13, align 8, !tbaa !5
  %1546 = load i32, ptr %33, align 4, !tbaa !9
  %1547 = sext i32 %1546 to i64
  %1548 = getelementptr inbounds double, ptr %1545, i64 %1547
  %1549 = load double, ptr %1548, align 8, !tbaa !11
  %1550 = load ptr, ptr %13, align 8, !tbaa !5
  %1551 = load i32, ptr %33, align 4, !tbaa !9
  %1552 = sext i32 %1551 to i64
  %1553 = getelementptr inbounds double, ptr %1550, i64 %1552
  %1554 = load double, ptr %1553, align 8, !tbaa !11
  %1555 = fmul double %1549, %1554
  %1556 = load ptr, ptr %17, align 8, !tbaa !5
  %1557 = load i32, ptr %33, align 4, !tbaa !9
  %1558 = sext i32 %1557 to i64
  %1559 = getelementptr inbounds double, ptr %1556, i64 %1558
  %1560 = load double, ptr %1559, align 8, !tbaa !11
  %1561 = load ptr, ptr %14, align 8, !tbaa !5
  %1562 = load i32, ptr %33, align 4, !tbaa !9
  %1563 = sext i32 %1562 to i64
  %1564 = getelementptr inbounds double, ptr %1561, i64 %1563
  %1565 = load double, ptr %1564, align 8, !tbaa !11
  %1566 = fmul double %1560, %1565
  %1567 = fdiv double %1555, %1566
  %1568 = load double, ptr %59, align 8, !tbaa !11
  %1569 = fadd double %1568, %1567
  store double %1569, ptr %59, align 8, !tbaa !11
  br label %1570

1570:                                             ; preds = %1544
  %1571 = load i32, ptr %33, align 4, !tbaa !9
  %1572 = add nsw i32 %1571, 1
  store i32 %1572, ptr %33, align 4, !tbaa !9
  br label %1540, !llvm.loop !24

1573:                                             ; preds = %1540
  store double 0.000000e+00, ptr %56, align 8, !tbaa !11
  %1574 = load ptr, ptr %11, align 8, !tbaa !5
  %1575 = load i32, ptr %1574, align 4, !tbaa !9
  %1576 = add nsw i32 %1575, 2
  store i32 %1576, ptr %19, align 4, !tbaa !9
  %1577 = load ptr, ptr %10, align 8, !tbaa !5
  %1578 = load i32, ptr %1577, align 4, !tbaa !9
  store i32 %1578, ptr %33, align 4, !tbaa !9
  br label %1579

1579:                                             ; preds = %1609, %1573
  %1580 = load i32, ptr %33, align 4, !tbaa !9
  %1581 = load i32, ptr %19, align 4, !tbaa !9
  %1582 = icmp sge i32 %1580, %1581
  br i1 %1582, label %1583, label %1612

1583:                                             ; preds = %1579
  %1584 = load ptr, ptr %13, align 8, !tbaa !5
  %1585 = load i32, ptr %33, align 4, !tbaa !9
  %1586 = sext i32 %1585 to i64
  %1587 = getelementptr inbounds double, ptr %1584, i64 %1586
  %1588 = load double, ptr %1587, align 8, !tbaa !11
  %1589 = load ptr, ptr %13, align 8, !tbaa !5
  %1590 = load i32, ptr %33, align 4, !tbaa !9
  %1591 = sext i32 %1590 to i64
  %1592 = getelementptr inbounds double, ptr %1589, i64 %1591
  %1593 = load double, ptr %1592, align 8, !tbaa !11
  %1594 = fmul double %1588, %1593
  %1595 = load ptr, ptr %17, align 8, !tbaa !5
  %1596 = load i32, ptr %33, align 4, !tbaa !9
  %1597 = sext i32 %1596 to i64
  %1598 = getelementptr inbounds double, ptr %1595, i64 %1597
  %1599 = load double, ptr %1598, align 8, !tbaa !11
  %1600 = load ptr, ptr %14, align 8, !tbaa !5
  %1601 = load i32, ptr %33, align 4, !tbaa !9
  %1602 = sext i32 %1601 to i64
  %1603 = getelementptr inbounds double, ptr %1600, i64 %1602
  %1604 = load double, ptr %1603, align 8, !tbaa !11
  %1605 = fmul double %1599, %1604
  %1606 = fdiv double %1594, %1605
  %1607 = load double, ptr %56, align 8, !tbaa !11
  %1608 = fadd double %1607, %1606
  store double %1608, ptr %56, align 8, !tbaa !11
  br label %1609

1609:                                             ; preds = %1583
  %1610 = load i32, ptr %33, align 4, !tbaa !9
  %1611 = add nsw i32 %1610, -1
  store i32 %1611, ptr %33, align 4, !tbaa !9
  br label %1579, !llvm.loop !25

1612:                                             ; preds = %1579
  %1613 = load double, ptr %52, align 8, !tbaa !11
  %1614 = load double, ptr %59, align 8, !tbaa !11
  %1615 = fadd double %1613, %1614
  %1616 = load double, ptr %56, align 8, !tbaa !11
  %1617 = fadd double %1615, %1616
  store double %1617, ptr %32, align 8, !tbaa !11
  %1618 = load double, ptr %32, align 8, !tbaa !11
  %1619 = load ptr, ptr %13, align 8, !tbaa !5
  %1620 = load ptr, ptr %11, align 8, !tbaa !5
  %1621 = load i32, ptr %1620, align 4, !tbaa !9
  %1622 = sext i32 %1621 to i64
  %1623 = getelementptr inbounds double, ptr %1619, i64 %1622
  %1624 = load double, ptr %1623, align 8, !tbaa !11
  %1625 = load ptr, ptr %13, align 8, !tbaa !5
  %1626 = load ptr, ptr %11, align 8, !tbaa !5
  %1627 = load i32, ptr %1626, align 4, !tbaa !9
  %1628 = sext i32 %1627 to i64
  %1629 = getelementptr inbounds double, ptr %1625, i64 %1628
  %1630 = load double, ptr %1629, align 8, !tbaa !11
  %1631 = fmul double %1624, %1630
  %1632 = load ptr, ptr %17, align 8, !tbaa !5
  %1633 = load ptr, ptr %11, align 8, !tbaa !5
  %1634 = load i32, ptr %1633, align 4, !tbaa !9
  %1635 = sext i32 %1634 to i64
  %1636 = getelementptr inbounds double, ptr %1632, i64 %1635
  %1637 = load double, ptr %1636, align 8, !tbaa !11
  %1638 = load ptr, ptr %14, align 8, !tbaa !5
  %1639 = load ptr, ptr %11, align 8, !tbaa !5
  %1640 = load i32, ptr %1639, align 4, !tbaa !9
  %1641 = sext i32 %1640 to i64
  %1642 = getelementptr inbounds double, ptr %1638, i64 %1641
  %1643 = load double, ptr %1642, align 8, !tbaa !11
  %1644 = fmul double %1637, %1643
  %1645 = fdiv double %1631, %1644
  %1646 = fadd double %1618, %1645
  %1647 = load ptr, ptr %13, align 8, !tbaa !5
  %1648 = load i32, ptr %53, align 4, !tbaa !9
  %1649 = sext i32 %1648 to i64
  %1650 = getelementptr inbounds double, ptr %1647, i64 %1649
  %1651 = load double, ptr %1650, align 8, !tbaa !11
  %1652 = load ptr, ptr %13, align 8, !tbaa !5
  %1653 = load i32, ptr %53, align 4, !tbaa !9
  %1654 = sext i32 %1653 to i64
  %1655 = getelementptr inbounds double, ptr %1652, i64 %1654
  %1656 = load double, ptr %1655, align 8, !tbaa !11
  %1657 = fmul double %1651, %1656
  %1658 = load ptr, ptr %17, align 8, !tbaa !5
  %1659 = load i32, ptr %53, align 4, !tbaa !9
  %1660 = sext i32 %1659 to i64
  %1661 = getelementptr inbounds double, ptr %1658, i64 %1660
  %1662 = load double, ptr %1661, align 8, !tbaa !11
  %1663 = load ptr, ptr %14, align 8, !tbaa !5
  %1664 = load i32, ptr %53, align 4, !tbaa !9
  %1665 = sext i32 %1664 to i64
  %1666 = getelementptr inbounds double, ptr %1663, i64 %1665
  %1667 = load double, ptr %1666, align 8, !tbaa !11
  %1668 = fmul double %1662, %1667
  %1669 = fdiv double %1657, %1668
  %1670 = fadd double %1646, %1669
  store double %1670, ptr %34, align 8, !tbaa !11
  store i32 0, ptr %60, align 4, !tbaa !9
  %1671 = load double, ptr %34, align 8, !tbaa !11
  %1672 = fcmp ogt double %1671, 0.000000e+00
  br i1 %1672, label %1673, label %1863

1673:                                             ; preds = %1612
  store i32 1, ptr %49, align 4, !tbaa !9
  %1674 = load ptr, ptr %11, align 8, !tbaa !5
  %1675 = load i32, ptr %1674, align 4, !tbaa !9
  store i32 %1675, ptr %46, align 4, !tbaa !9
  store double 0.000000e+00, ptr %22, align 8, !tbaa !11
  %1676 = load double, ptr %42, align 8, !tbaa !11
  %1677 = load ptr, ptr %12, align 8, !tbaa !5
  %1678 = load ptr, ptr %11, align 8, !tbaa !5
  %1679 = load i32, ptr %1678, align 4, !tbaa !9
  %1680 = sext i32 %1679 to i64
  %1681 = getelementptr inbounds double, ptr %1677, i64 %1680
  %1682 = load double, ptr %1681, align 8, !tbaa !11
  %1683 = load double, ptr %54, align 8, !tbaa !11
  %1684 = fadd double %1682, %1683
  %1685 = fdiv double %1676, %1684
  store double %1685, ptr %24, align 8, !tbaa !11
  %1686 = load double, ptr %32, align 8, !tbaa !11
  %1687 = load double, ptr %36, align 8, !tbaa !11
  %1688 = load ptr, ptr %13, align 8, !tbaa !5
  %1689 = load ptr, ptr %11, align 8, !tbaa !5
  %1690 = load i32, ptr %1689, align 4, !tbaa !9
  %1691 = sext i32 %1690 to i64
  %1692 = getelementptr inbounds double, ptr %1688, i64 %1691
  %1693 = load double, ptr %1692, align 8, !tbaa !11
  %1694 = load ptr, ptr %13, align 8, !tbaa !5
  %1695 = load ptr, ptr %11, align 8, !tbaa !5
  %1696 = load i32, ptr %1695, align 4, !tbaa !9
  %1697 = sext i32 %1696 to i64
  %1698 = getelementptr inbounds double, ptr %1694, i64 %1697
  %1699 = load double, ptr %1698, align 8, !tbaa !11
  %1700 = fmul double %1693, %1699
  %1701 = call double @llvm.fmuladd.f64(double %1686, double %1687, double %1700)
  %1702 = load ptr, ptr %13, align 8, !tbaa !5
  %1703 = load i32, ptr %53, align 4, !tbaa !9
  %1704 = sext i32 %1703 to i64
  %1705 = getelementptr inbounds double, ptr %1702, i64 %1704
  %1706 = load double, ptr %1705, align 8, !tbaa !11
  %1707 = load ptr, ptr %13, align 8, !tbaa !5
  %1708 = load i32, ptr %53, align 4, !tbaa !9
  %1709 = sext i32 %1708 to i64
  %1710 = getelementptr inbounds double, ptr %1707, i64 %1709
  %1711 = load double, ptr %1710, align 8, !tbaa !11
  %1712 = call double @llvm.fmuladd.f64(double %1706, double %1711, double %1701)
  store double %1712, ptr %30, align 8, !tbaa !11
  %1713 = load ptr, ptr %13, align 8, !tbaa !5
  %1714 = load ptr, ptr %11, align 8, !tbaa !5
  %1715 = load i32, ptr %1714, align 4, !tbaa !9
  %1716 = sext i32 %1715 to i64
  %1717 = getelementptr inbounds double, ptr %1713, i64 %1716
  %1718 = load double, ptr %1717, align 8, !tbaa !11
  %1719 = load ptr, ptr %13, align 8, !tbaa !5
  %1720 = load ptr, ptr %11, align 8, !tbaa !5
  %1721 = load i32, ptr %1720, align 4, !tbaa !9
  %1722 = sext i32 %1721 to i64
  %1723 = getelementptr inbounds double, ptr %1719, i64 %1722
  %1724 = load double, ptr %1723, align 8, !tbaa !11
  %1725 = fmul double %1718, %1724
  %1726 = load double, ptr %36, align 8, !tbaa !11
  %1727 = fmul double %1725, %1726
  store double %1727, ptr %31, align 8, !tbaa !11
  %1728 = load double, ptr %30, align 8, !tbaa !11
  %1729 = fcmp ogt double %1728, 0.000000e+00
  br i1 %1729, label %1730, label %1754

1730:                                             ; preds = %1673
  %1731 = load double, ptr %31, align 8, !tbaa !11
  %1732 = fmul double %1731, 2.000000e+00
  %1733 = load double, ptr %30, align 8, !tbaa !11
  %1734 = load double, ptr %30, align 8, !tbaa !11
  %1735 = load double, ptr %30, align 8, !tbaa !11
  %1736 = load double, ptr %31, align 8, !tbaa !11
  %1737 = fmul double %1736, 4.000000e+00
  %1738 = load double, ptr %32, align 8, !tbaa !11
  %1739 = fmul double %1737, %1738
  %1740 = fneg double %1739
  %1741 = call double @llvm.fmuladd.f64(double %1734, double %1735, double %1740)
  store double %1741, ptr %20, align 8, !tbaa !11
  %1742 = load double, ptr %20, align 8, !tbaa !11
  %1743 = fcmp oge double %1742, 0.000000e+00
  br i1 %1743, label %1744, label %1746

1744:                                             ; preds = %1730
  %1745 = load double, ptr %20, align 8, !tbaa !11
  br label %1749

1746:                                             ; preds = %1730
  %1747 = load double, ptr %20, align 8, !tbaa !11
  %1748 = fneg double %1747
  br label %1749

1749:                                             ; preds = %1746, %1744
  %1750 = phi double [ %1745, %1744 ], [ %1748, %1746 ]
  %1751 = call double @sqrt(double noundef %1750) #5
  %1752 = fadd double %1733, %1751
  %1753 = fdiv double %1732, %1752
  store double %1753, ptr %63, align 8, !tbaa !11
  br label %1778

1754:                                             ; preds = %1673
  %1755 = load double, ptr %30, align 8, !tbaa !11
  %1756 = load double, ptr %30, align 8, !tbaa !11
  %1757 = load double, ptr %30, align 8, !tbaa !11
  %1758 = load double, ptr %31, align 8, !tbaa !11
  %1759 = fmul double %1758, 4.000000e+00
  %1760 = load double, ptr %32, align 8, !tbaa !11
  %1761 = fmul double %1759, %1760
  %1762 = fneg double %1761
  %1763 = call double @llvm.fmuladd.f64(double %1756, double %1757, double %1762)
  store double %1763, ptr %20, align 8, !tbaa !11
  %1764 = load double, ptr %20, align 8, !tbaa !11
  %1765 = fcmp oge double %1764, 0.000000e+00
  br i1 %1765, label %1766, label %1768

1766:                                             ; preds = %1754
  %1767 = load double, ptr %20, align 8, !tbaa !11
  br label %1771

1768:                                             ; preds = %1754
  %1769 = load double, ptr %20, align 8, !tbaa !11
  %1770 = fneg double %1769
  br label %1771

1771:                                             ; preds = %1768, %1766
  %1772 = phi double [ %1767, %1766 ], [ %1770, %1768 ]
  %1773 = call double @sqrt(double noundef %1772) #5
  %1774 = fsub double %1755, %1773
  %1775 = load double, ptr %32, align 8, !tbaa !11
  %1776 = fmul double %1775, 2.000000e+00
  %1777 = fdiv double %1774, %1776
  store double %1777, ptr %63, align 8, !tbaa !11
  br label %1778

1778:                                             ; preds = %1771, %1749
  %1779 = load double, ptr %63, align 8, !tbaa !11
  %1780 = load ptr, ptr %12, align 8, !tbaa !5
  %1781 = load ptr, ptr %11, align 8, !tbaa !5
  %1782 = load i32, ptr %1781, align 4, !tbaa !9
  %1783 = sext i32 %1782 to i64
  %1784 = getelementptr inbounds double, ptr %1780, i64 %1783
  %1785 = load double, ptr %1784, align 8, !tbaa !11
  %1786 = load ptr, ptr %12, align 8, !tbaa !5
  %1787 = load ptr, ptr %11, align 8, !tbaa !5
  %1788 = load i32, ptr %1787, align 4, !tbaa !9
  %1789 = sext i32 %1788 to i64
  %1790 = getelementptr inbounds double, ptr %1786, i64 %1789
  %1791 = load double, ptr %1790, align 8, !tbaa !11
  %1792 = load ptr, ptr %12, align 8, !tbaa !5
  %1793 = load ptr, ptr %11, align 8, !tbaa !5
  %1794 = load i32, ptr %1793, align 4, !tbaa !9
  %1795 = sext i32 %1794 to i64
  %1796 = getelementptr inbounds double, ptr %1792, i64 %1795
  %1797 = load double, ptr %1796, align 8, !tbaa !11
  %1798 = load double, ptr %63, align 8, !tbaa !11
  %1799 = call double @llvm.fmuladd.f64(double %1791, double %1797, double %1798)
  %1800 = call double @sqrt(double noundef %1799) #5
  %1801 = fadd double %1785, %1800
  %1802 = fdiv double %1779, %1801
  store double %1802, ptr %58, align 8, !tbaa !11
  %1803 = load double, ptr %57, align 8, !tbaa !11
  %1804 = call double @sqrt(double noundef %1803) #5
  store double %1804, ptr %26, align 8, !tbaa !11
  %1805 = load ptr, ptr %12, align 8, !tbaa !5
  %1806 = load ptr, ptr %11, align 8, !tbaa !5
  %1807 = load i32, ptr %1806, align 4, !tbaa !9
  %1808 = sext i32 %1807 to i64
  %1809 = getelementptr inbounds double, ptr %1805, i64 %1808
  %1810 = load double, ptr %1809, align 8, !tbaa !11
  %1811 = load double, ptr %26, align 8, !tbaa !11
  %1812 = load ptr, ptr %12, align 8, !tbaa !5
  %1813 = load i32, ptr %53, align 4, !tbaa !9
  %1814 = sext i32 %1813 to i64
  %1815 = getelementptr inbounds double, ptr %1812, i64 %1814
  %1816 = load double, ptr %1815, align 8, !tbaa !11
  %1817 = fmul double %1811, %1816
  %1818 = fcmp ole double %1810, %1817
  br i1 %1818, label %1819, label %1862

1819:                                             ; preds = %1778
  %1820 = load ptr, ptr %13, align 8, !tbaa !5
  %1821 = load ptr, ptr %11, align 8, !tbaa !5
  %1822 = load i32, ptr %1821, align 4, !tbaa !9
  %1823 = sext i32 %1822 to i64
  %1824 = getelementptr inbounds double, ptr %1820, i64 %1823
  %1825 = load double, ptr %1824, align 8, !tbaa !11
  store double %1825, ptr %20, align 8, !tbaa !11
  %1826 = load double, ptr %20, align 8, !tbaa !11
  %1827 = fcmp oge double %1826, 0.000000e+00
  br i1 %1827, label %1828, label %1830

1828:                                             ; preds = %1819
  %1829 = load double, ptr %20, align 8, !tbaa !11
  br label %1833

1830:                                             ; preds = %1819
  %1831 = load double, ptr %20, align 8, !tbaa !11
  %1832 = fneg double %1831
  br label %1833

1833:                                             ; preds = %1830, %1828
  %1834 = phi double [ %1829, %1828 ], [ %1832, %1830 ]
  %1835 = load double, ptr %26, align 8, !tbaa !11
  %1836 = fcmp ole double %1834, %1835
  br i1 %1836, label %1837, label %1862

1837:                                             ; preds = %1833
  %1838 = load ptr, ptr %12, align 8, !tbaa !5
  %1839 = load ptr, ptr %11, align 8, !tbaa !5
  %1840 = load i32, ptr %1839, align 4, !tbaa !9
  %1841 = sext i32 %1840 to i64
  %1842 = getelementptr inbounds double, ptr %1838, i64 %1841
  %1843 = load double, ptr %1842, align 8, !tbaa !11
  %1844 = fcmp ogt double %1843, 0.000000e+00
  br i1 %1844, label %1845, label %1862

1845:                                             ; preds = %1837
  %1846 = load ptr, ptr %12, align 8, !tbaa !5
  %1847 = load ptr, ptr %11, align 8, !tbaa !5
  %1848 = load i32, ptr %1847, align 4, !tbaa !9
  %1849 = sext i32 %1848 to i64
  %1850 = getelementptr inbounds double, ptr %1846, i64 %1849
  %1851 = load double, ptr %1850, align 8, !tbaa !11
  %1852 = fmul double %1851, 1.000000e+01
  store double %1852, ptr %20, align 8, !tbaa !11
  %1853 = load double, ptr %20, align 8, !tbaa !11
  %1854 = load double, ptr %24, align 8, !tbaa !11
  %1855 = fcmp ole double %1853, %1854
  br i1 %1855, label %1856, label %1858

1856:                                             ; preds = %1845
  %1857 = load double, ptr %20, align 8, !tbaa !11
  br label %1860

1858:                                             ; preds = %1845
  %1859 = load double, ptr %24, align 8, !tbaa !11
  br label %1860

1860:                                             ; preds = %1858, %1856
  %1861 = phi double [ %1857, %1856 ], [ %1859, %1858 ]
  store double %1861, ptr %58, align 8, !tbaa !11
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %1862

1862:                                             ; preds = %1860, %1837, %1833, %1778
  br label %1997

1863:                                             ; preds = %1612
  store i32 0, ptr %49, align 4, !tbaa !9
  %1864 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %1864, ptr %46, align 4, !tbaa !9
  %1865 = load double, ptr %42, align 8, !tbaa !11
  %1866 = fneg double %1865
  %1867 = load ptr, ptr %12, align 8, !tbaa !5
  %1868 = load i32, ptr %46, align 4, !tbaa !9
  %1869 = sext i32 %1868 to i64
  %1870 = getelementptr inbounds double, ptr %1867, i64 %1869
  %1871 = load double, ptr %1870, align 8, !tbaa !11
  %1872 = load double, ptr %54, align 8, !tbaa !11
  %1873 = fadd double %1871, %1872
  %1874 = fdiv double %1866, %1873
  store double %1874, ptr %22, align 8, !tbaa !11
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %1875 = load double, ptr %32, align 8, !tbaa !11
  %1876 = load double, ptr %36, align 8, !tbaa !11
  %1877 = load ptr, ptr %13, align 8, !tbaa !5
  %1878 = load ptr, ptr %11, align 8, !tbaa !5
  %1879 = load i32, ptr %1878, align 4, !tbaa !9
  %1880 = sext i32 %1879 to i64
  %1881 = getelementptr inbounds double, ptr %1877, i64 %1880
  %1882 = load double, ptr %1881, align 8, !tbaa !11
  %1883 = load ptr, ptr %13, align 8, !tbaa !5
  %1884 = load ptr, ptr %11, align 8, !tbaa !5
  %1885 = load i32, ptr %1884, align 4, !tbaa !9
  %1886 = sext i32 %1885 to i64
  %1887 = getelementptr inbounds double, ptr %1883, i64 %1886
  %1888 = load double, ptr %1887, align 8, !tbaa !11
  %1889 = fmul double %1882, %1888
  %1890 = fneg double %1889
  %1891 = call double @llvm.fmuladd.f64(double %1875, double %1876, double %1890)
  %1892 = load ptr, ptr %13, align 8, !tbaa !5
  %1893 = load i32, ptr %53, align 4, !tbaa !9
  %1894 = sext i32 %1893 to i64
  %1895 = getelementptr inbounds double, ptr %1892, i64 %1894
  %1896 = load double, ptr %1895, align 8, !tbaa !11
  %1897 = load ptr, ptr %13, align 8, !tbaa !5
  %1898 = load i32, ptr %53, align 4, !tbaa !9
  %1899 = sext i32 %1898 to i64
  %1900 = getelementptr inbounds double, ptr %1897, i64 %1899
  %1901 = load double, ptr %1900, align 8, !tbaa !11
  %1902 = fneg double %1896
  %1903 = call double @llvm.fmuladd.f64(double %1902, double %1901, double %1891)
  store double %1903, ptr %30, align 8, !tbaa !11
  %1904 = load ptr, ptr %13, align 8, !tbaa !5
  %1905 = load i32, ptr %53, align 4, !tbaa !9
  %1906 = sext i32 %1905 to i64
  %1907 = getelementptr inbounds double, ptr %1904, i64 %1906
  %1908 = load double, ptr %1907, align 8, !tbaa !11
  %1909 = load ptr, ptr %13, align 8, !tbaa !5
  %1910 = load i32, ptr %53, align 4, !tbaa !9
  %1911 = sext i32 %1910 to i64
  %1912 = getelementptr inbounds double, ptr %1909, i64 %1911
  %1913 = load double, ptr %1912, align 8, !tbaa !11
  %1914 = fmul double %1908, %1913
  %1915 = load double, ptr %36, align 8, !tbaa !11
  %1916 = fmul double %1914, %1915
  store double %1916, ptr %31, align 8, !tbaa !11
  %1917 = load double, ptr %30, align 8, !tbaa !11
  %1918 = fcmp olt double %1917, 0.000000e+00
  br i1 %1918, label %1919, label %1942

1919:                                             ; preds = %1863
  %1920 = load double, ptr %31, align 8, !tbaa !11
  %1921 = fmul double %1920, 2.000000e+00
  %1922 = load double, ptr %30, align 8, !tbaa !11
  %1923 = load double, ptr %30, align 8, !tbaa !11
  %1924 = load double, ptr %30, align 8, !tbaa !11
  %1925 = load double, ptr %31, align 8, !tbaa !11
  %1926 = fmul double %1925, 4.000000e+00
  %1927 = load double, ptr %32, align 8, !tbaa !11
  %1928 = fmul double %1926, %1927
  %1929 = call double @llvm.fmuladd.f64(double %1923, double %1924, double %1928)
  store double %1929, ptr %20, align 8, !tbaa !11
  %1930 = load double, ptr %20, align 8, !tbaa !11
  %1931 = fcmp oge double %1930, 0.000000e+00
  br i1 %1931, label %1932, label %1934

1932:                                             ; preds = %1919
  %1933 = load double, ptr %20, align 8, !tbaa !11
  br label %1937

1934:                                             ; preds = %1919
  %1935 = load double, ptr %20, align 8, !tbaa !11
  %1936 = fneg double %1935
  br label %1937

1937:                                             ; preds = %1934, %1932
  %1938 = phi double [ %1933, %1932 ], [ %1936, %1934 ]
  %1939 = call double @sqrt(double noundef %1938) #5
  %1940 = fsub double %1922, %1939
  %1941 = fdiv double %1921, %1940
  store double %1941, ptr %63, align 8, !tbaa !11
  br label %1966

1942:                                             ; preds = %1863
  %1943 = load double, ptr %30, align 8, !tbaa !11
  %1944 = load double, ptr %30, align 8, !tbaa !11
  %1945 = load double, ptr %30, align 8, !tbaa !11
  %1946 = load double, ptr %31, align 8, !tbaa !11
  %1947 = fmul double %1946, 4.000000e+00
  %1948 = load double, ptr %32, align 8, !tbaa !11
  %1949 = fmul double %1947, %1948
  %1950 = call double @llvm.fmuladd.f64(double %1944, double %1945, double %1949)
  store double %1950, ptr %20, align 8, !tbaa !11
  %1951 = load double, ptr %20, align 8, !tbaa !11
  %1952 = fcmp oge double %1951, 0.000000e+00
  br i1 %1952, label %1953, label %1955

1953:                                             ; preds = %1942
  %1954 = load double, ptr %20, align 8, !tbaa !11
  br label %1958

1955:                                             ; preds = %1942
  %1956 = load double, ptr %20, align 8, !tbaa !11
  %1957 = fneg double %1956
  br label %1958

1958:                                             ; preds = %1955, %1953
  %1959 = phi double [ %1954, %1953 ], [ %1957, %1955 ]
  %1960 = call double @sqrt(double noundef %1959) #5
  %1961 = fadd double %1943, %1960
  %1962 = fneg double %1961
  %1963 = load double, ptr %32, align 8, !tbaa !11
  %1964 = fmul double %1963, 2.000000e+00
  %1965 = fdiv double %1962, %1964
  store double %1965, ptr %63, align 8, !tbaa !11
  br label %1966

1966:                                             ; preds = %1958, %1937
  %1967 = load double, ptr %63, align 8, !tbaa !11
  %1968 = load ptr, ptr %12, align 8, !tbaa !5
  %1969 = load i32, ptr %53, align 4, !tbaa !9
  %1970 = sext i32 %1969 to i64
  %1971 = getelementptr inbounds double, ptr %1968, i64 %1970
  %1972 = load double, ptr %1971, align 8, !tbaa !11
  %1973 = load ptr, ptr %12, align 8, !tbaa !5
  %1974 = load i32, ptr %53, align 4, !tbaa !9
  %1975 = sext i32 %1974 to i64
  %1976 = getelementptr inbounds double, ptr %1973, i64 %1975
  %1977 = load double, ptr %1976, align 8, !tbaa !11
  %1978 = load ptr, ptr %12, align 8, !tbaa !5
  %1979 = load i32, ptr %53, align 4, !tbaa !9
  %1980 = sext i32 %1979 to i64
  %1981 = getelementptr inbounds double, ptr %1978, i64 %1980
  %1982 = load double, ptr %1981, align 8, !tbaa !11
  %1983 = load double, ptr %63, align 8, !tbaa !11
  %1984 = call double @llvm.fmuladd.f64(double %1977, double %1982, double %1983)
  store double %1984, ptr %20, align 8, !tbaa !11
  %1985 = load double, ptr %20, align 8, !tbaa !11
  %1986 = fcmp oge double %1985, 0.000000e+00
  br i1 %1986, label %1987, label %1989

1987:                                             ; preds = %1966
  %1988 = load double, ptr %20, align 8, !tbaa !11
  br label %1992

1989:                                             ; preds = %1966
  %1990 = load double, ptr %20, align 8, !tbaa !11
  %1991 = fneg double %1990
  br label %1992

1992:                                             ; preds = %1989, %1987
  %1993 = phi double [ %1988, %1987 ], [ %1991, %1989 ]
  %1994 = call double @sqrt(double noundef %1993) #5
  %1995 = fadd double %1972, %1994
  %1996 = fdiv double %1967, %1995
  store double %1996, ptr %58, align 8, !tbaa !11
  br label %1997

1997:                                             ; preds = %1992, %1862
  %1998 = load ptr, ptr %12, align 8, !tbaa !5
  %1999 = load i32, ptr %46, align 4, !tbaa !9
  %2000 = sext i32 %1999 to i64
  %2001 = getelementptr inbounds double, ptr %1998, i64 %2000
  %2002 = load double, ptr %2001, align 8, !tbaa !11
  %2003 = load double, ptr %58, align 8, !tbaa !11
  %2004 = fadd double %2002, %2003
  %2005 = load ptr, ptr %16, align 8, !tbaa !5
  store double %2004, ptr %2005, align 8, !tbaa !11
  %2006 = load ptr, ptr %10, align 8, !tbaa !5
  %2007 = load i32, ptr %2006, align 4, !tbaa !9
  store i32 %2007, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %2008

2008:                                             ; preds = %2047, %1997
  %2009 = load i32, ptr %33, align 4, !tbaa !9
  %2010 = load i32, ptr %19, align 4, !tbaa !9
  %2011 = icmp sle i32 %2009, %2010
  br i1 %2011, label %2012, label %2050

2012:                                             ; preds = %2008
  %2013 = load ptr, ptr %12, align 8, !tbaa !5
  %2014 = load i32, ptr %33, align 4, !tbaa !9
  %2015 = sext i32 %2014 to i64
  %2016 = getelementptr inbounds double, ptr %2013, i64 %2015
  %2017 = load double, ptr %2016, align 8, !tbaa !11
  %2018 = load ptr, ptr %12, align 8, !tbaa !5
  %2019 = load i32, ptr %46, align 4, !tbaa !9
  %2020 = sext i32 %2019 to i64
  %2021 = getelementptr inbounds double, ptr %2018, i64 %2020
  %2022 = load double, ptr %2021, align 8, !tbaa !11
  %2023 = fadd double %2017, %2022
  %2024 = load double, ptr %58, align 8, !tbaa !11
  %2025 = fadd double %2023, %2024
  %2026 = load ptr, ptr %17, align 8, !tbaa !5
  %2027 = load i32, ptr %33, align 4, !tbaa !9
  %2028 = sext i32 %2027 to i64
  %2029 = getelementptr inbounds double, ptr %2026, i64 %2028
  store double %2025, ptr %2029, align 8, !tbaa !11
  %2030 = load ptr, ptr %12, align 8, !tbaa !5
  %2031 = load i32, ptr %33, align 4, !tbaa !9
  %2032 = sext i32 %2031 to i64
  %2033 = getelementptr inbounds double, ptr %2030, i64 %2032
  %2034 = load double, ptr %2033, align 8, !tbaa !11
  %2035 = load ptr, ptr %12, align 8, !tbaa !5
  %2036 = load i32, ptr %46, align 4, !tbaa !9
  %2037 = sext i32 %2036 to i64
  %2038 = getelementptr inbounds double, ptr %2035, i64 %2037
  %2039 = load double, ptr %2038, align 8, !tbaa !11
  %2040 = fsub double %2034, %2039
  %2041 = load double, ptr %58, align 8, !tbaa !11
  %2042 = fsub double %2040, %2041
  %2043 = load ptr, ptr %14, align 8, !tbaa !5
  %2044 = load i32, ptr %33, align 4, !tbaa !9
  %2045 = sext i32 %2044 to i64
  %2046 = getelementptr inbounds double, ptr %2043, i64 %2045
  store double %2042, ptr %2046, align 8, !tbaa !11
  br label %2047

2047:                                             ; preds = %2012
  %2048 = load i32, ptr %33, align 4, !tbaa !9
  %2049 = add nsw i32 %2048, 1
  store i32 %2049, ptr %33, align 4, !tbaa !9
  br label %2008, !llvm.loop !26

2050:                                             ; preds = %2008
  %2051 = load i32, ptr %46, align 4, !tbaa !9
  %2052 = sub nsw i32 %2051, 1
  store i32 %2052, ptr %61, align 4, !tbaa !9
  %2053 = load i32, ptr %46, align 4, !tbaa !9
  %2054 = add nsw i32 %2053, 1
  store i32 %2054, ptr %62, align 4, !tbaa !9
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  store double 0.000000e+00, ptr %59, align 8, !tbaa !11
  store double 0.000000e+00, ptr %50, align 8, !tbaa !11
  %2055 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %2055, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %2056

2056:                                             ; preds = %2093, %2050
  %2057 = load i32, ptr %33, align 4, !tbaa !9
  %2058 = load i32, ptr %19, align 4, !tbaa !9
  %2059 = icmp sle i32 %2057, %2058
  br i1 %2059, label %2060, label %2096

2060:                                             ; preds = %2056
  %2061 = load ptr, ptr %13, align 8, !tbaa !5
  %2062 = load i32, ptr %33, align 4, !tbaa !9
  %2063 = sext i32 %2062 to i64
  %2064 = getelementptr inbounds double, ptr %2061, i64 %2063
  %2065 = load double, ptr %2064, align 8, !tbaa !11
  %2066 = load ptr, ptr %17, align 8, !tbaa !5
  %2067 = load i32, ptr %33, align 4, !tbaa !9
  %2068 = sext i32 %2067 to i64
  %2069 = getelementptr inbounds double, ptr %2066, i64 %2068
  %2070 = load double, ptr %2069, align 8, !tbaa !11
  %2071 = load ptr, ptr %14, align 8, !tbaa !5
  %2072 = load i32, ptr %33, align 4, !tbaa !9
  %2073 = sext i32 %2072 to i64
  %2074 = getelementptr inbounds double, ptr %2071, i64 %2073
  %2075 = load double, ptr %2074, align 8, !tbaa !11
  %2076 = fmul double %2070, %2075
  %2077 = fdiv double %2065, %2076
  store double %2077, ptr %26, align 8, !tbaa !11
  %2078 = load ptr, ptr %13, align 8, !tbaa !5
  %2079 = load i32, ptr %33, align 4, !tbaa !9
  %2080 = sext i32 %2079 to i64
  %2081 = getelementptr inbounds double, ptr %2078, i64 %2080
  %2082 = load double, ptr %2081, align 8, !tbaa !11
  %2083 = load double, ptr %26, align 8, !tbaa !11
  %2084 = load double, ptr %59, align 8, !tbaa !11
  %2085 = call double @llvm.fmuladd.f64(double %2082, double %2083, double %2084)
  store double %2085, ptr %59, align 8, !tbaa !11
  %2086 = load double, ptr %26, align 8, !tbaa !11
  %2087 = load double, ptr %26, align 8, !tbaa !11
  %2088 = load double, ptr %23, align 8, !tbaa !11
  %2089 = call double @llvm.fmuladd.f64(double %2086, double %2087, double %2088)
  store double %2089, ptr %23, align 8, !tbaa !11
  %2090 = load double, ptr %59, align 8, !tbaa !11
  %2091 = load double, ptr %50, align 8, !tbaa !11
  %2092 = fadd double %2091, %2090
  store double %2092, ptr %50, align 8, !tbaa !11
  br label %2093

2093:                                             ; preds = %2060
  %2094 = load i32, ptr %33, align 4, !tbaa !9
  %2095 = add nsw i32 %2094, 1
  store i32 %2095, ptr %33, align 4, !tbaa !9
  br label %2056, !llvm.loop !27

2096:                                             ; preds = %2056
  %2097 = load double, ptr %50, align 8, !tbaa !11
  %2098 = fcmp oge double %2097, 0.000000e+00
  br i1 %2098, label %2099, label %2101

2099:                                             ; preds = %2096
  %2100 = load double, ptr %50, align 8, !tbaa !11
  br label %2104

2101:                                             ; preds = %2096
  %2102 = load double, ptr %50, align 8, !tbaa !11
  %2103 = fneg double %2102
  br label %2104

2104:                                             ; preds = %2101, %2099
  %2105 = phi double [ %2100, %2099 ], [ %2103, %2101 ]
  store double %2105, ptr %50, align 8, !tbaa !11
  store double 0.000000e+00, ptr %21, align 8, !tbaa !11
  store double 0.000000e+00, ptr %56, align 8, !tbaa !11
  %2106 = load i32, ptr %62, align 4, !tbaa !9
  store i32 %2106, ptr %19, align 4, !tbaa !9
  %2107 = load ptr, ptr %10, align 8, !tbaa !5
  %2108 = load i32, ptr %2107, align 4, !tbaa !9
  store i32 %2108, ptr %33, align 4, !tbaa !9
  br label %2109

2109:                                             ; preds = %2146, %2104
  %2110 = load i32, ptr %33, align 4, !tbaa !9
  %2111 = load i32, ptr %19, align 4, !tbaa !9
  %2112 = icmp sge i32 %2110, %2111
  br i1 %2112, label %2113, label %2149

2113:                                             ; preds = %2109
  %2114 = load ptr, ptr %13, align 8, !tbaa !5
  %2115 = load i32, ptr %33, align 4, !tbaa !9
  %2116 = sext i32 %2115 to i64
  %2117 = getelementptr inbounds double, ptr %2114, i64 %2116
  %2118 = load double, ptr %2117, align 8, !tbaa !11
  %2119 = load ptr, ptr %17, align 8, !tbaa !5
  %2120 = load i32, ptr %33, align 4, !tbaa !9
  %2121 = sext i32 %2120 to i64
  %2122 = getelementptr inbounds double, ptr %2119, i64 %2121
  %2123 = load double, ptr %2122, align 8, !tbaa !11
  %2124 = load ptr, ptr %14, align 8, !tbaa !5
  %2125 = load i32, ptr %33, align 4, !tbaa !9
  %2126 = sext i32 %2125 to i64
  %2127 = getelementptr inbounds double, ptr %2124, i64 %2126
  %2128 = load double, ptr %2127, align 8, !tbaa !11
  %2129 = fmul double %2123, %2128
  %2130 = fdiv double %2118, %2129
  store double %2130, ptr %26, align 8, !tbaa !11
  %2131 = load ptr, ptr %13, align 8, !tbaa !5
  %2132 = load i32, ptr %33, align 4, !tbaa !9
  %2133 = sext i32 %2132 to i64
  %2134 = getelementptr inbounds double, ptr %2131, i64 %2133
  %2135 = load double, ptr %2134, align 8, !tbaa !11
  %2136 = load double, ptr %26, align 8, !tbaa !11
  %2137 = load double, ptr %56, align 8, !tbaa !11
  %2138 = call double @llvm.fmuladd.f64(double %2135, double %2136, double %2137)
  store double %2138, ptr %56, align 8, !tbaa !11
  %2139 = load double, ptr %26, align 8, !tbaa !11
  %2140 = load double, ptr %26, align 8, !tbaa !11
  %2141 = load double, ptr %21, align 8, !tbaa !11
  %2142 = call double @llvm.fmuladd.f64(double %2139, double %2140, double %2141)
  store double %2142, ptr %21, align 8, !tbaa !11
  %2143 = load double, ptr %56, align 8, !tbaa !11
  %2144 = load double, ptr %50, align 8, !tbaa !11
  %2145 = fadd double %2144, %2143
  store double %2145, ptr %50, align 8, !tbaa !11
  br label %2146

2146:                                             ; preds = %2113
  %2147 = load i32, ptr %33, align 4, !tbaa !9
  %2148 = add nsw i32 %2147, -1
  store i32 %2148, ptr %33, align 4, !tbaa !9
  br label %2109, !llvm.loop !28

2149:                                             ; preds = %2109
  %2150 = load double, ptr %52, align 8, !tbaa !11
  %2151 = load double, ptr %56, align 8, !tbaa !11
  %2152 = fadd double %2150, %2151
  %2153 = load double, ptr %59, align 8, !tbaa !11
  %2154 = fadd double %2152, %2153
  store double %2154, ptr %34, align 8, !tbaa !11
  store i32 0, ptr %45, align 4, !tbaa !9
  %2155 = load i32, ptr %49, align 4, !tbaa !9
  %2156 = icmp ne i32 %2155, 0
  br i1 %2156, label %2157, label %2162

2157:                                             ; preds = %2149
  %2158 = load double, ptr %34, align 8, !tbaa !11
  %2159 = fcmp olt double %2158, 0.000000e+00
  br i1 %2159, label %2160, label %2161

2160:                                             ; preds = %2157
  store i32 1, ptr %45, align 4, !tbaa !9
  br label %2161

2161:                                             ; preds = %2160, %2157
  br label %2167

2162:                                             ; preds = %2149
  %2163 = load double, ptr %34, align 8, !tbaa !11
  %2164 = fcmp ogt double %2163, 0.000000e+00
  br i1 %2164, label %2165, label %2166

2165:                                             ; preds = %2162
  store i32 1, ptr %45, align 4, !tbaa !9
  br label %2166

2166:                                             ; preds = %2165, %2162
  br label %2167

2167:                                             ; preds = %2166, %2161
  %2168 = load i32, ptr %46, align 4, !tbaa !9
  %2169 = icmp eq i32 %2168, 1
  br i1 %2169, label %2175, label %2170

2170:                                             ; preds = %2167
  %2171 = load i32, ptr %46, align 4, !tbaa !9
  %2172 = load ptr, ptr %10, align 8, !tbaa !5
  %2173 = load i32, ptr %2172, align 4, !tbaa !9
  %2174 = icmp eq i32 %2171, %2173
  br i1 %2174, label %2175, label %2176

2175:                                             ; preds = %2170, %2167
  store i32 0, ptr %45, align 4, !tbaa !9
  br label %2176

2176:                                             ; preds = %2175, %2170
  %2177 = load ptr, ptr %13, align 8, !tbaa !5
  %2178 = load i32, ptr %46, align 4, !tbaa !9
  %2179 = sext i32 %2178 to i64
  %2180 = getelementptr inbounds double, ptr %2177, i64 %2179
  %2181 = load double, ptr %2180, align 8, !tbaa !11
  %2182 = load ptr, ptr %17, align 8, !tbaa !5
  %2183 = load i32, ptr %46, align 4, !tbaa !9
  %2184 = sext i32 %2183 to i64
  %2185 = getelementptr inbounds double, ptr %2182, i64 %2184
  %2186 = load double, ptr %2185, align 8, !tbaa !11
  %2187 = load ptr, ptr %14, align 8, !tbaa !5
  %2188 = load i32, ptr %46, align 4, !tbaa !9
  %2189 = sext i32 %2188 to i64
  %2190 = getelementptr inbounds double, ptr %2187, i64 %2189
  %2191 = load double, ptr %2190, align 8, !tbaa !11
  %2192 = fmul double %2186, %2191
  %2193 = fdiv double %2181, %2192
  store double %2193, ptr %26, align 8, !tbaa !11
  %2194 = load double, ptr %23, align 8, !tbaa !11
  %2195 = load double, ptr %21, align 8, !tbaa !11
  %2196 = fadd double %2194, %2195
  %2197 = load double, ptr %26, align 8, !tbaa !11
  %2198 = load double, ptr %26, align 8, !tbaa !11
  %2199 = call double @llvm.fmuladd.f64(double %2197, double %2198, double %2196)
  store double %2199, ptr %47, align 8, !tbaa !11
  %2200 = load ptr, ptr %13, align 8, !tbaa !5
  %2201 = load i32, ptr %46, align 4, !tbaa !9
  %2202 = sext i32 %2201 to i64
  %2203 = getelementptr inbounds double, ptr %2200, i64 %2202
  %2204 = load double, ptr %2203, align 8, !tbaa !11
  %2205 = load double, ptr %26, align 8, !tbaa !11
  %2206 = fmul double %2204, %2205
  store double %2206, ptr %26, align 8, !tbaa !11
  %2207 = load double, ptr %26, align 8, !tbaa !11
  %2208 = load double, ptr %34, align 8, !tbaa !11
  %2209 = fadd double %2208, %2207
  store double %2209, ptr %34, align 8, !tbaa !11
  %2210 = load double, ptr %56, align 8, !tbaa !11
  %2211 = load double, ptr %59, align 8, !tbaa !11
  %2212 = fsub double %2210, %2211
  %2213 = load double, ptr %50, align 8, !tbaa !11
  %2214 = call double @llvm.fmuladd.f64(double %2212, double 8.000000e+00, double %2213)
  %2215 = load double, ptr %52, align 8, !tbaa !11
  %2216 = call double @llvm.fmuladd.f64(double %2215, double 2.000000e+00, double %2214)
  %2217 = load double, ptr %26, align 8, !tbaa !11
  %2218 = fcmp oge double %2217, 0.000000e+00
  br i1 %2218, label %2219, label %2221

2219:                                             ; preds = %2176
  %2220 = load double, ptr %26, align 8, !tbaa !11
  br label %2224

2221:                                             ; preds = %2176
  %2222 = load double, ptr %26, align 8, !tbaa !11
  %2223 = fneg double %2222
  br label %2224

2224:                                             ; preds = %2221, %2219
  %2225 = phi double [ %2220, %2219 ], [ %2223, %2221 ]
  %2226 = call double @llvm.fmuladd.f64(double %2225, double 3.000000e+00, double %2216)
  store double %2226, ptr %50, align 8, !tbaa !11
  %2227 = load double, ptr %34, align 8, !tbaa !11
  %2228 = fcmp oge double %2227, 0.000000e+00
  br i1 %2228, label %2229, label %2231

2229:                                             ; preds = %2224
  %2230 = load double, ptr %34, align 8, !tbaa !11
  br label %2234

2231:                                             ; preds = %2224
  %2232 = load double, ptr %34, align 8, !tbaa !11
  %2233 = fneg double %2232
  br label %2234

2234:                                             ; preds = %2231, %2229
  %2235 = phi double [ %2230, %2229 ], [ %2233, %2231 ]
  %2236 = load double, ptr %57, align 8, !tbaa !11
  %2237 = load double, ptr %50, align 8, !tbaa !11
  %2238 = fmul double %2236, %2237
  %2239 = fcmp ole double %2235, %2238
  br i1 %2239, label %2240, label %2241

2240:                                             ; preds = %2234
  br label %4239

2241:                                             ; preds = %2234
  %2242 = load double, ptr %34, align 8, !tbaa !11
  %2243 = fcmp ole double %2242, 0.000000e+00
  br i1 %2243, label %2244, label %2254

2244:                                             ; preds = %2241
  %2245 = load double, ptr %22, align 8, !tbaa !11
  %2246 = load double, ptr %58, align 8, !tbaa !11
  %2247 = fcmp oge double %2245, %2246
  br i1 %2247, label %2248, label %2250

2248:                                             ; preds = %2244
  %2249 = load double, ptr %22, align 8, !tbaa !11
  br label %2252

2250:                                             ; preds = %2244
  %2251 = load double, ptr %58, align 8, !tbaa !11
  br label %2252

2252:                                             ; preds = %2250, %2248
  %2253 = phi double [ %2249, %2248 ], [ %2251, %2250 ]
  store double %2253, ptr %22, align 8, !tbaa !11
  br label %2264

2254:                                             ; preds = %2241
  %2255 = load double, ptr %24, align 8, !tbaa !11
  %2256 = load double, ptr %58, align 8, !tbaa !11
  %2257 = fcmp ole double %2255, %2256
  br i1 %2257, label %2258, label %2260

2258:                                             ; preds = %2254
  %2259 = load double, ptr %24, align 8, !tbaa !11
  br label %2262

2260:                                             ; preds = %2254
  %2261 = load double, ptr %58, align 8, !tbaa !11
  br label %2262

2262:                                             ; preds = %2260, %2258
  %2263 = phi double [ %2259, %2258 ], [ %2261, %2260 ]
  store double %2263, ptr %24, align 8, !tbaa !11
  br label %2264

2264:                                             ; preds = %2262, %2252
  %2265 = load i32, ptr %38, align 4, !tbaa !9
  %2266 = add nsw i32 %2265, 1
  store i32 %2266, ptr %38, align 4, !tbaa !9
  %2267 = load i32, ptr %45, align 4, !tbaa !9
  %2268 = icmp ne i32 %2267, 0
  br i1 %2268, label %2457, label %2269

2269:                                             ; preds = %2264
  %2270 = load ptr, ptr %17, align 8, !tbaa !5
  %2271 = load i32, ptr %53, align 4, !tbaa !9
  %2272 = sext i32 %2271 to i64
  %2273 = getelementptr inbounds double, ptr %2270, i64 %2272
  %2274 = load double, ptr %2273, align 8, !tbaa !11
  %2275 = load ptr, ptr %14, align 8, !tbaa !5
  %2276 = load i32, ptr %53, align 4, !tbaa !9
  %2277 = sext i32 %2276 to i64
  %2278 = getelementptr inbounds double, ptr %2275, i64 %2277
  %2279 = load double, ptr %2278, align 8, !tbaa !11
  %2280 = fmul double %2274, %2279
  store double %2280, ptr %51, align 8, !tbaa !11
  %2281 = load ptr, ptr %17, align 8, !tbaa !5
  %2282 = load ptr, ptr %11, align 8, !tbaa !5
  %2283 = load i32, ptr %2282, align 4, !tbaa !9
  %2284 = sext i32 %2283 to i64
  %2285 = getelementptr inbounds double, ptr %2281, i64 %2284
  %2286 = load double, ptr %2285, align 8, !tbaa !11
  %2287 = load ptr, ptr %14, align 8, !tbaa !5
  %2288 = load ptr, ptr %11, align 8, !tbaa !5
  %2289 = load i32, ptr %2288, align 4, !tbaa !9
  %2290 = sext i32 %2289 to i64
  %2291 = getelementptr inbounds double, ptr %2287, i64 %2290
  %2292 = load double, ptr %2291, align 8, !tbaa !11
  %2293 = fmul double %2286, %2292
  store double %2293, ptr %39, align 8, !tbaa !11
  %2294 = load i32, ptr %49, align 4, !tbaa !9
  %2295 = icmp ne i32 %2294, 0
  br i1 %2295, label %2296, label %2315

2296:                                             ; preds = %2269
  %2297 = load ptr, ptr %13, align 8, !tbaa !5
  %2298 = load ptr, ptr %11, align 8, !tbaa !5
  %2299 = load i32, ptr %2298, align 4, !tbaa !9
  %2300 = sext i32 %2299 to i64
  %2301 = getelementptr inbounds double, ptr %2297, i64 %2300
  %2302 = load double, ptr %2301, align 8, !tbaa !11
  %2303 = load double, ptr %39, align 8, !tbaa !11
  %2304 = fdiv double %2302, %2303
  store double %2304, ptr %20, align 8, !tbaa !11
  %2305 = load double, ptr %34, align 8, !tbaa !11
  %2306 = load double, ptr %51, align 8, !tbaa !11
  %2307 = load double, ptr %47, align 8, !tbaa !11
  %2308 = fneg double %2306
  %2309 = call double @llvm.fmuladd.f64(double %2308, double %2307, double %2305)
  %2310 = load double, ptr %36, align 8, !tbaa !11
  %2311 = load double, ptr %20, align 8, !tbaa !11
  %2312 = load double, ptr %20, align 8, !tbaa !11
  %2313 = fmul double %2311, %2312
  %2314 = call double @llvm.fmuladd.f64(double %2310, double %2313, double %2309)
  store double %2314, ptr %32, align 8, !tbaa !11
  br label %2334

2315:                                             ; preds = %2269
  %2316 = load ptr, ptr %13, align 8, !tbaa !5
  %2317 = load i32, ptr %53, align 4, !tbaa !9
  %2318 = sext i32 %2317 to i64
  %2319 = getelementptr inbounds double, ptr %2316, i64 %2318
  %2320 = load double, ptr %2319, align 8, !tbaa !11
  %2321 = load double, ptr %51, align 8, !tbaa !11
  %2322 = fdiv double %2320, %2321
  store double %2322, ptr %20, align 8, !tbaa !11
  %2323 = load double, ptr %34, align 8, !tbaa !11
  %2324 = load double, ptr %39, align 8, !tbaa !11
  %2325 = load double, ptr %47, align 8, !tbaa !11
  %2326 = fneg double %2324
  %2327 = call double @llvm.fmuladd.f64(double %2326, double %2325, double %2323)
  %2328 = load double, ptr %36, align 8, !tbaa !11
  %2329 = load double, ptr %20, align 8, !tbaa !11
  %2330 = load double, ptr %20, align 8, !tbaa !11
  %2331 = fmul double %2329, %2330
  %2332 = fneg double %2328
  %2333 = call double @llvm.fmuladd.f64(double %2332, double %2331, double %2327)
  store double %2333, ptr %32, align 8, !tbaa !11
  br label %2334

2334:                                             ; preds = %2315, %2296
  %2335 = load double, ptr %51, align 8, !tbaa !11
  %2336 = load double, ptr %39, align 8, !tbaa !11
  %2337 = fadd double %2335, %2336
  %2338 = load double, ptr %34, align 8, !tbaa !11
  %2339 = load double, ptr %51, align 8, !tbaa !11
  %2340 = load double, ptr %39, align 8, !tbaa !11
  %2341 = fmul double %2339, %2340
  %2342 = load double, ptr %47, align 8, !tbaa !11
  %2343 = fmul double %2341, %2342
  %2344 = fneg double %2343
  %2345 = call double @llvm.fmuladd.f64(double %2337, double %2338, double %2344)
  store double %2345, ptr %30, align 8, !tbaa !11
  %2346 = load double, ptr %51, align 8, !tbaa !11
  %2347 = load double, ptr %39, align 8, !tbaa !11
  %2348 = fmul double %2346, %2347
  %2349 = load double, ptr %34, align 8, !tbaa !11
  %2350 = fmul double %2348, %2349
  store double %2350, ptr %31, align 8, !tbaa !11
  %2351 = load double, ptr %32, align 8, !tbaa !11
  %2352 = fcmp oeq double %2351, 0.000000e+00
  br i1 %2352, label %2353, label %2404

2353:                                             ; preds = %2334
  %2354 = load double, ptr %30, align 8, !tbaa !11
  %2355 = fcmp oeq double %2354, 0.000000e+00
  br i1 %2355, label %2356, label %2400

2356:                                             ; preds = %2353
  %2357 = load i32, ptr %49, align 4, !tbaa !9
  %2358 = icmp ne i32 %2357, 0
  br i1 %2358, label %2359, label %2380

2359:                                             ; preds = %2356
  %2360 = load ptr, ptr %13, align 8, !tbaa !5
  %2361 = load ptr, ptr %11, align 8, !tbaa !5
  %2362 = load i32, ptr %2361, align 4, !tbaa !9
  %2363 = sext i32 %2362 to i64
  %2364 = getelementptr inbounds double, ptr %2360, i64 %2363
  %2365 = load double, ptr %2364, align 8, !tbaa !11
  %2366 = load ptr, ptr %13, align 8, !tbaa !5
  %2367 = load ptr, ptr %11, align 8, !tbaa !5
  %2368 = load i32, ptr %2367, align 4, !tbaa !9
  %2369 = sext i32 %2368 to i64
  %2370 = getelementptr inbounds double, ptr %2366, i64 %2369
  %2371 = load double, ptr %2370, align 8, !tbaa !11
  %2372 = load double, ptr %51, align 8, !tbaa !11
  %2373 = load double, ptr %51, align 8, !tbaa !11
  %2374 = fmul double %2372, %2373
  %2375 = load double, ptr %23, align 8, !tbaa !11
  %2376 = load double, ptr %21, align 8, !tbaa !11
  %2377 = fadd double %2375, %2376
  %2378 = fmul double %2374, %2377
  %2379 = call double @llvm.fmuladd.f64(double %2365, double %2371, double %2378)
  store double %2379, ptr %30, align 8, !tbaa !11
  br label %2399

2380:                                             ; preds = %2356
  %2381 = load ptr, ptr %13, align 8, !tbaa !5
  %2382 = load i32, ptr %53, align 4, !tbaa !9
  %2383 = sext i32 %2382 to i64
  %2384 = getelementptr inbounds double, ptr %2381, i64 %2383
  %2385 = load double, ptr %2384, align 8, !tbaa !11
  %2386 = load ptr, ptr %13, align 8, !tbaa !5
  %2387 = load i32, ptr %53, align 4, !tbaa !9
  %2388 = sext i32 %2387 to i64
  %2389 = getelementptr inbounds double, ptr %2386, i64 %2388
  %2390 = load double, ptr %2389, align 8, !tbaa !11
  %2391 = load double, ptr %39, align 8, !tbaa !11
  %2392 = load double, ptr %39, align 8, !tbaa !11
  %2393 = fmul double %2391, %2392
  %2394 = load double, ptr %23, align 8, !tbaa !11
  %2395 = load double, ptr %21, align 8, !tbaa !11
  %2396 = fadd double %2394, %2395
  %2397 = fmul double %2393, %2396
  %2398 = call double @llvm.fmuladd.f64(double %2385, double %2390, double %2397)
  store double %2398, ptr %30, align 8, !tbaa !11
  br label %2399

2399:                                             ; preds = %2380, %2359
  br label %2400

2400:                                             ; preds = %2399, %2353
  %2401 = load double, ptr %31, align 8, !tbaa !11
  %2402 = load double, ptr %30, align 8, !tbaa !11
  %2403 = fdiv double %2401, %2402
  store double %2403, ptr %55, align 8, !tbaa !11
  br label %2456

2404:                                             ; preds = %2334
  %2405 = load double, ptr %30, align 8, !tbaa !11
  %2406 = fcmp ole double %2405, 0.000000e+00
  br i1 %2406, label %2407, label %2431

2407:                                             ; preds = %2404
  %2408 = load double, ptr %30, align 8, !tbaa !11
  %2409 = load double, ptr %30, align 8, !tbaa !11
  %2410 = load double, ptr %30, align 8, !tbaa !11
  %2411 = load double, ptr %31, align 8, !tbaa !11
  %2412 = fmul double %2411, 4.000000e+00
  %2413 = load double, ptr %32, align 8, !tbaa !11
  %2414 = fmul double %2412, %2413
  %2415 = fneg double %2414
  %2416 = call double @llvm.fmuladd.f64(double %2409, double %2410, double %2415)
  store double %2416, ptr %20, align 8, !tbaa !11
  %2417 = load double, ptr %20, align 8, !tbaa !11
  %2418 = fcmp oge double %2417, 0.000000e+00
  br i1 %2418, label %2419, label %2421

2419:                                             ; preds = %2407
  %2420 = load double, ptr %20, align 8, !tbaa !11
  br label %2424

2421:                                             ; preds = %2407
  %2422 = load double, ptr %20, align 8, !tbaa !11
  %2423 = fneg double %2422
  br label %2424

2424:                                             ; preds = %2421, %2419
  %2425 = phi double [ %2420, %2419 ], [ %2423, %2421 ]
  %2426 = call double @sqrt(double noundef %2425) #5
  %2427 = fsub double %2408, %2426
  %2428 = load double, ptr %32, align 8, !tbaa !11
  %2429 = fmul double %2428, 2.000000e+00
  %2430 = fdiv double %2427, %2429
  store double %2430, ptr %55, align 8, !tbaa !11
  br label %2455

2431:                                             ; preds = %2404
  %2432 = load double, ptr %31, align 8, !tbaa !11
  %2433 = fmul double %2432, 2.000000e+00
  %2434 = load double, ptr %30, align 8, !tbaa !11
  %2435 = load double, ptr %30, align 8, !tbaa !11
  %2436 = load double, ptr %30, align 8, !tbaa !11
  %2437 = load double, ptr %31, align 8, !tbaa !11
  %2438 = fmul double %2437, 4.000000e+00
  %2439 = load double, ptr %32, align 8, !tbaa !11
  %2440 = fmul double %2438, %2439
  %2441 = fneg double %2440
  %2442 = call double @llvm.fmuladd.f64(double %2435, double %2436, double %2441)
  store double %2442, ptr %20, align 8, !tbaa !11
  %2443 = load double, ptr %20, align 8, !tbaa !11
  %2444 = fcmp oge double %2443, 0.000000e+00
  br i1 %2444, label %2445, label %2447

2445:                                             ; preds = %2431
  %2446 = load double, ptr %20, align 8, !tbaa !11
  br label %2450

2447:                                             ; preds = %2431
  %2448 = load double, ptr %20, align 8, !tbaa !11
  %2449 = fneg double %2448
  br label %2450

2450:                                             ; preds = %2447, %2445
  %2451 = phi double [ %2446, %2445 ], [ %2449, %2447 ]
  %2452 = call double @sqrt(double noundef %2451) #5
  %2453 = fadd double %2434, %2452
  %2454 = fdiv double %2433, %2453
  store double %2454, ptr %55, align 8, !tbaa !11
  br label %2455

2455:                                             ; preds = %2450, %2424
  br label %2456

2456:                                             ; preds = %2455, %2400
  br label %2868

2457:                                             ; preds = %2264
  %2458 = load ptr, ptr %17, align 8, !tbaa !5
  %2459 = load i32, ptr %61, align 4, !tbaa !9
  %2460 = sext i32 %2459 to i64
  %2461 = getelementptr inbounds double, ptr %2458, i64 %2460
  %2462 = load double, ptr %2461, align 8, !tbaa !11
  %2463 = load ptr, ptr %14, align 8, !tbaa !5
  %2464 = load i32, ptr %61, align 4, !tbaa !9
  %2465 = sext i32 %2464 to i64
  %2466 = getelementptr inbounds double, ptr %2463, i64 %2465
  %2467 = load double, ptr %2466, align 8, !tbaa !11
  %2468 = fmul double %2462, %2467
  store double %2468, ptr %35, align 8, !tbaa !11
  %2469 = load ptr, ptr %17, align 8, !tbaa !5
  %2470 = load i32, ptr %62, align 4, !tbaa !9
  %2471 = sext i32 %2470 to i64
  %2472 = getelementptr inbounds double, ptr %2469, i64 %2471
  %2473 = load double, ptr %2472, align 8, !tbaa !11
  %2474 = load ptr, ptr %14, align 8, !tbaa !5
  %2475 = load i32, ptr %62, align 4, !tbaa !9
  %2476 = sext i32 %2475 to i64
  %2477 = getelementptr inbounds double, ptr %2474, i64 %2476
  %2478 = load double, ptr %2477, align 8, !tbaa !11
  %2479 = fmul double %2473, %2478
  store double %2479, ptr %37, align 8, !tbaa !11
  %2480 = load double, ptr %52, align 8, !tbaa !11
  %2481 = load double, ptr %59, align 8, !tbaa !11
  %2482 = fadd double %2480, %2481
  %2483 = load double, ptr %56, align 8, !tbaa !11
  %2484 = fadd double %2482, %2483
  store double %2484, ptr %26, align 8, !tbaa !11
  %2485 = load i32, ptr %49, align 4, !tbaa !9
  %2486 = icmp ne i32 %2485, 0
  br i1 %2486, label %2487, label %2565

2487:                                             ; preds = %2457
  %2488 = load ptr, ptr %13, align 8, !tbaa !5
  %2489 = load i32, ptr %61, align 4, !tbaa !9
  %2490 = sext i32 %2489 to i64
  %2491 = getelementptr inbounds double, ptr %2488, i64 %2490
  %2492 = load double, ptr %2491, align 8, !tbaa !11
  %2493 = load double, ptr %35, align 8, !tbaa !11
  %2494 = fdiv double %2492, %2493
  store double %2494, ptr %28, align 8, !tbaa !11
  %2495 = load double, ptr %28, align 8, !tbaa !11
  %2496 = load double, ptr %28, align 8, !tbaa !11
  %2497 = fmul double %2496, %2495
  store double %2497, ptr %28, align 8, !tbaa !11
  %2498 = load double, ptr %26, align 8, !tbaa !11
  %2499 = load double, ptr %37, align 8, !tbaa !11
  %2500 = load double, ptr %23, align 8, !tbaa !11
  %2501 = load double, ptr %21, align 8, !tbaa !11
  %2502 = fadd double %2500, %2501
  %2503 = fneg double %2499
  %2504 = call double @llvm.fmuladd.f64(double %2503, double %2502, double %2498)
  %2505 = load ptr, ptr %12, align 8, !tbaa !5
  %2506 = load i32, ptr %61, align 4, !tbaa !9
  %2507 = sext i32 %2506 to i64
  %2508 = getelementptr inbounds double, ptr %2505, i64 %2507
  %2509 = load double, ptr %2508, align 8, !tbaa !11
  %2510 = load ptr, ptr %12, align 8, !tbaa !5
  %2511 = load i32, ptr %62, align 4, !tbaa !9
  %2512 = sext i32 %2511 to i64
  %2513 = getelementptr inbounds double, ptr %2510, i64 %2512
  %2514 = load double, ptr %2513, align 8, !tbaa !11
  %2515 = fsub double %2509, %2514
  %2516 = load ptr, ptr %12, align 8, !tbaa !5
  %2517 = load i32, ptr %61, align 4, !tbaa !9
  %2518 = sext i32 %2517 to i64
  %2519 = getelementptr inbounds double, ptr %2516, i64 %2518
  %2520 = load double, ptr %2519, align 8, !tbaa !11
  %2521 = load ptr, ptr %12, align 8, !tbaa !5
  %2522 = load i32, ptr %62, align 4, !tbaa !9
  %2523 = sext i32 %2522 to i64
  %2524 = getelementptr inbounds double, ptr %2521, i64 %2523
  %2525 = load double, ptr %2524, align 8, !tbaa !11
  %2526 = fadd double %2520, %2525
  %2527 = fmul double %2515, %2526
  %2528 = load double, ptr %28, align 8, !tbaa !11
  %2529 = fneg double %2527
  %2530 = call double @llvm.fmuladd.f64(double %2529, double %2528, double %2504)
  store double %2530, ptr %32, align 8, !tbaa !11
  %2531 = load ptr, ptr %13, align 8, !tbaa !5
  %2532 = load i32, ptr %61, align 4, !tbaa !9
  %2533 = sext i32 %2532 to i64
  %2534 = getelementptr inbounds double, ptr %2531, i64 %2533
  %2535 = load double, ptr %2534, align 8, !tbaa !11
  %2536 = load ptr, ptr %13, align 8, !tbaa !5
  %2537 = load i32, ptr %61, align 4, !tbaa !9
  %2538 = sext i32 %2537 to i64
  %2539 = getelementptr inbounds double, ptr %2536, i64 %2538
  %2540 = load double, ptr %2539, align 8, !tbaa !11
  %2541 = fmul double %2535, %2540
  %2542 = getelementptr inbounds [3 x double], ptr %48, i64 0, i64 0
  store double %2541, ptr %2542, align 16, !tbaa !11
  %2543 = load double, ptr %23, align 8, !tbaa !11
  %2544 = load double, ptr %28, align 8, !tbaa !11
  %2545 = fcmp olt double %2543, %2544
  br i1 %2545, label %2546, label %2553

2546:                                             ; preds = %2487
  %2547 = load double, ptr %37, align 8, !tbaa !11
  %2548 = load double, ptr %37, align 8, !tbaa !11
  %2549 = fmul double %2547, %2548
  %2550 = load double, ptr %21, align 8, !tbaa !11
  %2551 = fmul double %2549, %2550
  %2552 = getelementptr inbounds [3 x double], ptr %48, i64 0, i64 2
  store double %2551, ptr %2552, align 16, !tbaa !11
  br label %2564

2553:                                             ; preds = %2487
  %2554 = load double, ptr %37, align 8, !tbaa !11
  %2555 = load double, ptr %37, align 8, !tbaa !11
  %2556 = fmul double %2554, %2555
  %2557 = load double, ptr %23, align 8, !tbaa !11
  %2558 = load double, ptr %28, align 8, !tbaa !11
  %2559 = fsub double %2557, %2558
  %2560 = load double, ptr %21, align 8, !tbaa !11
  %2561 = fadd double %2559, %2560
  %2562 = fmul double %2556, %2561
  %2563 = getelementptr inbounds [3 x double], ptr %48, i64 0, i64 2
  store double %2562, ptr %2563, align 16, !tbaa !11
  br label %2564

2564:                                             ; preds = %2553, %2546
  br label %2643

2565:                                             ; preds = %2457
  %2566 = load ptr, ptr %13, align 8, !tbaa !5
  %2567 = load i32, ptr %62, align 4, !tbaa !9
  %2568 = sext i32 %2567 to i64
  %2569 = getelementptr inbounds double, ptr %2566, i64 %2568
  %2570 = load double, ptr %2569, align 8, !tbaa !11
  %2571 = load double, ptr %37, align 8, !tbaa !11
  %2572 = fdiv double %2570, %2571
  store double %2572, ptr %28, align 8, !tbaa !11
  %2573 = load double, ptr %28, align 8, !tbaa !11
  %2574 = load double, ptr %28, align 8, !tbaa !11
  %2575 = fmul double %2574, %2573
  store double %2575, ptr %28, align 8, !tbaa !11
  %2576 = load double, ptr %26, align 8, !tbaa !11
  %2577 = load double, ptr %35, align 8, !tbaa !11
  %2578 = load double, ptr %23, align 8, !tbaa !11
  %2579 = load double, ptr %21, align 8, !tbaa !11
  %2580 = fadd double %2578, %2579
  %2581 = fneg double %2577
  %2582 = call double @llvm.fmuladd.f64(double %2581, double %2580, double %2576)
  %2583 = load ptr, ptr %12, align 8, !tbaa !5
  %2584 = load i32, ptr %62, align 4, !tbaa !9
  %2585 = sext i32 %2584 to i64
  %2586 = getelementptr inbounds double, ptr %2583, i64 %2585
  %2587 = load double, ptr %2586, align 8, !tbaa !11
  %2588 = load ptr, ptr %12, align 8, !tbaa !5
  %2589 = load i32, ptr %61, align 4, !tbaa !9
  %2590 = sext i32 %2589 to i64
  %2591 = getelementptr inbounds double, ptr %2588, i64 %2590
  %2592 = load double, ptr %2591, align 8, !tbaa !11
  %2593 = fsub double %2587, %2592
  %2594 = load ptr, ptr %12, align 8, !tbaa !5
  %2595 = load i32, ptr %61, align 4, !tbaa !9
  %2596 = sext i32 %2595 to i64
  %2597 = getelementptr inbounds double, ptr %2594, i64 %2596
  %2598 = load double, ptr %2597, align 8, !tbaa !11
  %2599 = load ptr, ptr %12, align 8, !tbaa !5
  %2600 = load i32, ptr %62, align 4, !tbaa !9
  %2601 = sext i32 %2600 to i64
  %2602 = getelementptr inbounds double, ptr %2599, i64 %2601
  %2603 = load double, ptr %2602, align 8, !tbaa !11
  %2604 = fadd double %2598, %2603
  %2605 = fmul double %2593, %2604
  %2606 = load double, ptr %28, align 8, !tbaa !11
  %2607 = fneg double %2605
  %2608 = call double @llvm.fmuladd.f64(double %2607, double %2606, double %2582)
  store double %2608, ptr %32, align 8, !tbaa !11
  %2609 = load double, ptr %21, align 8, !tbaa !11
  %2610 = load double, ptr %28, align 8, !tbaa !11
  %2611 = fcmp olt double %2609, %2610
  br i1 %2611, label %2612, label %2619

2612:                                             ; preds = %2565
  %2613 = load double, ptr %35, align 8, !tbaa !11
  %2614 = load double, ptr %35, align 8, !tbaa !11
  %2615 = fmul double %2613, %2614
  %2616 = load double, ptr %23, align 8, !tbaa !11
  %2617 = fmul double %2615, %2616
  %2618 = getelementptr inbounds [3 x double], ptr %48, i64 0, i64 0
  store double %2617, ptr %2618, align 16, !tbaa !11
  br label %2630

2619:                                             ; preds = %2565
  %2620 = load double, ptr %35, align 8, !tbaa !11
  %2621 = load double, ptr %35, align 8, !tbaa !11
  %2622 = fmul double %2620, %2621
  %2623 = load double, ptr %23, align 8, !tbaa !11
  %2624 = load double, ptr %21, align 8, !tbaa !11
  %2625 = load double, ptr %28, align 8, !tbaa !11
  %2626 = fsub double %2624, %2625
  %2627 = fadd double %2623, %2626
  %2628 = fmul double %2622, %2627
  %2629 = getelementptr inbounds [3 x double], ptr %48, i64 0, i64 0
  store double %2628, ptr %2629, align 16, !tbaa !11
  br label %2630

2630:                                             ; preds = %2619, %2612
  %2631 = load ptr, ptr %13, align 8, !tbaa !5
  %2632 = load i32, ptr %62, align 4, !tbaa !9
  %2633 = sext i32 %2632 to i64
  %2634 = getelementptr inbounds double, ptr %2631, i64 %2633
  %2635 = load double, ptr %2634, align 8, !tbaa !11
  %2636 = load ptr, ptr %13, align 8, !tbaa !5
  %2637 = load i32, ptr %62, align 4, !tbaa !9
  %2638 = sext i32 %2637 to i64
  %2639 = getelementptr inbounds double, ptr %2636, i64 %2638
  %2640 = load double, ptr %2639, align 8, !tbaa !11
  %2641 = fmul double %2635, %2640
  %2642 = getelementptr inbounds [3 x double], ptr %48, i64 0, i64 2
  store double %2641, ptr %2642, align 16, !tbaa !11
  br label %2643

2643:                                             ; preds = %2630, %2564
  %2644 = load ptr, ptr %13, align 8, !tbaa !5
  %2645 = load i32, ptr %46, align 4, !tbaa !9
  %2646 = sext i32 %2645 to i64
  %2647 = getelementptr inbounds double, ptr %2644, i64 %2646
  %2648 = load double, ptr %2647, align 8, !tbaa !11
  %2649 = load ptr, ptr %13, align 8, !tbaa !5
  %2650 = load i32, ptr %46, align 4, !tbaa !9
  %2651 = sext i32 %2650 to i64
  %2652 = getelementptr inbounds double, ptr %2649, i64 %2651
  %2653 = load double, ptr %2652, align 8, !tbaa !11
  %2654 = fmul double %2648, %2653
  %2655 = getelementptr inbounds [3 x double], ptr %48, i64 0, i64 1
  store double %2654, ptr %2655, align 8, !tbaa !11
  %2656 = load double, ptr %35, align 8, !tbaa !11
  %2657 = getelementptr inbounds [3 x double], ptr %43, i64 0, i64 0
  store double %2656, ptr %2657, align 16, !tbaa !11
  %2658 = load ptr, ptr %14, align 8, !tbaa !5
  %2659 = load i32, ptr %46, align 4, !tbaa !9
  %2660 = sext i32 %2659 to i64
  %2661 = getelementptr inbounds double, ptr %2658, i64 %2660
  %2662 = load double, ptr %2661, align 8, !tbaa !11
  %2663 = load ptr, ptr %17, align 8, !tbaa !5
  %2664 = load i32, ptr %46, align 4, !tbaa !9
  %2665 = sext i32 %2664 to i64
  %2666 = getelementptr inbounds double, ptr %2663, i64 %2665
  %2667 = load double, ptr %2666, align 8, !tbaa !11
  %2668 = fmul double %2662, %2667
  %2669 = getelementptr inbounds [3 x double], ptr %43, i64 0, i64 1
  store double %2668, ptr %2669, align 8, !tbaa !11
  %2670 = load double, ptr %37, align 8, !tbaa !11
  %2671 = getelementptr inbounds [3 x double], ptr %43, i64 0, i64 2
  store double %2670, ptr %2671, align 16, !tbaa !11
  %2672 = getelementptr inbounds [3 x double], ptr %43, i64 0, i64 0
  %2673 = getelementptr inbounds [3 x double], ptr %48, i64 0, i64 0
  %2674 = load ptr, ptr %18, align 8, !tbaa !5
  call void @dlaed6_(ptr noundef %38, ptr noundef %49, ptr noundef %32, ptr noundef %2672, ptr noundef %2673, ptr noundef %34, ptr noundef %55, ptr noundef %2674)
  %2675 = load ptr, ptr %18, align 8, !tbaa !5
  %2676 = load i32, ptr %2675, align 4, !tbaa !9
  %2677 = icmp ne i32 %2676, 0
  br i1 %2677, label %2678, label %2867

2678:                                             ; preds = %2643
  store i32 0, ptr %45, align 4, !tbaa !9
  %2679 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 0, ptr %2679, align 4, !tbaa !9
  %2680 = load ptr, ptr %17, align 8, !tbaa !5
  %2681 = load i32, ptr %53, align 4, !tbaa !9
  %2682 = sext i32 %2681 to i64
  %2683 = getelementptr inbounds double, ptr %2680, i64 %2682
  %2684 = load double, ptr %2683, align 8, !tbaa !11
  %2685 = load ptr, ptr %14, align 8, !tbaa !5
  %2686 = load i32, ptr %53, align 4, !tbaa !9
  %2687 = sext i32 %2686 to i64
  %2688 = getelementptr inbounds double, ptr %2685, i64 %2687
  %2689 = load double, ptr %2688, align 8, !tbaa !11
  %2690 = fmul double %2684, %2689
  store double %2690, ptr %51, align 8, !tbaa !11
  %2691 = load ptr, ptr %17, align 8, !tbaa !5
  %2692 = load ptr, ptr %11, align 8, !tbaa !5
  %2693 = load i32, ptr %2692, align 4, !tbaa !9
  %2694 = sext i32 %2693 to i64
  %2695 = getelementptr inbounds double, ptr %2691, i64 %2694
  %2696 = load double, ptr %2695, align 8, !tbaa !11
  %2697 = load ptr, ptr %14, align 8, !tbaa !5
  %2698 = load ptr, ptr %11, align 8, !tbaa !5
  %2699 = load i32, ptr %2698, align 4, !tbaa !9
  %2700 = sext i32 %2699 to i64
  %2701 = getelementptr inbounds double, ptr %2697, i64 %2700
  %2702 = load double, ptr %2701, align 8, !tbaa !11
  %2703 = fmul double %2696, %2702
  store double %2703, ptr %39, align 8, !tbaa !11
  %2704 = load i32, ptr %49, align 4, !tbaa !9
  %2705 = icmp ne i32 %2704, 0
  br i1 %2705, label %2706, label %2725

2706:                                             ; preds = %2678
  %2707 = load ptr, ptr %13, align 8, !tbaa !5
  %2708 = load ptr, ptr %11, align 8, !tbaa !5
  %2709 = load i32, ptr %2708, align 4, !tbaa !9
  %2710 = sext i32 %2709 to i64
  %2711 = getelementptr inbounds double, ptr %2707, i64 %2710
  %2712 = load double, ptr %2711, align 8, !tbaa !11
  %2713 = load double, ptr %39, align 8, !tbaa !11
  %2714 = fdiv double %2712, %2713
  store double %2714, ptr %20, align 8, !tbaa !11
  %2715 = load double, ptr %34, align 8, !tbaa !11
  %2716 = load double, ptr %51, align 8, !tbaa !11
  %2717 = load double, ptr %47, align 8, !tbaa !11
  %2718 = fneg double %2716
  %2719 = call double @llvm.fmuladd.f64(double %2718, double %2717, double %2715)
  %2720 = load double, ptr %36, align 8, !tbaa !11
  %2721 = load double, ptr %20, align 8, !tbaa !11
  %2722 = load double, ptr %20, align 8, !tbaa !11
  %2723 = fmul double %2721, %2722
  %2724 = call double @llvm.fmuladd.f64(double %2720, double %2723, double %2719)
  store double %2724, ptr %32, align 8, !tbaa !11
  br label %2744

2725:                                             ; preds = %2678
  %2726 = load ptr, ptr %13, align 8, !tbaa !5
  %2727 = load i32, ptr %53, align 4, !tbaa !9
  %2728 = sext i32 %2727 to i64
  %2729 = getelementptr inbounds double, ptr %2726, i64 %2728
  %2730 = load double, ptr %2729, align 8, !tbaa !11
  %2731 = load double, ptr %51, align 8, !tbaa !11
  %2732 = fdiv double %2730, %2731
  store double %2732, ptr %20, align 8, !tbaa !11
  %2733 = load double, ptr %34, align 8, !tbaa !11
  %2734 = load double, ptr %39, align 8, !tbaa !11
  %2735 = load double, ptr %47, align 8, !tbaa !11
  %2736 = fneg double %2734
  %2737 = call double @llvm.fmuladd.f64(double %2736, double %2735, double %2733)
  %2738 = load double, ptr %36, align 8, !tbaa !11
  %2739 = load double, ptr %20, align 8, !tbaa !11
  %2740 = load double, ptr %20, align 8, !tbaa !11
  %2741 = fmul double %2739, %2740
  %2742 = fneg double %2738
  %2743 = call double @llvm.fmuladd.f64(double %2742, double %2741, double %2737)
  store double %2743, ptr %32, align 8, !tbaa !11
  br label %2744

2744:                                             ; preds = %2725, %2706
  %2745 = load double, ptr %51, align 8, !tbaa !11
  %2746 = load double, ptr %39, align 8, !tbaa !11
  %2747 = fadd double %2745, %2746
  %2748 = load double, ptr %34, align 8, !tbaa !11
  %2749 = load double, ptr %51, align 8, !tbaa !11
  %2750 = load double, ptr %39, align 8, !tbaa !11
  %2751 = fmul double %2749, %2750
  %2752 = load double, ptr %47, align 8, !tbaa !11
  %2753 = fmul double %2751, %2752
  %2754 = fneg double %2753
  %2755 = call double @llvm.fmuladd.f64(double %2747, double %2748, double %2754)
  store double %2755, ptr %30, align 8, !tbaa !11
  %2756 = load double, ptr %51, align 8, !tbaa !11
  %2757 = load double, ptr %39, align 8, !tbaa !11
  %2758 = fmul double %2756, %2757
  %2759 = load double, ptr %34, align 8, !tbaa !11
  %2760 = fmul double %2758, %2759
  store double %2760, ptr %31, align 8, !tbaa !11
  %2761 = load double, ptr %32, align 8, !tbaa !11
  %2762 = fcmp oeq double %2761, 0.000000e+00
  br i1 %2762, label %2763, label %2814

2763:                                             ; preds = %2744
  %2764 = load double, ptr %30, align 8, !tbaa !11
  %2765 = fcmp oeq double %2764, 0.000000e+00
  br i1 %2765, label %2766, label %2810

2766:                                             ; preds = %2763
  %2767 = load i32, ptr %49, align 4, !tbaa !9
  %2768 = icmp ne i32 %2767, 0
  br i1 %2768, label %2769, label %2790

2769:                                             ; preds = %2766
  %2770 = load ptr, ptr %13, align 8, !tbaa !5
  %2771 = load ptr, ptr %11, align 8, !tbaa !5
  %2772 = load i32, ptr %2771, align 4, !tbaa !9
  %2773 = sext i32 %2772 to i64
  %2774 = getelementptr inbounds double, ptr %2770, i64 %2773
  %2775 = load double, ptr %2774, align 8, !tbaa !11
  %2776 = load ptr, ptr %13, align 8, !tbaa !5
  %2777 = load ptr, ptr %11, align 8, !tbaa !5
  %2778 = load i32, ptr %2777, align 4, !tbaa !9
  %2779 = sext i32 %2778 to i64
  %2780 = getelementptr inbounds double, ptr %2776, i64 %2779
  %2781 = load double, ptr %2780, align 8, !tbaa !11
  %2782 = load double, ptr %51, align 8, !tbaa !11
  %2783 = load double, ptr %51, align 8, !tbaa !11
  %2784 = fmul double %2782, %2783
  %2785 = load double, ptr %23, align 8, !tbaa !11
  %2786 = load double, ptr %21, align 8, !tbaa !11
  %2787 = fadd double %2785, %2786
  %2788 = fmul double %2784, %2787
  %2789 = call double @llvm.fmuladd.f64(double %2775, double %2781, double %2788)
  store double %2789, ptr %30, align 8, !tbaa !11
  br label %2809

2790:                                             ; preds = %2766
  %2791 = load ptr, ptr %13, align 8, !tbaa !5
  %2792 = load i32, ptr %53, align 4, !tbaa !9
  %2793 = sext i32 %2792 to i64
  %2794 = getelementptr inbounds double, ptr %2791, i64 %2793
  %2795 = load double, ptr %2794, align 8, !tbaa !11
  %2796 = load ptr, ptr %13, align 8, !tbaa !5
  %2797 = load i32, ptr %53, align 4, !tbaa !9
  %2798 = sext i32 %2797 to i64
  %2799 = getelementptr inbounds double, ptr %2796, i64 %2798
  %2800 = load double, ptr %2799, align 8, !tbaa !11
  %2801 = load double, ptr %39, align 8, !tbaa !11
  %2802 = load double, ptr %39, align 8, !tbaa !11
  %2803 = fmul double %2801, %2802
  %2804 = load double, ptr %23, align 8, !tbaa !11
  %2805 = load double, ptr %21, align 8, !tbaa !11
  %2806 = fadd double %2804, %2805
  %2807 = fmul double %2803, %2806
  %2808 = call double @llvm.fmuladd.f64(double %2795, double %2800, double %2807)
  store double %2808, ptr %30, align 8, !tbaa !11
  br label %2809

2809:                                             ; preds = %2790, %2769
  br label %2810

2810:                                             ; preds = %2809, %2763
  %2811 = load double, ptr %31, align 8, !tbaa !11
  %2812 = load double, ptr %30, align 8, !tbaa !11
  %2813 = fdiv double %2811, %2812
  store double %2813, ptr %55, align 8, !tbaa !11
  br label %2866

2814:                                             ; preds = %2744
  %2815 = load double, ptr %30, align 8, !tbaa !11
  %2816 = fcmp ole double %2815, 0.000000e+00
  br i1 %2816, label %2817, label %2841

2817:                                             ; preds = %2814
  %2818 = load double, ptr %30, align 8, !tbaa !11
  %2819 = load double, ptr %30, align 8, !tbaa !11
  %2820 = load double, ptr %30, align 8, !tbaa !11
  %2821 = load double, ptr %31, align 8, !tbaa !11
  %2822 = fmul double %2821, 4.000000e+00
  %2823 = load double, ptr %32, align 8, !tbaa !11
  %2824 = fmul double %2822, %2823
  %2825 = fneg double %2824
  %2826 = call double @llvm.fmuladd.f64(double %2819, double %2820, double %2825)
  store double %2826, ptr %20, align 8, !tbaa !11
  %2827 = load double, ptr %20, align 8, !tbaa !11
  %2828 = fcmp oge double %2827, 0.000000e+00
  br i1 %2828, label %2829, label %2831

2829:                                             ; preds = %2817
  %2830 = load double, ptr %20, align 8, !tbaa !11
  br label %2834

2831:                                             ; preds = %2817
  %2832 = load double, ptr %20, align 8, !tbaa !11
  %2833 = fneg double %2832
  br label %2834

2834:                                             ; preds = %2831, %2829
  %2835 = phi double [ %2830, %2829 ], [ %2833, %2831 ]
  %2836 = call double @sqrt(double noundef %2835) #5
  %2837 = fsub double %2818, %2836
  %2838 = load double, ptr %32, align 8, !tbaa !11
  %2839 = fmul double %2838, 2.000000e+00
  %2840 = fdiv double %2837, %2839
  store double %2840, ptr %55, align 8, !tbaa !11
  br label %2865

2841:                                             ; preds = %2814
  %2842 = load double, ptr %31, align 8, !tbaa !11
  %2843 = fmul double %2842, 2.000000e+00
  %2844 = load double, ptr %30, align 8, !tbaa !11
  %2845 = load double, ptr %30, align 8, !tbaa !11
  %2846 = load double, ptr %30, align 8, !tbaa !11
  %2847 = load double, ptr %31, align 8, !tbaa !11
  %2848 = fmul double %2847, 4.000000e+00
  %2849 = load double, ptr %32, align 8, !tbaa !11
  %2850 = fmul double %2848, %2849
  %2851 = fneg double %2850
  %2852 = call double @llvm.fmuladd.f64(double %2845, double %2846, double %2851)
  store double %2852, ptr %20, align 8, !tbaa !11
  %2853 = load double, ptr %20, align 8, !tbaa !11
  %2854 = fcmp oge double %2853, 0.000000e+00
  br i1 %2854, label %2855, label %2857

2855:                                             ; preds = %2841
  %2856 = load double, ptr %20, align 8, !tbaa !11
  br label %2860

2857:                                             ; preds = %2841
  %2858 = load double, ptr %20, align 8, !tbaa !11
  %2859 = fneg double %2858
  br label %2860

2860:                                             ; preds = %2857, %2855
  %2861 = phi double [ %2856, %2855 ], [ %2859, %2857 ]
  %2862 = call double @sqrt(double noundef %2861) #5
  %2863 = fadd double %2844, %2862
  %2864 = fdiv double %2843, %2863
  store double %2864, ptr %55, align 8, !tbaa !11
  br label %2865

2865:                                             ; preds = %2860, %2834
  br label %2866

2866:                                             ; preds = %2865, %2810
  br label %2867

2867:                                             ; preds = %2866, %2643
  br label %2868

2868:                                             ; preds = %2867, %2456
  %2869 = load double, ptr %34, align 8, !tbaa !11
  %2870 = load double, ptr %55, align 8, !tbaa !11
  %2871 = fmul double %2869, %2870
  %2872 = fcmp oge double %2871, 0.000000e+00
  br i1 %2872, label %2873, label %2878

2873:                                             ; preds = %2868
  %2874 = load double, ptr %34, align 8, !tbaa !11
  %2875 = fneg double %2874
  %2876 = load double, ptr %47, align 8, !tbaa !11
  %2877 = fdiv double %2875, %2876
  store double %2877, ptr %55, align 8, !tbaa !11
  br label %2878

2878:                                             ; preds = %2873, %2868
  %2879 = load ptr, ptr %16, align 8, !tbaa !5
  %2880 = load double, ptr %2879, align 8, !tbaa !11
  %2881 = load ptr, ptr %16, align 8, !tbaa !5
  %2882 = load double, ptr %2881, align 8, !tbaa !11
  %2883 = load ptr, ptr %16, align 8, !tbaa !5
  %2884 = load double, ptr %2883, align 8, !tbaa !11
  %2885 = load double, ptr %55, align 8, !tbaa !11
  %2886 = call double @llvm.fmuladd.f64(double %2882, double %2884, double %2885)
  %2887 = call double @sqrt(double noundef %2886) #5
  %2888 = fadd double %2880, %2887
  %2889 = load double, ptr %55, align 8, !tbaa !11
  %2890 = fdiv double %2889, %2888
  store double %2890, ptr %55, align 8, !tbaa !11
  %2891 = load double, ptr %58, align 8, !tbaa !11
  %2892 = load double, ptr %55, align 8, !tbaa !11
  %2893 = fadd double %2891, %2892
  store double %2893, ptr %26, align 8, !tbaa !11
  %2894 = load double, ptr %26, align 8, !tbaa !11
  %2895 = load double, ptr %24, align 8, !tbaa !11
  %2896 = fcmp ogt double %2894, %2895
  br i1 %2896, label %2901, label %2897

2897:                                             ; preds = %2878
  %2898 = load double, ptr %26, align 8, !tbaa !11
  %2899 = load double, ptr %22, align 8, !tbaa !11
  %2900 = fcmp olt double %2898, %2899
  br i1 %2900, label %2901, label %2944

2901:                                             ; preds = %2897, %2878
  %2902 = load double, ptr %34, align 8, !tbaa !11
  %2903 = fcmp olt double %2902, 0.000000e+00
  br i1 %2903, label %2904, label %2909

2904:                                             ; preds = %2901
  %2905 = load double, ptr %24, align 8, !tbaa !11
  %2906 = load double, ptr %58, align 8, !tbaa !11
  %2907 = fsub double %2905, %2906
  %2908 = fdiv double %2907, 2.000000e+00
  store double %2908, ptr %55, align 8, !tbaa !11
  br label %2914

2909:                                             ; preds = %2901
  %2910 = load double, ptr %22, align 8, !tbaa !11
  %2911 = load double, ptr %58, align 8, !tbaa !11
  %2912 = fsub double %2910, %2911
  %2913 = fdiv double %2912, 2.000000e+00
  store double %2913, ptr %55, align 8, !tbaa !11
  br label %2914

2914:                                             ; preds = %2909, %2904
  %2915 = load i32, ptr %60, align 4, !tbaa !9
  %2916 = icmp ne i32 %2915, 0
  br i1 %2916, label %2917, label %2943

2917:                                             ; preds = %2914
  %2918 = load double, ptr %34, align 8, !tbaa !11
  %2919 = fcmp olt double %2918, 0.000000e+00
  br i1 %2919, label %2920, label %2931

2920:                                             ; preds = %2917
  %2921 = load double, ptr %58, align 8, !tbaa !11
  %2922 = fcmp ogt double %2921, 0.000000e+00
  br i1 %2922, label %2923, label %2930

2923:                                             ; preds = %2920
  %2924 = load double, ptr %24, align 8, !tbaa !11
  %2925 = load double, ptr %58, align 8, !tbaa !11
  %2926 = fmul double %2924, %2925
  %2927 = call double @sqrt(double noundef %2926) #5
  %2928 = load double, ptr %58, align 8, !tbaa !11
  %2929 = fsub double %2927, %2928
  store double %2929, ptr %55, align 8, !tbaa !11
  br label %2930

2930:                                             ; preds = %2923, %2920
  br label %2942

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

2934:                                             ; preds = %2931
  %2935 = load double, ptr %22, align 8, !tbaa !11
  %2936 = load double, ptr %58, align 8, !tbaa !11
  %2937 = fmul double %2935, %2936
  %2938 = call double @sqrt(double noundef %2937) #5
  %2939 = load double, ptr %58, align 8, !tbaa !11
  %2940 = fsub double %2938, %2939
  store double %2940, ptr %55, align 8, !tbaa !11
  br label %2941

2941:                                             ; preds = %2934, %2931
  br label %2942

2942:                                             ; preds = %2941, %2930
  br label %2943

2943:                                             ; preds = %2942, %2914
  br label %2944

2944:                                             ; preds = %2943, %2897
  %2945 = load double, ptr %34, align 8, !tbaa !11
  store double %2945, ptr %27, align 8, !tbaa !11
  %2946 = load double, ptr %55, align 8, !tbaa !11
  %2947 = load double, ptr %58, align 8, !tbaa !11
  %2948 = fadd double %2947, %2946
  store double %2948, ptr %58, align 8, !tbaa !11
  %2949 = load double, ptr %55, align 8, !tbaa !11
  %2950 = load ptr, ptr %16, align 8, !tbaa !5
  %2951 = load double, ptr %2950, align 8, !tbaa !11
  %2952 = fadd double %2951, %2949
  store double %2952, ptr %2950, align 8, !tbaa !11
  %2953 = load ptr, ptr %10, align 8, !tbaa !5
  %2954 = load i32, ptr %2953, align 4, !tbaa !9
  store i32 %2954, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %2955

2955:                                             ; preds = %2974, %2944
  %2956 = load i32, ptr %33, align 4, !tbaa !9
  %2957 = load i32, ptr %19, align 4, !tbaa !9
  %2958 = icmp sle i32 %2956, %2957
  br i1 %2958, label %2959, label %2977

2959:                                             ; preds = %2955
  %2960 = load double, ptr %55, align 8, !tbaa !11
  %2961 = load ptr, ptr %17, align 8, !tbaa !5
  %2962 = load i32, ptr %33, align 4, !tbaa !9
  %2963 = sext i32 %2962 to i64
  %2964 = getelementptr inbounds double, ptr %2961, i64 %2963
  %2965 = load double, ptr %2964, align 8, !tbaa !11
  %2966 = fadd double %2965, %2960
  store double %2966, ptr %2964, align 8, !tbaa !11
  %2967 = load double, ptr %55, align 8, !tbaa !11
  %2968 = load ptr, ptr %14, align 8, !tbaa !5
  %2969 = load i32, ptr %33, align 4, !tbaa !9
  %2970 = sext i32 %2969 to i64
  %2971 = getelementptr inbounds double, ptr %2968, i64 %2970
  %2972 = load double, ptr %2971, align 8, !tbaa !11
  %2973 = fsub double %2972, %2967
  store double %2973, ptr %2971, align 8, !tbaa !11
  br label %2974

2974:                                             ; preds = %2959
  %2975 = load i32, ptr %33, align 4, !tbaa !9
  %2976 = add nsw i32 %2975, 1
  store i32 %2976, ptr %33, align 4, !tbaa !9
  br label %2955, !llvm.loop !29

2977:                                             ; preds = %2955
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  store double 0.000000e+00, ptr %59, align 8, !tbaa !11
  store double 0.000000e+00, ptr %50, align 8, !tbaa !11
  %2978 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %2978, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %2979

2979:                                             ; preds = %3016, %2977
  %2980 = load i32, ptr %33, align 4, !tbaa !9
  %2981 = load i32, ptr %19, align 4, !tbaa !9
  %2982 = icmp sle i32 %2980, %2981
  br i1 %2982, label %2983, label %3019

2983:                                             ; preds = %2979
  %2984 = load ptr, ptr %13, align 8, !tbaa !5
  %2985 = load i32, ptr %33, align 4, !tbaa !9
  %2986 = sext i32 %2985 to i64
  %2987 = getelementptr inbounds double, ptr %2984, i64 %2986
  %2988 = load double, ptr %2987, align 8, !tbaa !11
  %2989 = load ptr, ptr %17, align 8, !tbaa !5
  %2990 = load i32, ptr %33, align 4, !tbaa !9
  %2991 = sext i32 %2990 to i64
  %2992 = getelementptr inbounds double, ptr %2989, i64 %2991
  %2993 = load double, ptr %2992, align 8, !tbaa !11
  %2994 = load ptr, ptr %14, align 8, !tbaa !5
  %2995 = load i32, ptr %33, align 4, !tbaa !9
  %2996 = sext i32 %2995 to i64
  %2997 = getelementptr inbounds double, ptr %2994, i64 %2996
  %2998 = load double, ptr %2997, align 8, !tbaa !11
  %2999 = fmul double %2993, %2998
  %3000 = fdiv double %2988, %2999
  store double %3000, ptr %26, align 8, !tbaa !11
  %3001 = load ptr, ptr %13, align 8, !tbaa !5
  %3002 = load i32, ptr %33, align 4, !tbaa !9
  %3003 = sext i32 %3002 to i64
  %3004 = getelementptr inbounds double, ptr %3001, i64 %3003
  %3005 = load double, ptr %3004, align 8, !tbaa !11
  %3006 = load double, ptr %26, align 8, !tbaa !11
  %3007 = load double, ptr %59, align 8, !tbaa !11
  %3008 = call double @llvm.fmuladd.f64(double %3005, double %3006, double %3007)
  store double %3008, ptr %59, align 8, !tbaa !11
  %3009 = load double, ptr %26, align 8, !tbaa !11
  %3010 = load double, ptr %26, align 8, !tbaa !11
  %3011 = load double, ptr %23, align 8, !tbaa !11
  %3012 = call double @llvm.fmuladd.f64(double %3009, double %3010, double %3011)
  store double %3012, ptr %23, align 8, !tbaa !11
  %3013 = load double, ptr %59, align 8, !tbaa !11
  %3014 = load double, ptr %50, align 8, !tbaa !11
  %3015 = fadd double %3014, %3013
  store double %3015, ptr %50, align 8, !tbaa !11
  br label %3016

3016:                                             ; preds = %2983
  %3017 = load i32, ptr %33, align 4, !tbaa !9
  %3018 = add nsw i32 %3017, 1
  store i32 %3018, ptr %33, align 4, !tbaa !9
  br label %2979, !llvm.loop !30

3019:                                             ; preds = %2979
  %3020 = load double, ptr %50, align 8, !tbaa !11
  %3021 = fcmp oge double %3020, 0.000000e+00
  br i1 %3021, label %3022, label %3024

3022:                                             ; preds = %3019
  %3023 = load double, ptr %50, align 8, !tbaa !11
  br label %3027

3024:                                             ; preds = %3019
  %3025 = load double, ptr %50, align 8, !tbaa !11
  %3026 = fneg double %3025
  br label %3027

3027:                                             ; preds = %3024, %3022
  %3028 = phi double [ %3023, %3022 ], [ %3026, %3024 ]
  store double %3028, ptr %50, align 8, !tbaa !11
  store double 0.000000e+00, ptr %21, align 8, !tbaa !11
  store double 0.000000e+00, ptr %56, align 8, !tbaa !11
  %3029 = load i32, ptr %62, align 4, !tbaa !9
  store i32 %3029, ptr %19, align 4, !tbaa !9
  %3030 = load ptr, ptr %10, align 8, !tbaa !5
  %3031 = load i32, ptr %3030, align 4, !tbaa !9
  store i32 %3031, ptr %33, align 4, !tbaa !9
  br label %3032

3032:                                             ; preds = %3069, %3027
  %3033 = load i32, ptr %33, align 4, !tbaa !9
  %3034 = load i32, ptr %19, align 4, !tbaa !9
  %3035 = icmp sge i32 %3033, %3034
  br i1 %3035, label %3036, label %3072

3036:                                             ; preds = %3032
  %3037 = load ptr, ptr %13, align 8, !tbaa !5
  %3038 = load i32, ptr %33, align 4, !tbaa !9
  %3039 = sext i32 %3038 to i64
  %3040 = getelementptr inbounds double, ptr %3037, i64 %3039
  %3041 = load double, ptr %3040, align 8, !tbaa !11
  %3042 = load ptr, ptr %17, align 8, !tbaa !5
  %3043 = load i32, ptr %33, align 4, !tbaa !9
  %3044 = sext i32 %3043 to i64
  %3045 = getelementptr inbounds double, ptr %3042, i64 %3044
  %3046 = load double, ptr %3045, align 8, !tbaa !11
  %3047 = load ptr, ptr %14, align 8, !tbaa !5
  %3048 = load i32, ptr %33, align 4, !tbaa !9
  %3049 = sext i32 %3048 to i64
  %3050 = getelementptr inbounds double, ptr %3047, i64 %3049
  %3051 = load double, ptr %3050, align 8, !tbaa !11
  %3052 = fmul double %3046, %3051
  %3053 = fdiv double %3041, %3052
  store double %3053, ptr %26, align 8, !tbaa !11
  %3054 = load ptr, ptr %13, align 8, !tbaa !5
  %3055 = load i32, ptr %33, align 4, !tbaa !9
  %3056 = sext i32 %3055 to i64
  %3057 = getelementptr inbounds double, ptr %3054, i64 %3056
  %3058 = load double, ptr %3057, align 8, !tbaa !11
  %3059 = load double, ptr %26, align 8, !tbaa !11
  %3060 = load double, ptr %56, align 8, !tbaa !11
  %3061 = call double @llvm.fmuladd.f64(double %3058, double %3059, double %3060)
  store double %3061, ptr %56, align 8, !tbaa !11
  %3062 = load double, ptr %26, align 8, !tbaa !11
  %3063 = load double, ptr %26, align 8, !tbaa !11
  %3064 = load double, ptr %21, align 8, !tbaa !11
  %3065 = call double @llvm.fmuladd.f64(double %3062, double %3063, double %3064)
  store double %3065, ptr %21, align 8, !tbaa !11
  %3066 = load double, ptr %56, align 8, !tbaa !11
  %3067 = load double, ptr %50, align 8, !tbaa !11
  %3068 = fadd double %3067, %3066
  store double %3068, ptr %50, align 8, !tbaa !11
  br label %3069

3069:                                             ; preds = %3036
  %3070 = load i32, ptr %33, align 4, !tbaa !9
  %3071 = add nsw i32 %3070, -1
  store i32 %3071, ptr %33, align 4, !tbaa !9
  br label %3032, !llvm.loop !31

3072:                                             ; preds = %3032
  %3073 = load ptr, ptr %17, align 8, !tbaa !5
  %3074 = load i32, ptr %46, align 4, !tbaa !9
  %3075 = sext i32 %3074 to i64
  %3076 = getelementptr inbounds double, ptr %3073, i64 %3075
  %3077 = load double, ptr %3076, align 8, !tbaa !11
  %3078 = load ptr, ptr %14, align 8, !tbaa !5
  %3079 = load i32, ptr %46, align 4, !tbaa !9
  %3080 = sext i32 %3079 to i64
  %3081 = getelementptr inbounds double, ptr %3078, i64 %3080
  %3082 = load double, ptr %3081, align 8, !tbaa !11
  %3083 = fmul double %3077, %3082
  store double %3083, ptr %63, align 8, !tbaa !11
  %3084 = load ptr, ptr %13, align 8, !tbaa !5
  %3085 = load i32, ptr %46, align 4, !tbaa !9
  %3086 = sext i32 %3085 to i64
  %3087 = getelementptr inbounds double, ptr %3084, i64 %3086
  %3088 = load double, ptr %3087, align 8, !tbaa !11
  %3089 = load double, ptr %63, align 8, !tbaa !11
  %3090 = fdiv double %3088, %3089
  store double %3090, ptr %26, align 8, !tbaa !11
  %3091 = load double, ptr %23, align 8, !tbaa !11
  %3092 = load double, ptr %21, align 8, !tbaa !11
  %3093 = fadd double %3091, %3092
  %3094 = load double, ptr %26, align 8, !tbaa !11
  %3095 = load double, ptr %26, align 8, !tbaa !11
  %3096 = call double @llvm.fmuladd.f64(double %3094, double %3095, double %3093)
  store double %3096, ptr %47, align 8, !tbaa !11
  %3097 = load ptr, ptr %13, align 8, !tbaa !5
  %3098 = load i32, ptr %46, align 4, !tbaa !9
  %3099 = sext i32 %3098 to i64
  %3100 = getelementptr inbounds double, ptr %3097, i64 %3099
  %3101 = load double, ptr %3100, align 8, !tbaa !11
  %3102 = load double, ptr %26, align 8, !tbaa !11
  %3103 = fmul double %3101, %3102
  store double %3103, ptr %26, align 8, !tbaa !11
  %3104 = load double, ptr %52, align 8, !tbaa !11
  %3105 = load double, ptr %56, align 8, !tbaa !11
  %3106 = fadd double %3104, %3105
  %3107 = load double, ptr %59, align 8, !tbaa !11
  %3108 = fadd double %3106, %3107
  %3109 = load double, ptr %26, align 8, !tbaa !11
  %3110 = fadd double %3108, %3109
  store double %3110, ptr %34, align 8, !tbaa !11
  %3111 = load double, ptr %56, align 8, !tbaa !11
  %3112 = load double, ptr %59, align 8, !tbaa !11
  %3113 = fsub double %3111, %3112
  %3114 = load double, ptr %50, align 8, !tbaa !11
  %3115 = call double @llvm.fmuladd.f64(double %3113, double 8.000000e+00, double %3114)
  %3116 = load double, ptr %52, align 8, !tbaa !11
  %3117 = call double @llvm.fmuladd.f64(double %3116, double 2.000000e+00, double %3115)
  %3118 = load double, ptr %26, align 8, !tbaa !11
  %3119 = fcmp oge double %3118, 0.000000e+00
  br i1 %3119, label %3120, label %3122

3120:                                             ; preds = %3072
  %3121 = load double, ptr %26, align 8, !tbaa !11
  br label %3125

3122:                                             ; preds = %3072
  %3123 = load double, ptr %26, align 8, !tbaa !11
  %3124 = fneg double %3123
  br label %3125

3125:                                             ; preds = %3122, %3120
  %3126 = phi double [ %3121, %3120 ], [ %3124, %3122 ]
  %3127 = call double @llvm.fmuladd.f64(double %3126, double 3.000000e+00, double %3117)
  store double %3127, ptr %50, align 8, !tbaa !11
  store i32 0, ptr %40, align 4, !tbaa !9
  %3128 = load i32, ptr %49, align 4, !tbaa !9
  %3129 = icmp ne i32 %3128, 0
  br i1 %3129, label %3130, label %3146

3130:                                             ; preds = %3125
  %3131 = load double, ptr %34, align 8, !tbaa !11
  %3132 = fneg double %3131
  %3133 = load double, ptr %27, align 8, !tbaa !11
  %3134 = fcmp oge double %3133, 0.000000e+00
  br i1 %3134, label %3135, label %3137

3135:                                             ; preds = %3130
  %3136 = load double, ptr %27, align 8, !tbaa !11
  br label %3140

3137:                                             ; preds = %3130
  %3138 = load double, ptr %27, align 8, !tbaa !11
  %3139 = fneg double %3138
  br label %3140

3140:                                             ; preds = %3137, %3135
  %3141 = phi double [ %3136, %3135 ], [ %3139, %3137 ]
  %3142 = fdiv double %3141, 1.000000e+01
  %3143 = fcmp ogt double %3132, %3142
  br i1 %3143, label %3144, label %3145

3144:                                             ; preds = %3140
  store i32 1, ptr %40, align 4, !tbaa !9
  br label %3145

3145:                                             ; preds = %3144, %3140
  br label %3161

3146:                                             ; preds = %3125
  %3147 = load double, ptr %34, align 8, !tbaa !11
  %3148 = load double, ptr %27, align 8, !tbaa !11
  %3149 = fcmp oge double %3148, 0.000000e+00
  br i1 %3149, label %3150, label %3152

3150:                                             ; preds = %3146
  %3151 = load double, ptr %27, align 8, !tbaa !11
  br label %3155

3152:                                             ; preds = %3146
  %3153 = load double, ptr %27, align 8, !tbaa !11
  %3154 = fneg double %3153
  br label %3155

3155:                                             ; preds = %3152, %3150
  %3156 = phi double [ %3151, %3150 ], [ %3154, %3152 ]
  %3157 = fdiv double %3156, 1.000000e+01
  %3158 = fcmp ogt double %3147, %3157
  br i1 %3158, label %3159, label %3160

3159:                                             ; preds = %3155
  store i32 1, ptr %40, align 4, !tbaa !9
  br label %3160

3160:                                             ; preds = %3159, %3155
  br label %3161

3161:                                             ; preds = %3160, %3145
  %3162 = load i32, ptr %38, align 4, !tbaa !9
  %3163 = add nsw i32 %3162, 1
  store i32 %3163, ptr %25, align 4, !tbaa !9
  %3164 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %3164, ptr %38, align 4, !tbaa !9
  br label %3165

3165:                                             ; preds = %4233, %3161
  %3166 = load i32, ptr %38, align 4, !tbaa !9
  %3167 = icmp sle i32 %3166, 400
  br i1 %3167, label %3168, label %4236

3168:                                             ; preds = %3165
  %3169 = load double, ptr %34, align 8, !tbaa !11
  %3170 = fcmp oge double %3169, 0.000000e+00
  br i1 %3170, label %3171, label %3173

3171:                                             ; preds = %3168
  %3172 = load double, ptr %34, align 8, !tbaa !11
  br label %3176

3173:                                             ; preds = %3168
  %3174 = load double, ptr %34, align 8, !tbaa !11
  %3175 = fneg double %3174
  br label %3176

3176:                                             ; preds = %3173, %3171
  %3177 = phi double [ %3172, %3171 ], [ %3175, %3173 ]
  %3178 = load double, ptr %57, align 8, !tbaa !11
  %3179 = load double, ptr %50, align 8, !tbaa !11
  %3180 = fmul double %3178, %3179
  %3181 = fcmp ole double %3177, %3180
  br i1 %3181, label %3182, label %3183

3182:                                             ; preds = %3176
  br label %4239

3183:                                             ; preds = %3176
  %3184 = load double, ptr %34, align 8, !tbaa !11
  %3185 = fcmp ole double %3184, 0.000000e+00
  br i1 %3185, label %3186, label %3196

3186:                                             ; preds = %3183
  %3187 = load double, ptr %22, align 8, !tbaa !11
  %3188 = load double, ptr %58, align 8, !tbaa !11
  %3189 = fcmp oge double %3187, %3188
  br i1 %3189, label %3190, label %3192

3190:                                             ; preds = %3186
  %3191 = load double, ptr %22, align 8, !tbaa !11
  br label %3194

3192:                                             ; preds = %3186
  %3193 = load double, ptr %58, align 8, !tbaa !11
  br label %3194

3194:                                             ; preds = %3192, %3190
  %3195 = phi double [ %3191, %3190 ], [ %3193, %3192 ]
  store double %3195, ptr %22, align 8, !tbaa !11
  br label %3206

3196:                                             ; preds = %3183
  %3197 = load double, ptr %24, align 8, !tbaa !11
  %3198 = load double, ptr %58, align 8, !tbaa !11
  %3199 = fcmp ole double %3197, %3198
  br i1 %3199, label %3200, label %3202

3200:                                             ; preds = %3196
  %3201 = load double, ptr %24, align 8, !tbaa !11
  br label %3204

3202:                                             ; preds = %3196
  %3203 = load double, ptr %58, align 8, !tbaa !11
  br label %3204

3204:                                             ; preds = %3202, %3200
  %3205 = phi double [ %3201, %3200 ], [ %3203, %3202 ]
  store double %3205, ptr %24, align 8, !tbaa !11
  br label %3206

3206:                                             ; preds = %3204, %3194
  %3207 = load i32, ptr %45, align 4, !tbaa !9
  %3208 = icmp ne i32 %3207, 0
  br i1 %3208, label %3456, label %3209

3209:                                             ; preds = %3206
  %3210 = load ptr, ptr %17, align 8, !tbaa !5
  %3211 = load i32, ptr %53, align 4, !tbaa !9
  %3212 = sext i32 %3211 to i64
  %3213 = getelementptr inbounds double, ptr %3210, i64 %3212
  %3214 = load double, ptr %3213, align 8, !tbaa !11
  %3215 = load ptr, ptr %14, align 8, !tbaa !5
  %3216 = load i32, ptr %53, align 4, !tbaa !9
  %3217 = sext i32 %3216 to i64
  %3218 = getelementptr inbounds double, ptr %3215, i64 %3217
  %3219 = load double, ptr %3218, align 8, !tbaa !11
  %3220 = fmul double %3214, %3219
  store double %3220, ptr %51, align 8, !tbaa !11
  %3221 = load ptr, ptr %17, align 8, !tbaa !5
  %3222 = load ptr, ptr %11, align 8, !tbaa !5
  %3223 = load i32, ptr %3222, align 4, !tbaa !9
  %3224 = sext i32 %3223 to i64
  %3225 = getelementptr inbounds double, ptr %3221, i64 %3224
  %3226 = load double, ptr %3225, align 8, !tbaa !11
  %3227 = load ptr, ptr %14, align 8, !tbaa !5
  %3228 = load ptr, ptr %11, align 8, !tbaa !5
  %3229 = load i32, ptr %3228, align 4, !tbaa !9
  %3230 = sext i32 %3229 to i64
  %3231 = getelementptr inbounds double, ptr %3227, i64 %3230
  %3232 = load double, ptr %3231, align 8, !tbaa !11
  %3233 = fmul double %3226, %3232
  store double %3233, ptr %39, align 8, !tbaa !11
  %3234 = load i32, ptr %40, align 4, !tbaa !9
  %3235 = icmp ne i32 %3234, 0
  br i1 %3235, label %3278, label %3236

3236:                                             ; preds = %3209
  %3237 = load i32, ptr %49, align 4, !tbaa !9
  %3238 = icmp ne i32 %3237, 0
  br i1 %3238, label %3239, label %3258

3239:                                             ; preds = %3236
  %3240 = load ptr, ptr %13, align 8, !tbaa !5
  %3241 = load ptr, ptr %11, align 8, !tbaa !5
  %3242 = load i32, ptr %3241, align 4, !tbaa !9
  %3243 = sext i32 %3242 to i64
  %3244 = getelementptr inbounds double, ptr %3240, i64 %3243
  %3245 = load double, ptr %3244, align 8, !tbaa !11
  %3246 = load double, ptr %39, align 8, !tbaa !11
  %3247 = fdiv double %3245, %3246
  store double %3247, ptr %20, align 8, !tbaa !11
  %3248 = load double, ptr %34, align 8, !tbaa !11
  %3249 = load double, ptr %51, align 8, !tbaa !11
  %3250 = load double, ptr %47, align 8, !tbaa !11
  %3251 = fneg double %3249
  %3252 = call double @llvm.fmuladd.f64(double %3251, double %3250, double %3248)
  %3253 = load double, ptr %36, align 8, !tbaa !11
  %3254 = load double, ptr %20, align 8, !tbaa !11
  %3255 = load double, ptr %20, align 8, !tbaa !11
  %3256 = fmul double %3254, %3255
  %3257 = call double @llvm.fmuladd.f64(double %3253, double %3256, double %3252)
  store double %3257, ptr %32, align 8, !tbaa !11
  br label %3277

3258:                                             ; preds = %3236
  %3259 = load ptr, ptr %13, align 8, !tbaa !5
  %3260 = load i32, ptr %53, align 4, !tbaa !9
  %3261 = sext i32 %3260 to i64
  %3262 = getelementptr inbounds double, ptr %3259, i64 %3261
  %3263 = load double, ptr %3262, align 8, !tbaa !11
  %3264 = load double, ptr %51, align 8, !tbaa !11
  %3265 = fdiv double %3263, %3264
  store double %3265, ptr %20, align 8, !tbaa !11
  %3266 = load double, ptr %34, align 8, !tbaa !11
  %3267 = load double, ptr %39, align 8, !tbaa !11
  %3268 = load double, ptr %47, align 8, !tbaa !11
  %3269 = fneg double %3267
  %3270 = call double @llvm.fmuladd.f64(double %3269, double %3268, double %3266)
  %3271 = load double, ptr %36, align 8, !tbaa !11
  %3272 = load double, ptr %20, align 8, !tbaa !11
  %3273 = load double, ptr %20, align 8, !tbaa !11
  %3274 = fmul double %3272, %3273
  %3275 = fneg double %3271
  %3276 = call double @llvm.fmuladd.f64(double %3275, double %3274, double %3270)
  store double %3276, ptr %32, align 8, !tbaa !11
  br label %3277

3277:                                             ; preds = %3258, %3239
  br label %3318

3278:                                             ; preds = %3209
  %3279 = load ptr, ptr %13, align 8, !tbaa !5
  %3280 = load i32, ptr %46, align 4, !tbaa !9
  %3281 = sext i32 %3280 to i64
  %3282 = getelementptr inbounds double, ptr %3279, i64 %3281
  %3283 = load double, ptr %3282, align 8, !tbaa !11
  %3284 = load ptr, ptr %17, align 8, !tbaa !5
  %3285 = load i32, ptr %46, align 4, !tbaa !9
  %3286 = sext i32 %3285 to i64
  %3287 = getelementptr inbounds double, ptr %3284, i64 %3286
  %3288 = load double, ptr %3287, align 8, !tbaa !11
  %3289 = load ptr, ptr %14, align 8, !tbaa !5
  %3290 = load i32, ptr %46, align 4, !tbaa !9
  %3291 = sext i32 %3290 to i64
  %3292 = getelementptr inbounds double, ptr %3289, i64 %3291
  %3293 = load double, ptr %3292, align 8, !tbaa !11
  %3294 = fmul double %3288, %3293
  %3295 = fdiv double %3283, %3294
  store double %3295, ptr %26, align 8, !tbaa !11
  %3296 = load i32, ptr %49, align 4, !tbaa !9
  %3297 = icmp ne i32 %3296, 0
  br i1 %3297, label %3298, label %3303

3298:                                             ; preds = %3278
  %3299 = load double, ptr %26, align 8, !tbaa !11
  %3300 = load double, ptr %26, align 8, !tbaa !11
  %3301 = load double, ptr %23, align 8, !tbaa !11
  %3302 = call double @llvm.fmuladd.f64(double %3299, double %3300, double %3301)
  store double %3302, ptr %23, align 8, !tbaa !11
  br label %3308

3303:                                             ; preds = %3278
  %3304 = load double, ptr %26, align 8, !tbaa !11
  %3305 = load double, ptr %26, align 8, !tbaa !11
  %3306 = load double, ptr %21, align 8, !tbaa !11
  %3307 = call double @llvm.fmuladd.f64(double %3304, double %3305, double %3306)
  store double %3307, ptr %21, align 8, !tbaa !11
  br label %3308

3308:                                             ; preds = %3303, %3298
  %3309 = load double, ptr %34, align 8, !tbaa !11
  %3310 = load double, ptr %39, align 8, !tbaa !11
  %3311 = load double, ptr %23, align 8, !tbaa !11
  %3312 = fneg double %3310
  %3313 = call double @llvm.fmuladd.f64(double %3312, double %3311, double %3309)
  %3314 = load double, ptr %51, align 8, !tbaa !11
  %3315 = load double, ptr %21, align 8, !tbaa !11
  %3316 = fneg double %3314
  %3317 = call double @llvm.fmuladd.f64(double %3316, double %3315, double %3313)
  store double %3317, ptr %32, align 8, !tbaa !11
  br label %3318

3318:                                             ; preds = %3308, %3277
  %3319 = load double, ptr %51, align 8, !tbaa !11
  %3320 = load double, ptr %39, align 8, !tbaa !11
  %3321 = fadd double %3319, %3320
  %3322 = load double, ptr %34, align 8, !tbaa !11
  %3323 = load double, ptr %51, align 8, !tbaa !11
  %3324 = load double, ptr %39, align 8, !tbaa !11
  %3325 = fmul double %3323, %3324
  %3326 = load double, ptr %47, align 8, !tbaa !11
  %3327 = fmul double %3325, %3326
  %3328 = fneg double %3327
  %3329 = call double @llvm.fmuladd.f64(double %3321, double %3322, double %3328)
  store double %3329, ptr %30, align 8, !tbaa !11
  %3330 = load double, ptr %51, align 8, !tbaa !11
  %3331 = load double, ptr %39, align 8, !tbaa !11
  %3332 = fmul double %3330, %3331
  %3333 = load double, ptr %34, align 8, !tbaa !11
  %3334 = fmul double %3332, %3333
  store double %3334, ptr %31, align 8, !tbaa !11
  %3335 = load double, ptr %32, align 8, !tbaa !11
  %3336 = fcmp oeq double %3335, 0.000000e+00
  br i1 %3336, label %3337, label %3403

3337:                                             ; preds = %3318
  %3338 = load double, ptr %30, align 8, !tbaa !11
  %3339 = fcmp oeq double %3338, 0.000000e+00
  br i1 %3339, label %3340, label %3399

3340:                                             ; preds = %3337
  %3341 = load i32, ptr %40, align 4, !tbaa !9
  %3342 = icmp ne i32 %3341, 0
  br i1 %3342, label %3387, label %3343

3343:                                             ; preds = %3340
  %3344 = load i32, ptr %49, align 4, !tbaa !9
  %3345 = icmp ne i32 %3344, 0
  br i1 %3345, label %3346, label %3367

3346:                                             ; preds = %3343
  %3347 = load ptr, ptr %13, align 8, !tbaa !5
  %3348 = load ptr, ptr %11, align 8, !tbaa !5
  %3349 = load i32, ptr %3348, align 4, !tbaa !9
  %3350 = sext i32 %3349 to i64
  %3351 = getelementptr inbounds double, ptr %3347, i64 %3350
  %3352 = load double, ptr %3351, align 8, !tbaa !11
  %3353 = load ptr, ptr %13, align 8, !tbaa !5
  %3354 = load ptr, ptr %11, align 8, !tbaa !5
  %3355 = load i32, ptr %3354, align 4, !tbaa !9
  %3356 = sext i32 %3355 to i64
  %3357 = getelementptr inbounds double, ptr %3353, i64 %3356
  %3358 = load double, ptr %3357, align 8, !tbaa !11
  %3359 = load double, ptr %51, align 8, !tbaa !11
  %3360 = load double, ptr %51, align 8, !tbaa !11
  %3361 = fmul double %3359, %3360
  %3362 = load double, ptr %23, align 8, !tbaa !11
  %3363 = load double, ptr %21, align 8, !tbaa !11
  %3364 = fadd double %3362, %3363
  %3365 = fmul double %3361, %3364
  %3366 = call double @llvm.fmuladd.f64(double %3352, double %3358, double %3365)
  store double %3366, ptr %30, align 8, !tbaa !11
  br label %3386

3367:                                             ; preds = %3343
  %3368 = load ptr, ptr %13, align 8, !tbaa !5
  %3369 = load i32, ptr %53, align 4, !tbaa !9
  %3370 = sext i32 %3369 to i64
  %3371 = getelementptr inbounds double, ptr %3368, i64 %3370
  %3372 = load double, ptr %3371, align 8, !tbaa !11
  %3373 = load ptr, ptr %13, align 8, !tbaa !5
  %3374 = load i32, ptr %53, align 4, !tbaa !9
  %3375 = sext i32 %3374 to i64
  %3376 = getelementptr inbounds double, ptr %3373, i64 %3375
  %3377 = load double, ptr %3376, align 8, !tbaa !11
  %3378 = load double, ptr %39, align 8, !tbaa !11
  %3379 = load double, ptr %39, align 8, !tbaa !11
  %3380 = fmul double %3378, %3379
  %3381 = load double, ptr %23, align 8, !tbaa !11
  %3382 = load double, ptr %21, align 8, !tbaa !11
  %3383 = fadd double %3381, %3382
  %3384 = fmul double %3380, %3383
  %3385 = call double @llvm.fmuladd.f64(double %3372, double %3377, double %3384)
  store double %3385, ptr %30, align 8, !tbaa !11
  br label %3386

3386:                                             ; preds = %3367, %3346
  br label %3398

3387:                                             ; preds = %3340
  %3388 = load double, ptr %39, align 8, !tbaa !11
  %3389 = load double, ptr %39, align 8, !tbaa !11
  %3390 = fmul double %3388, %3389
  %3391 = load double, ptr %23, align 8, !tbaa !11
  %3392 = load double, ptr %51, align 8, !tbaa !11
  %3393 = load double, ptr %51, align 8, !tbaa !11
  %3394 = fmul double %3392, %3393
  %3395 = load double, ptr %21, align 8, !tbaa !11
  %3396 = fmul double %3394, %3395
  %3397 = call double @llvm.fmuladd.f64(double %3390, double %3391, double %3396)
  store double %3397, ptr %30, align 8, !tbaa !11
  br label %3398

3398:                                             ; preds = %3387, %3386
  br label %3399

3399:                                             ; preds = %3398, %3337
  %3400 = load double, ptr %31, align 8, !tbaa !11
  %3401 = load double, ptr %30, align 8, !tbaa !11
  %3402 = fdiv double %3400, %3401
  store double %3402, ptr %55, align 8, !tbaa !11
  br label %3455

3403:                                             ; preds = %3318
  %3404 = load double, ptr %30, align 8, !tbaa !11
  %3405 = fcmp ole double %3404, 0.000000e+00
  br i1 %3405, label %3406, label %3430

3406:                                             ; preds = %3403
  %3407 = load double, ptr %30, align 8, !tbaa !11
  %3408 = load double, ptr %30, align 8, !tbaa !11
  %3409 = load double, ptr %30, align 8, !tbaa !11
  %3410 = load double, ptr %31, align 8, !tbaa !11
  %3411 = fmul double %3410, 4.000000e+00
  %3412 = load double, ptr %32, align 8, !tbaa !11
  %3413 = fmul double %3411, %3412
  %3414 = fneg double %3413
  %3415 = call double @llvm.fmuladd.f64(double %3408, double %3409, double %3414)
  store double %3415, ptr %20, align 8, !tbaa !11
  %3416 = load double, ptr %20, align 8, !tbaa !11
  %3417 = fcmp oge double %3416, 0.000000e+00
  br i1 %3417, label %3418, label %3420

3418:                                             ; preds = %3406
  %3419 = load double, ptr %20, align 8, !tbaa !11
  br label %3423

3420:                                             ; preds = %3406
  %3421 = load double, ptr %20, align 8, !tbaa !11
  %3422 = fneg double %3421
  br label %3423

3423:                                             ; preds = %3420, %3418
  %3424 = phi double [ %3419, %3418 ], [ %3422, %3420 ]
  %3425 = call double @sqrt(double noundef %3424) #5
  %3426 = fsub double %3407, %3425
  %3427 = load double, ptr %32, align 8, !tbaa !11
  %3428 = fmul double %3427, 2.000000e+00
  %3429 = fdiv double %3426, %3428
  store double %3429, ptr %55, align 8, !tbaa !11
  br label %3454

3430:                                             ; preds = %3403
  %3431 = load double, ptr %31, align 8, !tbaa !11
  %3432 = fmul double %3431, 2.000000e+00
  %3433 = load double, ptr %30, align 8, !tbaa !11
  %3434 = load double, ptr %30, align 8, !tbaa !11
  %3435 = load double, ptr %30, align 8, !tbaa !11
  %3436 = load double, ptr %31, align 8, !tbaa !11
  %3437 = fmul double %3436, 4.000000e+00
  %3438 = load double, ptr %32, align 8, !tbaa !11
  %3439 = fmul double %3437, %3438
  %3440 = fneg double %3439
  %3441 = call double @llvm.fmuladd.f64(double %3434, double %3435, double %3440)
  store double %3441, ptr %20, align 8, !tbaa !11
  %3442 = load double, ptr %20, align 8, !tbaa !11
  %3443 = fcmp oge double %3442, 0.000000e+00
  br i1 %3443, label %3444, label %3446

3444:                                             ; preds = %3430
  %3445 = load double, ptr %20, align 8, !tbaa !11
  br label %3449

3446:                                             ; preds = %3430
  %3447 = load double, ptr %20, align 8, !tbaa !11
  %3448 = fneg double %3447
  br label %3449

3449:                                             ; preds = %3446, %3444
  %3450 = phi double [ %3445, %3444 ], [ %3448, %3446 ]
  %3451 = call double @sqrt(double noundef %3450) #5
  %3452 = fadd double %3433, %3451
  %3453 = fdiv double %3432, %3452
  store double %3453, ptr %55, align 8, !tbaa !11
  br label %3454

3454:                                             ; preds = %3449, %3423
  br label %3455

3455:                                             ; preds = %3454, %3399
  br label %3942

3456:                                             ; preds = %3206
  %3457 = load ptr, ptr %17, align 8, !tbaa !5
  %3458 = load i32, ptr %61, align 4, !tbaa !9
  %3459 = sext i32 %3458 to i64
  %3460 = getelementptr inbounds double, ptr %3457, i64 %3459
  %3461 = load double, ptr %3460, align 8, !tbaa !11
  %3462 = load ptr, ptr %14, align 8, !tbaa !5
  %3463 = load i32, ptr %61, align 4, !tbaa !9
  %3464 = sext i32 %3463 to i64
  %3465 = getelementptr inbounds double, ptr %3462, i64 %3464
  %3466 = load double, ptr %3465, align 8, !tbaa !11
  %3467 = fmul double %3461, %3466
  store double %3467, ptr %35, align 8, !tbaa !11
  %3468 = load ptr, ptr %17, align 8, !tbaa !5
  %3469 = load i32, ptr %62, align 4, !tbaa !9
  %3470 = sext i32 %3469 to i64
  %3471 = getelementptr inbounds double, ptr %3468, i64 %3470
  %3472 = load double, ptr %3471, align 8, !tbaa !11
  %3473 = load ptr, ptr %14, align 8, !tbaa !5
  %3474 = load i32, ptr %62, align 4, !tbaa !9
  %3475 = sext i32 %3474 to i64
  %3476 = getelementptr inbounds double, ptr %3473, i64 %3475
  %3477 = load double, ptr %3476, align 8, !tbaa !11
  %3478 = fmul double %3472, %3477
  store double %3478, ptr %37, align 8, !tbaa !11
  %3479 = load double, ptr %52, align 8, !tbaa !11
  %3480 = load double, ptr %59, align 8, !tbaa !11
  %3481 = fadd double %3479, %3480
  %3482 = load double, ptr %56, align 8, !tbaa !11
  %3483 = fadd double %3481, %3482
  store double %3483, ptr %26, align 8, !tbaa !11
  %3484 = load i32, ptr %40, align 4, !tbaa !9
  %3485 = icmp ne i32 %3484, 0
  br i1 %3485, label %3486, label %3508

3486:                                             ; preds = %3456
  %3487 = load double, ptr %26, align 8, !tbaa !11
  %3488 = load double, ptr %35, align 8, !tbaa !11
  %3489 = load double, ptr %23, align 8, !tbaa !11
  %3490 = fneg double %3488
  %3491 = call double @llvm.fmuladd.f64(double %3490, double %3489, double %3487)
  %3492 = load double, ptr %37, align 8, !tbaa !11
  %3493 = load double, ptr %21, align 8, !tbaa !11
  %3494 = fneg double %3492
  %3495 = call double @llvm.fmuladd.f64(double %3494, double %3493, double %3491)
  store double %3495, ptr %32, align 8, !tbaa !11
  %3496 = load double, ptr %35, align 8, !tbaa !11
  %3497 = load double, ptr %35, align 8, !tbaa !11
  %3498 = fmul double %3496, %3497
  %3499 = load double, ptr %23, align 8, !tbaa !11
  %3500 = fmul double %3498, %3499
  %3501 = getelementptr inbounds [3 x double], ptr %48, i64 0, i64 0
  store double %3500, ptr %3501, align 16, !tbaa !11
  %3502 = load double, ptr %37, align 8, !tbaa !11
  %3503 = load double, ptr %37, align 8, !tbaa !11
  %3504 = fmul double %3502, %3503
  %3505 = load double, ptr %21, align 8, !tbaa !11
  %3506 = fmul double %3504, %3505
  %3507 = getelementptr inbounds [3 x double], ptr %48, i64 0, i64 2
  store double %3506, ptr %3507, align 16, !tbaa !11
  br label %3670

3508:                                             ; preds = %3456
  %3509 = load i32, ptr %49, align 4, !tbaa !9
  %3510 = icmp ne i32 %3509, 0
  br i1 %3510, label %3511, label %3590

3511:                                             ; preds = %3508
  %3512 = load ptr, ptr %13, align 8, !tbaa !5
  %3513 = load i32, ptr %61, align 4, !tbaa !9
  %3514 = sext i32 %3513 to i64
  %3515 = getelementptr inbounds double, ptr %3512, i64 %3514
  %3516 = load double, ptr %3515, align 8, !tbaa !11
  %3517 = load double, ptr %35, align 8, !tbaa !11
  %3518 = fdiv double %3516, %3517
  store double %3518, ptr %28, align 8, !tbaa !11
  %3519 = load double, ptr %28, align 8, !tbaa !11
  %3520 = load double, ptr %28, align 8, !tbaa !11
  %3521 = fmul double %3520, %3519
  store double %3521, ptr %28, align 8, !tbaa !11
  %3522 = load ptr, ptr %12, align 8, !tbaa !5
  %3523 = load i32, ptr %61, align 4, !tbaa !9
  %3524 = sext i32 %3523 to i64
  %3525 = getelementptr inbounds double, ptr %3522, i64 %3524
  %3526 = load double, ptr %3525, align 8, !tbaa !11
  %3527 = load ptr, ptr %12, align 8, !tbaa !5
  %3528 = load i32, ptr %62, align 4, !tbaa !9
  %3529 = sext i32 %3528 to i64
  %3530 = getelementptr inbounds double, ptr %3527, i64 %3529
  %3531 = load double, ptr %3530, align 8, !tbaa !11
  %3532 = fsub double %3526, %3531
  %3533 = load ptr, ptr %12, align 8, !tbaa !5
  %3534 = load i32, ptr %61, align 4, !tbaa !9
  %3535 = sext i32 %3534 to i64
  %3536 = getelementptr inbounds double, ptr %3533, i64 %3535
  %3537 = load double, ptr %3536, align 8, !tbaa !11
  %3538 = load ptr, ptr %12, align 8, !tbaa !5
  %3539 = load i32, ptr %62, align 4, !tbaa !9
  %3540 = sext i32 %3539 to i64
  %3541 = getelementptr inbounds double, ptr %3538, i64 %3540
  %3542 = load double, ptr %3541, align 8, !tbaa !11
  %3543 = fadd double %3537, %3542
  %3544 = fmul double %3532, %3543
  %3545 = load double, ptr %28, align 8, !tbaa !11
  %3546 = fmul double %3544, %3545
  store double %3546, ptr %29, align 8, !tbaa !11
  %3547 = load double, ptr %26, align 8, !tbaa !11
  %3548 = load double, ptr %37, align 8, !tbaa !11
  %3549 = load double, ptr %23, align 8, !tbaa !11
  %3550 = load double, ptr %21, align 8, !tbaa !11
  %3551 = fadd double %3549, %3550
  %3552 = fneg double %3548
  %3553 = call double @llvm.fmuladd.f64(double %3552, double %3551, double %3547)
  %3554 = load double, ptr %29, align 8, !tbaa !11
  %3555 = fsub double %3553, %3554
  store double %3555, ptr %32, align 8, !tbaa !11
  %3556 = load ptr, ptr %13, align 8, !tbaa !5
  %3557 = load i32, ptr %61, align 4, !tbaa !9
  %3558 = sext i32 %3557 to i64
  %3559 = getelementptr inbounds double, ptr %3556, i64 %3558
  %3560 = load double, ptr %3559, align 8, !tbaa !11
  %3561 = load ptr, ptr %13, align 8, !tbaa !5
  %3562 = load i32, ptr %61, align 4, !tbaa !9
  %3563 = sext i32 %3562 to i64
  %3564 = getelementptr inbounds double, ptr %3561, i64 %3563
  %3565 = load double, ptr %3564, align 8, !tbaa !11
  %3566 = fmul double %3560, %3565
  %3567 = getelementptr inbounds [3 x double], ptr %48, i64 0, i64 0
  store double %3566, ptr %3567, align 16, !tbaa !11
  %3568 = load double, ptr %23, align 8, !tbaa !11
  %3569 = load double, ptr %28, align 8, !tbaa !11
  %3570 = fcmp olt double %3568, %3569
  br i1 %3570, label %3571, label %3578

3571:                                             ; preds = %3511
  %3572 = load double, ptr %37, align 8, !tbaa !11
  %3573 = load double, ptr %37, align 8, !tbaa !11
  %3574 = fmul double %3572, %3573
  %3575 = load double, ptr %21, align 8, !tbaa !11
  %3576 = fmul double %3574, %3575
  %3577 = getelementptr inbounds [3 x double], ptr %48, i64 0, i64 2
  store double %3576, ptr %3577, align 16, !tbaa !11
  br label %3589

3578:                                             ; preds = %3511
  %3579 = load double, ptr %37, align 8, !tbaa !11
  %3580 = load double, ptr %37, align 8, !tbaa !11
  %3581 = fmul double %3579, %3580
  %3582 = load double, ptr %23, align 8, !tbaa !11
  %3583 = load double, ptr %28, align 8, !tbaa !11
  %3584 = fsub double %3582, %3583
  %3585 = load double, ptr %21, align 8, !tbaa !11
  %3586 = fadd double %3584, %3585
  %3587 = fmul double %3581, %3586
  %3588 = getelementptr inbounds [3 x double], ptr %48, i64 0, i64 2
  store double %3587, ptr %3588, align 16, !tbaa !11
  br label %3589

3589:                                             ; preds = %3578, %3571
  br label %3669

3590:                                             ; preds = %3508
  %3591 = load ptr, ptr %13, align 8, !tbaa !5
  %3592 = load i32, ptr %62, align 4, !tbaa !9
  %3593 = sext i32 %3592 to i64
  %3594 = getelementptr inbounds double, ptr %3591, i64 %3593
  %3595 = load double, ptr %3594, align 8, !tbaa !11
  %3596 = load double, ptr %37, align 8, !tbaa !11
  %3597 = fdiv double %3595, %3596
  store double %3597, ptr %28, align 8, !tbaa !11
  %3598 = load double, ptr %28, align 8, !tbaa !11
  %3599 = load double, ptr %28, align 8, !tbaa !11
  %3600 = fmul double %3599, %3598
  store double %3600, ptr %28, align 8, !tbaa !11
  %3601 = load ptr, ptr %12, align 8, !tbaa !5
  %3602 = load i32, ptr %62, align 4, !tbaa !9
  %3603 = sext i32 %3602 to i64
  %3604 = getelementptr inbounds double, ptr %3601, i64 %3603
  %3605 = load double, ptr %3604, align 8, !tbaa !11
  %3606 = load ptr, ptr %12, align 8, !tbaa !5
  %3607 = load i32, ptr %61, align 4, !tbaa !9
  %3608 = sext i32 %3607 to i64
  %3609 = getelementptr inbounds double, ptr %3606, i64 %3608
  %3610 = load double, ptr %3609, align 8, !tbaa !11
  %3611 = fsub double %3605, %3610
  %3612 = load ptr, ptr %12, align 8, !tbaa !5
  %3613 = load i32, ptr %61, align 4, !tbaa !9
  %3614 = sext i32 %3613 to i64
  %3615 = getelementptr inbounds double, ptr %3612, i64 %3614
  %3616 = load double, ptr %3615, align 8, !tbaa !11
  %3617 = load ptr, ptr %12, align 8, !tbaa !5
  %3618 = load i32, ptr %62, align 4, !tbaa !9
  %3619 = sext i32 %3618 to i64
  %3620 = getelementptr inbounds double, ptr %3617, i64 %3619
  %3621 = load double, ptr %3620, align 8, !tbaa !11
  %3622 = fadd double %3616, %3621
  %3623 = fmul double %3611, %3622
  %3624 = load double, ptr %28, align 8, !tbaa !11
  %3625 = fmul double %3623, %3624
  store double %3625, ptr %29, align 8, !tbaa !11
  %3626 = load double, ptr %26, align 8, !tbaa !11
  %3627 = load double, ptr %35, align 8, !tbaa !11
  %3628 = load double, ptr %23, align 8, !tbaa !11
  %3629 = load double, ptr %21, align 8, !tbaa !11
  %3630 = fadd double %3628, %3629
  %3631 = fneg double %3627
  %3632 = call double @llvm.fmuladd.f64(double %3631, double %3630, double %3626)
  %3633 = load double, ptr %29, align 8, !tbaa !11
  %3634 = fsub double %3632, %3633
  store double %3634, ptr %32, align 8, !tbaa !11
  %3635 = load double, ptr %21, align 8, !tbaa !11
  %3636 = load double, ptr %28, align 8, !tbaa !11
  %3637 = fcmp olt double %3635, %3636
  br i1 %3637, label %3638, label %3645

3638:                                             ; preds = %3590
  %3639 = load double, ptr %35, align 8, !tbaa !11
  %3640 = load double, ptr %35, align 8, !tbaa !11
  %3641 = fmul double %3639, %3640
  %3642 = load double, ptr %23, align 8, !tbaa !11
  %3643 = fmul double %3641, %3642
  %3644 = getelementptr inbounds [3 x double], ptr %48, i64 0, i64 0
  store double %3643, ptr %3644, align 16, !tbaa !11
  br label %3656

3645:                                             ; preds = %3590
  %3646 = load double, ptr %35, align 8, !tbaa !11
  %3647 = load double, ptr %35, align 8, !tbaa !11
  %3648 = fmul double %3646, %3647
  %3649 = load double, ptr %23, align 8, !tbaa !11
  %3650 = load double, ptr %21, align 8, !tbaa !11
  %3651 = load double, ptr %28, align 8, !tbaa !11
  %3652 = fsub double %3650, %3651
  %3653 = fadd double %3649, %3652
  %3654 = fmul double %3648, %3653
  %3655 = getelementptr inbounds [3 x double], ptr %48, i64 0, i64 0
  store double %3654, ptr %3655, align 16, !tbaa !11
  br label %3656

3656:                                             ; preds = %3645, %3638
  %3657 = load ptr, ptr %13, align 8, !tbaa !5
  %3658 = load i32, ptr %62, align 4, !tbaa !9
  %3659 = sext i32 %3658 to i64
  %3660 = getelementptr inbounds double, ptr %3657, i64 %3659
  %3661 = load double, ptr %3660, align 8, !tbaa !11
  %3662 = load ptr, ptr %13, align 8, !tbaa !5
  %3663 = load i32, ptr %62, align 4, !tbaa !9
  %3664 = sext i32 %3663 to i64
  %3665 = getelementptr inbounds double, ptr %3662, i64 %3664
  %3666 = load double, ptr %3665, align 8, !tbaa !11
  %3667 = fmul double %3661, %3666
  %3668 = getelementptr inbounds [3 x double], ptr %48, i64 0, i64 2
  store double %3667, ptr %3668, align 16, !tbaa !11
  br label %3669

3669:                                             ; preds = %3656, %3589
  br label %3670

3670:                                             ; preds = %3669, %3486
  %3671 = load double, ptr %35, align 8, !tbaa !11
  %3672 = getelementptr inbounds [3 x double], ptr %43, i64 0, i64 0
  store double %3671, ptr %3672, align 16, !tbaa !11
  %3673 = load ptr, ptr %14, align 8, !tbaa !5
  %3674 = load i32, ptr %46, align 4, !tbaa !9
  %3675 = sext i32 %3674 to i64
  %3676 = getelementptr inbounds double, ptr %3673, i64 %3675
  %3677 = load double, ptr %3676, align 8, !tbaa !11
  %3678 = load ptr, ptr %17, align 8, !tbaa !5
  %3679 = load i32, ptr %46, align 4, !tbaa !9
  %3680 = sext i32 %3679 to i64
  %3681 = getelementptr inbounds double, ptr %3678, i64 %3680
  %3682 = load double, ptr %3681, align 8, !tbaa !11
  %3683 = fmul double %3677, %3682
  %3684 = getelementptr inbounds [3 x double], ptr %43, i64 0, i64 1
  store double %3683, ptr %3684, align 8, !tbaa !11
  %3685 = load double, ptr %37, align 8, !tbaa !11
  %3686 = getelementptr inbounds [3 x double], ptr %43, i64 0, i64 2
  store double %3685, ptr %3686, align 16, !tbaa !11
  %3687 = getelementptr inbounds [3 x double], ptr %43, i64 0, i64 0
  %3688 = getelementptr inbounds [3 x double], ptr %48, i64 0, i64 0
  %3689 = load ptr, ptr %18, align 8, !tbaa !5
  call void @dlaed6_(ptr noundef %38, ptr noundef %49, ptr noundef %32, ptr noundef %3687, ptr noundef %3688, ptr noundef %34, ptr noundef %55, ptr noundef %3689)
  %3690 = load ptr, ptr %18, align 8, !tbaa !5
  %3691 = load i32, ptr %3690, align 4, !tbaa !9
  %3692 = icmp ne i32 %3691, 0
  br i1 %3692, label %3693, label %3941

3693:                                             ; preds = %3670
  store i32 0, ptr %45, align 4, !tbaa !9
  %3694 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 0, ptr %3694, align 4, !tbaa !9
  %3695 = load ptr, ptr %17, align 8, !tbaa !5
  %3696 = load i32, ptr %53, align 4, !tbaa !9
  %3697 = sext i32 %3696 to i64
  %3698 = getelementptr inbounds double, ptr %3695, i64 %3697
  %3699 = load double, ptr %3698, align 8, !tbaa !11
  %3700 = load ptr, ptr %14, align 8, !tbaa !5
  %3701 = load i32, ptr %53, align 4, !tbaa !9
  %3702 = sext i32 %3701 to i64
  %3703 = getelementptr inbounds double, ptr %3700, i64 %3702
  %3704 = load double, ptr %3703, align 8, !tbaa !11
  %3705 = fmul double %3699, %3704
  store double %3705, ptr %51, align 8, !tbaa !11
  %3706 = load ptr, ptr %17, align 8, !tbaa !5
  %3707 = load ptr, ptr %11, align 8, !tbaa !5
  %3708 = load i32, ptr %3707, align 4, !tbaa !9
  %3709 = sext i32 %3708 to i64
  %3710 = getelementptr inbounds double, ptr %3706, i64 %3709
  %3711 = load double, ptr %3710, align 8, !tbaa !11
  %3712 = load ptr, ptr %14, align 8, !tbaa !5
  %3713 = load ptr, ptr %11, align 8, !tbaa !5
  %3714 = load i32, ptr %3713, align 4, !tbaa !9
  %3715 = sext i32 %3714 to i64
  %3716 = getelementptr inbounds double, ptr %3712, i64 %3715
  %3717 = load double, ptr %3716, align 8, !tbaa !11
  %3718 = fmul double %3711, %3717
  store double %3718, ptr %39, align 8, !tbaa !11
  %3719 = load i32, ptr %40, align 4, !tbaa !9
  %3720 = icmp ne i32 %3719, 0
  br i1 %3720, label %3763, label %3721

3721:                                             ; preds = %3693
  %3722 = load i32, ptr %49, align 4, !tbaa !9
  %3723 = icmp ne i32 %3722, 0
  br i1 %3723, label %3724, label %3743

3724:                                             ; preds = %3721
  %3725 = load ptr, ptr %13, align 8, !tbaa !5
  %3726 = load ptr, ptr %11, align 8, !tbaa !5
  %3727 = load i32, ptr %3726, align 4, !tbaa !9
  %3728 = sext i32 %3727 to i64
  %3729 = getelementptr inbounds double, ptr %3725, i64 %3728
  %3730 = load double, ptr %3729, align 8, !tbaa !11
  %3731 = load double, ptr %39, align 8, !tbaa !11
  %3732 = fdiv double %3730, %3731
  store double %3732, ptr %20, align 8, !tbaa !11
  %3733 = load double, ptr %34, align 8, !tbaa !11
  %3734 = load double, ptr %51, align 8, !tbaa !11
  %3735 = load double, ptr %47, align 8, !tbaa !11
  %3736 = fneg double %3734
  %3737 = call double @llvm.fmuladd.f64(double %3736, double %3735, double %3733)
  %3738 = load double, ptr %36, align 8, !tbaa !11
  %3739 = load double, ptr %20, align 8, !tbaa !11
  %3740 = load double, ptr %20, align 8, !tbaa !11
  %3741 = fmul double %3739, %3740
  %3742 = call double @llvm.fmuladd.f64(double %3738, double %3741, double %3737)
  store double %3742, ptr %32, align 8, !tbaa !11
  br label %3762

3743:                                             ; preds = %3721
  %3744 = load ptr, ptr %13, align 8, !tbaa !5
  %3745 = load i32, ptr %53, align 4, !tbaa !9
  %3746 = sext i32 %3745 to i64
  %3747 = getelementptr inbounds double, ptr %3744, i64 %3746
  %3748 = load double, ptr %3747, align 8, !tbaa !11
  %3749 = load double, ptr %51, align 8, !tbaa !11
  %3750 = fdiv double %3748, %3749
  store double %3750, ptr %20, align 8, !tbaa !11
  %3751 = load double, ptr %34, align 8, !tbaa !11
  %3752 = load double, ptr %39, align 8, !tbaa !11
  %3753 = load double, ptr %47, align 8, !tbaa !11
  %3754 = fneg double %3752
  %3755 = call double @llvm.fmuladd.f64(double %3754, double %3753, double %3751)
  %3756 = load double, ptr %36, align 8, !tbaa !11
  %3757 = load double, ptr %20, align 8, !tbaa !11
  %3758 = load double, ptr %20, align 8, !tbaa !11
  %3759 = fmul double %3757, %3758
  %3760 = fneg double %3756
  %3761 = call double @llvm.fmuladd.f64(double %3760, double %3759, double %3755)
  store double %3761, ptr %32, align 8, !tbaa !11
  br label %3762

3762:                                             ; preds = %3743, %3724
  br label %3803

3763:                                             ; preds = %3693
  %3764 = load ptr, ptr %13, align 8, !tbaa !5
  %3765 = load i32, ptr %46, align 4, !tbaa !9
  %3766 = sext i32 %3765 to i64
  %3767 = getelementptr inbounds double, ptr %3764, i64 %3766
  %3768 = load double, ptr %3767, align 8, !tbaa !11
  %3769 = load ptr, ptr %17, align 8, !tbaa !5
  %3770 = load i32, ptr %46, align 4, !tbaa !9
  %3771 = sext i32 %3770 to i64
  %3772 = getelementptr inbounds double, ptr %3769, i64 %3771
  %3773 = load double, ptr %3772, align 8, !tbaa !11
  %3774 = load ptr, ptr %14, align 8, !tbaa !5
  %3775 = load i32, ptr %46, align 4, !tbaa !9
  %3776 = sext i32 %3775 to i64
  %3777 = getelementptr inbounds double, ptr %3774, i64 %3776
  %3778 = load double, ptr %3777, align 8, !tbaa !11
  %3779 = fmul double %3773, %3778
  %3780 = fdiv double %3768, %3779
  store double %3780, ptr %26, align 8, !tbaa !11
  %3781 = load i32, ptr %49, align 4, !tbaa !9
  %3782 = icmp ne i32 %3781, 0
  br i1 %3782, label %3783, label %3788

3783:                                             ; preds = %3763
  %3784 = load double, ptr %26, align 8, !tbaa !11
  %3785 = load double, ptr %26, align 8, !tbaa !11
  %3786 = load double, ptr %23, align 8, !tbaa !11
  %3787 = call double @llvm.fmuladd.f64(double %3784, double %3785, double %3786)
  store double %3787, ptr %23, align 8, !tbaa !11
  br label %3793

3788:                                             ; preds = %3763
  %3789 = load double, ptr %26, align 8, !tbaa !11
  %3790 = load double, ptr %26, align 8, !tbaa !11
  %3791 = load double, ptr %21, align 8, !tbaa !11
  %3792 = call double @llvm.fmuladd.f64(double %3789, double %3790, double %3791)
  store double %3792, ptr %21, align 8, !tbaa !11
  br label %3793

3793:                                             ; preds = %3788, %3783
  %3794 = load double, ptr %34, align 8, !tbaa !11
  %3795 = load double, ptr %39, align 8, !tbaa !11
  %3796 = load double, ptr %23, align 8, !tbaa !11
  %3797 = fneg double %3795
  %3798 = call double @llvm.fmuladd.f64(double %3797, double %3796, double %3794)
  %3799 = load double, ptr %51, align 8, !tbaa !11
  %3800 = load double, ptr %21, align 8, !tbaa !11
  %3801 = fneg double %3799
  %3802 = call double @llvm.fmuladd.f64(double %3801, double %3800, double %3798)
  store double %3802, ptr %32, align 8, !tbaa !11
  br label %3803

3803:                                             ; preds = %3793, %3762
  %3804 = load double, ptr %51, align 8, !tbaa !11
  %3805 = load double, ptr %39, align 8, !tbaa !11
  %3806 = fadd double %3804, %3805
  %3807 = load double, ptr %34, align 8, !tbaa !11
  %3808 = load double, ptr %51, align 8, !tbaa !11
  %3809 = load double, ptr %39, align 8, !tbaa !11
  %3810 = fmul double %3808, %3809
  %3811 = load double, ptr %47, align 8, !tbaa !11
  %3812 = fmul double %3810, %3811
  %3813 = fneg double %3812
  %3814 = call double @llvm.fmuladd.f64(double %3806, double %3807, double %3813)
  store double %3814, ptr %30, align 8, !tbaa !11
  %3815 = load double, ptr %51, align 8, !tbaa !11
  %3816 = load double, ptr %39, align 8, !tbaa !11
  %3817 = fmul double %3815, %3816
  %3818 = load double, ptr %34, align 8, !tbaa !11
  %3819 = fmul double %3817, %3818
  store double %3819, ptr %31, align 8, !tbaa !11
  %3820 = load double, ptr %32, align 8, !tbaa !11
  %3821 = fcmp oeq double %3820, 0.000000e+00
  br i1 %3821, label %3822, label %3888

3822:                                             ; preds = %3803
  %3823 = load double, ptr %30, align 8, !tbaa !11
  %3824 = fcmp oeq double %3823, 0.000000e+00
  br i1 %3824, label %3825, label %3884

3825:                                             ; preds = %3822
  %3826 = load i32, ptr %40, align 4, !tbaa !9
  %3827 = icmp ne i32 %3826, 0
  br i1 %3827, label %3872, label %3828

3828:                                             ; preds = %3825
  %3829 = load i32, ptr %49, align 4, !tbaa !9
  %3830 = icmp ne i32 %3829, 0
  br i1 %3830, label %3831, label %3852

3831:                                             ; preds = %3828
  %3832 = load ptr, ptr %13, align 8, !tbaa !5
  %3833 = load ptr, ptr %11, align 8, !tbaa !5
  %3834 = load i32, ptr %3833, align 4, !tbaa !9
  %3835 = sext i32 %3834 to i64
  %3836 = getelementptr inbounds double, ptr %3832, i64 %3835
  %3837 = load double, ptr %3836, align 8, !tbaa !11
  %3838 = load ptr, ptr %13, align 8, !tbaa !5
  %3839 = load ptr, ptr %11, align 8, !tbaa !5
  %3840 = load i32, ptr %3839, align 4, !tbaa !9
  %3841 = sext i32 %3840 to i64
  %3842 = getelementptr inbounds double, ptr %3838, i64 %3841
  %3843 = load double, ptr %3842, align 8, !tbaa !11
  %3844 = load double, ptr %51, align 8, !tbaa !11
  %3845 = load double, ptr %51, align 8, !tbaa !11
  %3846 = fmul double %3844, %3845
  %3847 = load double, ptr %23, align 8, !tbaa !11
  %3848 = load double, ptr %21, align 8, !tbaa !11
  %3849 = fadd double %3847, %3848
  %3850 = fmul double %3846, %3849
  %3851 = call double @llvm.fmuladd.f64(double %3837, double %3843, double %3850)
  store double %3851, ptr %30, align 8, !tbaa !11
  br label %3871

3852:                                             ; preds = %3828
  %3853 = load ptr, ptr %13, align 8, !tbaa !5
  %3854 = load i32, ptr %53, align 4, !tbaa !9
  %3855 = sext i32 %3854 to i64
  %3856 = getelementptr inbounds double, ptr %3853, i64 %3855
  %3857 = load double, ptr %3856, align 8, !tbaa !11
  %3858 = load ptr, ptr %13, align 8, !tbaa !5
  %3859 = load i32, ptr %53, align 4, !tbaa !9
  %3860 = sext i32 %3859 to i64
  %3861 = getelementptr inbounds double, ptr %3858, i64 %3860
  %3862 = load double, ptr %3861, align 8, !tbaa !11
  %3863 = load double, ptr %39, align 8, !tbaa !11
  %3864 = load double, ptr %39, align 8, !tbaa !11
  %3865 = fmul double %3863, %3864
  %3866 = load double, ptr %23, align 8, !tbaa !11
  %3867 = load double, ptr %21, align 8, !tbaa !11
  %3868 = fadd double %3866, %3867
  %3869 = fmul double %3865, %3868
  %3870 = call double @llvm.fmuladd.f64(double %3857, double %3862, double %3869)
  store double %3870, ptr %30, align 8, !tbaa !11
  br label %3871

3871:                                             ; preds = %3852, %3831
  br label %3883

3872:                                             ; preds = %3825
  %3873 = load double, ptr %39, align 8, !tbaa !11
  %3874 = load double, ptr %39, align 8, !tbaa !11
  %3875 = fmul double %3873, %3874
  %3876 = load double, ptr %23, align 8, !tbaa !11
  %3877 = load double, ptr %51, align 8, !tbaa !11
  %3878 = load double, ptr %51, align 8, !tbaa !11
  %3879 = fmul double %3877, %3878
  %3880 = load double, ptr %21, align 8, !tbaa !11
  %3881 = fmul double %3879, %3880
  %3882 = call double @llvm.fmuladd.f64(double %3875, double %3876, double %3881)
  store double %3882, ptr %30, align 8, !tbaa !11
  br label %3883

3883:                                             ; preds = %3872, %3871
  br label %3884

3884:                                             ; preds = %3883, %3822
  %3885 = load double, ptr %31, align 8, !tbaa !11
  %3886 = load double, ptr %30, align 8, !tbaa !11
  %3887 = fdiv double %3885, %3886
  store double %3887, ptr %55, align 8, !tbaa !11
  br label %3940

3888:                                             ; preds = %3803
  %3889 = load double, ptr %30, align 8, !tbaa !11
  %3890 = fcmp ole double %3889, 0.000000e+00
  br i1 %3890, label %3891, label %3915

3891:                                             ; preds = %3888
  %3892 = load double, ptr %30, align 8, !tbaa !11
  %3893 = load double, ptr %30, align 8, !tbaa !11
  %3894 = load double, ptr %30, align 8, !tbaa !11
  %3895 = load double, ptr %31, align 8, !tbaa !11
  %3896 = fmul double %3895, 4.000000e+00
  %3897 = load double, ptr %32, align 8, !tbaa !11
  %3898 = fmul double %3896, %3897
  %3899 = fneg double %3898
  %3900 = call double @llvm.fmuladd.f64(double %3893, double %3894, double %3899)
  store double %3900, ptr %20, align 8, !tbaa !11
  %3901 = load double, ptr %20, align 8, !tbaa !11
  %3902 = fcmp oge double %3901, 0.000000e+00
  br i1 %3902, label %3903, label %3905

3903:                                             ; preds = %3891
  %3904 = load double, ptr %20, align 8, !tbaa !11
  br label %3908

3905:                                             ; preds = %3891
  %3906 = load double, ptr %20, align 8, !tbaa !11
  %3907 = fneg double %3906
  br label %3908

3908:                                             ; preds = %3905, %3903
  %3909 = phi double [ %3904, %3903 ], [ %3907, %3905 ]
  %3910 = call double @sqrt(double noundef %3909) #5
  %3911 = fsub double %3892, %3910
  %3912 = load double, ptr %32, align 8, !tbaa !11
  %3913 = fmul double %3912, 2.000000e+00
  %3914 = fdiv double %3911, %3913
  store double %3914, ptr %55, align 8, !tbaa !11
  br label %3939

3915:                                             ; preds = %3888
  %3916 = load double, ptr %31, align 8, !tbaa !11
  %3917 = fmul double %3916, 2.000000e+00
  %3918 = load double, ptr %30, align 8, !tbaa !11
  %3919 = load double, ptr %30, align 8, !tbaa !11
  %3920 = load double, ptr %30, align 8, !tbaa !11
  %3921 = load double, ptr %31, align 8, !tbaa !11
  %3922 = fmul double %3921, 4.000000e+00
  %3923 = load double, ptr %32, align 8, !tbaa !11
  %3924 = fmul double %3922, %3923
  %3925 = fneg double %3924
  %3926 = call double @llvm.fmuladd.f64(double %3919, double %3920, double %3925)
  store double %3926, ptr %20, align 8, !tbaa !11
  %3927 = load double, ptr %20, align 8, !tbaa !11
  %3928 = fcmp oge double %3927, 0.000000e+00
  br i1 %3928, label %3929, label %3931

3929:                                             ; preds = %3915
  %3930 = load double, ptr %20, align 8, !tbaa !11
  br label %3934

3931:                                             ; preds = %3915
  %3932 = load double, ptr %20, align 8, !tbaa !11
  %3933 = fneg double %3932
  br label %3934

3934:                                             ; preds = %3931, %3929
  %3935 = phi double [ %3930, %3929 ], [ %3933, %3931 ]
  %3936 = call double @sqrt(double noundef %3935) #5
  %3937 = fadd double %3918, %3936
  %3938 = fdiv double %3917, %3937
  store double %3938, ptr %55, align 8, !tbaa !11
  br label %3939

3939:                                             ; preds = %3934, %3908
  br label %3940

3940:                                             ; preds = %3939, %3884
  br label %3941

3941:                                             ; preds = %3940, %3670
  br label %3942

3942:                                             ; preds = %3941, %3455
  %3943 = load double, ptr %34, align 8, !tbaa !11
  %3944 = load double, ptr %55, align 8, !tbaa !11
  %3945 = fmul double %3943, %3944
  %3946 = fcmp oge double %3945, 0.000000e+00
  br i1 %3946, label %3947, label %3952

3947:                                             ; preds = %3942
  %3948 = load double, ptr %34, align 8, !tbaa !11
  %3949 = fneg double %3948
  %3950 = load double, ptr %47, align 8, !tbaa !11
  %3951 = fdiv double %3949, %3950
  store double %3951, ptr %55, align 8, !tbaa !11
  br label %3952

3952:                                             ; preds = %3947, %3942
  %3953 = load ptr, ptr %16, align 8, !tbaa !5
  %3954 = load double, ptr %3953, align 8, !tbaa !11
  %3955 = load ptr, ptr %16, align 8, !tbaa !5
  %3956 = load double, ptr %3955, align 8, !tbaa !11
  %3957 = load ptr, ptr %16, align 8, !tbaa !5
  %3958 = load double, ptr %3957, align 8, !tbaa !11
  %3959 = load double, ptr %55, align 8, !tbaa !11
  %3960 = call double @llvm.fmuladd.f64(double %3956, double %3958, double %3959)
  %3961 = call double @sqrt(double noundef %3960) #5
  %3962 = fadd double %3954, %3961
  %3963 = load double, ptr %55, align 8, !tbaa !11
  %3964 = fdiv double %3963, %3962
  store double %3964, ptr %55, align 8, !tbaa !11
  %3965 = load double, ptr %58, align 8, !tbaa !11
  %3966 = load double, ptr %55, align 8, !tbaa !11
  %3967 = fadd double %3965, %3966
  store double %3967, ptr %26, align 8, !tbaa !11
  %3968 = load double, ptr %26, align 8, !tbaa !11
  %3969 = load double, ptr %24, align 8, !tbaa !11
  %3970 = fcmp ogt double %3968, %3969
  br i1 %3970, label %3975, label %3971

3971:                                             ; preds = %3952
  %3972 = load double, ptr %26, align 8, !tbaa !11
  %3973 = load double, ptr %22, align 8, !tbaa !11
  %3974 = fcmp olt double %3972, %3973
  br i1 %3974, label %3975, label %4018

3975:                                             ; preds = %3971, %3952
  %3976 = load double, ptr %34, align 8, !tbaa !11
  %3977 = fcmp olt double %3976, 0.000000e+00
  br i1 %3977, label %3978, label %3983

3978:                                             ; preds = %3975
  %3979 = load double, ptr %24, align 8, !tbaa !11
  %3980 = load double, ptr %58, align 8, !tbaa !11
  %3981 = fsub double %3979, %3980
  %3982 = fdiv double %3981, 2.000000e+00
  store double %3982, ptr %55, align 8, !tbaa !11
  br label %3988

3983:                                             ; preds = %3975
  %3984 = load double, ptr %22, align 8, !tbaa !11
  %3985 = load double, ptr %58, align 8, !tbaa !11
  %3986 = fsub double %3984, %3985
  %3987 = fdiv double %3986, 2.000000e+00
  store double %3987, ptr %55, align 8, !tbaa !11
  br label %3988

3988:                                             ; preds = %3983, %3978
  %3989 = load i32, ptr %60, align 4, !tbaa !9
  %3990 = icmp ne i32 %3989, 0
  br i1 %3990, label %3991, label %4017

3991:                                             ; preds = %3988
  %3992 = load double, ptr %34, align 8, !tbaa !11
  %3993 = fcmp olt double %3992, 0.000000e+00
  br i1 %3993, label %3994, label %4005

3994:                                             ; preds = %3991
  %3995 = load double, ptr %58, align 8, !tbaa !11
  %3996 = fcmp ogt double %3995, 0.000000e+00
  br i1 %3996, label %3997, label %4004

3997:                                             ; preds = %3994
  %3998 = load double, ptr %24, align 8, !tbaa !11
  %3999 = load double, ptr %58, align 8, !tbaa !11
  %4000 = fmul double %3998, %3999
  %4001 = call double @sqrt(double noundef %4000) #5
  %4002 = load double, ptr %58, align 8, !tbaa !11
  %4003 = fsub double %4001, %4002
  store double %4003, ptr %55, align 8, !tbaa !11
  br label %4004

4004:                                             ; preds = %3997, %3994
  br label %4016

4005:                                             ; preds = %3991
  %4006 = load double, ptr %22, align 8, !tbaa !11
  %4007 = fcmp ogt double %4006, 0.000000e+00
  br i1 %4007, label %4008, label %4015

4008:                                             ; preds = %4005
  %4009 = load double, ptr %22, align 8, !tbaa !11
  %4010 = load double, ptr %58, align 8, !tbaa !11
  %4011 = fmul double %4009, %4010
  %4012 = call double @sqrt(double noundef %4011) #5
  %4013 = load double, ptr %58, align 8, !tbaa !11
  %4014 = fsub double %4012, %4013
  store double %4014, ptr %55, align 8, !tbaa !11
  br label %4015

4015:                                             ; preds = %4008, %4005
  br label %4016

4016:                                             ; preds = %4015, %4004
  br label %4017

4017:                                             ; preds = %4016, %3988
  br label %4018

4018:                                             ; preds = %4017, %3971
  %4019 = load double, ptr %34, align 8, !tbaa !11
  store double %4019, ptr %27, align 8, !tbaa !11
  %4020 = load double, ptr %55, align 8, !tbaa !11
  %4021 = load double, ptr %58, align 8, !tbaa !11
  %4022 = fadd double %4021, %4020
  store double %4022, ptr %58, align 8, !tbaa !11
  %4023 = load double, ptr %55, align 8, !tbaa !11
  %4024 = load ptr, ptr %16, align 8, !tbaa !5
  %4025 = load double, ptr %4024, align 8, !tbaa !11
  %4026 = fadd double %4025, %4023
  store double %4026, ptr %4024, align 8, !tbaa !11
  %4027 = load ptr, ptr %10, align 8, !tbaa !5
  %4028 = load i32, ptr %4027, align 4, !tbaa !9
  store i32 %4028, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %4029

4029:                                             ; preds = %4048, %4018
  %4030 = load i32, ptr %33, align 4, !tbaa !9
  %4031 = load i32, ptr %19, align 4, !tbaa !9
  %4032 = icmp sle i32 %4030, %4031
  br i1 %4032, label %4033, label %4051

4033:                                             ; preds = %4029
  %4034 = load double, ptr %55, align 8, !tbaa !11
  %4035 = load ptr, ptr %17, align 8, !tbaa !5
  %4036 = load i32, ptr %33, align 4, !tbaa !9
  %4037 = sext i32 %4036 to i64
  %4038 = getelementptr inbounds double, ptr %4035, i64 %4037
  %4039 = load double, ptr %4038, align 8, !tbaa !11
  %4040 = fadd double %4039, %4034
  store double %4040, ptr %4038, align 8, !tbaa !11
  %4041 = load double, ptr %55, align 8, !tbaa !11
  %4042 = load ptr, ptr %14, align 8, !tbaa !5
  %4043 = load i32, ptr %33, align 4, !tbaa !9
  %4044 = sext i32 %4043 to i64
  %4045 = getelementptr inbounds double, ptr %4042, i64 %4044
  %4046 = load double, ptr %4045, align 8, !tbaa !11
  %4047 = fsub double %4046, %4041
  store double %4047, ptr %4045, align 8, !tbaa !11
  br label %4048

4048:                                             ; preds = %4033
  %4049 = load i32, ptr %33, align 4, !tbaa !9
  %4050 = add nsw i32 %4049, 1
  store i32 %4050, ptr %33, align 4, !tbaa !9
  br label %4029, !llvm.loop !32

4051:                                             ; preds = %4029
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  store double 0.000000e+00, ptr %59, align 8, !tbaa !11
  store double 0.000000e+00, ptr %50, align 8, !tbaa !11
  %4052 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %4052, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %4053

4053:                                             ; preds = %4090, %4051
  %4054 = load i32, ptr %33, align 4, !tbaa !9
  %4055 = load i32, ptr %19, align 4, !tbaa !9
  %4056 = icmp sle i32 %4054, %4055
  br i1 %4056, label %4057, label %4093

4057:                                             ; preds = %4053
  %4058 = load ptr, ptr %13, align 8, !tbaa !5
  %4059 = load i32, ptr %33, align 4, !tbaa !9
  %4060 = sext i32 %4059 to i64
  %4061 = getelementptr inbounds double, ptr %4058, i64 %4060
  %4062 = load double, ptr %4061, align 8, !tbaa !11
  %4063 = load ptr, ptr %17, align 8, !tbaa !5
  %4064 = load i32, ptr %33, align 4, !tbaa !9
  %4065 = sext i32 %4064 to i64
  %4066 = getelementptr inbounds double, ptr %4063, i64 %4065
  %4067 = load double, ptr %4066, align 8, !tbaa !11
  %4068 = load ptr, ptr %14, align 8, !tbaa !5
  %4069 = load i32, ptr %33, align 4, !tbaa !9
  %4070 = sext i32 %4069 to i64
  %4071 = getelementptr inbounds double, ptr %4068, i64 %4070
  %4072 = load double, ptr %4071, align 8, !tbaa !11
  %4073 = fmul double %4067, %4072
  %4074 = fdiv double %4062, %4073
  store double %4074, ptr %26, align 8, !tbaa !11
  %4075 = load ptr, ptr %13, align 8, !tbaa !5
  %4076 = load i32, ptr %33, align 4, !tbaa !9
  %4077 = sext i32 %4076 to i64
  %4078 = getelementptr inbounds double, ptr %4075, i64 %4077
  %4079 = load double, ptr %4078, align 8, !tbaa !11
  %4080 = load double, ptr %26, align 8, !tbaa !11
  %4081 = load double, ptr %59, align 8, !tbaa !11
  %4082 = call double @llvm.fmuladd.f64(double %4079, double %4080, double %4081)
  store double %4082, ptr %59, align 8, !tbaa !11
  %4083 = load double, ptr %26, align 8, !tbaa !11
  %4084 = load double, ptr %26, align 8, !tbaa !11
  %4085 = load double, ptr %23, align 8, !tbaa !11
  %4086 = call double @llvm.fmuladd.f64(double %4083, double %4084, double %4085)
  store double %4086, ptr %23, align 8, !tbaa !11
  %4087 = load double, ptr %59, align 8, !tbaa !11
  %4088 = load double, ptr %50, align 8, !tbaa !11
  %4089 = fadd double %4088, %4087
  store double %4089, ptr %50, align 8, !tbaa !11
  br label %4090

4090:                                             ; preds = %4057
  %4091 = load i32, ptr %33, align 4, !tbaa !9
  %4092 = add nsw i32 %4091, 1
  store i32 %4092, ptr %33, align 4, !tbaa !9
  br label %4053, !llvm.loop !33

4093:                                             ; preds = %4053
  %4094 = load double, ptr %50, align 8, !tbaa !11
  %4095 = fcmp oge double %4094, 0.000000e+00
  br i1 %4095, label %4096, label %4098

4096:                                             ; preds = %4093
  %4097 = load double, ptr %50, align 8, !tbaa !11
  br label %4101

4098:                                             ; preds = %4093
  %4099 = load double, ptr %50, align 8, !tbaa !11
  %4100 = fneg double %4099
  br label %4101

4101:                                             ; preds = %4098, %4096
  %4102 = phi double [ %4097, %4096 ], [ %4100, %4098 ]
  store double %4102, ptr %50, align 8, !tbaa !11
  store double 0.000000e+00, ptr %21, align 8, !tbaa !11
  store double 0.000000e+00, ptr %56, align 8, !tbaa !11
  %4103 = load i32, ptr %62, align 4, !tbaa !9
  store i32 %4103, ptr %19, align 4, !tbaa !9
  %4104 = load ptr, ptr %10, align 8, !tbaa !5
  %4105 = load i32, ptr %4104, align 4, !tbaa !9
  store i32 %4105, ptr %33, align 4, !tbaa !9
  br label %4106

4106:                                             ; preds = %4143, %4101
  %4107 = load i32, ptr %33, align 4, !tbaa !9
  %4108 = load i32, ptr %19, align 4, !tbaa !9
  %4109 = icmp sge i32 %4107, %4108
  br i1 %4109, label %4110, label %4146

4110:                                             ; preds = %4106
  %4111 = load ptr, ptr %13, align 8, !tbaa !5
  %4112 = load i32, ptr %33, align 4, !tbaa !9
  %4113 = sext i32 %4112 to i64
  %4114 = getelementptr inbounds double, ptr %4111, i64 %4113
  %4115 = load double, ptr %4114, align 8, !tbaa !11
  %4116 = load ptr, ptr %17, align 8, !tbaa !5
  %4117 = load i32, ptr %33, align 4, !tbaa !9
  %4118 = sext i32 %4117 to i64
  %4119 = getelementptr inbounds double, ptr %4116, i64 %4118
  %4120 = load double, ptr %4119, align 8, !tbaa !11
  %4121 = load ptr, ptr %14, align 8, !tbaa !5
  %4122 = load i32, ptr %33, align 4, !tbaa !9
  %4123 = sext i32 %4122 to i64
  %4124 = getelementptr inbounds double, ptr %4121, i64 %4123
  %4125 = load double, ptr %4124, align 8, !tbaa !11
  %4126 = fmul double %4120, %4125
  %4127 = fdiv double %4115, %4126
  store double %4127, ptr %26, align 8, !tbaa !11
  %4128 = load ptr, ptr %13, align 8, !tbaa !5
  %4129 = load i32, ptr %33, align 4, !tbaa !9
  %4130 = sext i32 %4129 to i64
  %4131 = getelementptr inbounds double, ptr %4128, i64 %4130
  %4132 = load double, ptr %4131, align 8, !tbaa !11
  %4133 = load double, ptr %26, align 8, !tbaa !11
  %4134 = load double, ptr %56, align 8, !tbaa !11
  %4135 = call double @llvm.fmuladd.f64(double %4132, double %4133, double %4134)
  store double %4135, ptr %56, align 8, !tbaa !11
  %4136 = load double, ptr %26, align 8, !tbaa !11
  %4137 = load double, ptr %26, align 8, !tbaa !11
  %4138 = load double, ptr %21, align 8, !tbaa !11
  %4139 = call double @llvm.fmuladd.f64(double %4136, double %4137, double %4138)
  store double %4139, ptr %21, align 8, !tbaa !11
  %4140 = load double, ptr %56, align 8, !tbaa !11
  %4141 = load double, ptr %50, align 8, !tbaa !11
  %4142 = fadd double %4141, %4140
  store double %4142, ptr %50, align 8, !tbaa !11
  br label %4143

4143:                                             ; preds = %4110
  %4144 = load i32, ptr %33, align 4, !tbaa !9
  %4145 = add nsw i32 %4144, -1
  store i32 %4145, ptr %33, align 4, !tbaa !9
  br label %4106, !llvm.loop !34

4146:                                             ; preds = %4106
  %4147 = load ptr, ptr %17, align 8, !tbaa !5
  %4148 = load i32, ptr %46, align 4, !tbaa !9
  %4149 = sext i32 %4148 to i64
  %4150 = getelementptr inbounds double, ptr %4147, i64 %4149
  %4151 = load double, ptr %4150, align 8, !tbaa !11
  %4152 = load ptr, ptr %14, align 8, !tbaa !5
  %4153 = load i32, ptr %46, align 4, !tbaa !9
  %4154 = sext i32 %4153 to i64
  %4155 = getelementptr inbounds double, ptr %4152, i64 %4154
  %4156 = load double, ptr %4155, align 8, !tbaa !11
  %4157 = fmul double %4151, %4156
  store double %4157, ptr %63, align 8, !tbaa !11
  %4158 = load ptr, ptr %13, align 8, !tbaa !5
  %4159 = load i32, ptr %46, align 4, !tbaa !9
  %4160 = sext i32 %4159 to i64
  %4161 = getelementptr inbounds double, ptr %4158, i64 %4160
  %4162 = load double, ptr %4161, align 8, !tbaa !11
  %4163 = load double, ptr %63, align 8, !tbaa !11
  %4164 = fdiv double %4162, %4163
  store double %4164, ptr %26, align 8, !tbaa !11
  %4165 = load double, ptr %23, align 8, !tbaa !11
  %4166 = load double, ptr %21, align 8, !tbaa !11
  %4167 = fadd double %4165, %4166
  %4168 = load double, ptr %26, align 8, !tbaa !11
  %4169 = load double, ptr %26, align 8, !tbaa !11
  %4170 = call double @llvm.fmuladd.f64(double %4168, double %4169, double %4167)
  store double %4170, ptr %47, align 8, !tbaa !11
  %4171 = load ptr, ptr %13, align 8, !tbaa !5
  %4172 = load i32, ptr %46, align 4, !tbaa !9
  %4173 = sext i32 %4172 to i64
  %4174 = getelementptr inbounds double, ptr %4171, i64 %4173
  %4175 = load double, ptr %4174, align 8, !tbaa !11
  %4176 = load double, ptr %26, align 8, !tbaa !11
  %4177 = fmul double %4175, %4176
  store double %4177, ptr %26, align 8, !tbaa !11
  %4178 = load double, ptr %52, align 8, !tbaa !11
  %4179 = load double, ptr %56, align 8, !tbaa !11
  %4180 = fadd double %4178, %4179
  %4181 = load double, ptr %59, align 8, !tbaa !11
  %4182 = fadd double %4180, %4181
  %4183 = load double, ptr %26, align 8, !tbaa !11
  %4184 = fadd double %4182, %4183
  store double %4184, ptr %34, align 8, !tbaa !11
  %4185 = load double, ptr %56, align 8, !tbaa !11
  %4186 = load double, ptr %59, align 8, !tbaa !11
  %4187 = fsub double %4185, %4186
  %4188 = load double, ptr %50, align 8, !tbaa !11
  %4189 = call double @llvm.fmuladd.f64(double %4187, double 8.000000e+00, double %4188)
  %4190 = load double, ptr %52, align 8, !tbaa !11
  %4191 = call double @llvm.fmuladd.f64(double %4190, double 2.000000e+00, double %4189)
  %4192 = load double, ptr %26, align 8, !tbaa !11
  %4193 = fcmp oge double %4192, 0.000000e+00
  br i1 %4193, label %4194, label %4196

4194:                                             ; preds = %4146
  %4195 = load double, ptr %26, align 8, !tbaa !11
  br label %4199

4196:                                             ; preds = %4146
  %4197 = load double, ptr %26, align 8, !tbaa !11
  %4198 = fneg double %4197
  br label %4199

4199:                                             ; preds = %4196, %4194
  %4200 = phi double [ %4195, %4194 ], [ %4198, %4196 ]
  %4201 = call double @llvm.fmuladd.f64(double %4200, double 3.000000e+00, double %4191)
  store double %4201, ptr %50, align 8, !tbaa !11
  %4202 = load double, ptr %34, align 8, !tbaa !11
  %4203 = load double, ptr %27, align 8, !tbaa !11
  %4204 = fmul double %4202, %4203
  %4205 = fcmp ogt double %4204, 0.000000e+00
  br i1 %4205, label %4206, label %4232

4206:                                             ; preds = %4199
  %4207 = load double, ptr %34, align 8, !tbaa !11
  %4208 = fcmp oge double %4207, 0.000000e+00
  br i1 %4208, label %4209, label %4211

4209:                                             ; preds = %4206
  %4210 = load double, ptr %34, align 8, !tbaa !11
  br label %4214

4211:                                             ; preds = %4206
  %4212 = load double, ptr %34, align 8, !tbaa !11
  %4213 = fneg double %4212
  br label %4214

4214:                                             ; preds = %4211, %4209
  %4215 = phi double [ %4210, %4209 ], [ %4213, %4211 ]
  %4216 = load double, ptr %27, align 8, !tbaa !11
  %4217 = fcmp oge double %4216, 0.000000e+00
  br i1 %4217, label %4218, label %4220

4218:                                             ; preds = %4214
  %4219 = load double, ptr %27, align 8, !tbaa !11
  br label %4223

4220:                                             ; preds = %4214
  %4221 = load double, ptr %27, align 8, !tbaa !11
  %4222 = fneg double %4221
  br label %4223

4223:                                             ; preds = %4220, %4218
  %4224 = phi double [ %4219, %4218 ], [ %4222, %4220 ]
  %4225 = fdiv double %4224, 1.000000e+01
  %4226 = fcmp ogt double %4215, %4225
  br i1 %4226, label %4227, label %4232

4227:                                             ; preds = %4223
  %4228 = load i32, ptr %40, align 4, !tbaa !9
  %4229 = icmp ne i32 %4228, 0
  %4230 = xor i1 %4229, true
  %4231 = zext i1 %4230 to i32
  store i32 %4231, ptr %40, align 4, !tbaa !9
  br label %4232

4232:                                             ; preds = %4227, %4223, %4199
  br label %4233

4233:                                             ; preds = %4232
  %4234 = load i32, ptr %38, align 4, !tbaa !9
  %4235 = add nsw i32 %4234, 1
  store i32 %4235, ptr %38, align 4, !tbaa !9
  br label %3165, !llvm.loop !35

4236:                                             ; preds = %3165
  %4237 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 1, ptr %4237, align 4, !tbaa !9
  br label %4238

4238:                                             ; preds = %4236
  br label %4239

4239:                                             ; preds = %4238, %3182, %2240, %1421, %1147, %824
  store i32 1, ptr %64, align 4
  br label %4240

4240:                                             ; preds = %4239, %105, %77
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 4, 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 4, 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 4, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 24, 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 4, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  ret void
}

; 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 void @dlasd5_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

declare double @dlamch_(ptr noundef) #4

declare void @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 = !{!"int", !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}


; 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 void @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 i32, align 4
  %13 = alloca [3 x double], align 16
  %14 = alloca [3 x double], align 16
  %15 = alloca i32, align 4
  %16 = alloca double, 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 4, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 4, 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 i32 0, ptr %8, align 4, !tbaa !5
  %21 = load i32, ptr %0, align 4, !tbaa !5
  switch i32 %21, label %31 [
    i32 1, label %22
    i32 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 %.loopexit1653

30:                                               ; preds = %9
  tail call void @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 %.loopexit1653

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

38:                                               ; preds = %31
  %39 = add nsw i32 %35, -1
  %40 = fmul double %33, 5.000000e-01
  %41 = sext i32 %35 to i64
  %42 = getelementptr inbounds double, ptr %20, i64 %41
  %43 = load double, ptr %42, align 8, !tbaa !9
  %44 = tail call double @llvm.fmuladd.f64(double %43, double %43, double %40)
  %45 = tail call double @sqrt(double noundef %44) #6
  %46 = fadd double %43, %45
  %47 = fdiv double %40, %46
  %48 = load i32, ptr %0, align 4, !tbaa !5
  %.not16351762 = icmp slt i32 %48, 1
  br i1 %.not16351762, label %._crit_edge1772, label %.lr.ph1765

.lr.ph1765:                                       ; preds = %38
  %49 = zext nneg i32 %48 to i64
  %50 = getelementptr inbounds double, ptr %20, i64 %49
  %51 = add nuw i32 %48, 1
  %wide.trip.count1920 = zext i32 %51 to i64
  %52 = zext nneg i32 %48 to i64
  %min.iters.check2175 = icmp ult i32 %48, 14
  br i1 %min.iters.check2175, label %scalar.ph2174.preheader, label %vector.memcheck2149

vector.memcheck2149:                              ; preds = %.lr.ph1765
  %53 = shl nuw nsw i64 %wide.trip.count1920, 3
  %54 = add nsw i64 %53, -8
  %scevgep2150 = getelementptr i8, ptr %7, i64 %54
  %scevgep2151 = getelementptr i8, ptr %4, i64 %54
  %55 = shl nuw nsw i64 %49, 3
  %scevgep2152 = getelementptr i8, ptr %2, i64 %55
  %scevgep2153 = getelementptr i8, ptr %2, i64 %54
  %bound02154 = icmp ugt ptr %scevgep2151, %7
  %bound12155 = icmp ugt ptr %scevgep2150, %4
  %found.conflict2156 = and i1 %bound02154, %bound12155
  %bound02157 = icmp ugt ptr %scevgep2152, %7
  %bound12158 = icmp ult ptr %50, %scevgep2150
  %found.conflict2159 = and i1 %bound02157, %bound12158
  %conflict.rdx2160 = or i1 %found.conflict2156, %found.conflict2159
  %bound02161 = icmp ugt ptr %scevgep2153, %7
  %bound12162 = icmp ugt ptr %scevgep2150, %2
  %found.conflict2163 = and i1 %bound02161, %bound12162
  %conflict.rdx2164 = or i1 %conflict.rdx2160, %found.conflict2163
  %bound02165 = icmp ugt ptr %scevgep2152, %4
  %bound12166 = icmp ult ptr %50, %scevgep2151
  %found.conflict2167 = and i1 %bound02165, %bound12166
  %conflict.rdx2168 = or i1 %conflict.rdx2164, %found.conflict2167
  %bound02169 = icmp ugt ptr %scevgep2153, %4
  %bound12170 = icmp ugt ptr %scevgep2151, %2
  %found.conflict2171 = and i1 %bound02169, %bound12170
  %conflict.rdx2172 = or i1 %conflict.rdx2168, %found.conflict2171
  br i1 %conflict.rdx2172, label %scalar.ph2174.preheader, label %vector.ph2176

vector.ph2176:                                    ; preds = %vector.memcheck2149
  %n.vec2178 = and i64 %52, 2147483646
  %ind.end2179 = or i64 %52, 1
  %broadcast.splatinsert2187 = insertelement <2 x double> poison, double %47, i64 0
  %broadcast.splat2188 = shufflevector <2 x double> %broadcast.splatinsert2187, <2 x double> poison, <2 x i32> zeroinitializer
  %56 = load double, ptr %50, align 8, !tbaa !9, !alias.scope !11
  %broadcast.splatinsert2185 = insertelement <2 x double> poison, double %56, i64 0
  %broadcast.splat2186 = shufflevector <2 x double> %broadcast.splatinsert2185, <2 x double> poison, <2 x i32> zeroinitializer
  %57 = load double, ptr %50, align 8, !tbaa !9, !alias.scope !11
  %broadcast.splatinsert2190 = insertelement <2 x double> poison, double %57, i64 0
  %broadcast.splat2191 = shufflevector <2 x double> %broadcast.splatinsert2190, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body2181

vector.body2181:                                  ; preds = %vector.body2181, %vector.ph2176
  %index2182 = phi i64 [ 0, %vector.ph2176 ], [ %index.next2192, %vector.body2181 ]
  %58 = getelementptr double, ptr %2, i64 %index2182
  %wide.load2184 = load <2 x double>, ptr %58, align 8, !tbaa !9, !alias.scope !14
  %59 = fadd <2 x double> %wide.load2184, %broadcast.splat2186
  %60 = fadd <2 x double> %broadcast.splat2188, %59
  %61 = getelementptr double, ptr %7, i64 %index2182
  store <2 x double> %60, ptr %61, align 8, !tbaa !9, !alias.scope !16, !noalias !18
  %wide.load2189 = load <2 x double>, ptr %58, align 8, !tbaa !9, !alias.scope !14
  %62 = fsub <2 x double> %wide.load2189, %broadcast.splat2191
  %63 = fsub <2 x double> %62, %broadcast.splat2188
  %64 = getelementptr double, ptr %4, i64 %index2182
  store <2 x double> %63, ptr %64, align 8, !tbaa !9, !alias.scope !20, !noalias !21
  %index.next2192 = add nuw i64 %index2182, 2
  %65 = icmp eq i64 %index.next2192, %n.vec2178
  br i1 %65, label %middle.block2173, label %vector.body2181, !llvm.loop !22

middle.block2173:                                 ; preds = %vector.body2181
  %cmp.n2193 = icmp eq i64 %n.vec2178, %52
  br i1 %cmp.n2193, label %._crit_edge1766, label %scalar.ph2174.preheader

scalar.ph2174.preheader:                          ; preds = %middle.block2173, %vector.memcheck2149, %.lr.ph1765
  %indvars.iv1917.ph = phi i64 [ 1, %vector.memcheck2149 ], [ 1, %.lr.ph1765 ], [ %ind.end2179, %middle.block2173 ]
  %66 = zext nneg i32 %48 to i64
  %67 = and i32 %48, 1
  %lcmp.mod2360.not = icmp eq i32 %67, 0
  br i1 %lcmp.mod2360.not, label %scalar.ph2174.prol.loopexit, label %scalar.ph2174.prol

scalar.ph2174.prol:                               ; preds = %scalar.ph2174.preheader
  %68 = getelementptr inbounds double, ptr %20, i64 %indvars.iv1917.ph
  %69 = load double, ptr %68, align 8, !tbaa !9
  %70 = load double, ptr %50, align 8, !tbaa !9
  %71 = fadd double %69, %70
  %72 = fadd double %47, %71
  %73 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1917.ph
  store double %72, ptr %73, align 8, !tbaa !9
  %74 = load double, ptr %68, align 8, !tbaa !9
  %75 = load double, ptr %50, align 8, !tbaa !9
  %76 = fsub double %74, %75
  %77 = fsub double %76, %47
  %78 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1917.ph
  store double %77, ptr %78, align 8, !tbaa !9
  %indvars.iv.next1918.prol = add nuw nsw i64 %indvars.iv1917.ph, 1
  br label %scalar.ph2174.prol.loopexit

scalar.ph2174.prol.loopexit:                      ; preds = %scalar.ph2174.prol, %scalar.ph2174.preheader
  %indvars.iv1917.unr = phi i64 [ %indvars.iv1917.ph, %scalar.ph2174.preheader ], [ %indvars.iv.next1918.prol, %scalar.ph2174.prol ]
  %79 = icmp eq i64 %indvars.iv1917.ph, %66
  br i1 %79, label %._crit_edge1766, label %scalar.ph2174

scalar.ph2174:                                    ; preds = %scalar.ph2174.prol.loopexit, %scalar.ph2174
  %indvars.iv1917 = phi i64 [ %indvars.iv.next1918.1, %scalar.ph2174 ], [ %indvars.iv1917.unr, %scalar.ph2174.prol.loopexit ]
  %80 = getelementptr inbounds double, ptr %20, i64 %indvars.iv1917
  %81 = load double, ptr %80, align 8, !tbaa !9
  %82 = load double, ptr %50, align 8, !tbaa !9
  %83 = fadd double %81, %82
  %84 = fadd double %47, %83
  %85 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1917
  store double %84, ptr %85, align 8, !tbaa !9
  %86 = load double, ptr %80, align 8, !tbaa !9
  %87 = load double, ptr %50, align 8, !tbaa !9
  %88 = fsub double %86, %87
  %89 = fsub double %88, %47
  %90 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1917
  store double %89, ptr %90, align 8, !tbaa !9
  %91 = getelementptr double, ptr %2, i64 %indvars.iv1917
  %92 = load double, ptr %91, align 8, !tbaa !9
  %93 = load double, ptr %50, align 8, !tbaa !9
  %94 = fadd double %92, %93
  %95 = fadd double %47, %94
  %96 = getelementptr double, ptr %7, i64 %indvars.iv1917
  store double %95, ptr %96, align 8, !tbaa !9
  %97 = load double, ptr %91, align 8, !tbaa !9
  %98 = load double, ptr %50, align 8, !tbaa !9
  %99 = fsub double %97, %98
  %100 = fsub double %99, %47
  %101 = getelementptr double, ptr %4, i64 %indvars.iv1917
  store double %100, ptr %101, align 8, !tbaa !9
  %indvars.iv.next1918.1 = add nuw nsw i64 %indvars.iv1917, 2
  %exitcond1921.not.1 = icmp eq i64 %indvars.iv.next1918.1, %wide.trip.count1920
  br i1 %exitcond1921.not.1, label %._crit_edge1766, label %scalar.ph2174, !llvm.loop !26

._crit_edge1766:                                  ; preds = %scalar.ph2174.prol.loopexit, %scalar.ph2174, %middle.block2173
  %.not16361767 = icmp slt i32 %48, 3
  br i1 %.not16361767, label %._crit_edge1772, label %.lr.ph1771.preheader

.lr.ph1771.preheader:                             ; preds = %._crit_edge1766
  %102 = zext nneg i32 %48 to i64
  %xtraiter2361 = and i64 %102, 1
  %103 = icmp eq i32 %48, 3
  br i1 %103, label %._crit_edge1772.loopexit.unr-lcssa, label %.lr.ph1771.preheader.new

.lr.ph1771.preheader.new:                         ; preds = %.lr.ph1771.preheader
  %104 = and i64 %102, 2147483646
  %105 = add nsw i64 %104, -4
  br label %.lr.ph1771

.lr.ph1771:                                       ; preds = %.lr.ph1771, %.lr.ph1771.preheader.new
  %indvars.iv1922 = phi i64 [ 1, %.lr.ph1771.preheader.new ], [ %indvars.iv.next1923.1, %.lr.ph1771 ]
  %.014751769 = phi double [ 0.000000e+00, %.lr.ph1771.preheader.new ], [ %125, %.lr.ph1771 ]
  %niter2365 = phi i64 [ 0, %.lr.ph1771.preheader.new ], [ %niter2365.next.1, %.lr.ph1771 ]
  %106 = getelementptr inbounds double, ptr %19, i64 %indvars.iv1922
  %107 = load double, ptr %106, align 8, !tbaa !9
  %108 = fmul double %107, %107
  %109 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1922
  %110 = load double, ptr %109, align 8, !tbaa !9
  %111 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1922
  %112 = load double, ptr %111, align 8, !tbaa !9
  %113 = fmul double %110, %112
  %114 = fdiv double %108, %113
  %115 = fadd double %.014751769, %114
  %116 = getelementptr double, ptr %3, i64 %indvars.iv1922
  %117 = load double, ptr %116, align 8, !tbaa !9
  %118 = fmul double %117, %117
  %119 = getelementptr double, ptr %4, i64 %indvars.iv1922
  %120 = load double, ptr %119, align 8, !tbaa !9
  %121 = getelementptr double, ptr %7, i64 %indvars.iv1922
  %122 = load double, ptr %121, align 8, !tbaa !9
  %123 = fmul double %120, %122
  %124 = fdiv double %118, %123
  %125 = fadd double %115, %124
  %indvars.iv.next1923.1 = add nuw nsw i64 %indvars.iv1922, 2
  %niter2365.next.1 = add i64 %niter2365, 2
  %niter2365.ncmp.1 = icmp eq i64 %niter2365, %105
  br i1 %niter2365.ncmp.1, label %._crit_edge1772.loopexit.unr-lcssa, label %.lr.ph1771, !llvm.loop !27

._crit_edge1772.loopexit.unr-lcssa:               ; preds = %.lr.ph1771, %.lr.ph1771.preheader
  %.lcssa2302.ph = phi double [ poison, %.lr.ph1771.preheader ], [ %125, %.lr.ph1771 ]
  %indvars.iv1922.unr = phi i64 [ 1, %.lr.ph1771.preheader ], [ %indvars.iv.next1923.1, %.lr.ph1771 ]
  %.014751769.unr = phi double [ 0.000000e+00, %.lr.ph1771.preheader ], [ %125, %.lr.ph1771 ]
  %lcmp.mod2362.not = icmp eq i64 %xtraiter2361, 0
  br i1 %lcmp.mod2362.not, label %._crit_edge1772, label %.lr.ph1771.epil

.lr.ph1771.epil:                                  ; preds = %._crit_edge1772.loopexit.unr-lcssa
  %126 = getelementptr inbounds double, ptr %19, i64 %indvars.iv1922.unr
  %127 = load double, ptr %126, align 8, !tbaa !9
  %128 = fmul double %127, %127
  %129 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1922.unr
  %130 = load double, ptr %129, align 8, !tbaa !9
  %131 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1922.unr
  %132 = load double, ptr %131, align 8, !tbaa !9
  %133 = fmul double %130, %132
  %134 = fdiv double %128, %133
  %135 = fadd double %.014751769.unr, %134
  br label %._crit_edge1772

._crit_edge1772:                                  ; preds = %.lr.ph1771.epil, %._crit_edge1772.loopexit.unr-lcssa, %38, %._crit_edge1766
  %.01475.lcssa = phi double [ 0.000000e+00, %._crit_edge1766 ], [ 0.000000e+00, %38 ], [ %.lcssa2302.ph, %._crit_edge1772.loopexit.unr-lcssa ], [ %135, %.lr.ph1771.epil ]
  %136 = fadd double %34, %.01475.lcssa
  %137 = sext i32 %39 to i64
  %138 = getelementptr inbounds double, ptr %19, i64 %137
  %139 = load double, ptr %138, align 8, !tbaa !9
  %140 = getelementptr inbounds double, ptr %18, i64 %137
  %141 = load double, ptr %140, align 8, !tbaa !9
  %142 = getelementptr inbounds double, ptr %17, i64 %137
  %143 = load double, ptr %142, align 8, !tbaa !9
  %144 = sext i32 %48 to i64
  %145 = getelementptr inbounds double, ptr %19, i64 %144
  %146 = load double, ptr %145, align 8, !tbaa !9
  %147 = getelementptr inbounds double, ptr %18, i64 %144
  %148 = load double, ptr %147, align 8, !tbaa !9
  %149 = getelementptr inbounds double, ptr %17, i64 %144
  %150 = load double, ptr %149, align 8, !tbaa !9
  %151 = insertelement <2 x double> poison, double %139, i64 0
  %152 = insertelement <2 x double> %151, double %146, i64 1
  %153 = fmul <2 x double> %152, %152
  %154 = insertelement <2 x double> poison, double %141, i64 0
  %155 = insertelement <2 x double> %154, double %148, i64 1
  %156 = insertelement <2 x double> poison, double %143, i64 0
  %157 = insertelement <2 x double> %156, double %150, i64 1
  %158 = fmul <2 x double> %155, %157
  %159 = fdiv <2 x double> %153, %158
  %160 = extractelement <2 x double> %159, i64 0
  %161 = fadd double %136, %160
  %162 = extractelement <2 x double> %159, i64 1
  %163 = fadd double %161, %162
  %164 = fcmp ugt double %163, 0.000000e+00
  %165 = getelementptr inbounds double, ptr %20, i64 %144
  %166 = load double, ptr %165, align 8, !tbaa !9
  br i1 %164, label %222, label %167

167:                                              ; preds = %._crit_edge1772
  %168 = load double, ptr %5, align 8, !tbaa !9
  %169 = tail call double @llvm.fmuladd.f64(double %166, double %166, double %168)
  %170 = tail call double @sqrt(double noundef %169) #6
  %171 = load i32, ptr %0, align 4, !tbaa !5
  %172 = add nsw i32 %171, -1
  %173 = sext i32 %172 to i64
  %174 = getelementptr inbounds double, ptr %19, i64 %173
  %175 = getelementptr inbounds double, ptr %20, i64 %173
  %176 = load double, ptr %175, align 8, !tbaa !9
  %177 = fadd double %170, %176
  %178 = sext i32 %171 to i64
  %179 = getelementptr inbounds double, ptr %20, i64 %178
  %180 = load double, ptr %179, align 8, !tbaa !9
  %181 = fsub double %180, %176
  %182 = load double, ptr %5, align 8, !tbaa !9
  %183 = fadd double %170, %180
  %184 = fdiv double %182, %183
  %185 = fadd double %181, %184
  %186 = fmul double %177, %185
  %187 = load <2 x double>, ptr %174, align 8, !tbaa !9
  %188 = fmul <2 x double> %187, %187
  %189 = insertelement <2 x double> poison, double %186, i64 0
  %190 = insertelement <2 x double> %189, double %182, i64 1
  %191 = fdiv <2 x double> %188, %190
  %shift = shufflevector <2 x double> %191, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %192 = fadd <2 x double> %shift, %191
  %193 = extractelement <2 x double> %192, i64 0
  %194 = fcmp ugt double %136, %193
  br i1 %194, label %195, label %263

195:                                              ; preds = %167
  %196 = fadd double %176, %180
  %197 = fmul double %181, %196
  %198 = fneg double %136
  %199 = extractelement <2 x double> %188, i64 0
  %200 = tail call double @llvm.fmuladd.f64(double %198, double %197, double %199)
  %201 = extractelement <2 x double> %187, i64 1
  %202 = tail call double @llvm.fmuladd.f64(double %201, double %201, double %200)
  %203 = extractelement <2 x double> %188, i64 1
  %204 = fmul double %197, %203
  %205 = fcmp olt double %202, 0.000000e+00
  br i1 %205, label %206, label %214

206:                                              ; preds = %195
  %207 = fmul double %204, 2.000000e+00
  %208 = fmul double %204, 4.000000e+00
  %209 = fmul double %136, %208
  %210 = tail call double @llvm.fmuladd.f64(double %202, double %202, double %209)
  %211 = tail call double @sqrt(double noundef %210) #6
  %212 = fsub double %211, %202
  %213 = fdiv double %207, %212
  br label %.sink.split

214:                                              ; preds = %195
  %215 = fmul double %204, 4.000000e+00
  %216 = fmul double %136, %215
  %217 = tail call double @llvm.fmuladd.f64(double %202, double %202, double %216)
  %218 = tail call double @sqrt(double noundef %217) #6
  %219 = fadd double %202, %218
  %220 = fmul double %136, 2.000000e+00
  %221 = fdiv double %219, %220
  br label %.sink.split

222:                                              ; preds = %._crit_edge1772
  %223 = add nsw i32 %48, -1
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds double, ptr %20, i64 %224
  %226 = load double, ptr %225, align 8, !tbaa !9
  %227 = fsub double %166, %226
  %228 = fadd double %166, %226
  %229 = fmul double %227, %228
  %230 = fneg double %136
  %231 = getelementptr inbounds double, ptr %19, i64 %224
  %232 = load double, ptr %231, align 8, !tbaa !9
  %233 = fmul double %232, %232
  %234 = tail call double @llvm.fmuladd.f64(double %230, double %229, double %233)
  %235 = tail call double @llvm.fmuladd.f64(double %146, double %146, double %234)
  %236 = extractelement <2 x double> %153, i64 1
  %237 = fmul double %236, %229
  %238 = fcmp olt double %235, 0.000000e+00
  br i1 %238, label %239, label %247

239:                                              ; preds = %222
  %240 = fmul double %237, 2.000000e+00
  %241 = fmul double %237, 4.000000e+00
  %242 = fmul double %136, %241
  %243 = tail call double @llvm.fmuladd.f64(double %235, double %235, double %242)
  %244 = tail call double @sqrt(double noundef %243) #6
  %245 = fsub double %244, %235
  %246 = fdiv double %240, %245
  br label %.sink.split

247:                                              ; preds = %222
  %248 = fmul double %237, 4.000000e+00
  %249 = fmul double %136, %248
  %250 = tail call double @llvm.fmuladd.f64(double %235, double %235, double %249)
  %251 = tail call double @sqrt(double noundef %250) #6
  %252 = fadd double %235, %251
  %253 = fmul double %136, 2.000000e+00
  %254 = fdiv double %252, %253
  br label %.sink.split

.sink.split:                                      ; preds = %239, %247, %206, %214
  %.0.sink1995 = phi double [ %213, %206 ], [ %221, %214 ], [ %246, %239 ], [ %254, %247 ]
  %255 = load i32, ptr %0, align 4, !tbaa !5
  %256 = sext i32 %255 to i64
  %257 = getelementptr inbounds double, ptr %20, i64 %256
  %258 = load double, ptr %257, align 8, !tbaa !9
  %259 = tail call double @llvm.fmuladd.f64(double %258, double %258, double %.0.sink1995)
  %260 = tail call double @sqrt(double noundef %259) #6
  %261 = fadd double %258, %260
  %262 = fdiv double %.0.sink1995, %261
  br label %263

263:                                              ; preds = %.sink.split, %167
  %.01479 = phi double [ %182, %167 ], [ %262, %.sink.split ]
  %264 = load i32, ptr %0, align 4, !tbaa !5
  %265 = sext i32 %264 to i64
  %266 = getelementptr inbounds double, ptr %20, i64 %265
  %267 = load double, ptr %266, align 8, !tbaa !9
  %268 = fadd double %.01479, %267
  store double %268, ptr %6, align 8, !tbaa !9
  %.not16371774 = icmp slt i32 %264, 1
  br i1 %.not16371774, label %.preheader1651, label %.lr.ph1777.preheader

.lr.ph1777.preheader:                             ; preds = %263
  %269 = add nuw i32 %264, 1
  %wide.trip.count1930 = zext i32 %269 to i64
  %270 = zext nneg i32 %264 to i64
  %min.iters.check2220 = icmp ult i32 %264, 14
  br i1 %min.iters.check2220, label %.lr.ph1777.preheader2301, label %vector.memcheck2194

.lr.ph1777.preheader2301:                         ; preds = %middle.block2218, %vector.memcheck2194, %.lr.ph1777.preheader
  %indvars.iv1927.ph = phi i64 [ 1, %vector.memcheck2194 ], [ 1, %.lr.ph1777.preheader ], [ %ind.end2224, %middle.block2218 ]
  %271 = zext nneg i32 %264 to i64
  %272 = and i32 %264, 1
  %lcmp.mod2367.not = icmp eq i32 %272, 0
  br i1 %lcmp.mod2367.not, label %.lr.ph1777.prol.loopexit, label %.lr.ph1777.prol

.lr.ph1777.prol:                                  ; preds = %.lr.ph1777.preheader2301
  %273 = getelementptr inbounds double, ptr %20, i64 %indvars.iv1927.ph
  %274 = load double, ptr %273, align 8, !tbaa !9
  %275 = load double, ptr %266, align 8, !tbaa !9
  %276 = fsub double %274, %275
  %277 = fsub double %276, %.01479
  %278 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1927.ph
  store double %277, ptr %278, align 8, !tbaa !9
  %279 = load double, ptr %273, align 8, !tbaa !9
  %280 = load double, ptr %266, align 8, !tbaa !9
  %281 = fadd double %279, %280
  %282 = fadd double %.01479, %281
  %283 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1927.ph
  store double %282, ptr %283, align 8, !tbaa !9
  %indvars.iv.next1928.prol = add nuw nsw i64 %indvars.iv1927.ph, 1
  br label %.lr.ph1777.prol.loopexit

.lr.ph1777.prol.loopexit:                         ; preds = %.lr.ph1777.prol, %.lr.ph1777.preheader2301
  %indvars.iv1927.unr = phi i64 [ %indvars.iv1927.ph, %.lr.ph1777.preheader2301 ], [ %indvars.iv.next1928.prol, %.lr.ph1777.prol ]
  %284 = icmp eq i64 %indvars.iv1927.ph, %271
  br i1 %284, label %.preheader1651, label %.lr.ph1777

vector.memcheck2194:                              ; preds = %.lr.ph1777.preheader
  %285 = shl nuw nsw i64 %wide.trip.count1930, 3
  %286 = add nsw i64 %285, -8
  %scevgep2195 = getelementptr i8, ptr %4, i64 %286
  %scevgep2196 = getelementptr i8, ptr %7, i64 %286
  %287 = shl nuw nsw i64 %265, 3
  %scevgep2197 = getelementptr i8, ptr %2, i64 %287
  %scevgep2198 = getelementptr i8, ptr %2, i64 %286
  %bound02199 = icmp ugt ptr %scevgep2196, %4
  %bound12200 = icmp ugt ptr %scevgep2195, %7
  %found.conflict2201 = and i1 %bound02199, %bound12200
  %bound02202 = icmp ugt ptr %scevgep2197, %4
  %bound12203 = icmp ult ptr %266, %scevgep2195
  %found.conflict2204 = and i1 %bound02202, %bound12203
  %conflict.rdx2205 = or i1 %found.conflict2201, %found.conflict2204
  %bound02206 = icmp ugt ptr %scevgep2198, %4
  %bound12207 = icmp ugt ptr %scevgep2195, %2
  %found.conflict2208 = and i1 %bound02206, %bound12207
  %conflict.rdx2209 = or i1 %conflict.rdx2205, %found.conflict2208
  %bound02210 = icmp ugt ptr %scevgep2197, %7
  %bound12211 = icmp ult ptr %266, %scevgep2196
  %found.conflict2212 = and i1 %bound02210, %bound12211
  %conflict.rdx2213 = or i1 %conflict.rdx2209, %found.conflict2212
  %bound02214 = icmp ugt ptr %scevgep2198, %7
  %bound12215 = icmp ugt ptr %scevgep2196, %2
  %found.conflict2216 = and i1 %bound02214, %bound12215
  %conflict.rdx2217 = or i1 %conflict.rdx2213, %found.conflict2216
  br i1 %conflict.rdx2217, label %.lr.ph1777.preheader2301, label %vector.ph2221

vector.ph2221:                                    ; preds = %vector.memcheck2194
  %n.vec2223 = and i64 %270, 2147483646
  %ind.end2224 = or i64 %270, 1
  %broadcast.splatinsert2232 = insertelement <2 x double> poison, double %.01479, i64 0
  %broadcast.splat2233 = shufflevector <2 x double> %broadcast.splatinsert2232, <2 x double> poison, <2 x i32> zeroinitializer
  %288 = load double, ptr %266, align 8, !tbaa !9, !alias.scope !28
  %broadcast.splatinsert2230 = insertelement <2 x double> poison, double %288, i64 0
  %broadcast.splat2231 = shufflevector <2 x double> %broadcast.splatinsert2230, <2 x double> poison, <2 x i32> zeroinitializer
  %289 = load double, ptr %266, align 8, !tbaa !9, !alias.scope !28
  %broadcast.splatinsert2235 = insertelement <2 x double> poison, double %289, i64 0
  %broadcast.splat2236 = shufflevector <2 x double> %broadcast.splatinsert2235, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body2226

vector.body2226:                                  ; preds = %vector.body2226, %vector.ph2221
  %index2227 = phi i64 [ 0, %vector.ph2221 ], [ %index.next2237, %vector.body2226 ]
  %290 = getelementptr double, ptr %2, i64 %index2227
  %wide.load2229 = load <2 x double>, ptr %290, align 8, !tbaa !9, !alias.scope !31
  %291 = fsub <2 x double> %wide.load2229, %broadcast.splat2231
  %292 = fsub <2 x double> %291, %broadcast.splat2233
  %293 = getelementptr double, ptr %4, i64 %index2227
  store <2 x double> %292, ptr %293, align 8, !tbaa !9, !alias.scope !33, !noalias !35
  %wide.load2234 = load <2 x double>, ptr %290, align 8, !tbaa !9, !alias.scope !31
  %294 = fadd <2 x double> %wide.load2234, %broadcast.splat2236
  %295 = fadd <2 x double> %broadcast.splat2233, %294
  %296 = getelementptr double, ptr %7, i64 %index2227
  store <2 x double> %295, ptr %296, align 8, !tbaa !9, !alias.scope !37, !noalias !38
  %index.next2237 = add nuw i64 %index2227, 2
  %297 = icmp eq i64 %index.next2237, %n.vec2223
  br i1 %297, label %middle.block2218, label %vector.body2226, !llvm.loop !39

middle.block2218:                                 ; preds = %vector.body2226
  %cmp.n2238 = icmp eq i64 %n.vec2223, %270
  br i1 %cmp.n2238, label %.preheader1651, label %.lr.ph1777.preheader2301

.preheader1651:                                   ; preds = %.lr.ph1777.prol.loopexit, %.lr.ph1777, %middle.block2218, %263
  %.not1638.not1778 = icmp sgt i32 %35, 1
  br i1 %.not1638.not1778, label %.lr.ph1783.preheader, label %._crit_edge1784

.lr.ph1783.preheader:                             ; preds = %.preheader1651
  %wide.trip.count1935 = zext nneg i32 %35 to i64
  %298 = add nsw i64 %wide.trip.count1935, -1
  %xtraiter2368 = and i64 %298, 1
  %299 = icmp eq i32 %35, 2
  br i1 %299, label %._crit_edge1784.loopexit.unr-lcssa, label %.lr.ph1783.preheader.new

.lr.ph1783.preheader.new:                         ; preds = %.lr.ph1783.preheader
  %unroll_iter2374 = and i64 %298, -2
  br label %.lr.ph1783

.lr.ph1777:                                       ; preds = %.lr.ph1777.prol.loopexit, %.lr.ph1777
  %indvars.iv1927 = phi i64 [ %indvars.iv.next1928.1, %.lr.ph1777 ], [ %indvars.iv1927.unr, %.lr.ph1777.prol.loopexit ]
  %300 = getelementptr inbounds double, ptr %20, i64 %indvars.iv1927
  %301 = load double, ptr %300, align 8, !tbaa !9
  %302 = load double, ptr %266, align 8, !tbaa !9
  %303 = fsub double %301, %302
  %304 = fsub double %303, %.01479
  %305 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1927
  store double %304, ptr %305, align 8, !tbaa !9
  %306 = load double, ptr %300, align 8, !tbaa !9
  %307 = load double, ptr %266, align 8, !tbaa !9
  %308 = fadd double %306, %307
  %309 = fadd double %.01479, %308
  %310 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1927
  store double %309, ptr %310, align 8, !tbaa !9
  %311 = getelementptr double, ptr %2, i64 %indvars.iv1927
  %312 = load double, ptr %311, align 8, !tbaa !9
  %313 = load double, ptr %266, align 8, !tbaa !9
  %314 = fsub double %312, %313
  %315 = fsub double %314, %.01479
  %316 = getelementptr double, ptr %4, i64 %indvars.iv1927
  store double %315, ptr %316, align 8, !tbaa !9
  %317 = load double, ptr %311, align 8, !tbaa !9
  %318 = load double, ptr %266, align 8, !tbaa !9
  %319 = fadd double %317, %318
  %320 = fadd double %.01479, %319
  %321 = getelementptr double, ptr %7, i64 %indvars.iv1927
  store double %320, ptr %321, align 8, !tbaa !9
  %indvars.iv.next1928.1 = add nuw nsw i64 %indvars.iv1927, 2
  %exitcond1931.not.1 = icmp eq i64 %indvars.iv.next1928.1, %wide.trip.count1930
  br i1 %exitcond1931.not.1, label %.preheader1651, label %.lr.ph1777, !llvm.loop !40

.lr.ph1783:                                       ; preds = %.lr.ph1783, %.lr.ph1783.preheader.new
  %indvars.iv1932 = phi i64 [ 1, %.lr.ph1783.preheader.new ], [ %indvars.iv.next1933.1, %.lr.ph1783 ]
  %.014881781 = phi double [ 0.000000e+00, %.lr.ph1783.preheader.new ], [ %350, %.lr.ph1783 ]
  %322 = phi <2 x double> [ zeroinitializer, %.lr.ph1783.preheader.new ], [ %348, %.lr.ph1783 ]
  %niter2375 = phi i64 [ 0, %.lr.ph1783.preheader.new ], [ %niter2375.next.1, %.lr.ph1783 ]
  %323 = getelementptr inbounds double, ptr %19, i64 %indvars.iv1932
  %324 = load double, ptr %323, align 8, !tbaa !9
  %325 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1932
  %326 = load double, ptr %325, align 8, !tbaa !9
  %327 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1932
  %328 = load double, ptr %327, align 8, !tbaa !9
  %329 = fmul double %326, %328
  %330 = fdiv double %324, %329
  %331 = insertelement <2 x double> poison, double %324, i64 0
  %332 = insertelement <2 x double> %331, double %330, i64 1
  %333 = shufflevector <2 x double> %332, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %334 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %332, <2 x double> %333, <2 x double> %322)
  %335 = extractelement <2 x double> %334, i64 0
  %336 = fadd double %.014881781, %335
  %337 = getelementptr double, ptr %3, i64 %indvars.iv1932
  %338 = load double, ptr %337, align 8, !tbaa !9
  %339 = getelementptr double, ptr %4, i64 %indvars.iv1932
  %340 = load double, ptr %339, align 8, !tbaa !9
  %341 = getelementptr double, ptr %7, i64 %indvars.iv1932
  %342 = load double, ptr %341, align 8, !tbaa !9
  %343 = fmul double %340, %342
  %344 = fdiv double %338, %343
  %345 = insertelement <2 x double> poison, double %338, i64 0
  %346 = insertelement <2 x double> %345, double %344, i64 1
  %347 = shufflevector <2 x double> %346, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %348 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %346, <2 x double> %347, <2 x double> %334)
  %349 = extractelement <2 x double> %348, i64 0
  %350 = fadd double %336, %349
  %indvars.iv.next1933.1 = add nuw nsw i64 %indvars.iv1932, 2
  %niter2375.next.1 = add i64 %niter2375, 2
  %niter2375.ncmp.1 = icmp eq i64 %niter2375.next.1, %unroll_iter2374
  br i1 %niter2375.ncmp.1, label %._crit_edge1784.loopexit.unr-lcssa.loopexit, label %.lr.ph1783, !llvm.loop !41

._crit_edge1784.loopexit.unr-lcssa.loopexit:      ; preds = %.lr.ph1783
  %351 = extractelement <2 x double> %348, i64 1
  br label %._crit_edge1784.loopexit.unr-lcssa

._crit_edge1784.loopexit.unr-lcssa:               ; preds = %._crit_edge1784.loopexit.unr-lcssa.loopexit, %.lr.ph1783.preheader
  %.lcssa2300.ph = phi double [ poison, %.lr.ph1783.preheader ], [ %349, %._crit_edge1784.loopexit.unr-lcssa.loopexit ]
  %.lcssa2299.ph = phi double [ poison, %.lr.ph1783.preheader ], [ %350, %._crit_edge1784.loopexit.unr-lcssa.loopexit ]
  %.lcssa2298.ph = phi double [ poison, %.lr.ph1783.preheader ], [ %351, %._crit_edge1784.loopexit.unr-lcssa.loopexit ]
  %indvars.iv1932.unr = phi i64 [ 1, %.lr.ph1783.preheader ], [ %indvars.iv.next1933.1, %._crit_edge1784.loopexit.unr-lcssa.loopexit ]
  %.014881781.unr = phi double [ 0.000000e+00, %.lr.ph1783.preheader ], [ %350, %._crit_edge1784.loopexit.unr-lcssa.loopexit ]
  %.unr2369 = phi <2 x double> [ zeroinitializer, %.lr.ph1783.preheader ], [ %348, %._crit_edge1784.loopexit.unr-lcssa.loopexit ]
  %lcmp.mod2370.not = icmp eq i64 %xtraiter2368, 0
  br i1 %lcmp.mod2370.not, label %._crit_edge1784, label %.lr.ph1783.epil

.lr.ph1783.epil:                                  ; preds = %._crit_edge1784.loopexit.unr-lcssa
  %352 = getelementptr inbounds double, ptr %19, i64 %indvars.iv1932.unr
  %353 = load double, ptr %352, align 8, !tbaa !9
  %354 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1932.unr
  %355 = load double, ptr %354, align 8, !tbaa !9
  %356 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1932.unr
  %357 = load double, ptr %356, align 8, !tbaa !9
  %358 = fmul double %355, %357
  %359 = fdiv double %353, %358
  %360 = insertelement <2 x double> poison, double %353, i64 0
  %361 = insertelement <2 x double> %360, double %359, i64 1
  %362 = shufflevector <2 x double> %361, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %363 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %361, <2 x double> %362, <2 x double> %.unr2369)
  %364 = extractelement <2 x double> %363, i64 0
  %365 = fadd double %.014881781.unr, %364
  %366 = extractelement <2 x double> %363, i64 1
  br label %._crit_edge1784

._crit_edge1784:                                  ; preds = %.lr.ph1783.epil, %._crit_edge1784.loopexit.unr-lcssa, %.preheader1651
  %.01535.lcssa = phi double [ 0.000000e+00, %.preheader1651 ], [ %.lcssa2298.ph, %._crit_edge1784.loopexit.unr-lcssa ], [ %366, %.lr.ph1783.epil ]
  %.01488.lcssa = phi double [ 0.000000e+00, %.preheader1651 ], [ %.lcssa2299.ph, %._crit_edge1784.loopexit.unr-lcssa ], [ %365, %.lr.ph1783.epil ]
  %.11476.lcssa = phi double [ 0.000000e+00, %.preheader1651 ], [ %.lcssa2300.ph, %._crit_edge1784.loopexit.unr-lcssa ], [ %364, %.lr.ph1783.epil ]
  %367 = fcmp oge double %.01488.lcssa, 0.000000e+00
  %368 = fneg double %.01488.lcssa
  %369 = select i1 %367, double %.01488.lcssa, double %368
  %370 = getelementptr inbounds double, ptr %19, i64 %265
  %371 = load double, ptr %370, align 8, !tbaa !9
  %372 = getelementptr inbounds double, ptr %18, i64 %265
  %373 = load double, ptr %372, align 8, !tbaa !9
  %374 = getelementptr inbounds double, ptr %17, i64 %265
  %375 = load double, ptr %374, align 8, !tbaa !9
  %376 = fmul double %373, %375
  %377 = fdiv double %371, %376
  %378 = fmul double %371, %377
  %379 = fneg double %378
  %380 = fsub double %379, %.11476.lcssa
  %381 = tail call double @llvm.fmuladd.f64(double %380, double 8.000000e+00, double %369)
  %382 = fsub double %381, %378
  %383 = fadd double %34, %382
  %384 = fadd double %34, %378
  %385 = fadd double %.11476.lcssa, %384
  %386 = fcmp oge double %385, 0.000000e+00
  %387 = fneg double %385
  %388 = select i1 %386, double %385, double %387
  %389 = fmul double %32, %383
  %390 = fcmp ugt double %388, %389
  br i1 %390, label %thread-pre-split, label %.loopexit1653

thread-pre-split:                                 ; preds = %._crit_edge1784
  %391 = fmul double %377, %377
  %392 = add nsw i32 %264, -1
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds double, ptr %17, i64 %393
  %395 = load double, ptr %394, align 8, !tbaa !9
  %396 = getelementptr inbounds double, ptr %18, i64 %393
  %397 = load double, ptr %396, align 8, !tbaa !9
  %398 = fmul double %395, %397
  %399 = fneg double %398
  %400 = tail call double @llvm.fmuladd.f64(double %399, double %.01535.lcssa, double %385)
  %401 = fneg double %376
  %402 = tail call double @llvm.fmuladd.f64(double %401, double %391, double %400)
  %403 = fadd double %376, %398
  %404 = fmul double %376, %398
  %405 = fadd double %.01535.lcssa, %391
  %406 = fneg double %404
  %407 = fmul double %405, %406
  %408 = tail call double @llvm.fmuladd.f64(double %403, double %385, double %407)
  %409 = fmul double %385, %404
  %410 = fcmp olt double %402, 0.000000e+00
  %411 = fneg double %402
  %412 = select i1 %410, double %411, double %402
  %413 = fcmp oeq double %402, 0.000000e+00
  br i1 %413, label %414, label %419

414:                                              ; preds = %thread-pre-split
  %415 = load double, ptr %5, align 8, !tbaa !9
  %416 = load double, ptr %6, align 8, !tbaa !9
  %417 = fneg double %416
  %418 = tail call double @llvm.fmuladd.f64(double %417, double %416, double %415)
  br label %443

419:                                              ; preds = %thread-pre-split
  %420 = fcmp ult double %408, 0.000000e+00
  br i1 %420, label %432, label %421

421:                                              ; preds = %419
  %422 = fmul double %409, -4.000000e+00
  %423 = fmul double %422, %412
  %424 = tail call double @llvm.fmuladd.f64(double %408, double %408, double %423)
  %425 = fcmp oge double %424, 0.000000e+00
  %426 = fneg double %424
  %427 = select i1 %425, double %424, double %426
  %428 = tail call double @sqrt(double noundef %427) #6
  %429 = fadd double %408, %428
  %430 = fmul double %412, 2.000000e+00
  %431 = fdiv double %429, %430
  br label %443

432:                                              ; preds = %419
  %433 = fmul double %409, 2.000000e+00
  %434 = fmul double %409, -4.000000e+00
  %435 = fmul double %434, %412
  %436 = tail call double @llvm.fmuladd.f64(double %408, double %408, double %435)
  %437 = fcmp oge double %436, 0.000000e+00
  %438 = fneg double %436
  %439 = select i1 %437, double %436, double %438
  %440 = tail call double @sqrt(double noundef %439) #6
  %441 = fsub double %408, %440
  %442 = fdiv double %433, %441
  br label %443

443:                                              ; preds = %421, %432, %414
  %444 = phi double [ %431, %421 ], [ %442, %432 ], [ %418, %414 ]
  %445 = fmul double %385, %444
  %446 = fcmp ogt double %445, 0.000000e+00
  %447 = fdiv double %387, %405
  %448 = select i1 %446, double %447, double %444
  %449 = fsub double %448, %376
  %450 = load double, ptr %5, align 8, !tbaa !9
  %451 = fcmp ogt double %449, %450
  %452 = fadd double %376, %450
  %453 = select i1 %451, double %452, double %448
  %454 = load double, ptr %6, align 8, !tbaa !9
  %455 = tail call double @llvm.fmuladd.f64(double %454, double %454, double %453)
  %456 = tail call double @sqrt(double noundef %455) #6
  %457 = fadd double %454, %456
  %458 = fdiv double %453, %457
  %459 = load double, ptr %6, align 8, !tbaa !9
  %460 = fadd double %458, %459
  store double %460, ptr %6, align 8, !tbaa !9
  %461 = load i32, ptr %0, align 4, !tbaa !5
  %.not16391788 = icmp slt i32 %461, 1
  br i1 %.not16391788, label %.preheader1650, label %.lr.ph1791.preheader

.lr.ph1791.preheader:                             ; preds = %443
  %462 = add nuw i32 %461, 1
  %wide.trip.count1940 = zext i32 %462 to i64
  %463 = zext nneg i32 %461 to i64
  %min.iters.check2247 = icmp ult i32 %461, 6
  br i1 %min.iters.check2247, label %.lr.ph1791.preheader2297, label %vector.memcheck2239

.lr.ph1791.preheader2297:                         ; preds = %middle.block2245, %vector.memcheck2239, %.lr.ph1791.preheader
  %indvars.iv1937.ph = phi i64 [ 1, %vector.memcheck2239 ], [ 1, %.lr.ph1791.preheader ], [ %ind.end2251, %middle.block2245 ]
  %464 = zext nneg i32 %461 to i64
  %465 = and i32 %461, 1
  %lcmp.mod2377.not = icmp eq i32 %465, 0
  br i1 %lcmp.mod2377.not, label %.lr.ph1791.prol.loopexit, label %.lr.ph1791.prol

.lr.ph1791.prol:                                  ; preds = %.lr.ph1791.preheader2297
  %466 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1937.ph
  %467 = load double, ptr %466, align 8, !tbaa !9
  %468 = fsub double %467, %458
  store double %468, ptr %466, align 8, !tbaa !9
  %469 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1937.ph
  %470 = load double, ptr %469, align 8, !tbaa !9
  %471 = fadd double %458, %470
  store double %471, ptr %469, align 8, !tbaa !9
  %indvars.iv.next1938.prol = add nuw nsw i64 %indvars.iv1937.ph, 1
  br label %.lr.ph1791.prol.loopexit

.lr.ph1791.prol.loopexit:                         ; preds = %.lr.ph1791.prol, %.lr.ph1791.preheader2297
  %indvars.iv1937.unr = phi i64 [ %indvars.iv1937.ph, %.lr.ph1791.preheader2297 ], [ %indvars.iv.next1938.prol, %.lr.ph1791.prol ]
  %472 = icmp eq i64 %indvars.iv1937.ph, %464
  br i1 %472, label %.preheader1650, label %.lr.ph1791

vector.memcheck2239:                              ; preds = %.lr.ph1791.preheader
  %473 = shl nuw nsw i64 %wide.trip.count1940, 3
  %474 = add nsw i64 %473, -8
  %scevgep2240 = getelementptr i8, ptr %4, i64 %474
  %scevgep2241 = getelementptr i8, ptr %7, i64 %474
  %bound02242 = icmp ugt ptr %scevgep2241, %4
  %bound12243 = icmp ugt ptr %scevgep2240, %7
  %found.conflict2244 = and i1 %bound02242, %bound12243
  br i1 %found.conflict2244, label %.lr.ph1791.preheader2297, label %vector.ph2248

vector.ph2248:                                    ; preds = %vector.memcheck2239
  %n.vec2250 = and i64 %463, 2147483644
  %ind.end2251 = or disjoint i64 %n.vec2250, 1
  %broadcast.splatinsert2258 = insertelement <2 x double> poison, double %458, i64 0
  %broadcast.splat2259 = shufflevector <2 x double> %broadcast.splatinsert2258, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body2253

vector.body2253:                                  ; preds = %vector.body2253, %vector.ph2248
  %index2254 = phi i64 [ 0, %vector.ph2248 ], [ %index.next2262, %vector.body2253 ]
  %475 = getelementptr double, ptr %4, i64 %index2254
  %476 = getelementptr inbounds i8, ptr %475, i64 16
  %wide.load2256 = load <2 x double>, ptr %475, align 8, !tbaa !9, !alias.scope !42, !noalias !45
  %wide.load2257 = load <2 x double>, ptr %476, align 8, !tbaa !9, !alias.scope !42, !noalias !45
  %477 = fsub <2 x double> %wide.load2256, %broadcast.splat2259
  %478 = fsub <2 x double> %wide.load2257, %broadcast.splat2259
  store <2 x double> %477, ptr %475, align 8, !tbaa !9, !alias.scope !42, !noalias !45
  store <2 x double> %478, ptr %476, align 8, !tbaa !9, !alias.scope !42, !noalias !45
  %479 = getelementptr double, ptr %7, i64 %index2254
  %480 = getelementptr inbounds i8, ptr %479, i64 16
  %wide.load2260 = load <2 x double>, ptr %479, align 8, !tbaa !9, !alias.scope !45
  %wide.load2261 = load <2 x double>, ptr %480, align 8, !tbaa !9, !alias.scope !45
  %481 = fadd <2 x double> %broadcast.splat2259, %wide.load2260
  %482 = fadd <2 x double> %broadcast.splat2259, %wide.load2261
  store <2 x double> %481, ptr %479, align 8, !tbaa !9, !alias.scope !45
  store <2 x double> %482, ptr %480, align 8, !tbaa !9, !alias.scope !45
  %index.next2262 = add nuw i64 %index2254, 4
  %483 = icmp eq i64 %index.next2262, %n.vec2250
  br i1 %483, label %middle.block2245, label %vector.body2253, !llvm.loop !47

middle.block2245:                                 ; preds = %vector.body2253
  %cmp.n2263 = icmp eq i64 %n.vec2250, %463
  br i1 %cmp.n2263, label %.preheader1650, label %.lr.ph1791.preheader2297

.preheader1650:                                   ; preds = %.lr.ph1791.prol.loopexit, %.lr.ph1791, %middle.block2245, %443
  br i1 %.not1638.not1778, label %.lr.ph1797.preheader, label %.lr.ph1830

.lr.ph1797.preheader:                             ; preds = %.preheader1650
  %wide.trip.count1945 = zext nneg i32 %35 to i64
  %484 = add nsw i64 %wide.trip.count1945, -1
  %xtraiter2378 = and i64 %484, 1
  %485 = icmp eq i32 %35, 2
  br i1 %485, label %.lr.ph1830.loopexit.unr-lcssa, label %.lr.ph1797.preheader.new

.lr.ph1797.preheader.new:                         ; preds = %.lr.ph1797.preheader
  %unroll_iter2384 = and i64 %484, -2
  br label %.lr.ph1797

.lr.ph1791:                                       ; preds = %.lr.ph1791.prol.loopexit, %.lr.ph1791
  %indvars.iv1937 = phi i64 [ %indvars.iv.next1938.1, %.lr.ph1791 ], [ %indvars.iv1937.unr, %.lr.ph1791.prol.loopexit ]
  %486 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1937
  %487 = load double, ptr %486, align 8, !tbaa !9
  %488 = fsub double %487, %458
  store double %488, ptr %486, align 8, !tbaa !9
  %489 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1937
  %490 = load double, ptr %489, align 8, !tbaa !9
  %491 = fadd double %458, %490
  store double %491, ptr %489, align 8, !tbaa !9
  %492 = getelementptr double, ptr %4, i64 %indvars.iv1937
  %493 = load double, ptr %492, align 8, !tbaa !9
  %494 = fsub double %493, %458
  store double %494, ptr %492, align 8, !tbaa !9
  %495 = getelementptr double, ptr %7, i64 %indvars.iv1937
  %496 = load double, ptr %495, align 8, !tbaa !9
  %497 = fadd double %458, %496
  store double %497, ptr %495, align 8, !tbaa !9
  %indvars.iv.next1938.1 = add nuw nsw i64 %indvars.iv1937, 2
  %exitcond1941.not.1 = icmp eq i64 %indvars.iv.next1938.1, %wide.trip.count1940
  br i1 %exitcond1941.not.1, label %.preheader1650, label %.lr.ph1791, !llvm.loop !48

.lr.ph1797:                                       ; preds = %.lr.ph1797, %.lr.ph1797.preheader.new
  %indvars.iv1942 = phi i64 [ 1, %.lr.ph1797.preheader.new ], [ %indvars.iv.next1943.1, %.lr.ph1797 ]
  %.114891795 = phi double [ 0.000000e+00, %.lr.ph1797.preheader.new ], [ %526, %.lr.ph1797 ]
  %498 = phi <2 x double> [ zeroinitializer, %.lr.ph1797.preheader.new ], [ %524, %.lr.ph1797 ]
  %niter2385 = phi i64 [ 0, %.lr.ph1797.preheader.new ], [ %niter2385.next.1, %.lr.ph1797 ]
  %499 = getelementptr inbounds double, ptr %19, i64 %indvars.iv1942
  %500 = load double, ptr %499, align 8, !tbaa !9
  %501 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1942
  %502 = load double, ptr %501, align 8, !tbaa !9
  %503 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1942
  %504 = load double, ptr %503, align 8, !tbaa !9
  %505 = fmul double %502, %504
  %506 = fdiv double %500, %505
  %507 = insertelement <2 x double> poison, double %500, i64 0
  %508 = insertelement <2 x double> %507, double %506, i64 1
  %509 = shufflevector <2 x double> %508, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %510 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %508, <2 x double> %509, <2 x double> %498)
  %511 = extractelement <2 x double> %510, i64 0
  %512 = fadd double %.114891795, %511
  %513 = getelementptr double, ptr %3, i64 %indvars.iv1942
  %514 = load double, ptr %513, align 8, !tbaa !9
  %515 = getelementptr double, ptr %7, i64 %indvars.iv1942
  %516 = load double, ptr %515, align 8, !tbaa !9
  %517 = getelementptr double, ptr %4, i64 %indvars.iv1942
  %518 = load double, ptr %517, align 8, !tbaa !9
  %519 = fmul double %516, %518
  %520 = fdiv double %514, %519
  %521 = insertelement <2 x double> poison, double %514, i64 0
  %522 = insertelement <2 x double> %521, double %520, i64 1
  %523 = shufflevector <2 x double> %522, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %524 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %522, <2 x double> %523, <2 x double> %510)
  %525 = extractelement <2 x double> %524, i64 0
  %526 = fadd double %512, %525
  %indvars.iv.next1943.1 = add nuw nsw i64 %indvars.iv1942, 2
  %niter2385.next.1 = add i64 %niter2385, 2
  %niter2385.ncmp.1 = icmp eq i64 %niter2385.next.1, %unroll_iter2384
  br i1 %niter2385.ncmp.1, label %.lr.ph1830.loopexit.unr-lcssa.loopexit, label %.lr.ph1797, !llvm.loop !49

.lr.ph1830.loopexit.unr-lcssa.loopexit:           ; preds = %.lr.ph1797
  %527 = extractelement <2 x double> %524, i64 1
  br label %.lr.ph1830.loopexit.unr-lcssa

.lr.ph1830.loopexit.unr-lcssa:                    ; preds = %.lr.ph1830.loopexit.unr-lcssa.loopexit, %.lr.ph1797.preheader
  %.lcssa2296.ph = phi double [ poison, %.lr.ph1797.preheader ], [ %525, %.lr.ph1830.loopexit.unr-lcssa.loopexit ]
  %.lcssa2295.ph = phi double [ poison, %.lr.ph1797.preheader ], [ %526, %.lr.ph1830.loopexit.unr-lcssa.loopexit ]
  %.lcssa2294.ph = phi double [ poison, %.lr.ph1797.preheader ], [ %527, %.lr.ph1830.loopexit.unr-lcssa.loopexit ]
  %indvars.iv1942.unr = phi i64 [ 1, %.lr.ph1797.preheader ], [ %indvars.iv.next1943.1, %.lr.ph1830.loopexit.unr-lcssa.loopexit ]
  %.114891795.unr = phi double [ 0.000000e+00, %.lr.ph1797.preheader ], [ %526, %.lr.ph1830.loopexit.unr-lcssa.loopexit ]
  %.unr2379 = phi <2 x double> [ zeroinitializer, %.lr.ph1797.preheader ], [ %524, %.lr.ph1830.loopexit.unr-lcssa.loopexit ]
  %lcmp.mod2380.not = icmp eq i64 %xtraiter2378, 0
  br i1 %lcmp.mod2380.not, label %.lr.ph1830, label %.lr.ph1797.epil

.lr.ph1797.epil:                                  ; preds = %.lr.ph1830.loopexit.unr-lcssa
  %528 = getelementptr inbounds double, ptr %19, i64 %indvars.iv1942.unr
  %529 = load double, ptr %528, align 8, !tbaa !9
  %530 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1942.unr
  %531 = load double, ptr %530, align 8, !tbaa !9
  %532 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1942.unr
  %533 = load double, ptr %532, align 8, !tbaa !9
  %534 = fmul double %531, %533
  %535 = fdiv double %529, %534
  %536 = insertelement <2 x double> poison, double %529, i64 0
  %537 = insertelement <2 x double> %536, double %535, i64 1
  %538 = shufflevector <2 x double> %537, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %539 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %537, <2 x double> %538, <2 x double> %.unr2379)
  %540 = extractelement <2 x double> %539, i64 0
  %541 = fadd double %.114891795.unr, %540
  %542 = extractelement <2 x double> %539, i64 1
  br label %.lr.ph1830

.lr.ph1830:                                       ; preds = %.lr.ph1797.epil, %.lr.ph1830.loopexit.unr-lcssa, %.preheader1650
  %.11536.lcssa = phi double [ 0.000000e+00, %.preheader1650 ], [ %.lcssa2294.ph, %.lr.ph1830.loopexit.unr-lcssa ], [ %542, %.lr.ph1797.epil ]
  %.11489.lcssa = phi double [ 0.000000e+00, %.preheader1650 ], [ %.lcssa2295.ph, %.lr.ph1830.loopexit.unr-lcssa ], [ %541, %.lr.ph1797.epil ]
  %.21477.lcssa = phi double [ 0.000000e+00, %.preheader1650 ], [ %.lcssa2296.ph, %.lr.ph1830.loopexit.unr-lcssa ], [ %540, %.lr.ph1797.epil ]
  %543 = sext i32 %461 to i64
  %544 = getelementptr inbounds double, ptr %19, i64 %543
  %545 = load double, ptr %544, align 8, !tbaa !9
  %546 = getelementptr inbounds double, ptr %17, i64 %543
  %547 = load double, ptr %546, align 8, !tbaa !9
  %548 = getelementptr inbounds double, ptr %18, i64 %543
  %549 = load double, ptr %548, align 8, !tbaa !9
  %550 = fmul double %547, %549
  %551 = fdiv double %545, %550
  %552 = fmul double %545, %551
  %553 = fadd double %34, %552
  %554 = fadd double %.21477.lcssa, %553
  %555 = fneg double %552
  %556 = fsub double %555, %.21477.lcssa
  %557 = fcmp oge double %.11489.lcssa, 0.000000e+00
  %558 = fneg double %.11489.lcssa
  %559 = select i1 %557, double %.11489.lcssa, double %558
  %560 = tail call double @llvm.fmuladd.f64(double %556, double 8.000000e+00, double %559)
  %561 = fsub double %560, %552
  %562 = fmul double %551, %551
  %wide.trip.count1955 = zext i32 %35 to i64
  %scevgep2265 = getelementptr i8, ptr %4, i64 -8
  %scevgep2267 = getelementptr i8, ptr %7, i64 -8
  %563 = add nsw i64 %wide.trip.count1955, -1
  %xtraiter2388 = and i64 %563, 1
  %564 = icmp eq i32 %35, 2
  %unroll_iter2394 = and i64 %563, -2
  %lcmp.mod2390.not = icmp eq i64 %xtraiter2388, 0
  br label %565

565:                                              ; preds = %.lr.ph1830, %._crit_edge1812
  %566 = phi double [ %549, %.lr.ph1830 ], [ %717, %._crit_edge1812 ]
  %567 = phi double [ %547, %.lr.ph1830 ], [ %715, %._crit_edge1812 ]
  %568 = phi i32 [ %461, %.lr.ph1830 ], [ %631, %._crit_edge1812 ]
  %storemerge16411828 = phi i32 [ 3, %.lr.ph1830 ], [ %storemerge1641, %._crit_edge1812 ]
  %.pn1827 = phi double [ %561, %.lr.ph1830 ], [ %727, %._crit_edge1812 ]
  %.015041826 = phi double [ %562, %.lr.ph1830 ], [ %723, %._crit_edge1812 ]
  %.215371825 = phi double [ %.11536.lcssa, %.lr.ph1830 ], [ %.31538.lcssa, %._crit_edge1812 ]
  %storemerge16421824 = phi double [ %554, %.lr.ph1830 ], [ %729, %._crit_edge1812 ]
  %.21490 = fadd double %34, %.pn1827
  %569 = fcmp oge double %storemerge16421824, 0.000000e+00
  %570 = fneg double %storemerge16421824
  %571 = select i1 %569, double %storemerge16421824, double %570
  %572 = fmul double %32, %.21490
  %573 = fcmp ugt double %571, %572
  br i1 %573, label %574, label %.loopexit1653

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

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

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

617:                                              ; preds = %606, %595
  %storemerge1643 = phi double [ %616, %606 ], [ %605, %595 ]
  %618 = fmul double %storemerge1643, %storemerge16421824
  %619 = fcmp ogt double %618, 0.000000e+00
  %620 = fdiv double %570, %589
  %storemerge16431821 = select i1 %619, double %620, double %storemerge1643
  %621 = fsub double %storemerge16431821, %582
  %622 = fcmp ugt double %621, 0.000000e+00
  %623 = fmul double %storemerge16431821, 5.000000e-01
  %storemerge16431822 = select i1 %622, double %storemerge16431821, double %623
  %624 = load double, ptr %6, align 8, !tbaa !9
  %625 = tail call double @llvm.fmuladd.f64(double %624, double %624, double %storemerge16431822)
  %626 = tail call double @sqrt(double noundef %625) #6
  %627 = fadd double %624, %626
  %628 = fdiv double %storemerge16431822, %627
  %629 = load double, ptr %6, align 8, !tbaa !9
  %630 = fadd double %628, %629
  store double %630, ptr %6, align 8, !tbaa !9
  %631 = load i32, ptr %0, align 4, !tbaa !5
  %.not16441802 = icmp slt i32 %631, 1
  br i1 %.not16441802, label %.preheader, label %.lr.ph1805.preheader

.lr.ph1805.preheader:                             ; preds = %617
  %632 = add nuw i32 %631, 1
  %wide.trip.count1950 = zext i32 %632 to i64
  %633 = zext nneg i32 %631 to i64
  %min.iters.check2274 = icmp ult i32 %631, 4
  br i1 %min.iters.check2274, label %.lr.ph1805.preheader2291, label %vector.memcheck2264

.lr.ph1805.preheader2291:                         ; preds = %middle.block2272, %vector.memcheck2264, %.lr.ph1805.preheader
  %indvars.iv1947.ph = phi i64 [ 1, %vector.memcheck2264 ], [ 1, %.lr.ph1805.preheader ], [ %ind.end2278, %middle.block2272 ]
  %634 = zext nneg i32 %631 to i64
  %635 = and i32 %631, 1
  %lcmp.mod2387.not = icmp eq i32 %635, 0
  br i1 %lcmp.mod2387.not, label %.lr.ph1805.prol.loopexit, label %.lr.ph1805.prol

.lr.ph1805.prol:                                  ; preds = %.lr.ph1805.preheader2291
  %636 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1947.ph
  %637 = load double, ptr %636, align 8, !tbaa !9
  %638 = fsub double %637, %628
  store double %638, ptr %636, align 8, !tbaa !9
  %639 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1947.ph
  %640 = load double, ptr %639, align 8, !tbaa !9
  %641 = fadd double %628, %640
  store double %641, ptr %639, align 8, !tbaa !9
  %indvars.iv.next1948.prol = add nuw nsw i64 %indvars.iv1947.ph, 1
  br label %.lr.ph1805.prol.loopexit

.lr.ph1805.prol.loopexit:                         ; preds = %.lr.ph1805.prol, %.lr.ph1805.preheader2291
  %indvars.iv1947.unr = phi i64 [ %indvars.iv1947.ph, %.lr.ph1805.preheader2291 ], [ %indvars.iv.next1948.prol, %.lr.ph1805.prol ]
  %642 = icmp eq i64 %indvars.iv1947.ph, %634
  br i1 %642, label %.preheader, label %.lr.ph1805

vector.memcheck2264:                              ; preds = %.lr.ph1805.preheader
  %643 = shl nuw nsw i64 %wide.trip.count1950, 3
  %scevgep2266 = getelementptr i8, ptr %scevgep2265, i64 %643
  %scevgep2268 = getelementptr i8, ptr %scevgep2267, i64 %643
  %bound02269 = icmp ugt ptr %scevgep2268, %4
  %bound12270 = icmp ugt ptr %scevgep2266, %7
  %found.conflict2271 = and i1 %bound02269, %bound12270
  br i1 %found.conflict2271, label %.lr.ph1805.preheader2291, label %vector.ph2275

vector.ph2275:                                    ; preds = %vector.memcheck2264
  %n.vec2277 = and i64 %633, 2147483644
  %ind.end2278 = or disjoint i64 %n.vec2277, 1
  %broadcast.splatinsert2285 = insertelement <2 x double> poison, double %628, i64 0
  %broadcast.splat2286 = shufflevector <2 x double> %broadcast.splatinsert2285, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body2280

vector.body2280:                                  ; preds = %vector.body2280, %vector.ph2275
  %index2281 = phi i64 [ 0, %vector.ph2275 ], [ %index.next2289, %vector.body2280 ]
  %644 = getelementptr double, ptr %4, i64 %index2281
  %645 = getelementptr inbounds i8, ptr %644, i64 16
  %wide.load2283 = load <2 x double>, ptr %644, align 8, !tbaa !9, !alias.scope !50, !noalias !53
  %wide.load2284 = load <2 x double>, ptr %645, align 8, !tbaa !9, !alias.scope !50, !noalias !53
  %646 = fsub <2 x double> %wide.load2283, %broadcast.splat2286
  %647 = fsub <2 x double> %wide.load2284, %broadcast.splat2286
  store <2 x double> %646, ptr %644, align 8, !tbaa !9, !alias.scope !50, !noalias !53
  store <2 x double> %647, ptr %645, align 8, !tbaa !9, !alias.scope !50, !noalias !53
  %648 = getelementptr double, ptr %7, i64 %index2281
  %649 = getelementptr inbounds i8, ptr %648, i64 16
  %wide.load2287 = load <2 x double>, ptr %648, align 8, !tbaa !9, !alias.scope !53
  %wide.load2288 = load <2 x double>, ptr %649, align 8, !tbaa !9, !alias.scope !53
  %650 = fadd <2 x double> %broadcast.splat2286, %wide.load2287
  %651 = fadd <2 x double> %broadcast.splat2286, %wide.load2288
  store <2 x double> %650, ptr %648, align 8, !tbaa !9, !alias.scope !53
  store <2 x double> %651, ptr %649, align 8, !tbaa !9, !alias.scope !53
  %index.next2289 = add nuw i64 %index2281, 4
  %652 = icmp eq i64 %index.next2289, %n.vec2277
  br i1 %652, label %middle.block2272, label %vector.body2280, !llvm.loop !55

middle.block2272:                                 ; preds = %vector.body2280
  %cmp.n2290 = icmp eq i64 %n.vec2277, %633
  br i1 %cmp.n2290, label %.preheader, label %.lr.ph1805.preheader2291

.preheader:                                       ; preds = %.lr.ph1805.prol.loopexit, %.lr.ph1805, %middle.block2272, %617
  br i1 %.not1638.not1778, label %.lr.ph1811.preheader, label %._crit_edge1812

.lr.ph1811.preheader:                             ; preds = %.preheader
  br i1 %564, label %._crit_edge1812.loopexit.unr-lcssa, label %.lr.ph1811

.lr.ph1805:                                       ; preds = %.lr.ph1805.prol.loopexit, %.lr.ph1805
  %indvars.iv1947 = phi i64 [ %indvars.iv.next1948.1, %.lr.ph1805 ], [ %indvars.iv1947.unr, %.lr.ph1805.prol.loopexit ]
  %653 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1947
  %654 = load double, ptr %653, align 8, !tbaa !9
  %655 = fsub double %654, %628
  store double %655, ptr %653, align 8, !tbaa !9
  %656 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1947
  %657 = load double, ptr %656, align 8, !tbaa !9
  %658 = fadd double %628, %657
  store double %658, ptr %656, align 8, !tbaa !9
  %659 = getelementptr double, ptr %4, i64 %indvars.iv1947
  %660 = load double, ptr %659, align 8, !tbaa !9
  %661 = fsub double %660, %628
  store double %661, ptr %659, align 8, !tbaa !9
  %662 = getelementptr double, ptr %7, i64 %indvars.iv1947
  %663 = load double, ptr %662, align 8, !tbaa !9
  %664 = fadd double %628, %663
  store double %664, ptr %662, align 8, !tbaa !9
  %indvars.iv.next1948.1 = add nuw nsw i64 %indvars.iv1947, 2
  %exitcond1951.not.1 = icmp eq i64 %indvars.iv.next1948.1, %wide.trip.count1950
  br i1 %exitcond1951.not.1, label %.preheader, label %.lr.ph1805, !llvm.loop !56

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

._crit_edge1812.loopexit.unr-lcssa.loopexit:      ; preds = %.lr.ph1811
  %694 = extractelement <2 x double> %691, i64 1
  br label %._crit_edge1812.loopexit.unr-lcssa

._crit_edge1812.loopexit.unr-lcssa:               ; preds = %._crit_edge1812.loopexit.unr-lcssa.loopexit, %.lr.ph1811.preheader
  %.lcssa2293.ph = phi double [ poison, %.lr.ph1811.preheader ], [ %692, %._crit_edge1812.loopexit.unr-lcssa.loopexit ]
  %.lcssa2292.ph = phi double [ poison, %.lr.ph1811.preheader ], [ %693, %._crit_edge1812.loopexit.unr-lcssa.loopexit ]
  %.lcssa.ph = phi double [ poison, %.lr.ph1811.preheader ], [ %694, %._crit_edge1812.loopexit.unr-lcssa.loopexit ]
  %indvars.iv1952.unr = phi i64 [ 1, %.lr.ph1811.preheader ], [ %indvars.iv.next1953.1, %._crit_edge1812.loopexit.unr-lcssa.loopexit ]
  %.314911809.unr = phi double [ 0.000000e+00, %.lr.ph1811.preheader ], [ %693, %._crit_edge1812.loopexit.unr-lcssa.loopexit ]
  %.unr2389 = phi <2 x double> [ zeroinitializer, %.lr.ph1811.preheader ], [ %691, %._crit_edge1812.loopexit.unr-lcssa.loopexit ]
  br i1 %lcmp.mod2390.not, label %._crit_edge1812, label %.lr.ph1811.epil

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

._crit_edge1812:                                  ; preds = %.lr.ph1811.epil, %._crit_edge1812.loopexit.unr-lcssa, %.preheader
  %.31538.lcssa = phi double [ 0.000000e+00, %.preheader ], [ %.lcssa.ph, %._crit_edge1812.loopexit.unr-lcssa ], [ %709, %.lr.ph1811.epil ]
  %.31491.lcssa = phi double [ 0.000000e+00, %.preheader ], [ %.lcssa2292.ph, %._crit_edge1812.loopexit.unr-lcssa ], [ %708, %.lr.ph1811.epil ]
  %.31478.lcssa = phi double [ 0.000000e+00, %.preheader ], [ %.lcssa2293.ph, %._crit_edge1812.loopexit.unr-lcssa ], [ %707, %.lr.ph1811.epil ]
  %710 = fcmp oge double %.31491.lcssa, 0.000000e+00
  %711 = fneg double %.31491.lcssa
  %712 = select i1 %710, double %.31491.lcssa, double %711
  %713 = sext i32 %631 to i64
  %714 = getelementptr inbounds double, ptr %17, i64 %713
  %715 = load double, ptr %714, align 8, !tbaa !9
  %716 = getelementptr inbounds double, ptr %18, i64 %713
  %717 = load double, ptr %716, align 8, !tbaa !9
  %718 = fmul double %715, %717
  %719 = getelementptr inbounds double, ptr %19, i64 %713
  %720 = load double, ptr %719, align 8, !tbaa !9
  %721 = fdiv double %720, %718
  %722 = fmul double %720, %721
  %723 = fmul double %721, %721
  %724 = fneg double %722
  %725 = fsub double %724, %.31478.lcssa
  %726 = tail call double @llvm.fmuladd.f64(double %725, double 8.000000e+00, double %712)
  %727 = fsub double %726, %722
  %728 = fadd double %34, %722
  %729 = fadd double %.31478.lcssa, %728
  %storemerge1641 = add i32 %storemerge16411828, 1
  %exitcond1957.not = icmp eq i32 %storemerge1641, 401
  br i1 %exitcond1957.not, label %._crit_edge1831, label %565, !llvm.loop !58

._crit_edge1831:                                  ; preds = %._crit_edge1812
  store i32 1, ptr %8, align 4, !tbaa !5
  br label %.loopexit1653

730:                                              ; preds = %31
  store i32 1, ptr %12, align 4, !tbaa !5
  %731 = add nsw i32 %35, 1
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds double, ptr %20, i64 %732
  %734 = load double, ptr %733, align 8, !tbaa !9
  %735 = sext i32 %35 to i64
  %736 = getelementptr inbounds double, ptr %20, i64 %735
  %737 = load double, ptr %736, align 8, !tbaa !9
  %738 = fsub double %734, %737
  %739 = fadd double %734, %737
  %740 = fmul double %738, %739
  %741 = fmul double %740, 5.000000e-01
  %742 = fmul double %734, %734
  %743 = tail call double @llvm.fmuladd.f64(double %737, double %737, double %742)
  %744 = fmul double %743, 5.000000e-01
  %745 = tail call double @sqrt(double noundef %744) #6
  %746 = load i32, ptr %1, align 4, !tbaa !5
  %747 = sext i32 %746 to i64
  %748 = getelementptr inbounds double, ptr %20, i64 %747
  %749 = load double, ptr %748, align 8, !tbaa !9
  %750 = fadd double %745, %749
  %751 = fdiv double %741, %750
  %752 = load i32, ptr %0, align 4, !tbaa !5
  %.not1656 = icmp slt i32 %752, 1
  br i1 %.not1656, label %.preheader1655, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %730
  %753 = add nuw i32 %752, 1
  %wide.trip.count = zext i32 %753 to i64
  %754 = zext nneg i32 %752 to i64
  %min.iters.check = icmp ult i32 %752, 14
  br i1 %min.iters.check, label %.lr.ph.preheader2325, label %vector.memcheck

.lr.ph.preheader2325:                             ; preds = %middle.block, %vector.memcheck, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  %755 = zext nneg i32 %752 to i64
  %756 = and i32 %752, 1
  %lcmp.mod.not = icmp eq i32 %756, 0
  br i1 %lcmp.mod.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol

.lr.ph.prol:                                      ; preds = %.lr.ph.preheader2325
  %757 = getelementptr inbounds double, ptr %20, i64 %indvars.iv.ph
  %758 = load double, ptr %757, align 8, !tbaa !9
  %759 = load double, ptr %748, align 8, !tbaa !9
  %760 = fadd double %758, %759
  %761 = fadd double %751, %760
  %762 = getelementptr inbounds double, ptr %17, i64 %indvars.iv.ph
  store double %761, ptr %762, align 8, !tbaa !9
  %763 = load double, ptr %757, align 8, !tbaa !9
  %764 = load double, ptr %748, align 8, !tbaa !9
  %765 = fsub double %763, %764
  %766 = fsub double %765, %751
  %767 = getelementptr inbounds double, ptr %18, i64 %indvars.iv.ph
  store double %766, ptr %767, align 8, !tbaa !9
  %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.ph, 1
  br label %.lr.ph.prol.loopexit

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader2325
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %.lr.ph.preheader2325 ], [ %indvars.iv.next.prol, %.lr.ph.prol ]
  %768 = icmp eq i64 %indvars.iv.ph, %755
  br i1 %768, label %.preheader1655, label %.lr.ph

vector.memcheck:                                  ; preds = %.lr.ph.preheader
  %769 = shl nuw nsw i64 %wide.trip.count, 3
  %770 = add nsw i64 %769, -8
  %scevgep = getelementptr i8, ptr %7, i64 %770
  %scevgep2029 = getelementptr i8, ptr %4, i64 %770
  %771 = shl nsw i64 %747, 3
  %scevgep2030 = getelementptr i8, ptr %2, i64 %771
  %scevgep2031 = getelementptr i8, ptr %2, i64 %770
  %bound0 = icmp ugt ptr %scevgep2029, %7
  %bound1 = icmp ugt ptr %scevgep, %4
  %found.conflict = and i1 %bound0, %bound1
  %bound02032 = icmp ugt ptr %scevgep2030, %7
  %bound12033 = icmp ult ptr %748, %scevgep
  %found.conflict2034 = and i1 %bound02032, %bound12033
  %conflict.rdx = or i1 %found.conflict, %found.conflict2034
  %bound02035 = icmp ugt ptr %scevgep2031, %7
  %bound12036 = icmp ugt ptr %scevgep, %2
  %found.conflict2037 = and i1 %bound02035, %bound12036
  %conflict.rdx2038 = or i1 %conflict.rdx, %found.conflict2037
  %bound02039 = icmp ugt ptr %scevgep2030, %4
  %bound12040 = icmp ult ptr %748, %scevgep2029
  %found.conflict2041 = and i1 %bound02039, %bound12040
  %conflict.rdx2042 = or i1 %conflict.rdx2038, %found.conflict2041
  %bound02043 = icmp ugt ptr %scevgep2031, %4
  %bound12044 = icmp ugt ptr %scevgep2029, %2
  %found.conflict2045 = and i1 %bound02043, %bound12044
  %conflict.rdx2046 = or i1 %conflict.rdx2042, %found.conflict2045
  br i1 %conflict.rdx2046, label %.lr.ph.preheader2325, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %754, 2147483646
  %ind.end = or i64 %754, 1
  %broadcast.splatinsert2047 = insertelement <2 x double> poison, double %751, i64 0
  %broadcast.splat2048 = shufflevector <2 x double> %broadcast.splatinsert2047, <2 x double> poison, <2 x i32> zeroinitializer
  %772 = load double, ptr %748, align 8, !tbaa !9, !alias.scope !59
  %broadcast.splatinsert = insertelement <2 x double> poison, double %772, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  %773 = load double, ptr %748, align 8, !tbaa !9, !alias.scope !59
  %broadcast.splatinsert2050 = insertelement <2 x double> poison, double %773, i64 0
  %broadcast.splat2051 = shufflevector <2 x double> %broadcast.splatinsert2050, <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 ]
  %774 = getelementptr double, ptr %2, i64 %index
  %wide.load = load <2 x double>, ptr %774, align 8, !tbaa !9, !alias.scope !62
  %775 = fadd <2 x double> %wide.load, %broadcast.splat
  %776 = fadd <2 x double> %broadcast.splat2048, %775
  %777 = getelementptr double, ptr %7, i64 %index
  store <2 x double> %776, ptr %777, align 8, !tbaa !9, !alias.scope !64, !noalias !66
  %wide.load2049 = load <2 x double>, ptr %774, align 8, !tbaa !9, !alias.scope !62
  %778 = fsub <2 x double> %wide.load2049, %broadcast.splat2051
  %779 = fsub <2 x double> %778, %broadcast.splat2048
  %780 = getelementptr double, ptr %4, i64 %index
  store <2 x double> %779, ptr %780, align 8, !tbaa !9, !alias.scope !68, !noalias !69
  %index.next = add nuw i64 %index, 2
  %781 = icmp eq i64 %index.next, %n.vec
  br i1 %781, label %middle.block, label %vector.body, !llvm.loop !70

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %754
  br i1 %cmp.n, label %.preheader1655, label %.lr.ph.preheader2325

.preheader1655:                                   ; preds = %.lr.ph.prol.loopexit, %.lr.ph, %middle.block, %730
  %.not1595.not1658 = icmp sgt i32 %746, 1
  br i1 %.not1595.not1658, label %.lr.ph1661.preheader, label %._crit_edge

.lr.ph1661.preheader:                             ; preds = %.preheader1655
  %wide.trip.count1873 = zext nneg i32 %746 to i64
  %782 = add nsw i64 %wide.trip.count1873, -1
  %xtraiter2326 = and i64 %782, 1
  %783 = icmp eq i32 %746, 2
  br i1 %783, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph1661.preheader.new

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

.lr.ph:                                           ; preds = %.lr.ph.prol.loopexit, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next.1, %.lr.ph ], [ %indvars.iv.unr, %.lr.ph.prol.loopexit ]
  %784 = getelementptr inbounds double, ptr %20, i64 %indvars.iv
  %785 = load double, ptr %784, align 8, !tbaa !9
  %786 = load double, ptr %748, align 8, !tbaa !9
  %787 = fadd double %785, %786
  %788 = fadd double %751, %787
  %789 = getelementptr inbounds double, ptr %17, i64 %indvars.iv
  store double %788, ptr %789, align 8, !tbaa !9
  %790 = load double, ptr %784, align 8, !tbaa !9
  %791 = load double, ptr %748, align 8, !tbaa !9
  %792 = fsub double %790, %791
  %793 = fsub double %792, %751
  %794 = getelementptr inbounds double, ptr %18, i64 %indvars.iv
  store double %793, ptr %794, align 8, !tbaa !9
  %795 = getelementptr double, ptr %2, i64 %indvars.iv
  %796 = load double, ptr %795, align 8, !tbaa !9
  %797 = load double, ptr %748, align 8, !tbaa !9
  %798 = fadd double %796, %797
  %799 = fadd double %751, %798
  %800 = getelementptr double, ptr %7, i64 %indvars.iv
  store double %799, ptr %800, align 8, !tbaa !9
  %801 = load double, ptr %795, align 8, !tbaa !9
  %802 = load double, ptr %748, align 8, !tbaa !9
  %803 = fsub double %801, %802
  %804 = fsub double %803, %751
  %805 = getelementptr double, ptr %4, i64 %indvars.iv
  store double %804, ptr %805, align 8, !tbaa !9
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %exitcond.not.1 = icmp eq i64 %indvars.iv.next.1, %wide.trip.count
  br i1 %exitcond.not.1, label %.preheader1655, label %.lr.ph, !llvm.loop !71

.lr.ph1661:                                       ; preds = %.lr.ph1661, %.lr.ph1661.preheader.new
  %indvars.iv1870 = phi i64 [ 1, %.lr.ph1661.preheader.new ], [ %indvars.iv.next1871.1, %.lr.ph1661 ]
  %.41660 = phi double [ 0.000000e+00, %.lr.ph1661.preheader.new ], [ %825, %.lr.ph1661 ]
  %niter = phi i64 [ 0, %.lr.ph1661.preheader.new ], [ %niter.next.1, %.lr.ph1661 ]
  %806 = getelementptr inbounds double, ptr %19, i64 %indvars.iv1870
  %807 = load double, ptr %806, align 8, !tbaa !9
  %808 = fmul double %807, %807
  %809 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1870
  %810 = load double, ptr %809, align 8, !tbaa !9
  %811 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1870
  %812 = load double, ptr %811, align 8, !tbaa !9
  %813 = fmul double %810, %812
  %814 = fdiv double %808, %813
  %815 = fadd double %.41660, %814
  %816 = getelementptr double, ptr %3, i64 %indvars.iv1870
  %817 = load double, ptr %816, align 8, !tbaa !9
  %818 = fmul double %817, %817
  %819 = getelementptr double, ptr %7, i64 %indvars.iv1870
  %820 = load double, ptr %819, align 8, !tbaa !9
  %821 = getelementptr double, ptr %4, i64 %indvars.iv1870
  %822 = load double, ptr %821, align 8, !tbaa !9
  %823 = fmul double %820, %822
  %824 = fdiv double %818, %823
  %825 = fadd double %815, %824
  %indvars.iv.next1871.1 = add nuw nsw i64 %indvars.iv1870, 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_edge.loopexit.unr-lcssa, label %.lr.ph1661, !llvm.loop !72

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph1661, %.lr.ph1661.preheader
  %.lcssa2324.ph = phi double [ poison, %.lr.ph1661.preheader ], [ %825, %.lr.ph1661 ]
  %indvars.iv1870.unr = phi i64 [ 1, %.lr.ph1661.preheader ], [ %indvars.iv.next1871.1, %.lr.ph1661 ]
  %.41660.unr = phi double [ 0.000000e+00, %.lr.ph1661.preheader ], [ %825, %.lr.ph1661 ]
  %lcmp.mod2327.not = icmp eq i64 %xtraiter2326, 0
  br i1 %lcmp.mod2327.not, label %._crit_edge, label %.lr.ph1661.epil

.lr.ph1661.epil:                                  ; preds = %._crit_edge.loopexit.unr-lcssa
  %826 = getelementptr inbounds double, ptr %19, i64 %indvars.iv1870.unr
  %827 = load double, ptr %826, align 8, !tbaa !9
  %828 = fmul double %827, %827
  %829 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1870.unr
  %830 = load double, ptr %829, align 8, !tbaa !9
  %831 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1870.unr
  %832 = load double, ptr %831, align 8, !tbaa !9
  %833 = fmul double %830, %832
  %834 = fdiv double %828, %833
  %835 = fadd double %.41660.unr, %834
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph1661.epil, %._crit_edge.loopexit.unr-lcssa, %.preheader1655
  %.4.lcssa = phi double [ 0.000000e+00, %.preheader1655 ], [ %.lcssa2324.ph, %._crit_edge.loopexit.unr-lcssa ], [ %835, %.lr.ph1661.epil ]
  %836 = add nsw i32 %746, 2
  %.not15961662 = icmp slt i32 %752, %836
  br i1 %.not15961662, label %._crit_edge1667, label %.lr.ph1666.preheader

.lr.ph1666.preheader:                             ; preds = %._crit_edge
  %837 = sext i32 %752 to i64
  %838 = sext i32 %836 to i64
  %839 = add nsw i64 %837, %838
  %840 = and i64 %839, 1
  %lcmp.mod2330.not.not = icmp eq i64 %840, 0
  br i1 %lcmp.mod2330.not.not, label %.lr.ph1666.prol, label %.lr.ph1666.prol.loopexit

.lr.ph1666.prol:                                  ; preds = %.lr.ph1666.preheader
  %841 = getelementptr inbounds double, ptr %19, i64 %837
  %842 = load double, ptr %841, align 8, !tbaa !9
  %843 = fmul double %842, %842
  %844 = getelementptr inbounds double, ptr %17, i64 %837
  %845 = load double, ptr %844, align 8, !tbaa !9
  %846 = getelementptr inbounds double, ptr %18, i64 %837
  %847 = load double, ptr %846, align 8, !tbaa !9
  %848 = fmul double %845, %847
  %849 = fdiv double %843, %848
  %850 = fadd double %849, 0.000000e+00
  %indvars.iv.next1876.prol = add nsw i64 %837, -1
  br label %.lr.ph1666.prol.loopexit

.lr.ph1666.prol.loopexit:                         ; preds = %.lr.ph1666.prol, %.lr.ph1666.preheader
  %indvars.iv1875.unr = phi i64 [ %837, %.lr.ph1666.preheader ], [ %indvars.iv.next1876.prol, %.lr.ph1666.prol ]
  %.014831664.unr = phi double [ 0.000000e+00, %.lr.ph1666.preheader ], [ %850, %.lr.ph1666.prol ]
  %.lcssa2323.unr = phi double [ poison, %.lr.ph1666.preheader ], [ %850, %.lr.ph1666.prol ]
  %851 = icmp eq i32 %752, %836
  br i1 %851, label %._crit_edge1667, label %.lr.ph1666

.lr.ph1666:                                       ; preds = %.lr.ph1666.prol.loopexit, %.lr.ph1666
  %indvars.iv1875 = phi i64 [ %indvars.iv.next1876.1, %.lr.ph1666 ], [ %indvars.iv1875.unr, %.lr.ph1666.prol.loopexit ]
  %.014831664 = phi double [ %871, %.lr.ph1666 ], [ %.014831664.unr, %.lr.ph1666.prol.loopexit ]
  %852 = getelementptr inbounds double, ptr %19, i64 %indvars.iv1875
  %853 = load double, ptr %852, align 8, !tbaa !9
  %854 = fmul double %853, %853
  %855 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1875
  %856 = load double, ptr %855, align 8, !tbaa !9
  %857 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1875
  %858 = load double, ptr %857, align 8, !tbaa !9
  %859 = fmul double %856, %858
  %860 = fdiv double %854, %859
  %861 = fadd double %.014831664, %860
  %indvars.iv.next1876 = add nsw i64 %indvars.iv1875, -1
  %862 = getelementptr inbounds double, ptr %19, i64 %indvars.iv.next1876
  %863 = load double, ptr %862, align 8, !tbaa !9
  %864 = fmul double %863, %863
  %865 = getelementptr inbounds double, ptr %17, i64 %indvars.iv.next1876
  %866 = load double, ptr %865, align 8, !tbaa !9
  %867 = getelementptr inbounds double, ptr %18, i64 %indvars.iv.next1876
  %868 = load double, ptr %867, align 8, !tbaa !9
  %869 = fmul double %866, %868
  %870 = fdiv double %864, %869
  %871 = fadd double %861, %870
  %indvars.iv.next1876.1 = add nsw i64 %indvars.iv1875, -2
  %.not1596.not.1 = icmp sgt i64 %indvars.iv.next1876, %838
  br i1 %.not1596.not.1, label %.lr.ph1666, label %._crit_edge1667, !llvm.loop !73

._crit_edge1667:                                  ; preds = %.lr.ph1666.prol.loopexit, %.lr.ph1666, %._crit_edge
  %.01483.lcssa = phi double [ 0.000000e+00, %._crit_edge ], [ %.lcssa2323.unr, %.lr.ph1666.prol.loopexit ], [ %871, %.lr.ph1666 ]
  %872 = fadd double %34, %.4.lcssa
  %873 = fadd double %872, %.01483.lcssa
  store double %873, ptr %10, align 8, !tbaa !9
  %874 = getelementptr inbounds double, ptr %19, i64 %747
  %875 = load double, ptr %874, align 8, !tbaa !9
  %876 = getelementptr inbounds double, ptr %17, i64 %747
  %877 = load double, ptr %876, align 8, !tbaa !9
  %878 = getelementptr inbounds double, ptr %18, i64 %747
  %879 = load double, ptr %878, align 8, !tbaa !9
  %880 = getelementptr inbounds double, ptr %19, i64 %732
  %881 = load double, ptr %880, align 8, !tbaa !9
  %882 = getelementptr inbounds double, ptr %17, i64 %732
  %883 = load double, ptr %882, align 8, !tbaa !9
  %884 = getelementptr inbounds double, ptr %18, i64 %732
  %885 = load double, ptr %884, align 8, !tbaa !9
  %886 = insertelement <2 x double> poison, double %875, i64 0
  %887 = insertelement <2 x double> %886, double %881, i64 1
  %888 = fmul <2 x double> %887, %887
  %889 = insertelement <2 x double> poison, double %877, i64 0
  %890 = insertelement <2 x double> %889, double %883, i64 1
  %891 = insertelement <2 x double> poison, double %879, i64 0
  %892 = insertelement <2 x double> %891, double %885, i64 1
  %893 = fmul <2 x double> %890, %892
  %894 = fdiv <2 x double> %888, %893
  %895 = extractelement <2 x double> %894, i64 0
  %896 = fadd double %873, %895
  %897 = extractelement <2 x double> %894, i64 1
  %898 = fadd double %896, %897
  %899 = fcmp ule double %898, 0.000000e+00
  br i1 %899, label %960, label %900

900:                                              ; preds = %._crit_edge1667
  store i32 1, ptr %15, align 4, !tbaa !5
  %901 = load double, ptr %748, align 8, !tbaa !9
  %902 = fadd double %745, %901
  %903 = fdiv double %741, %902
  %904 = extractelement <2 x double> %888, i64 0
  %905 = tail call double @llvm.fmuladd.f64(double %873, double %740, double %904)
  %906 = tail call double @llvm.fmuladd.f64(double %881, double %881, double %905)
  %907 = fmul double %740, %904
  %908 = fcmp ogt double %906, 0.000000e+00
  br i1 %908, label %909, label %920

909:                                              ; preds = %900
  %910 = fmul double %907, 2.000000e+00
  %911 = fmul double %907, -4.000000e+00
  %912 = fmul double %873, %911
  %913 = tail call double @llvm.fmuladd.f64(double %906, double %906, double %912)
  %914 = fcmp oge double %913, 0.000000e+00
  %915 = fneg double %913
  %916 = select i1 %914, double %913, double %915
  %917 = tail call double @sqrt(double noundef %916) #6
  %918 = fadd double %906, %917
  %919 = fdiv double %910, %918
  br label %931

920:                                              ; preds = %900
  %921 = fmul double %907, -4.000000e+00
  %922 = fmul double %873, %921
  %923 = tail call double @llvm.fmuladd.f64(double %906, double %906, double %922)
  %924 = fcmp oge double %923, 0.000000e+00
  %925 = fneg double %923
  %926 = select i1 %924, double %923, double %925
  %927 = tail call double @sqrt(double noundef %926) #6
  %928 = fsub double %906, %927
  %929 = fmul double %873, 2.000000e+00
  %930 = fdiv double %928, %929
  br label %931

931:                                              ; preds = %920, %909
  %.2 = phi double [ %919, %909 ], [ %930, %920 ]
  %932 = load i32, ptr %1, align 4, !tbaa !5
  %933 = sext i32 %932 to i64
  %934 = getelementptr inbounds double, ptr %20, i64 %933
  %935 = load double, ptr %934, align 8, !tbaa !9
  %936 = tail call double @llvm.fmuladd.f64(double %935, double %935, double %.2)
  %937 = tail call double @sqrt(double noundef %936) #6
  %938 = fadd double %935, %937
  %939 = fdiv double %.2, %938
  %940 = tail call double @sqrt(double noundef %32) #6
  %941 = load i32, ptr %1, align 4, !tbaa !5
  %942 = sext i32 %941 to i64
  %943 = getelementptr inbounds double, ptr %20, i64 %942
  %944 = load double, ptr %943, align 8, !tbaa !9
  %945 = load double, ptr %733, align 8, !tbaa !9
  %946 = fmul double %940, %945
  %947 = fcmp ugt double %944, %946
  br i1 %947, label %1005, label %948

948:                                              ; preds = %931
  %949 = getelementptr inbounds double, ptr %19, i64 %942
  %950 = load double, ptr %949, align 8, !tbaa !9
  %951 = fcmp oge double %950, 0.000000e+00
  %952 = fneg double %950
  %953 = select i1 %951, double %950, double %952
  %954 = fcmp ole double %953, %940
  %955 = fcmp ogt double %944, 0.000000e+00
  %or.cond = and i1 %955, %954
  br i1 %or.cond, label %956, label %1005

956:                                              ; preds = %948
  %957 = fmul double %944, 1.000000e+01
  %958 = fcmp ole double %957, %903
  %959 = select i1 %958, double %957, double %903
  br label %1005

960:                                              ; preds = %._crit_edge1667
  store i32 0, ptr %15, align 4, !tbaa !5
  %961 = fneg double %741
  %962 = load double, ptr %733, align 8, !tbaa !9
  %963 = fadd double %745, %962
  %964 = fdiv double %961, %963
  %965 = fneg double %875
  %966 = fmul double %875, %965
  %967 = tail call double @llvm.fmuladd.f64(double %873, double %740, double %966)
  %968 = fneg double %881
  %969 = tail call double @llvm.fmuladd.f64(double %968, double %881, double %967)
  %970 = extractelement <2 x double> %888, i64 1
  %971 = fmul double %740, %970
  %972 = fcmp olt double %969, 0.000000e+00
  br i1 %972, label %973, label %984

973:                                              ; preds = %960
  %974 = fmul double %971, 2.000000e+00
  %975 = fmul double %971, 4.000000e+00
  %976 = fmul double %873, %975
  %977 = tail call double @llvm.fmuladd.f64(double %969, double %969, double %976)
  %978 = fcmp oge double %977, 0.000000e+00
  %979 = fneg double %977
  %980 = select i1 %978, double %977, double %979
  %981 = tail call double @sqrt(double noundef %980) #6
  %982 = fsub double %969, %981
  %983 = fdiv double %974, %982
  br label %996

984:                                              ; preds = %960
  %985 = fmul double %971, 4.000000e+00
  %986 = fmul double %873, %985
  %987 = tail call double @llvm.fmuladd.f64(double %969, double %969, double %986)
  %988 = fcmp oge double %987, 0.000000e+00
  %989 = fneg double %987
  %990 = select i1 %988, double %987, double %989
  %991 = tail call double @sqrt(double noundef %990) #6
  %992 = fadd double %969, %991
  %993 = fneg double %992
  %994 = fmul double %873, 2.000000e+00
  %995 = fdiv double %993, %994
  br label %996

996:                                              ; preds = %984, %973
  %.3 = phi double [ %983, %973 ], [ %995, %984 ]
  %997 = load double, ptr %733, align 8, !tbaa !9
  %998 = tail call double @llvm.fmuladd.f64(double %997, double %997, double %.3)
  %999 = fcmp oge double %998, 0.000000e+00
  %1000 = fneg double %998
  %1001 = select i1 %999, double %998, double %1000
  %1002 = tail call double @sqrt(double noundef %1001) #6
  %1003 = fadd double %997, %1002
  %1004 = fdiv double %.3, %1003
  br label %1005

1005:                                             ; preds = %931, %948, %956, %996
  %.pre-phi = phi i64 [ %747, %931 ], [ %747, %948 ], [ %747, %956 ], [ %732, %996 ]
  %.01547 = phi double [ 0.000000e+00, %931 ], [ 0.000000e+00, %948 ], [ 0.000000e+00, %956 ], [ %964, %996 ]
  %.01531 = phi double [ %903, %931 ], [ %903, %948 ], [ %903, %956 ], [ 0.000000e+00, %996 ]
  %.01498 = phi i32 [ %746, %931 ], [ %746, %948 ], [ %746, %956 ], [ %731, %996 ]
  %.21481 = phi double [ %939, %931 ], [ %939, %948 ], [ %959, %956 ], [ %1004, %996 ]
  %.not1611 = phi i1 [ true, %931 ], [ true, %948 ], [ false, %956 ], [ true, %996 ]
  %1006 = getelementptr inbounds double, ptr %20, i64 %.pre-phi
  %1007 = load double, ptr %1006, align 8, !tbaa !9
  %1008 = fadd double %.21481, %1007
  store double %1008, ptr %6, align 8, !tbaa !9
  %1009 = load i32, ptr %0, align 4, !tbaa !5
  %.not15971669 = icmp slt i32 %1009, 1
  br i1 %.not15971669, label %._crit_edge1673, label %.lr.ph1672.preheader

.lr.ph1672.preheader:                             ; preds = %1005
  %1010 = add nuw i32 %1009, 1
  %wide.trip.count1881 = zext i32 %1010 to i64
  %1011 = zext nneg i32 %1009 to i64
  %min.iters.check2078 = icmp ult i32 %1009, 14
  br i1 %min.iters.check2078, label %.lr.ph1672.preheader2322, label %vector.memcheck2052

vector.memcheck2052:                              ; preds = %.lr.ph1672.preheader
  %1012 = shl nuw nsw i64 %wide.trip.count1881, 3
  %1013 = add nsw i64 %1012, -8
  %scevgep2053 = getelementptr i8, ptr %7, i64 %1013
  %scevgep2054 = getelementptr i8, ptr %4, i64 %1013
  %1014 = shl nsw i64 %.pre-phi, 3
  %scevgep2055 = getelementptr i8, ptr %2, i64 %1014
  %scevgep2056 = getelementptr i8, ptr %2, i64 %1013
  %bound02057 = icmp ugt ptr %scevgep2054, %7
  %bound12058 = icmp ugt ptr %scevgep2053, %4
  %found.conflict2059 = and i1 %bound02057, %bound12058
  %bound02060 = icmp ugt ptr %scevgep2055, %7
  %bound12061 = icmp ult ptr %1006, %scevgep2053
  %found.conflict2062 = and i1 %bound02060, %bound12061
  %conflict.rdx2063 = or i1 %found.conflict2059, %found.conflict2062
  %bound02064 = icmp ugt ptr %scevgep2056, %7
  %bound12065 = icmp ugt ptr %scevgep2053, %2
  %found.conflict2066 = and i1 %bound02064, %bound12065
  %conflict.rdx2067 = or i1 %conflict.rdx2063, %found.conflict2066
  %bound02068 = icmp ugt ptr %scevgep2055, %4
  %bound12069 = icmp ult ptr %1006, %scevgep2054
  %found.conflict2070 = and i1 %bound02068, %bound12069
  %conflict.rdx2071 = or i1 %conflict.rdx2067, %found.conflict2070
  %bound02072 = icmp ugt ptr %scevgep2056, %4
  %bound12073 = icmp ugt ptr %scevgep2054, %2
  %found.conflict2074 = and i1 %bound02072, %bound12073
  %conflict.rdx2075 = or i1 %conflict.rdx2071, %found.conflict2074
  br i1 %conflict.rdx2075, label %.lr.ph1672.preheader2322, label %vector.ph2079

vector.ph2079:                                    ; preds = %vector.memcheck2052
  %n.vec2081 = and i64 %1011, 2147483646
  %ind.end2082 = or i64 %1011, 1
  %broadcast.splatinsert2090 = insertelement <2 x double> poison, double %.21481, i64 0
  %broadcast.splat2091 = shufflevector <2 x double> %broadcast.splatinsert2090, <2 x double> poison, <2 x i32> zeroinitializer
  %1015 = load double, ptr %1006, align 8, !tbaa !9, !alias.scope !74
  %broadcast.splatinsert2088 = insertelement <2 x double> poison, double %1015, i64 0
  %broadcast.splat2089 = shufflevector <2 x double> %broadcast.splatinsert2088, <2 x double> poison, <2 x i32> zeroinitializer
  %1016 = load double, ptr %1006, align 8, !tbaa !9, !alias.scope !74
  %broadcast.splatinsert2093 = insertelement <2 x double> poison, double %1016, i64 0
  %broadcast.splat2094 = shufflevector <2 x double> %broadcast.splatinsert2093, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body2084

vector.body2084:                                  ; preds = %vector.body2084, %vector.ph2079
  %index2085 = phi i64 [ 0, %vector.ph2079 ], [ %index.next2095, %vector.body2084 ]
  %1017 = getelementptr double, ptr %2, i64 %index2085
  %wide.load2087 = load <2 x double>, ptr %1017, align 8, !tbaa !9, !alias.scope !77
  %1018 = fadd <2 x double> %wide.load2087, %broadcast.splat2089
  %1019 = fadd <2 x double> %broadcast.splat2091, %1018
  %1020 = getelementptr double, ptr %7, i64 %index2085
  store <2 x double> %1019, ptr %1020, align 8, !tbaa !9, !alias.scope !79, !noalias !81
  %wide.load2092 = load <2 x double>, ptr %1017, align 8, !tbaa !9, !alias.scope !77
  %1021 = fsub <2 x double> %wide.load2092, %broadcast.splat2094
  %1022 = fsub <2 x double> %1021, %broadcast.splat2091
  %1023 = getelementptr double, ptr %4, i64 %index2085
  store <2 x double> %1022, ptr %1023, align 8, !tbaa !9, !alias.scope !83, !noalias !84
  %index.next2095 = add nuw i64 %index2085, 2
  %1024 = icmp eq i64 %index.next2095, %n.vec2081
  br i1 %1024, label %middle.block2076, label %vector.body2084, !llvm.loop !85

middle.block2076:                                 ; preds = %vector.body2084
  %cmp.n2096 = icmp eq i64 %n.vec2081, %1011
  br i1 %cmp.n2096, label %._crit_edge1673, label %.lr.ph1672.preheader2322

.lr.ph1672.preheader2322:                         ; preds = %middle.block2076, %vector.memcheck2052, %.lr.ph1672.preheader
  %indvars.iv1878.ph = phi i64 [ 1, %vector.memcheck2052 ], [ 1, %.lr.ph1672.preheader ], [ %ind.end2082, %middle.block2076 ]
  %1025 = zext nneg i32 %1009 to i64
  %1026 = and i32 %1009, 1
  %lcmp.mod2332.not = icmp eq i32 %1026, 0
  br i1 %lcmp.mod2332.not, label %.lr.ph1672.prol.loopexit, label %.lr.ph1672.prol

.lr.ph1672.prol:                                  ; preds = %.lr.ph1672.preheader2322
  %1027 = getelementptr inbounds double, ptr %20, i64 %indvars.iv1878.ph
  %1028 = load double, ptr %1027, align 8, !tbaa !9
  %1029 = load double, ptr %1006, align 8, !tbaa !9
  %1030 = fadd double %1028, %1029
  %1031 = fadd double %.21481, %1030
  %1032 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1878.ph
  store double %1031, ptr %1032, align 8, !tbaa !9
  %1033 = load double, ptr %1027, align 8, !tbaa !9
  %1034 = load double, ptr %1006, align 8, !tbaa !9
  %1035 = fsub double %1033, %1034
  %1036 = fsub double %1035, %.21481
  %1037 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1878.ph
  store double %1036, ptr %1037, align 8, !tbaa !9
  %indvars.iv.next1879.prol = add nuw nsw i64 %indvars.iv1878.ph, 1
  br label %.lr.ph1672.prol.loopexit

.lr.ph1672.prol.loopexit:                         ; preds = %.lr.ph1672.prol, %.lr.ph1672.preheader2322
  %indvars.iv1878.unr = phi i64 [ %indvars.iv1878.ph, %.lr.ph1672.preheader2322 ], [ %indvars.iv.next1879.prol, %.lr.ph1672.prol ]
  %1038 = icmp eq i64 %indvars.iv1878.ph, %1025
  br i1 %1038, label %._crit_edge1673, label %.lr.ph1672

.lr.ph1672:                                       ; preds = %.lr.ph1672.prol.loopexit, %.lr.ph1672
  %indvars.iv1878 = phi i64 [ %indvars.iv.next1879.1, %.lr.ph1672 ], [ %indvars.iv1878.unr, %.lr.ph1672.prol.loopexit ]
  %1039 = getelementptr inbounds double, ptr %20, i64 %indvars.iv1878
  %1040 = load double, ptr %1039, align 8, !tbaa !9
  %1041 = load double, ptr %1006, align 8, !tbaa !9
  %1042 = fadd double %1040, %1041
  %1043 = fadd double %.21481, %1042
  %1044 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1878
  store double %1043, ptr %1044, align 8, !tbaa !9
  %1045 = load double, ptr %1039, align 8, !tbaa !9
  %1046 = load double, ptr %1006, align 8, !tbaa !9
  %1047 = fsub double %1045, %1046
  %1048 = fsub double %1047, %.21481
  %1049 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1878
  store double %1048, ptr %1049, align 8, !tbaa !9
  %1050 = getelementptr double, ptr %2, i64 %indvars.iv1878
  %1051 = load double, ptr %1050, align 8, !tbaa !9
  %1052 = load double, ptr %1006, align 8, !tbaa !9
  %1053 = fadd double %1051, %1052
  %1054 = fadd double %.21481, %1053
  %1055 = getelementptr double, ptr %7, i64 %indvars.iv1878
  store double %1054, ptr %1055, align 8, !tbaa !9
  %1056 = load double, ptr %1050, align 8, !tbaa !9
  %1057 = load double, ptr %1006, align 8, !tbaa !9
  %1058 = fsub double %1056, %1057
  %1059 = fsub double %1058, %.21481
  %1060 = getelementptr double, ptr %4, i64 %indvars.iv1878
  store double %1059, ptr %1060, align 8, !tbaa !9
  %indvars.iv.next1879.1 = add nuw nsw i64 %indvars.iv1878, 2
  %exitcond1882.not.1 = icmp eq i64 %indvars.iv.next1879.1, %wide.trip.count1881
  br i1 %exitcond1882.not.1, label %._crit_edge1673, label %.lr.ph1672, !llvm.loop !86

._crit_edge1673:                                  ; preds = %.lr.ph1672.prol.loopexit, %.lr.ph1672, %middle.block2076, %1005
  %1061 = add nsw i32 %.01498, -1
  %1062 = add nsw i32 %.01498, 1
  %.not1598.not1674 = icmp sgt i32 %.01498, 1
  br i1 %.not1598.not1674, label %.lr.ph1680.preheader, label %._crit_edge1681

.lr.ph1680.preheader:                             ; preds = %._crit_edge1673
  %wide.trip.count1886 = zext nneg i32 %.01498 to i64
  %1063 = add nsw i64 %wide.trip.count1886, -1
  %xtraiter2333 = and i64 %1063, 1
  %1064 = icmp eq i32 %.01498, 2
  br i1 %1064, label %._crit_edge1681.loopexit.unr-lcssa, label %.lr.ph1680.preheader.new

.lr.ph1680.preheader.new:                         ; preds = %.lr.ph1680.preheader
  %unroll_iter2337 = and i64 %1063, -2
  br label %.lr.ph1680

.lr.ph1680:                                       ; preds = %.lr.ph1680, %.lr.ph1680.preheader.new
  %indvars.iv1883 = phi i64 [ 1, %.lr.ph1680.preheader.new ], [ %indvars.iv.next1884.1, %.lr.ph1680 ]
  %.414921677 = phi double [ 0.000000e+00, %.lr.ph1680.preheader.new ], [ %1093, %.lr.ph1680 ]
  %1065 = phi <2 x double> [ zeroinitializer, %.lr.ph1680.preheader.new ], [ %1091, %.lr.ph1680 ]
  %niter2338 = phi i64 [ 0, %.lr.ph1680.preheader.new ], [ %niter2338.next.1, %.lr.ph1680 ]
  %1066 = getelementptr inbounds double, ptr %19, i64 %indvars.iv1883
  %1067 = load double, ptr %1066, align 8, !tbaa !9
  %1068 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1883
  %1069 = load double, ptr %1068, align 8, !tbaa !9
  %1070 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1883
  %1071 = load double, ptr %1070, align 8, !tbaa !9
  %1072 = fmul double %1069, %1071
  %1073 = fdiv double %1067, %1072
  %1074 = insertelement <2 x double> poison, double %1067, i64 0
  %1075 = insertelement <2 x double> %1074, double %1073, i64 1
  %1076 = shufflevector <2 x double> %1075, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %1077 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1075, <2 x double> %1076, <2 x double> %1065)
  %1078 = extractelement <2 x double> %1077, i64 0
  %1079 = fadd double %.414921677, %1078
  %1080 = getelementptr double, ptr %3, i64 %indvars.iv1883
  %1081 = load double, ptr %1080, align 8, !tbaa !9
  %1082 = getelementptr double, ptr %7, i64 %indvars.iv1883
  %1083 = load double, ptr %1082, align 8, !tbaa !9
  %1084 = getelementptr double, ptr %4, i64 %indvars.iv1883
  %1085 = load double, ptr %1084, align 8, !tbaa !9
  %1086 = fmul double %1083, %1085
  %1087 = fdiv double %1081, %1086
  %1088 = insertelement <2 x double> poison, double %1081, i64 0
  %1089 = insertelement <2 x double> %1088, double %1087, i64 1
  %1090 = shufflevector <2 x double> %1089, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %1091 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1089, <2 x double> %1090, <2 x double> %1077)
  %1092 = extractelement <2 x double> %1091, i64 0
  %1093 = fadd double %1079, %1092
  %indvars.iv.next1884.1 = add nuw nsw i64 %indvars.iv1883, 2
  %niter2338.next.1 = add i64 %niter2338, 2
  %niter2338.ncmp.1 = icmp eq i64 %niter2338.next.1, %unroll_iter2337
  br i1 %niter2338.ncmp.1, label %._crit_edge1681.loopexit.unr-lcssa, label %.lr.ph1680, !llvm.loop !87

._crit_edge1681.loopexit.unr-lcssa:               ; preds = %.lr.ph1680, %.lr.ph1680.preheader
  %.lcssa2321.ph = phi <2 x double> [ poison, %.lr.ph1680.preheader ], [ %1091, %.lr.ph1680 ]
  %.lcssa2320.ph = phi double [ poison, %.lr.ph1680.preheader ], [ %1093, %.lr.ph1680 ]
  %indvars.iv1883.unr = phi i64 [ 1, %.lr.ph1680.preheader ], [ %indvars.iv.next1884.1, %.lr.ph1680 ]
  %.414921677.unr = phi double [ 0.000000e+00, %.lr.ph1680.preheader ], [ %1093, %.lr.ph1680 ]
  %.unr = phi <2 x double> [ zeroinitializer, %.lr.ph1680.preheader ], [ %1091, %.lr.ph1680 ]
  %lcmp.mod2334.not = icmp eq i64 %xtraiter2333, 0
  br i1 %lcmp.mod2334.not, label %._crit_edge1681, label %.lr.ph1680.epil

.lr.ph1680.epil:                                  ; preds = %._crit_edge1681.loopexit.unr-lcssa
  %1094 = getelementptr inbounds double, ptr %19, i64 %indvars.iv1883.unr
  %1095 = load double, ptr %1094, align 8, !tbaa !9
  %1096 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1883.unr
  %1097 = load double, ptr %1096, align 8, !tbaa !9
  %1098 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1883.unr
  %1099 = load double, ptr %1098, align 8, !tbaa !9
  %1100 = fmul double %1097, %1099
  %1101 = fdiv double %1095, %1100
  %1102 = insertelement <2 x double> poison, double %1095, i64 0
  %1103 = insertelement <2 x double> %1102, double %1101, i64 1
  %1104 = shufflevector <2 x double> %1103, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %1105 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1103, <2 x double> %1104, <2 x double> %.unr)
  %1106 = extractelement <2 x double> %1105, i64 0
  %1107 = fadd double %.414921677.unr, %1106
  br label %._crit_edge1681

._crit_edge1681:                                  ; preds = %.lr.ph1680.epil, %._crit_edge1681.loopexit.unr-lcssa, %._crit_edge1673
  %.41492.lcssa = phi double [ 0.000000e+00, %._crit_edge1673 ], [ %.lcssa2320.ph, %._crit_edge1681.loopexit.unr-lcssa ], [ %1107, %.lr.ph1680.epil ]
  %1108 = phi <2 x double> [ zeroinitializer, %._crit_edge1673 ], [ %.lcssa2321.ph, %._crit_edge1681.loopexit.unr-lcssa ], [ %1105, %.lr.ph1680.epil ]
  %1109 = fcmp oge double %.41492.lcssa, 0.000000e+00
  %1110 = fneg double %.41492.lcssa
  %1111 = select i1 %1109, double %.41492.lcssa, double %1110
  %.not1599.not1685 = icmp sgt i32 %1009, %.01498
  br i1 %.not1599.not1685, label %.lr.ph1691.preheader, label %._crit_edge1692

.lr.ph1691.preheader:                             ; preds = %._crit_edge1681
  %1112 = sext i32 %1009 to i64
  br label %.lr.ph1691

.lr.ph1691:                                       ; preds = %.lr.ph1691.preheader, %.lr.ph1691
  %indvars.iv1888 = phi i64 [ %1112, %.lr.ph1691.preheader ], [ %indvars.iv.next1889, %.lr.ph1691 ]
  %.514931688 = phi double [ %1111, %.lr.ph1691.preheader ], [ %1127, %.lr.ph1691 ]
  %1113 = phi <2 x double> [ zeroinitializer, %.lr.ph1691.preheader ], [ %1125, %.lr.ph1691 ]
  %1114 = getelementptr inbounds double, ptr %19, i64 %indvars.iv1888
  %1115 = load double, ptr %1114, align 8, !tbaa !9
  %1116 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1888
  %1117 = load double, ptr %1116, align 8, !tbaa !9
  %1118 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1888
  %1119 = load double, ptr %1118, align 8, !tbaa !9
  %1120 = fmul double %1117, %1119
  %1121 = fdiv double %1115, %1120
  %1122 = insertelement <2 x double> poison, double %1115, i64 0
  %1123 = insertelement <2 x double> %1122, double %1121, i64 1
  %1124 = shufflevector <2 x double> %1123, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %1125 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1123, <2 x double> %1124, <2 x double> %1113)
  %1126 = extractelement <2 x double> %1125, i64 0
  %1127 = fadd double %.514931688, %1126
  %indvars.iv.next1889 = add nsw i64 %indvars.iv1888, -1
  %.not1599.not = icmp sgt i64 %indvars.iv.next1889, %.pre-phi
  br i1 %.not1599.not, label %.lr.ph1691, label %._crit_edge1692, !llvm.loop !88

._crit_edge1692:                                  ; preds = %.lr.ph1691, %._crit_edge1681
  %.51493.lcssa = phi double [ %1111, %._crit_edge1681 ], [ %1127, %.lr.ph1691 ]
  %1128 = phi <2 x double> [ zeroinitializer, %._crit_edge1681 ], [ %1125, %.lr.ph1691 ]
  %1129 = extractelement <2 x double> %1128, i64 0
  %1130 = fadd double %34, %1129
  %1131 = extractelement <2 x double> %1108, i64 0
  %1132 = fadd double %1131, %1130
  br i1 %899, label %1136, label %1133

1133:                                             ; preds = %._crit_edge1692
  %1134 = fcmp olt double %1132, 0.000000e+00
  br i1 %1134, label %1135, label %1139

1135:                                             ; preds = %1133
  br label %1139

1136:                                             ; preds = %._crit_edge1692
  %1137 = fcmp ogt double %1132, 0.000000e+00
  br i1 %1137, label %1138, label %1139

1138:                                             ; preds = %1136
  br label %1139

1139:                                             ; preds = %1136, %1138, %1133, %1135
  %.not16011649 = phi i1 [ false, %1135 ], [ true, %1133 ], [ false, %1138 ], [ true, %1136 ]
  %1140 = icmp eq i32 %.01498, 1
  %1141 = icmp eq i32 %.01498, %1009
  %or.cond1648 = or i1 %1140, %1141
  %1142 = getelementptr inbounds double, ptr %19, i64 %.pre-phi
  %1143 = load double, ptr %1142, align 8, !tbaa !9
  %1144 = getelementptr inbounds double, ptr %17, i64 %.pre-phi
  %1145 = load double, ptr %1144, align 8, !tbaa !9
  %1146 = getelementptr inbounds double, ptr %18, i64 %.pre-phi
  %1147 = load double, ptr %1146, align 8, !tbaa !9
  %1148 = fmul double %1145, %1147
  %1149 = fdiv double %1143, %1148
  %1150 = extractelement <2 x double> %1128, i64 1
  %1151 = extractelement <2 x double> %1108, i64 1
  %1152 = fadd double %1151, %1150
  %1153 = tail call double @llvm.fmuladd.f64(double %1149, double %1149, double %1152)
  %1154 = fmul double %1143, %1149
  %1155 = fadd double %1132, %1154
  store double %1155, ptr %11, align 8, !tbaa !9
  %1156 = fsub <2 x double> %1128, %1108
  %1157 = extractelement <2 x double> %1156, i64 0
  %1158 = tail call double @llvm.fmuladd.f64(double %1157, double 8.000000e+00, double %.51493.lcssa)
  %1159 = tail call double @llvm.fmuladd.f64(double %34, double 2.000000e+00, double %1158)
  %1160 = fcmp oge double %1154, 0.000000e+00
  %1161 = fneg double %1154
  %1162 = select i1 %1160, double %1154, double %1161
  %1163 = tail call double @llvm.fmuladd.f64(double %1162, double 3.000000e+00, double %1159)
  %1164 = fcmp oge double %1155, 0.000000e+00
  %1165 = fneg double %1155
  %1166 = select i1 %1164, double %1155, double %1165
  %1167 = fmul double %32, %1163
  %1168 = fcmp ugt double %1166, %1167
  br i1 %1168, label %1169, label %.loopexit1653

1169:                                             ; preds = %1139
  %1170 = fcmp ugt double %1155, 0.000000e+00
  br i1 %1170, label %1174, label %1171

1171:                                             ; preds = %1169
  %1172 = fcmp oge double %.01547, %.21481
  %1173 = select i1 %1172, double %.01547, double %.21481
  br label %1177

1174:                                             ; preds = %1169
  %1175 = fcmp ole double %.01531, %.21481
  %1176 = select i1 %1175, double %.01531, double %.21481
  br label %1177

1177:                                             ; preds = %1174, %1171
  %.11548 = phi double [ %1173, %1171 ], [ %.01547, %1174 ]
  %.11532 = phi double [ %.01531, %1171 ], [ %1176, %1174 ]
  store i32 2, ptr %12, align 4, !tbaa !5
  %.not1601 = or i1 %or.cond1648, %.not16011649
  br i1 %.not1601, label %1178, label %1254

1178:                                             ; preds = %1177
  %1179 = load double, ptr %882, align 8, !tbaa !9
  %1180 = load double, ptr %884, align 8, !tbaa !9
  %1181 = fmul double %1179, %1180
  %1182 = load i32, ptr %1, align 4, !tbaa !5
  %1183 = sext i32 %1182 to i64
  %1184 = getelementptr inbounds double, ptr %17, i64 %1183
  %1185 = load double, ptr %1184, align 8, !tbaa !9
  %1186 = getelementptr inbounds double, ptr %18, i64 %1183
  %1187 = load double, ptr %1186, align 8, !tbaa !9
  %1188 = fmul double %1185, %1187
  br i1 %899, label %1197, label %1189

1189:                                             ; preds = %1178
  %1190 = getelementptr inbounds double, ptr %19, i64 %1183
  %1191 = load double, ptr %1190, align 8, !tbaa !9
  %1192 = fdiv double %1191, %1188
  %1193 = fneg double %1181
  %1194 = tail call double @llvm.fmuladd.f64(double %1193, double %1153, double %1155)
  %1195 = fmul double %1192, %1192
  %1196 = tail call double @llvm.fmuladd.f64(double %740, double %1195, double %1194)
  br label %1205

1197:                                             ; preds = %1178
  %1198 = load double, ptr %880, align 8, !tbaa !9
  %1199 = fdiv double %1198, %1181
  %1200 = fneg double %1188
  %1201 = tail call double @llvm.fmuladd.f64(double %1200, double %1153, double %1155)
  %1202 = fmul double %1199, %1199
  %1203 = fneg double %740
  %1204 = tail call double @llvm.fmuladd.f64(double %1203, double %1202, double %1201)
  br label %1205

1205:                                             ; preds = %1197, %1189
  %1206 = phi double [ %1204, %1197 ], [ %1196, %1189 ]
  store double %1206, ptr %10, align 8, !tbaa !9
  %1207 = fadd double %1181, %1188
  %1208 = fmul double %1181, %1188
  %1209 = fneg double %1208
  %1210 = fmul double %1153, %1209
  %1211 = tail call double @llvm.fmuladd.f64(double %1207, double %1155, double %1210)
  %1212 = fmul double %1155, %1208
  %1213 = fcmp oeq double %1206, 0.000000e+00
  br i1 %1213, label %1214, label %1230

1214:                                             ; preds = %1205
  %1215 = fcmp oeq double %1211, 0.000000e+00
  br i1 %1215, label %1216, label %1228

1216:                                             ; preds = %1214
  br i1 %899, label %1223, label %1217

1217:                                             ; preds = %1216
  %1218 = getelementptr inbounds double, ptr %19, i64 %1183
  %1219 = load double, ptr %1218, align 8, !tbaa !9
  %1220 = fmul double %1181, %1181
  %1221 = fmul double %1152, %1220
  %1222 = tail call double @llvm.fmuladd.f64(double %1219, double %1219, double %1221)
  br label %1228

1223:                                             ; preds = %1216
  %1224 = load double, ptr %880, align 8, !tbaa !9
  %1225 = fmul double %1188, %1188
  %1226 = fmul double %1152, %1225
  %1227 = tail call double @llvm.fmuladd.f64(double %1224, double %1224, double %1226)
  br label %1228

1228:                                             ; preds = %1217, %1223, %1214
  %.01527 = phi double [ %1222, %1217 ], [ %1227, %1223 ], [ %1211, %1214 ]
  %1229 = fdiv double %1212, %.01527
  store double %1229, ptr %16, align 8, !tbaa !9
  br label %1402

1230:                                             ; preds = %1205
  %1231 = fcmp ugt double %1211, 0.000000e+00
  br i1 %1231, label %1243, label %1232

1232:                                             ; preds = %1230
  %1233 = fmul double %1212, -4.000000e+00
  %1234 = fmul double %1233, %1206
  %1235 = tail call double @llvm.fmuladd.f64(double %1211, double %1211, double %1234)
  %1236 = fcmp oge double %1235, 0.000000e+00
  %1237 = fneg double %1235
  %1238 = select i1 %1236, double %1235, double %1237
  %1239 = tail call double @sqrt(double noundef %1238) #6
  %1240 = fsub double %1211, %1239
  %1241 = fmul double %1206, 2.000000e+00
  %1242 = fdiv double %1240, %1241
  store double %1242, ptr %16, align 8, !tbaa !9
  br label %1402

1243:                                             ; preds = %1230
  %1244 = fmul double %1212, 2.000000e+00
  %1245 = fmul double %1212, -4.000000e+00
  %1246 = fmul double %1245, %1206
  %1247 = tail call double @llvm.fmuladd.f64(double %1211, double %1211, double %1246)
  %1248 = fcmp oge double %1247, 0.000000e+00
  %1249 = fneg double %1247
  %1250 = select i1 %1248, double %1247, double %1249
  %1251 = tail call double @sqrt(double noundef %1250) #6
  %1252 = fadd double %1211, %1251
  %1253 = fdiv double %1244, %1252
  store double %1253, ptr %16, align 8, !tbaa !9
  br label %1402

1254:                                             ; preds = %1177
  %1255 = sext i32 %1061 to i64
  %1256 = getelementptr inbounds double, ptr %17, i64 %1255
  %1257 = load double, ptr %1256, align 8, !tbaa !9
  %1258 = getelementptr inbounds double, ptr %18, i64 %1255
  %1259 = load double, ptr %1258, align 8, !tbaa !9
  %1260 = fmul double %1257, %1259
  %1261 = sext i32 %1062 to i64
  %1262 = getelementptr inbounds double, ptr %17, i64 %1261
  %1263 = load double, ptr %1262, align 8, !tbaa !9
  %1264 = getelementptr inbounds double, ptr %18, i64 %1261
  %1265 = load double, ptr %1264, align 8, !tbaa !9
  %1266 = fmul double %1263, %1265
  %1267 = fadd double %34, %1131
  %1268 = fadd double %1267, %1129
  br i1 %899, label %1294, label %1269

1269:                                             ; preds = %1254
  %1270 = getelementptr inbounds double, ptr %19, i64 %1255
  %1271 = load double, ptr %1270, align 8, !tbaa !9
  %1272 = fdiv double %1271, %1260
  %1273 = fmul double %1272, %1272
  %1274 = fneg double %1266
  %1275 = tail call double @llvm.fmuladd.f64(double %1274, double %1152, double %1268)
  %1276 = getelementptr inbounds double, ptr %20, i64 %1255
  %1277 = load double, ptr %1276, align 8, !tbaa !9
  %1278 = getelementptr inbounds double, ptr %20, i64 %1261
  %1279 = load double, ptr %1278, align 8, !tbaa !9
  %1280 = fsub double %1277, %1279
  %1281 = fadd double %1277, %1279
  %1282 = fneg double %1280
  %1283 = fmul double %1281, %1282
  %1284 = tail call double @llvm.fmuladd.f64(double %1283, double %1273, double %1275)
  store double %1284, ptr %10, align 8, !tbaa !9
  %1285 = fmul double %1271, %1271
  store double %1285, ptr %14, align 16, !tbaa !9
  %1286 = fcmp olt double %1151, %1273
  %1287 = fmul double %1266, %1266
  br i1 %1286, label %1288, label %1290

1288:                                             ; preds = %1269
  %1289 = fmul double %1150, %1287
  br label %1315

1290:                                             ; preds = %1269
  %1291 = fsub double %1151, %1273
  %1292 = fadd double %1150, %1291
  %1293 = fmul double %1287, %1292
  br label %1315

1294:                                             ; preds = %1254
  %1295 = getelementptr inbounds double, ptr %19, i64 %1261
  %1296 = load double, ptr %1295, align 8, !tbaa !9
  %1297 = fdiv double %1296, %1266
  %1298 = fmul double %1297, %1297
  %1299 = fneg double %1260
  %1300 = tail call double @llvm.fmuladd.f64(double %1299, double %1152, double %1268)
  %1301 = getelementptr inbounds double, ptr %20, i64 %1261
  %1302 = load double, ptr %1301, align 8, !tbaa !9
  %1303 = getelementptr inbounds double, ptr %20, i64 %1255
  %1304 = load double, ptr %1303, align 8, !tbaa !9
  %1305 = fsub double %1302, %1304
  %1306 = fadd double %1302, %1304
  %1307 = fneg double %1305
  %1308 = fmul double %1306, %1307
  %1309 = tail call double @llvm.fmuladd.f64(double %1308, double %1298, double %1300)
  store double %1309, ptr %10, align 8, !tbaa !9
  %1310 = fcmp olt double %1150, %1298
  %1311 = fmul double %1260, %1260
  %1312 = fsub double %1150, %1298
  %1313 = fadd double %1151, %1312
  %storemerge1605.v = select i1 %1310, double %1151, double %1313
  %storemerge1605 = fmul double %storemerge1605.v, %1311
  store double %storemerge1605, ptr %14, align 16, !tbaa !9
  %1314 = fmul double %1296, %1296
  br label %1315

1315:                                             ; preds = %1288, %1290, %1294
  %.sink = phi double [ %1289, %1288 ], [ %1293, %1290 ], [ %1314, %1294 ]
  %1316 = getelementptr inbounds i8, ptr %14, i64 16
  store double %.sink, ptr %1316, align 16, !tbaa !9
  %1317 = fmul double %1143, %1143
  %1318 = getelementptr inbounds i8, ptr %14, i64 8
  store double %1317, ptr %1318, align 8, !tbaa !9
  store double %1260, ptr %13, align 16, !tbaa !9
  %1319 = getelementptr inbounds i8, ptr %13, i64 8
  store double %1148, ptr %1319, align 8, !tbaa !9
  %1320 = getelementptr inbounds i8, ptr %13, i64 16
  store double %1266, ptr %1320, align 16, !tbaa !9
  call void @dlaed6_(ptr noundef nonnull %12, ptr noundef nonnull %15, ptr noundef nonnull %10, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %11, ptr noundef nonnull %16, ptr noundef nonnull %8) #6
  %1321 = load i32, ptr %8, align 4, !tbaa !5
  %.not1606 = icmp eq i32 %1321, 0
  br i1 %.not1606, label %._crit_edge1958, label %1322

._crit_edge1958:                                  ; preds = %1315
  %.pre = load double, ptr %16, align 8, !tbaa !9
  br label %1402

1322:                                             ; preds = %1315
  store i32 0, ptr %8, align 4, !tbaa !5
  %1323 = load double, ptr %882, align 8, !tbaa !9
  %1324 = load double, ptr %884, align 8, !tbaa !9
  %1325 = fmul double %1323, %1324
  %1326 = load i32, ptr %1, align 4, !tbaa !5
  %1327 = sext i32 %1326 to i64
  %1328 = getelementptr inbounds double, ptr %17, i64 %1327
  %1329 = load double, ptr %1328, align 8, !tbaa !9
  %1330 = getelementptr inbounds double, ptr %18, i64 %1327
  %1331 = load double, ptr %1330, align 8, !tbaa !9
  %1332 = fmul double %1329, %1331
  %1333 = load i32, ptr %15, align 4, !tbaa !5
  %.not1607 = icmp eq i32 %1333, 0
  br i1 %.not1607, label %1343, label %1334

1334:                                             ; preds = %1322
  %1335 = getelementptr inbounds double, ptr %19, i64 %1327
  %1336 = load double, ptr %1335, align 8, !tbaa !9
  %1337 = fdiv double %1336, %1332
  %1338 = load double, ptr %11, align 8, !tbaa !9
  %1339 = fneg double %1325
  %1340 = call double @llvm.fmuladd.f64(double %1339, double %1153, double %1338)
  %1341 = fmul double %1337, %1337
  %1342 = call double @llvm.fmuladd.f64(double %740, double %1341, double %1340)
  br label %1352

1343:                                             ; preds = %1322
  %1344 = load double, ptr %880, align 8, !tbaa !9
  %1345 = fdiv double %1344, %1325
  %1346 = load double, ptr %11, align 8, !tbaa !9
  %1347 = fneg double %1332
  %1348 = call double @llvm.fmuladd.f64(double %1347, double %1153, double %1346)
  %1349 = fmul double %1345, %1345
  %1350 = fneg double %740
  %1351 = call double @llvm.fmuladd.f64(double %1350, double %1349, double %1348)
  br label %1352

1352:                                             ; preds = %1343, %1334
  %1353 = phi double [ %1346, %1343 ], [ %1338, %1334 ]
  %storemerge1608 = phi double [ %1351, %1343 ], [ %1342, %1334 ]
  store double %storemerge1608, ptr %10, align 8, !tbaa !9
  %1354 = fadd double %1325, %1332
  %1355 = fmul double %1325, %1332
  %1356 = fneg double %1355
  %1357 = fmul double %1153, %1356
  %1358 = call double @llvm.fmuladd.f64(double %1354, double %1353, double %1357)
  %1359 = fmul double %1355, %1353
  %1360 = fcmp oeq double %storemerge1608, 0.000000e+00
  br i1 %1360, label %1361, label %1377

1361:                                             ; preds = %1352
  %1362 = fcmp oeq double %1358, 0.000000e+00
  br i1 %1362, label %1363, label %1375

1363:                                             ; preds = %1361
  br i1 %.not1607, label %1370, label %1364

1364:                                             ; preds = %1363
  %1365 = getelementptr inbounds double, ptr %19, i64 %1327
  %1366 = load double, ptr %1365, align 8, !tbaa !9
  %1367 = fmul double %1325, %1325
  %1368 = fmul double %1152, %1367
  %1369 = call double @llvm.fmuladd.f64(double %1366, double %1366, double %1368)
  br label %1375

1370:                                             ; preds = %1363
  %1371 = load double, ptr %880, align 8, !tbaa !9
  %1372 = fmul double %1332, %1332
  %1373 = fmul double %1152, %1372
  %1374 = call double @llvm.fmuladd.f64(double %1371, double %1371, double %1373)
  br label %1375

1375:                                             ; preds = %1364, %1370, %1361
  %.11528 = phi double [ %1369, %1364 ], [ %1374, %1370 ], [ %1358, %1361 ]
  %1376 = fdiv double %1359, %.11528
  store double %1376, ptr %16, align 8, !tbaa !9
  br label %1402

1377:                                             ; preds = %1352
  %1378 = fcmp ugt double %1358, 0.000000e+00
  br i1 %1378, label %1391, label %1379

1379:                                             ; preds = %1377
  %1380 = fmul double %1359, -4.000000e+00
  %1381 = fmul double %storemerge1608, %1380
  %1382 = call double @llvm.fmuladd.f64(double %1358, double %1358, double %1381)
  %1383 = fcmp oge double %1382, 0.000000e+00
  %1384 = fneg double %1382
  %1385 = select i1 %1383, double %1382, double %1384
  %1386 = call double @sqrt(double noundef %1385) #6
  %1387 = fsub double %1358, %1386
  %1388 = load double, ptr %10, align 8, !tbaa !9
  %1389 = fmul double %1388, 2.000000e+00
  %1390 = fdiv double %1387, %1389
  store double %1390, ptr %16, align 8, !tbaa !9
  br label %1402

1391:                                             ; preds = %1377
  %1392 = fmul double %1359, 2.000000e+00
  %1393 = fmul double %1359, -4.000000e+00
  %1394 = fmul double %storemerge1608, %1393
  %1395 = call double @llvm.fmuladd.f64(double %1358, double %1358, double %1394)
  %1396 = fcmp oge double %1395, 0.000000e+00
  %1397 = fneg double %1395
  %1398 = select i1 %1396, double %1395, double %1397
  %1399 = call double @sqrt(double noundef %1398) #6
  %1400 = fadd double %1358, %1399
  %1401 = fdiv double %1392, %1400
  store double %1401, ptr %16, align 8, !tbaa !9
  br label %1402

1402:                                             ; preds = %._crit_edge1958, %1379, %1391, %1375, %1228, %1243, %1232
  %1403 = phi double [ %1376, %1375 ], [ %1390, %1379 ], [ %1401, %1391 ], [ %.pre, %._crit_edge1958 ], [ %1229, %1228 ], [ %1242, %1232 ], [ %1253, %1243 ]
  %.21501 = phi i32 [ 0, %1375 ], [ 0, %1379 ], [ 0, %1391 ], [ 1, %._crit_edge1958 ], [ 0, %1228 ], [ 0, %1232 ], [ 0, %1243 ]
  %1404 = load double, ptr %11, align 8, !tbaa !9
  %1405 = fmul double %1404, %1403
  %1406 = fcmp ult double %1405, 0.000000e+00
  br i1 %1406, label %1410, label %1407

1407:                                             ; preds = %1402
  %1408 = fneg double %1404
  %1409 = fdiv double %1408, %1153
  store double %1409, ptr %16, align 8, !tbaa !9
  br label %1410

1410:                                             ; preds = %1407, %1402
  %1411 = phi double [ %1409, %1407 ], [ %1403, %1402 ]
  %1412 = load double, ptr %6, align 8, !tbaa !9
  %1413 = call double @llvm.fmuladd.f64(double %1412, double %1412, double %1411)
  %1414 = call double @sqrt(double noundef %1413) #6
  %1415 = fadd double %1412, %1414
  %1416 = load double, ptr %16, align 8, !tbaa !9
  %1417 = fdiv double %1416, %1415
  store double %1417, ptr %16, align 8, !tbaa !9
  %1418 = fadd double %.21481, %1417
  %1419 = fcmp ogt double %1418, %.11532
  %1420 = fcmp olt double %1418, %.11548
  %or.cond1646 = select i1 %1419, i1 true, i1 %1420
  br i1 %or.cond1646, label %1421, label %1437

1421:                                             ; preds = %1410
  %1422 = load double, ptr %11, align 8, !tbaa !9
  %1423 = fcmp olt double %1422, 0.000000e+00
  %.11532..11548 = select i1 %1423, double %.11532, double %.11548
  %storemerge1610.in = fsub double %.11532..11548, %.21481
  %storemerge1610 = fmul double %storemerge1610.in, 5.000000e-01
  store double %storemerge1610, ptr %16, align 8, !tbaa !9
  br i1 %.not1611, label %1437, label %1424

1424:                                             ; preds = %1421
  br i1 %1423, label %1425, label %1431

1425:                                             ; preds = %1424
  %1426 = fcmp ogt double %.21481, 0.000000e+00
  br i1 %1426, label %1427, label %1437

1427:                                             ; preds = %1425
  %1428 = fmul double %.21481, %.11532
  %1429 = call double @sqrt(double noundef %1428) #6
  %1430 = fsub double %1429, %.21481
  store double %1430, ptr %16, align 8, !tbaa !9
  br label %1437

1431:                                             ; preds = %1424
  %1432 = fcmp ogt double %.11548, 0.000000e+00
  br i1 %1432, label %1433, label %1437

1433:                                             ; preds = %1431
  %1434 = fmul double %.21481, %.11548
  %1435 = call double @sqrt(double noundef %1434) #6
  %1436 = fsub double %1435, %.21481
  store double %1436, ptr %16, align 8, !tbaa !9
  br label %1437

1437:                                             ; preds = %1410, %1421, %1431, %1433, %1425, %1427
  %1438 = phi double [ %1417, %1410 ], [ %storemerge1610, %1421 ], [ %storemerge1610, %1431 ], [ %1436, %1433 ], [ %storemerge1610, %1425 ], [ %1430, %1427 ]
  %1439 = load double, ptr %11, align 8, !tbaa !9
  %1440 = fadd double %.21481, %1438
  %1441 = load double, ptr %6, align 8, !tbaa !9
  %1442 = fadd double %1438, %1441
  store double %1442, ptr %6, align 8, !tbaa !9
  %1443 = load i32, ptr %0, align 4, !tbaa !5
  %.not16121696 = icmp slt i32 %1443, 1
  br i1 %.not16121696, label %.preheader1654, label %.lr.ph1699.preheader

.lr.ph1699.preheader:                             ; preds = %1437
  %1444 = add nuw i32 %1443, 1
  %wide.trip.count1894 = zext i32 %1444 to i64
  %1445 = zext nneg i32 %1443 to i64
  %min.iters.check2105 = icmp ult i32 %1443, 6
  br i1 %min.iters.check2105, label %.lr.ph1699.preheader2317, label %vector.memcheck2097

.lr.ph1699.preheader2317:                         ; preds = %middle.block2103, %vector.memcheck2097, %.lr.ph1699.preheader
  %indvars.iv1891.ph = phi i64 [ 1, %vector.memcheck2097 ], [ 1, %.lr.ph1699.preheader ], [ %ind.end2109, %middle.block2103 ]
  %1446 = zext nneg i32 %1443 to i64
  %1447 = and i32 %1443, 1
  %lcmp.mod2340.not = icmp eq i32 %1447, 0
  br i1 %lcmp.mod2340.not, label %.lr.ph1699.prol.loopexit, label %.lr.ph1699.prol

.lr.ph1699.prol:                                  ; preds = %.lr.ph1699.preheader2317
  %1448 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1891.ph
  %1449 = load double, ptr %1448, align 8, !tbaa !9
  %1450 = fadd double %1438, %1449
  store double %1450, ptr %1448, align 8, !tbaa !9
  %1451 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1891.ph
  %1452 = load double, ptr %1451, align 8, !tbaa !9
  %1453 = fsub double %1452, %1438
  store double %1453, ptr %1451, align 8, !tbaa !9
  %indvars.iv.next1892.prol = add nuw nsw i64 %indvars.iv1891.ph, 1
  br label %.lr.ph1699.prol.loopexit

.lr.ph1699.prol.loopexit:                         ; preds = %.lr.ph1699.prol, %.lr.ph1699.preheader2317
  %indvars.iv1891.unr = phi i64 [ %indvars.iv1891.ph, %.lr.ph1699.preheader2317 ], [ %indvars.iv.next1892.prol, %.lr.ph1699.prol ]
  %1454 = icmp eq i64 %indvars.iv1891.ph, %1446
  br i1 %1454, label %.preheader1654, label %.lr.ph1699

vector.memcheck2097:                              ; preds = %.lr.ph1699.preheader
  %1455 = shl nuw nsw i64 %wide.trip.count1894, 3
  %1456 = add nsw i64 %1455, -8
  %scevgep2098 = getelementptr i8, ptr %7, i64 %1456
  %scevgep2099 = getelementptr i8, ptr %4, i64 %1456
  %bound02100 = icmp ugt ptr %scevgep2099, %7
  %bound12101 = icmp ugt ptr %scevgep2098, %4
  %found.conflict2102 = and i1 %bound02100, %bound12101
  br i1 %found.conflict2102, label %.lr.ph1699.preheader2317, label %vector.ph2106

vector.ph2106:                                    ; preds = %vector.memcheck2097
  %n.vec2108 = and i64 %1445, 2147483644
  %ind.end2109 = or disjoint i64 %n.vec2108, 1
  %broadcast.splatinsert2116 = insertelement <2 x double> poison, double %1438, i64 0
  %broadcast.splat2117 = shufflevector <2 x double> %broadcast.splatinsert2116, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body2111

vector.body2111:                                  ; preds = %vector.body2111, %vector.ph2106
  %index2112 = phi i64 [ 0, %vector.ph2106 ], [ %index.next2120, %vector.body2111 ]
  %1457 = getelementptr double, ptr %7, i64 %index2112
  %1458 = getelementptr inbounds i8, ptr %1457, i64 16
  %wide.load2114 = load <2 x double>, ptr %1457, align 8, !tbaa !9, !alias.scope !89, !noalias !92
  %wide.load2115 = load <2 x double>, ptr %1458, align 8, !tbaa !9, !alias.scope !89, !noalias !92
  %1459 = fadd <2 x double> %broadcast.splat2117, %wide.load2114
  %1460 = fadd <2 x double> %broadcast.splat2117, %wide.load2115
  store <2 x double> %1459, ptr %1457, align 8, !tbaa !9, !alias.scope !89, !noalias !92
  store <2 x double> %1460, ptr %1458, align 8, !tbaa !9, !alias.scope !89, !noalias !92
  %1461 = getelementptr double, ptr %4, i64 %index2112
  %1462 = getelementptr inbounds i8, ptr %1461, i64 16
  %wide.load2118 = load <2 x double>, ptr %1461, align 8, !tbaa !9, !alias.scope !92
  %wide.load2119 = load <2 x double>, ptr %1462, align 8, !tbaa !9, !alias.scope !92
  %1463 = fsub <2 x double> %wide.load2118, %broadcast.splat2117
  %1464 = fsub <2 x double> %wide.load2119, %broadcast.splat2117
  store <2 x double> %1463, ptr %1461, align 8, !tbaa !9, !alias.scope !92
  store <2 x double> %1464, ptr %1462, align 8, !tbaa !9, !alias.scope !92
  %index.next2120 = add nuw i64 %index2112, 4
  %1465 = icmp eq i64 %index.next2120, %n.vec2108
  br i1 %1465, label %middle.block2103, label %vector.body2111, !llvm.loop !94

middle.block2103:                                 ; preds = %vector.body2111
  %cmp.n2121 = icmp eq i64 %n.vec2108, %1445
  br i1 %cmp.n2121, label %.preheader1654, label %.lr.ph1699.preheader2317

.preheader1654:                                   ; preds = %.lr.ph1699.prol.loopexit, %.lr.ph1699, %middle.block2103, %1437
  br i1 %.not1598.not1674, label %.lr.ph1705.preheader, label %._crit_edge1706

.lr.ph1705.preheader:                             ; preds = %.preheader1654
  %wide.trip.count1899 = zext nneg i32 %.01498 to i64
  %1466 = add nsw i64 %wide.trip.count1899, -1
  %xtraiter2341 = and i64 %1466, 1
  %1467 = icmp eq i32 %.01498, 2
  br i1 %1467, label %._crit_edge1706.loopexit.unr-lcssa, label %.lr.ph1705.preheader.new

.lr.ph1705.preheader.new:                         ; preds = %.lr.ph1705.preheader
  %unroll_iter2347 = and i64 %1466, -2
  br label %.lr.ph1705

.lr.ph1699:                                       ; preds = %.lr.ph1699.prol.loopexit, %.lr.ph1699
  %indvars.iv1891 = phi i64 [ %indvars.iv.next1892.1, %.lr.ph1699 ], [ %indvars.iv1891.unr, %.lr.ph1699.prol.loopexit ]
  %1468 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1891
  %1469 = load double, ptr %1468, align 8, !tbaa !9
  %1470 = fadd double %1438, %1469
  store double %1470, ptr %1468, align 8, !tbaa !9
  %1471 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1891
  %1472 = load double, ptr %1471, align 8, !tbaa !9
  %1473 = fsub double %1472, %1438
  store double %1473, ptr %1471, align 8, !tbaa !9
  %1474 = getelementptr double, ptr %7, i64 %indvars.iv1891
  %1475 = load double, ptr %1474, align 8, !tbaa !9
  %1476 = fadd double %1438, %1475
  store double %1476, ptr %1474, align 8, !tbaa !9
  %1477 = getelementptr double, ptr %4, i64 %indvars.iv1891
  %1478 = load double, ptr %1477, align 8, !tbaa !9
  %1479 = fsub double %1478, %1438
  store double %1479, ptr %1477, align 8, !tbaa !9
  %indvars.iv.next1892.1 = add nuw nsw i64 %indvars.iv1891, 2
  %exitcond1895.not.1 = icmp eq i64 %indvars.iv.next1892.1, %wide.trip.count1894
  br i1 %exitcond1895.not.1, label %.preheader1654, label %.lr.ph1699, !llvm.loop !95

.lr.ph1705:                                       ; preds = %.lr.ph1705, %.lr.ph1705.preheader.new
  %indvars.iv1896 = phi i64 [ 1, %.lr.ph1705.preheader.new ], [ %indvars.iv.next1897.1, %.lr.ph1705 ]
  %.614941703 = phi double [ 0.000000e+00, %.lr.ph1705.preheader.new ], [ %1508, %.lr.ph1705 ]
  %1480 = phi <2 x double> [ zeroinitializer, %.lr.ph1705.preheader.new ], [ %1506, %.lr.ph1705 ]
  %niter2348 = phi i64 [ 0, %.lr.ph1705.preheader.new ], [ %niter2348.next.1, %.lr.ph1705 ]
  %1481 = getelementptr inbounds double, ptr %19, i64 %indvars.iv1896
  %1482 = load double, ptr %1481, align 8, !tbaa !9
  %1483 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1896
  %1484 = load double, ptr %1483, align 8, !tbaa !9
  %1485 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1896
  %1486 = load double, ptr %1485, align 8, !tbaa !9
  %1487 = fmul double %1484, %1486
  %1488 = fdiv double %1482, %1487
  %1489 = insertelement <2 x double> poison, double %1482, i64 0
  %1490 = insertelement <2 x double> %1489, double %1488, i64 1
  %1491 = shufflevector <2 x double> %1490, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %1492 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1490, <2 x double> %1491, <2 x double> %1480)
  %1493 = extractelement <2 x double> %1492, i64 0
  %1494 = fadd double %.614941703, %1493
  %1495 = getelementptr double, ptr %3, i64 %indvars.iv1896
  %1496 = load double, ptr %1495, align 8, !tbaa !9
  %1497 = getelementptr double, ptr %7, i64 %indvars.iv1896
  %1498 = load double, ptr %1497, align 8, !tbaa !9
  %1499 = getelementptr double, ptr %4, i64 %indvars.iv1896
  %1500 = load double, ptr %1499, align 8, !tbaa !9
  %1501 = fmul double %1498, %1500
  %1502 = fdiv double %1496, %1501
  %1503 = insertelement <2 x double> poison, double %1496, i64 0
  %1504 = insertelement <2 x double> %1503, double %1502, i64 1
  %1505 = shufflevector <2 x double> %1504, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %1506 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1504, <2 x double> %1505, <2 x double> %1492)
  %1507 = extractelement <2 x double> %1506, i64 0
  %1508 = fadd double %1494, %1507
  %indvars.iv.next1897.1 = add nuw nsw i64 %indvars.iv1896, 2
  %niter2348.next.1 = add i64 %niter2348, 2
  %niter2348.ncmp.1 = icmp eq i64 %niter2348.next.1, %unroll_iter2347
  br i1 %niter2348.ncmp.1, label %._crit_edge1706.loopexit.unr-lcssa.loopexit, label %.lr.ph1705, !llvm.loop !96

._crit_edge1706.loopexit.unr-lcssa.loopexit:      ; preds = %.lr.ph1705
  %1509 = extractelement <2 x double> %1506, i64 1
  br label %._crit_edge1706.loopexit.unr-lcssa

._crit_edge1706.loopexit.unr-lcssa:               ; preds = %._crit_edge1706.loopexit.unr-lcssa.loopexit, %.lr.ph1705.preheader
  %.lcssa2316.ph = phi double [ poison, %.lr.ph1705.preheader ], [ %1507, %._crit_edge1706.loopexit.unr-lcssa.loopexit ]
  %.lcssa2315.ph = phi double [ poison, %.lr.ph1705.preheader ], [ %1508, %._crit_edge1706.loopexit.unr-lcssa.loopexit ]
  %.lcssa2314.ph = phi double [ poison, %.lr.ph1705.preheader ], [ %1509, %._crit_edge1706.loopexit.unr-lcssa.loopexit ]
  %indvars.iv1896.unr = phi i64 [ 1, %.lr.ph1705.preheader ], [ %indvars.iv.next1897.1, %._crit_edge1706.loopexit.unr-lcssa.loopexit ]
  %.614941703.unr = phi double [ 0.000000e+00, %.lr.ph1705.preheader ], [ %1508, %._crit_edge1706.loopexit.unr-lcssa.loopexit ]
  %.unr2342 = phi <2 x double> [ zeroinitializer, %.lr.ph1705.preheader ], [ %1506, %._crit_edge1706.loopexit.unr-lcssa.loopexit ]
  %lcmp.mod2343.not = icmp eq i64 %xtraiter2341, 0
  br i1 %lcmp.mod2343.not, label %._crit_edge1706, label %.lr.ph1705.epil

.lr.ph1705.epil:                                  ; preds = %._crit_edge1706.loopexit.unr-lcssa
  %1510 = getelementptr inbounds double, ptr %19, i64 %indvars.iv1896.unr
  %1511 = load double, ptr %1510, align 8, !tbaa !9
  %1512 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1896.unr
  %1513 = load double, ptr %1512, align 8, !tbaa !9
  %1514 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1896.unr
  %1515 = load double, ptr %1514, align 8, !tbaa !9
  %1516 = fmul double %1513, %1515
  %1517 = fdiv double %1511, %1516
  %1518 = insertelement <2 x double> poison, double %1511, i64 0
  %1519 = insertelement <2 x double> %1518, double %1517, i64 1
  %1520 = shufflevector <2 x double> %1519, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %1521 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1519, <2 x double> %1520, <2 x double> %.unr2342)
  %1522 = extractelement <2 x double> %1521, i64 0
  %1523 = fadd double %.614941703.unr, %1522
  %1524 = extractelement <2 x double> %1521, i64 1
  br label %._crit_edge1706

._crit_edge1706:                                  ; preds = %.lr.ph1705.epil, %._crit_edge1706.loopexit.unr-lcssa, %.preheader1654
  %.51540.lcssa = phi double [ 0.000000e+00, %.preheader1654 ], [ %.lcssa2314.ph, %._crit_edge1706.loopexit.unr-lcssa ], [ %1524, %.lr.ph1705.epil ]
  %.61494.lcssa = phi double [ 0.000000e+00, %.preheader1654 ], [ %.lcssa2315.ph, %._crit_edge1706.loopexit.unr-lcssa ], [ %1523, %.lr.ph1705.epil ]
  %.6.lcssa = phi double [ 0.000000e+00, %.preheader1654 ], [ %.lcssa2316.ph, %._crit_edge1706.loopexit.unr-lcssa ], [ %1522, %.lr.ph1705.epil ]
  %1525 = fcmp oge double %.61494.lcssa, 0.000000e+00
  %1526 = fneg double %.61494.lcssa
  %1527 = select i1 %1525, double %.61494.lcssa, double %1526
  %.not1614.not1710 = icmp sgt i32 %1443, %.01498
  br i1 %.not1614.not1710, label %.lr.ph1716.preheader, label %._crit_edge1717

.lr.ph1716.preheader:                             ; preds = %._crit_edge1706
  %1528 = sext i32 %1443 to i64
  br label %.lr.ph1716

.lr.ph1716:                                       ; preds = %.lr.ph1716.preheader, %.lr.ph1716
  %indvars.iv1901 = phi i64 [ %1528, %.lr.ph1716.preheader ], [ %indvars.iv.next1902, %.lr.ph1716 ]
  %.714951713 = phi double [ %1527, %.lr.ph1716.preheader ], [ %1543, %.lr.ph1716 ]
  %1529 = phi <2 x double> [ zeroinitializer, %.lr.ph1716.preheader ], [ %1541, %.lr.ph1716 ]
  %1530 = getelementptr inbounds double, ptr %19, i64 %indvars.iv1901
  %1531 = load double, ptr %1530, align 8, !tbaa !9
  %1532 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1901
  %1533 = load double, ptr %1532, align 8, !tbaa !9
  %1534 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1901
  %1535 = load double, ptr %1534, align 8, !tbaa !9
  %1536 = fmul double %1533, %1535
  %1537 = fdiv double %1531, %1536
  %1538 = insertelement <2 x double> poison, double %1531, i64 0
  %1539 = insertelement <2 x double> %1538, double %1537, i64 1
  %1540 = shufflevector <2 x double> %1539, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %1541 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1539, <2 x double> %1540, <2 x double> %1529)
  %1542 = extractelement <2 x double> %1541, i64 0
  %1543 = fadd double %.714951713, %1542
  %indvars.iv.next1902 = add nsw i64 %indvars.iv1901, -1
  %.not1614.not = icmp sgt i64 %indvars.iv.next1902, %.pre-phi
  br i1 %.not1614.not, label %.lr.ph1716, label %._crit_edge1717.loopexit, !llvm.loop !97

._crit_edge1717.loopexit:                         ; preds = %.lr.ph1716
  %1544 = extractelement <2 x double> %1541, i64 1
  br label %._crit_edge1717

._crit_edge1717:                                  ; preds = %._crit_edge1717.loopexit, %._crit_edge1706
  %.21506.lcssa = phi double [ 0.000000e+00, %._crit_edge1706 ], [ %1544, %._crit_edge1717.loopexit ]
  %.71495.lcssa = phi double [ %1527, %._crit_edge1706 ], [ %1543, %._crit_edge1717.loopexit ]
  %.21485.lcssa = phi double [ 0.000000e+00, %._crit_edge1706 ], [ %1542, %._crit_edge1717.loopexit ]
  %1545 = load double, ptr %1144, align 8, !tbaa !9
  %1546 = load double, ptr %1146, align 8, !tbaa !9
  %1547 = fmul double %1545, %1546
  %1548 = load double, ptr %1142, align 8, !tbaa !9
  %1549 = fdiv double %1548, %1547
  %1550 = fadd double %.51540.lcssa, %.21506.lcssa
  %1551 = fmul double %1548, %1549
  %1552 = fadd double %34, %.21485.lcssa
  %1553 = fadd double %.6.lcssa, %1552
  %1554 = fadd double %1553, %1551
  store double %1554, ptr %11, align 8, !tbaa !9
  %1555 = fsub double %.21485.lcssa, %.6.lcssa
  %1556 = call double @llvm.fmuladd.f64(double %1555, double 8.000000e+00, double %.71495.lcssa)
  %1557 = call double @llvm.fmuladd.f64(double %34, double 2.000000e+00, double %1556)
  %1558 = fcmp oge double %1551, 0.000000e+00
  %1559 = fneg double %1551
  %1560 = select i1 %1558, double %1551, double %1559
  %1561 = insertelement <2 x double> poison, double %1560, i64 0
  %1562 = insertelement <2 x double> %1561, double %1549, i64 1
  %1563 = insertelement <2 x double> %1562, double 3.000000e+00, i64 0
  %1564 = insertelement <2 x double> poison, double %1557, i64 0
  %1565 = insertelement <2 x double> %1564, double %1550, i64 1
  %1566 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1562, <2 x double> %1563, <2 x double> %1565)
  %1567 = load i32, ptr %15, align 4, !tbaa !5
  %.not1615 = icmp eq i32 %1567, 0
  br i1 %.not1615, label %1576, label %1568

1568:                                             ; preds = %._crit_edge1717
  %1569 = fneg double %1554
  %1570 = fcmp oge double %1439, 0.000000e+00
  %1571 = fneg double %1439
  %1572 = select i1 %1570, double %1439, double %1571
  %1573 = fdiv double %1572, 1.000000e+01
  %1574 = fcmp olt double %1573, %1569
  br i1 %1574, label %1575, label %1583

1575:                                             ; preds = %1568
  br label %1583

1576:                                             ; preds = %._crit_edge1717
  %1577 = fcmp oge double %1439, 0.000000e+00
  %1578 = fneg double %1439
  %1579 = select i1 %1577, double %1439, double %1578
  %1580 = fdiv double %1579, 1.000000e+01
  %1581 = fcmp ogt double %1554, %1580
  br i1 %1581, label %1582, label %1583

1582:                                             ; preds = %1576
  br label %1583

1583:                                             ; preds = %1576, %1582, %1568, %1575
  %.01513 = phi i32 [ 1, %1575 ], [ 0, %1568 ], [ 1, %1582 ], [ 0, %1576 ]
  %storemerge1616.in1746 = load i32, ptr %12, align 4, !tbaa !5
  %storemerge16161747 = add nsw i32 %storemerge1616.in1746, 1
  store i32 %storemerge16161747, ptr %12, align 4, !tbaa !5
  %1584 = icmp slt i32 %storemerge1616.in1746, 400
  br i1 %1584, label %.lr.ph1760, label %._crit_edge1761

.lr.ph1760:                                       ; preds = %1583
  %1585 = sext i32 %1061 to i64
  %1586 = getelementptr inbounds double, ptr %17, i64 %1585
  %1587 = getelementptr inbounds double, ptr %18, i64 %1585
  %1588 = sext i32 %1062 to i64
  %1589 = getelementptr inbounds double, ptr %17, i64 %1588
  %1590 = getelementptr inbounds double, ptr %18, i64 %1588
  %1591 = getelementptr inbounds i8, ptr %14, i64 16
  %1592 = getelementptr inbounds double, ptr %19, i64 %1585
  %1593 = getelementptr inbounds double, ptr %20, i64 %1585
  %1594 = getelementptr inbounds double, ptr %20, i64 %1588
  %1595 = getelementptr inbounds double, ptr %19, i64 %1588
  %1596 = getelementptr inbounds i8, ptr %13, i64 8
  %1597 = getelementptr inbounds i8, ptr %13, i64 16
  %1598 = fneg double %740
  %wide.trip.count1912 = zext i32 %.01498 to i64
  %scevgep2123 = getelementptr i8, ptr %7, i64 -8
  %scevgep2125 = getelementptr i8, ptr %4, i64 -8
  %1599 = add nsw i64 %wide.trip.count1912, -1
  %xtraiter2351 = and i64 %1599, 1
  %1600 = icmp eq i32 %.01498, 2
  %unroll_iter2357 = and i64 %1599, -2
  %lcmp.mod2353.not = icmp eq i64 %xtraiter2351, 0
  br label %1601

1601:                                             ; preds = %.lr.ph1760, %2069
  %1602 = phi double [ %1548, %.lr.ph1760 ], [ %2037, %2069 ]
  %1603 = phi double [ %1545, %.lr.ph1760 ], [ %2034, %2069 ]
  %1604 = phi double [ %1546, %.lr.ph1760 ], [ %2035, %2069 ]
  %1605 = phi double [ %1554, %.lr.ph1760 ], [ %2043, %2069 ]
  %.71758 = phi double [ %.6.lcssa, %.lr.ph1760 ], [ %.8.lcssa, %2069 ]
  %.314821757 = phi double [ %1440, %.lr.ph1760 ], [ %1932, %2069 ]
  %.314861756 = phi double [ %.21485.lcssa, %.lr.ph1760 ], [ %.41487.lcssa, %2069 ]
  %.315021753 = phi i32 [ %.21501, %.lr.ph1760 ], [ %.41503, %2069 ]
  %.315071752 = phi double [ %.21506.lcssa, %.lr.ph1760 ], [ %.81512.lcssa, %2069 ]
  %.115141751 = phi i32 [ %.01513, %.lr.ph1760 ], [ %.21515, %2069 ]
  %.215331750 = phi double [ %.11532, %.lr.ph1760 ], [ %.31534, %2069 ]
  %.615411749 = phi double [ %.51540.lcssa, %.lr.ph1760 ], [ %.111546.lcssa, %2069 ]
  %.215491748 = phi double [ %.11548, %.lr.ph1760 ], [ %.31550, %2069 ]
  %1606 = phi <2 x double> [ %1566, %.lr.ph1760 ], [ %2055, %2069 ]
  %1607 = fcmp oge double %1605, 0.000000e+00
  %1608 = fneg double %1605
  %1609 = select i1 %1607, double %1605, double %1608
  %1610 = extractelement <2 x double> %1606, i64 0
  %1611 = fmul double %32, %1610
  %1612 = fcmp ugt double %1609, %1611
  br i1 %1612, label %1613, label %.loopexit1653

1613:                                             ; preds = %1601
  %1614 = fcmp ugt double %1605, 0.000000e+00
  br i1 %1614, label %1618, label %1615

1615:                                             ; preds = %1613
  %1616 = fcmp oge double %.215491748, %.314821757
  %1617 = select i1 %1616, double %.215491748, double %.314821757
  br label %1621

1618:                                             ; preds = %1613
  %1619 = fcmp ole double %.215331750, %.314821757
  %1620 = select i1 %1619, double %.215331750, double %.314821757
  br label %1621

1621:                                             ; preds = %1618, %1615
  %.31550 = phi double [ %1617, %1615 ], [ %.215491748, %1618 ]
  %.31534 = phi double [ %.215331750, %1615 ], [ %1620, %1618 ]
  %.not1617 = icmp eq i32 %.315021753, 0
  br i1 %.not1617, label %1622, label %1722

1622:                                             ; preds = %1621
  %1623 = load double, ptr %882, align 8, !tbaa !9
  %1624 = load double, ptr %884, align 8, !tbaa !9
  %1625 = fmul double %1623, %1624
  %1626 = load i32, ptr %1, align 4, !tbaa !5
  %1627 = sext i32 %1626 to i64
  %1628 = getelementptr inbounds double, ptr %17, i64 %1627
  %1629 = load double, ptr %1628, align 8, !tbaa !9
  %1630 = getelementptr inbounds double, ptr %18, i64 %1627
  %1631 = load double, ptr %1630, align 8, !tbaa !9
  %1632 = fmul double %1629, %1631
  %.not1618 = icmp eq i32 %.115141751, 0
  br i1 %.not1618, label %1633, label %1652

1633:                                             ; preds = %1622
  %1634 = load i32, ptr %15, align 4, !tbaa !5
  %.not1619 = icmp eq i32 %1634, 0
  br i1 %.not1619, label %1644, label %1635

1635:                                             ; preds = %1633
  %1636 = getelementptr inbounds double, ptr %19, i64 %1627
  %1637 = load double, ptr %1636, align 8, !tbaa !9
  %1638 = fdiv double %1637, %1632
  %1639 = fneg double %1625
  %1640 = extractelement <2 x double> %1606, i64 1
  %1641 = call double @llvm.fmuladd.f64(double %1639, double %1640, double %1605)
  %1642 = fmul double %1638, %1638
  %1643 = call double @llvm.fmuladd.f64(double %740, double %1642, double %1641)
  store double %1643, ptr %10, align 8, !tbaa !9
  br label %1662

1644:                                             ; preds = %1633
  %1645 = load double, ptr %880, align 8, !tbaa !9
  %1646 = fdiv double %1645, %1625
  %1647 = fneg double %1632
  %1648 = extractelement <2 x double> %1606, i64 1
  %1649 = call double @llvm.fmuladd.f64(double %1647, double %1648, double %1605)
  %1650 = fmul double %1646, %1646
  %1651 = call double @llvm.fmuladd.f64(double %1598, double %1650, double %1649)
  store double %1651, ptr %10, align 8, !tbaa !9
  br label %1662

1652:                                             ; preds = %1622
  %1653 = fmul double %1603, %1604
  %1654 = fdiv double %1602, %1653
  %1655 = load i32, ptr %15, align 4, !tbaa !5
  %.not1620 = icmp eq i32 %1655, 0
  %1656 = call double @llvm.fmuladd.f64(double %1654, double %1654, double %.615411749)
  %1657 = call double @llvm.fmuladd.f64(double %1654, double %1654, double %.315071752)
  %.71542 = select i1 %.not1620, double %.615411749, double %1656
  %.41508 = select i1 %.not1620, double %1657, double %.315071752
  %1658 = fneg double %1632
  %1659 = call double @llvm.fmuladd.f64(double %1658, double %.71542, double %1605)
  %1660 = fneg double %1625
  %1661 = call double @llvm.fmuladd.f64(double %1660, double %.41508, double %1659)
  store double %1661, ptr %10, align 8, !tbaa !9
  br label %1662

1662:                                             ; preds = %1635, %1644, %1652
  %1663 = phi i32 [ %1655, %1652 ], [ 1, %1635 ], [ 0, %1644 ]
  %1664 = phi double [ %1661, %1652 ], [ %1643, %1635 ], [ %1651, %1644 ]
  %.81543 = phi double [ %.71542, %1652 ], [ %.615411749, %1635 ], [ %.615411749, %1644 ]
  %.51509 = phi double [ %.41508, %1652 ], [ %.315071752, %1635 ], [ %.315071752, %1644 ]
  %1665 = fadd double %1625, %1632
  %1666 = fmul double %1625, %1632
  %1667 = fneg double %1666
  %1668 = extractelement <2 x double> %1606, i64 1
  %1669 = fmul double %1668, %1667
  %1670 = call double @llvm.fmuladd.f64(double %1665, double %1605, double %1669)
  %1671 = fmul double %1605, %1666
  %1672 = fcmp oeq double %1664, 0.000000e+00
  br i1 %1672, label %1673, label %1697

1673:                                             ; preds = %1662
  %1674 = fcmp oeq double %1670, 0.000000e+00
  br i1 %1674, label %1675, label %1695

1675:                                             ; preds = %1673
  br i1 %.not1618, label %1676, label %1690

1676:                                             ; preds = %1675
  %.not1621 = icmp eq i32 %1663, 0
  br i1 %.not1621, label %1684, label %1677

1677:                                             ; preds = %1676
  %1678 = getelementptr inbounds double, ptr %19, i64 %1627
  %1679 = load double, ptr %1678, align 8, !tbaa !9
  %1680 = fmul double %1625, %1625
  %1681 = fadd double %.81543, %.51509
  %1682 = fmul double %1680, %1681
  %1683 = call double @llvm.fmuladd.f64(double %1679, double %1679, double %1682)
  br label %1695

1684:                                             ; preds = %1676
  %1685 = load double, ptr %880, align 8, !tbaa !9
  %1686 = fmul double %1632, %1632
  %1687 = fadd double %.81543, %.51509
  %1688 = fmul double %1686, %1687
  %1689 = call double @llvm.fmuladd.f64(double %1685, double %1685, double %1688)
  br label %1695

1690:                                             ; preds = %1675
  %1691 = fmul double %1632, %1632
  %1692 = fmul double %1625, %1625
  %1693 = fmul double %1692, %.51509
  %1694 = call double @llvm.fmuladd.f64(double %1691, double %.81543, double %1693)
  br label %1695

1695:                                             ; preds = %1690, %1684, %1677, %1673
  %.21529 = phi double [ %1694, %1690 ], [ %1683, %1677 ], [ %1689, %1684 ], [ %1670, %1673 ]
  %1696 = fdiv double %1671, %.21529
  store double %1696, ptr %16, align 8, !tbaa !9
  br label %1893

1697:                                             ; preds = %1662
  %1698 = fcmp ugt double %1670, 0.000000e+00
  br i1 %1698, label %1711, label %1699

1699:                                             ; preds = %1697
  %1700 = fmul double %1671, -4.000000e+00
  %1701 = fmul double %1700, %1664
  %1702 = call double @llvm.fmuladd.f64(double %1670, double %1670, double %1701)
  %1703 = fcmp oge double %1702, 0.000000e+00
  %1704 = fneg double %1702
  %1705 = select i1 %1703, double %1702, double %1704
  %1706 = call double @sqrt(double noundef %1705) #6
  %1707 = fsub double %1670, %1706
  %1708 = load double, ptr %10, align 8, !tbaa !9
  %1709 = fmul double %1708, 2.000000e+00
  %1710 = fdiv double %1707, %1709
  store double %1710, ptr %16, align 8, !tbaa !9
  br label %1893

1711:                                             ; preds = %1697
  %1712 = fmul double %1671, 2.000000e+00
  %1713 = fmul double %1671, -4.000000e+00
  %1714 = fmul double %1713, %1664
  %1715 = call double @llvm.fmuladd.f64(double %1670, double %1670, double %1714)
  %1716 = fcmp oge double %1715, 0.000000e+00
  %1717 = fneg double %1715
  %1718 = select i1 %1716, double %1715, double %1717
  %1719 = call double @sqrt(double noundef %1718) #6
  %1720 = fadd double %1670, %1719
  %1721 = fdiv double %1712, %1720
  store double %1721, ptr %16, align 8, !tbaa !9
  br label %1893

1722:                                             ; preds = %1621
  %1723 = load double, ptr %1586, align 8, !tbaa !9
  %1724 = load double, ptr %1587, align 8, !tbaa !9
  %1725 = fmul double %1723, %1724
  %1726 = load double, ptr %1589, align 8, !tbaa !9
  %1727 = load double, ptr %1590, align 8, !tbaa !9
  %1728 = fmul double %1726, %1727
  %1729 = fadd double %34, %.71758
  %1730 = fadd double %.314861756, %1729
  %.not1622 = icmp eq i32 %.115141751, 0
  br i1 %.not1622, label %1740, label %1731

1731:                                             ; preds = %1722
  %1732 = fneg double %1725
  %1733 = call double @llvm.fmuladd.f64(double %1732, double %.615411749, double %1730)
  %1734 = fneg double %1728
  %1735 = call double @llvm.fmuladd.f64(double %1734, double %.315071752, double %1733)
  store double %1735, ptr %10, align 8, !tbaa !9
  %1736 = fmul double %1725, %1725
  %1737 = fmul double %.615411749, %1736
  store double %1737, ptr %14, align 16, !tbaa !9
  %1738 = fmul double %1728, %1728
  %1739 = fmul double %.315071752, %1738
  br label %1783

1740:                                             ; preds = %1722
  %1741 = load i32, ptr %15, align 4, !tbaa !5
  %.not1623 = icmp eq i32 %1741, 0
  %1742 = fadd double %.615411749, %.315071752
  br i1 %.not1623, label %1765, label %1743

1743:                                             ; preds = %1740
  %1744 = load double, ptr %1592, align 8, !tbaa !9
  %1745 = fdiv double %1744, %1725
  %1746 = fmul double %1745, %1745
  %1747 = load double, ptr %1593, align 8, !tbaa !9
  %1748 = load double, ptr %1594, align 8, !tbaa !9
  %1749 = fsub double %1747, %1748
  %1750 = fadd double %1747, %1748
  %1751 = fmul double %1749, %1750
  %1752 = fmul double %1746, %1751
  %1753 = fneg double %1728
  %1754 = call double @llvm.fmuladd.f64(double %1753, double %1742, double %1730)
  %1755 = fsub double %1754, %1752
  store double %1755, ptr %10, align 8, !tbaa !9
  %1756 = fmul double %1744, %1744
  store double %1756, ptr %14, align 16, !tbaa !9
  %1757 = fcmp olt double %.615411749, %1746
  %1758 = fmul double %1728, %1728
  br i1 %1757, label %1759, label %1761

1759:                                             ; preds = %1743
  %1760 = fmul double %.315071752, %1758
  br label %1783

1761:                                             ; preds = %1743
  %1762 = fsub double %.615411749, %1746
  %1763 = fadd double %.315071752, %1762
  %1764 = fmul double %1758, %1763
  br label %1783

1765:                                             ; preds = %1740
  %1766 = load double, ptr %1595, align 8, !tbaa !9
  %1767 = fdiv double %1766, %1728
  %1768 = fmul double %1767, %1767
  %1769 = load double, ptr %1594, align 8, !tbaa !9
  %1770 = load double, ptr %1593, align 8, !tbaa !9
  %1771 = fsub double %1769, %1770
  %1772 = fadd double %1769, %1770
  %1773 = fmul double %1771, %1772
  %1774 = fmul double %1768, %1773
  %1775 = fneg double %1725
  %1776 = call double @llvm.fmuladd.f64(double %1775, double %1742, double %1730)
  %1777 = fsub double %1776, %1774
  store double %1777, ptr %10, align 8, !tbaa !9
  %1778 = fcmp olt double %.315071752, %1768
  %1779 = fmul double %1725, %1725
  %1780 = fsub double %.315071752, %1768
  %1781 = fadd double %.615411749, %1780
  %storemerge1624.v = select i1 %1778, double %.615411749, double %1781
  %storemerge1624 = fmul double %storemerge1624.v, %1779
  store double %storemerge1624, ptr %14, align 16, !tbaa !9
  %1782 = fmul double %1766, %1766
  br label %1783

1783:                                             ; preds = %1765, %1761, %1759, %1731
  %.sink1998 = phi double [ %1782, %1765 ], [ %1764, %1761 ], [ %1760, %1759 ], [ %1739, %1731 ]
  store double %.sink1998, ptr %1591, align 16, !tbaa !9
  store double %1725, ptr %13, align 16, !tbaa !9
  %1784 = fmul double %1604, %1603
  store double %1784, ptr %1596, align 8, !tbaa !9
  store double %1728, ptr %1597, align 16, !tbaa !9
  call void @dlaed6_(ptr noundef nonnull %12, ptr noundef nonnull %15, ptr noundef nonnull %10, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %11, ptr noundef nonnull %16, ptr noundef nonnull %8) #6
  %1785 = load i32, ptr %8, align 4, !tbaa !5
  %.not1625 = icmp eq i32 %1785, 0
  br i1 %.not1625, label %._crit_edge1959, label %1786

._crit_edge1959:                                  ; preds = %1783
  %.pre1960 = load double, ptr %16, align 8, !tbaa !9
  br label %1893

1786:                                             ; preds = %1783
  store i32 0, ptr %8, align 4, !tbaa !5
  %1787 = load double, ptr %882, align 8, !tbaa !9
  %1788 = load double, ptr %884, align 8, !tbaa !9
  %1789 = fmul double %1787, %1788
  %1790 = load i32, ptr %1, align 4, !tbaa !5
  %1791 = sext i32 %1790 to i64
  %1792 = getelementptr inbounds double, ptr %17, i64 %1791
  %1793 = load double, ptr %1792, align 8, !tbaa !9
  %1794 = getelementptr inbounds double, ptr %18, i64 %1791
  %1795 = load double, ptr %1794, align 8, !tbaa !9
  %1796 = fmul double %1793, %1795
  br i1 %.not1622, label %1797, label %1818

1797:                                             ; preds = %1786
  %1798 = load i32, ptr %15, align 4, !tbaa !5
  %.not1626 = icmp eq i32 %1798, 0
  br i1 %.not1626, label %1809, label %1799

1799:                                             ; preds = %1797
  %1800 = getelementptr inbounds double, ptr %19, i64 %1791
  %1801 = load double, ptr %1800, align 8, !tbaa !9
  %1802 = fdiv double %1801, %1796
  %1803 = load double, ptr %11, align 8, !tbaa !9
  %1804 = fneg double %1789
  %1805 = extractelement <2 x double> %1606, i64 1
  %1806 = call double @llvm.fmuladd.f64(double %1804, double %1805, double %1803)
  %1807 = fmul double %1802, %1802
  %1808 = call double @llvm.fmuladd.f64(double %740, double %1807, double %1806)
  store double %1808, ptr %10, align 8, !tbaa !9
  br label %1832

1809:                                             ; preds = %1797
  %1810 = load double, ptr %880, align 8, !tbaa !9
  %1811 = fdiv double %1810, %1789
  %1812 = load double, ptr %11, align 8, !tbaa !9
  %1813 = fneg double %1796
  %1814 = extractelement <2 x double> %1606, i64 1
  %1815 = call double @llvm.fmuladd.f64(double %1813, double %1814, double %1812)
  %1816 = fmul double %1811, %1811
  %1817 = call double @llvm.fmuladd.f64(double %1598, double %1816, double %1815)
  store double %1817, ptr %10, align 8, !tbaa !9
  br label %1832

1818:                                             ; preds = %1786
  %1819 = load double, ptr %1142, align 8, !tbaa !9
  %1820 = load double, ptr %1144, align 8, !tbaa !9
  %1821 = load double, ptr %1146, align 8, !tbaa !9
  %1822 = fmul double %1820, %1821
  %1823 = fdiv double %1819, %1822
  %1824 = load i32, ptr %15, align 4, !tbaa !5
  %.not1627 = icmp eq i32 %1824, 0
  %1825 = call double @llvm.fmuladd.f64(double %1823, double %1823, double %.615411749)
  %1826 = call double @llvm.fmuladd.f64(double %1823, double %1823, double %.315071752)
  %.91544 = select i1 %.not1627, double %.615411749, double %1825
  %.61510 = select i1 %.not1627, double %1826, double %.315071752
  %1827 = load double, ptr %11, align 8, !tbaa !9
  %1828 = fneg double %1796
  %1829 = call double @llvm.fmuladd.f64(double %1828, double %.91544, double %1827)
  %1830 = fneg double %1789
  %1831 = call double @llvm.fmuladd.f64(double %1830, double %.61510, double %1829)
  store double %1831, ptr %10, align 8, !tbaa !9
  br label %1832

1832:                                             ; preds = %1799, %1809, %1818
  %1833 = phi i32 [ %1824, %1818 ], [ 1, %1799 ], [ 0, %1809 ]
  %1834 = phi double [ %1831, %1818 ], [ %1808, %1799 ], [ %1817, %1809 ]
  %1835 = phi double [ %1827, %1818 ], [ %1803, %1799 ], [ %1812, %1809 ]
  %.101545 = phi double [ %.91544, %1818 ], [ %.615411749, %1799 ], [ %.615411749, %1809 ]
  %.71511 = phi double [ %.61510, %1818 ], [ %.315071752, %1799 ], [ %.315071752, %1809 ]
  %1836 = fadd double %1789, %1796
  %1837 = fmul double %1789, %1796
  %1838 = fneg double %1837
  %1839 = extractelement <2 x double> %1606, i64 1
  %1840 = fmul double %1839, %1838
  %1841 = call double @llvm.fmuladd.f64(double %1836, double %1835, double %1840)
  %1842 = fmul double %1837, %1835
  %1843 = fcmp oeq double %1834, 0.000000e+00
  br i1 %1843, label %1844, label %1868

1844:                                             ; preds = %1832
  %1845 = fcmp oeq double %1841, 0.000000e+00
  br i1 %1845, label %1846, label %1866

1846:                                             ; preds = %1844
  br i1 %.not1622, label %1847, label %1861

1847:                                             ; preds = %1846
  %.not1628 = icmp eq i32 %1833, 0
  br i1 %.not1628, label %1855, label %1848

1848:                                             ; preds = %1847
  %1849 = getelementptr inbounds double, ptr %19, i64 %1791
  %1850 = load double, ptr %1849, align 8, !tbaa !9
  %1851 = fmul double %1789, %1789
  %1852 = fadd double %.101545, %.71511
  %1853 = fmul double %1851, %1852
  %1854 = call double @llvm.fmuladd.f64(double %1850, double %1850, double %1853)
  br label %1866

1855:                                             ; preds = %1847
  %1856 = load double, ptr %880, align 8, !tbaa !9
  %1857 = fmul double %1796, %1796
  %1858 = fadd double %.101545, %.71511
  %1859 = fmul double %1857, %1858
  %1860 = call double @llvm.fmuladd.f64(double %1856, double %1856, double %1859)
  br label %1866

1861:                                             ; preds = %1846
  %1862 = fmul double %1796, %1796
  %1863 = fmul double %1789, %1789
  %1864 = fmul double %1863, %.71511
  %1865 = call double @llvm.fmuladd.f64(double %1862, double %.101545, double %1864)
  br label %1866

1866:                                             ; preds = %1861, %1855, %1848, %1844
  %.31530 = phi double [ %1865, %1861 ], [ %1854, %1848 ], [ %1860, %1855 ], [ %1841, %1844 ]
  %1867 = fdiv double %1842, %.31530
  store double %1867, ptr %16, align 8, !tbaa !9
  br label %1893

1868:                                             ; preds = %1832
  %1869 = fcmp ugt double %1841, 0.000000e+00
  br i1 %1869, label %1882, label %1870

1870:                                             ; preds = %1868
  %1871 = fmul double %1842, -4.000000e+00
  %1872 = fmul double %1834, %1871
  %1873 = call double @llvm.fmuladd.f64(double %1841, double %1841, double %1872)
  %1874 = fcmp oge double %1873, 0.000000e+00
  %1875 = fneg double %1873
  %1876 = select i1 %1874, double %1873, double %1875
  %1877 = call double @sqrt(double noundef %1876) #6
  %1878 = fsub double %1841, %1877
  %1879 = load double, ptr %10, align 8, !tbaa !9
  %1880 = fmul double %1879, 2.000000e+00
  %1881 = fdiv double %1878, %1880
  store double %1881, ptr %16, align 8, !tbaa !9
  br label %1893

1882:                                             ; preds = %1868
  %1883 = fmul double %1842, 2.000000e+00
  %1884 = fmul double %1842, -4.000000e+00
  %1885 = fmul double %1834, %1884
  %1886 = call double @llvm.fmuladd.f64(double %1841, double %1841, double %1885)
  %1887 = fcmp oge double %1886, 0.000000e+00
  %1888 = fneg double %1886
  %1889 = select i1 %1887, double %1886, double %1888
  %1890 = call double @sqrt(double noundef %1889) #6
  %1891 = fadd double %1841, %1890
  %1892 = fdiv double %1883, %1891
  store double %1892, ptr %16, align 8, !tbaa !9
  br label %1893

1893:                                             ; preds = %._crit_edge1959, %1870, %1882, %1866, %1695, %1711, %1699
  %1894 = phi double [ %1867, %1866 ], [ %1881, %1870 ], [ %1892, %1882 ], [ %.pre1960, %._crit_edge1959 ], [ %1696, %1695 ], [ %1710, %1699 ], [ %1721, %1711 ]
  %.41503 = phi i32 [ 0, %1866 ], [ 0, %1870 ], [ 0, %1882 ], [ 1, %._crit_edge1959 ], [ 0, %1695 ], [ 0, %1699 ], [ 0, %1711 ]
  %1895 = load double, ptr %11, align 8, !tbaa !9
  %1896 = fmul double %1895, %1894
  %1897 = fcmp ult double %1896, 0.000000e+00
  br i1 %1897, label %1902, label %1898

1898:                                             ; preds = %1893
  %1899 = fneg double %1895
  %1900 = extractelement <2 x double> %1606, i64 1
  %1901 = fdiv double %1899, %1900
  store double %1901, ptr %16, align 8, !tbaa !9
  br label %1902

1902:                                             ; preds = %1898, %1893
  %1903 = phi double [ %1901, %1898 ], [ %1894, %1893 ]
  %1904 = load double, ptr %6, align 8, !tbaa !9
  %1905 = call double @llvm.fmuladd.f64(double %1904, double %1904, double %1903)
  %1906 = call double @sqrt(double noundef %1905) #6
  %1907 = fadd double %1904, %1906
  %1908 = load double, ptr %16, align 8, !tbaa !9
  %1909 = fdiv double %1908, %1907
  store double %1909, ptr %16, align 8, !tbaa !9
  %1910 = fadd double %.314821757, %1909
  %1911 = fcmp ogt double %1910, %.31534
  %1912 = fcmp olt double %1910, %.31550
  %or.cond1647 = select i1 %1911, i1 true, i1 %1912
  br i1 %or.cond1647, label %1913, label %1929

1913:                                             ; preds = %1902
  %1914 = load double, ptr %11, align 8, !tbaa !9
  %1915 = fcmp olt double %1914, 0.000000e+00
  %.31534..31550 = select i1 %1915, double %.31534, double %.31550
  %storemerge1629.in = fsub double %.31534..31550, %.314821757
  %storemerge1629 = fmul double %storemerge1629.in, 5.000000e-01
  store double %storemerge1629, ptr %16, align 8, !tbaa !9
  br i1 %.not1611, label %1929, label %1916

1916:                                             ; preds = %1913
  br i1 %1915, label %1917, label %1923

1917:                                             ; preds = %1916
  %1918 = fcmp ogt double %.314821757, 0.000000e+00
  br i1 %1918, label %1919, label %1929

1919:                                             ; preds = %1917
  %1920 = fmul double %.314821757, %.31534
  %1921 = call double @sqrt(double noundef %1920) #6
  %1922 = fsub double %1921, %.314821757
  store double %1922, ptr %16, align 8, !tbaa !9
  br label %1929

1923:                                             ; preds = %1916
  %1924 = fcmp ogt double %.31550, 0.000000e+00
  br i1 %1924, label %1925, label %1929

1925:                                             ; preds = %1923
  %1926 = fmul double %.314821757, %.31550
  %1927 = call double @sqrt(double noundef %1926) #6
  %1928 = fsub double %1927, %.314821757
  store double %1928, ptr %16, align 8, !tbaa !9
  br label %1929

1929:                                             ; preds = %1902, %1913, %1923, %1925, %1917, %1919
  %1930 = phi double [ %1909, %1902 ], [ %storemerge1629, %1913 ], [ %storemerge1629, %1923 ], [ %1928, %1925 ], [ %storemerge1629, %1917 ], [ %1922, %1919 ]
  %1931 = load double, ptr %11, align 8, !tbaa !9
  %1932 = fadd double %.314821757, %1930
  %1933 = load double, ptr %6, align 8, !tbaa !9
  %1934 = fadd double %1930, %1933
  store double %1934, ptr %6, align 8, !tbaa !9
  %1935 = load i32, ptr %0, align 4, !tbaa !5
  %.not16311721 = icmp slt i32 %1935, 1
  br i1 %.not16311721, label %.preheader1652, label %.lr.ph1724.preheader

.lr.ph1724.preheader:                             ; preds = %1929
  %1936 = add nuw i32 %1935, 1
  %wide.trip.count1907 = zext i32 %1936 to i64
  %1937 = zext nneg i32 %1935 to i64
  %min.iters.check2132 = icmp ult i32 %1935, 4
  br i1 %min.iters.check2132, label %.lr.ph1724.preheader2303, label %vector.memcheck2122

.lr.ph1724.preheader2303:                         ; preds = %middle.block2130, %vector.memcheck2122, %.lr.ph1724.preheader
  %indvars.iv1904.ph = phi i64 [ 1, %vector.memcheck2122 ], [ 1, %.lr.ph1724.preheader ], [ %ind.end2136, %middle.block2130 ]
  %1938 = zext nneg i32 %1935 to i64
  %1939 = and i32 %1935, 1
  %lcmp.mod2350.not = icmp eq i32 %1939, 0
  br i1 %lcmp.mod2350.not, label %.lr.ph1724.prol.loopexit, label %.lr.ph1724.prol

.lr.ph1724.prol:                                  ; preds = %.lr.ph1724.preheader2303
  %1940 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1904.ph
  %1941 = load double, ptr %1940, align 8, !tbaa !9
  %1942 = fadd double %1930, %1941
  store double %1942, ptr %1940, align 8, !tbaa !9
  %1943 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1904.ph
  %1944 = load double, ptr %1943, align 8, !tbaa !9
  %1945 = fsub double %1944, %1930
  store double %1945, ptr %1943, align 8, !tbaa !9
  %indvars.iv.next1905.prol = add nuw nsw i64 %indvars.iv1904.ph, 1
  br label %.lr.ph1724.prol.loopexit

.lr.ph1724.prol.loopexit:                         ; preds = %.lr.ph1724.prol, %.lr.ph1724.preheader2303
  %indvars.iv1904.unr = phi i64 [ %indvars.iv1904.ph, %.lr.ph1724.preheader2303 ], [ %indvars.iv.next1905.prol, %.lr.ph1724.prol ]
  %1946 = icmp eq i64 %indvars.iv1904.ph, %1938
  br i1 %1946, label %.preheader1652, label %.lr.ph1724

vector.memcheck2122:                              ; preds = %.lr.ph1724.preheader
  %1947 = shl nuw nsw i64 %wide.trip.count1907, 3
  %scevgep2124 = getelementptr i8, ptr %scevgep2123, i64 %1947
  %scevgep2126 = getelementptr i8, ptr %scevgep2125, i64 %1947
  %bound02127 = icmp ugt ptr %scevgep2126, %7
  %bound12128 = icmp ugt ptr %scevgep2124, %4
  %found.conflict2129 = and i1 %bound02127, %bound12128
  br i1 %found.conflict2129, label %.lr.ph1724.preheader2303, label %vector.ph2133

vector.ph2133:                                    ; preds = %vector.memcheck2122
  %n.vec2135 = and i64 %1937, 2147483644
  %ind.end2136 = or disjoint i64 %n.vec2135, 1
  %broadcast.splatinsert2143 = insertelement <2 x double> poison, double %1930, i64 0
  %broadcast.splat2144 = shufflevector <2 x double> %broadcast.splatinsert2143, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body2138

vector.body2138:                                  ; preds = %vector.body2138, %vector.ph2133
  %index2139 = phi i64 [ 0, %vector.ph2133 ], [ %index.next2147, %vector.body2138 ]
  %1948 = getelementptr double, ptr %7, i64 %index2139
  %1949 = getelementptr inbounds i8, ptr %1948, i64 16
  %wide.load2141 = load <2 x double>, ptr %1948, align 8, !tbaa !9, !alias.scope !98, !noalias !101
  %wide.load2142 = load <2 x double>, ptr %1949, align 8, !tbaa !9, !alias.scope !98, !noalias !101
  %1950 = fadd <2 x double> %broadcast.splat2144, %wide.load2141
  %1951 = fadd <2 x double> %broadcast.splat2144, %wide.load2142
  store <2 x double> %1950, ptr %1948, align 8, !tbaa !9, !alias.scope !98, !noalias !101
  store <2 x double> %1951, ptr %1949, align 8, !tbaa !9, !alias.scope !98, !noalias !101
  %1952 = getelementptr double, ptr %4, i64 %index2139
  %1953 = getelementptr inbounds i8, ptr %1952, i64 16
  %wide.load2145 = load <2 x double>, ptr %1952, align 8, !tbaa !9, !alias.scope !101
  %wide.load2146 = load <2 x double>, ptr %1953, align 8, !tbaa !9, !alias.scope !101
  %1954 = fsub <2 x double> %wide.load2145, %broadcast.splat2144
  %1955 = fsub <2 x double> %wide.load2146, %broadcast.splat2144
  store <2 x double> %1954, ptr %1952, align 8, !tbaa !9, !alias.scope !101
  store <2 x double> %1955, ptr %1953, align 8, !tbaa !9, !alias.scope !101
  %index.next2147 = add nuw i64 %index2139, 4
  %1956 = icmp eq i64 %index.next2147, %n.vec2135
  br i1 %1956, label %middle.block2130, label %vector.body2138, !llvm.loop !103

middle.block2130:                                 ; preds = %vector.body2138
  %cmp.n2148 = icmp eq i64 %n.vec2135, %1937
  br i1 %cmp.n2148, label %.preheader1652, label %.lr.ph1724.preheader2303

.preheader1652:                                   ; preds = %.lr.ph1724.prol.loopexit, %.lr.ph1724, %middle.block2130, %1929
  br i1 %.not1598.not1674, label %.lr.ph1730.preheader, label %._crit_edge1731

.lr.ph1730.preheader:                             ; preds = %.preheader1652
  br i1 %1600, label %._crit_edge1731.loopexit.unr-lcssa, label %.lr.ph1730

.lr.ph1724:                                       ; preds = %.lr.ph1724.prol.loopexit, %.lr.ph1724
  %indvars.iv1904 = phi i64 [ %indvars.iv.next1905.1, %.lr.ph1724 ], [ %indvars.iv1904.unr, %.lr.ph1724.prol.loopexit ]
  %1957 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1904
  %1958 = load double, ptr %1957, align 8, !tbaa !9
  %1959 = fadd double %1930, %1958
  store double %1959, ptr %1957, align 8, !tbaa !9
  %1960 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1904
  %1961 = load double, ptr %1960, align 8, !tbaa !9
  %1962 = fsub double %1961, %1930
  store double %1962, ptr %1960, align 8, !tbaa !9
  %1963 = getelementptr double, ptr %7, i64 %indvars.iv1904
  %1964 = load double, ptr %1963, align 8, !tbaa !9
  %1965 = fadd double %1930, %1964
  store double %1965, ptr %1963, align 8, !tbaa !9
  %1966 = getelementptr double, ptr %4, i64 %indvars.iv1904
  %1967 = load double, ptr %1966, align 8, !tbaa !9
  %1968 = fsub double %1967, %1930
  store double %1968, ptr %1966, align 8, !tbaa !9
  %indvars.iv.next1905.1 = add nuw nsw i64 %indvars.iv1904, 2
  %exitcond1908.not.1 = icmp eq i64 %indvars.iv.next1905.1, %wide.trip.count1907
  br i1 %exitcond1908.not.1, label %.preheader1652, label %.lr.ph1724, !llvm.loop !104

.lr.ph1730:                                       ; preds = %.lr.ph1730.preheader, %.lr.ph1730
  %indvars.iv1909 = phi i64 [ %indvars.iv.next1910.1, %.lr.ph1730 ], [ 1, %.lr.ph1730.preheader ]
  %.91728 = phi double [ %1997, %.lr.ph1730 ], [ 0.000000e+00, %.lr.ph1730.preheader ]
  %1969 = phi <2 x double> [ %1995, %.lr.ph1730 ], [ zeroinitializer, %.lr.ph1730.preheader ]
  %niter2358 = phi i64 [ %niter2358.next.1, %.lr.ph1730 ], [ 0, %.lr.ph1730.preheader ]
  %1970 = getelementptr inbounds double, ptr %19, i64 %indvars.iv1909
  %1971 = load double, ptr %1970, align 8, !tbaa !9
  %1972 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1909
  %1973 = load double, ptr %1972, align 8, !tbaa !9
  %1974 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1909
  %1975 = load double, ptr %1974, align 8, !tbaa !9
  %1976 = fmul double %1973, %1975
  %1977 = fdiv double %1971, %1976
  %1978 = insertelement <2 x double> poison, double %1971, i64 0
  %1979 = insertelement <2 x double> %1978, double %1977, i64 1
  %1980 = shufflevector <2 x double> %1979, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %1981 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1979, <2 x double> %1980, <2 x double> %1969)
  %1982 = extractelement <2 x double> %1981, i64 0
  %1983 = fadd double %.91728, %1982
  %1984 = getelementptr double, ptr %3, i64 %indvars.iv1909
  %1985 = load double, ptr %1984, align 8, !tbaa !9
  %1986 = getelementptr double, ptr %7, i64 %indvars.iv1909
  %1987 = load double, ptr %1986, align 8, !tbaa !9
  %1988 = getelementptr double, ptr %4, i64 %indvars.iv1909
  %1989 = load double, ptr %1988, align 8, !tbaa !9
  %1990 = fmul double %1987, %1989
  %1991 = fdiv double %1985, %1990
  %1992 = insertelement <2 x double> poison, double %1985, i64 0
  %1993 = insertelement <2 x double> %1992, double %1991, i64 1
  %1994 = shufflevector <2 x double> %1993, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %1995 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1993, <2 x double> %1994, <2 x double> %1981)
  %1996 = extractelement <2 x double> %1995, i64 0
  %1997 = fadd double %1983, %1996
  %indvars.iv.next1910.1 = add nuw nsw i64 %indvars.iv1909, 2
  %niter2358.next.1 = add i64 %niter2358, 2
  %niter2358.ncmp.1 = icmp eq i64 %niter2358.next.1, %unroll_iter2357
  br i1 %niter2358.ncmp.1, label %._crit_edge1731.loopexit.unr-lcssa.loopexit, label %.lr.ph1730, !llvm.loop !105

._crit_edge1731.loopexit.unr-lcssa.loopexit:      ; preds = %.lr.ph1730
  %1998 = extractelement <2 x double> %1995, i64 1
  br label %._crit_edge1731.loopexit.unr-lcssa

._crit_edge1731.loopexit.unr-lcssa:               ; preds = %._crit_edge1731.loopexit.unr-lcssa.loopexit, %.lr.ph1730.preheader
  %.lcssa2307.ph = phi double [ poison, %.lr.ph1730.preheader ], [ %1996, %._crit_edge1731.loopexit.unr-lcssa.loopexit ]
  %.lcssa2306.ph = phi double [ poison, %.lr.ph1730.preheader ], [ %1997, %._crit_edge1731.loopexit.unr-lcssa.loopexit ]
  %.lcssa2305.ph = phi double [ poison, %.lr.ph1730.preheader ], [ %1998, %._crit_edge1731.loopexit.unr-lcssa.loopexit ]
  %indvars.iv1909.unr = phi i64 [ 1, %.lr.ph1730.preheader ], [ %indvars.iv.next1910.1, %._crit_edge1731.loopexit.unr-lcssa.loopexit ]
  %.91728.unr = phi double [ 0.000000e+00, %.lr.ph1730.preheader ], [ %1997, %._crit_edge1731.loopexit.unr-lcssa.loopexit ]
  %.unr2352 = phi <2 x double> [ zeroinitializer, %.lr.ph1730.preheader ], [ %1995, %._crit_edge1731.loopexit.unr-lcssa.loopexit ]
  br i1 %lcmp.mod2353.not, label %._crit_edge1731, label %.lr.ph1730.epil

.lr.ph1730.epil:                                  ; preds = %._crit_edge1731.loopexit.unr-lcssa
  %1999 = getelementptr inbounds double, ptr %19, i64 %indvars.iv1909.unr
  %2000 = load double, ptr %1999, align 8, !tbaa !9
  %2001 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1909.unr
  %2002 = load double, ptr %2001, align 8, !tbaa !9
  %2003 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1909.unr
  %2004 = load double, ptr %2003, align 8, !tbaa !9
  %2005 = fmul double %2002, %2004
  %2006 = fdiv double %2000, %2005
  %2007 = insertelement <2 x double> poison, double %2000, i64 0
  %2008 = insertelement <2 x double> %2007, double %2006, i64 1
  %2009 = shufflevector <2 x double> %2008, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %2010 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2008, <2 x double> %2009, <2 x double> %.unr2352)
  %2011 = extractelement <2 x double> %2010, i64 0
  %2012 = fadd double %.91728.unr, %2011
  %2013 = extractelement <2 x double> %2010, i64 1
  br label %._crit_edge1731

._crit_edge1731:                                  ; preds = %.lr.ph1730.epil, %._crit_edge1731.loopexit.unr-lcssa, %.preheader1652
  %.111546.lcssa = phi double [ 0.000000e+00, %.preheader1652 ], [ %.lcssa2305.ph, %._crit_edge1731.loopexit.unr-lcssa ], [ %2013, %.lr.ph1730.epil ]
  %.9.lcssa = phi double [ 0.000000e+00, %.preheader1652 ], [ %.lcssa2306.ph, %._crit_edge1731.loopexit.unr-lcssa ], [ %2012, %.lr.ph1730.epil ]
  %.8.lcssa = phi double [ 0.000000e+00, %.preheader1652 ], [ %.lcssa2307.ph, %._crit_edge1731.loopexit.unr-lcssa ], [ %2011, %.lr.ph1730.epil ]
  %2014 = fcmp oge double %.9.lcssa, 0.000000e+00
  %2015 = fneg double %.9.lcssa
  %2016 = select i1 %2014, double %.9.lcssa, double %2015
  %.not1633.not1735 = icmp sgt i32 %1935, %.01498
  br i1 %.not1633.not1735, label %.lr.ph1741.preheader, label %._crit_edge1742

.lr.ph1741.preheader:                             ; preds = %._crit_edge1731
  %2017 = sext i32 %1935 to i64
  br label %.lr.ph1741

.lr.ph1741:                                       ; preds = %.lr.ph1741.preheader, %.lr.ph1741
  %indvars.iv1914 = phi i64 [ %2017, %.lr.ph1741.preheader ], [ %indvars.iv.next1915, %.lr.ph1741 ]
  %.101738 = phi double [ %2016, %.lr.ph1741.preheader ], [ %2032, %.lr.ph1741 ]
  %2018 = phi <2 x double> [ zeroinitializer, %.lr.ph1741.preheader ], [ %2030, %.lr.ph1741 ]
  %2019 = getelementptr inbounds double, ptr %19, i64 %indvars.iv1914
  %2020 = load double, ptr %2019, align 8, !tbaa !9
  %2021 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1914
  %2022 = load double, ptr %2021, align 8, !tbaa !9
  %2023 = getelementptr inbounds double, ptr %18, i64 %indvars.iv1914
  %2024 = load double, ptr %2023, align 8, !tbaa !9
  %2025 = fmul double %2022, %2024
  %2026 = fdiv double %2020, %2025
  %2027 = insertelement <2 x double> poison, double %2020, i64 0
  %2028 = insertelement <2 x double> %2027, double %2026, i64 1
  %2029 = shufflevector <2 x double> %2028, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %2030 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2028, <2 x double> %2029, <2 x double> %2018)
  %2031 = extractelement <2 x double> %2030, i64 0
  %2032 = fadd double %.101738, %2031
  %indvars.iv.next1915 = add nsw i64 %indvars.iv1914, -1
  %.not1633.not = icmp sgt i64 %indvars.iv.next1915, %.pre-phi
  br i1 %.not1633.not, label %.lr.ph1741, label %._crit_edge1742.loopexit, !llvm.loop !106

._crit_edge1742.loopexit:                         ; preds = %.lr.ph1741
  %2033 = extractelement <2 x double> %2030, i64 1
  br label %._crit_edge1742

._crit_edge1742:                                  ; preds = %._crit_edge1742.loopexit, %._crit_edge1731
  %.81512.lcssa = phi double [ 0.000000e+00, %._crit_edge1731 ], [ %2033, %._crit_edge1742.loopexit ]
  %.10.lcssa = phi double [ %2016, %._crit_edge1731 ], [ %2032, %._crit_edge1742.loopexit ]
  %.41487.lcssa = phi double [ 0.000000e+00, %._crit_edge1731 ], [ %2031, %._crit_edge1742.loopexit ]
  %2034 = load double, ptr %1144, align 8, !tbaa !9
  %2035 = load double, ptr %1146, align 8, !tbaa !9
  %2036 = fmul double %2034, %2035
  %2037 = load double, ptr %1142, align 8, !tbaa !9
  %2038 = fdiv double %2037, %2036
  %2039 = fadd double %.111546.lcssa, %.81512.lcssa
  %2040 = fmul double %2037, %2038
  %2041 = fadd double %34, %.41487.lcssa
  %2042 = fadd double %.8.lcssa, %2041
  %2043 = fadd double %2042, %2040
  store double %2043, ptr %11, align 8, !tbaa !9
  %2044 = fsub double %.41487.lcssa, %.8.lcssa
  %2045 = call double @llvm.fmuladd.f64(double %2044, double 8.000000e+00, double %.10.lcssa)
  %2046 = call double @llvm.fmuladd.f64(double %34, double 2.000000e+00, double %2045)
  %2047 = fcmp oge double %2040, 0.000000e+00
  %2048 = fneg double %2040
  %2049 = select i1 %2047, double %2040, double %2048
  %2050 = insertelement <2 x double> poison, double %2049, i64 0
  %2051 = insertelement <2 x double> %2050, double %2038, i64 1
  %2052 = insertelement <2 x double> %2051, double 3.000000e+00, i64 0
  %2053 = insertelement <2 x double> poison, double %2046, i64 0
  %2054 = insertelement <2 x double> %2053, double %2039, i64 1
  %2055 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2051, <2 x double> %2052, <2 x double> %2054)
  %2056 = fmul double %1931, %2043
  %2057 = fcmp ogt double %2056, 0.000000e+00
  br i1 %2057, label %2058, label %2069

2058:                                             ; preds = %._crit_edge1742
  %2059 = fcmp oge double %2043, 0.000000e+00
  %2060 = fneg double %2043
  %2061 = select i1 %2059, double %2043, double %2060
  %2062 = fcmp oge double %1931, 0.000000e+00
  %2063 = fneg double %1931
  %2064 = select i1 %2062, double %1931, double %2063
  %2065 = fdiv double %2064, 1.000000e+01
  %2066 = fcmp ogt double %2061, %2065
  br i1 %2066, label %2067, label %2069

2067:                                             ; preds = %2058
  %.not1634 = icmp eq i32 %.115141751, 0
  %2068 = zext i1 %.not1634 to i32
  br label %2069

2069:                                             ; preds = %._crit_edge1742, %2058, %2067
  %.21515 = phi i32 [ %2068, %2067 ], [ %.115141751, %2058 ], [ %.115141751, %._crit_edge1742 ]
  %storemerge1616.in = load i32, ptr %12, align 4, !tbaa !5
  %storemerge1616 = add nsw i32 %storemerge1616.in, 1
  store i32 %storemerge1616, ptr %12, align 4, !tbaa !5
  %2070 = icmp slt i32 %storemerge1616.in, 400
  br i1 %2070, label %1601, label %._crit_edge1761, !llvm.loop !107

._crit_edge1761:                                  ; preds = %2069, %1583
  store i32 1, ptr %8, align 4, !tbaa !5
  br label %.loopexit1653

.loopexit1653:                                    ; preds = %1601, %565, %._crit_edge1831, %._crit_edge1761, %._crit_edge1784, %1139, %30, %22
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 4, 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 void
}

; 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 void @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 void @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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!12}
!12 = 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 = distinct !{!87, !23}
!88 = distinct !{!88, !23}
!89 = !{!90}
!90 = distinct !{!90, !91}
!91 = distinct !{!91, !"LVerDomain"}
!92 = !{!93}
!93 = distinct !{!93, !91}
!94 = distinct !{!94, !23, !24, !25}
!95 = distinct !{!95, !23, !24}
!96 = distinct !{!96, !23}
!97 = distinct !{!97, !23}
!98 = !{!99}
!99 = distinct !{!99, !100}
!100 = distinct !{!100, !"LVerDomain"}
!101 = !{!102}
!102 = distinct !{!102, !100}
!103 = distinct !{!103, !23, !24, !25}
!104 = distinct !{!104, !23, !24}
!105 = distinct !{!105, !23}
!106 = distinct !{!106, !23}
!107 = distinct !{!107, !23}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,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