; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (dlaed4)

; 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 @dlaed4_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7) #0 {
  %9 = alloca ptr, align 8
  %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 i32, align 4
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca i32, align 4
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca i32, align 4
  %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 i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca double, align 8
  %38 = alloca [3 x double], align 16
  %39 = alloca i32, align 4
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  %42 = alloca i32, align 4
  %43 = alloca double, align 8
  %44 = alloca double, align 8
  %45 = alloca double, align 8
  %46 = alloca double, align 8
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store ptr %2, ptr %11, align 8, !tbaa !5
  store ptr %3, ptr %12, align 8, !tbaa !5
  store ptr %4, ptr %13, align 8, !tbaa !5
  store ptr %5, ptr %14, align 8, !tbaa !5
  store ptr %6, ptr %15, align 8, !tbaa !5
  store ptr %7, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 4, 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 4, ptr %34) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.start.p0(i64 24, ptr %38) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #5
  %52 = load ptr, ptr %13, align 8, !tbaa !5
  %53 = getelementptr inbounds double, ptr %52, i32 -1
  store ptr %53, ptr %13, align 8, !tbaa !5
  %54 = load ptr, ptr %12, align 8, !tbaa !5
  %55 = getelementptr inbounds double, ptr %54, i32 -1
  store ptr %55, ptr %12, align 8, !tbaa !5
  %56 = load ptr, ptr %11, align 8, !tbaa !5
  %57 = getelementptr inbounds double, ptr %56, i32 -1
  store ptr %57, ptr %11, align 8, !tbaa !5
  %58 = load ptr, ptr %16, align 8, !tbaa !5
  store i32 0, ptr %58, align 4, !tbaa !9
  %59 = load ptr, ptr %9, align 8, !tbaa !5
  %60 = load i32, ptr %59, align 4, !tbaa !9
  %61 = icmp eq i32 %60, 1
  br i1 %61, label %62, label %79

62:                                               ; preds = %8
  %63 = load ptr, ptr %11, align 8, !tbaa !5
  %64 = getelementptr inbounds double, ptr %63, i64 1
  %65 = load double, ptr %64, align 8, !tbaa !11
  %66 = load ptr, ptr %14, align 8, !tbaa !5
  %67 = load double, ptr %66, align 8, !tbaa !11
  %68 = load ptr, ptr %12, align 8, !tbaa !5
  %69 = getelementptr inbounds double, ptr %68, i64 1
  %70 = load double, ptr %69, align 8, !tbaa !11
  %71 = fmul double %67, %70
  %72 = load ptr, ptr %12, align 8, !tbaa !5
  %73 = getelementptr inbounds double, ptr %72, i64 1
  %74 = load double, ptr %73, align 8, !tbaa !11
  %75 = call double @llvm.fmuladd.f64(double %71, double %74, double %65)
  %76 = load ptr, ptr %15, align 8, !tbaa !5
  store double %75, ptr %76, align 8, !tbaa !11
  %77 = load ptr, ptr %13, align 8, !tbaa !5
  %78 = getelementptr inbounds double, ptr %77, i64 1
  store double 1.000000e+00, ptr %78, align 8, !tbaa !11
  store i32 1, ptr %51, align 4
  br label %3464

79:                                               ; preds = %8
  %80 = load ptr, ptr %9, align 8, !tbaa !5
  %81 = load i32, ptr %80, align 4, !tbaa !9
  %82 = icmp eq i32 %81, 2
  br i1 %82, label %83, label %93

83:                                               ; preds = %79
  %84 = load ptr, ptr %10, align 8, !tbaa !5
  %85 = load ptr, ptr %11, align 8, !tbaa !5
  %86 = getelementptr inbounds double, ptr %85, i64 1
  %87 = load ptr, ptr %12, align 8, !tbaa !5
  %88 = getelementptr inbounds double, ptr %87, i64 1
  %89 = load ptr, ptr %13, align 8, !tbaa !5
  %90 = getelementptr inbounds double, ptr %89, i64 1
  %91 = load ptr, ptr %14, align 8, !tbaa !5
  %92 = load ptr, ptr %15, align 8, !tbaa !5
  call void @dlaed5_(ptr noundef %84, ptr noundef %86, ptr noundef %88, ptr noundef %90, ptr noundef %91, ptr noundef %92)
  store i32 1, ptr %51, align 4
  br label %3464

93:                                               ; preds = %79
  %94 = call double @dlamch_(ptr noundef @.str)
  store double %94, ptr %46, align 8, !tbaa !11
  %95 = load ptr, ptr %14, align 8, !tbaa !5
  %96 = load double, ptr %95, align 8, !tbaa !11
  %97 = fdiv double 1.000000e+00, %96
  store double %97, ptr %41, align 8, !tbaa !11
  %98 = load ptr, ptr %10, align 8, !tbaa !5
  %99 = load i32, ptr %98, align 4, !tbaa !9
  %100 = load ptr, ptr %9, align 8, !tbaa !5
  %101 = load i32, ptr %100, align 4, !tbaa !9
  %102 = icmp eq i32 %99, %101
  br i1 %102, label %103, label %1282

103:                                              ; preds = %93
  %104 = load ptr, ptr %9, align 8, !tbaa !5
  %105 = load i32, ptr %104, align 4, !tbaa !9
  %106 = sub nsw i32 %105, 1
  store i32 %106, ptr %36, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  %107 = load ptr, ptr %14, align 8, !tbaa !5
  %108 = load double, ptr %107, align 8, !tbaa !11
  %109 = fdiv double %108, 2.000000e+00
  store double %109, ptr %32, align 8, !tbaa !11
  %110 = load ptr, ptr %9, align 8, !tbaa !5
  %111 = load i32, ptr %110, align 4, !tbaa !9
  store i32 %111, ptr %17, align 4, !tbaa !9
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %112

112:                                              ; preds = %135, %103
  %113 = load i32, ptr %28, align 4, !tbaa !9
  %114 = load i32, ptr %17, align 4, !tbaa !9
  %115 = icmp sle i32 %113, %114
  br i1 %115, label %116, label %138

116:                                              ; preds = %112
  %117 = load ptr, ptr %11, align 8, !tbaa !5
  %118 = load i32, ptr %28, align 4, !tbaa !9
  %119 = sext i32 %118 to i64
  %120 = getelementptr inbounds double, ptr %117, i64 %119
  %121 = load double, ptr %120, align 8, !tbaa !11
  %122 = load ptr, ptr %11, align 8, !tbaa !5
  %123 = load ptr, ptr %10, align 8, !tbaa !5
  %124 = load i32, ptr %123, align 4, !tbaa !9
  %125 = sext i32 %124 to i64
  %126 = getelementptr inbounds double, ptr %122, i64 %125
  %127 = load double, ptr %126, align 8, !tbaa !11
  %128 = fsub double %121, %127
  %129 = load double, ptr %32, align 8, !tbaa !11
  %130 = fsub double %128, %129
  %131 = load ptr, ptr %13, align 8, !tbaa !5
  %132 = load i32, ptr %28, align 4, !tbaa !9
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds double, ptr %131, i64 %133
  store double %130, ptr %134, align 8, !tbaa !11
  br label %135

135:                                              ; preds = %116
  %136 = load i32, ptr %28, align 4, !tbaa !9
  %137 = add nsw i32 %136, 1
  store i32 %137, ptr %28, align 4, !tbaa !9
  br label %112, !llvm.loop !13

138:                                              ; preds = %112
  store double 0.000000e+00, ptr %48, align 8, !tbaa !11
  %139 = load ptr, ptr %9, align 8, !tbaa !5
  %140 = load i32, ptr %139, align 4, !tbaa !9
  %141 = sub nsw i32 %140, 2
  store i32 %141, ptr %17, align 4, !tbaa !9
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %142

142:                                              ; preds = %166, %138
  %143 = load i32, ptr %28, align 4, !tbaa !9
  %144 = load i32, ptr %17, align 4, !tbaa !9
  %145 = icmp sle i32 %143, %144
  br i1 %145, label %146, label %169

146:                                              ; preds = %142
  %147 = load ptr, ptr %12, align 8, !tbaa !5
  %148 = load i32, ptr %28, align 4, !tbaa !9
  %149 = sext i32 %148 to i64
  %150 = getelementptr inbounds double, ptr %147, i64 %149
  %151 = load double, ptr %150, align 8, !tbaa !11
  %152 = load ptr, ptr %12, align 8, !tbaa !5
  %153 = load i32, ptr %28, align 4, !tbaa !9
  %154 = sext i32 %153 to i64
  %155 = getelementptr inbounds double, ptr %152, i64 %154
  %156 = load double, ptr %155, align 8, !tbaa !11
  %157 = fmul double %151, %156
  %158 = load ptr, ptr %13, align 8, !tbaa !5
  %159 = load i32, ptr %28, align 4, !tbaa !9
  %160 = sext i32 %159 to i64
  %161 = getelementptr inbounds double, ptr %158, i64 %160
  %162 = load double, ptr %161, align 8, !tbaa !11
  %163 = fdiv double %157, %162
  %164 = load double, ptr %48, align 8, !tbaa !11
  %165 = fadd double %164, %163
  store double %165, ptr %48, align 8, !tbaa !11
  br label %166

166:                                              ; preds = %146
  %167 = load i32, ptr %28, align 4, !tbaa !9
  %168 = add nsw i32 %167, 1
  store i32 %168, ptr %28, align 4, !tbaa !9
  br label %142, !llvm.loop !15

169:                                              ; preds = %142
  %170 = load double, ptr %41, align 8, !tbaa !11
  %171 = load double, ptr %48, align 8, !tbaa !11
  %172 = fadd double %170, %171
  store double %172, ptr %27, align 8, !tbaa !11
  %173 = load double, ptr %27, align 8, !tbaa !11
  %174 = load ptr, ptr %12, align 8, !tbaa !5
  %175 = load i32, ptr %36, align 4, !tbaa !9
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds double, ptr %174, i64 %176
  %178 = load double, ptr %177, align 8, !tbaa !11
  %179 = load ptr, ptr %12, align 8, !tbaa !5
  %180 = load i32, ptr %36, align 4, !tbaa !9
  %181 = sext i32 %180 to i64
  %182 = getelementptr inbounds double, ptr %179, i64 %181
  %183 = load double, ptr %182, align 8, !tbaa !11
  %184 = fmul double %178, %183
  %185 = load ptr, ptr %13, align 8, !tbaa !5
  %186 = load i32, ptr %36, align 4, !tbaa !9
  %187 = sext i32 %186 to i64
  %188 = getelementptr inbounds double, ptr %185, i64 %187
  %189 = load double, ptr %188, align 8, !tbaa !11
  %190 = fdiv double %184, %189
  %191 = fadd double %173, %190
  %192 = load ptr, ptr %12, align 8, !tbaa !5
  %193 = load ptr, ptr %9, align 8, !tbaa !5
  %194 = load i32, ptr %193, align 4, !tbaa !9
  %195 = sext i32 %194 to i64
  %196 = getelementptr inbounds double, ptr %192, i64 %195
  %197 = load double, ptr %196, align 8, !tbaa !11
  %198 = load ptr, ptr %12, align 8, !tbaa !5
  %199 = load ptr, ptr %9, align 8, !tbaa !5
  %200 = load i32, ptr %199, align 4, !tbaa !9
  %201 = sext i32 %200 to i64
  %202 = getelementptr inbounds double, ptr %198, i64 %201
  %203 = load double, ptr %202, align 8, !tbaa !11
  %204 = fmul double %197, %203
  %205 = load ptr, ptr %13, align 8, !tbaa !5
  %206 = load ptr, ptr %9, align 8, !tbaa !5
  %207 = load i32, ptr %206, align 4, !tbaa !9
  %208 = sext i32 %207 to i64
  %209 = getelementptr inbounds double, ptr %205, i64 %208
  %210 = load double, ptr %209, align 8, !tbaa !11
  %211 = fdiv double %204, %210
  %212 = fadd double %191, %211
  store double %212, ptr %29, align 8, !tbaa !11
  %213 = load double, ptr %29, align 8, !tbaa !11
  %214 = fcmp ole double %213, 0.000000e+00
  br i1 %214, label %215, label %369

215:                                              ; preds = %169
  %216 = load ptr, ptr %12, align 8, !tbaa !5
  %217 = load ptr, ptr %9, align 8, !tbaa !5
  %218 = load i32, ptr %217, align 4, !tbaa !9
  %219 = sub nsw i32 %218, 1
  %220 = sext i32 %219 to i64
  %221 = getelementptr inbounds double, ptr %216, i64 %220
  %222 = load double, ptr %221, align 8, !tbaa !11
  %223 = load ptr, ptr %12, align 8, !tbaa !5
  %224 = load ptr, ptr %9, align 8, !tbaa !5
  %225 = load i32, ptr %224, align 4, !tbaa !9
  %226 = sub nsw i32 %225, 1
  %227 = sext i32 %226 to i64
  %228 = getelementptr inbounds double, ptr %223, i64 %227
  %229 = load double, ptr %228, align 8, !tbaa !11
  %230 = fmul double %222, %229
  %231 = load ptr, ptr %11, align 8, !tbaa !5
  %232 = load ptr, ptr %9, align 8, !tbaa !5
  %233 = load i32, ptr %232, align 4, !tbaa !9
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds double, ptr %231, i64 %234
  %236 = load double, ptr %235, align 8, !tbaa !11
  %237 = load ptr, ptr %11, align 8, !tbaa !5
  %238 = load ptr, ptr %9, align 8, !tbaa !5
  %239 = load i32, ptr %238, align 4, !tbaa !9
  %240 = sub nsw i32 %239, 1
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds double, ptr %237, i64 %241
  %243 = load double, ptr %242, align 8, !tbaa !11
  %244 = fsub double %236, %243
  %245 = load ptr, ptr %14, align 8, !tbaa !5
  %246 = load double, ptr %245, align 8, !tbaa !11
  %247 = fadd double %244, %246
  %248 = fdiv double %230, %247
  %249 = load ptr, ptr %12, align 8, !tbaa !5
  %250 = load ptr, ptr %9, align 8, !tbaa !5
  %251 = load i32, ptr %250, align 4, !tbaa !9
  %252 = sext i32 %251 to i64
  %253 = getelementptr inbounds double, ptr %249, i64 %252
  %254 = load double, ptr %253, align 8, !tbaa !11
  %255 = load ptr, ptr %12, align 8, !tbaa !5
  %256 = load ptr, ptr %9, align 8, !tbaa !5
  %257 = load i32, ptr %256, align 4, !tbaa !9
  %258 = sext i32 %257 to i64
  %259 = getelementptr inbounds double, ptr %255, i64 %258
  %260 = load double, ptr %259, align 8, !tbaa !11
  %261 = fmul double %254, %260
  %262 = load ptr, ptr %14, align 8, !tbaa !5
  %263 = load double, ptr %262, align 8, !tbaa !11
  %264 = fdiv double %261, %263
  %265 = fadd double %248, %264
  store double %265, ptr %22, align 8, !tbaa !11
  %266 = load double, ptr %27, align 8, !tbaa !11
  %267 = load double, ptr %22, align 8, !tbaa !11
  %268 = fcmp ole double %266, %267
  br i1 %268, label %269, label %272

269:                                              ; preds = %215
  %270 = load ptr, ptr %14, align 8, !tbaa !5
  %271 = load double, ptr %270, align 8, !tbaa !11
  store double %271, ptr %47, align 8, !tbaa !11
  br label %365

272:                                              ; preds = %215
  %273 = load ptr, ptr %11, align 8, !tbaa !5
  %274 = load ptr, ptr %9, align 8, !tbaa !5
  %275 = load i32, ptr %274, align 4, !tbaa !9
  %276 = sext i32 %275 to i64
  %277 = getelementptr inbounds double, ptr %273, i64 %276
  %278 = load double, ptr %277, align 8, !tbaa !11
  %279 = load ptr, ptr %11, align 8, !tbaa !5
  %280 = load ptr, ptr %9, align 8, !tbaa !5
  %281 = load i32, ptr %280, align 4, !tbaa !9
  %282 = sub nsw i32 %281, 1
  %283 = sext i32 %282 to i64
  %284 = getelementptr inbounds double, ptr %279, i64 %283
  %285 = load double, ptr %284, align 8, !tbaa !11
  %286 = fsub double %278, %285
  store double %286, ptr %43, align 8, !tbaa !11
  %287 = load double, ptr %27, align 8, !tbaa !11
  %288 = fneg double %287
  %289 = load double, ptr %43, align 8, !tbaa !11
  %290 = load ptr, ptr %12, align 8, !tbaa !5
  %291 = load ptr, ptr %9, align 8, !tbaa !5
  %292 = load i32, ptr %291, align 4, !tbaa !9
  %293 = sub nsw i32 %292, 1
  %294 = sext i32 %293 to i64
  %295 = getelementptr inbounds double, ptr %290, i64 %294
  %296 = load double, ptr %295, align 8, !tbaa !11
  %297 = load ptr, ptr %12, align 8, !tbaa !5
  %298 = load ptr, ptr %9, align 8, !tbaa !5
  %299 = load i32, ptr %298, align 4, !tbaa !9
  %300 = sub nsw i32 %299, 1
  %301 = sext i32 %300 to i64
  %302 = getelementptr inbounds double, ptr %297, i64 %301
  %303 = load double, ptr %302, align 8, !tbaa !11
  %304 = fmul double %296, %303
  %305 = call double @llvm.fmuladd.f64(double %288, double %289, double %304)
  %306 = load ptr, ptr %12, align 8, !tbaa !5
  %307 = load ptr, ptr %9, align 8, !tbaa !5
  %308 = load i32, ptr %307, align 4, !tbaa !9
  %309 = sext i32 %308 to i64
  %310 = getelementptr inbounds double, ptr %306, i64 %309
  %311 = load double, ptr %310, align 8, !tbaa !11
  %312 = load ptr, ptr %12, align 8, !tbaa !5
  %313 = load ptr, ptr %9, align 8, !tbaa !5
  %314 = load i32, ptr %313, align 4, !tbaa !9
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds double, ptr %312, i64 %315
  %317 = load double, ptr %316, align 8, !tbaa !11
  %318 = call double @llvm.fmuladd.f64(double %311, double %317, double %305)
  store double %318, ptr %25, align 8, !tbaa !11
  %319 = load ptr, ptr %12, align 8, !tbaa !5
  %320 = load ptr, ptr %9, align 8, !tbaa !5
  %321 = load i32, ptr %320, align 4, !tbaa !9
  %322 = sext i32 %321 to i64
  %323 = getelementptr inbounds double, ptr %319, i64 %322
  %324 = load double, ptr %323, align 8, !tbaa !11
  %325 = load ptr, ptr %12, align 8, !tbaa !5
  %326 = load ptr, ptr %9, align 8, !tbaa !5
  %327 = load i32, ptr %326, align 4, !tbaa !9
  %328 = sext i32 %327 to i64
  %329 = getelementptr inbounds double, ptr %325, i64 %328
  %330 = load double, ptr %329, align 8, !tbaa !11
  %331 = fmul double %324, %330
  %332 = load double, ptr %43, align 8, !tbaa !11
  %333 = fmul double %331, %332
  store double %333, ptr %26, align 8, !tbaa !11
  %334 = load double, ptr %25, align 8, !tbaa !11
  %335 = fcmp olt double %334, 0.000000e+00
  br i1 %335, label %336, label %350

336:                                              ; preds = %272
  %337 = load double, ptr %26, align 8, !tbaa !11
  %338 = fmul double %337, 2.000000e+00
  %339 = load double, ptr %25, align 8, !tbaa !11
  %340 = load double, ptr %25, align 8, !tbaa !11
  %341 = load double, ptr %26, align 8, !tbaa !11
  %342 = fmul double %341, 4.000000e+00
  %343 = load double, ptr %27, align 8, !tbaa !11
  %344 = fmul double %342, %343
  %345 = call double @llvm.fmuladd.f64(double %339, double %340, double %344)
  %346 = call double @sqrt(double noundef %345) #5
  %347 = load double, ptr %25, align 8, !tbaa !11
  %348 = fsub double %346, %347
  %349 = fdiv double %338, %348
  store double %349, ptr %47, align 8, !tbaa !11
  br label %364

350:                                              ; preds = %272
  %351 = load double, ptr %25, align 8, !tbaa !11
  %352 = load double, ptr %25, align 8, !tbaa !11
  %353 = load double, ptr %25, align 8, !tbaa !11
  %354 = load double, ptr %26, align 8, !tbaa !11
  %355 = fmul double %354, 4.000000e+00
  %356 = load double, ptr %27, align 8, !tbaa !11
  %357 = fmul double %355, %356
  %358 = call double @llvm.fmuladd.f64(double %352, double %353, double %357)
  %359 = call double @sqrt(double noundef %358) #5
  %360 = fadd double %351, %359
  %361 = load double, ptr %27, align 8, !tbaa !11
  %362 = fmul double %361, 2.000000e+00
  %363 = fdiv double %360, %362
  store double %363, ptr %47, align 8, !tbaa !11
  br label %364

364:                                              ; preds = %350, %336
  br label %365

365:                                              ; preds = %364, %269
  %366 = load double, ptr %32, align 8, !tbaa !11
  store double %366, ptr %30, align 8, !tbaa !11
  %367 = load ptr, ptr %14, align 8, !tbaa !5
  %368 = load double, ptr %367, align 8, !tbaa !11
  store double %368, ptr %31, align 8, !tbaa !11
  br label %463

369:                                              ; preds = %169
  %370 = load ptr, ptr %11, align 8, !tbaa !5
  %371 = load ptr, ptr %9, align 8, !tbaa !5
  %372 = load i32, ptr %371, align 4, !tbaa !9
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds double, ptr %370, i64 %373
  %375 = load double, ptr %374, align 8, !tbaa !11
  %376 = load ptr, ptr %11, align 8, !tbaa !5
  %377 = load ptr, ptr %9, align 8, !tbaa !5
  %378 = load i32, ptr %377, align 4, !tbaa !9
  %379 = sub nsw i32 %378, 1
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds double, ptr %376, i64 %380
  %382 = load double, ptr %381, align 8, !tbaa !11
  %383 = fsub double %375, %382
  store double %383, ptr %43, align 8, !tbaa !11
  %384 = load double, ptr %27, align 8, !tbaa !11
  %385 = fneg double %384
  %386 = load double, ptr %43, align 8, !tbaa !11
  %387 = load ptr, ptr %12, align 8, !tbaa !5
  %388 = load ptr, ptr %9, align 8, !tbaa !5
  %389 = load i32, ptr %388, align 4, !tbaa !9
  %390 = sub nsw i32 %389, 1
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds double, ptr %387, i64 %391
  %393 = load double, ptr %392, align 8, !tbaa !11
  %394 = load ptr, ptr %12, align 8, !tbaa !5
  %395 = load ptr, ptr %9, align 8, !tbaa !5
  %396 = load i32, ptr %395, align 4, !tbaa !9
  %397 = sub nsw i32 %396, 1
  %398 = sext i32 %397 to i64
  %399 = getelementptr inbounds double, ptr %394, i64 %398
  %400 = load double, ptr %399, align 8, !tbaa !11
  %401 = fmul double %393, %400
  %402 = call double @llvm.fmuladd.f64(double %385, double %386, double %401)
  %403 = load ptr, ptr %12, align 8, !tbaa !5
  %404 = load ptr, ptr %9, align 8, !tbaa !5
  %405 = load i32, ptr %404, align 4, !tbaa !9
  %406 = sext i32 %405 to i64
  %407 = getelementptr inbounds double, ptr %403, i64 %406
  %408 = load double, ptr %407, align 8, !tbaa !11
  %409 = load ptr, ptr %12, align 8, !tbaa !5
  %410 = load ptr, ptr %9, align 8, !tbaa !5
  %411 = load i32, ptr %410, align 4, !tbaa !9
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds double, ptr %409, i64 %412
  %414 = load double, ptr %413, align 8, !tbaa !11
  %415 = call double @llvm.fmuladd.f64(double %408, double %414, double %402)
  store double %415, ptr %25, align 8, !tbaa !11
  %416 = load ptr, ptr %12, align 8, !tbaa !5
  %417 = load ptr, ptr %9, align 8, !tbaa !5
  %418 = load i32, ptr %417, align 4, !tbaa !9
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds double, ptr %416, i64 %419
  %421 = load double, ptr %420, align 8, !tbaa !11
  %422 = load ptr, ptr %12, align 8, !tbaa !5
  %423 = load ptr, ptr %9, align 8, !tbaa !5
  %424 = load i32, ptr %423, align 4, !tbaa !9
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds double, ptr %422, i64 %425
  %427 = load double, ptr %426, align 8, !tbaa !11
  %428 = fmul double %421, %427
  %429 = load double, ptr %43, align 8, !tbaa !11
  %430 = fmul double %428, %429
  store double %430, ptr %26, align 8, !tbaa !11
  %431 = load double, ptr %25, align 8, !tbaa !11
  %432 = fcmp olt double %431, 0.000000e+00
  br i1 %432, label %433, label %447

433:                                              ; preds = %369
  %434 = load double, ptr %26, align 8, !tbaa !11
  %435 = fmul double %434, 2.000000e+00
  %436 = load double, ptr %25, align 8, !tbaa !11
  %437 = load double, ptr %25, align 8, !tbaa !11
  %438 = load double, ptr %26, align 8, !tbaa !11
  %439 = fmul double %438, 4.000000e+00
  %440 = load double, ptr %27, align 8, !tbaa !11
  %441 = fmul double %439, %440
  %442 = call double @llvm.fmuladd.f64(double %436, double %437, double %441)
  %443 = call double @sqrt(double noundef %442) #5
  %444 = load double, ptr %25, align 8, !tbaa !11
  %445 = fsub double %443, %444
  %446 = fdiv double %435, %445
  store double %446, ptr %47, align 8, !tbaa !11
  br label %461

447:                                              ; preds = %369
  %448 = load double, ptr %25, align 8, !tbaa !11
  %449 = load double, ptr %25, align 8, !tbaa !11
  %450 = load double, ptr %25, align 8, !tbaa !11
  %451 = load double, ptr %26, align 8, !tbaa !11
  %452 = fmul double %451, 4.000000e+00
  %453 = load double, ptr %27, align 8, !tbaa !11
  %454 = fmul double %452, %453
  %455 = call double @llvm.fmuladd.f64(double %449, double %450, double %454)
  %456 = call double @sqrt(double noundef %455) #5
  %457 = fadd double %448, %456
  %458 = load double, ptr %27, align 8, !tbaa !11
  %459 = fmul double %458, 2.000000e+00
  %460 = fdiv double %457, %459
  store double %460, ptr %47, align 8, !tbaa !11
  br label %461

461:                                              ; preds = %447, %433
  store double 0.000000e+00, ptr %30, align 8, !tbaa !11
  %462 = load double, ptr %32, align 8, !tbaa !11
  store double %462, ptr %31, align 8, !tbaa !11
  br label %463

463:                                              ; preds = %461, %365
  %464 = load ptr, ptr %9, align 8, !tbaa !5
  %465 = load i32, ptr %464, align 4, !tbaa !9
  store i32 %465, ptr %17, align 4, !tbaa !9
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %466

466:                                              ; preds = %489, %463
  %467 = load i32, ptr %28, align 4, !tbaa !9
  %468 = load i32, ptr %17, align 4, !tbaa !9
  %469 = icmp sle i32 %467, %468
  br i1 %469, label %470, label %492

470:                                              ; preds = %466
  %471 = load ptr, ptr %11, align 8, !tbaa !5
  %472 = load i32, ptr %28, align 4, !tbaa !9
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds double, ptr %471, i64 %473
  %475 = load double, ptr %474, align 8, !tbaa !11
  %476 = load ptr, ptr %11, align 8, !tbaa !5
  %477 = load ptr, ptr %10, align 8, !tbaa !5
  %478 = load i32, ptr %477, align 4, !tbaa !9
  %479 = sext i32 %478 to i64
  %480 = getelementptr inbounds double, ptr %476, i64 %479
  %481 = load double, ptr %480, align 8, !tbaa !11
  %482 = fsub double %475, %481
  %483 = load double, ptr %47, align 8, !tbaa !11
  %484 = fsub double %482, %483
  %485 = load ptr, ptr %13, align 8, !tbaa !5
  %486 = load i32, ptr %28, align 4, !tbaa !9
  %487 = sext i32 %486 to i64
  %488 = getelementptr inbounds double, ptr %485, i64 %487
  store double %484, ptr %488, align 8, !tbaa !11
  br label %489

489:                                              ; preds = %470
  %490 = load i32, ptr %28, align 4, !tbaa !9
  %491 = add nsw i32 %490, 1
  store i32 %491, ptr %28, align 4, !tbaa !9
  br label %466, !llvm.loop !16

492:                                              ; preds = %466
  store double 0.000000e+00, ptr %20, align 8, !tbaa !11
  store double 0.000000e+00, ptr %48, align 8, !tbaa !11
  store double 0.000000e+00, ptr %40, align 8, !tbaa !11
  %493 = load i32, ptr %36, align 4, !tbaa !9
  store i32 %493, ptr %17, align 4, !tbaa !9
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %494

494:                                              ; preds = %525, %492
  %495 = load i32, ptr %28, align 4, !tbaa !9
  %496 = load i32, ptr %17, align 4, !tbaa !9
  %497 = icmp sle i32 %495, %496
  br i1 %497, label %498, label %528

498:                                              ; preds = %494
  %499 = load ptr, ptr %12, align 8, !tbaa !5
  %500 = load i32, ptr %28, align 4, !tbaa !9
  %501 = sext i32 %500 to i64
  %502 = getelementptr inbounds double, ptr %499, i64 %501
  %503 = load double, ptr %502, align 8, !tbaa !11
  %504 = load ptr, ptr %13, align 8, !tbaa !5
  %505 = load i32, ptr %28, align 4, !tbaa !9
  %506 = sext i32 %505 to i64
  %507 = getelementptr inbounds double, ptr %504, i64 %506
  %508 = load double, ptr %507, align 8, !tbaa !11
  %509 = fdiv double %503, %508
  store double %509, ptr %22, align 8, !tbaa !11
  %510 = load ptr, ptr %12, align 8, !tbaa !5
  %511 = load i32, ptr %28, align 4, !tbaa !9
  %512 = sext i32 %511 to i64
  %513 = getelementptr inbounds double, ptr %510, i64 %512
  %514 = load double, ptr %513, align 8, !tbaa !11
  %515 = load double, ptr %22, align 8, !tbaa !11
  %516 = load double, ptr %48, align 8, !tbaa !11
  %517 = call double @llvm.fmuladd.f64(double %514, double %515, double %516)
  store double %517, ptr %48, align 8, !tbaa !11
  %518 = load double, ptr %22, align 8, !tbaa !11
  %519 = load double, ptr %22, align 8, !tbaa !11
  %520 = load double, ptr %20, align 8, !tbaa !11
  %521 = call double @llvm.fmuladd.f64(double %518, double %519, double %520)
  store double %521, ptr %20, align 8, !tbaa !11
  %522 = load double, ptr %48, align 8, !tbaa !11
  %523 = load double, ptr %40, align 8, !tbaa !11
  %524 = fadd double %523, %522
  store double %524, ptr %40, align 8, !tbaa !11
  br label %525

525:                                              ; preds = %498
  %526 = load i32, ptr %28, align 4, !tbaa !9
  %527 = add nsw i32 %526, 1
  store i32 %527, ptr %28, align 4, !tbaa !9
  br label %494, !llvm.loop !17

528:                                              ; preds = %494
  %529 = load double, ptr %40, align 8, !tbaa !11
  %530 = fcmp oge double %529, 0.000000e+00
  br i1 %530, label %531, label %533

531:                                              ; preds = %528
  %532 = load double, ptr %40, align 8, !tbaa !11
  br label %536

533:                                              ; preds = %528
  %534 = load double, ptr %40, align 8, !tbaa !11
  %535 = fneg double %534
  br label %536

536:                                              ; preds = %533, %531
  %537 = phi double [ %532, %531 ], [ %535, %533 ]
  store double %537, ptr %40, align 8, !tbaa !11
  %538 = load ptr, ptr %12, align 8, !tbaa !5
  %539 = load ptr, ptr %9, align 8, !tbaa !5
  %540 = load i32, ptr %539, align 4, !tbaa !9
  %541 = sext i32 %540 to i64
  %542 = getelementptr inbounds double, ptr %538, i64 %541
  %543 = load double, ptr %542, align 8, !tbaa !11
  %544 = load ptr, ptr %13, align 8, !tbaa !5
  %545 = load ptr, ptr %9, align 8, !tbaa !5
  %546 = load i32, ptr %545, align 4, !tbaa !9
  %547 = sext i32 %546 to i64
  %548 = getelementptr inbounds double, ptr %544, i64 %547
  %549 = load double, ptr %548, align 8, !tbaa !11
  %550 = fdiv double %543, %549
  store double %550, ptr %22, align 8, !tbaa !11
  %551 = load ptr, ptr %12, align 8, !tbaa !5
  %552 = load ptr, ptr %9, align 8, !tbaa !5
  %553 = load i32, ptr %552, align 4, !tbaa !9
  %554 = sext i32 %553 to i64
  %555 = getelementptr inbounds double, ptr %551, i64 %554
  %556 = load double, ptr %555, align 8, !tbaa !11
  %557 = load double, ptr %22, align 8, !tbaa !11
  %558 = fmul double %556, %557
  store double %558, ptr %45, align 8, !tbaa !11
  %559 = load double, ptr %22, align 8, !tbaa !11
  %560 = load double, ptr %22, align 8, !tbaa !11
  %561 = fmul double %559, %560
  store double %561, ptr %19, align 8, !tbaa !11
  %562 = load double, ptr %45, align 8, !tbaa !11
  %563 = fneg double %562
  %564 = load double, ptr %48, align 8, !tbaa !11
  %565 = fsub double %563, %564
  %566 = load double, ptr %40, align 8, !tbaa !11
  %567 = call double @llvm.fmuladd.f64(double %565, double 8.000000e+00, double %566)
  %568 = load double, ptr %45, align 8, !tbaa !11
  %569 = fsub double %567, %568
  %570 = load double, ptr %41, align 8, !tbaa !11
  %571 = fadd double %569, %570
  %572 = load double, ptr %47, align 8, !tbaa !11
  %573 = fcmp oge double %572, 0.000000e+00
  br i1 %573, label %574, label %576

574:                                              ; preds = %536
  %575 = load double, ptr %47, align 8, !tbaa !11
  br label %579

576:                                              ; preds = %536
  %577 = load double, ptr %47, align 8, !tbaa !11
  %578 = fneg double %577
  br label %579

579:                                              ; preds = %576, %574
  %580 = phi double [ %575, %574 ], [ %578, %576 ]
  %581 = load double, ptr %20, align 8, !tbaa !11
  %582 = load double, ptr %19, align 8, !tbaa !11
  %583 = fadd double %581, %582
  %584 = call double @llvm.fmuladd.f64(double %580, double %583, double %571)
  store double %584, ptr %40, align 8, !tbaa !11
  %585 = load double, ptr %41, align 8, !tbaa !11
  %586 = load double, ptr %45, align 8, !tbaa !11
  %587 = fadd double %585, %586
  %588 = load double, ptr %48, align 8, !tbaa !11
  %589 = fadd double %587, %588
  store double %589, ptr %29, align 8, !tbaa !11
  %590 = load double, ptr %29, align 8, !tbaa !11
  %591 = fcmp oge double %590, 0.000000e+00
  br i1 %591, label %592, label %594

592:                                              ; preds = %579
  %593 = load double, ptr %29, align 8, !tbaa !11
  br label %597

594:                                              ; preds = %579
  %595 = load double, ptr %29, align 8, !tbaa !11
  %596 = fneg double %595
  br label %597

597:                                              ; preds = %594, %592
  %598 = phi double [ %593, %592 ], [ %596, %594 ]
  %599 = load double, ptr %46, align 8, !tbaa !11
  %600 = load double, ptr %40, align 8, !tbaa !11
  %601 = fmul double %599, %600
  %602 = fcmp ole double %598, %601
  br i1 %602, label %603, label %613

603:                                              ; preds = %597
  %604 = load ptr, ptr %11, align 8, !tbaa !5
  %605 = load ptr, ptr %10, align 8, !tbaa !5
  %606 = load i32, ptr %605, align 4, !tbaa !9
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds double, ptr %604, i64 %607
  %609 = load double, ptr %608, align 8, !tbaa !11
  %610 = load double, ptr %47, align 8, !tbaa !11
  %611 = fadd double %609, %610
  %612 = load ptr, ptr %15, align 8, !tbaa !5
  store double %611, ptr %612, align 8, !tbaa !11
  br label %3463

613:                                              ; preds = %597
  %614 = load double, ptr %29, align 8, !tbaa !11
  %615 = fcmp ole double %614, 0.000000e+00
  br i1 %615, label %616, label %626

616:                                              ; preds = %613
  %617 = load double, ptr %30, align 8, !tbaa !11
  %618 = load double, ptr %47, align 8, !tbaa !11
  %619 = fcmp oge double %617, %618
  br i1 %619, label %620, label %622

620:                                              ; preds = %616
  %621 = load double, ptr %30, align 8, !tbaa !11
  br label %624

622:                                              ; preds = %616
  %623 = load double, ptr %47, align 8, !tbaa !11
  br label %624

624:                                              ; preds = %622, %620
  %625 = phi double [ %621, %620 ], [ %623, %622 ]
  store double %625, ptr %30, align 8, !tbaa !11
  br label %636

626:                                              ; preds = %613
  %627 = load double, ptr %31, align 8, !tbaa !11
  %628 = load double, ptr %47, align 8, !tbaa !11
  %629 = fcmp ole double %627, %628
  br i1 %629, label %630, label %632

630:                                              ; preds = %626
  %631 = load double, ptr %31, align 8, !tbaa !11
  br label %634

632:                                              ; preds = %626
  %633 = load double, ptr %47, align 8, !tbaa !11
  br label %634

634:                                              ; preds = %632, %630
  %635 = phi double [ %631, %630 ], [ %633, %632 ]
  store double %635, ptr %31, align 8, !tbaa !11
  br label %636

636:                                              ; preds = %634, %624
  %637 = load i32, ptr %33, align 4, !tbaa !9
  %638 = add nsw i32 %637, 1
  store i32 %638, ptr %33, align 4, !tbaa !9
  %639 = load double, ptr %29, align 8, !tbaa !11
  %640 = load ptr, ptr %13, align 8, !tbaa !5
  %641 = load ptr, ptr %9, align 8, !tbaa !5
  %642 = load i32, ptr %641, align 4, !tbaa !9
  %643 = sub nsw i32 %642, 1
  %644 = sext i32 %643 to i64
  %645 = getelementptr inbounds double, ptr %640, i64 %644
  %646 = load double, ptr %645, align 8, !tbaa !11
  %647 = load double, ptr %20, align 8, !tbaa !11
  %648 = fneg double %646
  %649 = call double @llvm.fmuladd.f64(double %648, double %647, double %639)
  %650 = load ptr, ptr %13, align 8, !tbaa !5
  %651 = load ptr, ptr %9, align 8, !tbaa !5
  %652 = load i32, ptr %651, align 4, !tbaa !9
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds double, ptr %650, i64 %653
  %655 = load double, ptr %654, align 8, !tbaa !11
  %656 = load double, ptr %19, align 8, !tbaa !11
  %657 = fneg double %655
  %658 = call double @llvm.fmuladd.f64(double %657, double %656, double %649)
  store double %658, ptr %27, align 8, !tbaa !11
  %659 = load ptr, ptr %13, align 8, !tbaa !5
  %660 = load ptr, ptr %9, align 8, !tbaa !5
  %661 = load i32, ptr %660, align 4, !tbaa !9
  %662 = sub nsw i32 %661, 1
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds double, ptr %659, i64 %663
  %665 = load double, ptr %664, align 8, !tbaa !11
  %666 = load ptr, ptr %13, align 8, !tbaa !5
  %667 = load ptr, ptr %9, align 8, !tbaa !5
  %668 = load i32, ptr %667, align 4, !tbaa !9
  %669 = sext i32 %668 to i64
  %670 = getelementptr inbounds double, ptr %666, i64 %669
  %671 = load double, ptr %670, align 8, !tbaa !11
  %672 = fadd double %665, %671
  %673 = load double, ptr %29, align 8, !tbaa !11
  %674 = load ptr, ptr %13, align 8, !tbaa !5
  %675 = load ptr, ptr %9, align 8, !tbaa !5
  %676 = load i32, ptr %675, align 4, !tbaa !9
  %677 = sub nsw i32 %676, 1
  %678 = sext i32 %677 to i64
  %679 = getelementptr inbounds double, ptr %674, i64 %678
  %680 = load double, ptr %679, align 8, !tbaa !11
  %681 = load ptr, ptr %13, align 8, !tbaa !5
  %682 = load ptr, ptr %9, align 8, !tbaa !5
  %683 = load i32, ptr %682, align 4, !tbaa !9
  %684 = sext i32 %683 to i64
  %685 = getelementptr inbounds double, ptr %681, i64 %684
  %686 = load double, ptr %685, align 8, !tbaa !11
  %687 = fmul double %680, %686
  %688 = load double, ptr %20, align 8, !tbaa !11
  %689 = load double, ptr %19, align 8, !tbaa !11
  %690 = fadd double %688, %689
  %691 = fmul double %687, %690
  %692 = fneg double %691
  %693 = call double @llvm.fmuladd.f64(double %672, double %673, double %692)
  store double %693, ptr %25, align 8, !tbaa !11
  %694 = load ptr, ptr %13, align 8, !tbaa !5
  %695 = load ptr, ptr %9, align 8, !tbaa !5
  %696 = load i32, ptr %695, align 4, !tbaa !9
  %697 = sub nsw i32 %696, 1
  %698 = sext i32 %697 to i64
  %699 = getelementptr inbounds double, ptr %694, i64 %698
  %700 = load double, ptr %699, align 8, !tbaa !11
  %701 = load ptr, ptr %13, align 8, !tbaa !5
  %702 = load ptr, ptr %9, align 8, !tbaa !5
  %703 = load i32, ptr %702, align 4, !tbaa !9
  %704 = sext i32 %703 to i64
  %705 = getelementptr inbounds double, ptr %701, i64 %704
  %706 = load double, ptr %705, align 8, !tbaa !11
  %707 = fmul double %700, %706
  %708 = load double, ptr %29, align 8, !tbaa !11
  %709 = fmul double %707, %708
  store double %709, ptr %26, align 8, !tbaa !11
  %710 = load double, ptr %27, align 8, !tbaa !11
  %711 = fcmp olt double %710, 0.000000e+00
  br i1 %711, label %712, label %722

712:                                              ; preds = %636
  %713 = load double, ptr %27, align 8, !tbaa !11
  %714 = fcmp oge double %713, 0.000000e+00
  br i1 %714, label %715, label %717

715:                                              ; preds = %712
  %716 = load double, ptr %27, align 8, !tbaa !11
  br label %720

717:                                              ; preds = %712
  %718 = load double, ptr %27, align 8, !tbaa !11
  %719 = fneg double %718
  br label %720

720:                                              ; preds = %717, %715
  %721 = phi double [ %716, %715 ], [ %719, %717 ]
  store double %721, ptr %27, align 8, !tbaa !11
  br label %722

722:                                              ; preds = %720, %636
  %723 = load double, ptr %27, align 8, !tbaa !11
  %724 = fcmp oeq double %723, 0.000000e+00
  br i1 %724, label %725, label %729

725:                                              ; preds = %722
  %726 = load double, ptr %31, align 8, !tbaa !11
  %727 = load double, ptr %47, align 8, !tbaa !11
  %728 = fsub double %726, %727
  store double %728, ptr %44, align 8, !tbaa !11
  br label %781

729:                                              ; preds = %722
  %730 = load double, ptr %25, align 8, !tbaa !11
  %731 = fcmp oge double %730, 0.000000e+00
  br i1 %731, label %732, label %756

732:                                              ; preds = %729
  %733 = load double, ptr %25, align 8, !tbaa !11
  %734 = load double, ptr %25, align 8, !tbaa !11
  %735 = load double, ptr %25, align 8, !tbaa !11
  %736 = load double, ptr %26, align 8, !tbaa !11
  %737 = fmul double %736, 4.000000e+00
  %738 = load double, ptr %27, align 8, !tbaa !11
  %739 = fmul double %737, %738
  %740 = fneg double %739
  %741 = call double @llvm.fmuladd.f64(double %734, double %735, double %740)
  store double %741, ptr %18, align 8, !tbaa !11
  %742 = load double, ptr %18, align 8, !tbaa !11
  %743 = fcmp oge double %742, 0.000000e+00
  br i1 %743, label %744, label %746

744:                                              ; preds = %732
  %745 = load double, ptr %18, align 8, !tbaa !11
  br label %749

746:                                              ; preds = %732
  %747 = load double, ptr %18, align 8, !tbaa !11
  %748 = fneg double %747
  br label %749

749:                                              ; preds = %746, %744
  %750 = phi double [ %745, %744 ], [ %748, %746 ]
  %751 = call double @sqrt(double noundef %750) #5
  %752 = fadd double %733, %751
  %753 = load double, ptr %27, align 8, !tbaa !11
  %754 = fmul double %753, 2.000000e+00
  %755 = fdiv double %752, %754
  store double %755, ptr %44, align 8, !tbaa !11
  br label %780

756:                                              ; preds = %729
  %757 = load double, ptr %26, align 8, !tbaa !11
  %758 = fmul double %757, 2.000000e+00
  %759 = load double, ptr %25, align 8, !tbaa !11
  %760 = load double, ptr %25, align 8, !tbaa !11
  %761 = load double, ptr %25, align 8, !tbaa !11
  %762 = load double, ptr %26, align 8, !tbaa !11
  %763 = fmul double %762, 4.000000e+00
  %764 = load double, ptr %27, align 8, !tbaa !11
  %765 = fmul double %763, %764
  %766 = fneg double %765
  %767 = call double @llvm.fmuladd.f64(double %760, double %761, double %766)
  store double %767, ptr %18, align 8, !tbaa !11
  %768 = load double, ptr %18, align 8, !tbaa !11
  %769 = fcmp oge double %768, 0.000000e+00
  br i1 %769, label %770, label %772

770:                                              ; preds = %756
  %771 = load double, ptr %18, align 8, !tbaa !11
  br label %775

772:                                              ; preds = %756
  %773 = load double, ptr %18, align 8, !tbaa !11
  %774 = fneg double %773
  br label %775

775:                                              ; preds = %772, %770
  %776 = phi double [ %771, %770 ], [ %774, %772 ]
  %777 = call double @sqrt(double noundef %776) #5
  %778 = fsub double %759, %777
  %779 = fdiv double %758, %778
  store double %779, ptr %44, align 8, !tbaa !11
  br label %780

780:                                              ; preds = %775, %749
  br label %781

781:                                              ; preds = %780, %725
  %782 = load double, ptr %29, align 8, !tbaa !11
  %783 = load double, ptr %44, align 8, !tbaa !11
  %784 = fmul double %782, %783
  %785 = fcmp ogt double %784, 0.000000e+00
  br i1 %785, label %786, label %793

786:                                              ; preds = %781
  %787 = load double, ptr %29, align 8, !tbaa !11
  %788 = fneg double %787
  %789 = load double, ptr %20, align 8, !tbaa !11
  %790 = load double, ptr %19, align 8, !tbaa !11
  %791 = fadd double %789, %790
  %792 = fdiv double %788, %791
  store double %792, ptr %44, align 8, !tbaa !11
  br label %793

793:                                              ; preds = %786, %781
  %794 = load double, ptr %47, align 8, !tbaa !11
  %795 = load double, ptr %44, align 8, !tbaa !11
  %796 = fadd double %794, %795
  store double %796, ptr %22, align 8, !tbaa !11
  %797 = load double, ptr %22, align 8, !tbaa !11
  %798 = load double, ptr %31, align 8, !tbaa !11
  %799 = fcmp ogt double %797, %798
  br i1 %799, label %804, label %800

800:                                              ; preds = %793
  %801 = load double, ptr %22, align 8, !tbaa !11
  %802 = load double, ptr %30, align 8, !tbaa !11
  %803 = fcmp olt double %801, %802
  br i1 %803, label %804, label %818

804:                                              ; preds = %800, %793
  %805 = load double, ptr %29, align 8, !tbaa !11
  %806 = fcmp olt double %805, 0.000000e+00
  br i1 %806, label %807, label %812

807:                                              ; preds = %804
  %808 = load double, ptr %31, align 8, !tbaa !11
  %809 = load double, ptr %47, align 8, !tbaa !11
  %810 = fsub double %808, %809
  %811 = fdiv double %810, 2.000000e+00
  store double %811, ptr %44, align 8, !tbaa !11
  br label %817

812:                                              ; preds = %804
  %813 = load double, ptr %30, align 8, !tbaa !11
  %814 = load double, ptr %47, align 8, !tbaa !11
  %815 = fsub double %813, %814
  %816 = fdiv double %815, 2.000000e+00
  store double %816, ptr %44, align 8, !tbaa !11
  br label %817

817:                                              ; preds = %812, %807
  br label %818

818:                                              ; preds = %817, %800
  %819 = load ptr, ptr %9, align 8, !tbaa !5
  %820 = load i32, ptr %819, align 4, !tbaa !9
  store i32 %820, ptr %17, align 4, !tbaa !9
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %821

821:                                              ; preds = %833, %818
  %822 = load i32, ptr %28, align 4, !tbaa !9
  %823 = load i32, ptr %17, align 4, !tbaa !9
  %824 = icmp sle i32 %822, %823
  br i1 %824, label %825, label %836

825:                                              ; preds = %821
  %826 = load double, ptr %44, align 8, !tbaa !11
  %827 = load ptr, ptr %13, align 8, !tbaa !5
  %828 = load i32, ptr %28, align 4, !tbaa !9
  %829 = sext i32 %828 to i64
  %830 = getelementptr inbounds double, ptr %827, i64 %829
  %831 = load double, ptr %830, align 8, !tbaa !11
  %832 = fsub double %831, %826
  store double %832, ptr %830, align 8, !tbaa !11
  br label %833

833:                                              ; preds = %825
  %834 = load i32, ptr %28, align 4, !tbaa !9
  %835 = add nsw i32 %834, 1
  store i32 %835, ptr %28, align 4, !tbaa !9
  br label %821, !llvm.loop !18

836:                                              ; preds = %821
  %837 = load double, ptr %44, align 8, !tbaa !11
  %838 = load double, ptr %47, align 8, !tbaa !11
  %839 = fadd double %838, %837
  store double %839, ptr %47, align 8, !tbaa !11
  store double 0.000000e+00, ptr %20, align 8, !tbaa !11
  store double 0.000000e+00, ptr %48, align 8, !tbaa !11
  store double 0.000000e+00, ptr %40, align 8, !tbaa !11
  %840 = load i32, ptr %36, align 4, !tbaa !9
  store i32 %840, ptr %17, align 4, !tbaa !9
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %841

841:                                              ; preds = %872, %836
  %842 = load i32, ptr %28, align 4, !tbaa !9
  %843 = load i32, ptr %17, align 4, !tbaa !9
  %844 = icmp sle i32 %842, %843
  br i1 %844, label %845, label %875

845:                                              ; preds = %841
  %846 = load ptr, ptr %12, align 8, !tbaa !5
  %847 = load i32, ptr %28, align 4, !tbaa !9
  %848 = sext i32 %847 to i64
  %849 = getelementptr inbounds double, ptr %846, i64 %848
  %850 = load double, ptr %849, align 8, !tbaa !11
  %851 = load ptr, ptr %13, align 8, !tbaa !5
  %852 = load i32, ptr %28, align 4, !tbaa !9
  %853 = sext i32 %852 to i64
  %854 = getelementptr inbounds double, ptr %851, i64 %853
  %855 = load double, ptr %854, align 8, !tbaa !11
  %856 = fdiv double %850, %855
  store double %856, ptr %22, align 8, !tbaa !11
  %857 = load ptr, ptr %12, align 8, !tbaa !5
  %858 = load i32, ptr %28, align 4, !tbaa !9
  %859 = sext i32 %858 to i64
  %860 = getelementptr inbounds double, ptr %857, i64 %859
  %861 = load double, ptr %860, align 8, !tbaa !11
  %862 = load double, ptr %22, align 8, !tbaa !11
  %863 = load double, ptr %48, align 8, !tbaa !11
  %864 = call double @llvm.fmuladd.f64(double %861, double %862, double %863)
  store double %864, ptr %48, align 8, !tbaa !11
  %865 = load double, ptr %22, align 8, !tbaa !11
  %866 = load double, ptr %22, align 8, !tbaa !11
  %867 = load double, ptr %20, align 8, !tbaa !11
  %868 = call double @llvm.fmuladd.f64(double %865, double %866, double %867)
  store double %868, ptr %20, align 8, !tbaa !11
  %869 = load double, ptr %48, align 8, !tbaa !11
  %870 = load double, ptr %40, align 8, !tbaa !11
  %871 = fadd double %870, %869
  store double %871, ptr %40, align 8, !tbaa !11
  br label %872

872:                                              ; preds = %845
  %873 = load i32, ptr %28, align 4, !tbaa !9
  %874 = add nsw i32 %873, 1
  store i32 %874, ptr %28, align 4, !tbaa !9
  br label %841, !llvm.loop !19

875:                                              ; preds = %841
  %876 = load double, ptr %40, align 8, !tbaa !11
  %877 = fcmp oge double %876, 0.000000e+00
  br i1 %877, label %878, label %880

878:                                              ; preds = %875
  %879 = load double, ptr %40, align 8, !tbaa !11
  br label %883

880:                                              ; preds = %875
  %881 = load double, ptr %40, align 8, !tbaa !11
  %882 = fneg double %881
  br label %883

883:                                              ; preds = %880, %878
  %884 = phi double [ %879, %878 ], [ %882, %880 ]
  store double %884, ptr %40, align 8, !tbaa !11
  %885 = load ptr, ptr %12, align 8, !tbaa !5
  %886 = load ptr, ptr %9, align 8, !tbaa !5
  %887 = load i32, ptr %886, align 4, !tbaa !9
  %888 = sext i32 %887 to i64
  %889 = getelementptr inbounds double, ptr %885, i64 %888
  %890 = load double, ptr %889, align 8, !tbaa !11
  %891 = load ptr, ptr %13, align 8, !tbaa !5
  %892 = load ptr, ptr %9, align 8, !tbaa !5
  %893 = load i32, ptr %892, align 4, !tbaa !9
  %894 = sext i32 %893 to i64
  %895 = getelementptr inbounds double, ptr %891, i64 %894
  %896 = load double, ptr %895, align 8, !tbaa !11
  %897 = fdiv double %890, %896
  store double %897, ptr %22, align 8, !tbaa !11
  %898 = load ptr, ptr %12, align 8, !tbaa !5
  %899 = load ptr, ptr %9, align 8, !tbaa !5
  %900 = load i32, ptr %899, align 4, !tbaa !9
  %901 = sext i32 %900 to i64
  %902 = getelementptr inbounds double, ptr %898, i64 %901
  %903 = load double, ptr %902, align 8, !tbaa !11
  %904 = load double, ptr %22, align 8, !tbaa !11
  %905 = fmul double %903, %904
  store double %905, ptr %45, align 8, !tbaa !11
  %906 = load double, ptr %22, align 8, !tbaa !11
  %907 = load double, ptr %22, align 8, !tbaa !11
  %908 = fmul double %906, %907
  store double %908, ptr %19, align 8, !tbaa !11
  %909 = load double, ptr %45, align 8, !tbaa !11
  %910 = fneg double %909
  %911 = load double, ptr %48, align 8, !tbaa !11
  %912 = fsub double %910, %911
  %913 = load double, ptr %40, align 8, !tbaa !11
  %914 = call double @llvm.fmuladd.f64(double %912, double 8.000000e+00, double %913)
  %915 = load double, ptr %45, align 8, !tbaa !11
  %916 = fsub double %914, %915
  %917 = load double, ptr %41, align 8, !tbaa !11
  %918 = fadd double %916, %917
  %919 = load double, ptr %47, align 8, !tbaa !11
  %920 = fcmp oge double %919, 0.000000e+00
  br i1 %920, label %921, label %923

921:                                              ; preds = %883
  %922 = load double, ptr %47, align 8, !tbaa !11
  br label %926

923:                                              ; preds = %883
  %924 = load double, ptr %47, align 8, !tbaa !11
  %925 = fneg double %924
  br label %926

926:                                              ; preds = %923, %921
  %927 = phi double [ %922, %921 ], [ %925, %923 ]
  %928 = load double, ptr %20, align 8, !tbaa !11
  %929 = load double, ptr %19, align 8, !tbaa !11
  %930 = fadd double %928, %929
  %931 = call double @llvm.fmuladd.f64(double %927, double %930, double %918)
  store double %931, ptr %40, align 8, !tbaa !11
  %932 = load double, ptr %41, align 8, !tbaa !11
  %933 = load double, ptr %45, align 8, !tbaa !11
  %934 = fadd double %932, %933
  %935 = load double, ptr %48, align 8, !tbaa !11
  %936 = fadd double %934, %935
  store double %936, ptr %29, align 8, !tbaa !11
  %937 = load i32, ptr %33, align 4, !tbaa !9
  %938 = add nsw i32 %937, 1
  store i32 %938, ptr %21, align 4, !tbaa !9
  %939 = load i32, ptr %21, align 4, !tbaa !9
  store i32 %939, ptr %33, align 4, !tbaa !9
  br label %940

940:                                              ; preds = %1268, %926
  %941 = load i32, ptr %33, align 4, !tbaa !9
  %942 = icmp sle i32 %941, 30
  br i1 %942, label %943, label %1271

943:                                              ; preds = %940
  %944 = load double, ptr %29, align 8, !tbaa !11
  %945 = fcmp oge double %944, 0.000000e+00
  br i1 %945, label %946, label %948

946:                                              ; preds = %943
  %947 = load double, ptr %29, align 8, !tbaa !11
  br label %951

948:                                              ; preds = %943
  %949 = load double, ptr %29, align 8, !tbaa !11
  %950 = fneg double %949
  br label %951

951:                                              ; preds = %948, %946
  %952 = phi double [ %947, %946 ], [ %950, %948 ]
  %953 = load double, ptr %46, align 8, !tbaa !11
  %954 = load double, ptr %40, align 8, !tbaa !11
  %955 = fmul double %953, %954
  %956 = fcmp ole double %952, %955
  br i1 %956, label %957, label %967

957:                                              ; preds = %951
  %958 = load ptr, ptr %11, align 8, !tbaa !5
  %959 = load ptr, ptr %10, align 8, !tbaa !5
  %960 = load i32, ptr %959, align 4, !tbaa !9
  %961 = sext i32 %960 to i64
  %962 = getelementptr inbounds double, ptr %958, i64 %961
  %963 = load double, ptr %962, align 8, !tbaa !11
  %964 = load double, ptr %47, align 8, !tbaa !11
  %965 = fadd double %963, %964
  %966 = load ptr, ptr %15, align 8, !tbaa !5
  store double %965, ptr %966, align 8, !tbaa !11
  br label %3463

967:                                              ; preds = %951
  %968 = load double, ptr %29, align 8, !tbaa !11
  %969 = fcmp ole double %968, 0.000000e+00
  br i1 %969, label %970, label %980

970:                                              ; preds = %967
  %971 = load double, ptr %30, align 8, !tbaa !11
  %972 = load double, ptr %47, align 8, !tbaa !11
  %973 = fcmp oge double %971, %972
  br i1 %973, label %974, label %976

974:                                              ; preds = %970
  %975 = load double, ptr %30, align 8, !tbaa !11
  br label %978

976:                                              ; preds = %970
  %977 = load double, ptr %47, align 8, !tbaa !11
  br label %978

978:                                              ; preds = %976, %974
  %979 = phi double [ %975, %974 ], [ %977, %976 ]
  store double %979, ptr %30, align 8, !tbaa !11
  br label %990

980:                                              ; preds = %967
  %981 = load double, ptr %31, align 8, !tbaa !11
  %982 = load double, ptr %47, align 8, !tbaa !11
  %983 = fcmp ole double %981, %982
  br i1 %983, label %984, label %986

984:                                              ; preds = %980
  %985 = load double, ptr %31, align 8, !tbaa !11
  br label %988

986:                                              ; preds = %980
  %987 = load double, ptr %47, align 8, !tbaa !11
  br label %988

988:                                              ; preds = %986, %984
  %989 = phi double [ %985, %984 ], [ %987, %986 ]
  store double %989, ptr %31, align 8, !tbaa !11
  br label %990

990:                                              ; preds = %988, %978
  %991 = load double, ptr %29, align 8, !tbaa !11
  %992 = load ptr, ptr %13, align 8, !tbaa !5
  %993 = load ptr, ptr %9, align 8, !tbaa !5
  %994 = load i32, ptr %993, align 4, !tbaa !9
  %995 = sub nsw i32 %994, 1
  %996 = sext i32 %995 to i64
  %997 = getelementptr inbounds double, ptr %992, i64 %996
  %998 = load double, ptr %997, align 8, !tbaa !11
  %999 = load double, ptr %20, align 8, !tbaa !11
  %1000 = fneg double %998
  %1001 = call double @llvm.fmuladd.f64(double %1000, double %999, double %991)
  %1002 = load ptr, ptr %13, align 8, !tbaa !5
  %1003 = load ptr, ptr %9, align 8, !tbaa !5
  %1004 = load i32, ptr %1003, align 4, !tbaa !9
  %1005 = sext i32 %1004 to i64
  %1006 = getelementptr inbounds double, ptr %1002, i64 %1005
  %1007 = load double, ptr %1006, align 8, !tbaa !11
  %1008 = load double, ptr %19, align 8, !tbaa !11
  %1009 = fneg double %1007
  %1010 = call double @llvm.fmuladd.f64(double %1009, double %1008, double %1001)
  store double %1010, ptr %27, align 8, !tbaa !11
  %1011 = load ptr, ptr %13, align 8, !tbaa !5
  %1012 = load ptr, ptr %9, align 8, !tbaa !5
  %1013 = load i32, ptr %1012, align 4, !tbaa !9
  %1014 = sub nsw i32 %1013, 1
  %1015 = sext i32 %1014 to i64
  %1016 = getelementptr inbounds double, ptr %1011, i64 %1015
  %1017 = load double, ptr %1016, align 8, !tbaa !11
  %1018 = load ptr, ptr %13, align 8, !tbaa !5
  %1019 = load ptr, ptr %9, align 8, !tbaa !5
  %1020 = load i32, ptr %1019, align 4, !tbaa !9
  %1021 = sext i32 %1020 to i64
  %1022 = getelementptr inbounds double, ptr %1018, i64 %1021
  %1023 = load double, ptr %1022, align 8, !tbaa !11
  %1024 = fadd double %1017, %1023
  %1025 = load double, ptr %29, align 8, !tbaa !11
  %1026 = load ptr, ptr %13, align 8, !tbaa !5
  %1027 = load ptr, ptr %9, align 8, !tbaa !5
  %1028 = load i32, ptr %1027, align 4, !tbaa !9
  %1029 = sub nsw i32 %1028, 1
  %1030 = sext i32 %1029 to i64
  %1031 = getelementptr inbounds double, ptr %1026, i64 %1030
  %1032 = load double, ptr %1031, align 8, !tbaa !11
  %1033 = load ptr, ptr %13, align 8, !tbaa !5
  %1034 = load ptr, ptr %9, align 8, !tbaa !5
  %1035 = load i32, ptr %1034, align 4, !tbaa !9
  %1036 = sext i32 %1035 to i64
  %1037 = getelementptr inbounds double, ptr %1033, i64 %1036
  %1038 = load double, ptr %1037, align 8, !tbaa !11
  %1039 = fmul double %1032, %1038
  %1040 = load double, ptr %20, align 8, !tbaa !11
  %1041 = load double, ptr %19, align 8, !tbaa !11
  %1042 = fadd double %1040, %1041
  %1043 = fmul double %1039, %1042
  %1044 = fneg double %1043
  %1045 = call double @llvm.fmuladd.f64(double %1024, double %1025, double %1044)
  store double %1045, ptr %25, align 8, !tbaa !11
  %1046 = load ptr, ptr %13, align 8, !tbaa !5
  %1047 = load ptr, ptr %9, align 8, !tbaa !5
  %1048 = load i32, ptr %1047, align 4, !tbaa !9
  %1049 = sub nsw i32 %1048, 1
  %1050 = sext i32 %1049 to i64
  %1051 = getelementptr inbounds double, ptr %1046, i64 %1050
  %1052 = load double, ptr %1051, align 8, !tbaa !11
  %1053 = load ptr, ptr %13, align 8, !tbaa !5
  %1054 = load ptr, ptr %9, align 8, !tbaa !5
  %1055 = load i32, ptr %1054, align 4, !tbaa !9
  %1056 = sext i32 %1055 to i64
  %1057 = getelementptr inbounds double, ptr %1053, i64 %1056
  %1058 = load double, ptr %1057, align 8, !tbaa !11
  %1059 = fmul double %1052, %1058
  %1060 = load double, ptr %29, align 8, !tbaa !11
  %1061 = fmul double %1059, %1060
  store double %1061, ptr %26, align 8, !tbaa !11
  %1062 = load double, ptr %25, align 8, !tbaa !11
  %1063 = fcmp oge double %1062, 0.000000e+00
  br i1 %1063, label %1064, label %1088

1064:                                             ; preds = %990
  %1065 = load double, ptr %25, align 8, !tbaa !11
  %1066 = load double, ptr %25, align 8, !tbaa !11
  %1067 = load double, ptr %25, align 8, !tbaa !11
  %1068 = load double, ptr %26, align 8, !tbaa !11
  %1069 = fmul double %1068, 4.000000e+00
  %1070 = load double, ptr %27, align 8, !tbaa !11
  %1071 = fmul double %1069, %1070
  %1072 = fneg double %1071
  %1073 = call double @llvm.fmuladd.f64(double %1066, double %1067, double %1072)
  store double %1073, ptr %18, align 8, !tbaa !11
  %1074 = load double, ptr %18, align 8, !tbaa !11
  %1075 = fcmp oge double %1074, 0.000000e+00
  br i1 %1075, label %1076, label %1078

1076:                                             ; preds = %1064
  %1077 = load double, ptr %18, align 8, !tbaa !11
  br label %1081

1078:                                             ; preds = %1064
  %1079 = load double, ptr %18, align 8, !tbaa !11
  %1080 = fneg double %1079
  br label %1081

1081:                                             ; preds = %1078, %1076
  %1082 = phi double [ %1077, %1076 ], [ %1080, %1078 ]
  %1083 = call double @sqrt(double noundef %1082) #5
  %1084 = fadd double %1065, %1083
  %1085 = load double, ptr %27, align 8, !tbaa !11
  %1086 = fmul double %1085, 2.000000e+00
  %1087 = fdiv double %1084, %1086
  store double %1087, ptr %44, align 8, !tbaa !11
  br label %1112

1088:                                             ; preds = %990
  %1089 = load double, ptr %26, align 8, !tbaa !11
  %1090 = fmul double %1089, 2.000000e+00
  %1091 = load double, ptr %25, align 8, !tbaa !11
  %1092 = load double, ptr %25, align 8, !tbaa !11
  %1093 = load double, ptr %25, align 8, !tbaa !11
  %1094 = load double, ptr %26, align 8, !tbaa !11
  %1095 = fmul double %1094, 4.000000e+00
  %1096 = load double, ptr %27, align 8, !tbaa !11
  %1097 = fmul double %1095, %1096
  %1098 = fneg double %1097
  %1099 = call double @llvm.fmuladd.f64(double %1092, double %1093, double %1098)
  store double %1099, ptr %18, align 8, !tbaa !11
  %1100 = load double, ptr %18, align 8, !tbaa !11
  %1101 = fcmp oge double %1100, 0.000000e+00
  br i1 %1101, label %1102, label %1104

1102:                                             ; preds = %1088
  %1103 = load double, ptr %18, align 8, !tbaa !11
  br label %1107

1104:                                             ; preds = %1088
  %1105 = load double, ptr %18, align 8, !tbaa !11
  %1106 = fneg double %1105
  br label %1107

1107:                                             ; preds = %1104, %1102
  %1108 = phi double [ %1103, %1102 ], [ %1106, %1104 ]
  %1109 = call double @sqrt(double noundef %1108) #5
  %1110 = fsub double %1091, %1109
  %1111 = fdiv double %1090, %1110
  store double %1111, ptr %44, align 8, !tbaa !11
  br label %1112

1112:                                             ; preds = %1107, %1081
  %1113 = load double, ptr %29, align 8, !tbaa !11
  %1114 = load double, ptr %44, align 8, !tbaa !11
  %1115 = fmul double %1113, %1114
  %1116 = fcmp ogt double %1115, 0.000000e+00
  br i1 %1116, label %1117, label %1124

1117:                                             ; preds = %1112
  %1118 = load double, ptr %29, align 8, !tbaa !11
  %1119 = fneg double %1118
  %1120 = load double, ptr %20, align 8, !tbaa !11
  %1121 = load double, ptr %19, align 8, !tbaa !11
  %1122 = fadd double %1120, %1121
  %1123 = fdiv double %1119, %1122
  store double %1123, ptr %44, align 8, !tbaa !11
  br label %1124

1124:                                             ; preds = %1117, %1112
  %1125 = load double, ptr %47, align 8, !tbaa !11
  %1126 = load double, ptr %44, align 8, !tbaa !11
  %1127 = fadd double %1125, %1126
  store double %1127, ptr %22, align 8, !tbaa !11
  %1128 = load double, ptr %22, align 8, !tbaa !11
  %1129 = load double, ptr %31, align 8, !tbaa !11
  %1130 = fcmp ogt double %1128, %1129
  br i1 %1130, label %1135, label %1131

1131:                                             ; preds = %1124
  %1132 = load double, ptr %22, align 8, !tbaa !11
  %1133 = load double, ptr %30, align 8, !tbaa !11
  %1134 = fcmp olt double %1132, %1133
  br i1 %1134, label %1135, label %1149

1135:                                             ; preds = %1131, %1124
  %1136 = load double, ptr %29, align 8, !tbaa !11
  %1137 = fcmp olt double %1136, 0.000000e+00
  br i1 %1137, label %1138, label %1143

1138:                                             ; preds = %1135
  %1139 = load double, ptr %31, align 8, !tbaa !11
  %1140 = load double, ptr %47, align 8, !tbaa !11
  %1141 = fsub double %1139, %1140
  %1142 = fdiv double %1141, 2.000000e+00
  store double %1142, ptr %44, align 8, !tbaa !11
  br label %1148

1143:                                             ; preds = %1135
  %1144 = load double, ptr %30, align 8, !tbaa !11
  %1145 = load double, ptr %47, align 8, !tbaa !11
  %1146 = fsub double %1144, %1145
  %1147 = fdiv double %1146, 2.000000e+00
  store double %1147, ptr %44, align 8, !tbaa !11
  br label %1148

1148:                                             ; preds = %1143, %1138
  br label %1149

1149:                                             ; preds = %1148, %1131
  %1150 = load ptr, ptr %9, align 8, !tbaa !5
  %1151 = load i32, ptr %1150, align 4, !tbaa !9
  store i32 %1151, ptr %17, align 4, !tbaa !9
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %1152

1152:                                             ; preds = %1164, %1149
  %1153 = load i32, ptr %28, align 4, !tbaa !9
  %1154 = load i32, ptr %17, align 4, !tbaa !9
  %1155 = icmp sle i32 %1153, %1154
  br i1 %1155, label %1156, label %1167

1156:                                             ; preds = %1152
  %1157 = load double, ptr %44, align 8, !tbaa !11
  %1158 = load ptr, ptr %13, align 8, !tbaa !5
  %1159 = load i32, ptr %28, align 4, !tbaa !9
  %1160 = sext i32 %1159 to i64
  %1161 = getelementptr inbounds double, ptr %1158, i64 %1160
  %1162 = load double, ptr %1161, align 8, !tbaa !11
  %1163 = fsub double %1162, %1157
  store double %1163, ptr %1161, align 8, !tbaa !11
  br label %1164

1164:                                             ; preds = %1156
  %1165 = load i32, ptr %28, align 4, !tbaa !9
  %1166 = add nsw i32 %1165, 1
  store i32 %1166, ptr %28, align 4, !tbaa !9
  br label %1152, !llvm.loop !20

1167:                                             ; preds = %1152
  %1168 = load double, ptr %44, align 8, !tbaa !11
  %1169 = load double, ptr %47, align 8, !tbaa !11
  %1170 = fadd double %1169, %1168
  store double %1170, ptr %47, align 8, !tbaa !11
  store double 0.000000e+00, ptr %20, align 8, !tbaa !11
  store double 0.000000e+00, ptr %48, align 8, !tbaa !11
  store double 0.000000e+00, ptr %40, align 8, !tbaa !11
  %1171 = load i32, ptr %36, align 4, !tbaa !9
  store i32 %1171, ptr %17, align 4, !tbaa !9
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %1172

1172:                                             ; preds = %1203, %1167
  %1173 = load i32, ptr %28, align 4, !tbaa !9
  %1174 = load i32, ptr %17, align 4, !tbaa !9
  %1175 = icmp sle i32 %1173, %1174
  br i1 %1175, label %1176, label %1206

1176:                                             ; preds = %1172
  %1177 = load ptr, ptr %12, align 8, !tbaa !5
  %1178 = load i32, ptr %28, align 4, !tbaa !9
  %1179 = sext i32 %1178 to i64
  %1180 = getelementptr inbounds double, ptr %1177, i64 %1179
  %1181 = load double, ptr %1180, align 8, !tbaa !11
  %1182 = load ptr, ptr %13, align 8, !tbaa !5
  %1183 = load i32, ptr %28, align 4, !tbaa !9
  %1184 = sext i32 %1183 to i64
  %1185 = getelementptr inbounds double, ptr %1182, i64 %1184
  %1186 = load double, ptr %1185, align 8, !tbaa !11
  %1187 = fdiv double %1181, %1186
  store double %1187, ptr %22, align 8, !tbaa !11
  %1188 = load ptr, ptr %12, align 8, !tbaa !5
  %1189 = load i32, ptr %28, align 4, !tbaa !9
  %1190 = sext i32 %1189 to i64
  %1191 = getelementptr inbounds double, ptr %1188, i64 %1190
  %1192 = load double, ptr %1191, align 8, !tbaa !11
  %1193 = load double, ptr %22, align 8, !tbaa !11
  %1194 = load double, ptr %48, align 8, !tbaa !11
  %1195 = call double @llvm.fmuladd.f64(double %1192, double %1193, double %1194)
  store double %1195, ptr %48, align 8, !tbaa !11
  %1196 = load double, ptr %22, align 8, !tbaa !11
  %1197 = load double, ptr %22, align 8, !tbaa !11
  %1198 = load double, ptr %20, align 8, !tbaa !11
  %1199 = call double @llvm.fmuladd.f64(double %1196, double %1197, double %1198)
  store double %1199, ptr %20, align 8, !tbaa !11
  %1200 = load double, ptr %48, align 8, !tbaa !11
  %1201 = load double, ptr %40, align 8, !tbaa !11
  %1202 = fadd double %1201, %1200
  store double %1202, ptr %40, align 8, !tbaa !11
  br label %1203

1203:                                             ; preds = %1176
  %1204 = load i32, ptr %28, align 4, !tbaa !9
  %1205 = add nsw i32 %1204, 1
  store i32 %1205, ptr %28, align 4, !tbaa !9
  br label %1172, !llvm.loop !21

1206:                                             ; preds = %1172
  %1207 = load double, ptr %40, align 8, !tbaa !11
  %1208 = fcmp oge double %1207, 0.000000e+00
  br i1 %1208, label %1209, label %1211

1209:                                             ; preds = %1206
  %1210 = load double, ptr %40, align 8, !tbaa !11
  br label %1214

1211:                                             ; preds = %1206
  %1212 = load double, ptr %40, align 8, !tbaa !11
  %1213 = fneg double %1212
  br label %1214

1214:                                             ; preds = %1211, %1209
  %1215 = phi double [ %1210, %1209 ], [ %1213, %1211 ]
  store double %1215, ptr %40, align 8, !tbaa !11
  %1216 = load ptr, ptr %12, align 8, !tbaa !5
  %1217 = load ptr, ptr %9, align 8, !tbaa !5
  %1218 = load i32, ptr %1217, align 4, !tbaa !9
  %1219 = sext i32 %1218 to i64
  %1220 = getelementptr inbounds double, ptr %1216, i64 %1219
  %1221 = load double, ptr %1220, align 8, !tbaa !11
  %1222 = load ptr, ptr %13, align 8, !tbaa !5
  %1223 = load ptr, ptr %9, align 8, !tbaa !5
  %1224 = load i32, ptr %1223, align 4, !tbaa !9
  %1225 = sext i32 %1224 to i64
  %1226 = getelementptr inbounds double, ptr %1222, i64 %1225
  %1227 = load double, ptr %1226, align 8, !tbaa !11
  %1228 = fdiv double %1221, %1227
  store double %1228, ptr %22, align 8, !tbaa !11
  %1229 = load ptr, ptr %12, align 8, !tbaa !5
  %1230 = load ptr, ptr %9, align 8, !tbaa !5
  %1231 = load i32, ptr %1230, align 4, !tbaa !9
  %1232 = sext i32 %1231 to i64
  %1233 = getelementptr inbounds double, ptr %1229, i64 %1232
  %1234 = load double, ptr %1233, align 8, !tbaa !11
  %1235 = load double, ptr %22, align 8, !tbaa !11
  %1236 = fmul double %1234, %1235
  store double %1236, ptr %45, align 8, !tbaa !11
  %1237 = load double, ptr %22, align 8, !tbaa !11
  %1238 = load double, ptr %22, align 8, !tbaa !11
  %1239 = fmul double %1237, %1238
  store double %1239, ptr %19, align 8, !tbaa !11
  %1240 = load double, ptr %45, align 8, !tbaa !11
  %1241 = fneg double %1240
  %1242 = load double, ptr %48, align 8, !tbaa !11
  %1243 = fsub double %1241, %1242
  %1244 = load double, ptr %40, align 8, !tbaa !11
  %1245 = call double @llvm.fmuladd.f64(double %1243, double 8.000000e+00, double %1244)
  %1246 = load double, ptr %45, align 8, !tbaa !11
  %1247 = fsub double %1245, %1246
  %1248 = load double, ptr %41, align 8, !tbaa !11
  %1249 = fadd double %1247, %1248
  %1250 = load double, ptr %47, align 8, !tbaa !11
  %1251 = fcmp oge double %1250, 0.000000e+00
  br i1 %1251, label %1252, label %1254

1252:                                             ; preds = %1214
  %1253 = load double, ptr %47, align 8, !tbaa !11
  br label %1257

1254:                                             ; preds = %1214
  %1255 = load double, ptr %47, align 8, !tbaa !11
  %1256 = fneg double %1255
  br label %1257

1257:                                             ; preds = %1254, %1252
  %1258 = phi double [ %1253, %1252 ], [ %1256, %1254 ]
  %1259 = load double, ptr %20, align 8, !tbaa !11
  %1260 = load double, ptr %19, align 8, !tbaa !11
  %1261 = fadd double %1259, %1260
  %1262 = call double @llvm.fmuladd.f64(double %1258, double %1261, double %1249)
  store double %1262, ptr %40, align 8, !tbaa !11
  %1263 = load double, ptr %41, align 8, !tbaa !11
  %1264 = load double, ptr %45, align 8, !tbaa !11
  %1265 = fadd double %1263, %1264
  %1266 = load double, ptr %48, align 8, !tbaa !11
  %1267 = fadd double %1265, %1266
  store double %1267, ptr %29, align 8, !tbaa !11
  br label %1268

1268:                                             ; preds = %1257
  %1269 = load i32, ptr %33, align 4, !tbaa !9
  %1270 = add nsw i32 %1269, 1
  store i32 %1270, ptr %33, align 4, !tbaa !9
  br label %940, !llvm.loop !22

1271:                                             ; preds = %940
  %1272 = load ptr, ptr %16, align 8, !tbaa !5
  store i32 1, ptr %1272, align 4, !tbaa !9
  %1273 = load ptr, ptr %11, align 8, !tbaa !5
  %1274 = load ptr, ptr %10, align 8, !tbaa !5
  %1275 = load i32, ptr %1274, align 4, !tbaa !9
  %1276 = sext i32 %1275 to i64
  %1277 = getelementptr inbounds double, ptr %1273, i64 %1276
  %1278 = load double, ptr %1277, align 8, !tbaa !11
  %1279 = load double, ptr %47, align 8, !tbaa !11
  %1280 = fadd double %1278, %1279
  %1281 = load ptr, ptr %15, align 8, !tbaa !5
  store double %1280, ptr %1281, align 8, !tbaa !11
  br label %3463

1282:                                             ; preds = %93
  store i32 1, ptr %33, align 4, !tbaa !9
  %1283 = load ptr, ptr %10, align 8, !tbaa !5
  %1284 = load i32, ptr %1283, align 4, !tbaa !9
  %1285 = add nsw i32 %1284, 1
  store i32 %1285, ptr %42, align 4, !tbaa !9
  %1286 = load ptr, ptr %11, align 8, !tbaa !5
  %1287 = load i32, ptr %42, align 4, !tbaa !9
  %1288 = sext i32 %1287 to i64
  %1289 = getelementptr inbounds double, ptr %1286, i64 %1288
  %1290 = load double, ptr %1289, align 8, !tbaa !11
  %1291 = load ptr, ptr %11, align 8, !tbaa !5
  %1292 = load ptr, ptr %10, align 8, !tbaa !5
  %1293 = load i32, ptr %1292, align 4, !tbaa !9
  %1294 = sext i32 %1293 to i64
  %1295 = getelementptr inbounds double, ptr %1291, i64 %1294
  %1296 = load double, ptr %1295, align 8, !tbaa !11
  %1297 = fsub double %1290, %1296
  store double %1297, ptr %43, align 8, !tbaa !11
  %1298 = load double, ptr %43, align 8, !tbaa !11
  %1299 = fdiv double %1298, 2.000000e+00
  store double %1299, ptr %32, align 8, !tbaa !11
  %1300 = load ptr, ptr %9, align 8, !tbaa !5
  %1301 = load i32, ptr %1300, align 4, !tbaa !9
  store i32 %1301, ptr %17, align 4, !tbaa !9
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %1302

1302:                                             ; preds = %1325, %1282
  %1303 = load i32, ptr %28, align 4, !tbaa !9
  %1304 = load i32, ptr %17, align 4, !tbaa !9
  %1305 = icmp sle i32 %1303, %1304
  br i1 %1305, label %1306, label %1328

1306:                                             ; preds = %1302
  %1307 = load ptr, ptr %11, align 8, !tbaa !5
  %1308 = load i32, ptr %28, align 4, !tbaa !9
  %1309 = sext i32 %1308 to i64
  %1310 = getelementptr inbounds double, ptr %1307, i64 %1309
  %1311 = load double, ptr %1310, align 8, !tbaa !11
  %1312 = load ptr, ptr %11, align 8, !tbaa !5
  %1313 = load ptr, ptr %10, align 8, !tbaa !5
  %1314 = load i32, ptr %1313, align 4, !tbaa !9
  %1315 = sext i32 %1314 to i64
  %1316 = getelementptr inbounds double, ptr %1312, i64 %1315
  %1317 = load double, ptr %1316, align 8, !tbaa !11
  %1318 = fsub double %1311, %1317
  %1319 = load double, ptr %32, align 8, !tbaa !11
  %1320 = fsub double %1318, %1319
  %1321 = load ptr, ptr %13, align 8, !tbaa !5
  %1322 = load i32, ptr %28, align 4, !tbaa !9
  %1323 = sext i32 %1322 to i64
  %1324 = getelementptr inbounds double, ptr %1321, i64 %1323
  store double %1320, ptr %1324, align 8, !tbaa !11
  br label %1325

1325:                                             ; preds = %1306
  %1326 = load i32, ptr %28, align 4, !tbaa !9
  %1327 = add nsw i32 %1326, 1
  store i32 %1327, ptr %28, align 4, !tbaa !9
  br label %1302, !llvm.loop !23

1328:                                             ; preds = %1302
  store double 0.000000e+00, ptr %48, align 8, !tbaa !11
  %1329 = load ptr, ptr %10, align 8, !tbaa !5
  %1330 = load i32, ptr %1329, align 4, !tbaa !9
  %1331 = sub nsw i32 %1330, 1
  store i32 %1331, ptr %17, align 4, !tbaa !9
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %1332

1332:                                             ; preds = %1356, %1328
  %1333 = load i32, ptr %28, align 4, !tbaa !9
  %1334 = load i32, ptr %17, align 4, !tbaa !9
  %1335 = icmp sle i32 %1333, %1334
  br i1 %1335, label %1336, label %1359

1336:                                             ; preds = %1332
  %1337 = load ptr, ptr %12, align 8, !tbaa !5
  %1338 = load i32, ptr %28, align 4, !tbaa !9
  %1339 = sext i32 %1338 to i64
  %1340 = getelementptr inbounds double, ptr %1337, i64 %1339
  %1341 = load double, ptr %1340, align 8, !tbaa !11
  %1342 = load ptr, ptr %12, align 8, !tbaa !5
  %1343 = load i32, ptr %28, align 4, !tbaa !9
  %1344 = sext i32 %1343 to i64
  %1345 = getelementptr inbounds double, ptr %1342, i64 %1344
  %1346 = load double, ptr %1345, align 8, !tbaa !11
  %1347 = fmul double %1341, %1346
  %1348 = load ptr, ptr %13, align 8, !tbaa !5
  %1349 = load i32, ptr %28, align 4, !tbaa !9
  %1350 = sext i32 %1349 to i64
  %1351 = getelementptr inbounds double, ptr %1348, i64 %1350
  %1352 = load double, ptr %1351, align 8, !tbaa !11
  %1353 = fdiv double %1347, %1352
  %1354 = load double, ptr %48, align 8, !tbaa !11
  %1355 = fadd double %1354, %1353
  store double %1355, ptr %48, align 8, !tbaa !11
  br label %1356

1356:                                             ; preds = %1336
  %1357 = load i32, ptr %28, align 4, !tbaa !9
  %1358 = add nsw i32 %1357, 1
  store i32 %1358, ptr %28, align 4, !tbaa !9
  br label %1332, !llvm.loop !24

1359:                                             ; preds = %1332
  store double 0.000000e+00, ptr %45, align 8, !tbaa !11
  %1360 = load ptr, ptr %10, align 8, !tbaa !5
  %1361 = load i32, ptr %1360, align 4, !tbaa !9
  %1362 = add nsw i32 %1361, 2
  store i32 %1362, ptr %17, align 4, !tbaa !9
  %1363 = load ptr, ptr %9, align 8, !tbaa !5
  %1364 = load i32, ptr %1363, align 4, !tbaa !9
  store i32 %1364, ptr %28, align 4, !tbaa !9
  br label %1365

1365:                                             ; preds = %1389, %1359
  %1366 = load i32, ptr %28, align 4, !tbaa !9
  %1367 = load i32, ptr %17, align 4, !tbaa !9
  %1368 = icmp sge i32 %1366, %1367
  br i1 %1368, label %1369, label %1392

1369:                                             ; preds = %1365
  %1370 = load ptr, ptr %12, align 8, !tbaa !5
  %1371 = load i32, ptr %28, align 4, !tbaa !9
  %1372 = sext i32 %1371 to i64
  %1373 = getelementptr inbounds double, ptr %1370, i64 %1372
  %1374 = load double, ptr %1373, align 8, !tbaa !11
  %1375 = load ptr, ptr %12, align 8, !tbaa !5
  %1376 = load i32, ptr %28, align 4, !tbaa !9
  %1377 = sext i32 %1376 to i64
  %1378 = getelementptr inbounds double, ptr %1375, i64 %1377
  %1379 = load double, ptr %1378, align 8, !tbaa !11
  %1380 = fmul double %1374, %1379
  %1381 = load ptr, ptr %13, align 8, !tbaa !5
  %1382 = load i32, ptr %28, align 4, !tbaa !9
  %1383 = sext i32 %1382 to i64
  %1384 = getelementptr inbounds double, ptr %1381, i64 %1383
  %1385 = load double, ptr %1384, align 8, !tbaa !11
  %1386 = fdiv double %1380, %1385
  %1387 = load double, ptr %45, align 8, !tbaa !11
  %1388 = fadd double %1387, %1386
  store double %1388, ptr %45, align 8, !tbaa !11
  br label %1389

1389:                                             ; preds = %1369
  %1390 = load i32, ptr %28, align 4, !tbaa !9
  %1391 = add nsw i32 %1390, -1
  store i32 %1391, ptr %28, align 4, !tbaa !9
  br label %1365, !llvm.loop !25

1392:                                             ; preds = %1365
  %1393 = load double, ptr %41, align 8, !tbaa !11
  %1394 = load double, ptr %48, align 8, !tbaa !11
  %1395 = fadd double %1393, %1394
  %1396 = load double, ptr %45, align 8, !tbaa !11
  %1397 = fadd double %1395, %1396
  store double %1397, ptr %27, align 8, !tbaa !11
  %1398 = load double, ptr %27, align 8, !tbaa !11
  %1399 = load ptr, ptr %12, align 8, !tbaa !5
  %1400 = load ptr, ptr %10, align 8, !tbaa !5
  %1401 = load i32, ptr %1400, align 4, !tbaa !9
  %1402 = sext i32 %1401 to i64
  %1403 = getelementptr inbounds double, ptr %1399, i64 %1402
  %1404 = load double, ptr %1403, align 8, !tbaa !11
  %1405 = load ptr, ptr %12, align 8, !tbaa !5
  %1406 = load ptr, ptr %10, align 8, !tbaa !5
  %1407 = load i32, ptr %1406, align 4, !tbaa !9
  %1408 = sext i32 %1407 to i64
  %1409 = getelementptr inbounds double, ptr %1405, i64 %1408
  %1410 = load double, ptr %1409, align 8, !tbaa !11
  %1411 = fmul double %1404, %1410
  %1412 = load ptr, ptr %13, align 8, !tbaa !5
  %1413 = load ptr, ptr %10, align 8, !tbaa !5
  %1414 = load i32, ptr %1413, align 4, !tbaa !9
  %1415 = sext i32 %1414 to i64
  %1416 = getelementptr inbounds double, ptr %1412, i64 %1415
  %1417 = load double, ptr %1416, align 8, !tbaa !11
  %1418 = fdiv double %1411, %1417
  %1419 = fadd double %1398, %1418
  %1420 = load ptr, ptr %12, align 8, !tbaa !5
  %1421 = load i32, ptr %42, align 4, !tbaa !9
  %1422 = sext i32 %1421 to i64
  %1423 = getelementptr inbounds double, ptr %1420, i64 %1422
  %1424 = load double, ptr %1423, align 8, !tbaa !11
  %1425 = load ptr, ptr %12, align 8, !tbaa !5
  %1426 = load i32, ptr %42, align 4, !tbaa !9
  %1427 = sext i32 %1426 to i64
  %1428 = getelementptr inbounds double, ptr %1425, i64 %1427
  %1429 = load double, ptr %1428, align 8, !tbaa !11
  %1430 = fmul double %1424, %1429
  %1431 = load ptr, ptr %13, align 8, !tbaa !5
  %1432 = load i32, ptr %42, align 4, !tbaa !9
  %1433 = sext i32 %1432 to i64
  %1434 = getelementptr inbounds double, ptr %1431, i64 %1433
  %1435 = load double, ptr %1434, align 8, !tbaa !11
  %1436 = fdiv double %1430, %1435
  %1437 = fadd double %1419, %1436
  store double %1437, ptr %29, align 8, !tbaa !11
  %1438 = load double, ptr %29, align 8, !tbaa !11
  %1439 = fcmp ogt double %1438, 0.000000e+00
  br i1 %1439, label %1440, label %1535

1440:                                             ; preds = %1392
  store i32 1, ptr %39, align 4, !tbaa !9
  %1441 = load double, ptr %27, align 8, !tbaa !11
  %1442 = load double, ptr %43, align 8, !tbaa !11
  %1443 = load ptr, ptr %12, align 8, !tbaa !5
  %1444 = load ptr, ptr %10, align 8, !tbaa !5
  %1445 = load i32, ptr %1444, align 4, !tbaa !9
  %1446 = sext i32 %1445 to i64
  %1447 = getelementptr inbounds double, ptr %1443, i64 %1446
  %1448 = load double, ptr %1447, align 8, !tbaa !11
  %1449 = load ptr, ptr %12, align 8, !tbaa !5
  %1450 = load ptr, ptr %10, align 8, !tbaa !5
  %1451 = load i32, ptr %1450, align 4, !tbaa !9
  %1452 = sext i32 %1451 to i64
  %1453 = getelementptr inbounds double, ptr %1449, i64 %1452
  %1454 = load double, ptr %1453, align 8, !tbaa !11
  %1455 = fmul double %1448, %1454
  %1456 = call double @llvm.fmuladd.f64(double %1441, double %1442, double %1455)
  %1457 = load ptr, ptr %12, align 8, !tbaa !5
  %1458 = load i32, ptr %42, align 4, !tbaa !9
  %1459 = sext i32 %1458 to i64
  %1460 = getelementptr inbounds double, ptr %1457, i64 %1459
  %1461 = load double, ptr %1460, align 8, !tbaa !11
  %1462 = load ptr, ptr %12, align 8, !tbaa !5
  %1463 = load i32, ptr %42, align 4, !tbaa !9
  %1464 = sext i32 %1463 to i64
  %1465 = getelementptr inbounds double, ptr %1462, i64 %1464
  %1466 = load double, ptr %1465, align 8, !tbaa !11
  %1467 = call double @llvm.fmuladd.f64(double %1461, double %1466, double %1456)
  store double %1467, ptr %25, align 8, !tbaa !11
  %1468 = load ptr, ptr %12, align 8, !tbaa !5
  %1469 = load ptr, ptr %10, align 8, !tbaa !5
  %1470 = load i32, ptr %1469, align 4, !tbaa !9
  %1471 = sext i32 %1470 to i64
  %1472 = getelementptr inbounds double, ptr %1468, i64 %1471
  %1473 = load double, ptr %1472, align 8, !tbaa !11
  %1474 = load ptr, ptr %12, align 8, !tbaa !5
  %1475 = load ptr, ptr %10, align 8, !tbaa !5
  %1476 = load i32, ptr %1475, align 4, !tbaa !9
  %1477 = sext i32 %1476 to i64
  %1478 = getelementptr inbounds double, ptr %1474, i64 %1477
  %1479 = load double, ptr %1478, align 8, !tbaa !11
  %1480 = fmul double %1473, %1479
  %1481 = load double, ptr %43, align 8, !tbaa !11
  %1482 = fmul double %1480, %1481
  store double %1482, ptr %26, align 8, !tbaa !11
  %1483 = load double, ptr %25, align 8, !tbaa !11
  %1484 = fcmp ogt double %1483, 0.000000e+00
  br i1 %1484, label %1485, label %1509

1485:                                             ; preds = %1440
  %1486 = load double, ptr %26, align 8, !tbaa !11
  %1487 = fmul double %1486, 2.000000e+00
  %1488 = load double, ptr %25, align 8, !tbaa !11
  %1489 = load double, ptr %25, align 8, !tbaa !11
  %1490 = load double, ptr %25, align 8, !tbaa !11
  %1491 = load double, ptr %26, align 8, !tbaa !11
  %1492 = fmul double %1491, 4.000000e+00
  %1493 = load double, ptr %27, align 8, !tbaa !11
  %1494 = fmul double %1492, %1493
  %1495 = fneg double %1494
  %1496 = call double @llvm.fmuladd.f64(double %1489, double %1490, double %1495)
  store double %1496, ptr %18, align 8, !tbaa !11
  %1497 = load double, ptr %18, align 8, !tbaa !11
  %1498 = fcmp oge double %1497, 0.000000e+00
  br i1 %1498, label %1499, label %1501

1499:                                             ; preds = %1485
  %1500 = load double, ptr %18, align 8, !tbaa !11
  br label %1504

1501:                                             ; preds = %1485
  %1502 = load double, ptr %18, align 8, !tbaa !11
  %1503 = fneg double %1502
  br label %1504

1504:                                             ; preds = %1501, %1499
  %1505 = phi double [ %1500, %1499 ], [ %1503, %1501 ]
  %1506 = call double @sqrt(double noundef %1505) #5
  %1507 = fadd double %1488, %1506
  %1508 = fdiv double %1487, %1507
  store double %1508, ptr %47, align 8, !tbaa !11
  br label %1533

1509:                                             ; preds = %1440
  %1510 = load double, ptr %25, align 8, !tbaa !11
  %1511 = load double, ptr %25, align 8, !tbaa !11
  %1512 = load double, ptr %25, align 8, !tbaa !11
  %1513 = load double, ptr %26, align 8, !tbaa !11
  %1514 = fmul double %1513, 4.000000e+00
  %1515 = load double, ptr %27, align 8, !tbaa !11
  %1516 = fmul double %1514, %1515
  %1517 = fneg double %1516
  %1518 = call double @llvm.fmuladd.f64(double %1511, double %1512, double %1517)
  store double %1518, ptr %18, align 8, !tbaa !11
  %1519 = load double, ptr %18, align 8, !tbaa !11
  %1520 = fcmp oge double %1519, 0.000000e+00
  br i1 %1520, label %1521, label %1523

1521:                                             ; preds = %1509
  %1522 = load double, ptr %18, align 8, !tbaa !11
  br label %1526

1523:                                             ; preds = %1509
  %1524 = load double, ptr %18, align 8, !tbaa !11
  %1525 = fneg double %1524
  br label %1526

1526:                                             ; preds = %1523, %1521
  %1527 = phi double [ %1522, %1521 ], [ %1525, %1523 ]
  %1528 = call double @sqrt(double noundef %1527) #5
  %1529 = fsub double %1510, %1528
  %1530 = load double, ptr %27, align 8, !tbaa !11
  %1531 = fmul double %1530, 2.000000e+00
  %1532 = fdiv double %1529, %1531
  store double %1532, ptr %47, align 8, !tbaa !11
  br label %1533

1533:                                             ; preds = %1526, %1504
  store double 0.000000e+00, ptr %30, align 8, !tbaa !11
  %1534 = load double, ptr %32, align 8, !tbaa !11
  store double %1534, ptr %31, align 8, !tbaa !11
  br label %1630

1535:                                             ; preds = %1392
  store i32 0, ptr %39, align 4, !tbaa !9
  %1536 = load double, ptr %27, align 8, !tbaa !11
  %1537 = load double, ptr %43, align 8, !tbaa !11
  %1538 = load ptr, ptr %12, align 8, !tbaa !5
  %1539 = load ptr, ptr %10, align 8, !tbaa !5
  %1540 = load i32, ptr %1539, align 4, !tbaa !9
  %1541 = sext i32 %1540 to i64
  %1542 = getelementptr inbounds double, ptr %1538, i64 %1541
  %1543 = load double, ptr %1542, align 8, !tbaa !11
  %1544 = load ptr, ptr %12, align 8, !tbaa !5
  %1545 = load ptr, ptr %10, align 8, !tbaa !5
  %1546 = load i32, ptr %1545, align 4, !tbaa !9
  %1547 = sext i32 %1546 to i64
  %1548 = getelementptr inbounds double, ptr %1544, i64 %1547
  %1549 = load double, ptr %1548, align 8, !tbaa !11
  %1550 = fmul double %1543, %1549
  %1551 = fneg double %1550
  %1552 = call double @llvm.fmuladd.f64(double %1536, double %1537, double %1551)
  %1553 = load ptr, ptr %12, align 8, !tbaa !5
  %1554 = load i32, ptr %42, align 4, !tbaa !9
  %1555 = sext i32 %1554 to i64
  %1556 = getelementptr inbounds double, ptr %1553, i64 %1555
  %1557 = load double, ptr %1556, align 8, !tbaa !11
  %1558 = load ptr, ptr %12, align 8, !tbaa !5
  %1559 = load i32, ptr %42, align 4, !tbaa !9
  %1560 = sext i32 %1559 to i64
  %1561 = getelementptr inbounds double, ptr %1558, i64 %1560
  %1562 = load double, ptr %1561, align 8, !tbaa !11
  %1563 = fneg double %1557
  %1564 = call double @llvm.fmuladd.f64(double %1563, double %1562, double %1552)
  store double %1564, ptr %25, align 8, !tbaa !11
  %1565 = load ptr, ptr %12, align 8, !tbaa !5
  %1566 = load i32, ptr %42, align 4, !tbaa !9
  %1567 = sext i32 %1566 to i64
  %1568 = getelementptr inbounds double, ptr %1565, i64 %1567
  %1569 = load double, ptr %1568, align 8, !tbaa !11
  %1570 = load ptr, ptr %12, align 8, !tbaa !5
  %1571 = load i32, ptr %42, align 4, !tbaa !9
  %1572 = sext i32 %1571 to i64
  %1573 = getelementptr inbounds double, ptr %1570, i64 %1572
  %1574 = load double, ptr %1573, align 8, !tbaa !11
  %1575 = fmul double %1569, %1574
  %1576 = load double, ptr %43, align 8, !tbaa !11
  %1577 = fmul double %1575, %1576
  store double %1577, ptr %26, align 8, !tbaa !11
  %1578 = load double, ptr %25, align 8, !tbaa !11
  %1579 = fcmp olt double %1578, 0.000000e+00
  br i1 %1579, label %1580, label %1603

1580:                                             ; preds = %1535
  %1581 = load double, ptr %26, align 8, !tbaa !11
  %1582 = fmul double %1581, 2.000000e+00
  %1583 = load double, ptr %25, align 8, !tbaa !11
  %1584 = load double, ptr %25, align 8, !tbaa !11
  %1585 = load double, ptr %25, align 8, !tbaa !11
  %1586 = load double, ptr %26, align 8, !tbaa !11
  %1587 = fmul double %1586, 4.000000e+00
  %1588 = load double, ptr %27, align 8, !tbaa !11
  %1589 = fmul double %1587, %1588
  %1590 = call double @llvm.fmuladd.f64(double %1584, double %1585, double %1589)
  store double %1590, ptr %18, align 8, !tbaa !11
  %1591 = load double, ptr %18, align 8, !tbaa !11
  %1592 = fcmp oge double %1591, 0.000000e+00
  br i1 %1592, label %1593, label %1595

1593:                                             ; preds = %1580
  %1594 = load double, ptr %18, align 8, !tbaa !11
  br label %1598

1595:                                             ; preds = %1580
  %1596 = load double, ptr %18, align 8, !tbaa !11
  %1597 = fneg double %1596
  br label %1598

1598:                                             ; preds = %1595, %1593
  %1599 = phi double [ %1594, %1593 ], [ %1597, %1595 ]
  %1600 = call double @sqrt(double noundef %1599) #5
  %1601 = fsub double %1583, %1600
  %1602 = fdiv double %1582, %1601
  store double %1602, ptr %47, align 8, !tbaa !11
  br label %1627

1603:                                             ; preds = %1535
  %1604 = load double, ptr %25, align 8, !tbaa !11
  %1605 = load double, ptr %25, align 8, !tbaa !11
  %1606 = load double, ptr %25, align 8, !tbaa !11
  %1607 = load double, ptr %26, align 8, !tbaa !11
  %1608 = fmul double %1607, 4.000000e+00
  %1609 = load double, ptr %27, align 8, !tbaa !11
  %1610 = fmul double %1608, %1609
  %1611 = call double @llvm.fmuladd.f64(double %1605, double %1606, double %1610)
  store double %1611, ptr %18, align 8, !tbaa !11
  %1612 = load double, ptr %18, align 8, !tbaa !11
  %1613 = fcmp oge double %1612, 0.000000e+00
  br i1 %1613, label %1614, label %1616

1614:                                             ; preds = %1603
  %1615 = load double, ptr %18, align 8, !tbaa !11
  br label %1619

1616:                                             ; preds = %1603
  %1617 = load double, ptr %18, align 8, !tbaa !11
  %1618 = fneg double %1617
  br label %1619

1619:                                             ; preds = %1616, %1614
  %1620 = phi double [ %1615, %1614 ], [ %1618, %1616 ]
  %1621 = call double @sqrt(double noundef %1620) #5
  %1622 = fadd double %1604, %1621
  %1623 = fneg double %1622
  %1624 = load double, ptr %27, align 8, !tbaa !11
  %1625 = fmul double %1624, 2.000000e+00
  %1626 = fdiv double %1623, %1625
  store double %1626, ptr %47, align 8, !tbaa !11
  br label %1627

1627:                                             ; preds = %1619, %1598
  %1628 = load double, ptr %32, align 8, !tbaa !11
  %1629 = fneg double %1628
  store double %1629, ptr %30, align 8, !tbaa !11
  store double 0.000000e+00, ptr %31, align 8, !tbaa !11
  br label %1630

1630:                                             ; preds = %1627, %1533
  %1631 = load i32, ptr %39, align 4, !tbaa !9
  %1632 = icmp ne i32 %1631, 0
  br i1 %1632, label %1633, label %1663

1633:                                             ; preds = %1630
  %1634 = load ptr, ptr %9, align 8, !tbaa !5
  %1635 = load i32, ptr %1634, align 4, !tbaa !9
  store i32 %1635, ptr %17, align 4, !tbaa !9
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %1636

1636:                                             ; preds = %1659, %1633
  %1637 = load i32, ptr %28, align 4, !tbaa !9
  %1638 = load i32, ptr %17, align 4, !tbaa !9
  %1639 = icmp sle i32 %1637, %1638
  br i1 %1639, label %1640, label %1662

1640:                                             ; preds = %1636
  %1641 = load ptr, ptr %11, align 8, !tbaa !5
  %1642 = load i32, ptr %28, align 4, !tbaa !9
  %1643 = sext i32 %1642 to i64
  %1644 = getelementptr inbounds double, ptr %1641, i64 %1643
  %1645 = load double, ptr %1644, align 8, !tbaa !11
  %1646 = load ptr, ptr %11, align 8, !tbaa !5
  %1647 = load ptr, ptr %10, align 8, !tbaa !5
  %1648 = load i32, ptr %1647, align 4, !tbaa !9
  %1649 = sext i32 %1648 to i64
  %1650 = getelementptr inbounds double, ptr %1646, i64 %1649
  %1651 = load double, ptr %1650, align 8, !tbaa !11
  %1652 = fsub double %1645, %1651
  %1653 = load double, ptr %47, align 8, !tbaa !11
  %1654 = fsub double %1652, %1653
  %1655 = load ptr, ptr %13, align 8, !tbaa !5
  %1656 = load i32, ptr %28, align 4, !tbaa !9
  %1657 = sext i32 %1656 to i64
  %1658 = getelementptr inbounds double, ptr %1655, i64 %1657
  store double %1654, ptr %1658, align 8, !tbaa !11
  br label %1659

1659:                                             ; preds = %1640
  %1660 = load i32, ptr %28, align 4, !tbaa !9
  %1661 = add nsw i32 %1660, 1
  store i32 %1661, ptr %28, align 4, !tbaa !9
  br label %1636, !llvm.loop !26

1662:                                             ; preds = %1636
  br label %1692

1663:                                             ; preds = %1630
  %1664 = load ptr, ptr %9, align 8, !tbaa !5
  %1665 = load i32, ptr %1664, align 4, !tbaa !9
  store i32 %1665, ptr %17, align 4, !tbaa !9
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %1666

1666:                                             ; preds = %1688, %1663
  %1667 = load i32, ptr %28, align 4, !tbaa !9
  %1668 = load i32, ptr %17, align 4, !tbaa !9
  %1669 = icmp sle i32 %1667, %1668
  br i1 %1669, label %1670, label %1691

1670:                                             ; preds = %1666
  %1671 = load ptr, ptr %11, align 8, !tbaa !5
  %1672 = load i32, ptr %28, align 4, !tbaa !9
  %1673 = sext i32 %1672 to i64
  %1674 = getelementptr inbounds double, ptr %1671, i64 %1673
  %1675 = load double, ptr %1674, align 8, !tbaa !11
  %1676 = load ptr, ptr %11, align 8, !tbaa !5
  %1677 = load i32, ptr %42, align 4, !tbaa !9
  %1678 = sext i32 %1677 to i64
  %1679 = getelementptr inbounds double, ptr %1676, i64 %1678
  %1680 = load double, ptr %1679, align 8, !tbaa !11
  %1681 = fsub double %1675, %1680
  %1682 = load double, ptr %47, align 8, !tbaa !11
  %1683 = fsub double %1681, %1682
  %1684 = load ptr, ptr %13, align 8, !tbaa !5
  %1685 = load i32, ptr %28, align 4, !tbaa !9
  %1686 = sext i32 %1685 to i64
  %1687 = getelementptr inbounds double, ptr %1684, i64 %1686
  store double %1683, ptr %1687, align 8, !tbaa !11
  br label %1688

1688:                                             ; preds = %1670
  %1689 = load i32, ptr %28, align 4, !tbaa !9
  %1690 = add nsw i32 %1689, 1
  store i32 %1690, ptr %28, align 4, !tbaa !9
  br label %1666, !llvm.loop !27

1691:                                             ; preds = %1666
  br label %1692

1692:                                             ; preds = %1691, %1662
  %1693 = load i32, ptr %39, align 4, !tbaa !9
  %1694 = icmp ne i32 %1693, 0
  br i1 %1694, label %1695, label %1698

1695:                                             ; preds = %1692
  %1696 = load ptr, ptr %10, align 8, !tbaa !5
  %1697 = load i32, ptr %1696, align 4, !tbaa !9
  store i32 %1697, ptr %36, align 4, !tbaa !9
  br label %1702

1698:                                             ; preds = %1692
  %1699 = load ptr, ptr %10, align 8, !tbaa !5
  %1700 = load i32, ptr %1699, align 4, !tbaa !9
  %1701 = add nsw i32 %1700, 1
  store i32 %1701, ptr %36, align 4, !tbaa !9
  br label %1702

1702:                                             ; preds = %1698, %1695
  %1703 = load i32, ptr %36, align 4, !tbaa !9
  %1704 = sub nsw i32 %1703, 1
  store i32 %1704, ptr %49, align 4, !tbaa !9
  %1705 = load i32, ptr %36, align 4, !tbaa !9
  %1706 = add nsw i32 %1705, 1
  store i32 %1706, ptr %50, align 4, !tbaa !9
  store double 0.000000e+00, ptr %20, align 8, !tbaa !11
  store double 0.000000e+00, ptr %48, align 8, !tbaa !11
  store double 0.000000e+00, ptr %40, align 8, !tbaa !11
  %1707 = load i32, ptr %49, align 4, !tbaa !9
  store i32 %1707, ptr %17, align 4, !tbaa !9
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %1708

1708:                                             ; preds = %1739, %1702
  %1709 = load i32, ptr %28, align 4, !tbaa !9
  %1710 = load i32, ptr %17, align 4, !tbaa !9
  %1711 = icmp sle i32 %1709, %1710
  br i1 %1711, label %1712, label %1742

1712:                                             ; preds = %1708
  %1713 = load ptr, ptr %12, align 8, !tbaa !5
  %1714 = load i32, ptr %28, align 4, !tbaa !9
  %1715 = sext i32 %1714 to i64
  %1716 = getelementptr inbounds double, ptr %1713, i64 %1715
  %1717 = load double, ptr %1716, align 8, !tbaa !11
  %1718 = load ptr, ptr %13, align 8, !tbaa !5
  %1719 = load i32, ptr %28, align 4, !tbaa !9
  %1720 = sext i32 %1719 to i64
  %1721 = getelementptr inbounds double, ptr %1718, i64 %1720
  %1722 = load double, ptr %1721, align 8, !tbaa !11
  %1723 = fdiv double %1717, %1722
  store double %1723, ptr %22, align 8, !tbaa !11
  %1724 = load ptr, ptr %12, align 8, !tbaa !5
  %1725 = load i32, ptr %28, align 4, !tbaa !9
  %1726 = sext i32 %1725 to i64
  %1727 = getelementptr inbounds double, ptr %1724, i64 %1726
  %1728 = load double, ptr %1727, align 8, !tbaa !11
  %1729 = load double, ptr %22, align 8, !tbaa !11
  %1730 = load double, ptr %48, align 8, !tbaa !11
  %1731 = call double @llvm.fmuladd.f64(double %1728, double %1729, double %1730)
  store double %1731, ptr %48, align 8, !tbaa !11
  %1732 = load double, ptr %22, align 8, !tbaa !11
  %1733 = load double, ptr %22, align 8, !tbaa !11
  %1734 = load double, ptr %20, align 8, !tbaa !11
  %1735 = call double @llvm.fmuladd.f64(double %1732, double %1733, double %1734)
  store double %1735, ptr %20, align 8, !tbaa !11
  %1736 = load double, ptr %48, align 8, !tbaa !11
  %1737 = load double, ptr %40, align 8, !tbaa !11
  %1738 = fadd double %1737, %1736
  store double %1738, ptr %40, align 8, !tbaa !11
  br label %1739

1739:                                             ; preds = %1712
  %1740 = load i32, ptr %28, align 4, !tbaa !9
  %1741 = add nsw i32 %1740, 1
  store i32 %1741, ptr %28, align 4, !tbaa !9
  br label %1708, !llvm.loop !28

1742:                                             ; preds = %1708
  %1743 = load double, ptr %40, align 8, !tbaa !11
  %1744 = fcmp oge double %1743, 0.000000e+00
  br i1 %1744, label %1745, label %1747

1745:                                             ; preds = %1742
  %1746 = load double, ptr %40, align 8, !tbaa !11
  br label %1750

1747:                                             ; preds = %1742
  %1748 = load double, ptr %40, align 8, !tbaa !11
  %1749 = fneg double %1748
  br label %1750

1750:                                             ; preds = %1747, %1745
  %1751 = phi double [ %1746, %1745 ], [ %1749, %1747 ]
  store double %1751, ptr %40, align 8, !tbaa !11
  store double 0.000000e+00, ptr %19, align 8, !tbaa !11
  store double 0.000000e+00, ptr %45, align 8, !tbaa !11
  %1752 = load i32, ptr %50, align 4, !tbaa !9
  store i32 %1752, ptr %17, align 4, !tbaa !9
  %1753 = load ptr, ptr %9, align 8, !tbaa !5
  %1754 = load i32, ptr %1753, align 4, !tbaa !9
  store i32 %1754, ptr %28, align 4, !tbaa !9
  br label %1755

1755:                                             ; preds = %1786, %1750
  %1756 = load i32, ptr %28, align 4, !tbaa !9
  %1757 = load i32, ptr %17, align 4, !tbaa !9
  %1758 = icmp sge i32 %1756, %1757
  br i1 %1758, label %1759, label %1789

1759:                                             ; preds = %1755
  %1760 = load ptr, ptr %12, align 8, !tbaa !5
  %1761 = load i32, ptr %28, align 4, !tbaa !9
  %1762 = sext i32 %1761 to i64
  %1763 = getelementptr inbounds double, ptr %1760, i64 %1762
  %1764 = load double, ptr %1763, align 8, !tbaa !11
  %1765 = load ptr, ptr %13, align 8, !tbaa !5
  %1766 = load i32, ptr %28, align 4, !tbaa !9
  %1767 = sext i32 %1766 to i64
  %1768 = getelementptr inbounds double, ptr %1765, i64 %1767
  %1769 = load double, ptr %1768, align 8, !tbaa !11
  %1770 = fdiv double %1764, %1769
  store double %1770, ptr %22, align 8, !tbaa !11
  %1771 = load ptr, ptr %12, align 8, !tbaa !5
  %1772 = load i32, ptr %28, align 4, !tbaa !9
  %1773 = sext i32 %1772 to i64
  %1774 = getelementptr inbounds double, ptr %1771, i64 %1773
  %1775 = load double, ptr %1774, align 8, !tbaa !11
  %1776 = load double, ptr %22, align 8, !tbaa !11
  %1777 = load double, ptr %45, align 8, !tbaa !11
  %1778 = call double @llvm.fmuladd.f64(double %1775, double %1776, double %1777)
  store double %1778, ptr %45, align 8, !tbaa !11
  %1779 = load double, ptr %22, align 8, !tbaa !11
  %1780 = load double, ptr %22, align 8, !tbaa !11
  %1781 = load double, ptr %19, align 8, !tbaa !11
  %1782 = call double @llvm.fmuladd.f64(double %1779, double %1780, double %1781)
  store double %1782, ptr %19, align 8, !tbaa !11
  %1783 = load double, ptr %45, align 8, !tbaa !11
  %1784 = load double, ptr %40, align 8, !tbaa !11
  %1785 = fadd double %1784, %1783
  store double %1785, ptr %40, align 8, !tbaa !11
  br label %1786

1786:                                             ; preds = %1759
  %1787 = load i32, ptr %28, align 4, !tbaa !9
  %1788 = add nsw i32 %1787, -1
  store i32 %1788, ptr %28, align 4, !tbaa !9
  br label %1755, !llvm.loop !29

1789:                                             ; preds = %1755
  %1790 = load double, ptr %41, align 8, !tbaa !11
  %1791 = load double, ptr %45, align 8, !tbaa !11
  %1792 = fadd double %1790, %1791
  %1793 = load double, ptr %48, align 8, !tbaa !11
  %1794 = fadd double %1792, %1793
  store double %1794, ptr %29, align 8, !tbaa !11
  store i32 0, ptr %35, align 4, !tbaa !9
  %1795 = load i32, ptr %39, align 4, !tbaa !9
  %1796 = icmp ne i32 %1795, 0
  br i1 %1796, label %1797, label %1802

1797:                                             ; preds = %1789
  %1798 = load double, ptr %29, align 8, !tbaa !11
  %1799 = fcmp olt double %1798, 0.000000e+00
  br i1 %1799, label %1800, label %1801

1800:                                             ; preds = %1797
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %1801

1801:                                             ; preds = %1800, %1797
  br label %1807

1802:                                             ; preds = %1789
  %1803 = load double, ptr %29, align 8, !tbaa !11
  %1804 = fcmp ogt double %1803, 0.000000e+00
  br i1 %1804, label %1805, label %1806

1805:                                             ; preds = %1802
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %1806

1806:                                             ; preds = %1805, %1802
  br label %1807

1807:                                             ; preds = %1806, %1801
  %1808 = load i32, ptr %36, align 4, !tbaa !9
  %1809 = icmp eq i32 %1808, 1
  br i1 %1809, label %1815, label %1810

1810:                                             ; preds = %1807
  %1811 = load i32, ptr %36, align 4, !tbaa !9
  %1812 = load ptr, ptr %9, align 8, !tbaa !5
  %1813 = load i32, ptr %1812, align 4, !tbaa !9
  %1814 = icmp eq i32 %1811, %1813
  br i1 %1814, label %1815, label %1816

1815:                                             ; preds = %1810, %1807
  store i32 0, ptr %35, align 4, !tbaa !9
  br label %1816

1816:                                             ; preds = %1815, %1810
  %1817 = load ptr, ptr %12, align 8, !tbaa !5
  %1818 = load i32, ptr %36, align 4, !tbaa !9
  %1819 = sext i32 %1818 to i64
  %1820 = getelementptr inbounds double, ptr %1817, i64 %1819
  %1821 = load double, ptr %1820, align 8, !tbaa !11
  %1822 = load ptr, ptr %13, align 8, !tbaa !5
  %1823 = load i32, ptr %36, align 4, !tbaa !9
  %1824 = sext i32 %1823 to i64
  %1825 = getelementptr inbounds double, ptr %1822, i64 %1824
  %1826 = load double, ptr %1825, align 8, !tbaa !11
  %1827 = fdiv double %1821, %1826
  store double %1827, ptr %22, align 8, !tbaa !11
  %1828 = load double, ptr %20, align 8, !tbaa !11
  %1829 = load double, ptr %19, align 8, !tbaa !11
  %1830 = fadd double %1828, %1829
  %1831 = load double, ptr %22, align 8, !tbaa !11
  %1832 = load double, ptr %22, align 8, !tbaa !11
  %1833 = call double @llvm.fmuladd.f64(double %1831, double %1832, double %1830)
  store double %1833, ptr %37, align 8, !tbaa !11
  %1834 = load ptr, ptr %12, align 8, !tbaa !5
  %1835 = load i32, ptr %36, align 4, !tbaa !9
  %1836 = sext i32 %1835 to i64
  %1837 = getelementptr inbounds double, ptr %1834, i64 %1836
  %1838 = load double, ptr %1837, align 8, !tbaa !11
  %1839 = load double, ptr %22, align 8, !tbaa !11
  %1840 = fmul double %1838, %1839
  store double %1840, ptr %22, align 8, !tbaa !11
  %1841 = load double, ptr %22, align 8, !tbaa !11
  %1842 = load double, ptr %29, align 8, !tbaa !11
  %1843 = fadd double %1842, %1841
  store double %1843, ptr %29, align 8, !tbaa !11
  %1844 = load double, ptr %45, align 8, !tbaa !11
  %1845 = load double, ptr %48, align 8, !tbaa !11
  %1846 = fsub double %1844, %1845
  %1847 = load double, ptr %40, align 8, !tbaa !11
  %1848 = call double @llvm.fmuladd.f64(double %1846, double 8.000000e+00, double %1847)
  %1849 = load double, ptr %41, align 8, !tbaa !11
  %1850 = call double @llvm.fmuladd.f64(double %1849, double 2.000000e+00, double %1848)
  %1851 = load double, ptr %22, align 8, !tbaa !11
  %1852 = fcmp oge double %1851, 0.000000e+00
  br i1 %1852, label %1853, label %1855

1853:                                             ; preds = %1816
  %1854 = load double, ptr %22, align 8, !tbaa !11
  br label %1858

1855:                                             ; preds = %1816
  %1856 = load double, ptr %22, align 8, !tbaa !11
  %1857 = fneg double %1856
  br label %1858

1858:                                             ; preds = %1855, %1853
  %1859 = phi double [ %1854, %1853 ], [ %1857, %1855 ]
  %1860 = call double @llvm.fmuladd.f64(double %1859, double 3.000000e+00, double %1850)
  %1861 = load double, ptr %47, align 8, !tbaa !11
  %1862 = fcmp oge double %1861, 0.000000e+00
  br i1 %1862, label %1863, label %1865

1863:                                             ; preds = %1858
  %1864 = load double, ptr %47, align 8, !tbaa !11
  br label %1868

1865:                                             ; preds = %1858
  %1866 = load double, ptr %47, align 8, !tbaa !11
  %1867 = fneg double %1866
  br label %1868

1868:                                             ; preds = %1865, %1863
  %1869 = phi double [ %1864, %1863 ], [ %1867, %1865 ]
  %1870 = load double, ptr %37, align 8, !tbaa !11
  %1871 = call double @llvm.fmuladd.f64(double %1869, double %1870, double %1860)
  store double %1871, ptr %40, align 8, !tbaa !11
  %1872 = load double, ptr %29, align 8, !tbaa !11
  %1873 = fcmp oge double %1872, 0.000000e+00
  br i1 %1873, label %1874, label %1876

1874:                                             ; preds = %1868
  %1875 = load double, ptr %29, align 8, !tbaa !11
  br label %1879

1876:                                             ; preds = %1868
  %1877 = load double, ptr %29, align 8, !tbaa !11
  %1878 = fneg double %1877
  br label %1879

1879:                                             ; preds = %1876, %1874
  %1880 = phi double [ %1875, %1874 ], [ %1878, %1876 ]
  %1881 = load double, ptr %46, align 8, !tbaa !11
  %1882 = load double, ptr %40, align 8, !tbaa !11
  %1883 = fmul double %1881, %1882
  %1884 = fcmp ole double %1880, %1883
  br i1 %1884, label %1885, label %1908

1885:                                             ; preds = %1879
  %1886 = load i32, ptr %39, align 4, !tbaa !9
  %1887 = icmp ne i32 %1886, 0
  br i1 %1887, label %1888, label %1898

1888:                                             ; preds = %1885
  %1889 = load ptr, ptr %11, align 8, !tbaa !5
  %1890 = load ptr, ptr %10, align 8, !tbaa !5
  %1891 = load i32, ptr %1890, align 4, !tbaa !9
  %1892 = sext i32 %1891 to i64
  %1893 = getelementptr inbounds double, ptr %1889, i64 %1892
  %1894 = load double, ptr %1893, align 8, !tbaa !11
  %1895 = load double, ptr %47, align 8, !tbaa !11
  %1896 = fadd double %1894, %1895
  %1897 = load ptr, ptr %15, align 8, !tbaa !5
  store double %1896, ptr %1897, align 8, !tbaa !11
  br label %1907

1898:                                             ; preds = %1885
  %1899 = load ptr, ptr %11, align 8, !tbaa !5
  %1900 = load i32, ptr %42, align 4, !tbaa !9
  %1901 = sext i32 %1900 to i64
  %1902 = getelementptr inbounds double, ptr %1899, i64 %1901
  %1903 = load double, ptr %1902, align 8, !tbaa !11
  %1904 = load double, ptr %47, align 8, !tbaa !11
  %1905 = fadd double %1903, %1904
  %1906 = load ptr, ptr %15, align 8, !tbaa !5
  store double %1905, ptr %1906, align 8, !tbaa !11
  br label %1907

1907:                                             ; preds = %1898, %1888
  br label %3463

1908:                                             ; preds = %1879
  %1909 = load double, ptr %29, align 8, !tbaa !11
  %1910 = fcmp ole double %1909, 0.000000e+00
  br i1 %1910, label %1911, label %1921

1911:                                             ; preds = %1908
  %1912 = load double, ptr %30, align 8, !tbaa !11
  %1913 = load double, ptr %47, align 8, !tbaa !11
  %1914 = fcmp oge double %1912, %1913
  br i1 %1914, label %1915, label %1917

1915:                                             ; preds = %1911
  %1916 = load double, ptr %30, align 8, !tbaa !11
  br label %1919

1917:                                             ; preds = %1911
  %1918 = load double, ptr %47, align 8, !tbaa !11
  br label %1919

1919:                                             ; preds = %1917, %1915
  %1920 = phi double [ %1916, %1915 ], [ %1918, %1917 ]
  store double %1920, ptr %30, align 8, !tbaa !11
  br label %1931

1921:                                             ; preds = %1908
  %1922 = load double, ptr %31, align 8, !tbaa !11
  %1923 = load double, ptr %47, align 8, !tbaa !11
  %1924 = fcmp ole double %1922, %1923
  br i1 %1924, label %1925, label %1927

1925:                                             ; preds = %1921
  %1926 = load double, ptr %31, align 8, !tbaa !11
  br label %1929

1927:                                             ; preds = %1921
  %1928 = load double, ptr %47, align 8, !tbaa !11
  br label %1929

1929:                                             ; preds = %1927, %1925
  %1930 = phi double [ %1926, %1925 ], [ %1928, %1927 ]
  store double %1930, ptr %31, align 8, !tbaa !11
  br label %1931

1931:                                             ; preds = %1929, %1919
  %1932 = load i32, ptr %33, align 4, !tbaa !9
  %1933 = add nsw i32 %1932, 1
  store i32 %1933, ptr %33, align 4, !tbaa !9
  %1934 = load i32, ptr %35, align 4, !tbaa !9
  %1935 = icmp ne i32 %1934, 0
  br i1 %1935, label %2186, label %1936

1936:                                             ; preds = %1931
  %1937 = load i32, ptr %39, align 4, !tbaa !9
  %1938 = icmp ne i32 %1937, 0
  br i1 %1938, label %1939, label %1979

1939:                                             ; preds = %1936
  %1940 = load ptr, ptr %12, align 8, !tbaa !5
  %1941 = load ptr, ptr %10, align 8, !tbaa !5
  %1942 = load i32, ptr %1941, align 4, !tbaa !9
  %1943 = sext i32 %1942 to i64
  %1944 = getelementptr inbounds double, ptr %1940, i64 %1943
  %1945 = load double, ptr %1944, align 8, !tbaa !11
  %1946 = load ptr, ptr %13, align 8, !tbaa !5
  %1947 = load ptr, ptr %10, align 8, !tbaa !5
  %1948 = load i32, ptr %1947, align 4, !tbaa !9
  %1949 = sext i32 %1948 to i64
  %1950 = getelementptr inbounds double, ptr %1946, i64 %1949
  %1951 = load double, ptr %1950, align 8, !tbaa !11
  %1952 = fdiv double %1945, %1951
  store double %1952, ptr %18, align 8, !tbaa !11
  %1953 = load double, ptr %29, align 8, !tbaa !11
  %1954 = load ptr, ptr %13, align 8, !tbaa !5
  %1955 = load i32, ptr %42, align 4, !tbaa !9
  %1956 = sext i32 %1955 to i64
  %1957 = getelementptr inbounds double, ptr %1954, i64 %1956
  %1958 = load double, ptr %1957, align 8, !tbaa !11
  %1959 = load double, ptr %37, align 8, !tbaa !11
  %1960 = fneg double %1958
  %1961 = call double @llvm.fmuladd.f64(double %1960, double %1959, double %1953)
  %1962 = load ptr, ptr %11, align 8, !tbaa !5
  %1963 = load ptr, ptr %10, align 8, !tbaa !5
  %1964 = load i32, ptr %1963, align 4, !tbaa !9
  %1965 = sext i32 %1964 to i64
  %1966 = getelementptr inbounds double, ptr %1962, i64 %1965
  %1967 = load double, ptr %1966, align 8, !tbaa !11
  %1968 = load ptr, ptr %11, align 8, !tbaa !5
  %1969 = load i32, ptr %42, 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 = fsub double %1967, %1972
  %1974 = load double, ptr %18, align 8, !tbaa !11
  %1975 = load double, ptr %18, align 8, !tbaa !11
  %1976 = fmul double %1974, %1975
  %1977 = fneg double %1973
  %1978 = call double @llvm.fmuladd.f64(double %1977, double %1976, double %1961)
  store double %1978, ptr %27, align 8, !tbaa !11
  br label %2018

1979:                                             ; preds = %1936
  %1980 = load ptr, ptr %12, align 8, !tbaa !5
  %1981 = load i32, ptr %42, align 4, !tbaa !9
  %1982 = sext i32 %1981 to i64
  %1983 = getelementptr inbounds double, ptr %1980, i64 %1982
  %1984 = load double, ptr %1983, align 8, !tbaa !11
  %1985 = load ptr, ptr %13, align 8, !tbaa !5
  %1986 = load i32, ptr %42, align 4, !tbaa !9
  %1987 = sext i32 %1986 to i64
  %1988 = getelementptr inbounds double, ptr %1985, i64 %1987
  %1989 = load double, ptr %1988, align 8, !tbaa !11
  %1990 = fdiv double %1984, %1989
  store double %1990, ptr %18, align 8, !tbaa !11
  %1991 = load double, ptr %29, align 8, !tbaa !11
  %1992 = load ptr, ptr %13, align 8, !tbaa !5
  %1993 = load ptr, ptr %10, align 8, !tbaa !5
  %1994 = load i32, ptr %1993, align 4, !tbaa !9
  %1995 = sext i32 %1994 to i64
  %1996 = getelementptr inbounds double, ptr %1992, i64 %1995
  %1997 = load double, ptr %1996, align 8, !tbaa !11
  %1998 = load double, ptr %37, align 8, !tbaa !11
  %1999 = fneg double %1997
  %2000 = call double @llvm.fmuladd.f64(double %1999, double %1998, double %1991)
  %2001 = load ptr, ptr %11, align 8, !tbaa !5
  %2002 = load i32, ptr %42, align 4, !tbaa !9
  %2003 = sext i32 %2002 to i64
  %2004 = getelementptr inbounds double, ptr %2001, i64 %2003
  %2005 = load double, ptr %2004, align 8, !tbaa !11
  %2006 = load ptr, ptr %11, align 8, !tbaa !5
  %2007 = load ptr, ptr %10, align 8, !tbaa !5
  %2008 = load i32, ptr %2007, align 4, !tbaa !9
  %2009 = sext i32 %2008 to i64
  %2010 = getelementptr inbounds double, ptr %2006, i64 %2009
  %2011 = load double, ptr %2010, align 8, !tbaa !11
  %2012 = fsub double %2005, %2011
  %2013 = load double, ptr %18, align 8, !tbaa !11
  %2014 = load double, ptr %18, align 8, !tbaa !11
  %2015 = fmul double %2013, %2014
  %2016 = fneg double %2012
  %2017 = call double @llvm.fmuladd.f64(double %2016, double %2015, double %2000)
  store double %2017, ptr %27, align 8, !tbaa !11
  br label %2018

2018:                                             ; preds = %1979, %1939
  %2019 = load ptr, ptr %13, align 8, !tbaa !5
  %2020 = load ptr, ptr %10, align 8, !tbaa !5
  %2021 = load i32, ptr %2020, align 4, !tbaa !9
  %2022 = sext i32 %2021 to i64
  %2023 = getelementptr inbounds double, ptr %2019, i64 %2022
  %2024 = load double, ptr %2023, align 8, !tbaa !11
  %2025 = load ptr, ptr %13, align 8, !tbaa !5
  %2026 = load i32, ptr %42, align 4, !tbaa !9
  %2027 = sext i32 %2026 to i64
  %2028 = getelementptr inbounds double, ptr %2025, i64 %2027
  %2029 = load double, ptr %2028, align 8, !tbaa !11
  %2030 = fadd double %2024, %2029
  %2031 = load double, ptr %29, align 8, !tbaa !11
  %2032 = load ptr, ptr %13, align 8, !tbaa !5
  %2033 = load ptr, ptr %10, align 8, !tbaa !5
  %2034 = load i32, ptr %2033, align 4, !tbaa !9
  %2035 = sext i32 %2034 to i64
  %2036 = getelementptr inbounds double, ptr %2032, i64 %2035
  %2037 = load double, ptr %2036, align 8, !tbaa !11
  %2038 = load ptr, ptr %13, align 8, !tbaa !5
  %2039 = load i32, ptr %42, align 4, !tbaa !9
  %2040 = sext i32 %2039 to i64
  %2041 = getelementptr inbounds double, ptr %2038, i64 %2040
  %2042 = load double, ptr %2041, align 8, !tbaa !11
  %2043 = fmul double %2037, %2042
  %2044 = load double, ptr %37, align 8, !tbaa !11
  %2045 = fmul double %2043, %2044
  %2046 = fneg double %2045
  %2047 = call double @llvm.fmuladd.f64(double %2030, double %2031, double %2046)
  store double %2047, ptr %25, align 8, !tbaa !11
  %2048 = load ptr, ptr %13, align 8, !tbaa !5
  %2049 = load ptr, ptr %10, align 8, !tbaa !5
  %2050 = load i32, ptr %2049, align 4, !tbaa !9
  %2051 = sext i32 %2050 to i64
  %2052 = getelementptr inbounds double, ptr %2048, i64 %2051
  %2053 = load double, ptr %2052, align 8, !tbaa !11
  %2054 = load ptr, ptr %13, align 8, !tbaa !5
  %2055 = load i32, ptr %42, align 4, !tbaa !9
  %2056 = sext i32 %2055 to i64
  %2057 = getelementptr inbounds double, ptr %2054, i64 %2056
  %2058 = load double, ptr %2057, align 8, !tbaa !11
  %2059 = fmul double %2053, %2058
  %2060 = load double, ptr %29, align 8, !tbaa !11
  %2061 = fmul double %2059, %2060
  store double %2061, ptr %26, align 8, !tbaa !11
  %2062 = load double, ptr %27, align 8, !tbaa !11
  %2063 = fcmp oeq double %2062, 0.000000e+00
  br i1 %2063, label %2064, label %2133

2064:                                             ; preds = %2018
  %2065 = load double, ptr %25, align 8, !tbaa !11
  %2066 = fcmp oeq double %2065, 0.000000e+00
  br i1 %2066, label %2067, label %2129

2067:                                             ; preds = %2064
  %2068 = load i32, ptr %39, align 4, !tbaa !9
  %2069 = icmp ne i32 %2068, 0
  br i1 %2069, label %2070, label %2099

2070:                                             ; preds = %2067
  %2071 = load ptr, ptr %12, align 8, !tbaa !5
  %2072 = load ptr, ptr %10, align 8, !tbaa !5
  %2073 = load i32, ptr %2072, align 4, !tbaa !9
  %2074 = sext i32 %2073 to i64
  %2075 = getelementptr inbounds double, ptr %2071, i64 %2074
  %2076 = load double, ptr %2075, align 8, !tbaa !11
  %2077 = load ptr, ptr %12, align 8, !tbaa !5
  %2078 = load ptr, ptr %10, align 8, !tbaa !5
  %2079 = load i32, ptr %2078, align 4, !tbaa !9
  %2080 = sext i32 %2079 to i64
  %2081 = getelementptr inbounds double, ptr %2077, i64 %2080
  %2082 = load double, ptr %2081, align 8, !tbaa !11
  %2083 = load ptr, ptr %13, align 8, !tbaa !5
  %2084 = load i32, ptr %42, align 4, !tbaa !9
  %2085 = sext i32 %2084 to i64
  %2086 = getelementptr inbounds double, ptr %2083, i64 %2085
  %2087 = load double, ptr %2086, align 8, !tbaa !11
  %2088 = load ptr, ptr %13, align 8, !tbaa !5
  %2089 = load i32, ptr %42, align 4, !tbaa !9
  %2090 = sext i32 %2089 to i64
  %2091 = getelementptr inbounds double, ptr %2088, i64 %2090
  %2092 = load double, ptr %2091, align 8, !tbaa !11
  %2093 = fmul double %2087, %2092
  %2094 = load double, ptr %20, align 8, !tbaa !11
  %2095 = load double, ptr %19, align 8, !tbaa !11
  %2096 = fadd double %2094, %2095
  %2097 = fmul double %2093, %2096
  %2098 = call double @llvm.fmuladd.f64(double %2076, double %2082, double %2097)
  store double %2098, ptr %25, align 8, !tbaa !11
  br label %2128

2099:                                             ; preds = %2067
  %2100 = load ptr, ptr %12, align 8, !tbaa !5
  %2101 = load i32, ptr %42, align 4, !tbaa !9
  %2102 = sext i32 %2101 to i64
  %2103 = getelementptr inbounds double, ptr %2100, i64 %2102
  %2104 = load double, ptr %2103, align 8, !tbaa !11
  %2105 = load ptr, ptr %12, align 8, !tbaa !5
  %2106 = load i32, ptr %42, align 4, !tbaa !9
  %2107 = sext i32 %2106 to i64
  %2108 = getelementptr inbounds double, ptr %2105, i64 %2107
  %2109 = load double, ptr %2108, align 8, !tbaa !11
  %2110 = load ptr, ptr %13, align 8, !tbaa !5
  %2111 = load ptr, ptr %10, align 8, !tbaa !5
  %2112 = load i32, ptr %2111, align 4, !tbaa !9
  %2113 = sext i32 %2112 to i64
  %2114 = getelementptr inbounds double, ptr %2110, i64 %2113
  %2115 = load double, ptr %2114, align 8, !tbaa !11
  %2116 = load ptr, ptr %13, align 8, !tbaa !5
  %2117 = load ptr, ptr %10, align 8, !tbaa !5
  %2118 = load i32, ptr %2117, align 4, !tbaa !9
  %2119 = sext i32 %2118 to i64
  %2120 = getelementptr inbounds double, ptr %2116, i64 %2119
  %2121 = load double, ptr %2120, align 8, !tbaa !11
  %2122 = fmul double %2115, %2121
  %2123 = load double, ptr %20, align 8, !tbaa !11
  %2124 = load double, ptr %19, align 8, !tbaa !11
  %2125 = fadd double %2123, %2124
  %2126 = fmul double %2122, %2125
  %2127 = call double @llvm.fmuladd.f64(double %2104, double %2109, double %2126)
  store double %2127, ptr %25, align 8, !tbaa !11
  br label %2128

2128:                                             ; preds = %2099, %2070
  br label %2129

2129:                                             ; preds = %2128, %2064
  %2130 = load double, ptr %26, align 8, !tbaa !11
  %2131 = load double, ptr %25, align 8, !tbaa !11
  %2132 = fdiv double %2130, %2131
  store double %2132, ptr %44, align 8, !tbaa !11
  br label %2185

2133:                                             ; preds = %2018
  %2134 = load double, ptr %25, align 8, !tbaa !11
  %2135 = fcmp ole double %2134, 0.000000e+00
  br i1 %2135, label %2136, label %2160

2136:                                             ; preds = %2133
  %2137 = load double, ptr %25, align 8, !tbaa !11
  %2138 = load double, ptr %25, align 8, !tbaa !11
  %2139 = load double, ptr %25, align 8, !tbaa !11
  %2140 = load double, ptr %26, align 8, !tbaa !11
  %2141 = fmul double %2140, 4.000000e+00
  %2142 = load double, ptr %27, align 8, !tbaa !11
  %2143 = fmul double %2141, %2142
  %2144 = fneg double %2143
  %2145 = call double @llvm.fmuladd.f64(double %2138, double %2139, double %2144)
  store double %2145, ptr %18, align 8, !tbaa !11
  %2146 = load double, ptr %18, align 8, !tbaa !11
  %2147 = fcmp oge double %2146, 0.000000e+00
  br i1 %2147, label %2148, label %2150

2148:                                             ; preds = %2136
  %2149 = load double, ptr %18, align 8, !tbaa !11
  br label %2153

2150:                                             ; preds = %2136
  %2151 = load double, ptr %18, align 8, !tbaa !11
  %2152 = fneg double %2151
  br label %2153

2153:                                             ; preds = %2150, %2148
  %2154 = phi double [ %2149, %2148 ], [ %2152, %2150 ]
  %2155 = call double @sqrt(double noundef %2154) #5
  %2156 = fsub double %2137, %2155
  %2157 = load double, ptr %27, align 8, !tbaa !11
  %2158 = fmul double %2157, 2.000000e+00
  %2159 = fdiv double %2156, %2158
  store double %2159, ptr %44, align 8, !tbaa !11
  br label %2184

2160:                                             ; preds = %2133
  %2161 = load double, ptr %26, align 8, !tbaa !11
  %2162 = fmul double %2161, 2.000000e+00
  %2163 = load double, ptr %25, align 8, !tbaa !11
  %2164 = load double, ptr %25, align 8, !tbaa !11
  %2165 = load double, ptr %25, align 8, !tbaa !11
  %2166 = load double, ptr %26, align 8, !tbaa !11
  %2167 = fmul double %2166, 4.000000e+00
  %2168 = load double, ptr %27, align 8, !tbaa !11
  %2169 = fmul double %2167, %2168
  %2170 = fneg double %2169
  %2171 = call double @llvm.fmuladd.f64(double %2164, double %2165, double %2170)
  store double %2171, ptr %18, align 8, !tbaa !11
  %2172 = load double, ptr %18, align 8, !tbaa !11
  %2173 = fcmp oge double %2172, 0.000000e+00
  br i1 %2173, label %2174, label %2176

2174:                                             ; preds = %2160
  %2175 = load double, ptr %18, align 8, !tbaa !11
  br label %2179

2176:                                             ; preds = %2160
  %2177 = load double, ptr %18, align 8, !tbaa !11
  %2178 = fneg double %2177
  br label %2179

2179:                                             ; preds = %2176, %2174
  %2180 = phi double [ %2175, %2174 ], [ %2178, %2176 ]
  %2181 = call double @sqrt(double noundef %2180) #5
  %2182 = fadd double %2163, %2181
  %2183 = fdiv double %2162, %2182
  store double %2183, ptr %44, align 8, !tbaa !11
  br label %2184

2184:                                             ; preds = %2179, %2153
  br label %2185

2185:                                             ; preds = %2184, %2129
  br label %2358

2186:                                             ; preds = %1931
  %2187 = load double, ptr %41, align 8, !tbaa !11
  %2188 = load double, ptr %48, align 8, !tbaa !11
  %2189 = fadd double %2187, %2188
  %2190 = load double, ptr %45, align 8, !tbaa !11
  %2191 = fadd double %2189, %2190
  store double %2191, ptr %22, align 8, !tbaa !11
  %2192 = load i32, ptr %39, align 4, !tbaa !9
  %2193 = icmp ne i32 %2192, 0
  br i1 %2193, label %2194, label %2264

2194:                                             ; preds = %2186
  %2195 = load ptr, ptr %12, align 8, !tbaa !5
  %2196 = load i32, ptr %49, align 4, !tbaa !9
  %2197 = sext i32 %2196 to i64
  %2198 = getelementptr inbounds double, ptr %2195, i64 %2197
  %2199 = load double, ptr %2198, align 8, !tbaa !11
  %2200 = load ptr, ptr %13, align 8, !tbaa !5
  %2201 = load i32, ptr %49, 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 = fdiv double %2199, %2204
  store double %2205, ptr %24, align 8, !tbaa !11
  %2206 = load double, ptr %24, align 8, !tbaa !11
  %2207 = load double, ptr %24, align 8, !tbaa !11
  %2208 = fmul double %2207, %2206
  store double %2208, ptr %24, align 8, !tbaa !11
  %2209 = load double, ptr %22, align 8, !tbaa !11
  %2210 = load ptr, ptr %13, align 8, !tbaa !5
  %2211 = load i32, ptr %50, align 4, !tbaa !9
  %2212 = sext i32 %2211 to i64
  %2213 = getelementptr inbounds double, ptr %2210, i64 %2212
  %2214 = load double, ptr %2213, align 8, !tbaa !11
  %2215 = load double, ptr %20, align 8, !tbaa !11
  %2216 = load double, ptr %19, align 8, !tbaa !11
  %2217 = fadd double %2215, %2216
  %2218 = fneg double %2214
  %2219 = call double @llvm.fmuladd.f64(double %2218, double %2217, double %2209)
  %2220 = load ptr, ptr %11, align 8, !tbaa !5
  %2221 = load i32, ptr %49, align 4, !tbaa !9
  %2222 = sext i32 %2221 to i64
  %2223 = getelementptr inbounds double, ptr %2220, i64 %2222
  %2224 = load double, ptr %2223, align 8, !tbaa !11
  %2225 = load ptr, ptr %11, align 8, !tbaa !5
  %2226 = load i32, ptr %50, align 4, !tbaa !9
  %2227 = sext i32 %2226 to i64
  %2228 = getelementptr inbounds double, ptr %2225, i64 %2227
  %2229 = load double, ptr %2228, align 8, !tbaa !11
  %2230 = fsub double %2224, %2229
  %2231 = load double, ptr %24, align 8, !tbaa !11
  %2232 = fneg double %2230
  %2233 = call double @llvm.fmuladd.f64(double %2232, double %2231, double %2219)
  store double %2233, ptr %27, align 8, !tbaa !11
  %2234 = load ptr, ptr %12, align 8, !tbaa !5
  %2235 = load i32, ptr %49, align 4, !tbaa !9
  %2236 = sext i32 %2235 to i64
  %2237 = getelementptr inbounds double, ptr %2234, i64 %2236
  %2238 = load double, ptr %2237, align 8, !tbaa !11
  %2239 = load ptr, ptr %12, align 8, !tbaa !5
  %2240 = load i32, ptr %49, align 4, !tbaa !9
  %2241 = sext i32 %2240 to i64
  %2242 = getelementptr inbounds double, ptr %2239, i64 %2241
  %2243 = load double, ptr %2242, align 8, !tbaa !11
  %2244 = fmul double %2238, %2243
  %2245 = getelementptr inbounds [3 x double], ptr %38, i64 0, i64 0
  store double %2244, ptr %2245, align 16, !tbaa !11
  %2246 = load ptr, ptr %13, align 8, !tbaa !5
  %2247 = load i32, ptr %50, align 4, !tbaa !9
  %2248 = sext i32 %2247 to i64
  %2249 = getelementptr inbounds double, ptr %2246, i64 %2248
  %2250 = load double, ptr %2249, align 8, !tbaa !11
  %2251 = load ptr, ptr %13, align 8, !tbaa !5
  %2252 = load i32, ptr %50, align 4, !tbaa !9
  %2253 = sext i32 %2252 to i64
  %2254 = getelementptr inbounds double, ptr %2251, i64 %2253
  %2255 = load double, ptr %2254, align 8, !tbaa !11
  %2256 = fmul double %2250, %2255
  %2257 = load double, ptr %20, align 8, !tbaa !11
  %2258 = load double, ptr %24, align 8, !tbaa !11
  %2259 = fsub double %2257, %2258
  %2260 = load double, ptr %19, align 8, !tbaa !11
  %2261 = fadd double %2259, %2260
  %2262 = fmul double %2256, %2261
  %2263 = getelementptr inbounds [3 x double], ptr %38, i64 0, i64 2
  store double %2262, ptr %2263, align 16, !tbaa !11
  br label %2334

2264:                                             ; preds = %2186
  %2265 = load ptr, ptr %12, align 8, !tbaa !5
  %2266 = load i32, ptr %50, align 4, !tbaa !9
  %2267 = sext i32 %2266 to i64
  %2268 = getelementptr inbounds double, ptr %2265, i64 %2267
  %2269 = load double, ptr %2268, align 8, !tbaa !11
  %2270 = load ptr, ptr %13, align 8, !tbaa !5
  %2271 = load i32, ptr %50, 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 = fdiv double %2269, %2274
  store double %2275, ptr %24, align 8, !tbaa !11
  %2276 = load double, ptr %24, align 8, !tbaa !11
  %2277 = load double, ptr %24, align 8, !tbaa !11
  %2278 = fmul double %2277, %2276
  store double %2278, ptr %24, align 8, !tbaa !11
  %2279 = load double, ptr %22, align 8, !tbaa !11
  %2280 = load ptr, ptr %13, align 8, !tbaa !5
  %2281 = load i32, ptr %49, align 4, !tbaa !9
  %2282 = sext i32 %2281 to i64
  %2283 = getelementptr inbounds double, ptr %2280, i64 %2282
  %2284 = load double, ptr %2283, align 8, !tbaa !11
  %2285 = load double, ptr %20, align 8, !tbaa !11
  %2286 = load double, ptr %19, align 8, !tbaa !11
  %2287 = fadd double %2285, %2286
  %2288 = fneg double %2284
  %2289 = call double @llvm.fmuladd.f64(double %2288, double %2287, double %2279)
  %2290 = load ptr, ptr %11, align 8, !tbaa !5
  %2291 = load i32, ptr %50, align 4, !tbaa !9
  %2292 = sext i32 %2291 to i64
  %2293 = getelementptr inbounds double, ptr %2290, i64 %2292
  %2294 = load double, ptr %2293, align 8, !tbaa !11
  %2295 = load ptr, ptr %11, align 8, !tbaa !5
  %2296 = load i32, ptr %49, align 4, !tbaa !9
  %2297 = sext i32 %2296 to i64
  %2298 = getelementptr inbounds double, ptr %2295, i64 %2297
  %2299 = load double, ptr %2298, align 8, !tbaa !11
  %2300 = fsub double %2294, %2299
  %2301 = load double, ptr %24, align 8, !tbaa !11
  %2302 = fneg double %2300
  %2303 = call double @llvm.fmuladd.f64(double %2302, double %2301, double %2289)
  store double %2303, ptr %27, align 8, !tbaa !11
  %2304 = load ptr, ptr %13, align 8, !tbaa !5
  %2305 = load i32, ptr %49, align 4, !tbaa !9
  %2306 = sext i32 %2305 to i64
  %2307 = getelementptr inbounds double, ptr %2304, i64 %2306
  %2308 = load double, ptr %2307, align 8, !tbaa !11
  %2309 = load ptr, ptr %13, align 8, !tbaa !5
  %2310 = load i32, ptr %49, align 4, !tbaa !9
  %2311 = sext i32 %2310 to i64
  %2312 = getelementptr inbounds double, ptr %2309, i64 %2311
  %2313 = load double, ptr %2312, align 8, !tbaa !11
  %2314 = fmul double %2308, %2313
  %2315 = load double, ptr %20, align 8, !tbaa !11
  %2316 = load double, ptr %19, align 8, !tbaa !11
  %2317 = load double, ptr %24, align 8, !tbaa !11
  %2318 = fsub double %2316, %2317
  %2319 = fadd double %2315, %2318
  %2320 = fmul double %2314, %2319
  %2321 = getelementptr inbounds [3 x double], ptr %38, i64 0, i64 0
  store double %2320, ptr %2321, align 16, !tbaa !11
  %2322 = load ptr, ptr %12, align 8, !tbaa !5
  %2323 = load i32, ptr %50, align 4, !tbaa !9
  %2324 = sext i32 %2323 to i64
  %2325 = getelementptr inbounds double, ptr %2322, i64 %2324
  %2326 = load double, ptr %2325, align 8, !tbaa !11
  %2327 = load ptr, ptr %12, align 8, !tbaa !5
  %2328 = load i32, ptr %50, align 4, !tbaa !9
  %2329 = sext i32 %2328 to i64
  %2330 = getelementptr inbounds double, ptr %2327, i64 %2329
  %2331 = load double, ptr %2330, align 8, !tbaa !11
  %2332 = fmul double %2326, %2331
  %2333 = getelementptr inbounds [3 x double], ptr %38, i64 0, i64 2
  store double %2332, ptr %2333, align 16, !tbaa !11
  br label %2334

2334:                                             ; preds = %2264, %2194
  %2335 = load ptr, ptr %12, align 8, !tbaa !5
  %2336 = load i32, ptr %36, align 4, !tbaa !9
  %2337 = sext i32 %2336 to i64
  %2338 = getelementptr inbounds double, ptr %2335, i64 %2337
  %2339 = load double, ptr %2338, align 8, !tbaa !11
  %2340 = load ptr, ptr %12, align 8, !tbaa !5
  %2341 = load i32, ptr %36, align 4, !tbaa !9
  %2342 = sext i32 %2341 to i64
  %2343 = getelementptr inbounds double, ptr %2340, i64 %2342
  %2344 = load double, ptr %2343, align 8, !tbaa !11
  %2345 = fmul double %2339, %2344
  %2346 = getelementptr inbounds [3 x double], ptr %38, i64 0, i64 1
  store double %2345, ptr %2346, align 8, !tbaa !11
  %2347 = load ptr, ptr %13, align 8, !tbaa !5
  %2348 = load i32, ptr %49, align 4, !tbaa !9
  %2349 = sext i32 %2348 to i64
  %2350 = getelementptr inbounds double, ptr %2347, i64 %2349
  %2351 = getelementptr inbounds [3 x double], ptr %38, i64 0, i64 0
  %2352 = load ptr, ptr %16, align 8, !tbaa !5
  call void @dlaed6_(ptr noundef %33, ptr noundef %39, ptr noundef %27, ptr noundef %2350, ptr noundef %2351, ptr noundef %29, ptr noundef %44, ptr noundef %2352)
  %2353 = load ptr, ptr %16, align 8, !tbaa !5
  %2354 = load i32, ptr %2353, align 4, !tbaa !9
  %2355 = icmp ne i32 %2354, 0
  br i1 %2355, label %2356, label %2357

2356:                                             ; preds = %2334
  br label %3463

2357:                                             ; preds = %2334
  br label %2358

2358:                                             ; preds = %2357, %2185
  %2359 = load double, ptr %29, align 8, !tbaa !11
  %2360 = load double, ptr %44, align 8, !tbaa !11
  %2361 = fmul double %2359, %2360
  %2362 = fcmp oge double %2361, 0.000000e+00
  br i1 %2362, label %2363, label %2368

2363:                                             ; preds = %2358
  %2364 = load double, ptr %29, align 8, !tbaa !11
  %2365 = fneg double %2364
  %2366 = load double, ptr %37, align 8, !tbaa !11
  %2367 = fdiv double %2365, %2366
  store double %2367, ptr %44, align 8, !tbaa !11
  br label %2368

2368:                                             ; preds = %2363, %2358
  %2369 = load double, ptr %47, align 8, !tbaa !11
  %2370 = load double, ptr %44, align 8, !tbaa !11
  %2371 = fadd double %2369, %2370
  store double %2371, ptr %22, align 8, !tbaa !11
  %2372 = load double, ptr %22, align 8, !tbaa !11
  %2373 = load double, ptr %31, align 8, !tbaa !11
  %2374 = fcmp ogt double %2372, %2373
  br i1 %2374, label %2379, label %2375

2375:                                             ; preds = %2368
  %2376 = load double, ptr %22, align 8, !tbaa !11
  %2377 = load double, ptr %30, align 8, !tbaa !11
  %2378 = fcmp olt double %2376, %2377
  br i1 %2378, label %2379, label %2393

2379:                                             ; preds = %2375, %2368
  %2380 = load double, ptr %29, align 8, !tbaa !11
  %2381 = fcmp olt double %2380, 0.000000e+00
  br i1 %2381, label %2382, label %2387

2382:                                             ; preds = %2379
  %2383 = load double, ptr %31, align 8, !tbaa !11
  %2384 = load double, ptr %47, align 8, !tbaa !11
  %2385 = fsub double %2383, %2384
  %2386 = fdiv double %2385, 2.000000e+00
  store double %2386, ptr %44, align 8, !tbaa !11
  br label %2392

2387:                                             ; preds = %2379
  %2388 = load double, ptr %30, align 8, !tbaa !11
  %2389 = load double, ptr %47, align 8, !tbaa !11
  %2390 = fsub double %2388, %2389
  %2391 = fdiv double %2390, 2.000000e+00
  store double %2391, ptr %44, align 8, !tbaa !11
  br label %2392

2392:                                             ; preds = %2387, %2382
  br label %2393

2393:                                             ; preds = %2392, %2375
  %2394 = load double, ptr %29, align 8, !tbaa !11
  store double %2394, ptr %23, align 8, !tbaa !11
  %2395 = load ptr, ptr %9, align 8, !tbaa !5
  %2396 = load i32, ptr %2395, align 4, !tbaa !9
  store i32 %2396, ptr %17, align 4, !tbaa !9
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %2397

2397:                                             ; preds = %2409, %2393
  %2398 = load i32, ptr %28, align 4, !tbaa !9
  %2399 = load i32, ptr %17, align 4, !tbaa !9
  %2400 = icmp sle i32 %2398, %2399
  br i1 %2400, label %2401, label %2412

2401:                                             ; preds = %2397
  %2402 = load double, ptr %44, align 8, !tbaa !11
  %2403 = load ptr, ptr %13, align 8, !tbaa !5
  %2404 = load i32, ptr %28, align 4, !tbaa !9
  %2405 = sext i32 %2404 to i64
  %2406 = getelementptr inbounds double, ptr %2403, i64 %2405
  %2407 = load double, ptr %2406, align 8, !tbaa !11
  %2408 = fsub double %2407, %2402
  store double %2408, ptr %2406, align 8, !tbaa !11
  br label %2409

2409:                                             ; preds = %2401
  %2410 = load i32, ptr %28, align 4, !tbaa !9
  %2411 = add nsw i32 %2410, 1
  store i32 %2411, ptr %28, align 4, !tbaa !9
  br label %2397, !llvm.loop !30

2412:                                             ; preds = %2397
  store double 0.000000e+00, ptr %20, align 8, !tbaa !11
  store double 0.000000e+00, ptr %48, align 8, !tbaa !11
  store double 0.000000e+00, ptr %40, align 8, !tbaa !11
  %2413 = load i32, ptr %49, align 4, !tbaa !9
  store i32 %2413, ptr %17, align 4, !tbaa !9
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %2414

2414:                                             ; preds = %2445, %2412
  %2415 = load i32, ptr %28, align 4, !tbaa !9
  %2416 = load i32, ptr %17, align 4, !tbaa !9
  %2417 = icmp sle i32 %2415, %2416
  br i1 %2417, label %2418, label %2448

2418:                                             ; preds = %2414
  %2419 = load ptr, ptr %12, align 8, !tbaa !5
  %2420 = load i32, ptr %28, align 4, !tbaa !9
  %2421 = sext i32 %2420 to i64
  %2422 = getelementptr inbounds double, ptr %2419, i64 %2421
  %2423 = load double, ptr %2422, align 8, !tbaa !11
  %2424 = load ptr, ptr %13, align 8, !tbaa !5
  %2425 = load i32, ptr %28, align 4, !tbaa !9
  %2426 = sext i32 %2425 to i64
  %2427 = getelementptr inbounds double, ptr %2424, i64 %2426
  %2428 = load double, ptr %2427, align 8, !tbaa !11
  %2429 = fdiv double %2423, %2428
  store double %2429, ptr %22, align 8, !tbaa !11
  %2430 = load ptr, ptr %12, align 8, !tbaa !5
  %2431 = load i32, ptr %28, align 4, !tbaa !9
  %2432 = sext i32 %2431 to i64
  %2433 = getelementptr inbounds double, ptr %2430, i64 %2432
  %2434 = load double, ptr %2433, align 8, !tbaa !11
  %2435 = load double, ptr %22, align 8, !tbaa !11
  %2436 = load double, ptr %48, align 8, !tbaa !11
  %2437 = call double @llvm.fmuladd.f64(double %2434, double %2435, double %2436)
  store double %2437, ptr %48, align 8, !tbaa !11
  %2438 = load double, ptr %22, align 8, !tbaa !11
  %2439 = load double, ptr %22, align 8, !tbaa !11
  %2440 = load double, ptr %20, align 8, !tbaa !11
  %2441 = call double @llvm.fmuladd.f64(double %2438, double %2439, double %2440)
  store double %2441, ptr %20, align 8, !tbaa !11
  %2442 = load double, ptr %48, align 8, !tbaa !11
  %2443 = load double, ptr %40, align 8, !tbaa !11
  %2444 = fadd double %2443, %2442
  store double %2444, ptr %40, align 8, !tbaa !11
  br label %2445

2445:                                             ; preds = %2418
  %2446 = load i32, ptr %28, align 4, !tbaa !9
  %2447 = add nsw i32 %2446, 1
  store i32 %2447, ptr %28, align 4, !tbaa !9
  br label %2414, !llvm.loop !31

2448:                                             ; preds = %2414
  %2449 = load double, ptr %40, align 8, !tbaa !11
  %2450 = fcmp oge double %2449, 0.000000e+00
  br i1 %2450, label %2451, label %2453

2451:                                             ; preds = %2448
  %2452 = load double, ptr %40, align 8, !tbaa !11
  br label %2456

2453:                                             ; preds = %2448
  %2454 = load double, ptr %40, align 8, !tbaa !11
  %2455 = fneg double %2454
  br label %2456

2456:                                             ; preds = %2453, %2451
  %2457 = phi double [ %2452, %2451 ], [ %2455, %2453 ]
  store double %2457, ptr %40, align 8, !tbaa !11
  store double 0.000000e+00, ptr %19, align 8, !tbaa !11
  store double 0.000000e+00, ptr %45, align 8, !tbaa !11
  %2458 = load i32, ptr %50, align 4, !tbaa !9
  store i32 %2458, ptr %17, align 4, !tbaa !9
  %2459 = load ptr, ptr %9, align 8, !tbaa !5
  %2460 = load i32, ptr %2459, align 4, !tbaa !9
  store i32 %2460, ptr %28, align 4, !tbaa !9
  br label %2461

2461:                                             ; preds = %2492, %2456
  %2462 = load i32, ptr %28, align 4, !tbaa !9
  %2463 = load i32, ptr %17, align 4, !tbaa !9
  %2464 = icmp sge i32 %2462, %2463
  br i1 %2464, label %2465, label %2495

2465:                                             ; preds = %2461
  %2466 = load ptr, ptr %12, align 8, !tbaa !5
  %2467 = load i32, ptr %28, align 4, !tbaa !9
  %2468 = sext i32 %2467 to i64
  %2469 = getelementptr inbounds double, ptr %2466, i64 %2468
  %2470 = load double, ptr %2469, align 8, !tbaa !11
  %2471 = load ptr, ptr %13, align 8, !tbaa !5
  %2472 = load i32, ptr %28, align 4, !tbaa !9
  %2473 = sext i32 %2472 to i64
  %2474 = getelementptr inbounds double, ptr %2471, i64 %2473
  %2475 = load double, ptr %2474, align 8, !tbaa !11
  %2476 = fdiv double %2470, %2475
  store double %2476, ptr %22, align 8, !tbaa !11
  %2477 = load ptr, ptr %12, align 8, !tbaa !5
  %2478 = load i32, ptr %28, align 4, !tbaa !9
  %2479 = sext i32 %2478 to i64
  %2480 = getelementptr inbounds double, ptr %2477, i64 %2479
  %2481 = load double, ptr %2480, align 8, !tbaa !11
  %2482 = load double, ptr %22, align 8, !tbaa !11
  %2483 = load double, ptr %45, align 8, !tbaa !11
  %2484 = call double @llvm.fmuladd.f64(double %2481, double %2482, double %2483)
  store double %2484, ptr %45, align 8, !tbaa !11
  %2485 = load double, ptr %22, align 8, !tbaa !11
  %2486 = load double, ptr %22, align 8, !tbaa !11
  %2487 = load double, ptr %19, align 8, !tbaa !11
  %2488 = call double @llvm.fmuladd.f64(double %2485, double %2486, double %2487)
  store double %2488, ptr %19, align 8, !tbaa !11
  %2489 = load double, ptr %45, align 8, !tbaa !11
  %2490 = load double, ptr %40, align 8, !tbaa !11
  %2491 = fadd double %2490, %2489
  store double %2491, ptr %40, align 8, !tbaa !11
  br label %2492

2492:                                             ; preds = %2465
  %2493 = load i32, ptr %28, align 4, !tbaa !9
  %2494 = add nsw i32 %2493, -1
  store i32 %2494, ptr %28, align 4, !tbaa !9
  br label %2461, !llvm.loop !32

2495:                                             ; preds = %2461
  %2496 = load ptr, ptr %12, align 8, !tbaa !5
  %2497 = load i32, ptr %36, align 4, !tbaa !9
  %2498 = sext i32 %2497 to i64
  %2499 = getelementptr inbounds double, ptr %2496, i64 %2498
  %2500 = load double, ptr %2499, align 8, !tbaa !11
  %2501 = load ptr, ptr %13, align 8, !tbaa !5
  %2502 = load i32, ptr %36, align 4, !tbaa !9
  %2503 = sext i32 %2502 to i64
  %2504 = getelementptr inbounds double, ptr %2501, i64 %2503
  %2505 = load double, ptr %2504, align 8, !tbaa !11
  %2506 = fdiv double %2500, %2505
  store double %2506, ptr %22, align 8, !tbaa !11
  %2507 = load double, ptr %20, align 8, !tbaa !11
  %2508 = load double, ptr %19, align 8, !tbaa !11
  %2509 = fadd double %2507, %2508
  %2510 = load double, ptr %22, align 8, !tbaa !11
  %2511 = load double, ptr %22, align 8, !tbaa !11
  %2512 = call double @llvm.fmuladd.f64(double %2510, double %2511, double %2509)
  store double %2512, ptr %37, align 8, !tbaa !11
  %2513 = load ptr, ptr %12, align 8, !tbaa !5
  %2514 = load i32, ptr %36, align 4, !tbaa !9
  %2515 = sext i32 %2514 to i64
  %2516 = getelementptr inbounds double, ptr %2513, i64 %2515
  %2517 = load double, ptr %2516, align 8, !tbaa !11
  %2518 = load double, ptr %22, align 8, !tbaa !11
  %2519 = fmul double %2517, %2518
  store double %2519, ptr %22, align 8, !tbaa !11
  %2520 = load double, ptr %41, align 8, !tbaa !11
  %2521 = load double, ptr %45, align 8, !tbaa !11
  %2522 = fadd double %2520, %2521
  %2523 = load double, ptr %48, align 8, !tbaa !11
  %2524 = fadd double %2522, %2523
  %2525 = load double, ptr %22, align 8, !tbaa !11
  %2526 = fadd double %2524, %2525
  store double %2526, ptr %29, align 8, !tbaa !11
  %2527 = load double, ptr %45, align 8, !tbaa !11
  %2528 = load double, ptr %48, align 8, !tbaa !11
  %2529 = fsub double %2527, %2528
  %2530 = load double, ptr %40, align 8, !tbaa !11
  %2531 = call double @llvm.fmuladd.f64(double %2529, double 8.000000e+00, double %2530)
  %2532 = load double, ptr %41, align 8, !tbaa !11
  %2533 = call double @llvm.fmuladd.f64(double %2532, double 2.000000e+00, double %2531)
  %2534 = load double, ptr %22, align 8, !tbaa !11
  %2535 = fcmp oge double %2534, 0.000000e+00
  br i1 %2535, label %2536, label %2538

2536:                                             ; preds = %2495
  %2537 = load double, ptr %22, align 8, !tbaa !11
  br label %2541

2538:                                             ; preds = %2495
  %2539 = load double, ptr %22, align 8, !tbaa !11
  %2540 = fneg double %2539
  br label %2541

2541:                                             ; preds = %2538, %2536
  %2542 = phi double [ %2537, %2536 ], [ %2540, %2538 ]
  %2543 = call double @llvm.fmuladd.f64(double %2542, double 3.000000e+00, double %2533)
  %2544 = load double, ptr %47, align 8, !tbaa !11
  %2545 = load double, ptr %44, align 8, !tbaa !11
  %2546 = fadd double %2544, %2545
  store double %2546, ptr %18, align 8, !tbaa !11
  %2547 = load double, ptr %18, align 8, !tbaa !11
  %2548 = fcmp oge double %2547, 0.000000e+00
  br i1 %2548, label %2549, label %2551

2549:                                             ; preds = %2541
  %2550 = load double, ptr %18, align 8, !tbaa !11
  br label %2554

2551:                                             ; preds = %2541
  %2552 = load double, ptr %18, align 8, !tbaa !11
  %2553 = fneg double %2552
  br label %2554

2554:                                             ; preds = %2551, %2549
  %2555 = phi double [ %2550, %2549 ], [ %2553, %2551 ]
  %2556 = load double, ptr %37, align 8, !tbaa !11
  %2557 = call double @llvm.fmuladd.f64(double %2555, double %2556, double %2543)
  store double %2557, ptr %40, align 8, !tbaa !11
  store i32 0, ptr %34, align 4, !tbaa !9
  %2558 = load i32, ptr %39, align 4, !tbaa !9
  %2559 = icmp ne i32 %2558, 0
  br i1 %2559, label %2560, label %2576

2560:                                             ; preds = %2554
  %2561 = load double, ptr %29, align 8, !tbaa !11
  %2562 = fneg double %2561
  %2563 = load double, ptr %23, align 8, !tbaa !11
  %2564 = fcmp oge double %2563, 0.000000e+00
  br i1 %2564, label %2565, label %2567

2565:                                             ; preds = %2560
  %2566 = load double, ptr %23, align 8, !tbaa !11
  br label %2570

2567:                                             ; preds = %2560
  %2568 = load double, ptr %23, align 8, !tbaa !11
  %2569 = fneg double %2568
  br label %2570

2570:                                             ; preds = %2567, %2565
  %2571 = phi double [ %2566, %2565 ], [ %2569, %2567 ]
  %2572 = fdiv double %2571, 1.000000e+01
  %2573 = fcmp ogt double %2562, %2572
  br i1 %2573, label %2574, label %2575

2574:                                             ; preds = %2570
  store i32 1, ptr %34, align 4, !tbaa !9
  br label %2575

2575:                                             ; preds = %2574, %2570
  br label %2591

2576:                                             ; preds = %2554
  %2577 = load double, ptr %29, align 8, !tbaa !11
  %2578 = load double, ptr %23, align 8, !tbaa !11
  %2579 = fcmp oge double %2578, 0.000000e+00
  br i1 %2579, label %2580, label %2582

2580:                                             ; preds = %2576
  %2581 = load double, ptr %23, align 8, !tbaa !11
  br label %2585

2582:                                             ; preds = %2576
  %2583 = load double, ptr %23, align 8, !tbaa !11
  %2584 = fneg double %2583
  br label %2585

2585:                                             ; preds = %2582, %2580
  %2586 = phi double [ %2581, %2580 ], [ %2584, %2582 ]
  %2587 = fdiv double %2586, 1.000000e+01
  %2588 = fcmp ogt double %2577, %2587
  br i1 %2588, label %2589, label %2590

2589:                                             ; preds = %2585
  store i32 1, ptr %34, align 4, !tbaa !9
  br label %2590

2590:                                             ; preds = %2589, %2585
  br label %2591

2591:                                             ; preds = %2590, %2575
  %2592 = load double, ptr %44, align 8, !tbaa !11
  %2593 = load double, ptr %47, align 8, !tbaa !11
  %2594 = fadd double %2593, %2592
  store double %2594, ptr %47, align 8, !tbaa !11
  %2595 = load i32, ptr %33, align 4, !tbaa !9
  %2596 = add nsw i32 %2595, 1
  store i32 %2596, ptr %21, align 4, !tbaa !9
  %2597 = load i32, ptr %21, align 4, !tbaa !9
  store i32 %2597, ptr %33, align 4, !tbaa !9
  br label %2598

2598:                                             ; preds = %3435, %2591
  %2599 = load i32, ptr %33, align 4, !tbaa !9
  %2600 = icmp sle i32 %2599, 30
  br i1 %2600, label %2601, label %3438

2601:                                             ; preds = %2598
  %2602 = load double, ptr %29, align 8, !tbaa !11
  %2603 = fcmp oge double %2602, 0.000000e+00
  br i1 %2603, label %2604, label %2606

2604:                                             ; preds = %2601
  %2605 = load double, ptr %29, align 8, !tbaa !11
  br label %2609

2606:                                             ; preds = %2601
  %2607 = load double, ptr %29, align 8, !tbaa !11
  %2608 = fneg double %2607
  br label %2609

2609:                                             ; preds = %2606, %2604
  %2610 = phi double [ %2605, %2604 ], [ %2608, %2606 ]
  %2611 = load double, ptr %46, align 8, !tbaa !11
  %2612 = load double, ptr %40, align 8, !tbaa !11
  %2613 = fmul double %2611, %2612
  %2614 = fcmp ole double %2610, %2613
  br i1 %2614, label %2615, label %2638

2615:                                             ; preds = %2609
  %2616 = load i32, ptr %39, align 4, !tbaa !9
  %2617 = icmp ne i32 %2616, 0
  br i1 %2617, label %2618, label %2628

2618:                                             ; preds = %2615
  %2619 = load ptr, ptr %11, align 8, !tbaa !5
  %2620 = load ptr, ptr %10, align 8, !tbaa !5
  %2621 = load i32, ptr %2620, align 4, !tbaa !9
  %2622 = sext i32 %2621 to i64
  %2623 = getelementptr inbounds double, ptr %2619, i64 %2622
  %2624 = load double, ptr %2623, align 8, !tbaa !11
  %2625 = load double, ptr %47, align 8, !tbaa !11
  %2626 = fadd double %2624, %2625
  %2627 = load ptr, ptr %15, align 8, !tbaa !5
  store double %2626, ptr %2627, align 8, !tbaa !11
  br label %2637

2628:                                             ; preds = %2615
  %2629 = load ptr, ptr %11, align 8, !tbaa !5
  %2630 = load i32, ptr %42, align 4, !tbaa !9
  %2631 = sext i32 %2630 to i64
  %2632 = getelementptr inbounds double, ptr %2629, i64 %2631
  %2633 = load double, ptr %2632, align 8, !tbaa !11
  %2634 = load double, ptr %47, align 8, !tbaa !11
  %2635 = fadd double %2633, %2634
  %2636 = load ptr, ptr %15, align 8, !tbaa !5
  store double %2635, ptr %2636, align 8, !tbaa !11
  br label %2637

2637:                                             ; preds = %2628, %2618
  br label %3463

2638:                                             ; preds = %2609
  %2639 = load double, ptr %29, align 8, !tbaa !11
  %2640 = fcmp ole double %2639, 0.000000e+00
  br i1 %2640, label %2641, label %2651

2641:                                             ; preds = %2638
  %2642 = load double, ptr %30, align 8, !tbaa !11
  %2643 = load double, ptr %47, align 8, !tbaa !11
  %2644 = fcmp oge double %2642, %2643
  br i1 %2644, label %2645, label %2647

2645:                                             ; preds = %2641
  %2646 = load double, ptr %30, align 8, !tbaa !11
  br label %2649

2647:                                             ; preds = %2641
  %2648 = load double, ptr %47, align 8, !tbaa !11
  br label %2649

2649:                                             ; preds = %2647, %2645
  %2650 = phi double [ %2646, %2645 ], [ %2648, %2647 ]
  store double %2650, ptr %30, align 8, !tbaa !11
  br label %2661

2651:                                             ; preds = %2638
  %2652 = load double, ptr %31, align 8, !tbaa !11
  %2653 = load double, ptr %47, align 8, !tbaa !11
  %2654 = fcmp ole double %2652, %2653
  br i1 %2654, label %2655, label %2657

2655:                                             ; preds = %2651
  %2656 = load double, ptr %31, align 8, !tbaa !11
  br label %2659

2657:                                             ; preds = %2651
  %2658 = load double, ptr %47, align 8, !tbaa !11
  br label %2659

2659:                                             ; preds = %2657, %2655
  %2660 = phi double [ %2656, %2655 ], [ %2658, %2657 ]
  store double %2660, ptr %31, align 8, !tbaa !11
  br label %2661

2661:                                             ; preds = %2659, %2649
  %2662 = load i32, ptr %35, align 4, !tbaa !9
  %2663 = icmp ne i32 %2662, 0
  br i1 %2663, label %2994, label %2664

2664:                                             ; preds = %2661
  %2665 = load i32, ptr %34, align 4, !tbaa !9
  %2666 = icmp ne i32 %2665, 0
  br i1 %2666, label %2750, label %2667

2667:                                             ; preds = %2664
  %2668 = load i32, ptr %39, align 4, !tbaa !9
  %2669 = icmp ne i32 %2668, 0
  br i1 %2669, label %2670, label %2710

2670:                                             ; preds = %2667
  %2671 = load ptr, ptr %12, align 8, !tbaa !5
  %2672 = load ptr, ptr %10, align 8, !tbaa !5
  %2673 = load i32, ptr %2672, align 4, !tbaa !9
  %2674 = sext i32 %2673 to i64
  %2675 = getelementptr inbounds double, ptr %2671, i64 %2674
  %2676 = load double, ptr %2675, align 8, !tbaa !11
  %2677 = load ptr, ptr %13, align 8, !tbaa !5
  %2678 = load ptr, ptr %10, align 8, !tbaa !5
  %2679 = load i32, ptr %2678, align 4, !tbaa !9
  %2680 = sext i32 %2679 to i64
  %2681 = getelementptr inbounds double, ptr %2677, i64 %2680
  %2682 = load double, ptr %2681, align 8, !tbaa !11
  %2683 = fdiv double %2676, %2682
  store double %2683, ptr %18, align 8, !tbaa !11
  %2684 = load double, ptr %29, align 8, !tbaa !11
  %2685 = load ptr, ptr %13, align 8, !tbaa !5
  %2686 = load i32, ptr %42, 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 = load double, ptr %37, align 8, !tbaa !11
  %2691 = fneg double %2689
  %2692 = call double @llvm.fmuladd.f64(double %2691, double %2690, double %2684)
  %2693 = load ptr, ptr %11, align 8, !tbaa !5
  %2694 = load ptr, ptr %10, align 8, !tbaa !5
  %2695 = load i32, ptr %2694, align 4, !tbaa !9
  %2696 = sext i32 %2695 to i64
  %2697 = getelementptr inbounds double, ptr %2693, i64 %2696
  %2698 = load double, ptr %2697, align 8, !tbaa !11
  %2699 = load ptr, ptr %11, align 8, !tbaa !5
  %2700 = load i32, ptr %42, align 4, !tbaa !9
  %2701 = sext i32 %2700 to i64
  %2702 = getelementptr inbounds double, ptr %2699, i64 %2701
  %2703 = load double, ptr %2702, align 8, !tbaa !11
  %2704 = fsub double %2698, %2703
  %2705 = load double, ptr %18, align 8, !tbaa !11
  %2706 = load double, ptr %18, align 8, !tbaa !11
  %2707 = fmul double %2705, %2706
  %2708 = fneg double %2704
  %2709 = call double @llvm.fmuladd.f64(double %2708, double %2707, double %2692)
  store double %2709, ptr %27, align 8, !tbaa !11
  br label %2749

2710:                                             ; preds = %2667
  %2711 = load ptr, ptr %12, align 8, !tbaa !5
  %2712 = load i32, ptr %42, align 4, !tbaa !9
  %2713 = sext i32 %2712 to i64
  %2714 = getelementptr inbounds double, ptr %2711, i64 %2713
  %2715 = load double, ptr %2714, align 8, !tbaa !11
  %2716 = load ptr, ptr %13, align 8, !tbaa !5
  %2717 = load i32, ptr %42, align 4, !tbaa !9
  %2718 = sext i32 %2717 to i64
  %2719 = getelementptr inbounds double, ptr %2716, i64 %2718
  %2720 = load double, ptr %2719, align 8, !tbaa !11
  %2721 = fdiv double %2715, %2720
  store double %2721, ptr %18, align 8, !tbaa !11
  %2722 = load double, ptr %29, align 8, !tbaa !11
  %2723 = load ptr, ptr %13, align 8, !tbaa !5
  %2724 = load ptr, ptr %10, align 8, !tbaa !5
  %2725 = load i32, ptr %2724, align 4, !tbaa !9
  %2726 = sext i32 %2725 to i64
  %2727 = getelementptr inbounds double, ptr %2723, i64 %2726
  %2728 = load double, ptr %2727, align 8, !tbaa !11
  %2729 = load double, ptr %37, align 8, !tbaa !11
  %2730 = fneg double %2728
  %2731 = call double @llvm.fmuladd.f64(double %2730, double %2729, double %2722)
  %2732 = load ptr, ptr %11, align 8, !tbaa !5
  %2733 = load i32, ptr %42, align 4, !tbaa !9
  %2734 = sext i32 %2733 to i64
  %2735 = getelementptr inbounds double, ptr %2732, i64 %2734
  %2736 = load double, ptr %2735, align 8, !tbaa !11
  %2737 = load ptr, ptr %11, align 8, !tbaa !5
  %2738 = load ptr, ptr %10, align 8, !tbaa !5
  %2739 = load i32, ptr %2738, align 4, !tbaa !9
  %2740 = sext i32 %2739 to i64
  %2741 = getelementptr inbounds double, ptr %2737, i64 %2740
  %2742 = load double, ptr %2741, align 8, !tbaa !11
  %2743 = fsub double %2736, %2742
  %2744 = load double, ptr %18, align 8, !tbaa !11
  %2745 = load double, ptr %18, align 8, !tbaa !11
  %2746 = fmul double %2744, %2745
  %2747 = fneg double %2743
  %2748 = call double @llvm.fmuladd.f64(double %2747, double %2746, double %2731)
  store double %2748, ptr %27, align 8, !tbaa !11
  br label %2749

2749:                                             ; preds = %2710, %2670
  br label %2793

2750:                                             ; preds = %2664
  %2751 = load ptr, ptr %12, align 8, !tbaa !5
  %2752 = load i32, ptr %36, align 4, !tbaa !9
  %2753 = sext i32 %2752 to i64
  %2754 = getelementptr inbounds double, ptr %2751, i64 %2753
  %2755 = load double, ptr %2754, align 8, !tbaa !11
  %2756 = load ptr, ptr %13, align 8, !tbaa !5
  %2757 = load i32, ptr %36, align 4, !tbaa !9
  %2758 = sext i32 %2757 to i64
  %2759 = getelementptr inbounds double, ptr %2756, i64 %2758
  %2760 = load double, ptr %2759, align 8, !tbaa !11
  %2761 = fdiv double %2755, %2760
  store double %2761, ptr %22, align 8, !tbaa !11
  %2762 = load i32, ptr %39, align 4, !tbaa !9
  %2763 = icmp ne i32 %2762, 0
  br i1 %2763, label %2764, label %2769

2764:                                             ; preds = %2750
  %2765 = load double, ptr %22, align 8, !tbaa !11
  %2766 = load double, ptr %22, align 8, !tbaa !11
  %2767 = load double, ptr %20, align 8, !tbaa !11
  %2768 = call double @llvm.fmuladd.f64(double %2765, double %2766, double %2767)
  store double %2768, ptr %20, align 8, !tbaa !11
  br label %2774

2769:                                             ; preds = %2750
  %2770 = load double, ptr %22, align 8, !tbaa !11
  %2771 = load double, ptr %22, align 8, !tbaa !11
  %2772 = load double, ptr %19, align 8, !tbaa !11
  %2773 = call double @llvm.fmuladd.f64(double %2770, double %2771, double %2772)
  store double %2773, ptr %19, align 8, !tbaa !11
  br label %2774

2774:                                             ; preds = %2769, %2764
  %2775 = load double, ptr %29, align 8, !tbaa !11
  %2776 = load ptr, ptr %13, align 8, !tbaa !5
  %2777 = load ptr, ptr %10, 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 %20, align 8, !tbaa !11
  %2783 = fneg double %2781
  %2784 = call double @llvm.fmuladd.f64(double %2783, double %2782, double %2775)
  %2785 = load ptr, ptr %13, align 8, !tbaa !5
  %2786 = load i32, ptr %42, align 4, !tbaa !9
  %2787 = sext i32 %2786 to i64
  %2788 = getelementptr inbounds double, ptr %2785, i64 %2787
  %2789 = load double, ptr %2788, align 8, !tbaa !11
  %2790 = load double, ptr %19, align 8, !tbaa !11
  %2791 = fneg double %2789
  %2792 = call double @llvm.fmuladd.f64(double %2791, double %2790, double %2784)
  store double %2792, ptr %27, align 8, !tbaa !11
  br label %2793

2793:                                             ; preds = %2774, %2749
  %2794 = load ptr, ptr %13, align 8, !tbaa !5
  %2795 = load ptr, ptr %10, align 8, !tbaa !5
  %2796 = load i32, ptr %2795, align 4, !tbaa !9
  %2797 = sext i32 %2796 to i64
  %2798 = getelementptr inbounds double, ptr %2794, i64 %2797
  %2799 = load double, ptr %2798, align 8, !tbaa !11
  %2800 = load ptr, ptr %13, align 8, !tbaa !5
  %2801 = load i32, ptr %42, align 4, !tbaa !9
  %2802 = sext i32 %2801 to i64
  %2803 = getelementptr inbounds double, ptr %2800, i64 %2802
  %2804 = load double, ptr %2803, align 8, !tbaa !11
  %2805 = fadd double %2799, %2804
  %2806 = load double, ptr %29, align 8, !tbaa !11
  %2807 = load ptr, ptr %13, align 8, !tbaa !5
  %2808 = load ptr, ptr %10, align 8, !tbaa !5
  %2809 = load i32, ptr %2808, align 4, !tbaa !9
  %2810 = sext i32 %2809 to i64
  %2811 = getelementptr inbounds double, ptr %2807, i64 %2810
  %2812 = load double, ptr %2811, align 8, !tbaa !11
  %2813 = load ptr, ptr %13, align 8, !tbaa !5
  %2814 = load i32, ptr %42, align 4, !tbaa !9
  %2815 = sext i32 %2814 to i64
  %2816 = getelementptr inbounds double, ptr %2813, i64 %2815
  %2817 = load double, ptr %2816, align 8, !tbaa !11
  %2818 = fmul double %2812, %2817
  %2819 = load double, ptr %37, align 8, !tbaa !11
  %2820 = fmul double %2818, %2819
  %2821 = fneg double %2820
  %2822 = call double @llvm.fmuladd.f64(double %2805, double %2806, double %2821)
  store double %2822, ptr %25, align 8, !tbaa !11
  %2823 = load ptr, ptr %13, align 8, !tbaa !5
  %2824 = load ptr, ptr %10, align 8, !tbaa !5
  %2825 = load i32, ptr %2824, align 4, !tbaa !9
  %2826 = sext i32 %2825 to i64
  %2827 = getelementptr inbounds double, ptr %2823, i64 %2826
  %2828 = load double, ptr %2827, align 8, !tbaa !11
  %2829 = load ptr, ptr %13, align 8, !tbaa !5
  %2830 = load i32, ptr %42, align 4, !tbaa !9
  %2831 = sext i32 %2830 to i64
  %2832 = getelementptr inbounds double, ptr %2829, i64 %2831
  %2833 = load double, ptr %2832, align 8, !tbaa !11
  %2834 = fmul double %2828, %2833
  %2835 = load double, ptr %29, align 8, !tbaa !11
  %2836 = fmul double %2834, %2835
  store double %2836, ptr %26, align 8, !tbaa !11
  %2837 = load double, ptr %27, align 8, !tbaa !11
  %2838 = fcmp oeq double %2837, 0.000000e+00
  br i1 %2838, label %2839, label %2941

2839:                                             ; preds = %2793
  %2840 = load double, ptr %25, align 8, !tbaa !11
  %2841 = fcmp oeq double %2840, 0.000000e+00
  br i1 %2841, label %2842, label %2937

2842:                                             ; preds = %2839
  %2843 = load i32, ptr %34, align 4, !tbaa !9
  %2844 = icmp ne i32 %2843, 0
  br i1 %2844, label %2907, label %2845

2845:                                             ; preds = %2842
  %2846 = load i32, ptr %39, align 4, !tbaa !9
  %2847 = icmp ne i32 %2846, 0
  br i1 %2847, label %2848, label %2877

2848:                                             ; preds = %2845
  %2849 = load ptr, ptr %12, align 8, !tbaa !5
  %2850 = load ptr, ptr %10, align 8, !tbaa !5
  %2851 = load i32, ptr %2850, align 4, !tbaa !9
  %2852 = sext i32 %2851 to i64
  %2853 = getelementptr inbounds double, ptr %2849, i64 %2852
  %2854 = load double, ptr %2853, align 8, !tbaa !11
  %2855 = load ptr, ptr %12, align 8, !tbaa !5
  %2856 = load ptr, ptr %10, align 8, !tbaa !5
  %2857 = load i32, ptr %2856, align 4, !tbaa !9
  %2858 = sext i32 %2857 to i64
  %2859 = getelementptr inbounds double, ptr %2855, i64 %2858
  %2860 = load double, ptr %2859, align 8, !tbaa !11
  %2861 = load ptr, ptr %13, align 8, !tbaa !5
  %2862 = load i32, ptr %42, align 4, !tbaa !9
  %2863 = sext i32 %2862 to i64
  %2864 = getelementptr inbounds double, ptr %2861, i64 %2863
  %2865 = load double, ptr %2864, align 8, !tbaa !11
  %2866 = load ptr, ptr %13, align 8, !tbaa !5
  %2867 = load i32, ptr %42, align 4, !tbaa !9
  %2868 = sext i32 %2867 to i64
  %2869 = getelementptr inbounds double, ptr %2866, i64 %2868
  %2870 = load double, ptr %2869, align 8, !tbaa !11
  %2871 = fmul double %2865, %2870
  %2872 = load double, ptr %20, align 8, !tbaa !11
  %2873 = load double, ptr %19, align 8, !tbaa !11
  %2874 = fadd double %2872, %2873
  %2875 = fmul double %2871, %2874
  %2876 = call double @llvm.fmuladd.f64(double %2854, double %2860, double %2875)
  store double %2876, ptr %25, align 8, !tbaa !11
  br label %2906

2877:                                             ; preds = %2845
  %2878 = load ptr, ptr %12, align 8, !tbaa !5
  %2879 = load i32, ptr %42, align 4, !tbaa !9
  %2880 = sext i32 %2879 to i64
  %2881 = getelementptr inbounds double, ptr %2878, i64 %2880
  %2882 = load double, ptr %2881, align 8, !tbaa !11
  %2883 = load ptr, ptr %12, align 8, !tbaa !5
  %2884 = load i32, ptr %42, align 4, !tbaa !9
  %2885 = sext i32 %2884 to i64
  %2886 = getelementptr inbounds double, ptr %2883, i64 %2885
  %2887 = load double, ptr %2886, align 8, !tbaa !11
  %2888 = load ptr, ptr %13, align 8, !tbaa !5
  %2889 = load ptr, ptr %10, align 8, !tbaa !5
  %2890 = load i32, ptr %2889, align 4, !tbaa !9
  %2891 = sext i32 %2890 to i64
  %2892 = getelementptr inbounds double, ptr %2888, i64 %2891
  %2893 = load double, ptr %2892, align 8, !tbaa !11
  %2894 = load ptr, ptr %13, align 8, !tbaa !5
  %2895 = load ptr, ptr %10, align 8, !tbaa !5
  %2896 = load i32, ptr %2895, align 4, !tbaa !9
  %2897 = sext i32 %2896 to i64
  %2898 = getelementptr inbounds double, ptr %2894, i64 %2897
  %2899 = load double, ptr %2898, align 8, !tbaa !11
  %2900 = fmul double %2893, %2899
  %2901 = load double, ptr %20, align 8, !tbaa !11
  %2902 = load double, ptr %19, align 8, !tbaa !11
  %2903 = fadd double %2901, %2902
  %2904 = fmul double %2900, %2903
  %2905 = call double @llvm.fmuladd.f64(double %2882, double %2887, double %2904)
  store double %2905, ptr %25, align 8, !tbaa !11
  br label %2906

2906:                                             ; preds = %2877, %2848
  br label %2936

2907:                                             ; preds = %2842
  %2908 = load ptr, ptr %13, align 8, !tbaa !5
  %2909 = load ptr, ptr %10, align 8, !tbaa !5
  %2910 = load i32, ptr %2909, align 4, !tbaa !9
  %2911 = sext i32 %2910 to i64
  %2912 = getelementptr inbounds double, ptr %2908, i64 %2911
  %2913 = load double, ptr %2912, align 8, !tbaa !11
  %2914 = load ptr, ptr %13, align 8, !tbaa !5
  %2915 = load ptr, ptr %10, align 8, !tbaa !5
  %2916 = load i32, ptr %2915, align 4, !tbaa !9
  %2917 = sext i32 %2916 to i64
  %2918 = getelementptr inbounds double, ptr %2914, i64 %2917
  %2919 = load double, ptr %2918, align 8, !tbaa !11
  %2920 = fmul double %2913, %2919
  %2921 = load double, ptr %20, align 8, !tbaa !11
  %2922 = load ptr, ptr %13, align 8, !tbaa !5
  %2923 = load i32, ptr %42, align 4, !tbaa !9
  %2924 = sext i32 %2923 to i64
  %2925 = getelementptr inbounds double, ptr %2922, i64 %2924
  %2926 = load double, ptr %2925, align 8, !tbaa !11
  %2927 = load ptr, ptr %13, align 8, !tbaa !5
  %2928 = load i32, ptr %42, align 4, !tbaa !9
  %2929 = sext i32 %2928 to i64
  %2930 = getelementptr inbounds double, ptr %2927, i64 %2929
  %2931 = load double, ptr %2930, align 8, !tbaa !11
  %2932 = fmul double %2926, %2931
  %2933 = load double, ptr %19, align 8, !tbaa !11
  %2934 = fmul double %2932, %2933
  %2935 = call double @llvm.fmuladd.f64(double %2920, double %2921, double %2934)
  store double %2935, ptr %25, align 8, !tbaa !11
  br label %2936

2936:                                             ; preds = %2907, %2906
  br label %2937

2937:                                             ; preds = %2936, %2839
  %2938 = load double, ptr %26, align 8, !tbaa !11
  %2939 = load double, ptr %25, align 8, !tbaa !11
  %2940 = fdiv double %2938, %2939
  store double %2940, ptr %44, align 8, !tbaa !11
  br label %2993

2941:                                             ; preds = %2793
  %2942 = load double, ptr %25, align 8, !tbaa !11
  %2943 = fcmp ole double %2942, 0.000000e+00
  br i1 %2943, label %2944, label %2968

2944:                                             ; preds = %2941
  %2945 = load double, ptr %25, align 8, !tbaa !11
  %2946 = load double, ptr %25, align 8, !tbaa !11
  %2947 = load double, ptr %25, align 8, !tbaa !11
  %2948 = load double, ptr %26, align 8, !tbaa !11
  %2949 = fmul double %2948, 4.000000e+00
  %2950 = load double, ptr %27, align 8, !tbaa !11
  %2951 = fmul double %2949, %2950
  %2952 = fneg double %2951
  %2953 = call double @llvm.fmuladd.f64(double %2946, double %2947, double %2952)
  store double %2953, ptr %18, align 8, !tbaa !11
  %2954 = load double, ptr %18, align 8, !tbaa !11
  %2955 = fcmp oge double %2954, 0.000000e+00
  br i1 %2955, label %2956, label %2958

2956:                                             ; preds = %2944
  %2957 = load double, ptr %18, align 8, !tbaa !11
  br label %2961

2958:                                             ; preds = %2944
  %2959 = load double, ptr %18, align 8, !tbaa !11
  %2960 = fneg double %2959
  br label %2961

2961:                                             ; preds = %2958, %2956
  %2962 = phi double [ %2957, %2956 ], [ %2960, %2958 ]
  %2963 = call double @sqrt(double noundef %2962) #5
  %2964 = fsub double %2945, %2963
  %2965 = load double, ptr %27, align 8, !tbaa !11
  %2966 = fmul double %2965, 2.000000e+00
  %2967 = fdiv double %2964, %2966
  store double %2967, ptr %44, align 8, !tbaa !11
  br label %2992

2968:                                             ; preds = %2941
  %2969 = load double, ptr %26, align 8, !tbaa !11
  %2970 = fmul double %2969, 2.000000e+00
  %2971 = load double, ptr %25, align 8, !tbaa !11
  %2972 = load double, ptr %25, align 8, !tbaa !11
  %2973 = load double, ptr %25, align 8, !tbaa !11
  %2974 = load double, ptr %26, align 8, !tbaa !11
  %2975 = fmul double %2974, 4.000000e+00
  %2976 = load double, ptr %27, align 8, !tbaa !11
  %2977 = fmul double %2975, %2976
  %2978 = fneg double %2977
  %2979 = call double @llvm.fmuladd.f64(double %2972, double %2973, double %2978)
  store double %2979, ptr %18, align 8, !tbaa !11
  %2980 = load double, ptr %18, align 8, !tbaa !11
  %2981 = fcmp oge double %2980, 0.000000e+00
  br i1 %2981, label %2982, label %2984

2982:                                             ; preds = %2968
  %2983 = load double, ptr %18, align 8, !tbaa !11
  br label %2987

2984:                                             ; preds = %2968
  %2985 = load double, ptr %18, align 8, !tbaa !11
  %2986 = fneg double %2985
  br label %2987

2987:                                             ; preds = %2984, %2982
  %2988 = phi double [ %2983, %2982 ], [ %2986, %2984 ]
  %2989 = call double @sqrt(double noundef %2988) #5
  %2990 = fadd double %2971, %2989
  %2991 = fdiv double %2970, %2990
  store double %2991, ptr %44, align 8, !tbaa !11
  br label %2992

2992:                                             ; preds = %2987, %2961
  br label %2993

2993:                                             ; preds = %2992, %2937
  br label %3204

2994:                                             ; preds = %2661
  %2995 = load double, ptr %41, align 8, !tbaa !11
  %2996 = load double, ptr %48, align 8, !tbaa !11
  %2997 = fadd double %2995, %2996
  %2998 = load double, ptr %45, align 8, !tbaa !11
  %2999 = fadd double %2997, %2998
  store double %2999, ptr %22, align 8, !tbaa !11
  %3000 = load i32, ptr %34, align 4, !tbaa !9
  %3001 = icmp ne i32 %3000, 0
  br i1 %3001, label %3002, label %3048

3002:                                             ; preds = %2994
  %3003 = load double, ptr %22, align 8, !tbaa !11
  %3004 = load ptr, ptr %13, align 8, !tbaa !5
  %3005 = load i32, ptr %49, align 4, !tbaa !9
  %3006 = sext i32 %3005 to i64
  %3007 = getelementptr inbounds double, ptr %3004, i64 %3006
  %3008 = load double, ptr %3007, align 8, !tbaa !11
  %3009 = load double, ptr %20, align 8, !tbaa !11
  %3010 = fneg double %3008
  %3011 = call double @llvm.fmuladd.f64(double %3010, double %3009, double %3003)
  %3012 = load ptr, ptr %13, align 8, !tbaa !5
  %3013 = load i32, ptr %50, align 4, !tbaa !9
  %3014 = sext i32 %3013 to i64
  %3015 = getelementptr inbounds double, ptr %3012, i64 %3014
  %3016 = load double, ptr %3015, align 8, !tbaa !11
  %3017 = load double, ptr %19, align 8, !tbaa !11
  %3018 = fneg double %3016
  %3019 = call double @llvm.fmuladd.f64(double %3018, double %3017, double %3011)
  store double %3019, ptr %27, align 8, !tbaa !11
  %3020 = load ptr, ptr %13, align 8, !tbaa !5
  %3021 = load i32, ptr %49, align 4, !tbaa !9
  %3022 = sext i32 %3021 to i64
  %3023 = getelementptr inbounds double, ptr %3020, i64 %3022
  %3024 = load double, ptr %3023, align 8, !tbaa !11
  %3025 = load ptr, ptr %13, align 8, !tbaa !5
  %3026 = load i32, ptr %49, align 4, !tbaa !9
  %3027 = sext i32 %3026 to i64
  %3028 = getelementptr inbounds double, ptr %3025, i64 %3027
  %3029 = load double, ptr %3028, align 8, !tbaa !11
  %3030 = fmul double %3024, %3029
  %3031 = load double, ptr %20, align 8, !tbaa !11
  %3032 = fmul double %3030, %3031
  %3033 = getelementptr inbounds [3 x double], ptr %38, i64 0, i64 0
  store double %3032, ptr %3033, align 16, !tbaa !11
  %3034 = load ptr, ptr %13, align 8, !tbaa !5
  %3035 = load i32, ptr %50, align 4, !tbaa !9
  %3036 = sext i32 %3035 to i64
  %3037 = getelementptr inbounds double, ptr %3034, i64 %3036
  %3038 = load double, ptr %3037, align 8, !tbaa !11
  %3039 = load ptr, ptr %13, align 8, !tbaa !5
  %3040 = load i32, ptr %50, align 4, !tbaa !9
  %3041 = sext i32 %3040 to i64
  %3042 = getelementptr inbounds double, ptr %3039, i64 %3041
  %3043 = load double, ptr %3042, align 8, !tbaa !11
  %3044 = fmul double %3038, %3043
  %3045 = load double, ptr %19, align 8, !tbaa !11
  %3046 = fmul double %3044, %3045
  %3047 = getelementptr inbounds [3 x double], ptr %38, i64 0, i64 2
  store double %3046, ptr %3047, align 16, !tbaa !11
  br label %3192

3048:                                             ; preds = %2994
  %3049 = load i32, ptr %39, align 4, !tbaa !9
  %3050 = icmp ne i32 %3049, 0
  br i1 %3050, label %3051, label %3121

3051:                                             ; preds = %3048
  %3052 = load ptr, ptr %12, align 8, !tbaa !5
  %3053 = load i32, ptr %49, align 4, !tbaa !9
  %3054 = sext i32 %3053 to i64
  %3055 = getelementptr inbounds double, ptr %3052, i64 %3054
  %3056 = load double, ptr %3055, align 8, !tbaa !11
  %3057 = load ptr, ptr %13, align 8, !tbaa !5
  %3058 = load i32, ptr %49, align 4, !tbaa !9
  %3059 = sext i32 %3058 to i64
  %3060 = getelementptr inbounds double, ptr %3057, i64 %3059
  %3061 = load double, ptr %3060, align 8, !tbaa !11
  %3062 = fdiv double %3056, %3061
  store double %3062, ptr %24, align 8, !tbaa !11
  %3063 = load double, ptr %24, align 8, !tbaa !11
  %3064 = load double, ptr %24, align 8, !tbaa !11
  %3065 = fmul double %3064, %3063
  store double %3065, ptr %24, align 8, !tbaa !11
  %3066 = load double, ptr %22, align 8, !tbaa !11
  %3067 = load ptr, ptr %13, align 8, !tbaa !5
  %3068 = load i32, ptr %50, align 4, !tbaa !9
  %3069 = sext i32 %3068 to i64
  %3070 = getelementptr inbounds double, ptr %3067, i64 %3069
  %3071 = load double, ptr %3070, align 8, !tbaa !11
  %3072 = load double, ptr %20, align 8, !tbaa !11
  %3073 = load double, ptr %19, align 8, !tbaa !11
  %3074 = fadd double %3072, %3073
  %3075 = fneg double %3071
  %3076 = call double @llvm.fmuladd.f64(double %3075, double %3074, double %3066)
  %3077 = load ptr, ptr %11, align 8, !tbaa !5
  %3078 = load i32, ptr %49, align 4, !tbaa !9
  %3079 = sext i32 %3078 to i64
  %3080 = getelementptr inbounds double, ptr %3077, i64 %3079
  %3081 = load double, ptr %3080, align 8, !tbaa !11
  %3082 = load ptr, ptr %11, align 8, !tbaa !5
  %3083 = load i32, ptr %50, align 4, !tbaa !9
  %3084 = sext i32 %3083 to i64
  %3085 = getelementptr inbounds double, ptr %3082, i64 %3084
  %3086 = load double, ptr %3085, align 8, !tbaa !11
  %3087 = fsub double %3081, %3086
  %3088 = load double, ptr %24, align 8, !tbaa !11
  %3089 = fneg double %3087
  %3090 = call double @llvm.fmuladd.f64(double %3089, double %3088, double %3076)
  store double %3090, ptr %27, align 8, !tbaa !11
  %3091 = load ptr, ptr %12, align 8, !tbaa !5
  %3092 = load i32, ptr %49, align 4, !tbaa !9
  %3093 = sext i32 %3092 to i64
  %3094 = getelementptr inbounds double, ptr %3091, i64 %3093
  %3095 = load double, ptr %3094, align 8, !tbaa !11
  %3096 = load ptr, ptr %12, align 8, !tbaa !5
  %3097 = load i32, ptr %49, align 4, !tbaa !9
  %3098 = sext i32 %3097 to i64
  %3099 = getelementptr inbounds double, ptr %3096, i64 %3098
  %3100 = load double, ptr %3099, align 8, !tbaa !11
  %3101 = fmul double %3095, %3100
  %3102 = getelementptr inbounds [3 x double], ptr %38, i64 0, i64 0
  store double %3101, ptr %3102, align 16, !tbaa !11
  %3103 = load ptr, ptr %13, align 8, !tbaa !5
  %3104 = load i32, ptr %50, align 4, !tbaa !9
  %3105 = sext i32 %3104 to i64
  %3106 = getelementptr inbounds double, ptr %3103, i64 %3105
  %3107 = load double, ptr %3106, align 8, !tbaa !11
  %3108 = load ptr, ptr %13, align 8, !tbaa !5
  %3109 = load i32, ptr %50, align 4, !tbaa !9
  %3110 = sext i32 %3109 to i64
  %3111 = getelementptr inbounds double, ptr %3108, i64 %3110
  %3112 = load double, ptr %3111, align 8, !tbaa !11
  %3113 = fmul double %3107, %3112
  %3114 = load double, ptr %20, align 8, !tbaa !11
  %3115 = load double, ptr %24, align 8, !tbaa !11
  %3116 = fsub double %3114, %3115
  %3117 = load double, ptr %19, align 8, !tbaa !11
  %3118 = fadd double %3116, %3117
  %3119 = fmul double %3113, %3118
  %3120 = getelementptr inbounds [3 x double], ptr %38, i64 0, i64 2
  store double %3119, ptr %3120, align 16, !tbaa !11
  br label %3191

3121:                                             ; preds = %3048
  %3122 = load ptr, ptr %12, align 8, !tbaa !5
  %3123 = load i32, ptr %50, align 4, !tbaa !9
  %3124 = sext i32 %3123 to i64
  %3125 = getelementptr inbounds double, ptr %3122, i64 %3124
  %3126 = load double, ptr %3125, align 8, !tbaa !11
  %3127 = load ptr, ptr %13, align 8, !tbaa !5
  %3128 = load i32, ptr %50, align 4, !tbaa !9
  %3129 = sext i32 %3128 to i64
  %3130 = getelementptr inbounds double, ptr %3127, i64 %3129
  %3131 = load double, ptr %3130, align 8, !tbaa !11
  %3132 = fdiv double %3126, %3131
  store double %3132, ptr %24, align 8, !tbaa !11
  %3133 = load double, ptr %24, align 8, !tbaa !11
  %3134 = load double, ptr %24, align 8, !tbaa !11
  %3135 = fmul double %3134, %3133
  store double %3135, ptr %24, align 8, !tbaa !11
  %3136 = load double, ptr %22, align 8, !tbaa !11
  %3137 = load ptr, ptr %13, align 8, !tbaa !5
  %3138 = load i32, ptr %49, align 4, !tbaa !9
  %3139 = sext i32 %3138 to i64
  %3140 = getelementptr inbounds double, ptr %3137, i64 %3139
  %3141 = load double, ptr %3140, align 8, !tbaa !11
  %3142 = load double, ptr %20, align 8, !tbaa !11
  %3143 = load double, ptr %19, align 8, !tbaa !11
  %3144 = fadd double %3142, %3143
  %3145 = fneg double %3141
  %3146 = call double @llvm.fmuladd.f64(double %3145, double %3144, double %3136)
  %3147 = load ptr, ptr %11, align 8, !tbaa !5
  %3148 = load i32, ptr %50, align 4, !tbaa !9
  %3149 = sext i32 %3148 to i64
  %3150 = getelementptr inbounds double, ptr %3147, i64 %3149
  %3151 = load double, ptr %3150, align 8, !tbaa !11
  %3152 = load ptr, ptr %11, align 8, !tbaa !5
  %3153 = load i32, ptr %49, align 4, !tbaa !9
  %3154 = sext i32 %3153 to i64
  %3155 = getelementptr inbounds double, ptr %3152, i64 %3154
  %3156 = load double, ptr %3155, align 8, !tbaa !11
  %3157 = fsub double %3151, %3156
  %3158 = load double, ptr %24, align 8, !tbaa !11
  %3159 = fneg double %3157
  %3160 = call double @llvm.fmuladd.f64(double %3159, double %3158, double %3146)
  store double %3160, ptr %27, align 8, !tbaa !11
  %3161 = load ptr, ptr %13, align 8, !tbaa !5
  %3162 = load i32, ptr %49, align 4, !tbaa !9
  %3163 = sext i32 %3162 to i64
  %3164 = getelementptr inbounds double, ptr %3161, i64 %3163
  %3165 = load double, ptr %3164, align 8, !tbaa !11
  %3166 = load ptr, ptr %13, align 8, !tbaa !5
  %3167 = load i32, ptr %49, align 4, !tbaa !9
  %3168 = sext i32 %3167 to i64
  %3169 = getelementptr inbounds double, ptr %3166, i64 %3168
  %3170 = load double, ptr %3169, align 8, !tbaa !11
  %3171 = fmul double %3165, %3170
  %3172 = load double, ptr %20, align 8, !tbaa !11
  %3173 = load double, ptr %19, align 8, !tbaa !11
  %3174 = load double, ptr %24, align 8, !tbaa !11
  %3175 = fsub double %3173, %3174
  %3176 = fadd double %3172, %3175
  %3177 = fmul double %3171, %3176
  %3178 = getelementptr inbounds [3 x double], ptr %38, i64 0, i64 0
  store double %3177, ptr %3178, align 16, !tbaa !11
  %3179 = load ptr, ptr %12, align 8, !tbaa !5
  %3180 = load i32, ptr %50, align 4, !tbaa !9
  %3181 = sext i32 %3180 to i64
  %3182 = getelementptr inbounds double, ptr %3179, i64 %3181
  %3183 = load double, ptr %3182, align 8, !tbaa !11
  %3184 = load ptr, ptr %12, align 8, !tbaa !5
  %3185 = load i32, ptr %50, align 4, !tbaa !9
  %3186 = sext i32 %3185 to i64
  %3187 = getelementptr inbounds double, ptr %3184, i64 %3186
  %3188 = load double, ptr %3187, align 8, !tbaa !11
  %3189 = fmul double %3183, %3188
  %3190 = getelementptr inbounds [3 x double], ptr %38, i64 0, i64 2
  store double %3189, ptr %3190, align 16, !tbaa !11
  br label %3191

3191:                                             ; preds = %3121, %3051
  br label %3192

3192:                                             ; preds = %3191, %3002
  %3193 = load ptr, ptr %13, align 8, !tbaa !5
  %3194 = load i32, ptr %49, align 4, !tbaa !9
  %3195 = sext i32 %3194 to i64
  %3196 = getelementptr inbounds double, ptr %3193, i64 %3195
  %3197 = getelementptr inbounds [3 x double], ptr %38, i64 0, i64 0
  %3198 = load ptr, ptr %16, align 8, !tbaa !5
  call void @dlaed6_(ptr noundef %33, ptr noundef %39, ptr noundef %27, ptr noundef %3196, ptr noundef %3197, ptr noundef %29, ptr noundef %44, ptr noundef %3198)
  %3199 = load ptr, ptr %16, align 8, !tbaa !5
  %3200 = load i32, ptr %3199, align 4, !tbaa !9
  %3201 = icmp ne i32 %3200, 0
  br i1 %3201, label %3202, label %3203

3202:                                             ; preds = %3192
  br label %3463

3203:                                             ; preds = %3192
  br label %3204

3204:                                             ; preds = %3203, %2993
  %3205 = load double, ptr %29, align 8, !tbaa !11
  %3206 = load double, ptr %44, align 8, !tbaa !11
  %3207 = fmul double %3205, %3206
  %3208 = fcmp oge double %3207, 0.000000e+00
  br i1 %3208, label %3209, label %3214

3209:                                             ; preds = %3204
  %3210 = load double, ptr %29, align 8, !tbaa !11
  %3211 = fneg double %3210
  %3212 = load double, ptr %37, align 8, !tbaa !11
  %3213 = fdiv double %3211, %3212
  store double %3213, ptr %44, align 8, !tbaa !11
  br label %3214

3214:                                             ; preds = %3209, %3204
  %3215 = load double, ptr %47, align 8, !tbaa !11
  %3216 = load double, ptr %44, align 8, !tbaa !11
  %3217 = fadd double %3215, %3216
  store double %3217, ptr %22, align 8, !tbaa !11
  %3218 = load double, ptr %22, align 8, !tbaa !11
  %3219 = load double, ptr %31, align 8, !tbaa !11
  %3220 = fcmp ogt double %3218, %3219
  br i1 %3220, label %3225, label %3221

3221:                                             ; preds = %3214
  %3222 = load double, ptr %22, align 8, !tbaa !11
  %3223 = load double, ptr %30, align 8, !tbaa !11
  %3224 = fcmp olt double %3222, %3223
  br i1 %3224, label %3225, label %3239

3225:                                             ; preds = %3221, %3214
  %3226 = load double, ptr %29, align 8, !tbaa !11
  %3227 = fcmp olt double %3226, 0.000000e+00
  br i1 %3227, label %3228, label %3233

3228:                                             ; preds = %3225
  %3229 = load double, ptr %31, align 8, !tbaa !11
  %3230 = load double, ptr %47, align 8, !tbaa !11
  %3231 = fsub double %3229, %3230
  %3232 = fdiv double %3231, 2.000000e+00
  store double %3232, ptr %44, align 8, !tbaa !11
  br label %3238

3233:                                             ; preds = %3225
  %3234 = load double, ptr %30, align 8, !tbaa !11
  %3235 = load double, ptr %47, align 8, !tbaa !11
  %3236 = fsub double %3234, %3235
  %3237 = fdiv double %3236, 2.000000e+00
  store double %3237, ptr %44, align 8, !tbaa !11
  br label %3238

3238:                                             ; preds = %3233, %3228
  br label %3239

3239:                                             ; preds = %3238, %3221
  %3240 = load ptr, ptr %9, align 8, !tbaa !5
  %3241 = load i32, ptr %3240, align 4, !tbaa !9
  store i32 %3241, ptr %17, align 4, !tbaa !9
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %3242

3242:                                             ; preds = %3254, %3239
  %3243 = load i32, ptr %28, align 4, !tbaa !9
  %3244 = load i32, ptr %17, align 4, !tbaa !9
  %3245 = icmp sle i32 %3243, %3244
  br i1 %3245, label %3246, label %3257

3246:                                             ; preds = %3242
  %3247 = load double, ptr %44, align 8, !tbaa !11
  %3248 = load ptr, ptr %13, align 8, !tbaa !5
  %3249 = load i32, ptr %28, align 4, !tbaa !9
  %3250 = sext i32 %3249 to i64
  %3251 = getelementptr inbounds double, ptr %3248, i64 %3250
  %3252 = load double, ptr %3251, align 8, !tbaa !11
  %3253 = fsub double %3252, %3247
  store double %3253, ptr %3251, align 8, !tbaa !11
  br label %3254

3254:                                             ; preds = %3246
  %3255 = load i32, ptr %28, align 4, !tbaa !9
  %3256 = add nsw i32 %3255, 1
  store i32 %3256, ptr %28, align 4, !tbaa !9
  br label %3242, !llvm.loop !33

3257:                                             ; preds = %3242
  %3258 = load double, ptr %44, align 8, !tbaa !11
  %3259 = load double, ptr %47, align 8, !tbaa !11
  %3260 = fadd double %3259, %3258
  store double %3260, ptr %47, align 8, !tbaa !11
  %3261 = load double, ptr %29, align 8, !tbaa !11
  store double %3261, ptr %23, align 8, !tbaa !11
  store double 0.000000e+00, ptr %20, align 8, !tbaa !11
  store double 0.000000e+00, ptr %48, align 8, !tbaa !11
  store double 0.000000e+00, ptr %40, align 8, !tbaa !11
  %3262 = load i32, ptr %49, align 4, !tbaa !9
  store i32 %3262, ptr %17, align 4, !tbaa !9
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %3263

3263:                                             ; preds = %3294, %3257
  %3264 = load i32, ptr %28, align 4, !tbaa !9
  %3265 = load i32, ptr %17, align 4, !tbaa !9
  %3266 = icmp sle i32 %3264, %3265
  br i1 %3266, label %3267, label %3297

3267:                                             ; preds = %3263
  %3268 = load ptr, ptr %12, align 8, !tbaa !5
  %3269 = load i32, ptr %28, align 4, !tbaa !9
  %3270 = sext i32 %3269 to i64
  %3271 = getelementptr inbounds double, ptr %3268, i64 %3270
  %3272 = load double, ptr %3271, align 8, !tbaa !11
  %3273 = load ptr, ptr %13, align 8, !tbaa !5
  %3274 = load i32, ptr %28, align 4, !tbaa !9
  %3275 = sext i32 %3274 to i64
  %3276 = getelementptr inbounds double, ptr %3273, i64 %3275
  %3277 = load double, ptr %3276, align 8, !tbaa !11
  %3278 = fdiv double %3272, %3277
  store double %3278, ptr %22, align 8, !tbaa !11
  %3279 = load ptr, ptr %12, align 8, !tbaa !5
  %3280 = load i32, ptr %28, 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 double, ptr %22, align 8, !tbaa !11
  %3285 = load double, ptr %48, align 8, !tbaa !11
  %3286 = call double @llvm.fmuladd.f64(double %3283, double %3284, double %3285)
  store double %3286, ptr %48, align 8, !tbaa !11
  %3287 = load double, ptr %22, align 8, !tbaa !11
  %3288 = load double, ptr %22, align 8, !tbaa !11
  %3289 = load double, ptr %20, align 8, !tbaa !11
  %3290 = call double @llvm.fmuladd.f64(double %3287, double %3288, double %3289)
  store double %3290, ptr %20, align 8, !tbaa !11
  %3291 = load double, ptr %48, align 8, !tbaa !11
  %3292 = load double, ptr %40, align 8, !tbaa !11
  %3293 = fadd double %3292, %3291
  store double %3293, ptr %40, align 8, !tbaa !11
  br label %3294

3294:                                             ; preds = %3267
  %3295 = load i32, ptr %28, align 4, !tbaa !9
  %3296 = add nsw i32 %3295, 1
  store i32 %3296, ptr %28, align 4, !tbaa !9
  br label %3263, !llvm.loop !34

3297:                                             ; preds = %3263
  %3298 = load double, ptr %40, align 8, !tbaa !11
  %3299 = fcmp oge double %3298, 0.000000e+00
  br i1 %3299, label %3300, label %3302

3300:                                             ; preds = %3297
  %3301 = load double, ptr %40, align 8, !tbaa !11
  br label %3305

3302:                                             ; preds = %3297
  %3303 = load double, ptr %40, align 8, !tbaa !11
  %3304 = fneg double %3303
  br label %3305

3305:                                             ; preds = %3302, %3300
  %3306 = phi double [ %3301, %3300 ], [ %3304, %3302 ]
  store double %3306, ptr %40, align 8, !tbaa !11
  store double 0.000000e+00, ptr %19, align 8, !tbaa !11
  store double 0.000000e+00, ptr %45, align 8, !tbaa !11
  %3307 = load i32, ptr %50, align 4, !tbaa !9
  store i32 %3307, ptr %17, align 4, !tbaa !9
  %3308 = load ptr, ptr %9, align 8, !tbaa !5
  %3309 = load i32, ptr %3308, align 4, !tbaa !9
  store i32 %3309, ptr %28, align 4, !tbaa !9
  br label %3310

3310:                                             ; preds = %3341, %3305
  %3311 = load i32, ptr %28, align 4, !tbaa !9
  %3312 = load i32, ptr %17, align 4, !tbaa !9
  %3313 = icmp sge i32 %3311, %3312
  br i1 %3313, label %3314, label %3344

3314:                                             ; preds = %3310
  %3315 = load ptr, ptr %12, align 8, !tbaa !5
  %3316 = load i32, ptr %28, align 4, !tbaa !9
  %3317 = sext i32 %3316 to i64
  %3318 = getelementptr inbounds double, ptr %3315, i64 %3317
  %3319 = load double, ptr %3318, align 8, !tbaa !11
  %3320 = load ptr, ptr %13, align 8, !tbaa !5
  %3321 = load i32, ptr %28, align 4, !tbaa !9
  %3322 = sext i32 %3321 to i64
  %3323 = getelementptr inbounds double, ptr %3320, i64 %3322
  %3324 = load double, ptr %3323, align 8, !tbaa !11
  %3325 = fdiv double %3319, %3324
  store double %3325, ptr %22, align 8, !tbaa !11
  %3326 = load ptr, ptr %12, align 8, !tbaa !5
  %3327 = load i32, ptr %28, align 4, !tbaa !9
  %3328 = sext i32 %3327 to i64
  %3329 = getelementptr inbounds double, ptr %3326, i64 %3328
  %3330 = load double, ptr %3329, align 8, !tbaa !11
  %3331 = load double, ptr %22, align 8, !tbaa !11
  %3332 = load double, ptr %45, align 8, !tbaa !11
  %3333 = call double @llvm.fmuladd.f64(double %3330, double %3331, double %3332)
  store double %3333, ptr %45, align 8, !tbaa !11
  %3334 = load double, ptr %22, align 8, !tbaa !11
  %3335 = load double, ptr %22, align 8, !tbaa !11
  %3336 = load double, ptr %19, align 8, !tbaa !11
  %3337 = call double @llvm.fmuladd.f64(double %3334, double %3335, double %3336)
  store double %3337, ptr %19, align 8, !tbaa !11
  %3338 = load double, ptr %45, align 8, !tbaa !11
  %3339 = load double, ptr %40, align 8, !tbaa !11
  %3340 = fadd double %3339, %3338
  store double %3340, ptr %40, align 8, !tbaa !11
  br label %3341

3341:                                             ; preds = %3314
  %3342 = load i32, ptr %28, align 4, !tbaa !9
  %3343 = add nsw i32 %3342, -1
  store i32 %3343, ptr %28, align 4, !tbaa !9
  br label %3310, !llvm.loop !35

3344:                                             ; preds = %3310
  %3345 = load ptr, ptr %12, align 8, !tbaa !5
  %3346 = load i32, ptr %36, align 4, !tbaa !9
  %3347 = sext i32 %3346 to i64
  %3348 = getelementptr inbounds double, ptr %3345, i64 %3347
  %3349 = load double, ptr %3348, align 8, !tbaa !11
  %3350 = load ptr, ptr %13, align 8, !tbaa !5
  %3351 = load i32, ptr %36, align 4, !tbaa !9
  %3352 = sext i32 %3351 to i64
  %3353 = getelementptr inbounds double, ptr %3350, i64 %3352
  %3354 = load double, ptr %3353, align 8, !tbaa !11
  %3355 = fdiv double %3349, %3354
  store double %3355, ptr %22, align 8, !tbaa !11
  %3356 = load double, ptr %20, align 8, !tbaa !11
  %3357 = load double, ptr %19, align 8, !tbaa !11
  %3358 = fadd double %3356, %3357
  %3359 = load double, ptr %22, align 8, !tbaa !11
  %3360 = load double, ptr %22, align 8, !tbaa !11
  %3361 = call double @llvm.fmuladd.f64(double %3359, double %3360, double %3358)
  store double %3361, ptr %37, align 8, !tbaa !11
  %3362 = load ptr, ptr %12, align 8, !tbaa !5
  %3363 = load i32, ptr %36, align 4, !tbaa !9
  %3364 = sext i32 %3363 to i64
  %3365 = getelementptr inbounds double, ptr %3362, i64 %3364
  %3366 = load double, ptr %3365, align 8, !tbaa !11
  %3367 = load double, ptr %22, align 8, !tbaa !11
  %3368 = fmul double %3366, %3367
  store double %3368, ptr %22, align 8, !tbaa !11
  %3369 = load double, ptr %41, align 8, !tbaa !11
  %3370 = load double, ptr %45, align 8, !tbaa !11
  %3371 = fadd double %3369, %3370
  %3372 = load double, ptr %48, align 8, !tbaa !11
  %3373 = fadd double %3371, %3372
  %3374 = load double, ptr %22, align 8, !tbaa !11
  %3375 = fadd double %3373, %3374
  store double %3375, ptr %29, align 8, !tbaa !11
  %3376 = load double, ptr %45, align 8, !tbaa !11
  %3377 = load double, ptr %48, align 8, !tbaa !11
  %3378 = fsub double %3376, %3377
  %3379 = load double, ptr %40, align 8, !tbaa !11
  %3380 = call double @llvm.fmuladd.f64(double %3378, double 8.000000e+00, double %3379)
  %3381 = load double, ptr %41, align 8, !tbaa !11
  %3382 = call double @llvm.fmuladd.f64(double %3381, double 2.000000e+00, double %3380)
  %3383 = load double, ptr %22, align 8, !tbaa !11
  %3384 = fcmp oge double %3383, 0.000000e+00
  br i1 %3384, label %3385, label %3387

3385:                                             ; preds = %3344
  %3386 = load double, ptr %22, align 8, !tbaa !11
  br label %3390

3387:                                             ; preds = %3344
  %3388 = load double, ptr %22, align 8, !tbaa !11
  %3389 = fneg double %3388
  br label %3390

3390:                                             ; preds = %3387, %3385
  %3391 = phi double [ %3386, %3385 ], [ %3389, %3387 ]
  %3392 = call double @llvm.fmuladd.f64(double %3391, double 3.000000e+00, double %3382)
  %3393 = load double, ptr %47, align 8, !tbaa !11
  %3394 = fcmp oge double %3393, 0.000000e+00
  br i1 %3394, label %3395, label %3397

3395:                                             ; preds = %3390
  %3396 = load double, ptr %47, align 8, !tbaa !11
  br label %3400

3397:                                             ; preds = %3390
  %3398 = load double, ptr %47, align 8, !tbaa !11
  %3399 = fneg double %3398
  br label %3400

3400:                                             ; preds = %3397, %3395
  %3401 = phi double [ %3396, %3395 ], [ %3399, %3397 ]
  %3402 = load double, ptr %37, align 8, !tbaa !11
  %3403 = call double @llvm.fmuladd.f64(double %3401, double %3402, double %3392)
  store double %3403, ptr %40, align 8, !tbaa !11
  %3404 = load double, ptr %29, align 8, !tbaa !11
  %3405 = load double, ptr %23, align 8, !tbaa !11
  %3406 = fmul double %3404, %3405
  %3407 = fcmp ogt double %3406, 0.000000e+00
  br i1 %3407, label %3408, label %3434

3408:                                             ; preds = %3400
  %3409 = load double, ptr %29, align 8, !tbaa !11
  %3410 = fcmp oge double %3409, 0.000000e+00
  br i1 %3410, label %3411, label %3413

3411:                                             ; preds = %3408
  %3412 = load double, ptr %29, align 8, !tbaa !11
  br label %3416

3413:                                             ; preds = %3408
  %3414 = load double, ptr %29, align 8, !tbaa !11
  %3415 = fneg double %3414
  br label %3416

3416:                                             ; preds = %3413, %3411
  %3417 = phi double [ %3412, %3411 ], [ %3415, %3413 ]
  %3418 = load double, ptr %23, align 8, !tbaa !11
  %3419 = fcmp oge double %3418, 0.000000e+00
  br i1 %3419, label %3420, label %3422

3420:                                             ; preds = %3416
  %3421 = load double, ptr %23, align 8, !tbaa !11
  br label %3425

3422:                                             ; preds = %3416
  %3423 = load double, ptr %23, align 8, !tbaa !11
  %3424 = fneg double %3423
  br label %3425

3425:                                             ; preds = %3422, %3420
  %3426 = phi double [ %3421, %3420 ], [ %3424, %3422 ]
  %3427 = fdiv double %3426, 1.000000e+01
  %3428 = fcmp ogt double %3417, %3427
  br i1 %3428, label %3429, label %3434

3429:                                             ; preds = %3425
  %3430 = load i32, ptr %34, align 4, !tbaa !9
  %3431 = icmp ne i32 %3430, 0
  %3432 = xor i1 %3431, true
  %3433 = zext i1 %3432 to i32
  store i32 %3433, ptr %34, align 4, !tbaa !9
  br label %3434

3434:                                             ; preds = %3429, %3425, %3400
  br label %3435

3435:                                             ; preds = %3434
  %3436 = load i32, ptr %33, align 4, !tbaa !9
  %3437 = add nsw i32 %3436, 1
  store i32 %3437, ptr %33, align 4, !tbaa !9
  br label %2598, !llvm.loop !36

3438:                                             ; preds = %2598
  %3439 = load ptr, ptr %16, align 8, !tbaa !5
  store i32 1, ptr %3439, align 4, !tbaa !9
  %3440 = load i32, ptr %39, align 4, !tbaa !9
  %3441 = icmp ne i32 %3440, 0
  br i1 %3441, label %3442, label %3452

3442:                                             ; preds = %3438
  %3443 = load ptr, ptr %11, align 8, !tbaa !5
  %3444 = load ptr, ptr %10, align 8, !tbaa !5
  %3445 = load i32, ptr %3444, align 4, !tbaa !9
  %3446 = sext i32 %3445 to i64
  %3447 = getelementptr inbounds double, ptr %3443, i64 %3446
  %3448 = load double, ptr %3447, align 8, !tbaa !11
  %3449 = load double, ptr %47, align 8, !tbaa !11
  %3450 = fadd double %3448, %3449
  %3451 = load ptr, ptr %15, align 8, !tbaa !5
  store double %3450, ptr %3451, align 8, !tbaa !11
  br label %3461

3452:                                             ; preds = %3438
  %3453 = load ptr, ptr %11, align 8, !tbaa !5
  %3454 = load i32, ptr %42, align 4, !tbaa !9
  %3455 = sext i32 %3454 to i64
  %3456 = getelementptr inbounds double, ptr %3453, i64 %3455
  %3457 = load double, ptr %3456, align 8, !tbaa !11
  %3458 = load double, ptr %47, align 8, !tbaa !11
  %3459 = fadd double %3457, %3458
  %3460 = load ptr, ptr %15, align 8, !tbaa !5
  store double %3459, ptr %3460, align 8, !tbaa !11
  br label %3461

3461:                                             ; preds = %3452, %3442
  br label %3462

3462:                                             ; preds = %3461
  br label %3463

3463:                                             ; preds = %3462, %3202, %2637, %2356, %1907, %1271, %957, %603
  store i32 1, ptr %51, align 4
  br label %3464

3464:                                             ; preds = %3463, %83, %62
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #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: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #2

declare void @dlaed5_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

declare double @dlamch_(ptr noundef) #3

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

declare void @dlaed6_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

; 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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #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}
!36 = distinct !{!36, !14}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

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

; Function Attrs: nounwind uwtable
define dso_local void @dlaed4_(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) local_unnamed_addr #0 {
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca i32, align 4
  %12 = alloca [3 x double], align 16
  %13 = alloca i32, align 4
  %14 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #6
  %15 = getelementptr inbounds i8, ptr %4, i64 -8
  %16 = getelementptr inbounds i8, ptr %3, i64 -8
  %17 = getelementptr inbounds i8, ptr %2, i64 -8
  store i32 0, ptr %7, align 4, !tbaa !5
  %18 = load i32, ptr %0, align 4, !tbaa !5
  switch i32 %18, label %26 [
    i32 1, label %19
    i32 2, label %25
  ]

19:                                               ; preds = %8
  %20 = load double, ptr %2, align 8, !tbaa !9
  %21 = load double, ptr %5, align 8, !tbaa !9
  %22 = load double, ptr %3, align 8, !tbaa !9
  %23 = fmul double %21, %22
  %24 = tail call double @llvm.fmuladd.f64(double %23, double %22, double %20)
  store double %24, ptr %6, align 8, !tbaa !9
  store double 1.000000e+00, ptr %4, align 8, !tbaa !9
  br label %.loopexit

25:                                               ; preds = %8
  tail call void @dlaed5_(ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6) #6
  br label %.loopexit

26:                                               ; preds = %8
  %27 = tail call double @dlamch_(ptr noundef nonnull @.str) #6
  %28 = load double, ptr %5, align 8, !tbaa !9
  %29 = fdiv double 1.000000e+00, %28
  %30 = load i32, ptr %1, align 4, !tbaa !5
  %31 = load i32, ptr %0, align 4, !tbaa !5
  %32 = icmp eq i32 %30, %31
  br i1 %32, label %33, label %606

33:                                               ; preds = %26
  %34 = add i32 %30, -1
  %35 = fmul double %28, 5.000000e-01
  %.not13141448 = icmp slt i32 %30, 1
  br i1 %.not13141448, label %._crit_edge1458, label %.lr.ph1451

.lr.ph1451:                                       ; preds = %33
  %36 = zext nneg i32 %30 to i64
  %37 = getelementptr inbounds double, ptr %17, i64 %36
  %38 = add nuw i32 %30, 1
  %wide.trip.count1624 = zext i32 %38 to i64
  %39 = zext nneg i32 %30 to i64
  %min.iters.check1883 = icmp ult i32 %30, 12
  br i1 %min.iters.check1883, label %scalar.ph1882.preheader, label %vector.memcheck1870

vector.memcheck1870:                              ; preds = %.lr.ph1451
  %40 = shl nuw nsw i64 %wide.trip.count1624, 3
  %41 = add nsw i64 %40, -8
  %scevgep1871 = getelementptr i8, ptr %4, i64 %41
  %42 = shl nuw nsw i64 %36, 3
  %scevgep1872 = getelementptr i8, ptr %2, i64 %42
  %scevgep1873 = getelementptr i8, ptr %2, i64 %41
  %bound01874 = icmp ugt ptr %scevgep1872, %4
  %bound11875 = icmp ult ptr %37, %scevgep1871
  %found.conflict1876 = and i1 %bound01874, %bound11875
  %bound01877 = icmp ugt ptr %scevgep1873, %4
  %bound11878 = icmp ugt ptr %scevgep1871, %2
  %found.conflict1879 = and i1 %bound01877, %bound11878
  %conflict.rdx1880 = or i1 %found.conflict1876, %found.conflict1879
  br i1 %conflict.rdx1880, label %scalar.ph1882.preheader, label %vector.ph1884

vector.ph1884:                                    ; preds = %vector.memcheck1870
  %n.vec1886 = and i64 %39, 2147483644
  %ind.end1887 = or disjoint i64 %n.vec1886, 1
  %broadcast.splatinsert1898 = insertelement <2 x double> poison, double %35, i64 0
  %broadcast.splat1899 = shufflevector <2 x double> %broadcast.splatinsert1898, <2 x double> poison, <2 x i32> zeroinitializer
  %43 = load double, ptr %37, align 8, !tbaa !9, !alias.scope !11
  %broadcast.splatinsert1896 = insertelement <2 x double> poison, double %43, i64 0
  %broadcast.splat1897 = shufflevector <2 x double> %broadcast.splatinsert1896, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1889

vector.body1889:                                  ; preds = %vector.body1889, %vector.ph1884
  %index1890 = phi i64 [ 0, %vector.ph1884 ], [ %index.next1900, %vector.body1889 ]
  %44 = getelementptr double, ptr %2, i64 %index1890
  %45 = getelementptr inbounds i8, ptr %44, i64 16
  %wide.load1892 = load <2 x double>, ptr %44, align 8, !tbaa !9, !alias.scope !14
  %wide.load1893 = load <2 x double>, ptr %45, align 8, !tbaa !9, !alias.scope !14
  %46 = fsub <2 x double> %wide.load1892, %broadcast.splat1897
  %47 = fsub <2 x double> %wide.load1893, %broadcast.splat1897
  %48 = fsub <2 x double> %46, %broadcast.splat1899
  %49 = fsub <2 x double> %47, %broadcast.splat1899
  %50 = getelementptr double, ptr %4, i64 %index1890
  %51 = getelementptr inbounds i8, ptr %50, i64 16
  store <2 x double> %48, ptr %50, align 8, !tbaa !9, !alias.scope !16, !noalias !18
  store <2 x double> %49, ptr %51, align 8, !tbaa !9, !alias.scope !16, !noalias !18
  %index.next1900 = add nuw i64 %index1890, 4
  %52 = icmp eq i64 %index.next1900, %n.vec1886
  br i1 %52, label %middle.block1881, label %vector.body1889, !llvm.loop !19

middle.block1881:                                 ; preds = %vector.body1889
  %cmp.n1901 = icmp eq i64 %n.vec1886, %39
  br i1 %cmp.n1901, label %._crit_edge1452, label %scalar.ph1882.preheader

scalar.ph1882.preheader:                          ; preds = %middle.block1881, %vector.memcheck1870, %.lr.ph1451
  %indvars.iv1621.ph = phi i64 [ 1, %vector.memcheck1870 ], [ 1, %.lr.ph1451 ], [ %ind.end1887, %middle.block1881 ]
  %53 = zext nneg i32 %30 to i64
  %54 = and i32 %30, 1
  %lcmp.mod2056.not = icmp eq i32 %54, 0
  br i1 %lcmp.mod2056.not, label %scalar.ph1882.prol.loopexit, label %scalar.ph1882.prol

scalar.ph1882.prol:                               ; preds = %scalar.ph1882.preheader
  %55 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1621.ph
  %56 = load double, ptr %55, align 8, !tbaa !9
  %57 = load double, ptr %37, align 8, !tbaa !9
  %58 = fsub double %56, %57
  %59 = fsub double %58, %35
  %60 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1621.ph
  store double %59, ptr %60, align 8, !tbaa !9
  %indvars.iv.next1622.prol = add nuw nsw i64 %indvars.iv1621.ph, 1
  br label %scalar.ph1882.prol.loopexit

scalar.ph1882.prol.loopexit:                      ; preds = %scalar.ph1882.prol, %scalar.ph1882.preheader
  %indvars.iv1621.unr = phi i64 [ %indvars.iv1621.ph, %scalar.ph1882.preheader ], [ %indvars.iv.next1622.prol, %scalar.ph1882.prol ]
  %61 = icmp eq i64 %indvars.iv1621.ph, %53
  br i1 %61, label %._crit_edge1452, label %scalar.ph1882

scalar.ph1882:                                    ; preds = %scalar.ph1882.prol.loopexit, %scalar.ph1882
  %indvars.iv1621 = phi i64 [ %indvars.iv.next1622.1, %scalar.ph1882 ], [ %indvars.iv1621.unr, %scalar.ph1882.prol.loopexit ]
  %62 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1621
  %63 = load double, ptr %62, align 8, !tbaa !9
  %64 = load double, ptr %37, align 8, !tbaa !9
  %65 = fsub double %63, %64
  %66 = fsub double %65, %35
  %67 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1621
  store double %66, ptr %67, align 8, !tbaa !9
  %68 = getelementptr double, ptr %2, i64 %indvars.iv1621
  %69 = load double, ptr %68, align 8, !tbaa !9
  %70 = load double, ptr %37, align 8, !tbaa !9
  %71 = fsub double %69, %70
  %72 = fsub double %71, %35
  %73 = getelementptr double, ptr %4, i64 %indvars.iv1621
  store double %72, ptr %73, align 8, !tbaa !9
  %indvars.iv.next1622.1 = add nuw nsw i64 %indvars.iv1621, 2
  %exitcond1625.not.1 = icmp eq i64 %indvars.iv.next1622.1, %wide.trip.count1624
  br i1 %exitcond1625.not.1, label %._crit_edge1452, label %scalar.ph1882, !llvm.loop !23

._crit_edge1452:                                  ; preds = %scalar.ph1882.prol.loopexit, %scalar.ph1882, %middle.block1881
  %.not13151453 = icmp slt i32 %30, 3
  br i1 %.not13151453, label %._crit_edge1458, label %.lr.ph1457.preheader

.lr.ph1457.preheader:                             ; preds = %._crit_edge1452
  %wide.trip.count1629 = zext nneg i32 %34 to i64
  %74 = add nsw i64 %wide.trip.count1629, -1
  %75 = add nsw i64 %wide.trip.count1629, -2
  %xtraiter2058 = and i64 %74, 3
  %76 = icmp ult i64 %75, 3
  br i1 %76, label %._crit_edge1458.loopexit.unr-lcssa, label %.lr.ph1457.preheader.new

.lr.ph1457.preheader.new:                         ; preds = %.lr.ph1457.preheader
  %unroll_iter2062 = and i64 %74, -4
  br label %.lr.ph1457

.lr.ph1457:                                       ; preds = %.lr.ph1457, %.lr.ph1457.preheader.new
  %indvars.iv1626 = phi i64 [ 1, %.lr.ph1457.preheader.new ], [ %indvars.iv.next1627.3, %.lr.ph1457 ]
  %.01455 = phi double [ 0.000000e+00, %.lr.ph1457.preheader.new ], [ %104, %.lr.ph1457 ]
  %niter2063 = phi i64 [ 0, %.lr.ph1457.preheader.new ], [ %niter2063.next.3, %.lr.ph1457 ]
  %77 = getelementptr inbounds double, ptr %16, i64 %indvars.iv1626
  %78 = load double, ptr %77, align 8, !tbaa !9
  %79 = fmul double %78, %78
  %80 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1626
  %81 = load double, ptr %80, align 8, !tbaa !9
  %82 = fdiv double %79, %81
  %83 = fadd double %.01455, %82
  %84 = getelementptr double, ptr %3, i64 %indvars.iv1626
  %85 = load double, ptr %84, align 8, !tbaa !9
  %86 = fmul double %85, %85
  %87 = getelementptr double, ptr %4, i64 %indvars.iv1626
  %88 = load double, ptr %87, align 8, !tbaa !9
  %89 = fdiv double %86, %88
  %90 = fadd double %83, %89
  %indvars.iv.next1627.1 = add nuw nsw i64 %indvars.iv1626, 2
  %91 = getelementptr inbounds double, ptr %16, i64 %indvars.iv.next1627.1
  %92 = load double, ptr %91, align 8, !tbaa !9
  %93 = fmul double %92, %92
  %94 = getelementptr inbounds double, ptr %15, i64 %indvars.iv.next1627.1
  %95 = load double, ptr %94, align 8, !tbaa !9
  %96 = fdiv double %93, %95
  %97 = fadd double %90, %96
  %indvars.iv.next1627.2 = add nuw nsw i64 %indvars.iv1626, 3
  %98 = getelementptr inbounds double, ptr %16, i64 %indvars.iv.next1627.2
  %99 = load double, ptr %98, align 8, !tbaa !9
  %100 = fmul double %99, %99
  %101 = getelementptr inbounds double, ptr %15, i64 %indvars.iv.next1627.2
  %102 = load double, ptr %101, align 8, !tbaa !9
  %103 = fdiv double %100, %102
  %104 = fadd double %97, %103
  %indvars.iv.next1627.3 = add nuw nsw i64 %indvars.iv1626, 4
  %niter2063.next.3 = add i64 %niter2063, 4
  %niter2063.ncmp.3 = icmp eq i64 %niter2063.next.3, %unroll_iter2062
  br i1 %niter2063.ncmp.3, label %._crit_edge1458.loopexit.unr-lcssa, label %.lr.ph1457, !llvm.loop !24

._crit_edge1458.loopexit.unr-lcssa:               ; preds = %.lr.ph1457, %.lr.ph1457.preheader
  %.lcssa1979.ph = phi double [ poison, %.lr.ph1457.preheader ], [ %104, %.lr.ph1457 ]
  %indvars.iv1626.unr = phi i64 [ 1, %.lr.ph1457.preheader ], [ %indvars.iv.next1627.3, %.lr.ph1457 ]
  %.01455.unr = phi double [ 0.000000e+00, %.lr.ph1457.preheader ], [ %104, %.lr.ph1457 ]
  %lcmp.mod2060.not = icmp eq i64 %xtraiter2058, 0
  br i1 %lcmp.mod2060.not, label %._crit_edge1458, label %.lr.ph1457.epil

.lr.ph1457.epil:                                  ; preds = %._crit_edge1458.loopexit.unr-lcssa, %.lr.ph1457.epil
  %indvars.iv1626.epil = phi i64 [ %indvars.iv.next1627.epil, %.lr.ph1457.epil ], [ %indvars.iv1626.unr, %._crit_edge1458.loopexit.unr-lcssa ]
  %.01455.epil = phi double [ %111, %.lr.ph1457.epil ], [ %.01455.unr, %._crit_edge1458.loopexit.unr-lcssa ]
  %epil.iter2059 = phi i64 [ %epil.iter2059.next, %.lr.ph1457.epil ], [ 0, %._crit_edge1458.loopexit.unr-lcssa ]
  %105 = getelementptr inbounds double, ptr %16, i64 %indvars.iv1626.epil
  %106 = load double, ptr %105, align 8, !tbaa !9
  %107 = fmul double %106, %106
  %108 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1626.epil
  %109 = load double, ptr %108, align 8, !tbaa !9
  %110 = fdiv double %107, %109
  %111 = fadd double %.01455.epil, %110
  %indvars.iv.next1627.epil = add nuw nsw i64 %indvars.iv1626.epil, 1
  %epil.iter2059.next = add i64 %epil.iter2059, 1
  %epil.iter2059.cmp.not = icmp eq i64 %epil.iter2059.next, %xtraiter2058
  br i1 %epil.iter2059.cmp.not, label %._crit_edge1458, label %.lr.ph1457.epil, !llvm.loop !25

._crit_edge1458:                                  ; preds = %._crit_edge1458.loopexit.unr-lcssa, %.lr.ph1457.epil, %33, %._crit_edge1452
  %.0.lcssa = phi double [ 0.000000e+00, %._crit_edge1452 ], [ 0.000000e+00, %33 ], [ %.lcssa1979.ph, %._crit_edge1458.loopexit.unr-lcssa ], [ %111, %.lr.ph1457.epil ]
  %112 = fadd double %29, %.0.lcssa
  %113 = sext i32 %34 to i64
  %114 = getelementptr inbounds double, ptr %16, i64 %113
  %115 = load double, ptr %114, align 8, !tbaa !9
  %116 = getelementptr inbounds double, ptr %15, i64 %113
  %117 = load double, ptr %116, align 8, !tbaa !9
  %118 = sext i32 %30 to i64
  %119 = getelementptr inbounds double, ptr %16, i64 %118
  %120 = load double, ptr %119, align 8, !tbaa !9
  %121 = insertelement <2 x double> poison, double %120, i64 0
  %122 = insertelement <2 x double> %121, double %115, i64 1
  %123 = fmul <2 x double> %122, %122
  %124 = getelementptr inbounds double, ptr %15, i64 %118
  %125 = load double, ptr %124, align 8, !tbaa !9
  %126 = insertelement <2 x double> poison, double %125, i64 0
  %127 = insertelement <2 x double> %126, double %117, i64 1
  %128 = fdiv <2 x double> %123, %127
  %129 = extractelement <2 x double> %128, i64 1
  %130 = fadd double %112, %129
  %131 = extractelement <2 x double> %128, i64 0
  %132 = fadd double %130, %131
  %133 = fcmp ugt double %132, 0.000000e+00
  %134 = getelementptr inbounds double, ptr %17, i64 %118
  %135 = load double, ptr %134, align 8, !tbaa !9
  %136 = getelementptr inbounds double, ptr %17, i64 %113
  %137 = load double, ptr %136, align 8, !tbaa !9
  %138 = fsub double %135, %137
  br i1 %133, label %174, label %139

139:                                              ; preds = %._crit_edge1458
  %140 = load double, ptr %5, align 8, !tbaa !9
  %141 = fadd double %138, %140
  %142 = insertelement <2 x double> poison, double %140, i64 0
  %143 = insertelement <2 x double> %142, double %141, i64 1
  %144 = fdiv <2 x double> %123, %143
  %shift = shufflevector <2 x double> %144, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %145 = fadd <2 x double> %144, %shift
  %146 = extractelement <2 x double> %145, i64 0
  %147 = fcmp ugt double %112, %146
  br i1 %147, label %148, label %172

148:                                              ; preds = %139
  %149 = fneg double %112
  %150 = extractelement <2 x double> %123, i64 1
  %151 = tail call double @llvm.fmuladd.f64(double %149, double %138, double %150)
  %152 = tail call double @llvm.fmuladd.f64(double %120, double %120, double %151)
  %153 = extractelement <2 x double> %123, i64 0
  %154 = fmul double %153, %138
  %155 = fcmp olt double %152, 0.000000e+00
  br i1 %155, label %156, label %164

156:                                              ; preds = %148
  %157 = fmul double %154, 2.000000e+00
  %158 = fmul double %154, 4.000000e+00
  %159 = fmul double %112, %158
  %160 = tail call double @llvm.fmuladd.f64(double %152, double %152, double %159)
  %161 = tail call double @sqrt(double noundef %160) #6
  %162 = fsub double %161, %152
  %163 = fdiv double %157, %162
  br label %172

164:                                              ; preds = %148
  %165 = fmul double %154, 4.000000e+00
  %166 = fmul double %112, %165
  %167 = tail call double @llvm.fmuladd.f64(double %152, double %152, double %166)
  %168 = tail call double @sqrt(double noundef %167) #6
  %169 = fadd double %152, %168
  %170 = fmul double %112, 2.000000e+00
  %171 = fdiv double %169, %170
  br label %172

172:                                              ; preds = %139, %156, %164
  %.01174 = phi double [ %163, %156 ], [ %171, %164 ], [ %140, %139 ]
  %173 = load double, ptr %5, align 8, !tbaa !9
  br label %198

174:                                              ; preds = %._crit_edge1458
  %175 = fneg double %112
  %176 = extractelement <2 x double> %123, i64 1
  %177 = tail call double @llvm.fmuladd.f64(double %175, double %138, double %176)
  %178 = tail call double @llvm.fmuladd.f64(double %120, double %120, double %177)
  %179 = extractelement <2 x double> %123, i64 0
  %180 = fmul double %179, %138
  %181 = fcmp olt double %178, 0.000000e+00
  br i1 %181, label %182, label %190

182:                                              ; preds = %174
  %183 = fmul double %180, 2.000000e+00
  %184 = fmul double %180, 4.000000e+00
  %185 = fmul double %112, %184
  %186 = tail call double @llvm.fmuladd.f64(double %178, double %178, double %185)
  %187 = tail call double @sqrt(double noundef %186) #6
  %188 = fsub double %187, %178
  %189 = fdiv double %183, %188
  br label %198

190:                                              ; preds = %174
  %191 = fmul double %180, 4.000000e+00
  %192 = fmul double %112, %191
  %193 = tail call double @llvm.fmuladd.f64(double %178, double %178, double %192)
  %194 = tail call double @sqrt(double noundef %193) #6
  %195 = fadd double %178, %194
  %196 = fmul double %112, 2.000000e+00
  %197 = fdiv double %195, %196
  br label %198

198:                                              ; preds = %182, %190, %172
  %.01211 = phi double [ %35, %172 ], [ 0.000000e+00, %190 ], [ 0.000000e+00, %182 ]
  %.01203 = phi double [ %173, %172 ], [ %35, %190 ], [ %35, %182 ]
  %.21176 = phi double [ %.01174, %172 ], [ %197, %190 ], [ %189, %182 ]
  %199 = load i32, ptr %0, align 4, !tbaa !5
  %.not13161460 = icmp slt i32 %199, 1
  br i1 %.not13161460, label %.preheader, label %.lr.ph1463

.lr.ph1463:                                       ; preds = %198
  %200 = load i32, ptr %1, align 4, !tbaa !5
  %201 = sext i32 %200 to i64
  %202 = getelementptr inbounds double, ptr %17, i64 %201
  %203 = add nuw i32 %199, 1
  %wide.trip.count1634 = zext i32 %203 to i64
  %204 = zext nneg i32 %199 to i64
  %min.iters.check1915 = icmp ult i32 %199, 12
  br i1 %min.iters.check1915, label %scalar.ph1914.preheader, label %vector.memcheck1902

scalar.ph1914.preheader:                          ; preds = %middle.block1913, %vector.memcheck1902, %.lr.ph1463
  %indvars.iv1631.ph = phi i64 [ 1, %vector.memcheck1902 ], [ 1, %.lr.ph1463 ], [ %ind.end1919, %middle.block1913 ]
  %205 = zext nneg i32 %199 to i64
  %206 = and i32 %199, 1
  %lcmp.mod2065.not = icmp eq i32 %206, 0
  br i1 %lcmp.mod2065.not, label %scalar.ph1914.prol.loopexit, label %scalar.ph1914.prol

scalar.ph1914.prol:                               ; preds = %scalar.ph1914.preheader
  %207 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1631.ph
  %208 = load double, ptr %207, align 8, !tbaa !9
  %209 = load double, ptr %202, align 8, !tbaa !9
  %210 = fsub double %208, %209
  %211 = fsub double %210, %.21176
  %212 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1631.ph
  store double %211, ptr %212, align 8, !tbaa !9
  %indvars.iv.next1632.prol = add nuw nsw i64 %indvars.iv1631.ph, 1
  br label %scalar.ph1914.prol.loopexit

scalar.ph1914.prol.loopexit:                      ; preds = %scalar.ph1914.prol, %scalar.ph1914.preheader
  %indvars.iv1631.unr = phi i64 [ %indvars.iv1631.ph, %scalar.ph1914.preheader ], [ %indvars.iv.next1632.prol, %scalar.ph1914.prol ]
  %213 = icmp eq i64 %indvars.iv1631.ph, %205
  br i1 %213, label %.preheader, label %scalar.ph1914

vector.memcheck1902:                              ; preds = %.lr.ph1463
  %214 = shl nuw nsw i64 %wide.trip.count1634, 3
  %215 = add nsw i64 %214, -8
  %scevgep1903 = getelementptr i8, ptr %4, i64 %215
  %216 = shl nsw i64 %201, 3
  %scevgep1904 = getelementptr i8, ptr %2, i64 %216
  %scevgep1905 = getelementptr i8, ptr %2, i64 %215
  %bound01906 = icmp ugt ptr %scevgep1904, %4
  %bound11907 = icmp ult ptr %202, %scevgep1903
  %found.conflict1908 = and i1 %bound01906, %bound11907
  %bound01909 = icmp ugt ptr %scevgep1905, %4
  %bound11910 = icmp ugt ptr %scevgep1903, %2
  %found.conflict1911 = and i1 %bound01909, %bound11910
  %conflict.rdx1912 = or i1 %found.conflict1908, %found.conflict1911
  br i1 %conflict.rdx1912, label %scalar.ph1914.preheader, label %vector.ph1916

vector.ph1916:                                    ; preds = %vector.memcheck1902
  %n.vec1918 = and i64 %204, 2147483644
  %ind.end1919 = or disjoint i64 %n.vec1918, 1
  %broadcast.splatinsert1930 = insertelement <2 x double> poison, double %.21176, i64 0
  %broadcast.splat1931 = shufflevector <2 x double> %broadcast.splatinsert1930, <2 x double> poison, <2 x i32> zeroinitializer
  %217 = load double, ptr %202, align 8, !tbaa !9, !alias.scope !27
  %broadcast.splatinsert1928 = insertelement <2 x double> poison, double %217, i64 0
  %broadcast.splat1929 = shufflevector <2 x double> %broadcast.splatinsert1928, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1921

vector.body1921:                                  ; preds = %vector.body1921, %vector.ph1916
  %index1922 = phi i64 [ 0, %vector.ph1916 ], [ %index.next1932, %vector.body1921 ]
  %218 = getelementptr double, ptr %2, i64 %index1922
  %219 = getelementptr inbounds i8, ptr %218, i64 16
  %wide.load1924 = load <2 x double>, ptr %218, align 8, !tbaa !9, !alias.scope !30
  %wide.load1925 = load <2 x double>, ptr %219, align 8, !tbaa !9, !alias.scope !30
  %220 = fsub <2 x double> %wide.load1924, %broadcast.splat1929
  %221 = fsub <2 x double> %wide.load1925, %broadcast.splat1929
  %222 = fsub <2 x double> %220, %broadcast.splat1931
  %223 = fsub <2 x double> %221, %broadcast.splat1931
  %224 = getelementptr double, ptr %4, i64 %index1922
  %225 = getelementptr inbounds i8, ptr %224, i64 16
  store <2 x double> %222, ptr %224, align 8, !tbaa !9, !alias.scope !32, !noalias !34
  store <2 x double> %223, ptr %225, align 8, !tbaa !9, !alias.scope !32, !noalias !34
  %index.next1932 = add nuw i64 %index1922, 4
  %226 = icmp eq i64 %index.next1932, %n.vec1918
  br i1 %226, label %middle.block1913, label %vector.body1921, !llvm.loop !35

middle.block1913:                                 ; preds = %vector.body1921
  %cmp.n1933 = icmp eq i64 %n.vec1918, %204
  br i1 %cmp.n1933, label %.preheader, label %scalar.ph1914.preheader

.preheader:                                       ; preds = %scalar.ph1914.prol.loopexit, %scalar.ph1914, %middle.block1913, %198
  %.not1317.not1464 = icmp sgt i32 %30, 1
  br i1 %.not1317.not1464, label %.lr.ph1469.preheader, label %._crit_edge1470

.lr.ph1469.preheader:                             ; preds = %.preheader
  %wide.trip.count1639 = zext nneg i32 %30 to i64
  %227 = add nsw i64 %wide.trip.count1639, -1
  %xtraiter2067 = and i64 %227, 1
  %228 = icmp eq i32 %30, 2
  br i1 %228, label %._crit_edge1470.loopexit.unr-lcssa, label %.lr.ph1469.preheader.new

.lr.ph1469.preheader.new:                         ; preds = %.lr.ph1469.preheader
  %unroll_iter2074 = and i64 %227, -2
  br label %.lr.ph1469

scalar.ph1914:                                    ; preds = %scalar.ph1914.prol.loopexit, %scalar.ph1914
  %indvars.iv1631 = phi i64 [ %indvars.iv.next1632.1, %scalar.ph1914 ], [ %indvars.iv1631.unr, %scalar.ph1914.prol.loopexit ]
  %229 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1631
  %230 = load double, ptr %229, align 8, !tbaa !9
  %231 = load double, ptr %202, align 8, !tbaa !9
  %232 = fsub double %230, %231
  %233 = fsub double %232, %.21176
  %234 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1631
  store double %233, ptr %234, align 8, !tbaa !9
  %235 = getelementptr double, ptr %2, i64 %indvars.iv1631
  %236 = load double, ptr %235, align 8, !tbaa !9
  %237 = load double, ptr %202, align 8, !tbaa !9
  %238 = fsub double %236, %237
  %239 = fsub double %238, %.21176
  %240 = getelementptr double, ptr %4, i64 %indvars.iv1631
  store double %239, ptr %240, align 8, !tbaa !9
  %indvars.iv.next1632.1 = add nuw nsw i64 %indvars.iv1631, 2
  %exitcond1635.not.1 = icmp eq i64 %indvars.iv.next1632.1, %wide.trip.count1634
  br i1 %exitcond1635.not.1, label %.preheader, label %scalar.ph1914, !llvm.loop !36

.lr.ph1469:                                       ; preds = %.lr.ph1469, %.lr.ph1469.preheader.new
  %indvars.iv1636 = phi i64 [ 1, %.lr.ph1469.preheader.new ], [ %indvars.iv.next1637.1, %.lr.ph1469 ]
  %.011871467 = phi double [ 0.000000e+00, %.lr.ph1469.preheader.new ], [ %263, %.lr.ph1469 ]
  %241 = phi <2 x double> [ zeroinitializer, %.lr.ph1469.preheader.new ], [ %261, %.lr.ph1469 ]
  %niter2075 = phi i64 [ 0, %.lr.ph1469.preheader.new ], [ %niter2075.next.1, %.lr.ph1469 ]
  %242 = getelementptr inbounds double, ptr %16, i64 %indvars.iv1636
  %243 = load double, ptr %242, align 8, !tbaa !9
  %244 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1636
  %245 = load double, ptr %244, align 8, !tbaa !9
  %246 = fdiv double %243, %245
  %247 = insertelement <2 x double> poison, double %243, i64 0
  %248 = insertelement <2 x double> %247, double %246, i64 1
  %249 = shufflevector <2 x double> %248, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %250 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %248, <2 x double> %249, <2 x double> %241)
  %251 = extractelement <2 x double> %250, i64 0
  %252 = fadd double %.011871467, %251
  %253 = getelementptr double, ptr %3, i64 %indvars.iv1636
  %254 = load double, ptr %253, align 8, !tbaa !9
  %255 = getelementptr double, ptr %4, i64 %indvars.iv1636
  %256 = load double, ptr %255, align 8, !tbaa !9
  %257 = fdiv double %254, %256
  %258 = insertelement <2 x double> poison, double %254, i64 0
  %259 = insertelement <2 x double> %258, double %257, i64 1
  %260 = shufflevector <2 x double> %259, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %261 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %259, <2 x double> %260, <2 x double> %250)
  %262 = extractelement <2 x double> %261, i64 0
  %263 = fadd double %252, %262
  %indvars.iv.next1637.1 = add nuw nsw i64 %indvars.iv1636, 2
  %niter2075.next.1 = add i64 %niter2075, 2
  %niter2075.ncmp.1 = icmp eq i64 %niter2075.next.1, %unroll_iter2074
  br i1 %niter2075.ncmp.1, label %._crit_edge1470.loopexit.unr-lcssa.loopexit, label %.lr.ph1469, !llvm.loop !37

._crit_edge1470.loopexit.unr-lcssa.loopexit:      ; preds = %.lr.ph1469
  %264 = extractelement <2 x double> %261, i64 1
  br label %._crit_edge1470.loopexit.unr-lcssa

._crit_edge1470.loopexit.unr-lcssa:               ; preds = %._crit_edge1470.loopexit.unr-lcssa.loopexit, %.lr.ph1469.preheader
  %.lcssa1978.ph = phi double [ poison, %.lr.ph1469.preheader ], [ %262, %._crit_edge1470.loopexit.unr-lcssa.loopexit ]
  %.lcssa1977.ph = phi double [ poison, %.lr.ph1469.preheader ], [ %263, %._crit_edge1470.loopexit.unr-lcssa.loopexit ]
  %.lcssa1976.ph = phi double [ poison, %.lr.ph1469.preheader ], [ %264, %._crit_edge1470.loopexit.unr-lcssa.loopexit ]
  %indvars.iv1636.unr = phi i64 [ 1, %.lr.ph1469.preheader ], [ %indvars.iv.next1637.1, %._crit_edge1470.loopexit.unr-lcssa.loopexit ]
  %.011871467.unr = phi double [ 0.000000e+00, %.lr.ph1469.preheader ], [ %263, %._crit_edge1470.loopexit.unr-lcssa.loopexit ]
  %.unr2069 = phi <2 x double> [ zeroinitializer, %.lr.ph1469.preheader ], [ %261, %._crit_edge1470.loopexit.unr-lcssa.loopexit ]
  %lcmp.mod2070.not = icmp eq i64 %xtraiter2067, 0
  br i1 %lcmp.mod2070.not, label %._crit_edge1470, label %.lr.ph1469.epil

.lr.ph1469.epil:                                  ; preds = %._crit_edge1470.loopexit.unr-lcssa
  %265 = getelementptr inbounds double, ptr %16, i64 %indvars.iv1636.unr
  %266 = load double, ptr %265, align 8, !tbaa !9
  %267 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1636.unr
  %268 = load double, ptr %267, align 8, !tbaa !9
  %269 = fdiv double %266, %268
  %270 = insertelement <2 x double> poison, double %266, i64 0
  %271 = insertelement <2 x double> %270, double %269, i64 1
  %272 = shufflevector <2 x double> %271, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %273 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %271, <2 x double> %272, <2 x double> %.unr2069)
  %274 = extractelement <2 x double> %273, i64 0
  %275 = fadd double %.011871467.unr, %274
  %276 = extractelement <2 x double> %273, i64 1
  br label %._crit_edge1470

._crit_edge1470:                                  ; preds = %.lr.ph1469.epil, %._crit_edge1470.loopexit.unr-lcssa, %.preheader
  %.01232.lcssa = phi double [ 0.000000e+00, %.preheader ], [ %.lcssa1976.ph, %._crit_edge1470.loopexit.unr-lcssa ], [ %276, %.lr.ph1469.epil ]
  %.01187.lcssa = phi double [ 0.000000e+00, %.preheader ], [ %.lcssa1977.ph, %._crit_edge1470.loopexit.unr-lcssa ], [ %275, %.lr.ph1469.epil ]
  %.1.lcssa = phi double [ 0.000000e+00, %.preheader ], [ %.lcssa1978.ph, %._crit_edge1470.loopexit.unr-lcssa ], [ %274, %.lr.ph1469.epil ]
  %277 = fcmp oge double %.01187.lcssa, 0.000000e+00
  %278 = fneg double %.01187.lcssa
  %279 = select i1 %277, double %.01187.lcssa, double %278
  %280 = sext i32 %199 to i64
  %281 = getelementptr inbounds double, ptr %16, i64 %280
  %282 = load double, ptr %281, align 8, !tbaa !9
  %283 = getelementptr inbounds double, ptr %15, i64 %280
  %284 = load double, ptr %283, align 8, !tbaa !9
  %285 = fdiv double %282, %284
  %286 = fmul double %282, %285
  %287 = fmul double %285, %285
  %288 = fneg double %286
  %289 = fsub double %288, %.1.lcssa
  %290 = tail call double @llvm.fmuladd.f64(double %289, double 8.000000e+00, double %279)
  %291 = fsub double %290, %286
  %292 = fadd double %29, %291
  %293 = fcmp oge double %.21176, 0.000000e+00
  %294 = fneg double %.21176
  %295 = select i1 %293, double %.21176, double %294
  %296 = fadd double %.01232.lcssa, %287
  %297 = tail call double @llvm.fmuladd.f64(double %295, double %296, double %292)
  %298 = fadd double %29, %286
  %299 = fadd double %.1.lcssa, %298
  %300 = fcmp oge double %299, 0.000000e+00
  %301 = fneg double %299
  %302 = select i1 %300, double %299, double %301
  %303 = fmul double %27, %297
  %304 = fcmp ugt double %302, %303
  br i1 %304, label %311, label %305

305:                                              ; preds = %._crit_edge1470
  %306 = load i32, ptr %1, align 4, !tbaa !5
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds double, ptr %17, i64 %307
  %309 = load double, ptr %308, align 8, !tbaa !9
  %310 = fadd double %.21176, %309
  store double %310, ptr %6, align 8, !tbaa !9
  br label %.loopexit

311:                                              ; preds = %._crit_edge1470
  %312 = fcmp ugt double %299, 0.000000e+00
  br i1 %312, label %316, label %313

313:                                              ; preds = %311
  %314 = fcmp oge double %.01211, %.21176
  %315 = select i1 %314, double %.01211, double %.21176
  br label %thread-pre-split

316:                                              ; preds = %311
  %317 = fcmp ole double %.01203, %.21176
  %318 = select i1 %317, double %.01203, double %.21176
  br label %thread-pre-split

thread-pre-split:                                 ; preds = %316, %313
  %.11212 = phi double [ %315, %313 ], [ %.01211, %316 ]
  %.11204 = phi double [ %.01203, %313 ], [ %318, %316 ]
  %319 = getelementptr i8, ptr %283, i64 -8
  %320 = load double, ptr %319, align 8, !tbaa !9
  %321 = fneg double %320
  %322 = tail call double @llvm.fmuladd.f64(double %321, double %.01232.lcssa, double %299)
  %323 = fneg double %284
  %324 = tail call double @llvm.fmuladd.f64(double %323, double %287, double %322)
  %325 = fadd double %284, %320
  %326 = fmul double %284, %320
  %327 = fneg double %326
  %328 = fmul double %296, %327
  %329 = tail call double @llvm.fmuladd.f64(double %325, double %299, double %328)
  %330 = fmul double %299, %326
  %331 = fcmp olt double %324, 0.000000e+00
  %332 = fneg double %324
  %333 = select i1 %331, double %332, double %324
  %334 = fcmp oeq double %324, 0.000000e+00
  br i1 %334, label %335, label %337

335:                                              ; preds = %thread-pre-split
  %336 = fsub double %.11204, %.21176
  br label %361

337:                                              ; preds = %thread-pre-split
  %338 = fcmp ult double %329, 0.000000e+00
  br i1 %338, label %350, label %339

339:                                              ; preds = %337
  %340 = fmul double %330, -4.000000e+00
  %341 = fmul double %340, %333
  %342 = tail call double @llvm.fmuladd.f64(double %329, double %329, double %341)
  %343 = fcmp oge double %342, 0.000000e+00
  %344 = fneg double %342
  %345 = select i1 %343, double %342, double %344
  %346 = tail call double @sqrt(double noundef %345) #6
  %347 = fadd double %329, %346
  %348 = fmul double %333, 2.000000e+00
  %349 = fdiv double %347, %348
  br label %361

350:                                              ; preds = %337
  %351 = fmul double %330, 2.000000e+00
  %352 = fmul double %330, -4.000000e+00
  %353 = fmul double %352, %333
  %354 = tail call double @llvm.fmuladd.f64(double %329, double %329, double %353)
  %355 = fcmp oge double %354, 0.000000e+00
  %356 = fneg double %354
  %357 = select i1 %355, double %354, double %356
  %358 = tail call double @sqrt(double noundef %357) #6
  %359 = fsub double %329, %358
  %360 = fdiv double %351, %359
  br label %361

361:                                              ; preds = %339, %350, %335
  %362 = phi double [ %349, %339 ], [ %360, %350 ], [ %336, %335 ]
  %363 = fmul double %299, %362
  %364 = fcmp ogt double %363, 0.000000e+00
  %365 = fdiv double %301, %296
  %366 = select i1 %364, double %365, double %362
  %367 = fadd double %.21176, %366
  %368 = fcmp ogt double %367, %.11204
  %369 = fcmp olt double %367, %.11212
  %or.cond = select i1 %368, i1 true, i1 %369
  br i1 %or.cond, label %370, label %378

370:                                              ; preds = %361
  %371 = fcmp olt double %299, 0.000000e+00
  br i1 %371, label %372, label %375

372:                                              ; preds = %370
  %373 = fsub double %.11204, %.21176
  %374 = fmul double %373, 5.000000e-01
  br label %378

375:                                              ; preds = %370
  %376 = fsub double %.11212, %.21176
  %377 = fmul double %376, 5.000000e-01
  br label %378

378:                                              ; preds = %361, %372, %375
  %379 = phi double [ %366, %361 ], [ %374, %372 ], [ %377, %375 ]
  %380 = load i32, ptr %0, align 4, !tbaa !5
  %.not13181474 = icmp slt i32 %380, 1
  br i1 %.not13181474, label %._crit_edge1478, label %.lr.ph1477

.lr.ph1477:                                       ; preds = %378
  %381 = add nuw i32 %380, 1
  %wide.trip.count1644 = zext i32 %381 to i64
  %382 = zext nneg i32 %380 to i64
  %min.iters.check1936 = icmp ult i32 %380, 4
  br i1 %min.iters.check1936, label %scalar.ph1935.preheader, label %vector.ph1937

vector.ph1937:                                    ; preds = %.lr.ph1477
  %n.vec1939 = and i64 %382, 2147483644
  %ind.end1940 = or disjoint i64 %n.vec1939, 1
  %broadcast.splatinsert1947 = insertelement <2 x double> poison, double %379, i64 0
  %broadcast.splat1948 = shufflevector <2 x double> %broadcast.splatinsert1947, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1942

vector.body1942:                                  ; preds = %vector.body1942, %vector.ph1937
  %index1943 = phi i64 [ 0, %vector.ph1937 ], [ %index.next1949, %vector.body1942 ]
  %383 = getelementptr double, ptr %4, i64 %index1943
  %384 = getelementptr inbounds i8, ptr %383, i64 16
  %wide.load1945 = load <2 x double>, ptr %383, align 8, !tbaa !9
  %wide.load1946 = load <2 x double>, ptr %384, align 8, !tbaa !9
  %385 = fsub <2 x double> %wide.load1945, %broadcast.splat1948
  %386 = fsub <2 x double> %wide.load1946, %broadcast.splat1948
  store <2 x double> %385, ptr %383, align 8, !tbaa !9
  store <2 x double> %386, ptr %384, align 8, !tbaa !9
  %index.next1949 = add nuw i64 %index1943, 4
  %387 = icmp eq i64 %index.next1949, %n.vec1939
  br i1 %387, label %middle.block1934, label %vector.body1942, !llvm.loop !38

middle.block1934:                                 ; preds = %vector.body1942
  %cmp.n1950 = icmp eq i64 %n.vec1939, %382
  br i1 %cmp.n1950, label %._crit_edge1478, label %scalar.ph1935.preheader

scalar.ph1935.preheader:                          ; preds = %middle.block1934, %.lr.ph1477
  %indvars.iv1641.ph = phi i64 [ 1, %.lr.ph1477 ], [ %ind.end1940, %middle.block1934 ]
  br label %scalar.ph1935

scalar.ph1935:                                    ; preds = %scalar.ph1935.preheader, %scalar.ph1935
  %indvars.iv1641 = phi i64 [ %indvars.iv.next1642, %scalar.ph1935 ], [ %indvars.iv1641.ph, %scalar.ph1935.preheader ]
  %388 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1641
  %389 = load double, ptr %388, align 8, !tbaa !9
  %390 = fsub double %389, %379
  store double %390, ptr %388, align 8, !tbaa !9
  %indvars.iv.next1642 = add nuw nsw i64 %indvars.iv1641, 1
  %exitcond1645.not = icmp eq i64 %indvars.iv.next1642, %wide.trip.count1644
  br i1 %exitcond1645.not, label %._crit_edge1478, label %scalar.ph1935, !llvm.loop !39

._crit_edge1478:                                  ; preds = %scalar.ph1935, %middle.block1934, %378
  %391 = fadd double %.21176, %379
  br i1 %.not1317.not1464, label %.lr.ph1485.preheader, label %.lr.ph1523

.lr.ph1485.preheader:                             ; preds = %._crit_edge1478
  %wide.trip.count1649 = zext nneg i32 %30 to i64
  %392 = add nsw i64 %wide.trip.count1649, -1
  %xtraiter2076 = and i64 %392, 1
  %393 = icmp eq i32 %30, 2
  br i1 %393, label %.lr.ph1523.loopexit.unr-lcssa, label %.lr.ph1485.preheader.new

.lr.ph1485.preheader.new:                         ; preds = %.lr.ph1485.preheader
  %unroll_iter2083 = and i64 %392, -2
  br label %.lr.ph1485

.lr.ph1485:                                       ; preds = %.lr.ph1485, %.lr.ph1485.preheader.new
  %indvars.iv1646 = phi i64 [ 1, %.lr.ph1485.preheader.new ], [ %indvars.iv.next1647.1, %.lr.ph1485 ]
  %.111881482 = phi double [ 0.000000e+00, %.lr.ph1485.preheader.new ], [ %416, %.lr.ph1485 ]
  %394 = phi <2 x double> [ zeroinitializer, %.lr.ph1485.preheader.new ], [ %414, %.lr.ph1485 ]
  %niter2084 = phi i64 [ 0, %.lr.ph1485.preheader.new ], [ %niter2084.next.1, %.lr.ph1485 ]
  %395 = getelementptr inbounds double, ptr %16, i64 %indvars.iv1646
  %396 = load double, ptr %395, align 8, !tbaa !9
  %397 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1646
  %398 = load double, ptr %397, align 8, !tbaa !9
  %399 = fdiv double %396, %398
  %400 = insertelement <2 x double> poison, double %396, i64 0
  %401 = insertelement <2 x double> %400, double %399, i64 1
  %402 = shufflevector <2 x double> %401, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %403 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %401, <2 x double> %402, <2 x double> %394)
  %404 = extractelement <2 x double> %403, i64 0
  %405 = fadd double %.111881482, %404
  %406 = getelementptr double, ptr %3, i64 %indvars.iv1646
  %407 = load double, ptr %406, align 8, !tbaa !9
  %408 = getelementptr double, ptr %4, i64 %indvars.iv1646
  %409 = load double, ptr %408, align 8, !tbaa !9
  %410 = fdiv double %407, %409
  %411 = insertelement <2 x double> poison, double %407, i64 0
  %412 = insertelement <2 x double> %411, double %410, i64 1
  %413 = shufflevector <2 x double> %412, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %414 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %412, <2 x double> %413, <2 x double> %403)
  %415 = extractelement <2 x double> %414, i64 0
  %416 = fadd double %405, %415
  %indvars.iv.next1647.1 = add nuw nsw i64 %indvars.iv1646, 2
  %niter2084.next.1 = add i64 %niter2084, 2
  %niter2084.ncmp.1 = icmp eq i64 %niter2084.next.1, %unroll_iter2083
  br i1 %niter2084.ncmp.1, label %.lr.ph1523.loopexit.unr-lcssa.loopexit, label %.lr.ph1485, !llvm.loop !40

.lr.ph1523.loopexit.unr-lcssa.loopexit:           ; preds = %.lr.ph1485
  %417 = extractelement <2 x double> %414, i64 1
  br label %.lr.ph1523.loopexit.unr-lcssa

.lr.ph1523.loopexit.unr-lcssa:                    ; preds = %.lr.ph1523.loopexit.unr-lcssa.loopexit, %.lr.ph1485.preheader
  %.lcssa1975.ph = phi double [ poison, %.lr.ph1485.preheader ], [ %415, %.lr.ph1523.loopexit.unr-lcssa.loopexit ]
  %.lcssa1974.ph = phi double [ poison, %.lr.ph1485.preheader ], [ %416, %.lr.ph1523.loopexit.unr-lcssa.loopexit ]
  %.lcssa1973.ph = phi double [ poison, %.lr.ph1485.preheader ], [ %417, %.lr.ph1523.loopexit.unr-lcssa.loopexit ]
  %indvars.iv1646.unr = phi i64 [ 1, %.lr.ph1485.preheader ], [ %indvars.iv.next1647.1, %.lr.ph1523.loopexit.unr-lcssa.loopexit ]
  %.111881482.unr = phi double [ 0.000000e+00, %.lr.ph1485.preheader ], [ %416, %.lr.ph1523.loopexit.unr-lcssa.loopexit ]
  %.unr2078 = phi <2 x double> [ zeroinitializer, %.lr.ph1485.preheader ], [ %414, %.lr.ph1523.loopexit.unr-lcssa.loopexit ]
  %lcmp.mod2079.not = icmp eq i64 %xtraiter2076, 0
  br i1 %lcmp.mod2079.not, label %.lr.ph1523, label %.lr.ph1485.epil

.lr.ph1485.epil:                                  ; preds = %.lr.ph1523.loopexit.unr-lcssa
  %418 = getelementptr inbounds double, ptr %16, i64 %indvars.iv1646.unr
  %419 = load double, ptr %418, align 8, !tbaa !9
  %420 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1646.unr
  %421 = load double, ptr %420, align 8, !tbaa !9
  %422 = fdiv double %419, %421
  %423 = insertelement <2 x double> poison, double %419, i64 0
  %424 = insertelement <2 x double> %423, double %422, i64 1
  %425 = shufflevector <2 x double> %424, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %426 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %424, <2 x double> %425, <2 x double> %.unr2078)
  %427 = extractelement <2 x double> %426, i64 0
  %428 = fadd double %.111881482.unr, %427
  %429 = extractelement <2 x double> %426, i64 1
  br label %.lr.ph1523

.lr.ph1523:                                       ; preds = %.lr.ph1485.epil, %.lr.ph1523.loopexit.unr-lcssa, %._crit_edge1478
  %.11233.lcssa = phi double [ 0.000000e+00, %._crit_edge1478 ], [ %.lcssa1973.ph, %.lr.ph1523.loopexit.unr-lcssa ], [ %429, %.lr.ph1485.epil ]
  %.11188.lcssa = phi double [ 0.000000e+00, %._crit_edge1478 ], [ %.lcssa1974.ph, %.lr.ph1523.loopexit.unr-lcssa ], [ %428, %.lr.ph1485.epil ]
  %.2.lcssa = phi double [ 0.000000e+00, %._crit_edge1478 ], [ %.lcssa1975.ph, %.lr.ph1523.loopexit.unr-lcssa ], [ %427, %.lr.ph1485.epil ]
  %430 = sext i32 %380 to i64
  %431 = getelementptr inbounds double, ptr %16, i64 %430
  %432 = load double, ptr %431, align 8, !tbaa !9
  %433 = getelementptr inbounds double, ptr %15, i64 %430
  %434 = load double, ptr %433, align 8, !tbaa !9
  %435 = fdiv double %432, %434
  %436 = fmul double %432, %435
  %437 = fadd double %29, %436
  %438 = fadd double %.2.lcssa, %437
  %439 = fcmp oge double %391, 0.000000e+00
  %440 = fneg double %391
  %441 = select i1 %439, double %391, double %440
  %442 = fmul double %435, %435
  %443 = fadd double %.11233.lcssa, %442
  %444 = fneg double %436
  %445 = fsub double %444, %.2.lcssa
  %446 = fcmp oge double %.11188.lcssa, 0.000000e+00
  %447 = fneg double %.11188.lcssa
  %448 = select i1 %446, double %.11188.lcssa, double %447
  %449 = tail call double @llvm.fmuladd.f64(double %445, double 8.000000e+00, double %448)
  %450 = fsub double %449, %436
  %451 = fadd double %29, %450
  %452 = tail call double @llvm.fmuladd.f64(double %441, double %443, double %451)
  %invariant.gep = getelementptr i8, ptr %4, i64 -16
  %wide.trip.count1659 = zext i32 %30 to i64
  %453 = add nsw i64 %wide.trip.count1659, -1
  %xtraiter2085 = and i64 %453, 1
  %454 = icmp eq i32 %30, 2
  %unroll_iter2092 = and i64 %453, -2
  %lcmp.mod2088.not = icmp eq i64 %xtraiter2085, 0
  br label %455

455:                                              ; preds = %.lr.ph1523, %._crit_edge1502
  %456 = phi double [ %434, %.lr.ph1523 ], [ %585, %._crit_edge1502 ]
  %457 = phi i32 [ %380, %.lr.ph1523 ], [ %530, %._crit_edge1502 ]
  %storemerge13201521 = phi i32 [ 3, %.lr.ph1523 ], [ %storemerge1320, %._crit_edge1502 ]
  %.311771520 = phi double [ %391, %.lr.ph1523 ], [ %541, %._crit_edge1502 ]
  %.211891519 = phi double [ %452, %.lr.ph1523 ], [ %598, %._crit_edge1502 ]
  %.212051518 = phi double [ %.11204, %.lr.ph1523 ], [ %.31206, %._crit_edge1502 ]
  %.212131517 = phi double [ %.11212, %.lr.ph1523 ], [ %.31214, %._crit_edge1502 ]
  %.212341516 = phi double [ %.11233.lcssa, %.lr.ph1523 ], [ %.31235.lcssa, %._crit_edge1502 ]
  %.012421515 = phi double [ %442, %.lr.ph1523 ], [ %588, %._crit_edge1502 ]
  %storemerge13211514 = phi double [ %438, %.lr.ph1523 ], [ %600, %._crit_edge1502 ]
  %458 = fcmp oge double %storemerge13211514, 0.000000e+00
  %459 = fneg double %storemerge13211514
  %460 = select i1 %458, double %storemerge13211514, double %459
  %461 = fmul double %27, %.211891519
  %462 = fcmp ugt double %460, %461
  br i1 %462, label %469, label %463

463:                                              ; preds = %455
  %464 = load i32, ptr %1, align 4, !tbaa !5
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds double, ptr %17, i64 %465
  %467 = load double, ptr %466, align 8, !tbaa !9
  %468 = fadd double %.311771520, %467
  store double %468, ptr %6, align 8, !tbaa !9
  br label %.loopexit

469:                                              ; preds = %455
  %470 = fcmp ugt double %storemerge13211514, 0.000000e+00
  br i1 %470, label %474, label %471

471:                                              ; preds = %469
  %472 = fcmp oge double %.212131517, %.311771520
  %473 = select i1 %472, double %.212131517, double %.311771520
  br label %477

474:                                              ; preds = %469
  %475 = fcmp ole double %.212051518, %.311771520
  %476 = select i1 %475, double %.212051518, double %.311771520
  br label %477

477:                                              ; preds = %474, %471
  %.31214 = phi double [ %473, %471 ], [ %.212131517, %474 ]
  %.31206 = phi double [ %.212051518, %471 ], [ %476, %474 ]
  %478 = sext i32 %457 to i64
  %gep = getelementptr double, ptr %invariant.gep, i64 %478
  %479 = load double, ptr %gep, align 8, !tbaa !9
  %480 = fneg double %479
  %481 = tail call double @llvm.fmuladd.f64(double %480, double %.212341516, double %storemerge13211514)
  %482 = fneg double %456
  %483 = tail call double @llvm.fmuladd.f64(double %482, double %.012421515, double %481)
  %484 = fadd double %479, %456
  %485 = fmul double %479, %456
  %486 = fadd double %.012421515, %.212341516
  %487 = fneg double %485
  %488 = fmul double %486, %487
  %489 = tail call double @llvm.fmuladd.f64(double %484, double %storemerge13211514, double %488)
  %490 = fmul double %storemerge13211514, %485
  %491 = fcmp ult double %489, 0.000000e+00
  br i1 %491, label %503, label %492

492:                                              ; preds = %477
  %493 = fmul double %490, -4.000000e+00
  %494 = fmul double %483, %493
  %495 = tail call double @llvm.fmuladd.f64(double %489, double %489, double %494)
  %496 = fcmp oge double %495, 0.000000e+00
  %497 = fneg double %495
  %498 = select i1 %496, double %495, double %497
  %499 = tail call double @sqrt(double noundef %498) #6
  %500 = fadd double %489, %499
  %501 = fmul double %483, 2.000000e+00
  %502 = fdiv double %500, %501
  br label %514

503:                                              ; preds = %477
  %504 = fmul double %490, 2.000000e+00
  %505 = fmul double %490, -4.000000e+00
  %506 = fmul double %483, %505
  %507 = tail call double @llvm.fmuladd.f64(double %489, double %489, double %506)
  %508 = fcmp oge double %507, 0.000000e+00
  %509 = fneg double %507
  %510 = select i1 %508, double %507, double %509
  %511 = tail call double @sqrt(double noundef %510) #6
  %512 = fsub double %489, %511
  %513 = fdiv double %504, %512
  br label %514

514:                                              ; preds = %503, %492
  %storemerge1322 = phi double [ %513, %503 ], [ %502, %492 ]
  %515 = fmul double %storemerge1322, %storemerge13211514
  %516 = fcmp ogt double %515, 0.000000e+00
  %517 = fdiv double %459, %486
  %storemerge13221512 = select i1 %516, double %517, double %storemerge1322
  %518 = fadd double %.311771520, %storemerge13221512
  %519 = fcmp ogt double %518, %.31206
  %520 = fcmp olt double %518, %.31214
  %or.cond1325 = select i1 %519, i1 true, i1 %520
  br i1 %or.cond1325, label %521, label %529

521:                                              ; preds = %514
  %522 = fcmp olt double %storemerge13211514, 0.000000e+00
  br i1 %522, label %523, label %526

523:                                              ; preds = %521
  %524 = fsub double %.31206, %.311771520
  %525 = fmul double %524, 5.000000e-01
  br label %529

526:                                              ; preds = %521
  %527 = fsub double %.31214, %.311771520
  %528 = fmul double %527, 5.000000e-01
  br label %529

529:                                              ; preds = %514, %523, %526
  %storemerge13221511 = phi double [ %storemerge13221512, %514 ], [ %525, %523 ], [ %528, %526 ]
  %530 = load i32, ptr %0, align 4, !tbaa !5
  %.not13231490 = icmp slt i32 %530, 1
  br i1 %.not13231490, label %._crit_edge1494, label %.lr.ph1493.preheader

.lr.ph1493.preheader:                             ; preds = %529
  %531 = add nuw i32 %530, 1
  %wide.trip.count1654 = zext i32 %531 to i64
  %532 = zext nneg i32 %530 to i64
  %min.iters.check1953 = icmp ult i32 %530, 4
  br i1 %min.iters.check1953, label %.lr.ph1493.preheader1968, label %vector.ph1954

vector.ph1954:                                    ; preds = %.lr.ph1493.preheader
  %n.vec1956 = and i64 %532, 2147483644
  %ind.end1957 = or disjoint i64 %n.vec1956, 1
  %broadcast.splatinsert1964 = insertelement <2 x double> poison, double %storemerge13221511, i64 0
  %broadcast.splat1965 = shufflevector <2 x double> %broadcast.splatinsert1964, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1959

vector.body1959:                                  ; preds = %vector.body1959, %vector.ph1954
  %index1960 = phi i64 [ 0, %vector.ph1954 ], [ %index.next1966, %vector.body1959 ]
  %533 = getelementptr double, ptr %4, i64 %index1960
  %534 = getelementptr inbounds i8, ptr %533, i64 16
  %wide.load1962 = load <2 x double>, ptr %533, align 8, !tbaa !9
  %wide.load1963 = load <2 x double>, ptr %534, align 8, !tbaa !9
  %535 = fsub <2 x double> %wide.load1962, %broadcast.splat1965
  %536 = fsub <2 x double> %wide.load1963, %broadcast.splat1965
  store <2 x double> %535, ptr %533, align 8, !tbaa !9
  store <2 x double> %536, ptr %534, align 8, !tbaa !9
  %index.next1966 = add nuw i64 %index1960, 4
  %537 = icmp eq i64 %index.next1966, %n.vec1956
  br i1 %537, label %middle.block1951, label %vector.body1959, !llvm.loop !41

middle.block1951:                                 ; preds = %vector.body1959
  %cmp.n1967 = icmp eq i64 %n.vec1956, %532
  br i1 %cmp.n1967, label %._crit_edge1494, label %.lr.ph1493.preheader1968

.lr.ph1493.preheader1968:                         ; preds = %middle.block1951, %.lr.ph1493.preheader
  %indvars.iv1651.ph = phi i64 [ 1, %.lr.ph1493.preheader ], [ %ind.end1957, %middle.block1951 ]
  br label %.lr.ph1493

.lr.ph1493:                                       ; preds = %.lr.ph1493.preheader1968, %.lr.ph1493
  %indvars.iv1651 = phi i64 [ %indvars.iv.next1652, %.lr.ph1493 ], [ %indvars.iv1651.ph, %.lr.ph1493.preheader1968 ]
  %538 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1651
  %539 = load double, ptr %538, align 8, !tbaa !9
  %540 = fsub double %539, %storemerge13221511
  store double %540, ptr %538, align 8, !tbaa !9
  %indvars.iv.next1652 = add nuw nsw i64 %indvars.iv1651, 1
  %exitcond1655.not = icmp eq i64 %indvars.iv.next1652, %wide.trip.count1654
  br i1 %exitcond1655.not, label %._crit_edge1494, label %.lr.ph1493, !llvm.loop !42

._crit_edge1494:                                  ; preds = %.lr.ph1493, %middle.block1951, %529
  %541 = fadd double %.311771520, %storemerge13221511
  br i1 %.not1317.not1464, label %.lr.ph1501.preheader, label %._crit_edge1502

.lr.ph1501.preheader:                             ; preds = %._crit_edge1494
  br i1 %454, label %._crit_edge1502.loopexit.unr-lcssa, label %.lr.ph1501

.lr.ph1501:                                       ; preds = %.lr.ph1501.preheader, %.lr.ph1501
  %indvars.iv1656 = phi i64 [ %indvars.iv.next1657.1, %.lr.ph1501 ], [ 1, %.lr.ph1501.preheader ]
  %.311901498 = phi double [ %564, %.lr.ph1501 ], [ 0.000000e+00, %.lr.ph1501.preheader ]
  %542 = phi <2 x double> [ %562, %.lr.ph1501 ], [ zeroinitializer, %.lr.ph1501.preheader ]
  %niter2093 = phi i64 [ %niter2093.next.1, %.lr.ph1501 ], [ 0, %.lr.ph1501.preheader ]
  %543 = getelementptr inbounds double, ptr %16, i64 %indvars.iv1656
  %544 = load double, ptr %543, align 8, !tbaa !9
  %545 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1656
  %546 = load double, ptr %545, align 8, !tbaa !9
  %547 = fdiv double %544, %546
  %548 = insertelement <2 x double> poison, double %544, i64 0
  %549 = insertelement <2 x double> %548, double %547, i64 1
  %550 = shufflevector <2 x double> %549, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %551 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %549, <2 x double> %550, <2 x double> %542)
  %552 = extractelement <2 x double> %551, i64 0
  %553 = fadd double %.311901498, %552
  %554 = getelementptr double, ptr %3, i64 %indvars.iv1656
  %555 = load double, ptr %554, align 8, !tbaa !9
  %556 = getelementptr double, ptr %4, i64 %indvars.iv1656
  %557 = load double, ptr %556, align 8, !tbaa !9
  %558 = fdiv double %555, %557
  %559 = insertelement <2 x double> poison, double %555, i64 0
  %560 = insertelement <2 x double> %559, double %558, i64 1
  %561 = shufflevector <2 x double> %560, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %562 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %560, <2 x double> %561, <2 x double> %551)
  %563 = extractelement <2 x double> %562, i64 0
  %564 = fadd double %553, %563
  %indvars.iv.next1657.1 = add nuw nsw i64 %indvars.iv1656, 2
  %niter2093.next.1 = add i64 %niter2093, 2
  %niter2093.ncmp.1 = icmp eq i64 %niter2093.next.1, %unroll_iter2092
  br i1 %niter2093.ncmp.1, label %._crit_edge1502.loopexit.unr-lcssa.loopexit, label %.lr.ph1501, !llvm.loop !43

._crit_edge1502.loopexit.unr-lcssa.loopexit:      ; preds = %.lr.ph1501
  %565 = extractelement <2 x double> %562, i64 1
  br label %._crit_edge1502.loopexit.unr-lcssa

._crit_edge1502.loopexit.unr-lcssa:               ; preds = %._crit_edge1502.loopexit.unr-lcssa.loopexit, %.lr.ph1501.preheader
  %.lcssa1970.ph = phi double [ poison, %.lr.ph1501.preheader ], [ %563, %._crit_edge1502.loopexit.unr-lcssa.loopexit ]
  %.lcssa1969.ph = phi double [ poison, %.lr.ph1501.preheader ], [ %564, %._crit_edge1502.loopexit.unr-lcssa.loopexit ]
  %.lcssa.ph = phi double [ poison, %.lr.ph1501.preheader ], [ %565, %._crit_edge1502.loopexit.unr-lcssa.loopexit ]
  %indvars.iv1656.unr = phi i64 [ 1, %.lr.ph1501.preheader ], [ %indvars.iv.next1657.1, %._crit_edge1502.loopexit.unr-lcssa.loopexit ]
  %.311901498.unr = phi double [ 0.000000e+00, %.lr.ph1501.preheader ], [ %564, %._crit_edge1502.loopexit.unr-lcssa.loopexit ]
  %.unr2087 = phi <2 x double> [ zeroinitializer, %.lr.ph1501.preheader ], [ %562, %._crit_edge1502.loopexit.unr-lcssa.loopexit ]
  br i1 %lcmp.mod2088.not, label %._crit_edge1502, label %.lr.ph1501.epil

.lr.ph1501.epil:                                  ; preds = %._crit_edge1502.loopexit.unr-lcssa
  %566 = getelementptr inbounds double, ptr %16, i64 %indvars.iv1656.unr
  %567 = load double, ptr %566, align 8, !tbaa !9
  %568 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1656.unr
  %569 = load double, ptr %568, align 8, !tbaa !9
  %570 = fdiv double %567, %569
  %571 = insertelement <2 x double> poison, double %567, i64 0
  %572 = insertelement <2 x double> %571, double %570, i64 1
  %573 = shufflevector <2 x double> %572, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %574 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %572, <2 x double> %573, <2 x double> %.unr2087)
  %575 = extractelement <2 x double> %574, i64 0
  %576 = fadd double %.311901498.unr, %575
  %577 = extractelement <2 x double> %574, i64 1
  br label %._crit_edge1502

._crit_edge1502:                                  ; preds = %.lr.ph1501.epil, %._crit_edge1502.loopexit.unr-lcssa, %._crit_edge1494
  %.31235.lcssa = phi double [ 0.000000e+00, %._crit_edge1494 ], [ %.lcssa.ph, %._crit_edge1502.loopexit.unr-lcssa ], [ %577, %.lr.ph1501.epil ]
  %.31190.lcssa = phi double [ 0.000000e+00, %._crit_edge1494 ], [ %.lcssa1969.ph, %._crit_edge1502.loopexit.unr-lcssa ], [ %576, %.lr.ph1501.epil ]
  %.3.lcssa = phi double [ 0.000000e+00, %._crit_edge1494 ], [ %.lcssa1970.ph, %._crit_edge1502.loopexit.unr-lcssa ], [ %575, %.lr.ph1501.epil ]
  %578 = fcmp oge double %.31190.lcssa, 0.000000e+00
  %579 = fneg double %.31190.lcssa
  %580 = select i1 %578, double %.31190.lcssa, double %579
  %581 = sext i32 %530 to i64
  %582 = getelementptr inbounds double, ptr %16, i64 %581
  %583 = load double, ptr %582, align 8, !tbaa !9
  %584 = getelementptr inbounds double, ptr %15, i64 %581
  %585 = load double, ptr %584, align 8, !tbaa !9
  %586 = fdiv double %583, %585
  %587 = fmul double %583, %586
  %588 = fmul double %586, %586
  %589 = fneg double %587
  %590 = fsub double %589, %.3.lcssa
  %591 = tail call double @llvm.fmuladd.f64(double %590, double 8.000000e+00, double %580)
  %592 = fsub double %591, %587
  %593 = fadd double %29, %592
  %594 = fcmp oge double %541, 0.000000e+00
  %595 = fneg double %541
  %596 = select i1 %594, double %541, double %595
  %597 = fadd double %.31235.lcssa, %588
  %598 = tail call double @llvm.fmuladd.f64(double %596, double %597, double %593)
  %599 = fadd double %29, %587
  %600 = fadd double %.3.lcssa, %599
  %storemerge1320 = add i32 %storemerge13201521, 1
  %exitcond1661.not = icmp eq i32 %storemerge1320, 31
  br i1 %exitcond1661.not, label %._crit_edge1524, label %455, !llvm.loop !44

._crit_edge1524:                                  ; preds = %._crit_edge1502
  store i32 1, ptr %7, align 4, !tbaa !5
  %601 = load i32, ptr %1, align 4, !tbaa !5
  %602 = sext i32 %601 to i64
  %603 = getelementptr inbounds double, ptr %17, i64 %602
  %604 = load double, ptr %603, align 8, !tbaa !9
  %605 = fadd double %541, %604
  store double %605, ptr %6, align 8, !tbaa !9
  br label %.loopexit

606:                                              ; preds = %26
  store i32 1, ptr %11, align 4, !tbaa !5
  %607 = add nsw i32 %30, 1
  %608 = sext i32 %607 to i64
  %609 = getelementptr inbounds double, ptr %17, i64 %608
  %610 = load double, ptr %609, align 8, !tbaa !9
  %611 = sext i32 %30 to i64
  %612 = getelementptr inbounds double, ptr %17, i64 %611
  %613 = load double, ptr %612, align 8, !tbaa !9
  %614 = fsub double %610, %613
  %615 = fmul double %614, 5.000000e-01
  %.not1337 = icmp slt i32 %31, 1
  br i1 %.not1337, label %.preheader1333, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %606
  %616 = add nuw i32 %31, 1
  %wide.trip.count = zext i32 %616 to i64
  %617 = zext nneg i32 %31 to i64
  %min.iters.check = icmp ult i32 %31, 12
  br i1 %min.iters.check, label %.lr.ph.preheader2005, label %vector.memcheck

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

.lr.ph.prol:                                      ; preds = %.lr.ph.preheader2005
  %620 = getelementptr inbounds double, ptr %17, i64 %indvars.iv.ph
  %621 = load double, ptr %620, align 8, !tbaa !9
  %622 = load double, ptr %612, align 8, !tbaa !9
  %623 = fsub double %621, %622
  %624 = fsub double %623, %615
  %625 = getelementptr inbounds double, ptr %15, i64 %indvars.iv.ph
  store double %624, ptr %625, 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.preheader2005
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %.lr.ph.preheader2005 ], [ %indvars.iv.next.prol, %.lr.ph.prol ]
  %626 = icmp eq i64 %indvars.iv.ph, %618
  br i1 %626, label %.preheader1333, label %.lr.ph

vector.memcheck:                                  ; preds = %.lr.ph.preheader
  %627 = shl nuw nsw i64 %wide.trip.count, 3
  %628 = add nsw i64 %627, -8
  %scevgep = getelementptr i8, ptr %4, i64 %628
  %629 = shl nsw i64 %611, 3
  %scevgep1768 = getelementptr i8, ptr %2, i64 %629
  %scevgep1769 = getelementptr i8, ptr %2, i64 %628
  %bound0 = icmp ugt ptr %scevgep1768, %4
  %bound1 = icmp ult ptr %612, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  %bound01770 = icmp ugt ptr %scevgep1769, %4
  %bound11771 = icmp ugt ptr %scevgep, %2
  %found.conflict1772 = and i1 %bound01770, %bound11771
  %conflict.rdx = or i1 %found.conflict, %found.conflict1772
  br i1 %conflict.rdx, label %.lr.ph.preheader2005, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %617, 2147483644
  %ind.end = or disjoint i64 %n.vec, 1
  %broadcast.splatinsert1776 = insertelement <2 x double> poison, double %615, i64 0
  %broadcast.splat1777 = shufflevector <2 x double> %broadcast.splatinsert1776, <2 x double> poison, <2 x i32> zeroinitializer
  %630 = load double, ptr %612, align 8, !tbaa !9, !alias.scope !45
  %broadcast.splatinsert1774 = insertelement <2 x double> poison, double %630, i64 0
  %broadcast.splat1775 = shufflevector <2 x double> %broadcast.splatinsert1774, <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 ]
  %631 = getelementptr double, ptr %2, i64 %index
  %632 = getelementptr inbounds i8, ptr %631, i64 16
  %wide.load = load <2 x double>, ptr %631, align 8, !tbaa !9, !alias.scope !48
  %wide.load1773 = load <2 x double>, ptr %632, align 8, !tbaa !9, !alias.scope !48
  %633 = fsub <2 x double> %wide.load, %broadcast.splat1775
  %634 = fsub <2 x double> %wide.load1773, %broadcast.splat1775
  %635 = fsub <2 x double> %633, %broadcast.splat1777
  %636 = fsub <2 x double> %634, %broadcast.splat1777
  %637 = getelementptr double, ptr %4, i64 %index
  %638 = getelementptr inbounds i8, ptr %637, i64 16
  store <2 x double> %635, ptr %637, align 8, !tbaa !9, !alias.scope !50, !noalias !52
  store <2 x double> %636, ptr %638, align 8, !tbaa !9, !alias.scope !50, !noalias !52
  %index.next = add nuw i64 %index, 4
  %639 = icmp eq i64 %index.next, %n.vec
  br i1 %639, label %middle.block, label %vector.body, !llvm.loop !53

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %617
  br i1 %cmp.n, label %.preheader1333, label %.lr.ph.preheader2005

.preheader1333:                                   ; preds = %.lr.ph.prol.loopexit, %.lr.ph, %middle.block, %606
  %.not1281.not1339 = icmp sgt i32 %30, 1
  br i1 %.not1281.not1339, label %.lr.ph1342.preheader, label %._crit_edge

.lr.ph1342.preheader:                             ; preds = %.preheader1333
  %wide.trip.count1572 = zext nneg i32 %30 to i64
  %640 = add nsw i64 %wide.trip.count1572, -1
  %641 = add nsw i64 %wide.trip.count1572, -2
  %xtraiter2006 = and i64 %640, 3
  %642 = icmp ult i64 %641, 3
  br i1 %642, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph1342.preheader.new

.lr.ph1342.preheader.new:                         ; preds = %.lr.ph1342.preheader
  %unroll_iter = and i64 %640, -4
  br label %.lr.ph1342

.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 ]
  %643 = getelementptr inbounds double, ptr %17, i64 %indvars.iv
  %644 = load double, ptr %643, align 8, !tbaa !9
  %645 = load double, ptr %612, align 8, !tbaa !9
  %646 = fsub double %644, %645
  %647 = fsub double %646, %615
  %648 = getelementptr inbounds double, ptr %15, i64 %indvars.iv
  store double %647, ptr %648, align 8, !tbaa !9
  %649 = getelementptr double, ptr %2, i64 %indvars.iv
  %650 = load double, ptr %649, align 8, !tbaa !9
  %651 = load double, ptr %612, align 8, !tbaa !9
  %652 = fsub double %650, %651
  %653 = fsub double %652, %615
  %654 = getelementptr double, ptr %4, i64 %indvars.iv
  store double %653, ptr %654, 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 %.preheader1333, label %.lr.ph, !llvm.loop !54

.lr.ph1342:                                       ; preds = %.lr.ph1342, %.lr.ph1342.preheader.new
  %indvars.iv1569 = phi i64 [ 1, %.lr.ph1342.preheader.new ], [ %indvars.iv.next1570.3, %.lr.ph1342 ]
  %.41341 = phi double [ 0.000000e+00, %.lr.ph1342.preheader.new ], [ %682, %.lr.ph1342 ]
  %niter = phi i64 [ 0, %.lr.ph1342.preheader.new ], [ %niter.next.3, %.lr.ph1342 ]
  %655 = getelementptr inbounds double, ptr %16, i64 %indvars.iv1569
  %656 = load double, ptr %655, align 8, !tbaa !9
  %657 = fmul double %656, %656
  %658 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1569
  %659 = load double, ptr %658, align 8, !tbaa !9
  %660 = fdiv double %657, %659
  %661 = fadd double %.41341, %660
  %662 = getelementptr double, ptr %3, i64 %indvars.iv1569
  %663 = load double, ptr %662, align 8, !tbaa !9
  %664 = fmul double %663, %663
  %665 = getelementptr double, ptr %4, i64 %indvars.iv1569
  %666 = load double, ptr %665, align 8, !tbaa !9
  %667 = fdiv double %664, %666
  %668 = fadd double %661, %667
  %indvars.iv.next1570.1 = add nuw nsw i64 %indvars.iv1569, 2
  %669 = getelementptr inbounds double, ptr %16, i64 %indvars.iv.next1570.1
  %670 = load double, ptr %669, align 8, !tbaa !9
  %671 = fmul double %670, %670
  %672 = getelementptr inbounds double, ptr %15, i64 %indvars.iv.next1570.1
  %673 = load double, ptr %672, align 8, !tbaa !9
  %674 = fdiv double %671, %673
  %675 = fadd double %668, %674
  %indvars.iv.next1570.2 = add nuw nsw i64 %indvars.iv1569, 3
  %676 = getelementptr inbounds double, ptr %16, i64 %indvars.iv.next1570.2
  %677 = load double, ptr %676, align 8, !tbaa !9
  %678 = fmul double %677, %677
  %679 = getelementptr inbounds double, ptr %15, i64 %indvars.iv.next1570.2
  %680 = load double, ptr %679, align 8, !tbaa !9
  %681 = fdiv double %678, %680
  %682 = fadd double %675, %681
  %indvars.iv.next1570.3 = add nuw nsw i64 %indvars.iv1569, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph1342, !llvm.loop !55

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph1342, %.lr.ph1342.preheader
  %.lcssa2004.ph = phi double [ poison, %.lr.ph1342.preheader ], [ %682, %.lr.ph1342 ]
  %indvars.iv1569.unr = phi i64 [ 1, %.lr.ph1342.preheader ], [ %indvars.iv.next1570.3, %.lr.ph1342 ]
  %.41341.unr = phi double [ 0.000000e+00, %.lr.ph1342.preheader ], [ %682, %.lr.ph1342 ]
  %lcmp.mod2007.not = icmp eq i64 %xtraiter2006, 0
  br i1 %lcmp.mod2007.not, label %._crit_edge, label %.lr.ph1342.epil

.lr.ph1342.epil:                                  ; preds = %._crit_edge.loopexit.unr-lcssa, %.lr.ph1342.epil
  %indvars.iv1569.epil = phi i64 [ %indvars.iv.next1570.epil, %.lr.ph1342.epil ], [ %indvars.iv1569.unr, %._crit_edge.loopexit.unr-lcssa ]
  %.41341.epil = phi double [ %689, %.lr.ph1342.epil ], [ %.41341.unr, %._crit_edge.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph1342.epil ], [ 0, %._crit_edge.loopexit.unr-lcssa ]
  %683 = getelementptr inbounds double, ptr %16, i64 %indvars.iv1569.epil
  %684 = load double, ptr %683, align 8, !tbaa !9
  %685 = fmul double %684, %684
  %686 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1569.epil
  %687 = load double, ptr %686, align 8, !tbaa !9
  %688 = fdiv double %685, %687
  %689 = fadd double %.41341.epil, %688
  %indvars.iv.next1570.epil = add nuw nsw i64 %indvars.iv1569.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter2006
  br i1 %epil.iter.cmp.not, label %._crit_edge, label %.lr.ph1342.epil, !llvm.loop !56

._crit_edge:                                      ; preds = %._crit_edge.loopexit.unr-lcssa, %.lr.ph1342.epil, %.preheader1333
  %.4.lcssa = phi double [ 0.000000e+00, %.preheader1333 ], [ %.lcssa2004.ph, %._crit_edge.loopexit.unr-lcssa ], [ %689, %.lr.ph1342.epil ]
  %690 = add nsw i32 %30, 2
  %.not12821343 = icmp slt i32 %31, %690
  br i1 %.not12821343, label %._crit_edge1348, label %.lr.ph1347.preheader

.lr.ph1347.preheader:                             ; preds = %._crit_edge
  %691 = sext i32 %31 to i64
  %692 = sext i32 %690 to i64
  %693 = add nsw i64 %691, 1
  %694 = sub nsw i64 %693, %692
  %695 = sub nsw i64 %691, %692
  %xtraiter2009 = and i64 %694, 3
  %lcmp.mod2010.not = icmp eq i64 %xtraiter2009, 0
  br i1 %lcmp.mod2010.not, label %.lr.ph1347.prol.loopexit, label %.lr.ph1347.prol

.lr.ph1347.prol:                                  ; preds = %.lr.ph1347.preheader, %.lr.ph1347.prol
  %indvars.iv1574.prol = phi i64 [ %indvars.iv.next1575.prol, %.lr.ph1347.prol ], [ %691, %.lr.ph1347.preheader ]
  %.011821345.prol = phi double [ %702, %.lr.ph1347.prol ], [ 0.000000e+00, %.lr.ph1347.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph1347.prol ], [ 0, %.lr.ph1347.preheader ]
  %696 = getelementptr inbounds double, ptr %16, i64 %indvars.iv1574.prol
  %697 = load double, ptr %696, align 8, !tbaa !9
  %698 = fmul double %697, %697
  %699 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1574.prol
  %700 = load double, ptr %699, align 8, !tbaa !9
  %701 = fdiv double %698, %700
  %702 = fadd double %.011821345.prol, %701
  %indvars.iv.next1575.prol = add nsw i64 %indvars.iv1574.prol, -1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter2009
  br i1 %prol.iter.cmp.not, label %.lr.ph1347.prol.loopexit, label %.lr.ph1347.prol, !llvm.loop !57

.lr.ph1347.prol.loopexit:                         ; preds = %.lr.ph1347.prol, %.lr.ph1347.preheader
  %indvars.iv1574.unr = phi i64 [ %691, %.lr.ph1347.preheader ], [ %indvars.iv.next1575.prol, %.lr.ph1347.prol ]
  %.011821345.unr = phi double [ 0.000000e+00, %.lr.ph1347.preheader ], [ %702, %.lr.ph1347.prol ]
  %.lcssa2003.unr = phi double [ poison, %.lr.ph1347.preheader ], [ %702, %.lr.ph1347.prol ]
  %703 = icmp ult i64 %695, 3
  br i1 %703, label %._crit_edge1348, label %.lr.ph1347

.lr.ph1347:                                       ; preds = %.lr.ph1347.prol.loopexit, %.lr.ph1347
  %indvars.iv1574 = phi i64 [ %indvars.iv.next1575.3, %.lr.ph1347 ], [ %indvars.iv1574.unr, %.lr.ph1347.prol.loopexit ]
  %.011821345 = phi double [ %731, %.lr.ph1347 ], [ %.011821345.unr, %.lr.ph1347.prol.loopexit ]
  %704 = getelementptr inbounds double, ptr %16, i64 %indvars.iv1574
  %705 = load double, ptr %704, align 8, !tbaa !9
  %706 = fmul double %705, %705
  %707 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1574
  %708 = load double, ptr %707, align 8, !tbaa !9
  %709 = fdiv double %706, %708
  %710 = fadd double %.011821345, %709
  %indvars.iv.next1575 = add nsw i64 %indvars.iv1574, -1
  %711 = getelementptr inbounds double, ptr %16, i64 %indvars.iv.next1575
  %712 = load double, ptr %711, align 8, !tbaa !9
  %713 = fmul double %712, %712
  %714 = getelementptr inbounds double, ptr %15, i64 %indvars.iv.next1575
  %715 = load double, ptr %714, align 8, !tbaa !9
  %716 = fdiv double %713, %715
  %717 = fadd double %710, %716
  %indvars.iv.next1575.1 = add nsw i64 %indvars.iv1574, -2
  %718 = getelementptr inbounds double, ptr %16, i64 %indvars.iv.next1575.1
  %719 = load double, ptr %718, align 8, !tbaa !9
  %720 = fmul double %719, %719
  %721 = getelementptr inbounds double, ptr %15, i64 %indvars.iv.next1575.1
  %722 = load double, ptr %721, align 8, !tbaa !9
  %723 = fdiv double %720, %722
  %724 = fadd double %717, %723
  %indvars.iv.next1575.2 = add nsw i64 %indvars.iv1574, -3
  %725 = getelementptr inbounds double, ptr %16, i64 %indvars.iv.next1575.2
  %726 = load double, ptr %725, align 8, !tbaa !9
  %727 = fmul double %726, %726
  %728 = getelementptr inbounds double, ptr %15, i64 %indvars.iv.next1575.2
  %729 = load double, ptr %728, align 8, !tbaa !9
  %730 = fdiv double %727, %729
  %731 = fadd double %724, %730
  %indvars.iv.next1575.3 = add nsw i64 %indvars.iv1574, -4
  %.not1282.not.3 = icmp sgt i64 %indvars.iv.next1575.2, %692
  br i1 %.not1282.not.3, label %.lr.ph1347, label %._crit_edge1348, !llvm.loop !58

._crit_edge1348:                                  ; preds = %.lr.ph1347.prol.loopexit, %.lr.ph1347, %._crit_edge
  %.01182.lcssa = phi double [ 0.000000e+00, %._crit_edge ], [ %.lcssa2003.unr, %.lr.ph1347.prol.loopexit ], [ %731, %.lr.ph1347 ]
  %732 = fadd double %29, %.4.lcssa
  %733 = fadd double %732, %.01182.lcssa
  %734 = getelementptr inbounds double, ptr %16, i64 %611
  %735 = load double, ptr %734, align 8, !tbaa !9
  %736 = getelementptr inbounds double, ptr %15, i64 %611
  %737 = load double, ptr %736, align 8, !tbaa !9
  %738 = getelementptr inbounds double, ptr %16, i64 %608
  %739 = load double, ptr %738, align 8, !tbaa !9
  %740 = getelementptr inbounds double, ptr %15, i64 %608
  %741 = load double, ptr %740, align 8, !tbaa !9
  %742 = insertelement <2 x double> poison, double %735, i64 0
  %743 = insertelement <2 x double> %742, double %739, i64 1
  %744 = fmul <2 x double> %743, %743
  %745 = insertelement <2 x double> poison, double %737, i64 0
  %746 = insertelement <2 x double> %745, double %741, i64 1
  %747 = fdiv <2 x double> %744, %746
  %748 = extractelement <2 x double> %747, i64 0
  %749 = fadd double %733, %748
  %750 = extractelement <2 x double> %747, i64 1
  %751 = fadd double %749, %750
  %752 = fcmp ule double %751, 0.000000e+00
  br i1 %752, label %781, label %753

753:                                              ; preds = %._crit_edge1348
  store i32 1, ptr %13, align 4, !tbaa !5
  %754 = extractelement <2 x double> %744, i64 0
  %755 = tail call double @llvm.fmuladd.f64(double %733, double %614, double %754)
  %756 = tail call double @llvm.fmuladd.f64(double %739, double %739, double %755)
  %757 = fmul double %614, %754
  %758 = fcmp ogt double %756, 0.000000e+00
  br i1 %758, label %759, label %770

759:                                              ; preds = %753
  %760 = fmul double %757, 2.000000e+00
  %761 = fmul double %757, -4.000000e+00
  %762 = fmul double %733, %761
  %763 = tail call double @llvm.fmuladd.f64(double %756, double %756, double %762)
  %764 = fcmp oge double %763, 0.000000e+00
  %765 = fneg double %763
  %766 = select i1 %764, double %763, double %765
  %767 = tail call double @sqrt(double noundef %766) #6
  %768 = fadd double %756, %767
  %769 = fdiv double %760, %768
  br label %813

770:                                              ; preds = %753
  %771 = fmul double %757, -4.000000e+00
  %772 = fmul double %733, %771
  %773 = tail call double @llvm.fmuladd.f64(double %756, double %756, double %772)
  %774 = fcmp oge double %773, 0.000000e+00
  %775 = fneg double %773
  %776 = select i1 %774, double %773, double %775
  %777 = tail call double @sqrt(double noundef %776) #6
  %778 = fsub double %756, %777
  %779 = fmul double %733, 2.000000e+00
  %780 = fdiv double %778, %779
  br label %813

781:                                              ; preds = %._crit_edge1348
  store i32 0, ptr %13, align 4, !tbaa !5
  %782 = fneg double %735
  %783 = fmul double %735, %782
  %784 = tail call double @llvm.fmuladd.f64(double %733, double %614, double %783)
  %785 = fneg double %739
  %786 = tail call double @llvm.fmuladd.f64(double %785, double %739, double %784)
  %787 = extractelement <2 x double> %744, i64 1
  %788 = fmul double %614, %787
  %789 = fcmp olt double %786, 0.000000e+00
  br i1 %789, label %790, label %801

790:                                              ; preds = %781
  %791 = fmul double %788, 2.000000e+00
  %792 = fmul double %788, 4.000000e+00
  %793 = fmul double %733, %792
  %794 = tail call double @llvm.fmuladd.f64(double %786, double %786, double %793)
  %795 = fcmp oge double %794, 0.000000e+00
  %796 = fneg double %794
  %797 = select i1 %795, double %794, double %796
  %798 = tail call double @sqrt(double noundef %797) #6
  %799 = fsub double %786, %798
  %800 = fdiv double %791, %799
  br label %854

801:                                              ; preds = %781
  %802 = fmul double %788, 4.000000e+00
  %803 = fmul double %733, %802
  %804 = tail call double @llvm.fmuladd.f64(double %786, double %786, double %803)
  %805 = fcmp oge double %804, 0.000000e+00
  %806 = fneg double %804
  %807 = select i1 %805, double %804, double %806
  %808 = tail call double @sqrt(double noundef %807) #6
  %809 = fadd double %786, %808
  %810 = fneg double %809
  %811 = fmul double %733, 2.000000e+00
  %812 = fdiv double %810, %811
  br label %854

813:                                              ; preds = %759, %770
  %.61180.ph = phi double [ %769, %759 ], [ %780, %770 ]
  %814 = load i32, ptr %0, align 4, !tbaa !5
  %.not12851350 = icmp slt i32 %814, 1
  br i1 %.not12851350, label %.loopexit1331.thread1690, label %.lr.ph1353

.lr.ph1353:                                       ; preds = %813
  %815 = load i32, ptr %1, align 4, !tbaa !5
  %816 = sext i32 %815 to i64
  %817 = getelementptr inbounds double, ptr %17, i64 %816
  %818 = add nuw i32 %814, 1
  %wide.trip.count1580 = zext i32 %818 to i64
  %819 = zext nneg i32 %814 to i64
  %min.iters.check1791 = icmp ult i32 %814, 12
  br i1 %min.iters.check1791, label %scalar.ph1790.preheader, label %vector.memcheck1778

vector.memcheck1778:                              ; preds = %.lr.ph1353
  %820 = shl nuw nsw i64 %wide.trip.count1580, 3
  %821 = add nsw i64 %820, -8
  %scevgep1779 = getelementptr i8, ptr %4, i64 %821
  %822 = shl nsw i64 %816, 3
  %scevgep1780 = getelementptr i8, ptr %2, i64 %822
  %scevgep1781 = getelementptr i8, ptr %2, i64 %821
  %bound01782 = icmp ugt ptr %scevgep1780, %4
  %bound11783 = icmp ult ptr %817, %scevgep1779
  %found.conflict1784 = and i1 %bound01782, %bound11783
  %bound01785 = icmp ugt ptr %scevgep1781, %4
  %bound11786 = icmp ugt ptr %scevgep1779, %2
  %found.conflict1787 = and i1 %bound01785, %bound11786
  %conflict.rdx1788 = or i1 %found.conflict1784, %found.conflict1787
  br i1 %conflict.rdx1788, label %scalar.ph1790.preheader, label %vector.ph1792

vector.ph1792:                                    ; preds = %vector.memcheck1778
  %n.vec1794 = and i64 %819, 2147483644
  %ind.end1795 = or disjoint i64 %n.vec1794, 1
  %broadcast.splatinsert1804 = insertelement <2 x double> poison, double %.61180.ph, i64 0
  %broadcast.splat1805 = shufflevector <2 x double> %broadcast.splatinsert1804, <2 x double> poison, <2 x i32> zeroinitializer
  %823 = load double, ptr %817, align 8, !tbaa !9, !alias.scope !59
  %broadcast.splatinsert1802 = insertelement <2 x double> poison, double %823, i64 0
  %broadcast.splat1803 = shufflevector <2 x double> %broadcast.splatinsert1802, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1797

vector.body1797:                                  ; preds = %vector.body1797, %vector.ph1792
  %index1798 = phi i64 [ 0, %vector.ph1792 ], [ %index.next1806, %vector.body1797 ]
  %824 = getelementptr double, ptr %2, i64 %index1798
  %825 = getelementptr inbounds i8, ptr %824, i64 16
  %wide.load1800 = load <2 x double>, ptr %824, align 8, !tbaa !9, !alias.scope !62
  %wide.load1801 = load <2 x double>, ptr %825, align 8, !tbaa !9, !alias.scope !62
  %826 = fsub <2 x double> %wide.load1800, %broadcast.splat1803
  %827 = fsub <2 x double> %wide.load1801, %broadcast.splat1803
  %828 = fsub <2 x double> %826, %broadcast.splat1805
  %829 = fsub <2 x double> %827, %broadcast.splat1805
  %830 = getelementptr double, ptr %4, i64 %index1798
  %831 = getelementptr inbounds i8, ptr %830, i64 16
  store <2 x double> %828, ptr %830, align 8, !tbaa !9, !alias.scope !64, !noalias !66
  store <2 x double> %829, ptr %831, align 8, !tbaa !9, !alias.scope !64, !noalias !66
  %index.next1806 = add nuw i64 %index1798, 4
  %832 = icmp eq i64 %index.next1806, %n.vec1794
  br i1 %832, label %middle.block1789, label %vector.body1797, !llvm.loop !67

middle.block1789:                                 ; preds = %vector.body1797
  %cmp.n1807 = icmp eq i64 %n.vec1794, %819
  br i1 %cmp.n1807, label %.loopexit1331, label %scalar.ph1790.preheader

scalar.ph1790.preheader:                          ; preds = %middle.block1789, %vector.memcheck1778, %.lr.ph1353
  %indvars.iv1577.ph = phi i64 [ 1, %vector.memcheck1778 ], [ 1, %.lr.ph1353 ], [ %ind.end1795, %middle.block1789 ]
  %833 = zext nneg i32 %814 to i64
  %834 = and i32 %814, 1
  %lcmp.mod2012.not = icmp eq i32 %834, 0
  br i1 %lcmp.mod2012.not, label %scalar.ph1790.prol.loopexit, label %scalar.ph1790.prol

scalar.ph1790.prol:                               ; preds = %scalar.ph1790.preheader
  %835 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1577.ph
  %836 = load double, ptr %835, align 8, !tbaa !9
  %837 = load double, ptr %817, align 8, !tbaa !9
  %838 = fsub double %836, %837
  %839 = fsub double %838, %.61180.ph
  %840 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1577.ph
  store double %839, ptr %840, align 8, !tbaa !9
  %indvars.iv.next1578.prol = add nuw nsw i64 %indvars.iv1577.ph, 1
  br label %scalar.ph1790.prol.loopexit

scalar.ph1790.prol.loopexit:                      ; preds = %scalar.ph1790.prol, %scalar.ph1790.preheader
  %indvars.iv1577.unr = phi i64 [ %indvars.iv1577.ph, %scalar.ph1790.preheader ], [ %indvars.iv.next1578.prol, %scalar.ph1790.prol ]
  %841 = icmp eq i64 %indvars.iv1577.ph, %833
  br i1 %841, label %.loopexit1331, label %scalar.ph1790

scalar.ph1790:                                    ; preds = %scalar.ph1790.prol.loopexit, %scalar.ph1790
  %indvars.iv1577 = phi i64 [ %indvars.iv.next1578.1, %scalar.ph1790 ], [ %indvars.iv1577.unr, %scalar.ph1790.prol.loopexit ]
  %842 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1577
  %843 = load double, ptr %842, align 8, !tbaa !9
  %844 = load double, ptr %817, align 8, !tbaa !9
  %845 = fsub double %843, %844
  %846 = fsub double %845, %.61180.ph
  %847 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1577
  store double %846, ptr %847, align 8, !tbaa !9
  %848 = getelementptr double, ptr %2, i64 %indvars.iv1577
  %849 = load double, ptr %848, align 8, !tbaa !9
  %850 = load double, ptr %817, align 8, !tbaa !9
  %851 = fsub double %849, %850
  %852 = fsub double %851, %.61180.ph
  %853 = getelementptr double, ptr %4, i64 %indvars.iv1577
  store double %852, ptr %853, align 8, !tbaa !9
  %indvars.iv.next1578.1 = add nuw nsw i64 %indvars.iv1577, 2
  %exitcond1581.not.1 = icmp eq i64 %indvars.iv.next1578.1, %wide.trip.count1580
  br i1 %exitcond1581.not.1, label %.loopexit1331, label %scalar.ph1790, !llvm.loop !68

854:                                              ; preds = %801, %790
  %.51179 = phi double [ %800, %790 ], [ %812, %801 ]
  %855 = fneg double %615
  %856 = load i32, ptr %0, align 4, !tbaa !5
  %.not12841354 = icmp slt i32 %856, 1
  br i1 %.not12841354, label %.loopexit1331.thread, label %.lr.ph1357.preheader

.lr.ph1357.preheader:                             ; preds = %854
  %857 = add nuw i32 %856, 1
  %wide.trip.count1585 = zext i32 %857 to i64
  %858 = zext nneg i32 %856 to i64
  %min.iters.check1821 = icmp ult i32 %856, 12
  br i1 %min.iters.check1821, label %.lr.ph1357.preheader2001, label %vector.memcheck1808

vector.memcheck1808:                              ; preds = %.lr.ph1357.preheader
  %859 = shl nuw nsw i64 %wide.trip.count1585, 3
  %860 = add nsw i64 %859, -8
  %scevgep1809 = getelementptr i8, ptr %4, i64 %860
  %861 = shl nsw i64 %608, 3
  %scevgep1810 = getelementptr i8, ptr %2, i64 %861
  %scevgep1811 = getelementptr i8, ptr %2, i64 %860
  %bound01812 = icmp ugt ptr %scevgep1810, %4
  %bound11813 = icmp ult ptr %609, %scevgep1809
  %found.conflict1814 = and i1 %bound01812, %bound11813
  %bound01815 = icmp ugt ptr %scevgep1811, %4
  %bound11816 = icmp ugt ptr %scevgep1809, %2
  %found.conflict1817 = and i1 %bound01815, %bound11816
  %conflict.rdx1818 = or i1 %found.conflict1814, %found.conflict1817
  br i1 %conflict.rdx1818, label %.lr.ph1357.preheader2001, label %vector.ph1822

vector.ph1822:                                    ; preds = %vector.memcheck1808
  %n.vec1824 = and i64 %858, 2147483644
  %ind.end1825 = or disjoint i64 %n.vec1824, 1
  %broadcast.splatinsert1834 = insertelement <2 x double> poison, double %.51179, i64 0
  %broadcast.splat1835 = shufflevector <2 x double> %broadcast.splatinsert1834, <2 x double> poison, <2 x i32> zeroinitializer
  %862 = load double, ptr %609, align 8, !tbaa !9, !alias.scope !69
  %broadcast.splatinsert1832 = insertelement <2 x double> poison, double %862, i64 0
  %broadcast.splat1833 = shufflevector <2 x double> %broadcast.splatinsert1832, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1827

vector.body1827:                                  ; preds = %vector.body1827, %vector.ph1822
  %index1828 = phi i64 [ 0, %vector.ph1822 ], [ %index.next1836, %vector.body1827 ]
  %863 = getelementptr double, ptr %2, i64 %index1828
  %864 = getelementptr inbounds i8, ptr %863, i64 16
  %wide.load1830 = load <2 x double>, ptr %863, align 8, !tbaa !9, !alias.scope !72
  %wide.load1831 = load <2 x double>, ptr %864, align 8, !tbaa !9, !alias.scope !72
  %865 = fsub <2 x double> %wide.load1830, %broadcast.splat1833
  %866 = fsub <2 x double> %wide.load1831, %broadcast.splat1833
  %867 = fsub <2 x double> %865, %broadcast.splat1835
  %868 = fsub <2 x double> %866, %broadcast.splat1835
  %869 = getelementptr double, ptr %4, i64 %index1828
  %870 = getelementptr inbounds i8, ptr %869, i64 16
  store <2 x double> %867, ptr %869, align 8, !tbaa !9, !alias.scope !74, !noalias !76
  store <2 x double> %868, ptr %870, align 8, !tbaa !9, !alias.scope !74, !noalias !76
  %index.next1836 = add nuw i64 %index1828, 4
  %871 = icmp eq i64 %index.next1836, %n.vec1824
  br i1 %871, label %middle.block1819, label %vector.body1827, !llvm.loop !77

middle.block1819:                                 ; preds = %vector.body1827
  %cmp.n1837 = icmp eq i64 %n.vec1824, %858
  br i1 %cmp.n1837, label %.loopexit1331, label %.lr.ph1357.preheader2001

.lr.ph1357.preheader2001:                         ; preds = %middle.block1819, %vector.memcheck1808, %.lr.ph1357.preheader
  %indvars.iv1582.ph = phi i64 [ 1, %vector.memcheck1808 ], [ 1, %.lr.ph1357.preheader ], [ %ind.end1825, %middle.block1819 ]
  %872 = zext nneg i32 %856 to i64
  %873 = and i32 %856, 1
  %lcmp.mod2015.not = icmp eq i32 %873, 0
  br i1 %lcmp.mod2015.not, label %.lr.ph1357.prol.loopexit, label %.lr.ph1357.prol

.lr.ph1357.prol:                                  ; preds = %.lr.ph1357.preheader2001
  %874 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1582.ph
  %875 = load double, ptr %874, align 8, !tbaa !9
  %876 = load double, ptr %609, align 8, !tbaa !9
  %877 = fsub double %875, %876
  %878 = fsub double %877, %.51179
  %879 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1582.ph
  store double %878, ptr %879, align 8, !tbaa !9
  %indvars.iv.next1583.prol = add nuw nsw i64 %indvars.iv1582.ph, 1
  br label %.lr.ph1357.prol.loopexit

.lr.ph1357.prol.loopexit:                         ; preds = %.lr.ph1357.prol, %.lr.ph1357.preheader2001
  %indvars.iv1582.unr = phi i64 [ %indvars.iv1582.ph, %.lr.ph1357.preheader2001 ], [ %indvars.iv.next1583.prol, %.lr.ph1357.prol ]
  %880 = icmp eq i64 %indvars.iv1582.ph, %872
  br i1 %880, label %.loopexit1331, label %.lr.ph1357

.lr.ph1357:                                       ; preds = %.lr.ph1357.prol.loopexit, %.lr.ph1357
  %indvars.iv1582 = phi i64 [ %indvars.iv.next1583.1, %.lr.ph1357 ], [ %indvars.iv1582.unr, %.lr.ph1357.prol.loopexit ]
  %881 = getelementptr inbounds double, ptr %17, i64 %indvars.iv1582
  %882 = load double, ptr %881, align 8, !tbaa !9
  %883 = load double, ptr %609, align 8, !tbaa !9
  %884 = fsub double %882, %883
  %885 = fsub double %884, %.51179
  %886 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1582
  store double %885, ptr %886, align 8, !tbaa !9
  %887 = getelementptr double, ptr %2, i64 %indvars.iv1582
  %888 = load double, ptr %887, align 8, !tbaa !9
  %889 = load double, ptr %609, align 8, !tbaa !9
  %890 = fsub double %888, %889
  %891 = fsub double %890, %.51179
  %892 = getelementptr double, ptr %4, i64 %indvars.iv1582
  store double %891, ptr %892, align 8, !tbaa !9
  %indvars.iv.next1583.1 = add nuw nsw i64 %indvars.iv1582, 2
  %exitcond1586.not.1 = icmp eq i64 %indvars.iv.next1583.1, %wide.trip.count1585
  br i1 %exitcond1586.not.1, label %.loopexit1331, label %.lr.ph1357, !llvm.loop !78

.loopexit1331:                                    ; preds = %scalar.ph1790.prol.loopexit, %scalar.ph1790, %.lr.ph1357.prol.loopexit, %.lr.ph1357, %middle.block1789, %middle.block1819
  %.611801680 = phi double [ %.51179, %middle.block1819 ], [ %.61180.ph, %middle.block1789 ], [ %.51179, %.lr.ph1357 ], [ %.51179, %.lr.ph1357.prol.loopexit ], [ %.61180.ph, %scalar.ph1790 ], [ %.61180.ph, %scalar.ph1790.prol.loopexit ]
  %.412071677 = phi double [ 0.000000e+00, %middle.block1819 ], [ %615, %middle.block1789 ], [ 0.000000e+00, %.lr.ph1357 ], [ 0.000000e+00, %.lr.ph1357.prol.loopexit ], [ %615, %scalar.ph1790 ], [ %615, %scalar.ph1790.prol.loopexit ]
  %.412151675 = phi double [ %855, %middle.block1819 ], [ 0.000000e+00, %middle.block1789 ], [ %855, %.lr.ph1357 ], [ %855, %.lr.ph1357.prol.loopexit ], [ 0.000000e+00, %scalar.ph1790 ], [ 0.000000e+00, %scalar.ph1790.prol.loopexit ]
  %893 = phi i32 [ %856, %middle.block1819 ], [ %814, %middle.block1789 ], [ %856, %.lr.ph1357 ], [ %856, %.lr.ph1357.prol.loopexit ], [ %814, %scalar.ph1790 ], [ %814, %scalar.ph1790.prol.loopexit ]
  br i1 %752, label %.loopexit1331.thread, label %.loopexit1331.thread1690

.loopexit1331.thread1690:                         ; preds = %813, %.loopexit1331
  %894 = phi i32 [ %893, %.loopexit1331 ], [ %814, %813 ]
  %.4121516751696 = phi double [ %.412151675, %.loopexit1331 ], [ 0.000000e+00, %813 ]
  %.4120716771695 = phi double [ %.412071677, %.loopexit1331 ], [ %615, %813 ]
  %.6118016801694 = phi double [ %.611801680, %.loopexit1331 ], [ %.61180.ph, %813 ]
  %895 = load i32, ptr %1, align 4, !tbaa !5
  br label %899

.loopexit1331.thread:                             ; preds = %854, %.loopexit1331
  %896 = phi i32 [ %893, %.loopexit1331 ], [ %856, %854 ]
  %.4121516751689 = phi double [ %.412151675, %.loopexit1331 ], [ %855, %854 ]
  %.4120716771687 = phi double [ %.412071677, %.loopexit1331 ], [ 0.000000e+00, %854 ]
  %.6118016801685 = phi double [ %.611801680, %.loopexit1331 ], [ %.51179, %854 ]
  %897 = load i32, ptr %1, align 4, !tbaa !5
  %898 = add nsw i32 %897, 1
  br label %899

899:                                              ; preds = %.loopexit1331.thread, %.loopexit1331.thread1690
  %900 = phi i32 [ %894, %.loopexit1331.thread1690 ], [ %896, %.loopexit1331.thread ]
  %.4121516751688 = phi double [ %.4121516751696, %.loopexit1331.thread1690 ], [ %.4121516751689, %.loopexit1331.thread ]
  %.4120716771686 = phi double [ %.4120716771695, %.loopexit1331.thread1690 ], [ %.4120716771687, %.loopexit1331.thread ]
  %.6118016801684 = phi double [ %.6118016801694, %.loopexit1331.thread1690 ], [ %.6118016801685, %.loopexit1331.thread ]
  %901 = phi i32 [ %895, %.loopexit1331.thread1690 ], [ %897, %.loopexit1331.thread ]
  %.01197 = phi i32 [ %895, %.loopexit1331.thread1690 ], [ %898, %.loopexit1331.thread ]
  %902 = add nsw i32 %.01197, -1
  %903 = add nsw i32 %.01197, 1
  %.not1287.not1358 = icmp sgt i32 %.01197, 1
  br i1 %.not1287.not1358, label %.lr.ph1364.preheader, label %._crit_edge1365

.lr.ph1364.preheader:                             ; preds = %899
  %wide.trip.count1590 = zext nneg i32 %.01197 to i64
  %904 = add nsw i64 %wide.trip.count1590, -1
  %xtraiter2017 = and i64 %904, 1
  %905 = icmp eq i32 %.01197, 2
  br i1 %905, label %._crit_edge1365.loopexit.unr-lcssa, label %.lr.ph1364.preheader.new

.lr.ph1364.preheader.new:                         ; preds = %.lr.ph1364.preheader
  %unroll_iter2023 = and i64 %904, -2
  br label %.lr.ph1364

.lr.ph1364:                                       ; preds = %.lr.ph1364, %.lr.ph1364.preheader.new
  %indvars.iv1587 = phi i64 [ 1, %.lr.ph1364.preheader.new ], [ %indvars.iv.next1588.1, %.lr.ph1364 ]
  %.411911361 = phi double [ 0.000000e+00, %.lr.ph1364.preheader.new ], [ %928, %.lr.ph1364 ]
  %906 = phi <2 x double> [ zeroinitializer, %.lr.ph1364.preheader.new ], [ %926, %.lr.ph1364 ]
  %niter2024 = phi i64 [ 0, %.lr.ph1364.preheader.new ], [ %niter2024.next.1, %.lr.ph1364 ]
  %907 = getelementptr inbounds double, ptr %16, i64 %indvars.iv1587
  %908 = load double, ptr %907, align 8, !tbaa !9
  %909 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1587
  %910 = load double, ptr %909, align 8, !tbaa !9
  %911 = fdiv double %908, %910
  %912 = insertelement <2 x double> poison, double %908, i64 0
  %913 = insertelement <2 x double> %912, double %911, i64 1
  %914 = shufflevector <2 x double> %913, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %915 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %913, <2 x double> %914, <2 x double> %906)
  %916 = extractelement <2 x double> %915, i64 0
  %917 = fadd double %.411911361, %916
  %918 = getelementptr double, ptr %3, i64 %indvars.iv1587
  %919 = load double, ptr %918, align 8, !tbaa !9
  %920 = getelementptr double, ptr %4, i64 %indvars.iv1587
  %921 = load double, ptr %920, align 8, !tbaa !9
  %922 = fdiv double %919, %921
  %923 = insertelement <2 x double> poison, double %919, i64 0
  %924 = insertelement <2 x double> %923, double %922, i64 1
  %925 = shufflevector <2 x double> %924, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %926 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %924, <2 x double> %925, <2 x double> %915)
  %927 = extractelement <2 x double> %926, i64 0
  %928 = fadd double %917, %927
  %indvars.iv.next1588.1 = add nuw nsw i64 %indvars.iv1587, 2
  %niter2024.next.1 = add i64 %niter2024, 2
  %niter2024.ncmp.1 = icmp eq i64 %niter2024.next.1, %unroll_iter2023
  br i1 %niter2024.ncmp.1, label %._crit_edge1365.loopexit.unr-lcssa.loopexit, label %.lr.ph1364, !llvm.loop !79

._crit_edge1365.loopexit.unr-lcssa.loopexit:      ; preds = %.lr.ph1364
  %929 = extractelement <2 x double> %926, i64 1
  br label %._crit_edge1365.loopexit.unr-lcssa

._crit_edge1365.loopexit.unr-lcssa:               ; preds = %._crit_edge1365.loopexit.unr-lcssa.loopexit, %.lr.ph1364.preheader
  %.lcssa2000.ph = phi double [ poison, %.lr.ph1364.preheader ], [ %927, %._crit_edge1365.loopexit.unr-lcssa.loopexit ]
  %.lcssa1999.ph = phi double [ poison, %.lr.ph1364.preheader ], [ %928, %._crit_edge1365.loopexit.unr-lcssa.loopexit ]
  %.lcssa1998.ph = phi double [ poison, %.lr.ph1364.preheader ], [ %929, %._crit_edge1365.loopexit.unr-lcssa.loopexit ]
  %indvars.iv1587.unr = phi i64 [ 1, %.lr.ph1364.preheader ], [ %indvars.iv.next1588.1, %._crit_edge1365.loopexit.unr-lcssa.loopexit ]
  %.411911361.unr = phi double [ 0.000000e+00, %.lr.ph1364.preheader ], [ %928, %._crit_edge1365.loopexit.unr-lcssa.loopexit ]
  %.unr = phi <2 x double> [ zeroinitializer, %.lr.ph1364.preheader ], [ %926, %._crit_edge1365.loopexit.unr-lcssa.loopexit ]
  %lcmp.mod2019.not = icmp eq i64 %xtraiter2017, 0
  br i1 %lcmp.mod2019.not, label %._crit_edge1365, label %.lr.ph1364.epil

.lr.ph1364.epil:                                  ; preds = %._crit_edge1365.loopexit.unr-lcssa
  %930 = getelementptr inbounds double, ptr %16, i64 %indvars.iv1587.unr
  %931 = load double, ptr %930, align 8, !tbaa !9
  %932 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1587.unr
  %933 = load double, ptr %932, align 8, !tbaa !9
  %934 = fdiv double %931, %933
  %935 = insertelement <2 x double> poison, double %931, i64 0
  %936 = insertelement <2 x double> %935, double %934, i64 1
  %937 = shufflevector <2 x double> %936, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %938 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %936, <2 x double> %937, <2 x double> %.unr)
  %939 = extractelement <2 x double> %938, i64 0
  %940 = fadd double %.411911361.unr, %939
  %941 = extractelement <2 x double> %938, i64 1
  br label %._crit_edge1365

._crit_edge1365:                                  ; preds = %.lr.ph1364.epil, %._crit_edge1365.loopexit.unr-lcssa, %899
  %.41236.lcssa = phi double [ 0.000000e+00, %899 ], [ %.lcssa1998.ph, %._crit_edge1365.loopexit.unr-lcssa ], [ %941, %.lr.ph1364.epil ]
  %.41191.lcssa = phi double [ 0.000000e+00, %899 ], [ %.lcssa1999.ph, %._crit_edge1365.loopexit.unr-lcssa ], [ %940, %.lr.ph1364.epil ]
  %.5.lcssa = phi double [ 0.000000e+00, %899 ], [ %.lcssa2000.ph, %._crit_edge1365.loopexit.unr-lcssa ], [ %939, %.lr.ph1364.epil ]
  %942 = fcmp oge double %.41191.lcssa, 0.000000e+00
  %943 = fneg double %.41191.lcssa
  %944 = select i1 %942, double %.41191.lcssa, double %943
  %.not1288.not1369 = icmp sgt i32 %900, %.01197
  br i1 %.not1288.not1369, label %.lr.ph1375.preheader, label %._crit_edge1376

.lr.ph1375.preheader:                             ; preds = %._crit_edge1365
  %945 = sext i32 %900 to i64
  %946 = sext i32 %.01197 to i64
  %947 = sub nsw i64 %945, %946
  %xtraiter2025 = and i64 %947, 1
  %lcmp.mod2026.not = icmp eq i64 %xtraiter2025, 0
  br i1 %lcmp.mod2026.not, label %.lr.ph1375.prol.loopexit, label %.lr.ph1375.prol

.lr.ph1375.prol:                                  ; preds = %.lr.ph1375.preheader
  %948 = getelementptr inbounds double, ptr %16, i64 %945
  %949 = load double, ptr %948, align 8, !tbaa !9
  %950 = getelementptr inbounds double, ptr %15, i64 %945
  %951 = load double, ptr %950, align 8, !tbaa !9
  %952 = fdiv double %949, %951
  %953 = insertelement <2 x double> poison, double %949, i64 0
  %954 = insertelement <2 x double> %953, double %952, i64 1
  %955 = shufflevector <2 x double> %954, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %956 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %954, <2 x double> %955, <2 x double> zeroinitializer)
  %957 = extractelement <2 x double> %956, i64 0
  %958 = fadd double %944, %957
  %indvars.iv.next1593.prol = add nsw i64 %945, -1
  %959 = extractelement <2 x double> %956, i64 1
  br label %.lr.ph1375.prol.loopexit

.lr.ph1375.prol.loopexit:                         ; preds = %.lr.ph1375.prol, %.lr.ph1375.preheader
  %indvars.iv1592.unr = phi i64 [ %945, %.lr.ph1375.preheader ], [ %indvars.iv.next1593.prol, %.lr.ph1375.prol ]
  %.511921372.unr = phi double [ %944, %.lr.ph1375.preheader ], [ %958, %.lr.ph1375.prol ]
  %.unr2028 = phi <2 x double> [ zeroinitializer, %.lr.ph1375.preheader ], [ %956, %.lr.ph1375.prol ]
  %.lcssa1997.unr = phi double [ poison, %.lr.ph1375.preheader ], [ %957, %.lr.ph1375.prol ]
  %.lcssa1996.unr = phi double [ poison, %.lr.ph1375.preheader ], [ %958, %.lr.ph1375.prol ]
  %.lcssa1995.unr = phi double [ poison, %.lr.ph1375.preheader ], [ %959, %.lr.ph1375.prol ]
  %960 = add nsw i64 %945, -1
  %961 = icmp eq i64 %960, %946
  br i1 %961, label %._crit_edge1376, label %.lr.ph1375

.lr.ph1375:                                       ; preds = %.lr.ph1375.prol.loopexit, %.lr.ph1375
  %indvars.iv1592 = phi i64 [ %indvars.iv.next1593.1, %.lr.ph1375 ], [ %indvars.iv1592.unr, %.lr.ph1375.prol.loopexit ]
  %.511921372 = phi double [ %984, %.lr.ph1375 ], [ %.511921372.unr, %.lr.ph1375.prol.loopexit ]
  %962 = phi <2 x double> [ %982, %.lr.ph1375 ], [ %.unr2028, %.lr.ph1375.prol.loopexit ]
  %963 = getelementptr inbounds double, ptr %16, i64 %indvars.iv1592
  %964 = load double, ptr %963, align 8, !tbaa !9
  %965 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1592
  %966 = load double, ptr %965, align 8, !tbaa !9
  %967 = fdiv double %964, %966
  %968 = insertelement <2 x double> poison, double %964, i64 0
  %969 = insertelement <2 x double> %968, double %967, i64 1
  %970 = shufflevector <2 x double> %969, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %971 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %969, <2 x double> %970, <2 x double> %962)
  %972 = extractelement <2 x double> %971, i64 0
  %973 = fadd double %.511921372, %972
  %indvars.iv.next1593 = add nsw i64 %indvars.iv1592, -1
  %974 = getelementptr inbounds double, ptr %16, i64 %indvars.iv.next1593
  %975 = load double, ptr %974, align 8, !tbaa !9
  %976 = getelementptr inbounds double, ptr %15, i64 %indvars.iv.next1593
  %977 = load double, ptr %976, align 8, !tbaa !9
  %978 = fdiv double %975, %977
  %979 = insertelement <2 x double> poison, double %975, i64 0
  %980 = insertelement <2 x double> %979, double %978, i64 1
  %981 = shufflevector <2 x double> %980, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %982 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %980, <2 x double> %981, <2 x double> %971)
  %983 = extractelement <2 x double> %982, i64 0
  %984 = fadd double %973, %983
  %indvars.iv.next1593.1 = add nsw i64 %indvars.iv1592, -2
  %.not1288.not.1 = icmp sgt i64 %indvars.iv.next1593.1, %946
  br i1 %.not1288.not.1, label %.lr.ph1375, label %._crit_edge1376.loopexit.unr-lcssa, !llvm.loop !80

._crit_edge1376.loopexit.unr-lcssa:               ; preds = %.lr.ph1375
  %985 = extractelement <2 x double> %982, i64 1
  br label %._crit_edge1376

._crit_edge1376:                                  ; preds = %._crit_edge1376.loopexit.unr-lcssa, %.lr.ph1375.prol.loopexit, %._crit_edge1365
  %.11243.lcssa = phi double [ 0.000000e+00, %._crit_edge1365 ], [ %.lcssa1995.unr, %.lr.ph1375.prol.loopexit ], [ %985, %._crit_edge1376.loopexit.unr-lcssa ]
  %.51192.lcssa = phi double [ %944, %._crit_edge1365 ], [ %.lcssa1996.unr, %.lr.ph1375.prol.loopexit ], [ %984, %._crit_edge1376.loopexit.unr-lcssa ]
  %.11183.lcssa = phi double [ 0.000000e+00, %._crit_edge1365 ], [ %.lcssa1997.unr, %.lr.ph1375.prol.loopexit ], [ %983, %._crit_edge1376.loopexit.unr-lcssa ]
  %986 = fadd double %29, %.11183.lcssa
  %987 = fadd double %.5.lcssa, %986
  br i1 %752, label %991, label %988

988:                                              ; preds = %._crit_edge1376
  %989 = fcmp olt double %987, 0.000000e+00
  br i1 %989, label %990, label %994

990:                                              ; preds = %988
  br label %994

991:                                              ; preds = %._crit_edge1376
  %992 = fcmp ogt double %987, 0.000000e+00
  br i1 %992, label %993, label %994

993:                                              ; preds = %991
  br label %994

994:                                              ; preds = %991, %993, %988, %990
  %.not12901329 = phi i1 [ false, %990 ], [ true, %988 ], [ false, %993 ], [ true, %991 ]
  %995 = icmp eq i32 %.01197, 1
  %996 = icmp eq i32 %.01197, %900
  %or.cond1328 = or i1 %995, %996
  %997 = sext i32 %.01197 to i64
  %998 = getelementptr inbounds double, ptr %16, i64 %997
  %999 = load double, ptr %998, align 8, !tbaa !9
  %1000 = getelementptr inbounds double, ptr %15, i64 %997
  %1001 = load double, ptr %1000, align 8, !tbaa !9
  %1002 = fdiv double %999, %1001
  %1003 = fadd double %.41236.lcssa, %.11243.lcssa
  %1004 = tail call double @llvm.fmuladd.f64(double %1002, double %1002, double %1003)
  %1005 = fmul double %999, %1002
  %1006 = fadd double %987, %1005
  store double %1006, ptr %10, align 8, !tbaa !9
  %1007 = fsub double %.11183.lcssa, %.5.lcssa
  %1008 = tail call double @llvm.fmuladd.f64(double %1007, double 8.000000e+00, double %.51192.lcssa)
  %1009 = tail call double @llvm.fmuladd.f64(double %29, double 2.000000e+00, double %1008)
  %1010 = fcmp oge double %1005, 0.000000e+00
  %1011 = fneg double %1005
  %1012 = select i1 %1010, double %1005, double %1011
  %1013 = tail call double @llvm.fmuladd.f64(double %1012, double 3.000000e+00, double %1009)
  %1014 = fcmp oge double %.6118016801684, 0.000000e+00
  %1015 = fneg double %.6118016801684
  %1016 = select i1 %1014, double %.6118016801684, double %1015
  %1017 = tail call double @llvm.fmuladd.f64(double %1016, double %1004, double %1013)
  %1018 = fcmp oge double %1006, 0.000000e+00
  %1019 = fneg double %1006
  %1020 = select i1 %1018, double %1006, double %1019
  %1021 = fmul double %27, %1017
  %1022 = fcmp ugt double %1020, %1021
  br i1 %1022, label %1032, label %1023

1023:                                             ; preds = %994
  br i1 %752, label %1029, label %1024

1024:                                             ; preds = %1023
  %1025 = sext i32 %901 to i64
  %1026 = getelementptr inbounds double, ptr %17, i64 %1025
  %1027 = load double, ptr %1026, align 8, !tbaa !9
  %1028 = fadd double %.6118016801684, %1027
  store double %1028, ptr %6, align 8, !tbaa !9
  br label %.loopexit

1029:                                             ; preds = %1023
  %1030 = load double, ptr %609, align 8, !tbaa !9
  %1031 = fadd double %.6118016801684, %1030
  store double %1031, ptr %6, align 8, !tbaa !9
  br label %.loopexit

1032:                                             ; preds = %994
  %1033 = fcmp ugt double %1006, 0.000000e+00
  br i1 %1033, label %1037, label %1034

1034:                                             ; preds = %1032
  %1035 = fcmp oge double %.4121516751688, %.6118016801684
  %1036 = select i1 %1035, double %.4121516751688, double %.6118016801684
  br label %1040

1037:                                             ; preds = %1032
  %1038 = fcmp ole double %.4120716771686, %.6118016801684
  %1039 = select i1 %1038, double %.4120716771686, double %.6118016801684
  br label %1040

1040:                                             ; preds = %1037, %1034
  %.51216 = phi double [ %1036, %1034 ], [ %.4121516751688, %1037 ]
  %.51208 = phi double [ %.4120716771686, %1034 ], [ %1039, %1037 ]
  store i32 2, ptr %11, align 4, !tbaa !5
  %.not1290 = or i1 %or.cond1328, %.not12901329
  br i1 %.not1290, label %1041, label %1126

1041:                                             ; preds = %1040
  br i1 %752, label %1059, label %1042

1042:                                             ; preds = %1041
  %1043 = sext i32 %901 to i64
  %1044 = getelementptr inbounds double, ptr %16, i64 %1043
  %1045 = load double, ptr %1044, align 8, !tbaa !9
  %1046 = getelementptr inbounds double, ptr %15, i64 %1043
  %1047 = load double, ptr %1046, align 8, !tbaa !9
  %1048 = fdiv double %1045, %1047
  %1049 = load double, ptr %740, align 8, !tbaa !9
  %1050 = fneg double %1049
  %1051 = tail call double @llvm.fmuladd.f64(double %1050, double %1004, double %1006)
  %1052 = getelementptr inbounds double, ptr %17, i64 %1043
  %1053 = load double, ptr %1052, align 8, !tbaa !9
  %1054 = load double, ptr %609, align 8, !tbaa !9
  %1055 = fsub double %1053, %1054
  %1056 = fmul double %1048, %1048
  %1057 = fneg double %1055
  %1058 = tail call double @llvm.fmuladd.f64(double %1057, double %1056, double %1051)
  br label %1075

1059:                                             ; preds = %1041
  %1060 = load double, ptr %738, align 8, !tbaa !9
  %1061 = load double, ptr %740, align 8, !tbaa !9
  %1062 = fdiv double %1060, %1061
  %1063 = sext i32 %901 to i64
  %1064 = getelementptr inbounds double, ptr %15, i64 %1063
  %1065 = load double, ptr %1064, align 8, !tbaa !9
  %1066 = fneg double %1065
  %1067 = tail call double @llvm.fmuladd.f64(double %1066, double %1004, double %1006)
  %1068 = load double, ptr %609, align 8, !tbaa !9
  %1069 = getelementptr inbounds double, ptr %17, i64 %1063
  %1070 = load double, ptr %1069, align 8, !tbaa !9
  %1071 = fsub double %1068, %1070
  %1072 = fmul double %1062, %1062
  %1073 = fneg double %1071
  %1074 = tail call double @llvm.fmuladd.f64(double %1073, double %1072, double %1067)
  br label %1075

1075:                                             ; preds = %1059, %1042
  %1076 = phi double [ %1061, %1059 ], [ %1049, %1042 ]
  %1077 = phi double [ %1065, %1059 ], [ %1047, %1042 ]
  %.pre-phi = phi i64 [ %1063, %1059 ], [ %1043, %1042 ]
  %1078 = phi double [ %1074, %1059 ], [ %1058, %1042 ]
  %1079 = fadd double %1077, %1076
  %1080 = fmul double %1077, %1076
  %1081 = fneg double %1080
  %1082 = fmul double %1004, %1081
  %1083 = tail call double @llvm.fmuladd.f64(double %1079, double %1006, double %1082)
  %1084 = fmul double %1006, %1080
  %1085 = fcmp oeq double %1078, 0.000000e+00
  br i1 %1085, label %1086, label %1102

1086:                                             ; preds = %1075
  %1087 = fcmp oeq double %1083, 0.000000e+00
  br i1 %1087, label %1088, label %1100

1088:                                             ; preds = %1086
  br i1 %752, label %1095, label %1089

1089:                                             ; preds = %1088
  %1090 = getelementptr inbounds double, ptr %16, i64 %.pre-phi
  %1091 = load double, ptr %1090, align 8, !tbaa !9
  %1092 = fmul double %1076, %1076
  %1093 = fmul double %1003, %1092
  %1094 = tail call double @llvm.fmuladd.f64(double %1091, double %1091, double %1093)
  br label %1100

1095:                                             ; preds = %1088
  %1096 = load double, ptr %738, align 8, !tbaa !9
  %1097 = fmul double %1077, %1077
  %1098 = fmul double %1003, %1097
  %1099 = tail call double @llvm.fmuladd.f64(double %1096, double %1096, double %1098)
  br label %1100

1100:                                             ; preds = %1089, %1095, %1086
  %.01230 = phi double [ %1094, %1089 ], [ %1099, %1095 ], [ %1083, %1086 ]
  %1101 = fdiv double %1084, %.01230
  store double %1101, ptr %14, align 8, !tbaa !9
  br label %1185

1102:                                             ; preds = %1075
  %1103 = fcmp ugt double %1083, 0.000000e+00
  br i1 %1103, label %1115, label %1104

1104:                                             ; preds = %1102
  %1105 = fmul double %1084, -4.000000e+00
  %1106 = fmul double %1078, %1105
  %1107 = tail call double @llvm.fmuladd.f64(double %1083, double %1083, double %1106)
  %1108 = fcmp oge double %1107, 0.000000e+00
  %1109 = fneg double %1107
  %1110 = select i1 %1108, double %1107, double %1109
  %1111 = tail call double @sqrt(double noundef %1110) #6
  %1112 = fsub double %1083, %1111
  %1113 = fmul double %1078, 2.000000e+00
  %1114 = fdiv double %1112, %1113
  store double %1114, ptr %14, align 8, !tbaa !9
  br label %1185

1115:                                             ; preds = %1102
  %1116 = fmul double %1084, 2.000000e+00
  %1117 = fmul double %1084, -4.000000e+00
  %1118 = fmul double %1078, %1117
  %1119 = tail call double @llvm.fmuladd.f64(double %1083, double %1083, double %1118)
  %1120 = fcmp oge double %1119, 0.000000e+00
  %1121 = fneg double %1119
  %1122 = select i1 %1120, double %1119, double %1121
  %1123 = tail call double @sqrt(double noundef %1122) #6
  %1124 = fadd double %1083, %1123
  %1125 = fdiv double %1116, %1124
  store double %1125, ptr %14, align 8, !tbaa !9
  br label %1185

1126:                                             ; preds = %1040
  %1127 = fadd double %29, %.5.lcssa
  %1128 = fadd double %1127, %.11183.lcssa
  br i1 %752, label %1154, label %1129

1129:                                             ; preds = %1126
  %1130 = sext i32 %902 to i64
  %1131 = getelementptr inbounds double, ptr %16, i64 %1130
  %1132 = load double, ptr %1131, align 8, !tbaa !9
  %1133 = getelementptr inbounds double, ptr %15, i64 %1130
  %1134 = load double, ptr %1133, align 8, !tbaa !9
  %1135 = fdiv double %1132, %1134
  %1136 = fmul double %1135, %1135
  %1137 = sext i32 %903 to i64
  %1138 = getelementptr inbounds double, ptr %15, i64 %1137
  %1139 = load double, ptr %1138, align 8, !tbaa !9
  %1140 = fneg double %1139
  %1141 = tail call double @llvm.fmuladd.f64(double %1140, double %1003, double %1128)
  %1142 = getelementptr inbounds double, ptr %17, i64 %1130
  %1143 = load double, ptr %1142, align 8, !tbaa !9
  %1144 = getelementptr inbounds double, ptr %17, i64 %1137
  %1145 = load double, ptr %1144, align 8, !tbaa !9
  %1146 = fsub double %1143, %1145
  %1147 = fneg double %1146
  %1148 = tail call double @llvm.fmuladd.f64(double %1147, double %1136, double %1141)
  %1149 = fmul double %1132, %1132
  %1150 = fmul double %1139, %1139
  %1151 = fsub double %.41236.lcssa, %1136
  %1152 = fadd double %.11243.lcssa, %1151
  %1153 = fmul double %1150, %1152
  br label %1179

1154:                                             ; preds = %1126
  %1155 = sext i32 %903 to i64
  %1156 = getelementptr inbounds double, ptr %16, i64 %1155
  %1157 = load double, ptr %1156, align 8, !tbaa !9
  %1158 = getelementptr inbounds double, ptr %15, i64 %1155
  %1159 = load double, ptr %1158, align 8, !tbaa !9
  %1160 = fdiv double %1157, %1159
  %1161 = fmul double %1160, %1160
  %1162 = sext i32 %902 to i64
  %1163 = getelementptr inbounds double, ptr %15, i64 %1162
  %1164 = load double, ptr %1163, align 8, !tbaa !9
  %1165 = fneg double %1164
  %1166 = tail call double @llvm.fmuladd.f64(double %1165, double %1003, double %1128)
  %1167 = getelementptr inbounds double, ptr %17, i64 %1155
  %1168 = load double, ptr %1167, align 8, !tbaa !9
  %1169 = getelementptr inbounds double, ptr %17, i64 %1162
  %1170 = load double, ptr %1169, align 8, !tbaa !9
  %1171 = fsub double %1168, %1170
  %1172 = fneg double %1171
  %1173 = tail call double @llvm.fmuladd.f64(double %1172, double %1161, double %1166)
  %1174 = fmul double %1164, %1164
  %1175 = fsub double %.11243.lcssa, %1161
  %1176 = fadd double %.41236.lcssa, %1175
  %1177 = fmul double %1174, %1176
  %1178 = fmul double %1157, %1157
  br label %1179

1179:                                             ; preds = %1154, %1129
  %.pre-phi1670 = phi i64 [ %1162, %1154 ], [ %1130, %1129 ]
  %.sink1663 = phi double [ %1173, %1154 ], [ %1148, %1129 ]
  %.sink1662 = phi double [ %1177, %1154 ], [ %1149, %1129 ]
  %.sink = phi double [ %1178, %1154 ], [ %1153, %1129 ]
  store double %.sink1663, ptr %9, align 8
  store double %.sink1662, ptr %12, align 16
  %1180 = getelementptr inbounds i8, ptr %12, i64 16
  store double %.sink, ptr %1180, align 16
  %1181 = fmul double %999, %999
  %1182 = getelementptr inbounds i8, ptr %12, i64 8
  store double %1181, ptr %1182, align 8, !tbaa !9
  %1183 = getelementptr inbounds double, ptr %15, i64 %.pre-phi1670
  call void @dlaed6_(ptr noundef nonnull %11, ptr noundef nonnull %13, ptr noundef nonnull %9, ptr noundef nonnull %1183, ptr noundef nonnull %12, ptr noundef nonnull %10, ptr noundef nonnull %14, ptr noundef nonnull %7) #6
  %1184 = load i32, ptr %7, align 4, !tbaa !5
  %.not1294 = icmp eq i32 %1184, 0
  br i1 %.not1294, label %._crit_edge1664, label %.loopexit

._crit_edge1664:                                  ; preds = %1179
  %.pre = load double, ptr %10, align 8, !tbaa !9
  %.pre1665 = load double, ptr %14, align 8, !tbaa !9
  br label %1185

1185:                                             ; preds = %._crit_edge1664, %1100, %1115, %1104
  %1186 = phi double [ %.pre1665, %._crit_edge1664 ], [ %1101, %1100 ], [ %1125, %1115 ], [ %1114, %1104 ]
  %1187 = phi double [ %.pre, %._crit_edge1664 ], [ %1006, %1100 ], [ %1006, %1115 ], [ %1006, %1104 ]
  %1188 = fmul double %1187, %1186
  %1189 = fcmp ult double %1188, 0.000000e+00
  br i1 %1189, label %1193, label %1190

1190:                                             ; preds = %1185
  %1191 = fneg double %1187
  %1192 = fdiv double %1191, %1004
  store double %1192, ptr %14, align 8, !tbaa !9
  br label %1193

1193:                                             ; preds = %1190, %1185
  %1194 = phi double [ %1192, %1190 ], [ %1186, %1185 ]
  %1195 = fadd double %.6118016801684, %1194
  %1196 = fcmp ogt double %1195, %.51208
  %1197 = fcmp olt double %1195, %.51216
  %or.cond1326 = select i1 %1196, i1 true, i1 %1197
  br i1 %or.cond1326, label %1198, label %1206

1198:                                             ; preds = %1193
  %1199 = fcmp olt double %1187, 0.000000e+00
  br i1 %1199, label %1200, label %1203

1200:                                             ; preds = %1198
  %1201 = fsub double %.51208, %.6118016801684
  %1202 = fmul double %1201, 5.000000e-01
  store double %1202, ptr %14, align 8, !tbaa !9
  br label %1206

1203:                                             ; preds = %1198
  %1204 = fsub double %.51216, %.6118016801684
  %1205 = fmul double %1204, 5.000000e-01
  store double %1205, ptr %14, align 8, !tbaa !9
  br label %1206

1206:                                             ; preds = %1193, %1200, %1203
  %1207 = phi double [ %1194, %1193 ], [ %1202, %1200 ], [ %1205, %1203 ]
  %1208 = load i32, ptr %0, align 4, !tbaa !5
  %.not12951380 = icmp slt i32 %1208, 1
  br i1 %.not12951380, label %.preheader1330, label %.lr.ph1383

.lr.ph1383:                                       ; preds = %1206
  %1209 = add nuw i32 %1208, 1
  %wide.trip.count1598 = zext i32 %1209 to i64
  %1210 = zext nneg i32 %1208 to i64
  %min.iters.check1840 = icmp ult i32 %1208, 4
  br i1 %min.iters.check1840, label %scalar.ph1839.preheader, label %vector.ph1841

scalar.ph1839.preheader:                          ; preds = %middle.block1838, %.lr.ph1383
  %indvars.iv1595.ph = phi i64 [ 1, %.lr.ph1383 ], [ %ind.end1844, %middle.block1838 ]
  br label %scalar.ph1839

vector.ph1841:                                    ; preds = %.lr.ph1383
  %n.vec1843 = and i64 %1210, 2147483644
  %ind.end1844 = or disjoint i64 %n.vec1843, 1
  %broadcast.splatinsert = insertelement <2 x double> poison, double %1207, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1846

vector.body1846:                                  ; preds = %vector.body1846, %vector.ph1841
  %index1847 = phi i64 [ 0, %vector.ph1841 ], [ %index.next1851, %vector.body1846 ]
  %1211 = getelementptr double, ptr %4, i64 %index1847
  %1212 = getelementptr inbounds i8, ptr %1211, i64 16
  %wide.load1849 = load <2 x double>, ptr %1211, align 8, !tbaa !9
  %wide.load1850 = load <2 x double>, ptr %1212, align 8, !tbaa !9
  %1213 = fsub <2 x double> %wide.load1849, %broadcast.splat
  %1214 = fsub <2 x double> %wide.load1850, %broadcast.splat
  store <2 x double> %1213, ptr %1211, align 8, !tbaa !9
  store <2 x double> %1214, ptr %1212, align 8, !tbaa !9
  %index.next1851 = add nuw i64 %index1847, 4
  %1215 = icmp eq i64 %index.next1851, %n.vec1843
  br i1 %1215, label %middle.block1838, label %vector.body1846, !llvm.loop !81

middle.block1838:                                 ; preds = %vector.body1846
  %cmp.n1852 = icmp eq i64 %n.vec1843, %1210
  br i1 %cmp.n1852, label %.preheader1330, label %scalar.ph1839.preheader

.preheader1330:                                   ; preds = %scalar.ph1839, %middle.block1838, %1206
  br i1 %.not1287.not1358, label %.lr.ph1389.preheader, label %._crit_edge1390

.lr.ph1389.preheader:                             ; preds = %.preheader1330
  %wide.trip.count1603 = zext nneg i32 %.01197 to i64
  %1216 = add nsw i64 %wide.trip.count1603, -1
  %xtraiter2029 = and i64 %1216, 1
  %1217 = icmp eq i32 %.01197, 2
  br i1 %1217, label %._crit_edge1390.loopexit.unr-lcssa, label %.lr.ph1389.preheader.new

.lr.ph1389.preheader.new:                         ; preds = %.lr.ph1389.preheader
  %unroll_iter2036 = and i64 %1216, -2
  br label %.lr.ph1389

scalar.ph1839:                                    ; preds = %scalar.ph1839.preheader, %scalar.ph1839
  %indvars.iv1595 = phi i64 [ %indvars.iv.next1596, %scalar.ph1839 ], [ %indvars.iv1595.ph, %scalar.ph1839.preheader ]
  %1218 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1595
  %1219 = load double, ptr %1218, align 8, !tbaa !9
  %1220 = fsub double %1219, %1207
  store double %1220, ptr %1218, align 8, !tbaa !9
  %indvars.iv.next1596 = add nuw nsw i64 %indvars.iv1595, 1
  %exitcond1599.not = icmp eq i64 %indvars.iv.next1596, %wide.trip.count1598
  br i1 %exitcond1599.not, label %.preheader1330, label %scalar.ph1839, !llvm.loop !82

.lr.ph1389:                                       ; preds = %.lr.ph1389, %.lr.ph1389.preheader.new
  %indvars.iv1600 = phi i64 [ 1, %.lr.ph1389.preheader.new ], [ %indvars.iv.next1601.1, %.lr.ph1389 ]
  %.611931387 = phi double [ 0.000000e+00, %.lr.ph1389.preheader.new ], [ %1243, %.lr.ph1389 ]
  %1221 = phi <2 x double> [ zeroinitializer, %.lr.ph1389.preheader.new ], [ %1241, %.lr.ph1389 ]
  %niter2037 = phi i64 [ 0, %.lr.ph1389.preheader.new ], [ %niter2037.next.1, %.lr.ph1389 ]
  %1222 = getelementptr inbounds double, ptr %16, i64 %indvars.iv1600
  %1223 = load double, ptr %1222, align 8, !tbaa !9
  %1224 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1600
  %1225 = load double, ptr %1224, align 8, !tbaa !9
  %1226 = fdiv double %1223, %1225
  %1227 = insertelement <2 x double> poison, double %1223, i64 0
  %1228 = insertelement <2 x double> %1227, double %1226, i64 1
  %1229 = shufflevector <2 x double> %1228, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %1230 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1228, <2 x double> %1229, <2 x double> %1221)
  %1231 = extractelement <2 x double> %1230, i64 0
  %1232 = fadd double %.611931387, %1231
  %1233 = getelementptr double, ptr %3, i64 %indvars.iv1600
  %1234 = load double, ptr %1233, align 8, !tbaa !9
  %1235 = getelementptr double, ptr %4, i64 %indvars.iv1600
  %1236 = load double, ptr %1235, align 8, !tbaa !9
  %1237 = fdiv double %1234, %1236
  %1238 = insertelement <2 x double> poison, double %1234, i64 0
  %1239 = insertelement <2 x double> %1238, double %1237, i64 1
  %1240 = shufflevector <2 x double> %1239, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %1241 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1239, <2 x double> %1240, <2 x double> %1230)
  %1242 = extractelement <2 x double> %1241, i64 0
  %1243 = fadd double %1232, %1242
  %indvars.iv.next1601.1 = add nuw nsw i64 %indvars.iv1600, 2
  %niter2037.next.1 = add i64 %niter2037, 2
  %niter2037.ncmp.1 = icmp eq i64 %niter2037.next.1, %unroll_iter2036
  br i1 %niter2037.ncmp.1, label %._crit_edge1390.loopexit.unr-lcssa.loopexit, label %.lr.ph1389, !llvm.loop !83

._crit_edge1390.loopexit.unr-lcssa.loopexit:      ; preds = %.lr.ph1389
  %1244 = extractelement <2 x double> %1241, i64 1
  br label %._crit_edge1390.loopexit.unr-lcssa

._crit_edge1390.loopexit.unr-lcssa:               ; preds = %._crit_edge1390.loopexit.unr-lcssa.loopexit, %.lr.ph1389.preheader
  %.lcssa1994.ph = phi double [ poison, %.lr.ph1389.preheader ], [ %1242, %._crit_edge1390.loopexit.unr-lcssa.loopexit ]
  %.lcssa1993.ph = phi double [ poison, %.lr.ph1389.preheader ], [ %1243, %._crit_edge1390.loopexit.unr-lcssa.loopexit ]
  %.lcssa1992.ph = phi double [ poison, %.lr.ph1389.preheader ], [ %1244, %._crit_edge1390.loopexit.unr-lcssa.loopexit ]
  %indvars.iv1600.unr = phi i64 [ 1, %.lr.ph1389.preheader ], [ %indvars.iv.next1601.1, %._crit_edge1390.loopexit.unr-lcssa.loopexit ]
  %.611931387.unr = phi double [ 0.000000e+00, %.lr.ph1389.preheader ], [ %1243, %._crit_edge1390.loopexit.unr-lcssa.loopexit ]
  %.unr2031 = phi <2 x double> [ zeroinitializer, %.lr.ph1389.preheader ], [ %1241, %._crit_edge1390.loopexit.unr-lcssa.loopexit ]
  %lcmp.mod2032.not = icmp eq i64 %xtraiter2029, 0
  br i1 %lcmp.mod2032.not, label %._crit_edge1390, label %.lr.ph1389.epil

.lr.ph1389.epil:                                  ; preds = %._crit_edge1390.loopexit.unr-lcssa
  %1245 = getelementptr inbounds double, ptr %16, i64 %indvars.iv1600.unr
  %1246 = load double, ptr %1245, align 8, !tbaa !9
  %1247 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1600.unr
  %1248 = load double, ptr %1247, align 8, !tbaa !9
  %1249 = fdiv double %1246, %1248
  %1250 = insertelement <2 x double> poison, double %1246, i64 0
  %1251 = insertelement <2 x double> %1250, double %1249, i64 1
  %1252 = shufflevector <2 x double> %1251, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %1253 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1251, <2 x double> %1252, <2 x double> %.unr2031)
  %1254 = extractelement <2 x double> %1253, i64 0
  %1255 = fadd double %.611931387.unr, %1254
  %1256 = extractelement <2 x double> %1253, i64 1
  br label %._crit_edge1390

._crit_edge1390:                                  ; preds = %.lr.ph1389.epil, %._crit_edge1390.loopexit.unr-lcssa, %.preheader1330
  %.51237.lcssa = phi double [ 0.000000e+00, %.preheader1330 ], [ %.lcssa1992.ph, %._crit_edge1390.loopexit.unr-lcssa ], [ %1256, %.lr.ph1389.epil ]
  %.61193.lcssa = phi double [ 0.000000e+00, %.preheader1330 ], [ %.lcssa1993.ph, %._crit_edge1390.loopexit.unr-lcssa ], [ %1255, %.lr.ph1389.epil ]
  %.6.lcssa = phi double [ 0.000000e+00, %.preheader1330 ], [ %.lcssa1994.ph, %._crit_edge1390.loopexit.unr-lcssa ], [ %1254, %.lr.ph1389.epil ]
  %1257 = fcmp oge double %.61193.lcssa, 0.000000e+00
  %1258 = fneg double %.61193.lcssa
  %1259 = select i1 %1257, double %.61193.lcssa, double %1258
  %.not1297.not1394 = icmp sgt i32 %1208, %.01197
  br i1 %.not1297.not1394, label %.lr.ph1400.preheader, label %._crit_edge1401

.lr.ph1400.preheader:                             ; preds = %._crit_edge1390
  %1260 = sext i32 %1208 to i64
  %1261 = sub nsw i64 %1260, %997
  %xtraiter2038 = and i64 %1261, 1
  %lcmp.mod2039.not = icmp eq i64 %xtraiter2038, 0
  br i1 %lcmp.mod2039.not, label %.lr.ph1400.prol.loopexit, label %.lr.ph1400.prol

.lr.ph1400.prol:                                  ; preds = %.lr.ph1400.preheader
  %1262 = getelementptr inbounds double, ptr %16, i64 %1260
  %1263 = load double, ptr %1262, align 8, !tbaa !9
  %1264 = getelementptr inbounds double, ptr %15, i64 %1260
  %1265 = load double, ptr %1264, align 8, !tbaa !9
  %1266 = fdiv double %1263, %1265
  %1267 = insertelement <2 x double> poison, double %1263, i64 0
  %1268 = insertelement <2 x double> %1267, double %1266, i64 1
  %1269 = shufflevector <2 x double> %1268, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %1270 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1268, <2 x double> %1269, <2 x double> zeroinitializer)
  %1271 = extractelement <2 x double> %1270, i64 0
  %1272 = fadd double %1259, %1271
  %indvars.iv.next1606.prol = add nsw i64 %1260, -1
  %1273 = extractelement <2 x double> %1270, i64 1
  br label %.lr.ph1400.prol.loopexit

.lr.ph1400.prol.loopexit:                         ; preds = %.lr.ph1400.prol, %.lr.ph1400.preheader
  %indvars.iv1605.unr = phi i64 [ %1260, %.lr.ph1400.preheader ], [ %indvars.iv.next1606.prol, %.lr.ph1400.prol ]
  %.711941397.unr = phi double [ %1259, %.lr.ph1400.preheader ], [ %1272, %.lr.ph1400.prol ]
  %.unr2041 = phi <2 x double> [ zeroinitializer, %.lr.ph1400.preheader ], [ %1270, %.lr.ph1400.prol ]
  %.lcssa1991.unr = phi double [ poison, %.lr.ph1400.preheader ], [ %1271, %.lr.ph1400.prol ]
  %.lcssa1990.unr = phi double [ poison, %.lr.ph1400.preheader ], [ %1272, %.lr.ph1400.prol ]
  %.lcssa1989.unr = phi double [ poison, %.lr.ph1400.preheader ], [ %1273, %.lr.ph1400.prol ]
  %1274 = add nsw i64 %1260, -1
  %1275 = icmp eq i64 %1274, %997
  br i1 %1275, label %._crit_edge1401, label %.lr.ph1400

.lr.ph1400:                                       ; preds = %.lr.ph1400.prol.loopexit, %.lr.ph1400
  %indvars.iv1605 = phi i64 [ %indvars.iv.next1606.1, %.lr.ph1400 ], [ %indvars.iv1605.unr, %.lr.ph1400.prol.loopexit ]
  %.711941397 = phi double [ %1298, %.lr.ph1400 ], [ %.711941397.unr, %.lr.ph1400.prol.loopexit ]
  %1276 = phi <2 x double> [ %1296, %.lr.ph1400 ], [ %.unr2041, %.lr.ph1400.prol.loopexit ]
  %1277 = getelementptr inbounds double, ptr %16, i64 %indvars.iv1605
  %1278 = load double, ptr %1277, align 8, !tbaa !9
  %1279 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1605
  %1280 = load double, ptr %1279, align 8, !tbaa !9
  %1281 = fdiv double %1278, %1280
  %1282 = insertelement <2 x double> poison, double %1278, i64 0
  %1283 = insertelement <2 x double> %1282, double %1281, i64 1
  %1284 = shufflevector <2 x double> %1283, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %1285 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1283, <2 x double> %1284, <2 x double> %1276)
  %1286 = extractelement <2 x double> %1285, i64 0
  %1287 = fadd double %.711941397, %1286
  %indvars.iv.next1606 = add nsw i64 %indvars.iv1605, -1
  %1288 = getelementptr inbounds double, ptr %16, i64 %indvars.iv.next1606
  %1289 = load double, ptr %1288, align 8, !tbaa !9
  %1290 = getelementptr inbounds double, ptr %15, i64 %indvars.iv.next1606
  %1291 = load double, ptr %1290, align 8, !tbaa !9
  %1292 = fdiv double %1289, %1291
  %1293 = insertelement <2 x double> poison, double %1289, i64 0
  %1294 = insertelement <2 x double> %1293, double %1292, i64 1
  %1295 = shufflevector <2 x double> %1294, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %1296 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1294, <2 x double> %1295, <2 x double> %1285)
  %1297 = extractelement <2 x double> %1296, i64 0
  %1298 = fadd double %1287, %1297
  %indvars.iv.next1606.1 = add nsw i64 %indvars.iv1605, -2
  %.not1297.not.1 = icmp sgt i64 %indvars.iv.next1606.1, %997
  br i1 %.not1297.not.1, label %.lr.ph1400, label %._crit_edge1401.loopexit.unr-lcssa, !llvm.loop !84

._crit_edge1401.loopexit.unr-lcssa:               ; preds = %.lr.ph1400
  %1299 = extractelement <2 x double> %1296, i64 1
  br label %._crit_edge1401

._crit_edge1401:                                  ; preds = %._crit_edge1401.loopexit.unr-lcssa, %.lr.ph1400.prol.loopexit, %._crit_edge1390
  %.21244.lcssa = phi double [ 0.000000e+00, %._crit_edge1390 ], [ %.lcssa1989.unr, %.lr.ph1400.prol.loopexit ], [ %1299, %._crit_edge1401.loopexit.unr-lcssa ]
  %.71194.lcssa = phi double [ %1259, %._crit_edge1390 ], [ %.lcssa1990.unr, %.lr.ph1400.prol.loopexit ], [ %1298, %._crit_edge1401.loopexit.unr-lcssa ]
  %.21184.lcssa = phi double [ 0.000000e+00, %._crit_edge1390 ], [ %.lcssa1991.unr, %.lr.ph1400.prol.loopexit ], [ %1297, %._crit_edge1401.loopexit.unr-lcssa ]
  %1300 = load double, ptr %998, align 8, !tbaa !9
  %1301 = load double, ptr %1000, align 8, !tbaa !9
  %1302 = fdiv double %1300, %1301
  %1303 = fadd double %.51237.lcssa, %.21244.lcssa
  %1304 = call double @llvm.fmuladd.f64(double %1302, double %1302, double %1303)
  %1305 = fmul double %1300, %1302
  %1306 = fadd double %29, %.21184.lcssa
  %1307 = fadd double %.6.lcssa, %1306
  %1308 = fadd double %1307, %1305
  store double %1308, ptr %10, align 8, !tbaa !9
  %1309 = fsub double %.21184.lcssa, %.6.lcssa
  %1310 = call double @llvm.fmuladd.f64(double %1309, double 8.000000e+00, double %.71194.lcssa)
  %1311 = call double @llvm.fmuladd.f64(double %29, double 2.000000e+00, double %1310)
  %1312 = fcmp oge double %1305, 0.000000e+00
  %1313 = fneg double %1305
  %1314 = select i1 %1312, double %1305, double %1313
  %1315 = call double @llvm.fmuladd.f64(double %1314, double 3.000000e+00, double %1311)
  %1316 = fadd double %.6118016801684, %1207
  %1317 = fcmp oge double %1316, 0.000000e+00
  %1318 = fneg double %1316
  %1319 = select i1 %1317, double %1316, double %1318
  %1320 = call double @llvm.fmuladd.f64(double %1319, double %1304, double %1315)
  %1321 = load i32, ptr %13, align 4, !tbaa !5
  %.not1298 = icmp eq i32 %1321, 0
  br i1 %.not1298, label %1330, label %1322

1322:                                             ; preds = %._crit_edge1401
  %1323 = fneg double %1308
  %1324 = fcmp oge double %1187, 0.000000e+00
  %1325 = fneg double %1187
  %1326 = select i1 %1324, double %1187, double %1325
  %1327 = fdiv double %1326, 1.000000e+01
  %1328 = fcmp olt double %1327, %1323
  br i1 %1328, label %1329, label %1337

1329:                                             ; preds = %1322
  br label %1337

1330:                                             ; preds = %._crit_edge1401
  %1331 = fcmp oge double %1187, 0.000000e+00
  %1332 = fneg double %1187
  %1333 = select i1 %1331, double %1187, double %1332
  %1334 = fdiv double %1333, 1.000000e+01
  %1335 = fcmp ogt double %1308, %1334
  br i1 %1335, label %1336, label %1337

1336:                                             ; preds = %1330
  br label %1337

1337:                                             ; preds = %1330, %1336, %1322, %1329
  %.01200 = phi i32 [ 1, %1329 ], [ 0, %1322 ], [ 1, %1336 ], [ 0, %1330 ]
  %storemerge1299.in1432 = load i32, ptr %11, align 4, !tbaa !5
  %storemerge12991433 = add nsw i32 %storemerge1299.in1432, 1
  store i32 %storemerge12991433, ptr %11, align 4, !tbaa !5
  %1338 = icmp slt i32 %storemerge1299.in1432, 30
  br i1 %1338, label %.lr.ph1445, label %._crit_edge1446

.lr.ph1445:                                       ; preds = %1337
  %1339 = sext i32 %902 to i64
  %1340 = getelementptr inbounds double, ptr %15, i64 %1339
  %1341 = sext i32 %903 to i64
  %1342 = getelementptr inbounds double, ptr %15, i64 %1341
  %1343 = getelementptr inbounds i8, ptr %12, i64 16
  %1344 = getelementptr inbounds double, ptr %16, i64 %1339
  %1345 = getelementptr inbounds double, ptr %17, i64 %1339
  %1346 = getelementptr inbounds double, ptr %17, i64 %1341
  %1347 = getelementptr inbounds double, ptr %16, i64 %1341
  %wide.trip.count1616 = zext i32 %.01197 to i64
  %1348 = add nsw i64 %wide.trip.count1616, -1
  %xtraiter2042 = and i64 %1348, 1
  %1349 = icmp eq i32 %.01197, 2
  %unroll_iter2049 = and i64 %1348, -2
  %lcmp.mod2045.not = icmp eq i64 %xtraiter2042, 0
  br label %1350

1350:                                             ; preds = %.lr.ph1445, %1694
  %1351 = phi double [ %1301, %.lr.ph1445 ], [ %1662, %1694 ]
  %1352 = phi double [ %1300, %.lr.ph1445 ], [ %1661, %1694 ]
  %1353 = phi double [ %1308, %.lr.ph1445 ], [ %1669, %1694 ]
  %.71443 = phi double [ %.6.lcssa, %.lr.ph1445 ], [ %.8.lcssa, %1694 ]
  %.711811442 = phi double [ %1316, %.lr.ph1445 ], [ %1581, %1694 ]
  %.311851441 = phi double [ %.21184.lcssa, %.lr.ph1445 ], [ %.41186.lcssa, %1694 ]
  %.811951440 = phi double [ %1320, %.lr.ph1445 ], [ %1680, %1694 ]
  %.011961439 = phi double [ %1304, %.lr.ph1445 ], [ %1665, %1694 ]
  %.112011438 = phi i32 [ %.01200, %.lr.ph1445 ], [ %.21202, %1694 ]
  %.612091437 = phi double [ %.51208, %.lr.ph1445 ], [ %.71210, %1694 ]
  %.612171436 = phi double [ %.51216, %.lr.ph1445 ], [ %.71218, %1694 ]
  %.612381435 = phi double [ %.51237.lcssa, %.lr.ph1445 ], [ %.91241.lcssa, %1694 ]
  %.312451434 = phi double [ %.21244.lcssa, %.lr.ph1445 ], [ %.61248.lcssa, %1694 ]
  %1354 = fcmp oge double %1353, 0.000000e+00
  %1355 = fneg double %1353
  %1356 = select i1 %1354, double %1353, double %1355
  %1357 = fmul double %27, %.811951440
  %1358 = fcmp ugt double %1356, %1357
  br i1 %1358, label %1370, label %1359

1359:                                             ; preds = %1350
  %1360 = load i32, ptr %13, align 4, !tbaa !5
  %.not1312 = icmp eq i32 %1360, 0
  br i1 %.not1312, label %1367, label %1361

1361:                                             ; preds = %1359
  %1362 = load i32, ptr %1, align 4, !tbaa !5
  %1363 = sext i32 %1362 to i64
  %1364 = getelementptr inbounds double, ptr %17, i64 %1363
  %1365 = load double, ptr %1364, align 8, !tbaa !9
  %1366 = fadd double %.711811442, %1365
  store double %1366, ptr %6, align 8, !tbaa !9
  br label %.loopexit

1367:                                             ; preds = %1359
  %1368 = load double, ptr %609, align 8, !tbaa !9
  %1369 = fadd double %.711811442, %1368
  store double %1369, ptr %6, align 8, !tbaa !9
  br label %.loopexit

1370:                                             ; preds = %1350
  %1371 = fcmp ugt double %1353, 0.000000e+00
  br i1 %1371, label %1375, label %1372

1372:                                             ; preds = %1370
  %1373 = fcmp oge double %.612171436, %.711811442
  %1374 = select i1 %1373, double %.612171436, double %.711811442
  br label %1378

1375:                                             ; preds = %1370
  %1376 = fcmp ole double %.612091437, %.711811442
  %1377 = select i1 %1376, double %.612091437, double %.711811442
  br label %1378

1378:                                             ; preds = %1375, %1372
  %.71218 = phi double [ %1374, %1372 ], [ %.612171436, %1375 ]
  %.71210 = phi double [ %.612091437, %1372 ], [ %1377, %1375 ]
  br i1 %.not1290, label %1379, label %1492

1379:                                             ; preds = %1378
  %.not1301 = icmp eq i32 %.112011438, 0
  br i1 %.not1301, label %1380, label %1417

1380:                                             ; preds = %1379
  %1381 = load i32, ptr %13, align 4, !tbaa !5
  %.not1302 = icmp eq i32 %1381, 0
  br i1 %.not1302, label %1400, label %1382

1382:                                             ; preds = %1380
  %1383 = load i32, ptr %1, align 4, !tbaa !5
  %1384 = sext i32 %1383 to i64
  %1385 = getelementptr inbounds double, ptr %16, i64 %1384
  %1386 = load double, ptr %1385, align 8, !tbaa !9
  %1387 = getelementptr inbounds double, ptr %15, i64 %1384
  %1388 = load double, ptr %1387, align 8, !tbaa !9
  %1389 = fdiv double %1386, %1388
  %1390 = load double, ptr %740, align 8, !tbaa !9
  %1391 = fneg double %1390
  %1392 = call double @llvm.fmuladd.f64(double %1391, double %.011961439, double %1353)
  %1393 = getelementptr inbounds double, ptr %17, i64 %1384
  %1394 = load double, ptr %1393, align 8, !tbaa !9
  %1395 = load double, ptr %609, align 8, !tbaa !9
  %1396 = fsub double %1394, %1395
  %1397 = fmul double %1389, %1389
  %1398 = fneg double %1396
  %1399 = call double @llvm.fmuladd.f64(double %1398, double %1397, double %1392)
  store double %1399, ptr %9, align 8, !tbaa !9
  br label %1431

1400:                                             ; preds = %1380
  %1401 = load double, ptr %738, align 8, !tbaa !9
  %1402 = load double, ptr %740, align 8, !tbaa !9
  %1403 = fdiv double %1401, %1402
  %1404 = load i32, ptr %1, align 4, !tbaa !5
  %1405 = sext i32 %1404 to i64
  %1406 = getelementptr inbounds double, ptr %15, i64 %1405
  %1407 = load double, ptr %1406, align 8, !tbaa !9
  %1408 = fneg double %1407
  %1409 = call double @llvm.fmuladd.f64(double %1408, double %.011961439, double %1353)
  %1410 = load double, ptr %609, align 8, !tbaa !9
  %1411 = getelementptr inbounds double, ptr %17, i64 %1405
  %1412 = load double, ptr %1411, align 8, !tbaa !9
  %1413 = fsub double %1410, %1412
  %1414 = fmul double %1403, %1403
  %1415 = fneg double %1413
  %1416 = call double @llvm.fmuladd.f64(double %1415, double %1414, double %1409)
  store double %1416, ptr %9, align 8, !tbaa !9
  br label %1431

1417:                                             ; preds = %1379
  %1418 = fdiv double %1352, %1351
  %1419 = load i32, ptr %13, align 4, !tbaa !5
  %.not1303 = icmp eq i32 %1419, 0
  %1420 = call double @llvm.fmuladd.f64(double %1418, double %1418, double %.612381435)
  %1421 = call double @llvm.fmuladd.f64(double %1418, double %1418, double %.312451434)
  %.41246 = select i1 %.not1303, double %1421, double %.312451434
  %.71239 = select i1 %.not1303, double %.612381435, double %1420
  %1422 = load i32, ptr %1, align 4, !tbaa !5
  %1423 = sext i32 %1422 to i64
  %1424 = getelementptr inbounds double, ptr %15, i64 %1423
  %1425 = load double, ptr %1424, align 8, !tbaa !9
  %1426 = fneg double %1425
  %1427 = call double @llvm.fmuladd.f64(double %1426, double %.71239, double %1353)
  %1428 = load double, ptr %740, align 8, !tbaa !9
  %1429 = fneg double %1428
  %1430 = call double @llvm.fmuladd.f64(double %1429, double %.41246, double %1427)
  store double %1430, ptr %9, align 8, !tbaa !9
  br label %1431

1431:                                             ; preds = %1382, %1400, %1417
  %1432 = phi i32 [ 1, %1382 ], [ 0, %1400 ], [ %1419, %1417 ]
  %1433 = phi double [ %1399, %1382 ], [ %1416, %1400 ], [ %1430, %1417 ]
  %1434 = phi double [ %1390, %1382 ], [ %1402, %1400 ], [ %1428, %1417 ]
  %1435 = phi double [ %1388, %1382 ], [ %1407, %1400 ], [ %1425, %1417 ]
  %.pre-phi1666 = phi i64 [ %1384, %1382 ], [ %1405, %1400 ], [ %1423, %1417 ]
  %.51247 = phi double [ %.312451434, %1382 ], [ %.312451434, %1400 ], [ %.41246, %1417 ]
  %.81240 = phi double [ %.612381435, %1382 ], [ %.612381435, %1400 ], [ %.71239, %1417 ]
  %1436 = fadd double %1435, %1434
  %1437 = fmul double %1435, %1434
  %1438 = fneg double %1437
  %1439 = fmul double %.011961439, %1438
  %1440 = call double @llvm.fmuladd.f64(double %1436, double %1353, double %1439)
  %1441 = fmul double %1353, %1437
  %1442 = fcmp oeq double %1433, 0.000000e+00
  br i1 %1442, label %1443, label %1467

1443:                                             ; preds = %1431
  %1444 = fcmp oeq double %1440, 0.000000e+00
  br i1 %1444, label %1445, label %1465

1445:                                             ; preds = %1443
  br i1 %.not1301, label %1446, label %1460

1446:                                             ; preds = %1445
  %.not1304 = icmp eq i32 %1432, 0
  br i1 %.not1304, label %1454, label %1447

1447:                                             ; preds = %1446
  %1448 = getelementptr inbounds double, ptr %16, i64 %.pre-phi1666
  %1449 = load double, ptr %1448, align 8, !tbaa !9
  %1450 = fmul double %1434, %1434
  %1451 = fadd double %.51247, %.81240
  %1452 = fmul double %1451, %1450
  %1453 = call double @llvm.fmuladd.f64(double %1449, double %1449, double %1452)
  br label %1465

1454:                                             ; preds = %1446
  %1455 = load double, ptr %738, align 8, !tbaa !9
  %1456 = fmul double %1435, %1435
  %1457 = fadd double %.51247, %.81240
  %1458 = fmul double %1457, %1456
  %1459 = call double @llvm.fmuladd.f64(double %1455, double %1455, double %1458)
  br label %1465

1460:                                             ; preds = %1445
  %1461 = fmul double %1435, %1435
  %1462 = fmul double %1434, %1434
  %1463 = fmul double %.51247, %1462
  %1464 = call double @llvm.fmuladd.f64(double %1461, double %.81240, double %1463)
  br label %1465

1465:                                             ; preds = %1460, %1454, %1447, %1443
  %.11231 = phi double [ %1464, %1460 ], [ %1453, %1447 ], [ %1459, %1454 ], [ %1440, %1443 ]
  %1466 = fdiv double %1441, %.11231
  store double %1466, ptr %14, align 8, !tbaa !9
  br label %1547

1467:                                             ; preds = %1431
  %1468 = fcmp ugt double %1440, 0.000000e+00
  br i1 %1468, label %1481, label %1469

1469:                                             ; preds = %1467
  %1470 = fmul double %1441, -4.000000e+00
  %1471 = fmul double %1433, %1470
  %1472 = call double @llvm.fmuladd.f64(double %1440, double %1440, double %1471)
  %1473 = fcmp oge double %1472, 0.000000e+00
  %1474 = fneg double %1472
  %1475 = select i1 %1473, double %1472, double %1474
  %1476 = call double @sqrt(double noundef %1475) #6
  %1477 = fsub double %1440, %1476
  %1478 = load double, ptr %9, align 8, !tbaa !9
  %1479 = fmul double %1478, 2.000000e+00
  %1480 = fdiv double %1477, %1479
  store double %1480, ptr %14, align 8, !tbaa !9
  br label %1547

1481:                                             ; preds = %1467
  %1482 = fmul double %1441, 2.000000e+00
  %1483 = fmul double %1441, -4.000000e+00
  %1484 = fmul double %1433, %1483
  %1485 = call double @llvm.fmuladd.f64(double %1440, double %1440, double %1484)
  %1486 = fcmp oge double %1485, 0.000000e+00
  %1487 = fneg double %1485
  %1488 = select i1 %1486, double %1485, double %1487
  %1489 = call double @sqrt(double noundef %1488) #6
  %1490 = fadd double %1440, %1489
  %1491 = fdiv double %1482, %1490
  store double %1491, ptr %14, align 8, !tbaa !9
  br label %1547

1492:                                             ; preds = %1378
  %1493 = fadd double %29, %.71443
  %1494 = fadd double %.311851441, %1493
  %.not1305 = icmp eq i32 %.112011438, 0
  br i1 %.not1305, label %1506, label %1495

1495:                                             ; preds = %1492
  %1496 = load double, ptr %1340, align 8, !tbaa !9
  %1497 = fneg double %1496
  %1498 = call double @llvm.fmuladd.f64(double %1497, double %.612381435, double %1494)
  %1499 = load double, ptr %1342, align 8, !tbaa !9
  %1500 = fneg double %1499
  %1501 = call double @llvm.fmuladd.f64(double %1500, double %.312451434, double %1498)
  store double %1501, ptr %9, align 8, !tbaa !9
  %1502 = fmul double %1496, %1496
  %1503 = fmul double %.612381435, %1502
  store double %1503, ptr %12, align 16, !tbaa !9
  %1504 = fmul double %1499, %1499
  %1505 = fmul double %.312451434, %1504
  br label %1545

1506:                                             ; preds = %1492
  %1507 = load i32, ptr %13, align 4, !tbaa !5
  %.not1306 = icmp eq i32 %1507, 0
  %1508 = fadd double %.312451434, %.612381435
  br i1 %.not1306, label %1527, label %1509

1509:                                             ; preds = %1506
  %1510 = load double, ptr %1344, align 8, !tbaa !9
  %1511 = load double, ptr %1340, align 8, !tbaa !9
  %1512 = fdiv double %1510, %1511
  %1513 = fmul double %1512, %1512
  %1514 = load double, ptr %1342, align 8, !tbaa !9
  %1515 = fneg double %1514
  %1516 = call double @llvm.fmuladd.f64(double %1515, double %1508, double %1494)
  %1517 = load double, ptr %1345, align 8, !tbaa !9
  %1518 = load double, ptr %1346, align 8, !tbaa !9
  %1519 = fsub double %1517, %1518
  %1520 = fneg double %1519
  %1521 = call double @llvm.fmuladd.f64(double %1520, double %1513, double %1516)
  store double %1521, ptr %9, align 8, !tbaa !9
  %1522 = fmul double %1510, %1510
  store double %1522, ptr %12, align 16, !tbaa !9
  %1523 = fmul double %1514, %1514
  %1524 = fsub double %.612381435, %1513
  %1525 = fadd double %.312451434, %1524
  %1526 = fmul double %1523, %1525
  br label %1545

1527:                                             ; preds = %1506
  %1528 = load double, ptr %1347, align 8, !tbaa !9
  %1529 = load double, ptr %1342, align 8, !tbaa !9
  %1530 = fdiv double %1528, %1529
  %1531 = fmul double %1530, %1530
  %1532 = load double, ptr %1340, align 8, !tbaa !9
  %1533 = fneg double %1532
  %1534 = call double @llvm.fmuladd.f64(double %1533, double %1508, double %1494)
  %1535 = load double, ptr %1346, align 8, !tbaa !9
  %1536 = load double, ptr %1345, align 8, !tbaa !9
  %1537 = fsub double %1535, %1536
  %1538 = fneg double %1537
  %1539 = call double @llvm.fmuladd.f64(double %1538, double %1531, double %1534)
  store double %1539, ptr %9, align 8, !tbaa !9
  %1540 = fmul double %1532, %1532
  %1541 = fsub double %.312451434, %1531
  %1542 = fadd double %.612381435, %1541
  %1543 = fmul double %1540, %1542
  store double %1543, ptr %12, align 16, !tbaa !9
  %1544 = fmul double %1528, %1528
  br label %1545

1545:                                             ; preds = %1509, %1527, %1495
  %.sink1732 = phi double [ %1526, %1509 ], [ %1544, %1527 ], [ %1505, %1495 ]
  store double %.sink1732, ptr %1343, align 16, !tbaa !9
  call void @dlaed6_(ptr noundef nonnull %11, ptr noundef nonnull %13, ptr noundef nonnull %9, ptr noundef nonnull %1340, ptr noundef nonnull %12, ptr noundef nonnull %10, ptr noundef nonnull %14, ptr noundef nonnull %7) #6
  %1546 = load i32, ptr %7, align 4, !tbaa !5
  %.not1307 = icmp eq i32 %1546, 0
  br i1 %.not1307, label %._crit_edge1667, label %.loopexit

._crit_edge1667:                                  ; preds = %1545
  %.pre1668 = load double, ptr %14, align 8, !tbaa !9
  br label %1547

1547:                                             ; preds = %._crit_edge1667, %1465, %1481, %1469
  %1548 = phi double [ %.pre1668, %._crit_edge1667 ], [ %1466, %1465 ], [ %1491, %1481 ], [ %1480, %1469 ]
  %1549 = load double, ptr %10, align 8, !tbaa !9
  %1550 = fmul double %1549, %1548
  %1551 = fcmp ult double %1550, 0.000000e+00
  br i1 %1551, label %1555, label %1552

1552:                                             ; preds = %1547
  %1553 = fneg double %1549
  %1554 = fdiv double %1553, %.011961439
  store double %1554, ptr %14, align 8, !tbaa !9
  br label %1555

1555:                                             ; preds = %1552, %1547
  %1556 = phi double [ %1554, %1552 ], [ %1548, %1547 ]
  %1557 = fadd double %.711811442, %1556
  %1558 = fcmp ogt double %1557, %.71210
  %1559 = fcmp olt double %1557, %.71218
  %or.cond1327 = select i1 %1558, i1 true, i1 %1559
  br i1 %or.cond1327, label %1560, label %1568

1560:                                             ; preds = %1555
  %1561 = fcmp olt double %1549, 0.000000e+00
  br i1 %1561, label %1562, label %1565

1562:                                             ; preds = %1560
  %1563 = fsub double %.71210, %.711811442
  %1564 = fmul double %1563, 5.000000e-01
  store double %1564, ptr %14, align 8, !tbaa !9
  br label %1568

1565:                                             ; preds = %1560
  %1566 = fsub double %.71218, %.711811442
  %1567 = fmul double %1566, 5.000000e-01
  store double %1567, ptr %14, align 8, !tbaa !9
  br label %1568

1568:                                             ; preds = %1555, %1562, %1565
  %1569 = phi double [ %1556, %1555 ], [ %1564, %1562 ], [ %1567, %1565 ]
  %1570 = load i32, ptr %0, align 4, !tbaa !5
  %.not13081405 = icmp slt i32 %1570, 1
  br i1 %.not13081405, label %._crit_edge1409, label %.lr.ph1408

.lr.ph1408:                                       ; preds = %1568
  %1571 = add nuw i32 %1570, 1
  %wide.trip.count1611 = zext i32 %1571 to i64
  %1572 = zext nneg i32 %1570 to i64
  %min.iters.check1855 = icmp ult i32 %1570, 4
  br i1 %min.iters.check1855, label %scalar.ph1854.preheader, label %vector.ph1856

vector.ph1856:                                    ; preds = %.lr.ph1408
  %n.vec1858 = and i64 %1572, 2147483644
  %ind.end1859 = or disjoint i64 %n.vec1858, 1
  %broadcast.splatinsert1866 = insertelement <2 x double> poison, double %1569, i64 0
  %broadcast.splat1867 = shufflevector <2 x double> %broadcast.splatinsert1866, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1861

vector.body1861:                                  ; preds = %vector.body1861, %vector.ph1856
  %index1862 = phi i64 [ 0, %vector.ph1856 ], [ %index.next1868, %vector.body1861 ]
  %1573 = getelementptr double, ptr %4, i64 %index1862
  %1574 = getelementptr inbounds i8, ptr %1573, i64 16
  %wide.load1864 = load <2 x double>, ptr %1573, align 8, !tbaa !9
  %wide.load1865 = load <2 x double>, ptr %1574, align 8, !tbaa !9
  %1575 = fsub <2 x double> %wide.load1864, %broadcast.splat1867
  %1576 = fsub <2 x double> %wide.load1865, %broadcast.splat1867
  store <2 x double> %1575, ptr %1573, align 8, !tbaa !9
  store <2 x double> %1576, ptr %1574, align 8, !tbaa !9
  %index.next1868 = add nuw i64 %index1862, 4
  %1577 = icmp eq i64 %index.next1868, %n.vec1858
  br i1 %1577, label %middle.block1853, label %vector.body1861, !llvm.loop !85

middle.block1853:                                 ; preds = %vector.body1861
  %cmp.n1869 = icmp eq i64 %n.vec1858, %1572
  br i1 %cmp.n1869, label %._crit_edge1409, label %scalar.ph1854.preheader

scalar.ph1854.preheader:                          ; preds = %middle.block1853, %.lr.ph1408
  %indvars.iv1608.ph = phi i64 [ 1, %.lr.ph1408 ], [ %ind.end1859, %middle.block1853 ]
  br label %scalar.ph1854

scalar.ph1854:                                    ; preds = %scalar.ph1854.preheader, %scalar.ph1854
  %indvars.iv1608 = phi i64 [ %indvars.iv.next1609, %scalar.ph1854 ], [ %indvars.iv1608.ph, %scalar.ph1854.preheader ]
  %1578 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1608
  %1579 = load double, ptr %1578, align 8, !tbaa !9
  %1580 = fsub double %1579, %1569
  store double %1580, ptr %1578, align 8, !tbaa !9
  %indvars.iv.next1609 = add nuw nsw i64 %indvars.iv1608, 1
  %exitcond1612.not = icmp eq i64 %indvars.iv.next1609, %wide.trip.count1611
  br i1 %exitcond1612.not, label %._crit_edge1409, label %scalar.ph1854, !llvm.loop !86

._crit_edge1409:                                  ; preds = %scalar.ph1854, %middle.block1853, %1568
  %1581 = fadd double %.711811442, %1569
  br i1 %.not1287.not1358, label %.lr.ph1416.preheader, label %._crit_edge1417

.lr.ph1416.preheader:                             ; preds = %._crit_edge1409
  br i1 %1349, label %._crit_edge1417.loopexit.unr-lcssa, label %.lr.ph1416

.lr.ph1416:                                       ; preds = %.lr.ph1416.preheader, %.lr.ph1416
  %indvars.iv1613 = phi i64 [ %indvars.iv.next1614.1, %.lr.ph1416 ], [ 1, %.lr.ph1416.preheader ]
  %.91413 = phi double [ %1604, %.lr.ph1416 ], [ 0.000000e+00, %.lr.ph1416.preheader ]
  %1582 = phi <2 x double> [ %1602, %.lr.ph1416 ], [ zeroinitializer, %.lr.ph1416.preheader ]
  %niter2050 = phi i64 [ %niter2050.next.1, %.lr.ph1416 ], [ 0, %.lr.ph1416.preheader ]
  %1583 = getelementptr inbounds double, ptr %16, i64 %indvars.iv1613
  %1584 = load double, ptr %1583, align 8, !tbaa !9
  %1585 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1613
  %1586 = load double, ptr %1585, align 8, !tbaa !9
  %1587 = fdiv double %1584, %1586
  %1588 = insertelement <2 x double> poison, double %1584, i64 0
  %1589 = insertelement <2 x double> %1588, double %1587, i64 1
  %1590 = shufflevector <2 x double> %1589, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %1591 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1589, <2 x double> %1590, <2 x double> %1582)
  %1592 = extractelement <2 x double> %1591, i64 0
  %1593 = fadd double %.91413, %1592
  %1594 = getelementptr double, ptr %3, i64 %indvars.iv1613
  %1595 = load double, ptr %1594, align 8, !tbaa !9
  %1596 = getelementptr double, ptr %4, i64 %indvars.iv1613
  %1597 = load double, ptr %1596, align 8, !tbaa !9
  %1598 = fdiv double %1595, %1597
  %1599 = insertelement <2 x double> poison, double %1595, i64 0
  %1600 = insertelement <2 x double> %1599, double %1598, i64 1
  %1601 = shufflevector <2 x double> %1600, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %1602 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1600, <2 x double> %1601, <2 x double> %1591)
  %1603 = extractelement <2 x double> %1602, i64 0
  %1604 = fadd double %1593, %1603
  %indvars.iv.next1614.1 = add nuw nsw i64 %indvars.iv1613, 2
  %niter2050.next.1 = add i64 %niter2050, 2
  %niter2050.ncmp.1 = icmp eq i64 %niter2050.next.1, %unroll_iter2049
  br i1 %niter2050.ncmp.1, label %._crit_edge1417.loopexit.unr-lcssa.loopexit, label %.lr.ph1416, !llvm.loop !87

._crit_edge1417.loopexit.unr-lcssa.loopexit:      ; preds = %.lr.ph1416
  %1605 = extractelement <2 x double> %1602, i64 1
  br label %._crit_edge1417.loopexit.unr-lcssa

._crit_edge1417.loopexit.unr-lcssa:               ; preds = %._crit_edge1417.loopexit.unr-lcssa.loopexit, %.lr.ph1416.preheader
  %.lcssa1982.ph = phi double [ poison, %.lr.ph1416.preheader ], [ %1603, %._crit_edge1417.loopexit.unr-lcssa.loopexit ]
  %.lcssa1981.ph = phi double [ poison, %.lr.ph1416.preheader ], [ %1604, %._crit_edge1417.loopexit.unr-lcssa.loopexit ]
  %.lcssa1980.ph = phi double [ poison, %.lr.ph1416.preheader ], [ %1605, %._crit_edge1417.loopexit.unr-lcssa.loopexit ]
  %indvars.iv1613.unr = phi i64 [ 1, %.lr.ph1416.preheader ], [ %indvars.iv.next1614.1, %._crit_edge1417.loopexit.unr-lcssa.loopexit ]
  %.91413.unr = phi double [ 0.000000e+00, %.lr.ph1416.preheader ], [ %1604, %._crit_edge1417.loopexit.unr-lcssa.loopexit ]
  %.unr2044 = phi <2 x double> [ zeroinitializer, %.lr.ph1416.preheader ], [ %1602, %._crit_edge1417.loopexit.unr-lcssa.loopexit ]
  br i1 %lcmp.mod2045.not, label %._crit_edge1417, label %.lr.ph1416.epil

.lr.ph1416.epil:                                  ; preds = %._crit_edge1417.loopexit.unr-lcssa
  %1606 = getelementptr inbounds double, ptr %16, i64 %indvars.iv1613.unr
  %1607 = load double, ptr %1606, align 8, !tbaa !9
  %1608 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1613.unr
  %1609 = load double, ptr %1608, align 8, !tbaa !9
  %1610 = fdiv double %1607, %1609
  %1611 = insertelement <2 x double> poison, double %1607, i64 0
  %1612 = insertelement <2 x double> %1611, double %1610, i64 1
  %1613 = shufflevector <2 x double> %1612, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %1614 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1612, <2 x double> %1613, <2 x double> %.unr2044)
  %1615 = extractelement <2 x double> %1614, i64 0
  %1616 = fadd double %.91413.unr, %1615
  %1617 = extractelement <2 x double> %1614, i64 1
  br label %._crit_edge1417

._crit_edge1417:                                  ; preds = %.lr.ph1416.epil, %._crit_edge1417.loopexit.unr-lcssa, %._crit_edge1409
  %.91241.lcssa = phi double [ 0.000000e+00, %._crit_edge1409 ], [ %.lcssa1980.ph, %._crit_edge1417.loopexit.unr-lcssa ], [ %1617, %.lr.ph1416.epil ]
  %.9.lcssa = phi double [ 0.000000e+00, %._crit_edge1409 ], [ %.lcssa1981.ph, %._crit_edge1417.loopexit.unr-lcssa ], [ %1616, %.lr.ph1416.epil ]
  %.8.lcssa = phi double [ 0.000000e+00, %._crit_edge1409 ], [ %.lcssa1982.ph, %._crit_edge1417.loopexit.unr-lcssa ], [ %1615, %.lr.ph1416.epil ]
  %1618 = fcmp oge double %.9.lcssa, 0.000000e+00
  %1619 = fneg double %.9.lcssa
  %1620 = select i1 %1618, double %.9.lcssa, double %1619
  %.not1310.not1421 = icmp sgt i32 %1570, %.01197
  br i1 %.not1310.not1421, label %.lr.ph1427.preheader, label %._crit_edge1428

.lr.ph1427.preheader:                             ; preds = %._crit_edge1417
  %1621 = sext i32 %1570 to i64
  %1622 = sub nsw i64 %1621, %997
  %xtraiter2051 = and i64 %1622, 1
  %lcmp.mod2052.not = icmp eq i64 %xtraiter2051, 0
  br i1 %lcmp.mod2052.not, label %.lr.ph1427.prol.loopexit, label %.lr.ph1427.prol

.lr.ph1427.prol:                                  ; preds = %.lr.ph1427.preheader
  %1623 = getelementptr inbounds double, ptr %16, i64 %1621
  %1624 = load double, ptr %1623, align 8, !tbaa !9
  %1625 = getelementptr inbounds double, ptr %15, i64 %1621
  %1626 = load double, ptr %1625, align 8, !tbaa !9
  %1627 = fdiv double %1624, %1626
  %1628 = insertelement <2 x double> poison, double %1624, i64 0
  %1629 = insertelement <2 x double> %1628, double %1627, i64 1
  %1630 = shufflevector <2 x double> %1629, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %1631 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1629, <2 x double> %1630, <2 x double> zeroinitializer)
  %1632 = extractelement <2 x double> %1631, i64 0
  %1633 = fadd double %1620, %1632
  %indvars.iv.next1619.prol = add nsw i64 %1621, -1
  %1634 = extractelement <2 x double> %1631, i64 1
  br label %.lr.ph1427.prol.loopexit

.lr.ph1427.prol.loopexit:                         ; preds = %.lr.ph1427.prol, %.lr.ph1427.preheader
  %indvars.iv1618.unr = phi i64 [ %1621, %.lr.ph1427.preheader ], [ %indvars.iv.next1619.prol, %.lr.ph1427.prol ]
  %.101424.unr = phi double [ %1620, %.lr.ph1427.preheader ], [ %1633, %.lr.ph1427.prol ]
  %.unr2054 = phi <2 x double> [ zeroinitializer, %.lr.ph1427.preheader ], [ %1631, %.lr.ph1427.prol ]
  %.lcssa1985.unr = phi double [ poison, %.lr.ph1427.preheader ], [ %1632, %.lr.ph1427.prol ]
  %.lcssa1984.unr = phi double [ poison, %.lr.ph1427.preheader ], [ %1633, %.lr.ph1427.prol ]
  %.lcssa1983.unr = phi double [ poison, %.lr.ph1427.preheader ], [ %1634, %.lr.ph1427.prol ]
  %1635 = add nsw i64 %1621, -1
  %1636 = icmp eq i64 %1635, %997
  br i1 %1636, label %._crit_edge1428, label %.lr.ph1427

.lr.ph1427:                                       ; preds = %.lr.ph1427.prol.loopexit, %.lr.ph1427
  %indvars.iv1618 = phi i64 [ %indvars.iv.next1619.1, %.lr.ph1427 ], [ %indvars.iv1618.unr, %.lr.ph1427.prol.loopexit ]
  %.101424 = phi double [ %1659, %.lr.ph1427 ], [ %.101424.unr, %.lr.ph1427.prol.loopexit ]
  %1637 = phi <2 x double> [ %1657, %.lr.ph1427 ], [ %.unr2054, %.lr.ph1427.prol.loopexit ]
  %1638 = getelementptr inbounds double, ptr %16, i64 %indvars.iv1618
  %1639 = load double, ptr %1638, align 8, !tbaa !9
  %1640 = getelementptr inbounds double, ptr %15, i64 %indvars.iv1618
  %1641 = load double, ptr %1640, align 8, !tbaa !9
  %1642 = fdiv double %1639, %1641
  %1643 = insertelement <2 x double> poison, double %1639, i64 0
  %1644 = insertelement <2 x double> %1643, double %1642, i64 1
  %1645 = shufflevector <2 x double> %1644, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %1646 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1644, <2 x double> %1645, <2 x double> %1637)
  %1647 = extractelement <2 x double> %1646, i64 0
  %1648 = fadd double %.101424, %1647
  %indvars.iv.next1619 = add nsw i64 %indvars.iv1618, -1
  %1649 = getelementptr inbounds double, ptr %16, i64 %indvars.iv.next1619
  %1650 = load double, ptr %1649, align 8, !tbaa !9
  %1651 = getelementptr inbounds double, ptr %15, i64 %indvars.iv.next1619
  %1652 = load double, ptr %1651, align 8, !tbaa !9
  %1653 = fdiv double %1650, %1652
  %1654 = insertelement <2 x double> poison, double %1650, i64 0
  %1655 = insertelement <2 x double> %1654, double %1653, i64 1
  %1656 = shufflevector <2 x double> %1655, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %1657 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1655, <2 x double> %1656, <2 x double> %1646)
  %1658 = extractelement <2 x double> %1657, i64 0
  %1659 = fadd double %1648, %1658
  %indvars.iv.next1619.1 = add nsw i64 %indvars.iv1618, -2
  %.not1310.not.1 = icmp sgt i64 %indvars.iv.next1619.1, %997
  br i1 %.not1310.not.1, label %.lr.ph1427, label %._crit_edge1428.loopexit.unr-lcssa, !llvm.loop !88

._crit_edge1428.loopexit.unr-lcssa:               ; preds = %.lr.ph1427
  %1660 = extractelement <2 x double> %1657, i64 1
  br label %._crit_edge1428

._crit_edge1428:                                  ; preds = %._crit_edge1428.loopexit.unr-lcssa, %.lr.ph1427.prol.loopexit, %._crit_edge1417
  %.61248.lcssa = phi double [ 0.000000e+00, %._crit_edge1417 ], [ %.lcssa1983.unr, %.lr.ph1427.prol.loopexit ], [ %1660, %._crit_edge1428.loopexit.unr-lcssa ]
  %.10.lcssa = phi double [ %1620, %._crit_edge1417 ], [ %.lcssa1984.unr, %.lr.ph1427.prol.loopexit ], [ %1659, %._crit_edge1428.loopexit.unr-lcssa ]
  %.41186.lcssa = phi double [ 0.000000e+00, %._crit_edge1417 ], [ %.lcssa1985.unr, %.lr.ph1427.prol.loopexit ], [ %1658, %._crit_edge1428.loopexit.unr-lcssa ]
  %1661 = load double, ptr %998, align 8, !tbaa !9
  %1662 = load double, ptr %1000, align 8, !tbaa !9
  %1663 = fdiv double %1661, %1662
  %1664 = fadd double %.91241.lcssa, %.61248.lcssa
  %1665 = call double @llvm.fmuladd.f64(double %1663, double %1663, double %1664)
  %1666 = fmul double %1661, %1663
  %1667 = fadd double %29, %.41186.lcssa
  %1668 = fadd double %.8.lcssa, %1667
  %1669 = fadd double %1668, %1666
  store double %1669, ptr %10, align 8, !tbaa !9
  %1670 = fsub double %.41186.lcssa, %.8.lcssa
  %1671 = call double @llvm.fmuladd.f64(double %1670, double 8.000000e+00, double %.10.lcssa)
  %1672 = call double @llvm.fmuladd.f64(double %29, double 2.000000e+00, double %1671)
  %1673 = fcmp oge double %1666, 0.000000e+00
  %1674 = fneg double %1666
  %1675 = select i1 %1673, double %1666, double %1674
  %1676 = call double @llvm.fmuladd.f64(double %1675, double 3.000000e+00, double %1672)
  %1677 = fcmp oge double %1581, 0.000000e+00
  %1678 = fneg double %1581
  %1679 = select i1 %1677, double %1581, double %1678
  %1680 = call double @llvm.fmuladd.f64(double %1679, double %1665, double %1676)
  %1681 = fmul double %1549, %1669
  %1682 = fcmp ogt double %1681, 0.000000e+00
  br i1 %1682, label %1683, label %1694

1683:                                             ; preds = %._crit_edge1428
  %1684 = fcmp oge double %1669, 0.000000e+00
  %1685 = fneg double %1669
  %1686 = select i1 %1684, double %1669, double %1685
  %1687 = fcmp oge double %1549, 0.000000e+00
  %1688 = fneg double %1549
  %1689 = select i1 %1687, double %1549, double %1688
  %1690 = fdiv double %1689, 1.000000e+01
  %1691 = fcmp ogt double %1686, %1690
  br i1 %1691, label %1692, label %1694

1692:                                             ; preds = %1683
  %.not1311 = icmp eq i32 %.112011438, 0
  %1693 = zext i1 %.not1311 to i32
  br label %1694

1694:                                             ; preds = %._crit_edge1428, %1683, %1692
  %.21202 = phi i32 [ %1693, %1692 ], [ %.112011438, %1683 ], [ %.112011438, %._crit_edge1428 ]
  %storemerge1299.in = load i32, ptr %11, align 4, !tbaa !5
  %storemerge1299 = add nsw i32 %storemerge1299.in, 1
  store i32 %storemerge1299, ptr %11, align 4, !tbaa !5
  %1695 = icmp slt i32 %storemerge1299.in, 30
  br i1 %1695, label %1350, label %._crit_edge1446.loopexit, !llvm.loop !89

._crit_edge1446.loopexit:                         ; preds = %1694
  %.pre1669 = load i32, ptr %13, align 4, !tbaa !5
  br label %._crit_edge1446

._crit_edge1446:                                  ; preds = %._crit_edge1446.loopexit, %1337
  %1696 = phi i32 [ %1321, %1337 ], [ %.pre1669, %._crit_edge1446.loopexit ]
  %.71181.lcssa = phi double [ %1316, %1337 ], [ %1581, %._crit_edge1446.loopexit ]
  store i32 1, ptr %7, align 4, !tbaa !5
  %.not1300 = icmp eq i32 %1696, 0
  br i1 %.not1300, label %1703, label %1697

1697:                                             ; preds = %._crit_edge1446
  %1698 = load i32, ptr %1, align 4, !tbaa !5
  %1699 = sext i32 %1698 to i64
  %1700 = getelementptr inbounds double, ptr %17, i64 %1699
  %1701 = load double, ptr %1700, align 8, !tbaa !9
  %1702 = fadd double %.71181.lcssa, %1701
  store double %1702, ptr %6, align 8, !tbaa !9
  br label %.loopexit

1703:                                             ; preds = %._crit_edge1446
  %1704 = load double, ptr %609, align 8, !tbaa !9
  %1705 = fadd double %.71181.lcssa, %1704
  store double %1705, ptr %6, align 8, !tbaa !9
  br label %.loopexit

.loopexit:                                        ; preds = %1545, %305, %463, %._crit_edge1524, %1029, %1024, %1179, %1367, %1361, %1697, %1703, %25, %19
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #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 nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #2

declare void @dlaed5_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare double @dlamch_(ptr noundef) local_unnamed_addr #3

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

; 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 nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #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 = !{!12, !15}
!19 = distinct !{!19, !20, !21, !22}
!20 = !{!"llvm.loop.mustprogress"}
!21 = !{!"llvm.loop.isvectorized", i32 1}
!22 = !{!"llvm.loop.unroll.runtime.disable"}
!23 = distinct !{!23, !20, !21}
!24 = distinct !{!24, !20}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.unroll.disable"}
!27 = !{!28}
!28 = distinct !{!28, !29}
!29 = distinct !{!29, !"LVerDomain"}
!30 = !{!31}
!31 = distinct !{!31, !29}
!32 = !{!33}
!33 = distinct !{!33, !29}
!34 = !{!28, !31}
!35 = distinct !{!35, !20, !21, !22}
!36 = distinct !{!36, !20, !21}
!37 = distinct !{!37, !20}
!38 = distinct !{!38, !20, !21, !22}
!39 = distinct !{!39, !20, !22, !21}
!40 = distinct !{!40, !20}
!41 = distinct !{!41, !20, !21, !22}
!42 = distinct !{!42, !20, !22, !21}
!43 = distinct !{!43, !20}
!44 = distinct !{!44, !20}
!45 = !{!46}
!46 = distinct !{!46, !47}
!47 = distinct !{!47, !"LVerDomain"}
!48 = !{!49}
!49 = distinct !{!49, !47}
!50 = !{!51}
!51 = distinct !{!51, !47}
!52 = !{!46, !49}
!53 = distinct !{!53, !20, !21, !22}
!54 = distinct !{!54, !20, !21}
!55 = distinct !{!55, !20}
!56 = distinct !{!56, !26}
!57 = distinct !{!57, !26}
!58 = distinct !{!58, !20}
!59 = !{!60}
!60 = distinct !{!60, !61}
!61 = distinct !{!61, !"LVerDomain"}
!62 = !{!63}
!63 = distinct !{!63, !61}
!64 = !{!65}
!65 = distinct !{!65, !61}
!66 = !{!60, !63}
!67 = distinct !{!67, !20, !21, !22}
!68 = distinct !{!68, !20, !21}
!69 = !{!70}
!70 = distinct !{!70, !71}
!71 = distinct !{!71, !"LVerDomain"}
!72 = !{!73}
!73 = distinct !{!73, !71}
!74 = !{!75}
!75 = distinct !{!75, !71}
!76 = !{!70, !73}
!77 = distinct !{!77, !20, !21, !22}
!78 = distinct !{!78, !20, !21}
!79 = distinct !{!79, !20}
!80 = distinct !{!80, !20}
!81 = distinct !{!81, !20, !21, !22}
!82 = distinct !{!82, !20, !22, !21}
!83 = distinct !{!83, !20}
!84 = distinct !{!84, !20}
!85 = distinct !{!85, !20, !21, !22}
!86 = distinct !{!86, !20, !22, !21}
!87 = distinct !{!87, !20}
!88 = distinct !{!88, !20}
!89 = distinct !{!89, !20}


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