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

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

80:                                               ; preds = %8
  %81 = load ptr, ptr %10, align 8, !tbaa !5
  %82 = load i64, ptr %81, align 8, !tbaa !9
  %83 = icmp eq i64 %82, 2
  br i1 %83, label %84, label %95

84:                                               ; preds = %80
  %85 = load ptr, ptr %11, align 8, !tbaa !5
  %86 = load ptr, ptr %12, align 8, !tbaa !5
  %87 = getelementptr inbounds double, ptr %86, i64 1
  %88 = load ptr, ptr %13, align 8, !tbaa !5
  %89 = getelementptr inbounds double, ptr %88, i64 1
  %90 = load ptr, ptr %14, align 8, !tbaa !5
  %91 = getelementptr inbounds double, ptr %90, i64 1
  %92 = load ptr, ptr %15, align 8, !tbaa !5
  %93 = load ptr, ptr %16, align 8, !tbaa !5
  %94 = call i32 @dlaed5_(ptr noundef %85, ptr noundef %87, ptr noundef %89, ptr noundef %91, ptr noundef %92, ptr noundef %93)
  store i32 0, ptr %9, align 4
  store i32 1, ptr %52, align 4
  br label %3221

95:                                               ; preds = %80
  %96 = call double @dlamch_(ptr noundef @.str)
  store double %96, ptr %32, align 8, !tbaa !11
  %97 = load ptr, ptr %15, align 8, !tbaa !5
  %98 = load double, ptr %97, align 8, !tbaa !11
  %99 = fdiv double 1.000000e+00, %98
  store double %99, ptr %51, align 8, !tbaa !11
  %100 = load ptr, ptr %11, align 8, !tbaa !5
  %101 = load i64, ptr %100, align 8, !tbaa !9
  %102 = load ptr, ptr %10, align 8, !tbaa !5
  %103 = load i64, ptr %102, align 8, !tbaa !9
  %104 = icmp eq i64 %101, %103
  br i1 %104, label %105, label %1208

105:                                              ; preds = %95
  %106 = load ptr, ptr %10, align 8, !tbaa !5
  %107 = load i64, ptr %106, align 8, !tbaa !9
  %108 = sub nsw i64 %107, 1
  store i64 %108, ptr %25, align 8, !tbaa !9
  store i64 1, ptr %46, align 8, !tbaa !9
  %109 = load ptr, ptr %15, align 8, !tbaa !5
  %110 = load double, ptr %109, align 8, !tbaa !11
  %111 = fdiv double %110, 2.000000e+00
  store double %111, ptr %45, align 8, !tbaa !11
  %112 = load ptr, ptr %10, align 8, !tbaa !5
  %113 = load i64, ptr %112, align 8, !tbaa !9
  store i64 %113, ptr %18, align 8, !tbaa !9
  store i64 1, ptr %23, align 8, !tbaa !9
  br label %114

114:                                              ; preds = %134, %105
  %115 = load i64, ptr %23, align 8, !tbaa !9
  %116 = load i64, ptr %18, align 8, !tbaa !9
  %117 = icmp sle i64 %115, %116
  br i1 %117, label %118, label %137

118:                                              ; preds = %114
  %119 = load ptr, ptr %12, align 8, !tbaa !5
  %120 = load i64, ptr %23, align 8, !tbaa !9
  %121 = getelementptr inbounds double, ptr %119, i64 %120
  %122 = load double, ptr %121, align 8, !tbaa !11
  %123 = load ptr, ptr %12, align 8, !tbaa !5
  %124 = load ptr, ptr %11, align 8, !tbaa !5
  %125 = load i64, ptr %124, align 8, !tbaa !9
  %126 = getelementptr inbounds double, ptr %123, i64 %125
  %127 = load double, ptr %126, align 8, !tbaa !11
  %128 = fsub double %122, %127
  %129 = load double, ptr %45, align 8, !tbaa !11
  %130 = fsub double %128, %129
  %131 = load ptr, ptr %14, align 8, !tbaa !5
  %132 = load i64, ptr %23, align 8, !tbaa !9
  %133 = getelementptr inbounds double, ptr %131, i64 %132
  store double %130, ptr %133, align 8, !tbaa !11
  br label %134

134:                                              ; preds = %118
  %135 = load i64, ptr %23, align 8, !tbaa !9
  %136 = add nsw i64 %135, 1
  store i64 %136, ptr %23, align 8, !tbaa !9
  br label %114, !llvm.loop !13

137:                                              ; preds = %114
  store double 0.000000e+00, ptr %34, align 8, !tbaa !11
  %138 = load ptr, ptr %10, align 8, !tbaa !5
  %139 = load i64, ptr %138, align 8, !tbaa !9
  %140 = sub nsw i64 %139, 2
  store i64 %140, ptr %18, align 8, !tbaa !9
  store i64 1, ptr %23, align 8, !tbaa !9
  br label %141

141:                                              ; preds = %162, %137
  %142 = load i64, ptr %23, align 8, !tbaa !9
  %143 = load i64, ptr %18, align 8, !tbaa !9
  %144 = icmp sle i64 %142, %143
  br i1 %144, label %145, label %165

145:                                              ; preds = %141
  %146 = load ptr, ptr %13, align 8, !tbaa !5
  %147 = load i64, ptr %23, align 8, !tbaa !9
  %148 = getelementptr inbounds double, ptr %146, i64 %147
  %149 = load double, ptr %148, align 8, !tbaa !11
  %150 = load ptr, ptr %13, align 8, !tbaa !5
  %151 = load i64, ptr %23, align 8, !tbaa !9
  %152 = getelementptr inbounds double, ptr %150, i64 %151
  %153 = load double, ptr %152, align 8, !tbaa !11
  %154 = fmul double %149, %153
  %155 = load ptr, ptr %14, align 8, !tbaa !5
  %156 = load i64, ptr %23, align 8, !tbaa !9
  %157 = getelementptr inbounds double, ptr %155, i64 %156
  %158 = load double, ptr %157, align 8, !tbaa !11
  %159 = fdiv double %154, %158
  %160 = load double, ptr %34, align 8, !tbaa !11
  %161 = fadd double %160, %159
  store double %161, ptr %34, align 8, !tbaa !11
  br label %162

162:                                              ; preds = %145
  %163 = load i64, ptr %23, align 8, !tbaa !9
  %164 = add nsw i64 %163, 1
  store i64 %164, ptr %23, align 8, !tbaa !9
  br label %141, !llvm.loop !15

165:                                              ; preds = %141
  %166 = load double, ptr %51, align 8, !tbaa !11
  %167 = load double, ptr %34, align 8, !tbaa !11
  %168 = fadd double %166, %167
  store double %168, ptr %22, align 8, !tbaa !11
  %169 = load double, ptr %22, align 8, !tbaa !11
  %170 = load ptr, ptr %13, align 8, !tbaa !5
  %171 = load i64, ptr %25, align 8, !tbaa !9
  %172 = getelementptr inbounds double, ptr %170, i64 %171
  %173 = load double, ptr %172, align 8, !tbaa !11
  %174 = load ptr, ptr %13, align 8, !tbaa !5
  %175 = load i64, ptr %25, align 8, !tbaa !9
  %176 = getelementptr inbounds double, ptr %174, i64 %175
  %177 = load double, ptr %176, align 8, !tbaa !11
  %178 = fmul double %173, %177
  %179 = load ptr, ptr %14, align 8, !tbaa !5
  %180 = load i64, ptr %25, align 8, !tbaa !9
  %181 = getelementptr inbounds double, ptr %179, i64 %180
  %182 = load double, ptr %181, align 8, !tbaa !11
  %183 = fdiv double %178, %182
  %184 = fadd double %169, %183
  %185 = load ptr, ptr %13, align 8, !tbaa !5
  %186 = load ptr, ptr %10, align 8, !tbaa !5
  %187 = load i64, ptr %186, align 8, !tbaa !9
  %188 = getelementptr inbounds double, ptr %185, i64 %187
  %189 = load double, ptr %188, align 8, !tbaa !11
  %190 = load ptr, ptr %13, align 8, !tbaa !5
  %191 = load ptr, ptr %10, align 8, !tbaa !5
  %192 = load i64, ptr %191, align 8, !tbaa !9
  %193 = getelementptr inbounds double, ptr %190, i64 %192
  %194 = load double, ptr %193, align 8, !tbaa !11
  %195 = fmul double %189, %194
  %196 = load ptr, ptr %14, align 8, !tbaa !5
  %197 = load ptr, ptr %10, align 8, !tbaa !5
  %198 = load i64, ptr %197, align 8, !tbaa !9
  %199 = getelementptr inbounds double, ptr %196, i64 %198
  %200 = load double, ptr %199, align 8, !tbaa !11
  %201 = fdiv double %195, %200
  %202 = fadd double %184, %201
  store double %202, ptr %24, align 8, !tbaa !11
  %203 = load double, ptr %24, align 8, !tbaa !11
  %204 = fcmp ole double %203, 0.000000e+00
  br i1 %204, label %205, label %345

205:                                              ; preds = %165
  %206 = load ptr, ptr %13, align 8, !tbaa !5
  %207 = load ptr, ptr %10, align 8, !tbaa !5
  %208 = load i64, ptr %207, align 8, !tbaa !9
  %209 = sub nsw i64 %208, 1
  %210 = getelementptr inbounds double, ptr %206, i64 %209
  %211 = load double, ptr %210, align 8, !tbaa !11
  %212 = load ptr, ptr %13, align 8, !tbaa !5
  %213 = load ptr, ptr %10, align 8, !tbaa !5
  %214 = load i64, ptr %213, align 8, !tbaa !9
  %215 = sub nsw i64 %214, 1
  %216 = getelementptr inbounds double, ptr %212, i64 %215
  %217 = load double, ptr %216, align 8, !tbaa !11
  %218 = fmul double %211, %217
  %219 = load ptr, ptr %12, align 8, !tbaa !5
  %220 = load ptr, ptr %10, align 8, !tbaa !5
  %221 = load i64, ptr %220, align 8, !tbaa !9
  %222 = getelementptr inbounds double, ptr %219, i64 %221
  %223 = load double, ptr %222, align 8, !tbaa !11
  %224 = load ptr, ptr %12, align 8, !tbaa !5
  %225 = load ptr, ptr %10, align 8, !tbaa !5
  %226 = load i64, ptr %225, align 8, !tbaa !9
  %227 = sub nsw i64 %226, 1
  %228 = getelementptr inbounds double, ptr %224, i64 %227
  %229 = load double, ptr %228, align 8, !tbaa !11
  %230 = fsub double %223, %229
  %231 = load ptr, ptr %15, align 8, !tbaa !5
  %232 = load double, ptr %231, align 8, !tbaa !11
  %233 = fadd double %230, %232
  %234 = fdiv double %218, %233
  %235 = load ptr, ptr %13, align 8, !tbaa !5
  %236 = load ptr, ptr %10, align 8, !tbaa !5
  %237 = load i64, ptr %236, align 8, !tbaa !9
  %238 = getelementptr inbounds double, ptr %235, i64 %237
  %239 = load double, ptr %238, align 8, !tbaa !11
  %240 = load ptr, ptr %13, align 8, !tbaa !5
  %241 = load ptr, ptr %10, align 8, !tbaa !5
  %242 = load i64, ptr %241, align 8, !tbaa !9
  %243 = getelementptr inbounds double, ptr %240, i64 %242
  %244 = load double, ptr %243, align 8, !tbaa !11
  %245 = fmul double %239, %244
  %246 = load ptr, ptr %15, align 8, !tbaa !5
  %247 = load double, ptr %246, align 8, !tbaa !11
  %248 = fdiv double %245, %247
  %249 = fadd double %234, %248
  store double %249, ptr %40, align 8, !tbaa !11
  %250 = load double, ptr %22, align 8, !tbaa !11
  %251 = load double, ptr %40, align 8, !tbaa !11
  %252 = fcmp ole double %250, %251
  br i1 %252, label %253, label %256

253:                                              ; preds = %205
  %254 = load ptr, ptr %15, align 8, !tbaa !5
  %255 = load double, ptr %254, align 8, !tbaa !11
  store double %255, ptr %33, align 8, !tbaa !11
  br label %341

256:                                              ; preds = %205
  %257 = load ptr, ptr %12, align 8, !tbaa !5
  %258 = load ptr, ptr %10, align 8, !tbaa !5
  %259 = load i64, ptr %258, align 8, !tbaa !9
  %260 = getelementptr inbounds double, ptr %257, i64 %259
  %261 = load double, ptr %260, align 8, !tbaa !11
  %262 = load ptr, ptr %12, align 8, !tbaa !5
  %263 = load ptr, ptr %10, align 8, !tbaa !5
  %264 = load i64, ptr %263, align 8, !tbaa !9
  %265 = sub nsw i64 %264, 1
  %266 = getelementptr inbounds double, ptr %262, i64 %265
  %267 = load double, ptr %266, align 8, !tbaa !11
  %268 = fsub double %261, %267
  store double %268, ptr %29, align 8, !tbaa !11
  %269 = load double, ptr %22, align 8, !tbaa !11
  %270 = fneg double %269
  %271 = load double, ptr %29, align 8, !tbaa !11
  %272 = load ptr, ptr %13, align 8, !tbaa !5
  %273 = load ptr, ptr %10, align 8, !tbaa !5
  %274 = load i64, ptr %273, align 8, !tbaa !9
  %275 = sub nsw i64 %274, 1
  %276 = getelementptr inbounds double, ptr %272, i64 %275
  %277 = load double, ptr %276, align 8, !tbaa !11
  %278 = load ptr, ptr %13, align 8, !tbaa !5
  %279 = load ptr, ptr %10, align 8, !tbaa !5
  %280 = load i64, ptr %279, align 8, !tbaa !9
  %281 = sub nsw i64 %280, 1
  %282 = getelementptr inbounds double, ptr %278, i64 %281
  %283 = load double, ptr %282, align 8, !tbaa !11
  %284 = fmul double %277, %283
  %285 = call double @llvm.fmuladd.f64(double %270, double %271, double %284)
  %286 = load ptr, ptr %13, align 8, !tbaa !5
  %287 = load ptr, ptr %10, align 8, !tbaa !5
  %288 = load i64, ptr %287, align 8, !tbaa !9
  %289 = getelementptr inbounds double, ptr %286, i64 %288
  %290 = load double, ptr %289, align 8, !tbaa !11
  %291 = load ptr, ptr %13, align 8, !tbaa !5
  %292 = load ptr, ptr %10, align 8, !tbaa !5
  %293 = load i64, ptr %292, align 8, !tbaa !9
  %294 = getelementptr inbounds double, ptr %291, i64 %293
  %295 = load double, ptr %294, align 8, !tbaa !11
  %296 = call double @llvm.fmuladd.f64(double %290, double %295, double %285)
  store double %296, ptr %20, align 8, !tbaa !11
  %297 = load ptr, ptr %13, align 8, !tbaa !5
  %298 = load ptr, ptr %10, align 8, !tbaa !5
  %299 = load i64, ptr %298, align 8, !tbaa !9
  %300 = getelementptr inbounds double, ptr %297, i64 %299
  %301 = load double, ptr %300, align 8, !tbaa !11
  %302 = load ptr, ptr %13, align 8, !tbaa !5
  %303 = load ptr, ptr %10, align 8, !tbaa !5
  %304 = load i64, ptr %303, align 8, !tbaa !9
  %305 = getelementptr inbounds double, ptr %302, i64 %304
  %306 = load double, ptr %305, align 8, !tbaa !11
  %307 = fmul double %301, %306
  %308 = load double, ptr %29, align 8, !tbaa !11
  %309 = fmul double %307, %308
  store double %309, ptr %21, align 8, !tbaa !11
  %310 = load double, ptr %20, align 8, !tbaa !11
  %311 = fcmp olt double %310, 0.000000e+00
  br i1 %311, label %312, label %326

312:                                              ; preds = %256
  %313 = load double, ptr %21, align 8, !tbaa !11
  %314 = fmul double %313, 2.000000e+00
  %315 = load double, ptr %20, align 8, !tbaa !11
  %316 = load double, ptr %20, align 8, !tbaa !11
  %317 = load double, ptr %21, align 8, !tbaa !11
  %318 = fmul double %317, 4.000000e+00
  %319 = load double, ptr %22, align 8, !tbaa !11
  %320 = fmul double %318, %319
  %321 = call double @llvm.fmuladd.f64(double %315, double %316, double %320)
  %322 = call double @sqrt(double noundef %321) #5
  %323 = load double, ptr %20, align 8, !tbaa !11
  %324 = fsub double %322, %323
  %325 = fdiv double %314, %324
  store double %325, ptr %33, align 8, !tbaa !11
  br label %340

326:                                              ; preds = %256
  %327 = load double, ptr %20, align 8, !tbaa !11
  %328 = load double, ptr %20, align 8, !tbaa !11
  %329 = load double, ptr %20, align 8, !tbaa !11
  %330 = load double, ptr %21, align 8, !tbaa !11
  %331 = fmul double %330, 4.000000e+00
  %332 = load double, ptr %22, align 8, !tbaa !11
  %333 = fmul double %331, %332
  %334 = call double @llvm.fmuladd.f64(double %328, double %329, double %333)
  %335 = call double @sqrt(double noundef %334) #5
  %336 = fadd double %327, %335
  %337 = load double, ptr %22, align 8, !tbaa !11
  %338 = fmul double %337, 2.000000e+00
  %339 = fdiv double %336, %338
  store double %339, ptr %33, align 8, !tbaa !11
  br label %340

340:                                              ; preds = %326, %312
  br label %341

341:                                              ; preds = %340, %253
  %342 = load double, ptr %45, align 8, !tbaa !11
  store double %342, ptr %43, align 8, !tbaa !11
  %343 = load ptr, ptr %15, align 8, !tbaa !5
  %344 = load double, ptr %343, align 8, !tbaa !11
  store double %344, ptr %44, align 8, !tbaa !11
  br label %431

345:                                              ; preds = %165
  %346 = load ptr, ptr %12, align 8, !tbaa !5
  %347 = load ptr, ptr %10, align 8, !tbaa !5
  %348 = load i64, ptr %347, align 8, !tbaa !9
  %349 = getelementptr inbounds double, ptr %346, i64 %348
  %350 = load double, ptr %349, align 8, !tbaa !11
  %351 = load ptr, ptr %12, align 8, !tbaa !5
  %352 = load ptr, ptr %10, align 8, !tbaa !5
  %353 = load i64, ptr %352, align 8, !tbaa !9
  %354 = sub nsw i64 %353, 1
  %355 = getelementptr inbounds double, ptr %351, i64 %354
  %356 = load double, ptr %355, align 8, !tbaa !11
  %357 = fsub double %350, %356
  store double %357, ptr %29, align 8, !tbaa !11
  %358 = load double, ptr %22, align 8, !tbaa !11
  %359 = fneg double %358
  %360 = load double, ptr %29, align 8, !tbaa !11
  %361 = load ptr, ptr %13, align 8, !tbaa !5
  %362 = load ptr, ptr %10, align 8, !tbaa !5
  %363 = load i64, ptr %362, align 8, !tbaa !9
  %364 = sub nsw i64 %363, 1
  %365 = getelementptr inbounds double, ptr %361, i64 %364
  %366 = load double, ptr %365, align 8, !tbaa !11
  %367 = load ptr, ptr %13, align 8, !tbaa !5
  %368 = load ptr, ptr %10, align 8, !tbaa !5
  %369 = load i64, ptr %368, align 8, !tbaa !9
  %370 = sub nsw i64 %369, 1
  %371 = getelementptr inbounds double, ptr %367, i64 %370
  %372 = load double, ptr %371, align 8, !tbaa !11
  %373 = fmul double %366, %372
  %374 = call double @llvm.fmuladd.f64(double %359, double %360, double %373)
  %375 = load ptr, ptr %13, align 8, !tbaa !5
  %376 = load ptr, ptr %10, align 8, !tbaa !5
  %377 = load i64, ptr %376, align 8, !tbaa !9
  %378 = getelementptr inbounds double, ptr %375, i64 %377
  %379 = load double, ptr %378, align 8, !tbaa !11
  %380 = load ptr, ptr %13, align 8, !tbaa !5
  %381 = load ptr, ptr %10, align 8, !tbaa !5
  %382 = load i64, ptr %381, align 8, !tbaa !9
  %383 = getelementptr inbounds double, ptr %380, i64 %382
  %384 = load double, ptr %383, align 8, !tbaa !11
  %385 = call double @llvm.fmuladd.f64(double %379, double %384, double %374)
  store double %385, ptr %20, align 8, !tbaa !11
  %386 = load ptr, ptr %13, align 8, !tbaa !5
  %387 = load ptr, ptr %10, align 8, !tbaa !5
  %388 = load i64, ptr %387, align 8, !tbaa !9
  %389 = getelementptr inbounds double, ptr %386, i64 %388
  %390 = load double, ptr %389, align 8, !tbaa !11
  %391 = load ptr, ptr %13, align 8, !tbaa !5
  %392 = load ptr, ptr %10, align 8, !tbaa !5
  %393 = load i64, ptr %392, align 8, !tbaa !9
  %394 = getelementptr inbounds double, ptr %391, i64 %393
  %395 = load double, ptr %394, align 8, !tbaa !11
  %396 = fmul double %390, %395
  %397 = load double, ptr %29, align 8, !tbaa !11
  %398 = fmul double %396, %397
  store double %398, ptr %21, align 8, !tbaa !11
  %399 = load double, ptr %20, align 8, !tbaa !11
  %400 = fcmp olt double %399, 0.000000e+00
  br i1 %400, label %401, label %415

401:                                              ; preds = %345
  %402 = load double, ptr %21, align 8, !tbaa !11
  %403 = fmul double %402, 2.000000e+00
  %404 = load double, ptr %20, align 8, !tbaa !11
  %405 = load double, ptr %20, align 8, !tbaa !11
  %406 = load double, ptr %21, align 8, !tbaa !11
  %407 = fmul double %406, 4.000000e+00
  %408 = load double, ptr %22, align 8, !tbaa !11
  %409 = fmul double %407, %408
  %410 = call double @llvm.fmuladd.f64(double %404, double %405, double %409)
  %411 = call double @sqrt(double noundef %410) #5
  %412 = load double, ptr %20, align 8, !tbaa !11
  %413 = fsub double %411, %412
  %414 = fdiv double %403, %413
  store double %414, ptr %33, align 8, !tbaa !11
  br label %429

415:                                              ; preds = %345
  %416 = load double, ptr %20, align 8, !tbaa !11
  %417 = load double, ptr %20, align 8, !tbaa !11
  %418 = load double, ptr %20, align 8, !tbaa !11
  %419 = load double, ptr %21, align 8, !tbaa !11
  %420 = fmul double %419, 4.000000e+00
  %421 = load double, ptr %22, align 8, !tbaa !11
  %422 = fmul double %420, %421
  %423 = call double @llvm.fmuladd.f64(double %417, double %418, double %422)
  %424 = call double @sqrt(double noundef %423) #5
  %425 = fadd double %416, %424
  %426 = load double, ptr %22, align 8, !tbaa !11
  %427 = fmul double %426, 2.000000e+00
  %428 = fdiv double %425, %427
  store double %428, ptr %33, align 8, !tbaa !11
  br label %429

429:                                              ; preds = %415, %401
  store double 0.000000e+00, ptr %43, align 8, !tbaa !11
  %430 = load double, ptr %45, align 8, !tbaa !11
  store double %430, ptr %44, align 8, !tbaa !11
  br label %431

431:                                              ; preds = %429, %341
  %432 = load ptr, ptr %10, align 8, !tbaa !5
  %433 = load i64, ptr %432, align 8, !tbaa !9
  store i64 %433, ptr %18, align 8, !tbaa !9
  store i64 1, ptr %23, align 8, !tbaa !9
  br label %434

434:                                              ; preds = %454, %431
  %435 = load i64, ptr %23, align 8, !tbaa !9
  %436 = load i64, ptr %18, align 8, !tbaa !9
  %437 = icmp sle i64 %435, %436
  br i1 %437, label %438, label %457

438:                                              ; preds = %434
  %439 = load ptr, ptr %12, align 8, !tbaa !5
  %440 = load i64, ptr %23, align 8, !tbaa !9
  %441 = getelementptr inbounds double, ptr %439, i64 %440
  %442 = load double, ptr %441, align 8, !tbaa !11
  %443 = load ptr, ptr %12, align 8, !tbaa !5
  %444 = load ptr, ptr %11, align 8, !tbaa !5
  %445 = load i64, ptr %444, align 8, !tbaa !9
  %446 = getelementptr inbounds double, ptr %443, i64 %445
  %447 = load double, ptr %446, align 8, !tbaa !11
  %448 = fsub double %442, %447
  %449 = load double, ptr %33, align 8, !tbaa !11
  %450 = fsub double %448, %449
  %451 = load ptr, ptr %14, align 8, !tbaa !5
  %452 = load i64, ptr %23, align 8, !tbaa !9
  %453 = getelementptr inbounds double, ptr %451, i64 %452
  store double %450, ptr %453, align 8, !tbaa !11
  br label %454

454:                                              ; preds = %438
  %455 = load i64, ptr %23, align 8, !tbaa !9
  %456 = add nsw i64 %455, 1
  store i64 %456, ptr %23, align 8, !tbaa !9
  br label %434, !llvm.loop !16

457:                                              ; preds = %434
  store double 0.000000e+00, ptr %38, align 8, !tbaa !11
  store double 0.000000e+00, ptr %34, align 8, !tbaa !11
  store double 0.000000e+00, ptr %50, align 8, !tbaa !11
  %458 = load i64, ptr %25, align 8, !tbaa !9
  store i64 %458, ptr %18, align 8, !tbaa !9
  store i64 1, ptr %23, align 8, !tbaa !9
  br label %459

459:                                              ; preds = %487, %457
  %460 = load i64, ptr %23, align 8, !tbaa !9
  %461 = load i64, ptr %18, align 8, !tbaa !9
  %462 = icmp sle i64 %460, %461
  br i1 %462, label %463, label %490

463:                                              ; preds = %459
  %464 = load ptr, ptr %13, align 8, !tbaa !5
  %465 = load i64, ptr %23, align 8, !tbaa !9
  %466 = getelementptr inbounds double, ptr %464, i64 %465
  %467 = load double, ptr %466, align 8, !tbaa !11
  %468 = load ptr, ptr %14, align 8, !tbaa !5
  %469 = load i64, ptr %23, align 8, !tbaa !9
  %470 = getelementptr inbounds double, ptr %468, i64 %469
  %471 = load double, ptr %470, align 8, !tbaa !11
  %472 = fdiv double %467, %471
  store double %472, ptr %40, align 8, !tbaa !11
  %473 = load ptr, ptr %13, align 8, !tbaa !5
  %474 = load i64, ptr %23, align 8, !tbaa !9
  %475 = getelementptr inbounds double, ptr %473, i64 %474
  %476 = load double, ptr %475, align 8, !tbaa !11
  %477 = load double, ptr %40, align 8, !tbaa !11
  %478 = load double, ptr %34, align 8, !tbaa !11
  %479 = call double @llvm.fmuladd.f64(double %476, double %477, double %478)
  store double %479, ptr %34, align 8, !tbaa !11
  %480 = load double, ptr %40, align 8, !tbaa !11
  %481 = load double, ptr %40, align 8, !tbaa !11
  %482 = load double, ptr %38, align 8, !tbaa !11
  %483 = call double @llvm.fmuladd.f64(double %480, double %481, double %482)
  store double %483, ptr %38, align 8, !tbaa !11
  %484 = load double, ptr %34, align 8, !tbaa !11
  %485 = load double, ptr %50, align 8, !tbaa !11
  %486 = fadd double %485, %484
  store double %486, ptr %50, align 8, !tbaa !11
  br label %487

487:                                              ; preds = %463
  %488 = load i64, ptr %23, align 8, !tbaa !9
  %489 = add nsw i64 %488, 1
  store i64 %489, ptr %23, align 8, !tbaa !9
  br label %459, !llvm.loop !17

490:                                              ; preds = %459
  %491 = load double, ptr %50, align 8, !tbaa !11
  %492 = fcmp oge double %491, 0.000000e+00
  br i1 %492, label %493, label %495

493:                                              ; preds = %490
  %494 = load double, ptr %50, align 8, !tbaa !11
  br label %498

495:                                              ; preds = %490
  %496 = load double, ptr %50, align 8, !tbaa !11
  %497 = fneg double %496
  br label %498

498:                                              ; preds = %495, %493
  %499 = phi double [ %494, %493 ], [ %497, %495 ]
  store double %499, ptr %50, align 8, !tbaa !11
  %500 = load ptr, ptr %13, align 8, !tbaa !5
  %501 = load ptr, ptr %10, align 8, !tbaa !5
  %502 = load i64, ptr %501, align 8, !tbaa !9
  %503 = getelementptr inbounds double, ptr %500, i64 %502
  %504 = load double, ptr %503, align 8, !tbaa !11
  %505 = load ptr, ptr %14, align 8, !tbaa !5
  %506 = load ptr, ptr %10, align 8, !tbaa !5
  %507 = load i64, ptr %506, align 8, !tbaa !9
  %508 = getelementptr inbounds double, ptr %505, i64 %507
  %509 = load double, ptr %508, align 8, !tbaa !11
  %510 = fdiv double %504, %509
  store double %510, ptr %40, align 8, !tbaa !11
  %511 = load ptr, ptr %13, align 8, !tbaa !5
  %512 = load ptr, ptr %10, align 8, !tbaa !5
  %513 = load i64, ptr %512, align 8, !tbaa !9
  %514 = getelementptr inbounds double, ptr %511, i64 %513
  %515 = load double, ptr %514, align 8, !tbaa !11
  %516 = load double, ptr %40, align 8, !tbaa !11
  %517 = fmul double %515, %516
  store double %517, ptr %31, align 8, !tbaa !11
  %518 = load double, ptr %40, align 8, !tbaa !11
  %519 = load double, ptr %40, align 8, !tbaa !11
  %520 = fmul double %518, %519
  store double %520, ptr %37, align 8, !tbaa !11
  %521 = load double, ptr %31, align 8, !tbaa !11
  %522 = fneg double %521
  %523 = load double, ptr %34, align 8, !tbaa !11
  %524 = fsub double %522, %523
  %525 = load double, ptr %50, align 8, !tbaa !11
  %526 = call double @llvm.fmuladd.f64(double %524, double 8.000000e+00, double %525)
  %527 = load double, ptr %31, align 8, !tbaa !11
  %528 = fsub double %526, %527
  %529 = load double, ptr %51, align 8, !tbaa !11
  %530 = fadd double %528, %529
  %531 = load double, ptr %33, align 8, !tbaa !11
  %532 = fcmp oge double %531, 0.000000e+00
  br i1 %532, label %533, label %535

533:                                              ; preds = %498
  %534 = load double, ptr %33, align 8, !tbaa !11
  br label %538

535:                                              ; preds = %498
  %536 = load double, ptr %33, align 8, !tbaa !11
  %537 = fneg double %536
  br label %538

538:                                              ; preds = %535, %533
  %539 = phi double [ %534, %533 ], [ %537, %535 ]
  %540 = load double, ptr %38, align 8, !tbaa !11
  %541 = load double, ptr %37, align 8, !tbaa !11
  %542 = fadd double %540, %541
  %543 = call double @llvm.fmuladd.f64(double %539, double %542, double %530)
  store double %543, ptr %50, align 8, !tbaa !11
  %544 = load double, ptr %51, align 8, !tbaa !11
  %545 = load double, ptr %31, align 8, !tbaa !11
  %546 = fadd double %544, %545
  %547 = load double, ptr %34, align 8, !tbaa !11
  %548 = fadd double %546, %547
  store double %548, ptr %24, align 8, !tbaa !11
  %549 = load double, ptr %24, align 8, !tbaa !11
  %550 = fcmp oge double %549, 0.000000e+00
  br i1 %550, label %551, label %553

551:                                              ; preds = %538
  %552 = load double, ptr %24, align 8, !tbaa !11
  br label %556

553:                                              ; preds = %538
  %554 = load double, ptr %24, align 8, !tbaa !11
  %555 = fneg double %554
  br label %556

556:                                              ; preds = %553, %551
  %557 = phi double [ %552, %551 ], [ %555, %553 ]
  %558 = load double, ptr %32, align 8, !tbaa !11
  %559 = load double, ptr %50, align 8, !tbaa !11
  %560 = fmul double %558, %559
  %561 = fcmp ole double %557, %560
  br i1 %561, label %562, label %571

562:                                              ; preds = %556
  %563 = load ptr, ptr %12, align 8, !tbaa !5
  %564 = load ptr, ptr %11, align 8, !tbaa !5
  %565 = load i64, ptr %564, align 8, !tbaa !9
  %566 = getelementptr inbounds double, ptr %563, i64 %565
  %567 = load double, ptr %566, align 8, !tbaa !11
  %568 = load double, ptr %33, align 8, !tbaa !11
  %569 = fadd double %567, %568
  %570 = load ptr, ptr %16, align 8, !tbaa !5
  store double %569, ptr %570, align 8, !tbaa !11
  br label %3220

571:                                              ; preds = %556
  %572 = load double, ptr %24, align 8, !tbaa !11
  %573 = fcmp ole double %572, 0.000000e+00
  br i1 %573, label %574, label %584

574:                                              ; preds = %571
  %575 = load double, ptr %43, align 8, !tbaa !11
  %576 = load double, ptr %33, align 8, !tbaa !11
  %577 = fcmp oge double %575, %576
  br i1 %577, label %578, label %580

578:                                              ; preds = %574
  %579 = load double, ptr %43, align 8, !tbaa !11
  br label %582

580:                                              ; preds = %574
  %581 = load double, ptr %33, align 8, !tbaa !11
  br label %582

582:                                              ; preds = %580, %578
  %583 = phi double [ %579, %578 ], [ %581, %580 ]
  store double %583, ptr %43, align 8, !tbaa !11
  br label %594

584:                                              ; preds = %571
  %585 = load double, ptr %44, align 8, !tbaa !11
  %586 = load double, ptr %33, align 8, !tbaa !11
  %587 = fcmp ole double %585, %586
  br i1 %587, label %588, label %590

588:                                              ; preds = %584
  %589 = load double, ptr %44, align 8, !tbaa !11
  br label %592

590:                                              ; preds = %584
  %591 = load double, ptr %33, align 8, !tbaa !11
  br label %592

592:                                              ; preds = %590, %588
  %593 = phi double [ %589, %588 ], [ %591, %590 ]
  store double %593, ptr %44, align 8, !tbaa !11
  br label %594

594:                                              ; preds = %592, %582
  %595 = load i64, ptr %46, align 8, !tbaa !9
  %596 = add nsw i64 %595, 1
  store i64 %596, ptr %46, align 8, !tbaa !9
  %597 = load double, ptr %24, align 8, !tbaa !11
  %598 = load ptr, ptr %14, align 8, !tbaa !5
  %599 = load ptr, ptr %10, align 8, !tbaa !5
  %600 = load i64, ptr %599, align 8, !tbaa !9
  %601 = sub nsw i64 %600, 1
  %602 = getelementptr inbounds double, ptr %598, i64 %601
  %603 = load double, ptr %602, align 8, !tbaa !11
  %604 = load double, ptr %38, align 8, !tbaa !11
  %605 = fneg double %603
  %606 = call double @llvm.fmuladd.f64(double %605, double %604, double %597)
  %607 = load ptr, ptr %14, align 8, !tbaa !5
  %608 = load ptr, ptr %10, align 8, !tbaa !5
  %609 = load i64, ptr %608, align 8, !tbaa !9
  %610 = getelementptr inbounds double, ptr %607, i64 %609
  %611 = load double, ptr %610, align 8, !tbaa !11
  %612 = load double, ptr %37, align 8, !tbaa !11
  %613 = fneg double %611
  %614 = call double @llvm.fmuladd.f64(double %613, double %612, double %606)
  store double %614, ptr %22, align 8, !tbaa !11
  %615 = load ptr, ptr %14, align 8, !tbaa !5
  %616 = load ptr, ptr %10, align 8, !tbaa !5
  %617 = load i64, ptr %616, align 8, !tbaa !9
  %618 = sub nsw i64 %617, 1
  %619 = getelementptr inbounds double, ptr %615, i64 %618
  %620 = load double, ptr %619, align 8, !tbaa !11
  %621 = load ptr, ptr %14, align 8, !tbaa !5
  %622 = load ptr, ptr %10, align 8, !tbaa !5
  %623 = load i64, ptr %622, align 8, !tbaa !9
  %624 = getelementptr inbounds double, ptr %621, i64 %623
  %625 = load double, ptr %624, align 8, !tbaa !11
  %626 = fadd double %620, %625
  %627 = load double, ptr %24, align 8, !tbaa !11
  %628 = load ptr, ptr %14, align 8, !tbaa !5
  %629 = load ptr, ptr %10, align 8, !tbaa !5
  %630 = load i64, ptr %629, align 8, !tbaa !9
  %631 = sub nsw i64 %630, 1
  %632 = getelementptr inbounds double, ptr %628, i64 %631
  %633 = load double, ptr %632, align 8, !tbaa !11
  %634 = load ptr, ptr %14, align 8, !tbaa !5
  %635 = load ptr, ptr %10, align 8, !tbaa !5
  %636 = load i64, ptr %635, align 8, !tbaa !9
  %637 = getelementptr inbounds double, ptr %634, i64 %636
  %638 = load double, ptr %637, align 8, !tbaa !11
  %639 = fmul double %633, %638
  %640 = load double, ptr %38, align 8, !tbaa !11
  %641 = load double, ptr %37, align 8, !tbaa !11
  %642 = fadd double %640, %641
  %643 = fmul double %639, %642
  %644 = fneg double %643
  %645 = call double @llvm.fmuladd.f64(double %626, double %627, double %644)
  store double %645, ptr %20, align 8, !tbaa !11
  %646 = load ptr, ptr %14, align 8, !tbaa !5
  %647 = load ptr, ptr %10, align 8, !tbaa !5
  %648 = load i64, ptr %647, align 8, !tbaa !9
  %649 = sub nsw i64 %648, 1
  %650 = getelementptr inbounds double, ptr %646, i64 %649
  %651 = load double, ptr %650, align 8, !tbaa !11
  %652 = load ptr, ptr %14, align 8, !tbaa !5
  %653 = load ptr, ptr %10, align 8, !tbaa !5
  %654 = load i64, ptr %653, align 8, !tbaa !9
  %655 = getelementptr inbounds double, ptr %652, i64 %654
  %656 = load double, ptr %655, align 8, !tbaa !11
  %657 = fmul double %651, %656
  %658 = load double, ptr %24, align 8, !tbaa !11
  %659 = fmul double %657, %658
  store double %659, ptr %21, align 8, !tbaa !11
  %660 = load double, ptr %22, align 8, !tbaa !11
  %661 = fcmp olt double %660, 0.000000e+00
  br i1 %661, label %662, label %672

662:                                              ; preds = %594
  %663 = load double, ptr %22, align 8, !tbaa !11
  %664 = fcmp oge double %663, 0.000000e+00
  br i1 %664, label %665, label %667

665:                                              ; preds = %662
  %666 = load double, ptr %22, align 8, !tbaa !11
  br label %670

667:                                              ; preds = %662
  %668 = load double, ptr %22, align 8, !tbaa !11
  %669 = fneg double %668
  br label %670

670:                                              ; preds = %667, %665
  %671 = phi double [ %666, %665 ], [ %669, %667 ]
  store double %671, ptr %22, align 8, !tbaa !11
  br label %672

672:                                              ; preds = %670, %594
  %673 = load double, ptr %22, align 8, !tbaa !11
  %674 = fcmp oeq double %673, 0.000000e+00
  br i1 %674, label %675, label %679

675:                                              ; preds = %672
  %676 = load double, ptr %44, align 8, !tbaa !11
  %677 = load double, ptr %33, align 8, !tbaa !11
  %678 = fsub double %676, %677
  store double %678, ptr %30, align 8, !tbaa !11
  br label %731

679:                                              ; preds = %672
  %680 = load double, ptr %20, align 8, !tbaa !11
  %681 = fcmp oge double %680, 0.000000e+00
  br i1 %681, label %682, label %706

682:                                              ; preds = %679
  %683 = load double, ptr %20, align 8, !tbaa !11
  %684 = load double, ptr %20, align 8, !tbaa !11
  %685 = load double, ptr %20, align 8, !tbaa !11
  %686 = load double, ptr %21, align 8, !tbaa !11
  %687 = fmul double %686, 4.000000e+00
  %688 = load double, ptr %22, align 8, !tbaa !11
  %689 = fmul double %687, %688
  %690 = fneg double %689
  %691 = call double @llvm.fmuladd.f64(double %684, double %685, double %690)
  store double %691, ptr %19, align 8, !tbaa !11
  %692 = load double, ptr %19, align 8, !tbaa !11
  %693 = fcmp oge double %692, 0.000000e+00
  br i1 %693, label %694, label %696

694:                                              ; preds = %682
  %695 = load double, ptr %19, align 8, !tbaa !11
  br label %699

696:                                              ; preds = %682
  %697 = load double, ptr %19, align 8, !tbaa !11
  %698 = fneg double %697
  br label %699

699:                                              ; preds = %696, %694
  %700 = phi double [ %695, %694 ], [ %698, %696 ]
  %701 = call double @sqrt(double noundef %700) #5
  %702 = fadd double %683, %701
  %703 = load double, ptr %22, align 8, !tbaa !11
  %704 = fmul double %703, 2.000000e+00
  %705 = fdiv double %702, %704
  store double %705, ptr %30, align 8, !tbaa !11
  br label %730

706:                                              ; preds = %679
  %707 = load double, ptr %21, align 8, !tbaa !11
  %708 = fmul double %707, 2.000000e+00
  %709 = load double, ptr %20, align 8, !tbaa !11
  %710 = load double, ptr %20, align 8, !tbaa !11
  %711 = load double, ptr %20, align 8, !tbaa !11
  %712 = load double, ptr %21, align 8, !tbaa !11
  %713 = fmul double %712, 4.000000e+00
  %714 = load double, ptr %22, align 8, !tbaa !11
  %715 = fmul double %713, %714
  %716 = fneg double %715
  %717 = call double @llvm.fmuladd.f64(double %710, double %711, double %716)
  store double %717, ptr %19, align 8, !tbaa !11
  %718 = load double, ptr %19, align 8, !tbaa !11
  %719 = fcmp oge double %718, 0.000000e+00
  br i1 %719, label %720, label %722

720:                                              ; preds = %706
  %721 = load double, ptr %19, align 8, !tbaa !11
  br label %725

722:                                              ; preds = %706
  %723 = load double, ptr %19, align 8, !tbaa !11
  %724 = fneg double %723
  br label %725

725:                                              ; preds = %722, %720
  %726 = phi double [ %721, %720 ], [ %724, %722 ]
  %727 = call double @sqrt(double noundef %726) #5
  %728 = fsub double %709, %727
  %729 = fdiv double %708, %728
  store double %729, ptr %30, align 8, !tbaa !11
  br label %730

730:                                              ; preds = %725, %699
  br label %731

731:                                              ; preds = %730, %675
  %732 = load double, ptr %24, align 8, !tbaa !11
  %733 = load double, ptr %30, align 8, !tbaa !11
  %734 = fmul double %732, %733
  %735 = fcmp ogt double %734, 0.000000e+00
  br i1 %735, label %736, label %743

736:                                              ; preds = %731
  %737 = load double, ptr %24, align 8, !tbaa !11
  %738 = fneg double %737
  %739 = load double, ptr %38, align 8, !tbaa !11
  %740 = load double, ptr %37, align 8, !tbaa !11
  %741 = fadd double %739, %740
  %742 = fdiv double %738, %741
  store double %742, ptr %30, align 8, !tbaa !11
  br label %743

743:                                              ; preds = %736, %731
  %744 = load double, ptr %33, align 8, !tbaa !11
  %745 = load double, ptr %30, align 8, !tbaa !11
  %746 = fadd double %744, %745
  store double %746, ptr %40, align 8, !tbaa !11
  %747 = load double, ptr %40, align 8, !tbaa !11
  %748 = load double, ptr %44, align 8, !tbaa !11
  %749 = fcmp ogt double %747, %748
  br i1 %749, label %754, label %750

750:                                              ; preds = %743
  %751 = load double, ptr %40, align 8, !tbaa !11
  %752 = load double, ptr %43, align 8, !tbaa !11
  %753 = fcmp olt double %751, %752
  br i1 %753, label %754, label %768

754:                                              ; preds = %750, %743
  %755 = load double, ptr %24, align 8, !tbaa !11
  %756 = fcmp olt double %755, 0.000000e+00
  br i1 %756, label %757, label %762

757:                                              ; preds = %754
  %758 = load double, ptr %44, align 8, !tbaa !11
  %759 = load double, ptr %33, align 8, !tbaa !11
  %760 = fsub double %758, %759
  %761 = fdiv double %760, 2.000000e+00
  store double %761, ptr %30, align 8, !tbaa !11
  br label %767

762:                                              ; preds = %754
  %763 = load double, ptr %43, align 8, !tbaa !11
  %764 = load double, ptr %33, align 8, !tbaa !11
  %765 = fsub double %763, %764
  %766 = fdiv double %765, 2.000000e+00
  store double %766, ptr %30, align 8, !tbaa !11
  br label %767

767:                                              ; preds = %762, %757
  br label %768

768:                                              ; preds = %767, %750
  %769 = load ptr, ptr %10, align 8, !tbaa !5
  %770 = load i64, ptr %769, align 8, !tbaa !9
  store i64 %770, ptr %18, align 8, !tbaa !9
  store i64 1, ptr %23, align 8, !tbaa !9
  br label %771

771:                                              ; preds = %782, %768
  %772 = load i64, ptr %23, align 8, !tbaa !9
  %773 = load i64, ptr %18, align 8, !tbaa !9
  %774 = icmp sle i64 %772, %773
  br i1 %774, label %775, label %785

775:                                              ; preds = %771
  %776 = load double, ptr %30, align 8, !tbaa !11
  %777 = load ptr, ptr %14, align 8, !tbaa !5
  %778 = load i64, ptr %23, align 8, !tbaa !9
  %779 = getelementptr inbounds double, ptr %777, i64 %778
  %780 = load double, ptr %779, align 8, !tbaa !11
  %781 = fsub double %780, %776
  store double %781, ptr %779, align 8, !tbaa !11
  br label %782

782:                                              ; preds = %775
  %783 = load i64, ptr %23, align 8, !tbaa !9
  %784 = add nsw i64 %783, 1
  store i64 %784, ptr %23, align 8, !tbaa !9
  br label %771, !llvm.loop !18

785:                                              ; preds = %771
  %786 = load double, ptr %30, align 8, !tbaa !11
  %787 = load double, ptr %33, align 8, !tbaa !11
  %788 = fadd double %787, %786
  store double %788, ptr %33, align 8, !tbaa !11
  store double 0.000000e+00, ptr %38, align 8, !tbaa !11
  store double 0.000000e+00, ptr %34, align 8, !tbaa !11
  store double 0.000000e+00, ptr %50, align 8, !tbaa !11
  %789 = load i64, ptr %25, align 8, !tbaa !9
  store i64 %789, ptr %18, align 8, !tbaa !9
  store i64 1, ptr %23, align 8, !tbaa !9
  br label %790

790:                                              ; preds = %818, %785
  %791 = load i64, ptr %23, align 8, !tbaa !9
  %792 = load i64, ptr %18, align 8, !tbaa !9
  %793 = icmp sle i64 %791, %792
  br i1 %793, label %794, label %821

794:                                              ; preds = %790
  %795 = load ptr, ptr %13, align 8, !tbaa !5
  %796 = load i64, ptr %23, align 8, !tbaa !9
  %797 = getelementptr inbounds double, ptr %795, i64 %796
  %798 = load double, ptr %797, align 8, !tbaa !11
  %799 = load ptr, ptr %14, align 8, !tbaa !5
  %800 = load i64, ptr %23, align 8, !tbaa !9
  %801 = getelementptr inbounds double, ptr %799, i64 %800
  %802 = load double, ptr %801, align 8, !tbaa !11
  %803 = fdiv double %798, %802
  store double %803, ptr %40, align 8, !tbaa !11
  %804 = load ptr, ptr %13, align 8, !tbaa !5
  %805 = load i64, ptr %23, align 8, !tbaa !9
  %806 = getelementptr inbounds double, ptr %804, i64 %805
  %807 = load double, ptr %806, align 8, !tbaa !11
  %808 = load double, ptr %40, align 8, !tbaa !11
  %809 = load double, ptr %34, align 8, !tbaa !11
  %810 = call double @llvm.fmuladd.f64(double %807, double %808, double %809)
  store double %810, ptr %34, align 8, !tbaa !11
  %811 = load double, ptr %40, align 8, !tbaa !11
  %812 = load double, ptr %40, align 8, !tbaa !11
  %813 = load double, ptr %38, align 8, !tbaa !11
  %814 = call double @llvm.fmuladd.f64(double %811, double %812, double %813)
  store double %814, ptr %38, align 8, !tbaa !11
  %815 = load double, ptr %34, align 8, !tbaa !11
  %816 = load double, ptr %50, align 8, !tbaa !11
  %817 = fadd double %816, %815
  store double %817, ptr %50, align 8, !tbaa !11
  br label %818

818:                                              ; preds = %794
  %819 = load i64, ptr %23, align 8, !tbaa !9
  %820 = add nsw i64 %819, 1
  store i64 %820, ptr %23, align 8, !tbaa !9
  br label %790, !llvm.loop !19

821:                                              ; preds = %790
  %822 = load double, ptr %50, align 8, !tbaa !11
  %823 = fcmp oge double %822, 0.000000e+00
  br i1 %823, label %824, label %826

824:                                              ; preds = %821
  %825 = load double, ptr %50, align 8, !tbaa !11
  br label %829

826:                                              ; preds = %821
  %827 = load double, ptr %50, align 8, !tbaa !11
  %828 = fneg double %827
  br label %829

829:                                              ; preds = %826, %824
  %830 = phi double [ %825, %824 ], [ %828, %826 ]
  store double %830, ptr %50, align 8, !tbaa !11
  %831 = load ptr, ptr %13, align 8, !tbaa !5
  %832 = load ptr, ptr %10, align 8, !tbaa !5
  %833 = load i64, ptr %832, align 8, !tbaa !9
  %834 = getelementptr inbounds double, ptr %831, i64 %833
  %835 = load double, ptr %834, align 8, !tbaa !11
  %836 = load ptr, ptr %14, align 8, !tbaa !5
  %837 = load ptr, ptr %10, align 8, !tbaa !5
  %838 = load i64, ptr %837, align 8, !tbaa !9
  %839 = getelementptr inbounds double, ptr %836, i64 %838
  %840 = load double, ptr %839, align 8, !tbaa !11
  %841 = fdiv double %835, %840
  store double %841, ptr %40, align 8, !tbaa !11
  %842 = load ptr, ptr %13, align 8, !tbaa !5
  %843 = load ptr, ptr %10, align 8, !tbaa !5
  %844 = load i64, ptr %843, align 8, !tbaa !9
  %845 = getelementptr inbounds double, ptr %842, i64 %844
  %846 = load double, ptr %845, align 8, !tbaa !11
  %847 = load double, ptr %40, align 8, !tbaa !11
  %848 = fmul double %846, %847
  store double %848, ptr %31, align 8, !tbaa !11
  %849 = load double, ptr %40, align 8, !tbaa !11
  %850 = load double, ptr %40, align 8, !tbaa !11
  %851 = fmul double %849, %850
  store double %851, ptr %37, align 8, !tbaa !11
  %852 = load double, ptr %31, align 8, !tbaa !11
  %853 = fneg double %852
  %854 = load double, ptr %34, align 8, !tbaa !11
  %855 = fsub double %853, %854
  %856 = load double, ptr %50, align 8, !tbaa !11
  %857 = call double @llvm.fmuladd.f64(double %855, double 8.000000e+00, double %856)
  %858 = load double, ptr %31, align 8, !tbaa !11
  %859 = fsub double %857, %858
  %860 = load double, ptr %51, align 8, !tbaa !11
  %861 = fadd double %859, %860
  %862 = load double, ptr %33, align 8, !tbaa !11
  %863 = fcmp oge double %862, 0.000000e+00
  br i1 %863, label %864, label %866

864:                                              ; preds = %829
  %865 = load double, ptr %33, align 8, !tbaa !11
  br label %869

866:                                              ; preds = %829
  %867 = load double, ptr %33, align 8, !tbaa !11
  %868 = fneg double %867
  br label %869

869:                                              ; preds = %866, %864
  %870 = phi double [ %865, %864 ], [ %868, %866 ]
  %871 = load double, ptr %38, align 8, !tbaa !11
  %872 = load double, ptr %37, align 8, !tbaa !11
  %873 = fadd double %871, %872
  %874 = call double @llvm.fmuladd.f64(double %870, double %873, double %861)
  store double %874, ptr %50, align 8, !tbaa !11
  %875 = load double, ptr %51, align 8, !tbaa !11
  %876 = load double, ptr %31, align 8, !tbaa !11
  %877 = fadd double %875, %876
  %878 = load double, ptr %34, align 8, !tbaa !11
  %879 = fadd double %877, %878
  store double %879, ptr %24, align 8, !tbaa !11
  %880 = load i64, ptr %46, align 8, !tbaa !9
  %881 = add nsw i64 %880, 1
  store i64 %881, ptr %39, align 8, !tbaa !9
  %882 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %882, ptr %46, align 8, !tbaa !9
  br label %883

883:                                              ; preds = %1195, %869
  %884 = load i64, ptr %46, align 8, !tbaa !9
  %885 = icmp sle i64 %884, 30
  br i1 %885, label %886, label %1198

886:                                              ; preds = %883
  %887 = load double, ptr %24, align 8, !tbaa !11
  %888 = fcmp oge double %887, 0.000000e+00
  br i1 %888, label %889, label %891

889:                                              ; preds = %886
  %890 = load double, ptr %24, align 8, !tbaa !11
  br label %894

891:                                              ; preds = %886
  %892 = load double, ptr %24, align 8, !tbaa !11
  %893 = fneg double %892
  br label %894

894:                                              ; preds = %891, %889
  %895 = phi double [ %890, %889 ], [ %893, %891 ]
  %896 = load double, ptr %32, align 8, !tbaa !11
  %897 = load double, ptr %50, align 8, !tbaa !11
  %898 = fmul double %896, %897
  %899 = fcmp ole double %895, %898
  br i1 %899, label %900, label %909

900:                                              ; preds = %894
  %901 = load ptr, ptr %12, align 8, !tbaa !5
  %902 = load ptr, ptr %11, align 8, !tbaa !5
  %903 = load i64, ptr %902, align 8, !tbaa !9
  %904 = getelementptr inbounds double, ptr %901, i64 %903
  %905 = load double, ptr %904, align 8, !tbaa !11
  %906 = load double, ptr %33, align 8, !tbaa !11
  %907 = fadd double %905, %906
  %908 = load ptr, ptr %16, align 8, !tbaa !5
  store double %907, ptr %908, align 8, !tbaa !11
  br label %3220

909:                                              ; preds = %894
  %910 = load double, ptr %24, align 8, !tbaa !11
  %911 = fcmp ole double %910, 0.000000e+00
  br i1 %911, label %912, label %922

912:                                              ; preds = %909
  %913 = load double, ptr %43, align 8, !tbaa !11
  %914 = load double, ptr %33, align 8, !tbaa !11
  %915 = fcmp oge double %913, %914
  br i1 %915, label %916, label %918

916:                                              ; preds = %912
  %917 = load double, ptr %43, align 8, !tbaa !11
  br label %920

918:                                              ; preds = %912
  %919 = load double, ptr %33, align 8, !tbaa !11
  br label %920

920:                                              ; preds = %918, %916
  %921 = phi double [ %917, %916 ], [ %919, %918 ]
  store double %921, ptr %43, align 8, !tbaa !11
  br label %932

922:                                              ; preds = %909
  %923 = load double, ptr %44, align 8, !tbaa !11
  %924 = load double, ptr %33, align 8, !tbaa !11
  %925 = fcmp ole double %923, %924
  br i1 %925, label %926, label %928

926:                                              ; preds = %922
  %927 = load double, ptr %44, align 8, !tbaa !11
  br label %930

928:                                              ; preds = %922
  %929 = load double, ptr %33, align 8, !tbaa !11
  br label %930

930:                                              ; preds = %928, %926
  %931 = phi double [ %927, %926 ], [ %929, %928 ]
  store double %931, ptr %44, align 8, !tbaa !11
  br label %932

932:                                              ; preds = %930, %920
  %933 = load double, ptr %24, align 8, !tbaa !11
  %934 = load ptr, ptr %14, align 8, !tbaa !5
  %935 = load ptr, ptr %10, align 8, !tbaa !5
  %936 = load i64, ptr %935, align 8, !tbaa !9
  %937 = sub nsw i64 %936, 1
  %938 = getelementptr inbounds double, ptr %934, i64 %937
  %939 = load double, ptr %938, align 8, !tbaa !11
  %940 = load double, ptr %38, align 8, !tbaa !11
  %941 = fneg double %939
  %942 = call double @llvm.fmuladd.f64(double %941, double %940, double %933)
  %943 = load ptr, ptr %14, align 8, !tbaa !5
  %944 = load ptr, ptr %10, align 8, !tbaa !5
  %945 = load i64, ptr %944, align 8, !tbaa !9
  %946 = getelementptr inbounds double, ptr %943, i64 %945
  %947 = load double, ptr %946, align 8, !tbaa !11
  %948 = load double, ptr %37, align 8, !tbaa !11
  %949 = fneg double %947
  %950 = call double @llvm.fmuladd.f64(double %949, double %948, double %942)
  store double %950, ptr %22, align 8, !tbaa !11
  %951 = load ptr, ptr %14, align 8, !tbaa !5
  %952 = load ptr, ptr %10, align 8, !tbaa !5
  %953 = load i64, ptr %952, align 8, !tbaa !9
  %954 = sub nsw i64 %953, 1
  %955 = getelementptr inbounds double, ptr %951, i64 %954
  %956 = load double, ptr %955, align 8, !tbaa !11
  %957 = load ptr, ptr %14, align 8, !tbaa !5
  %958 = load ptr, ptr %10, align 8, !tbaa !5
  %959 = load i64, ptr %958, align 8, !tbaa !9
  %960 = getelementptr inbounds double, ptr %957, i64 %959
  %961 = load double, ptr %960, align 8, !tbaa !11
  %962 = fadd double %956, %961
  %963 = load double, ptr %24, align 8, !tbaa !11
  %964 = load ptr, ptr %14, align 8, !tbaa !5
  %965 = load ptr, ptr %10, align 8, !tbaa !5
  %966 = load i64, ptr %965, align 8, !tbaa !9
  %967 = sub nsw i64 %966, 1
  %968 = getelementptr inbounds double, ptr %964, i64 %967
  %969 = load double, ptr %968, align 8, !tbaa !11
  %970 = load ptr, ptr %14, align 8, !tbaa !5
  %971 = load ptr, ptr %10, align 8, !tbaa !5
  %972 = load i64, ptr %971, align 8, !tbaa !9
  %973 = getelementptr inbounds double, ptr %970, i64 %972
  %974 = load double, ptr %973, align 8, !tbaa !11
  %975 = fmul double %969, %974
  %976 = load double, ptr %38, align 8, !tbaa !11
  %977 = load double, ptr %37, align 8, !tbaa !11
  %978 = fadd double %976, %977
  %979 = fmul double %975, %978
  %980 = fneg double %979
  %981 = call double @llvm.fmuladd.f64(double %962, double %963, double %980)
  store double %981, ptr %20, align 8, !tbaa !11
  %982 = load ptr, ptr %14, align 8, !tbaa !5
  %983 = load ptr, ptr %10, align 8, !tbaa !5
  %984 = load i64, ptr %983, align 8, !tbaa !9
  %985 = sub nsw i64 %984, 1
  %986 = getelementptr inbounds double, ptr %982, i64 %985
  %987 = load double, ptr %986, align 8, !tbaa !11
  %988 = load ptr, ptr %14, align 8, !tbaa !5
  %989 = load ptr, ptr %10, align 8, !tbaa !5
  %990 = load i64, ptr %989, align 8, !tbaa !9
  %991 = getelementptr inbounds double, ptr %988, i64 %990
  %992 = load double, ptr %991, align 8, !tbaa !11
  %993 = fmul double %987, %992
  %994 = load double, ptr %24, align 8, !tbaa !11
  %995 = fmul double %993, %994
  store double %995, ptr %21, align 8, !tbaa !11
  %996 = load double, ptr %20, align 8, !tbaa !11
  %997 = fcmp oge double %996, 0.000000e+00
  br i1 %997, label %998, label %1022

998:                                              ; preds = %932
  %999 = load double, ptr %20, align 8, !tbaa !11
  %1000 = load double, ptr %20, align 8, !tbaa !11
  %1001 = load double, ptr %20, align 8, !tbaa !11
  %1002 = load double, ptr %21, align 8, !tbaa !11
  %1003 = fmul double %1002, 4.000000e+00
  %1004 = load double, ptr %22, align 8, !tbaa !11
  %1005 = fmul double %1003, %1004
  %1006 = fneg double %1005
  %1007 = call double @llvm.fmuladd.f64(double %1000, double %1001, double %1006)
  store double %1007, ptr %19, align 8, !tbaa !11
  %1008 = load double, ptr %19, align 8, !tbaa !11
  %1009 = fcmp oge double %1008, 0.000000e+00
  br i1 %1009, label %1010, label %1012

1010:                                             ; preds = %998
  %1011 = load double, ptr %19, align 8, !tbaa !11
  br label %1015

1012:                                             ; preds = %998
  %1013 = load double, ptr %19, align 8, !tbaa !11
  %1014 = fneg double %1013
  br label %1015

1015:                                             ; preds = %1012, %1010
  %1016 = phi double [ %1011, %1010 ], [ %1014, %1012 ]
  %1017 = call double @sqrt(double noundef %1016) #5
  %1018 = fadd double %999, %1017
  %1019 = load double, ptr %22, align 8, !tbaa !11
  %1020 = fmul double %1019, 2.000000e+00
  %1021 = fdiv double %1018, %1020
  store double %1021, ptr %30, align 8, !tbaa !11
  br label %1046

1022:                                             ; preds = %932
  %1023 = load double, ptr %21, align 8, !tbaa !11
  %1024 = fmul double %1023, 2.000000e+00
  %1025 = load double, ptr %20, align 8, !tbaa !11
  %1026 = load double, ptr %20, align 8, !tbaa !11
  %1027 = load double, ptr %20, align 8, !tbaa !11
  %1028 = load double, ptr %21, align 8, !tbaa !11
  %1029 = fmul double %1028, 4.000000e+00
  %1030 = load double, ptr %22, align 8, !tbaa !11
  %1031 = fmul double %1029, %1030
  %1032 = fneg double %1031
  %1033 = call double @llvm.fmuladd.f64(double %1026, double %1027, double %1032)
  store double %1033, ptr %19, align 8, !tbaa !11
  %1034 = load double, ptr %19, align 8, !tbaa !11
  %1035 = fcmp oge double %1034, 0.000000e+00
  br i1 %1035, label %1036, label %1038

1036:                                             ; preds = %1022
  %1037 = load double, ptr %19, align 8, !tbaa !11
  br label %1041

1038:                                             ; preds = %1022
  %1039 = load double, ptr %19, align 8, !tbaa !11
  %1040 = fneg double %1039
  br label %1041

1041:                                             ; preds = %1038, %1036
  %1042 = phi double [ %1037, %1036 ], [ %1040, %1038 ]
  %1043 = call double @sqrt(double noundef %1042) #5
  %1044 = fsub double %1025, %1043
  %1045 = fdiv double %1024, %1044
  store double %1045, ptr %30, align 8, !tbaa !11
  br label %1046

1046:                                             ; preds = %1041, %1015
  %1047 = load double, ptr %24, align 8, !tbaa !11
  %1048 = load double, ptr %30, align 8, !tbaa !11
  %1049 = fmul double %1047, %1048
  %1050 = fcmp ogt double %1049, 0.000000e+00
  br i1 %1050, label %1051, label %1058

1051:                                             ; preds = %1046
  %1052 = load double, ptr %24, align 8, !tbaa !11
  %1053 = fneg double %1052
  %1054 = load double, ptr %38, align 8, !tbaa !11
  %1055 = load double, ptr %37, align 8, !tbaa !11
  %1056 = fadd double %1054, %1055
  %1057 = fdiv double %1053, %1056
  store double %1057, ptr %30, align 8, !tbaa !11
  br label %1058

1058:                                             ; preds = %1051, %1046
  %1059 = load double, ptr %33, align 8, !tbaa !11
  %1060 = load double, ptr %30, align 8, !tbaa !11
  %1061 = fadd double %1059, %1060
  store double %1061, ptr %40, align 8, !tbaa !11
  %1062 = load double, ptr %40, align 8, !tbaa !11
  %1063 = load double, ptr %44, align 8, !tbaa !11
  %1064 = fcmp ogt double %1062, %1063
  br i1 %1064, label %1069, label %1065

1065:                                             ; preds = %1058
  %1066 = load double, ptr %40, align 8, !tbaa !11
  %1067 = load double, ptr %43, align 8, !tbaa !11
  %1068 = fcmp olt double %1066, %1067
  br i1 %1068, label %1069, label %1083

1069:                                             ; preds = %1065, %1058
  %1070 = load double, ptr %24, align 8, !tbaa !11
  %1071 = fcmp olt double %1070, 0.000000e+00
  br i1 %1071, label %1072, label %1077

1072:                                             ; preds = %1069
  %1073 = load double, ptr %44, align 8, !tbaa !11
  %1074 = load double, ptr %33, align 8, !tbaa !11
  %1075 = fsub double %1073, %1074
  %1076 = fdiv double %1075, 2.000000e+00
  store double %1076, ptr %30, align 8, !tbaa !11
  br label %1082

1077:                                             ; preds = %1069
  %1078 = load double, ptr %43, align 8, !tbaa !11
  %1079 = load double, ptr %33, align 8, !tbaa !11
  %1080 = fsub double %1078, %1079
  %1081 = fdiv double %1080, 2.000000e+00
  store double %1081, ptr %30, align 8, !tbaa !11
  br label %1082

1082:                                             ; preds = %1077, %1072
  br label %1083

1083:                                             ; preds = %1082, %1065
  %1084 = load ptr, ptr %10, align 8, !tbaa !5
  %1085 = load i64, ptr %1084, align 8, !tbaa !9
  store i64 %1085, ptr %18, align 8, !tbaa !9
  store i64 1, ptr %23, align 8, !tbaa !9
  br label %1086

1086:                                             ; preds = %1097, %1083
  %1087 = load i64, ptr %23, align 8, !tbaa !9
  %1088 = load i64, ptr %18, align 8, !tbaa !9
  %1089 = icmp sle i64 %1087, %1088
  br i1 %1089, label %1090, label %1100

1090:                                             ; preds = %1086
  %1091 = load double, ptr %30, align 8, !tbaa !11
  %1092 = load ptr, ptr %14, align 8, !tbaa !5
  %1093 = load i64, ptr %23, align 8, !tbaa !9
  %1094 = getelementptr inbounds double, ptr %1092, i64 %1093
  %1095 = load double, ptr %1094, align 8, !tbaa !11
  %1096 = fsub double %1095, %1091
  store double %1096, ptr %1094, align 8, !tbaa !11
  br label %1097

1097:                                             ; preds = %1090
  %1098 = load i64, ptr %23, align 8, !tbaa !9
  %1099 = add nsw i64 %1098, 1
  store i64 %1099, ptr %23, align 8, !tbaa !9
  br label %1086, !llvm.loop !20

1100:                                             ; preds = %1086
  %1101 = load double, ptr %30, align 8, !tbaa !11
  %1102 = load double, ptr %33, align 8, !tbaa !11
  %1103 = fadd double %1102, %1101
  store double %1103, ptr %33, align 8, !tbaa !11
  store double 0.000000e+00, ptr %38, align 8, !tbaa !11
  store double 0.000000e+00, ptr %34, align 8, !tbaa !11
  store double 0.000000e+00, ptr %50, align 8, !tbaa !11
  %1104 = load i64, ptr %25, align 8, !tbaa !9
  store i64 %1104, ptr %18, align 8, !tbaa !9
  store i64 1, ptr %23, align 8, !tbaa !9
  br label %1105

1105:                                             ; preds = %1133, %1100
  %1106 = load i64, ptr %23, align 8, !tbaa !9
  %1107 = load i64, ptr %18, align 8, !tbaa !9
  %1108 = icmp sle i64 %1106, %1107
  br i1 %1108, label %1109, label %1136

1109:                                             ; preds = %1105
  %1110 = load ptr, ptr %13, align 8, !tbaa !5
  %1111 = load i64, ptr %23, align 8, !tbaa !9
  %1112 = getelementptr inbounds double, ptr %1110, i64 %1111
  %1113 = load double, ptr %1112, align 8, !tbaa !11
  %1114 = load ptr, ptr %14, align 8, !tbaa !5
  %1115 = load i64, ptr %23, align 8, !tbaa !9
  %1116 = getelementptr inbounds double, ptr %1114, i64 %1115
  %1117 = load double, ptr %1116, align 8, !tbaa !11
  %1118 = fdiv double %1113, %1117
  store double %1118, ptr %40, align 8, !tbaa !11
  %1119 = load ptr, ptr %13, align 8, !tbaa !5
  %1120 = load i64, ptr %23, align 8, !tbaa !9
  %1121 = getelementptr inbounds double, ptr %1119, i64 %1120
  %1122 = load double, ptr %1121, align 8, !tbaa !11
  %1123 = load double, ptr %40, align 8, !tbaa !11
  %1124 = load double, ptr %34, align 8, !tbaa !11
  %1125 = call double @llvm.fmuladd.f64(double %1122, double %1123, double %1124)
  store double %1125, ptr %34, align 8, !tbaa !11
  %1126 = load double, ptr %40, align 8, !tbaa !11
  %1127 = load double, ptr %40, align 8, !tbaa !11
  %1128 = load double, ptr %38, align 8, !tbaa !11
  %1129 = call double @llvm.fmuladd.f64(double %1126, double %1127, double %1128)
  store double %1129, ptr %38, align 8, !tbaa !11
  %1130 = load double, ptr %34, align 8, !tbaa !11
  %1131 = load double, ptr %50, align 8, !tbaa !11
  %1132 = fadd double %1131, %1130
  store double %1132, ptr %50, align 8, !tbaa !11
  br label %1133

1133:                                             ; preds = %1109
  %1134 = load i64, ptr %23, align 8, !tbaa !9
  %1135 = add nsw i64 %1134, 1
  store i64 %1135, ptr %23, align 8, !tbaa !9
  br label %1105, !llvm.loop !21

1136:                                             ; preds = %1105
  %1137 = load double, ptr %50, align 8, !tbaa !11
  %1138 = fcmp oge double %1137, 0.000000e+00
  br i1 %1138, label %1139, label %1141

1139:                                             ; preds = %1136
  %1140 = load double, ptr %50, align 8, !tbaa !11
  br label %1144

1141:                                             ; preds = %1136
  %1142 = load double, ptr %50, align 8, !tbaa !11
  %1143 = fneg double %1142
  br label %1144

1144:                                             ; preds = %1141, %1139
  %1145 = phi double [ %1140, %1139 ], [ %1143, %1141 ]
  store double %1145, ptr %50, align 8, !tbaa !11
  %1146 = load ptr, ptr %13, align 8, !tbaa !5
  %1147 = load ptr, ptr %10, align 8, !tbaa !5
  %1148 = load i64, ptr %1147, align 8, !tbaa !9
  %1149 = getelementptr inbounds double, ptr %1146, i64 %1148
  %1150 = load double, ptr %1149, align 8, !tbaa !11
  %1151 = load ptr, ptr %14, align 8, !tbaa !5
  %1152 = load ptr, ptr %10, align 8, !tbaa !5
  %1153 = load i64, ptr %1152, align 8, !tbaa !9
  %1154 = getelementptr inbounds double, ptr %1151, i64 %1153
  %1155 = load double, ptr %1154, align 8, !tbaa !11
  %1156 = fdiv double %1150, %1155
  store double %1156, ptr %40, align 8, !tbaa !11
  %1157 = load ptr, ptr %13, align 8, !tbaa !5
  %1158 = load ptr, ptr %10, align 8, !tbaa !5
  %1159 = load i64, ptr %1158, align 8, !tbaa !9
  %1160 = getelementptr inbounds double, ptr %1157, i64 %1159
  %1161 = load double, ptr %1160, align 8, !tbaa !11
  %1162 = load double, ptr %40, align 8, !tbaa !11
  %1163 = fmul double %1161, %1162
  store double %1163, ptr %31, align 8, !tbaa !11
  %1164 = load double, ptr %40, align 8, !tbaa !11
  %1165 = load double, ptr %40, align 8, !tbaa !11
  %1166 = fmul double %1164, %1165
  store double %1166, ptr %37, align 8, !tbaa !11
  %1167 = load double, ptr %31, align 8, !tbaa !11
  %1168 = fneg double %1167
  %1169 = load double, ptr %34, align 8, !tbaa !11
  %1170 = fsub double %1168, %1169
  %1171 = load double, ptr %50, align 8, !tbaa !11
  %1172 = call double @llvm.fmuladd.f64(double %1170, double 8.000000e+00, double %1171)
  %1173 = load double, ptr %31, align 8, !tbaa !11
  %1174 = fsub double %1172, %1173
  %1175 = load double, ptr %51, align 8, !tbaa !11
  %1176 = fadd double %1174, %1175
  %1177 = load double, ptr %33, align 8, !tbaa !11
  %1178 = fcmp oge double %1177, 0.000000e+00
  br i1 %1178, label %1179, label %1181

1179:                                             ; preds = %1144
  %1180 = load double, ptr %33, align 8, !tbaa !11
  br label %1184

1181:                                             ; preds = %1144
  %1182 = load double, ptr %33, align 8, !tbaa !11
  %1183 = fneg double %1182
  br label %1184

1184:                                             ; preds = %1181, %1179
  %1185 = phi double [ %1180, %1179 ], [ %1183, %1181 ]
  %1186 = load double, ptr %38, align 8, !tbaa !11
  %1187 = load double, ptr %37, align 8, !tbaa !11
  %1188 = fadd double %1186, %1187
  %1189 = call double @llvm.fmuladd.f64(double %1185, double %1188, double %1176)
  store double %1189, ptr %50, align 8, !tbaa !11
  %1190 = load double, ptr %51, align 8, !tbaa !11
  %1191 = load double, ptr %31, align 8, !tbaa !11
  %1192 = fadd double %1190, %1191
  %1193 = load double, ptr %34, align 8, !tbaa !11
  %1194 = fadd double %1192, %1193
  store double %1194, ptr %24, align 8, !tbaa !11
  br label %1195

1195:                                             ; preds = %1184
  %1196 = load i64, ptr %46, align 8, !tbaa !9
  %1197 = add nsw i64 %1196, 1
  store i64 %1197, ptr %46, align 8, !tbaa !9
  br label %883, !llvm.loop !22

1198:                                             ; preds = %883
  %1199 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 1, ptr %1199, align 8, !tbaa !9
  %1200 = load ptr, ptr %12, align 8, !tbaa !5
  %1201 = load ptr, ptr %11, align 8, !tbaa !5
  %1202 = load i64, ptr %1201, align 8, !tbaa !9
  %1203 = getelementptr inbounds double, ptr %1200, i64 %1202
  %1204 = load double, ptr %1203, align 8, !tbaa !11
  %1205 = load double, ptr %33, align 8, !tbaa !11
  %1206 = fadd double %1204, %1205
  %1207 = load ptr, ptr %16, align 8, !tbaa !5
  store double %1206, ptr %1207, align 8, !tbaa !11
  br label %3220

1208:                                             ; preds = %95
  store i64 1, ptr %46, align 8, !tbaa !9
  %1209 = load ptr, ptr %11, align 8, !tbaa !5
  %1210 = load i64, ptr %1209, align 8, !tbaa !9
  %1211 = add nsw i64 %1210, 1
  store i64 %1211, ptr %28, align 8, !tbaa !9
  %1212 = load ptr, ptr %12, align 8, !tbaa !5
  %1213 = load i64, ptr %28, align 8, !tbaa !9
  %1214 = getelementptr inbounds double, ptr %1212, i64 %1213
  %1215 = load double, ptr %1214, align 8, !tbaa !11
  %1216 = load ptr, ptr %12, align 8, !tbaa !5
  %1217 = load ptr, ptr %11, align 8, !tbaa !5
  %1218 = load i64, ptr %1217, align 8, !tbaa !9
  %1219 = getelementptr inbounds double, ptr %1216, i64 %1218
  %1220 = load double, ptr %1219, align 8, !tbaa !11
  %1221 = fsub double %1215, %1220
  store double %1221, ptr %29, align 8, !tbaa !11
  %1222 = load double, ptr %29, align 8, !tbaa !11
  %1223 = fdiv double %1222, 2.000000e+00
  store double %1223, ptr %45, align 8, !tbaa !11
  %1224 = load ptr, ptr %10, align 8, !tbaa !5
  %1225 = load i64, ptr %1224, align 8, !tbaa !9
  store i64 %1225, ptr %18, align 8, !tbaa !9
  store i64 1, ptr %23, align 8, !tbaa !9
  br label %1226

1226:                                             ; preds = %1246, %1208
  %1227 = load i64, ptr %23, align 8, !tbaa !9
  %1228 = load i64, ptr %18, align 8, !tbaa !9
  %1229 = icmp sle i64 %1227, %1228
  br i1 %1229, label %1230, label %1249

1230:                                             ; preds = %1226
  %1231 = load ptr, ptr %12, align 8, !tbaa !5
  %1232 = load i64, ptr %23, align 8, !tbaa !9
  %1233 = getelementptr inbounds double, ptr %1231, i64 %1232
  %1234 = load double, ptr %1233, align 8, !tbaa !11
  %1235 = load ptr, ptr %12, align 8, !tbaa !5
  %1236 = load ptr, ptr %11, align 8, !tbaa !5
  %1237 = load i64, ptr %1236, align 8, !tbaa !9
  %1238 = getelementptr inbounds double, ptr %1235, i64 %1237
  %1239 = load double, ptr %1238, align 8, !tbaa !11
  %1240 = fsub double %1234, %1239
  %1241 = load double, ptr %45, align 8, !tbaa !11
  %1242 = fsub double %1240, %1241
  %1243 = load ptr, ptr %14, align 8, !tbaa !5
  %1244 = load i64, ptr %23, align 8, !tbaa !9
  %1245 = getelementptr inbounds double, ptr %1243, i64 %1244
  store double %1242, ptr %1245, align 8, !tbaa !11
  br label %1246

1246:                                             ; preds = %1230
  %1247 = load i64, ptr %23, align 8, !tbaa !9
  %1248 = add nsw i64 %1247, 1
  store i64 %1248, ptr %23, align 8, !tbaa !9
  br label %1226, !llvm.loop !23

1249:                                             ; preds = %1226
  store double 0.000000e+00, ptr %34, align 8, !tbaa !11
  %1250 = load ptr, ptr %11, align 8, !tbaa !5
  %1251 = load i64, ptr %1250, align 8, !tbaa !9
  %1252 = sub nsw i64 %1251, 1
  store i64 %1252, ptr %18, align 8, !tbaa !9
  store i64 1, ptr %23, align 8, !tbaa !9
  br label %1253

1253:                                             ; preds = %1274, %1249
  %1254 = load i64, ptr %23, align 8, !tbaa !9
  %1255 = load i64, ptr %18, align 8, !tbaa !9
  %1256 = icmp sle i64 %1254, %1255
  br i1 %1256, label %1257, label %1277

1257:                                             ; preds = %1253
  %1258 = load ptr, ptr %13, align 8, !tbaa !5
  %1259 = load i64, ptr %23, align 8, !tbaa !9
  %1260 = getelementptr inbounds double, ptr %1258, i64 %1259
  %1261 = load double, ptr %1260, align 8, !tbaa !11
  %1262 = load ptr, ptr %13, align 8, !tbaa !5
  %1263 = load i64, ptr %23, align 8, !tbaa !9
  %1264 = getelementptr inbounds double, ptr %1262, i64 %1263
  %1265 = load double, ptr %1264, align 8, !tbaa !11
  %1266 = fmul double %1261, %1265
  %1267 = load ptr, ptr %14, align 8, !tbaa !5
  %1268 = load i64, ptr %23, align 8, !tbaa !9
  %1269 = getelementptr inbounds double, ptr %1267, i64 %1268
  %1270 = load double, ptr %1269, align 8, !tbaa !11
  %1271 = fdiv double %1266, %1270
  %1272 = load double, ptr %34, align 8, !tbaa !11
  %1273 = fadd double %1272, %1271
  store double %1273, ptr %34, align 8, !tbaa !11
  br label %1274

1274:                                             ; preds = %1257
  %1275 = load i64, ptr %23, align 8, !tbaa !9
  %1276 = add nsw i64 %1275, 1
  store i64 %1276, ptr %23, align 8, !tbaa !9
  br label %1253, !llvm.loop !24

1277:                                             ; preds = %1253
  store double 0.000000e+00, ptr %31, align 8, !tbaa !11
  %1278 = load ptr, ptr %11, align 8, !tbaa !5
  %1279 = load i64, ptr %1278, align 8, !tbaa !9
  %1280 = add nsw i64 %1279, 2
  store i64 %1280, ptr %18, align 8, !tbaa !9
  %1281 = load ptr, ptr %10, align 8, !tbaa !5
  %1282 = load i64, ptr %1281, align 8, !tbaa !9
  store i64 %1282, ptr %23, align 8, !tbaa !9
  br label %1283

1283:                                             ; preds = %1304, %1277
  %1284 = load i64, ptr %23, align 8, !tbaa !9
  %1285 = load i64, ptr %18, align 8, !tbaa !9
  %1286 = icmp sge i64 %1284, %1285
  br i1 %1286, label %1287, label %1307

1287:                                             ; preds = %1283
  %1288 = load ptr, ptr %13, align 8, !tbaa !5
  %1289 = load i64, ptr %23, align 8, !tbaa !9
  %1290 = getelementptr inbounds double, ptr %1288, i64 %1289
  %1291 = load double, ptr %1290, align 8, !tbaa !11
  %1292 = load ptr, ptr %13, align 8, !tbaa !5
  %1293 = load i64, ptr %23, align 8, !tbaa !9
  %1294 = getelementptr inbounds double, ptr %1292, i64 %1293
  %1295 = load double, ptr %1294, align 8, !tbaa !11
  %1296 = fmul double %1291, %1295
  %1297 = load ptr, ptr %14, align 8, !tbaa !5
  %1298 = load i64, ptr %23, align 8, !tbaa !9
  %1299 = getelementptr inbounds double, ptr %1297, i64 %1298
  %1300 = load double, ptr %1299, align 8, !tbaa !11
  %1301 = fdiv double %1296, %1300
  %1302 = load double, ptr %31, align 8, !tbaa !11
  %1303 = fadd double %1302, %1301
  store double %1303, ptr %31, align 8, !tbaa !11
  br label %1304

1304:                                             ; preds = %1287
  %1305 = load i64, ptr %23, align 8, !tbaa !9
  %1306 = add nsw i64 %1305, -1
  store i64 %1306, ptr %23, align 8, !tbaa !9
  br label %1283, !llvm.loop !25

1307:                                             ; preds = %1283
  %1308 = load double, ptr %51, align 8, !tbaa !11
  %1309 = load double, ptr %34, align 8, !tbaa !11
  %1310 = fadd double %1308, %1309
  %1311 = load double, ptr %31, align 8, !tbaa !11
  %1312 = fadd double %1310, %1311
  store double %1312, ptr %22, align 8, !tbaa !11
  %1313 = load double, ptr %22, align 8, !tbaa !11
  %1314 = load ptr, ptr %13, align 8, !tbaa !5
  %1315 = load ptr, ptr %11, align 8, !tbaa !5
  %1316 = load i64, ptr %1315, align 8, !tbaa !9
  %1317 = getelementptr inbounds double, ptr %1314, i64 %1316
  %1318 = load double, ptr %1317, align 8, !tbaa !11
  %1319 = load ptr, ptr %13, align 8, !tbaa !5
  %1320 = load ptr, ptr %11, align 8, !tbaa !5
  %1321 = load i64, ptr %1320, align 8, !tbaa !9
  %1322 = getelementptr inbounds double, ptr %1319, i64 %1321
  %1323 = load double, ptr %1322, align 8, !tbaa !11
  %1324 = fmul double %1318, %1323
  %1325 = load ptr, ptr %14, align 8, !tbaa !5
  %1326 = load ptr, ptr %11, align 8, !tbaa !5
  %1327 = load i64, ptr %1326, align 8, !tbaa !9
  %1328 = getelementptr inbounds double, ptr %1325, i64 %1327
  %1329 = load double, ptr %1328, align 8, !tbaa !11
  %1330 = fdiv double %1324, %1329
  %1331 = fadd double %1313, %1330
  %1332 = load ptr, ptr %13, align 8, !tbaa !5
  %1333 = load i64, ptr %28, align 8, !tbaa !9
  %1334 = getelementptr inbounds double, ptr %1332, i64 %1333
  %1335 = load double, ptr %1334, align 8, !tbaa !11
  %1336 = load ptr, ptr %13, align 8, !tbaa !5
  %1337 = load i64, ptr %28, align 8, !tbaa !9
  %1338 = getelementptr inbounds double, ptr %1336, i64 %1337
  %1339 = load double, ptr %1338, align 8, !tbaa !11
  %1340 = fmul double %1335, %1339
  %1341 = load ptr, ptr %14, align 8, !tbaa !5
  %1342 = load i64, ptr %28, align 8, !tbaa !9
  %1343 = getelementptr inbounds double, ptr %1341, i64 %1342
  %1344 = load double, ptr %1343, align 8, !tbaa !11
  %1345 = fdiv double %1340, %1344
  %1346 = fadd double %1331, %1345
  store double %1346, ptr %24, align 8, !tbaa !11
  %1347 = load double, ptr %24, align 8, !tbaa !11
  %1348 = fcmp ogt double %1347, 0.000000e+00
  br i1 %1348, label %1349, label %1438

1349:                                             ; preds = %1307
  store i64 1, ptr %49, align 8, !tbaa !9
  %1350 = load double, ptr %22, align 8, !tbaa !11
  %1351 = load double, ptr %29, align 8, !tbaa !11
  %1352 = load ptr, ptr %13, align 8, !tbaa !5
  %1353 = load ptr, ptr %11, align 8, !tbaa !5
  %1354 = load i64, ptr %1353, align 8, !tbaa !9
  %1355 = getelementptr inbounds double, ptr %1352, i64 %1354
  %1356 = load double, ptr %1355, align 8, !tbaa !11
  %1357 = load ptr, ptr %13, align 8, !tbaa !5
  %1358 = load ptr, ptr %11, align 8, !tbaa !5
  %1359 = load i64, ptr %1358, align 8, !tbaa !9
  %1360 = getelementptr inbounds double, ptr %1357, i64 %1359
  %1361 = load double, ptr %1360, align 8, !tbaa !11
  %1362 = fmul double %1356, %1361
  %1363 = call double @llvm.fmuladd.f64(double %1350, double %1351, double %1362)
  %1364 = load ptr, ptr %13, align 8, !tbaa !5
  %1365 = load i64, ptr %28, align 8, !tbaa !9
  %1366 = getelementptr inbounds double, ptr %1364, i64 %1365
  %1367 = load double, ptr %1366, align 8, !tbaa !11
  %1368 = load ptr, ptr %13, align 8, !tbaa !5
  %1369 = load i64, ptr %28, align 8, !tbaa !9
  %1370 = getelementptr inbounds double, ptr %1368, i64 %1369
  %1371 = load double, ptr %1370, align 8, !tbaa !11
  %1372 = call double @llvm.fmuladd.f64(double %1367, double %1371, double %1363)
  store double %1372, ptr %20, align 8, !tbaa !11
  %1373 = load ptr, ptr %13, align 8, !tbaa !5
  %1374 = load ptr, ptr %11, align 8, !tbaa !5
  %1375 = load i64, ptr %1374, align 8, !tbaa !9
  %1376 = getelementptr inbounds double, ptr %1373, i64 %1375
  %1377 = load double, ptr %1376, align 8, !tbaa !11
  %1378 = load ptr, ptr %13, align 8, !tbaa !5
  %1379 = load ptr, ptr %11, align 8, !tbaa !5
  %1380 = load i64, ptr %1379, align 8, !tbaa !9
  %1381 = getelementptr inbounds double, ptr %1378, i64 %1380
  %1382 = load double, ptr %1381, align 8, !tbaa !11
  %1383 = fmul double %1377, %1382
  %1384 = load double, ptr %29, align 8, !tbaa !11
  %1385 = fmul double %1383, %1384
  store double %1385, ptr %21, align 8, !tbaa !11
  %1386 = load double, ptr %20, align 8, !tbaa !11
  %1387 = fcmp ogt double %1386, 0.000000e+00
  br i1 %1387, label %1388, label %1412

1388:                                             ; preds = %1349
  %1389 = load double, ptr %21, align 8, !tbaa !11
  %1390 = fmul double %1389, 2.000000e+00
  %1391 = load double, ptr %20, align 8, !tbaa !11
  %1392 = load double, ptr %20, align 8, !tbaa !11
  %1393 = load double, ptr %20, align 8, !tbaa !11
  %1394 = load double, ptr %21, align 8, !tbaa !11
  %1395 = fmul double %1394, 4.000000e+00
  %1396 = load double, ptr %22, align 8, !tbaa !11
  %1397 = fmul double %1395, %1396
  %1398 = fneg double %1397
  %1399 = call double @llvm.fmuladd.f64(double %1392, double %1393, double %1398)
  store double %1399, ptr %19, align 8, !tbaa !11
  %1400 = load double, ptr %19, align 8, !tbaa !11
  %1401 = fcmp oge double %1400, 0.000000e+00
  br i1 %1401, label %1402, label %1404

1402:                                             ; preds = %1388
  %1403 = load double, ptr %19, align 8, !tbaa !11
  br label %1407

1404:                                             ; preds = %1388
  %1405 = load double, ptr %19, align 8, !tbaa !11
  %1406 = fneg double %1405
  br label %1407

1407:                                             ; preds = %1404, %1402
  %1408 = phi double [ %1403, %1402 ], [ %1406, %1404 ]
  %1409 = call double @sqrt(double noundef %1408) #5
  %1410 = fadd double %1391, %1409
  %1411 = fdiv double %1390, %1410
  store double %1411, ptr %33, align 8, !tbaa !11
  br label %1436

1412:                                             ; preds = %1349
  %1413 = load double, ptr %20, align 8, !tbaa !11
  %1414 = load double, ptr %20, align 8, !tbaa !11
  %1415 = load double, ptr %20, align 8, !tbaa !11
  %1416 = load double, ptr %21, align 8, !tbaa !11
  %1417 = fmul double %1416, 4.000000e+00
  %1418 = load double, ptr %22, align 8, !tbaa !11
  %1419 = fmul double %1417, %1418
  %1420 = fneg double %1419
  %1421 = call double @llvm.fmuladd.f64(double %1414, double %1415, double %1420)
  store double %1421, ptr %19, align 8, !tbaa !11
  %1422 = load double, ptr %19, align 8, !tbaa !11
  %1423 = fcmp oge double %1422, 0.000000e+00
  br i1 %1423, label %1424, label %1426

1424:                                             ; preds = %1412
  %1425 = load double, ptr %19, align 8, !tbaa !11
  br label %1429

1426:                                             ; preds = %1412
  %1427 = load double, ptr %19, align 8, !tbaa !11
  %1428 = fneg double %1427
  br label %1429

1429:                                             ; preds = %1426, %1424
  %1430 = phi double [ %1425, %1424 ], [ %1428, %1426 ]
  %1431 = call double @sqrt(double noundef %1430) #5
  %1432 = fsub double %1413, %1431
  %1433 = load double, ptr %22, align 8, !tbaa !11
  %1434 = fmul double %1433, 2.000000e+00
  %1435 = fdiv double %1432, %1434
  store double %1435, ptr %33, align 8, !tbaa !11
  br label %1436

1436:                                             ; preds = %1429, %1407
  store double 0.000000e+00, ptr %43, align 8, !tbaa !11
  %1437 = load double, ptr %45, align 8, !tbaa !11
  store double %1437, ptr %44, align 8, !tbaa !11
  br label %1527

1438:                                             ; preds = %1307
  store i64 0, ptr %49, align 8, !tbaa !9
  %1439 = load double, ptr %22, align 8, !tbaa !11
  %1440 = load double, ptr %29, align 8, !tbaa !11
  %1441 = load ptr, ptr %13, align 8, !tbaa !5
  %1442 = load ptr, ptr %11, align 8, !tbaa !5
  %1443 = load i64, ptr %1442, align 8, !tbaa !9
  %1444 = getelementptr inbounds double, ptr %1441, i64 %1443
  %1445 = load double, ptr %1444, align 8, !tbaa !11
  %1446 = load ptr, ptr %13, align 8, !tbaa !5
  %1447 = load ptr, ptr %11, align 8, !tbaa !5
  %1448 = load i64, ptr %1447, align 8, !tbaa !9
  %1449 = getelementptr inbounds double, ptr %1446, i64 %1448
  %1450 = load double, ptr %1449, align 8, !tbaa !11
  %1451 = fmul double %1445, %1450
  %1452 = fneg double %1451
  %1453 = call double @llvm.fmuladd.f64(double %1439, double %1440, double %1452)
  %1454 = load ptr, ptr %13, align 8, !tbaa !5
  %1455 = load i64, ptr %28, align 8, !tbaa !9
  %1456 = getelementptr inbounds double, ptr %1454, i64 %1455
  %1457 = load double, ptr %1456, align 8, !tbaa !11
  %1458 = load ptr, ptr %13, align 8, !tbaa !5
  %1459 = load i64, ptr %28, align 8, !tbaa !9
  %1460 = getelementptr inbounds double, ptr %1458, i64 %1459
  %1461 = load double, ptr %1460, align 8, !tbaa !11
  %1462 = fneg double %1457
  %1463 = call double @llvm.fmuladd.f64(double %1462, double %1461, double %1453)
  store double %1463, ptr %20, align 8, !tbaa !11
  %1464 = load ptr, ptr %13, align 8, !tbaa !5
  %1465 = load i64, ptr %28, align 8, !tbaa !9
  %1466 = getelementptr inbounds double, ptr %1464, i64 %1465
  %1467 = load double, ptr %1466, align 8, !tbaa !11
  %1468 = load ptr, ptr %13, align 8, !tbaa !5
  %1469 = load i64, ptr %28, align 8, !tbaa !9
  %1470 = getelementptr inbounds double, ptr %1468, i64 %1469
  %1471 = load double, ptr %1470, align 8, !tbaa !11
  %1472 = fmul double %1467, %1471
  %1473 = load double, ptr %29, align 8, !tbaa !11
  %1474 = fmul double %1472, %1473
  store double %1474, ptr %21, align 8, !tbaa !11
  %1475 = load double, ptr %20, align 8, !tbaa !11
  %1476 = fcmp olt double %1475, 0.000000e+00
  br i1 %1476, label %1477, label %1500

1477:                                             ; preds = %1438
  %1478 = load double, ptr %21, align 8, !tbaa !11
  %1479 = fmul double %1478, 2.000000e+00
  %1480 = load double, ptr %20, align 8, !tbaa !11
  %1481 = load double, ptr %20, align 8, !tbaa !11
  %1482 = load double, ptr %20, align 8, !tbaa !11
  %1483 = load double, ptr %21, align 8, !tbaa !11
  %1484 = fmul double %1483, 4.000000e+00
  %1485 = load double, ptr %22, align 8, !tbaa !11
  %1486 = fmul double %1484, %1485
  %1487 = call double @llvm.fmuladd.f64(double %1481, double %1482, double %1486)
  store double %1487, ptr %19, align 8, !tbaa !11
  %1488 = load double, ptr %19, align 8, !tbaa !11
  %1489 = fcmp oge double %1488, 0.000000e+00
  br i1 %1489, label %1490, label %1492

1490:                                             ; preds = %1477
  %1491 = load double, ptr %19, align 8, !tbaa !11
  br label %1495

1492:                                             ; preds = %1477
  %1493 = load double, ptr %19, align 8, !tbaa !11
  %1494 = fneg double %1493
  br label %1495

1495:                                             ; preds = %1492, %1490
  %1496 = phi double [ %1491, %1490 ], [ %1494, %1492 ]
  %1497 = call double @sqrt(double noundef %1496) #5
  %1498 = fsub double %1480, %1497
  %1499 = fdiv double %1479, %1498
  store double %1499, ptr %33, align 8, !tbaa !11
  br label %1524

1500:                                             ; preds = %1438
  %1501 = load double, ptr %20, align 8, !tbaa !11
  %1502 = load double, ptr %20, align 8, !tbaa !11
  %1503 = load double, ptr %20, align 8, !tbaa !11
  %1504 = load double, ptr %21, align 8, !tbaa !11
  %1505 = fmul double %1504, 4.000000e+00
  %1506 = load double, ptr %22, align 8, !tbaa !11
  %1507 = fmul double %1505, %1506
  %1508 = call double @llvm.fmuladd.f64(double %1502, double %1503, double %1507)
  store double %1508, ptr %19, align 8, !tbaa !11
  %1509 = load double, ptr %19, align 8, !tbaa !11
  %1510 = fcmp oge double %1509, 0.000000e+00
  br i1 %1510, label %1511, label %1513

1511:                                             ; preds = %1500
  %1512 = load double, ptr %19, align 8, !tbaa !11
  br label %1516

1513:                                             ; preds = %1500
  %1514 = load double, ptr %19, align 8, !tbaa !11
  %1515 = fneg double %1514
  br label %1516

1516:                                             ; preds = %1513, %1511
  %1517 = phi double [ %1512, %1511 ], [ %1515, %1513 ]
  %1518 = call double @sqrt(double noundef %1517) #5
  %1519 = fadd double %1501, %1518
  %1520 = fneg double %1519
  %1521 = load double, ptr %22, align 8, !tbaa !11
  %1522 = fmul double %1521, 2.000000e+00
  %1523 = fdiv double %1520, %1522
  store double %1523, ptr %33, align 8, !tbaa !11
  br label %1524

1524:                                             ; preds = %1516, %1495
  %1525 = load double, ptr %45, align 8, !tbaa !11
  %1526 = fneg double %1525
  store double %1526, ptr %43, align 8, !tbaa !11
  store double 0.000000e+00, ptr %44, align 8, !tbaa !11
  br label %1527

1527:                                             ; preds = %1524, %1436
  %1528 = load i64, ptr %49, align 8, !tbaa !9
  %1529 = icmp ne i64 %1528, 0
  br i1 %1529, label %1530, label %1557

1530:                                             ; preds = %1527
  %1531 = load ptr, ptr %10, align 8, !tbaa !5
  %1532 = load i64, ptr %1531, align 8, !tbaa !9
  store i64 %1532, ptr %18, align 8, !tbaa !9
  store i64 1, ptr %23, align 8, !tbaa !9
  br label %1533

1533:                                             ; preds = %1553, %1530
  %1534 = load i64, ptr %23, align 8, !tbaa !9
  %1535 = load i64, ptr %18, align 8, !tbaa !9
  %1536 = icmp sle i64 %1534, %1535
  br i1 %1536, label %1537, label %1556

1537:                                             ; preds = %1533
  %1538 = load ptr, ptr %12, align 8, !tbaa !5
  %1539 = load i64, ptr %23, align 8, !tbaa !9
  %1540 = getelementptr inbounds double, ptr %1538, i64 %1539
  %1541 = load double, ptr %1540, align 8, !tbaa !11
  %1542 = load ptr, ptr %12, align 8, !tbaa !5
  %1543 = load ptr, ptr %11, align 8, !tbaa !5
  %1544 = load i64, ptr %1543, align 8, !tbaa !9
  %1545 = getelementptr inbounds double, ptr %1542, i64 %1544
  %1546 = load double, ptr %1545, align 8, !tbaa !11
  %1547 = fsub double %1541, %1546
  %1548 = load double, ptr %33, align 8, !tbaa !11
  %1549 = fsub double %1547, %1548
  %1550 = load ptr, ptr %14, align 8, !tbaa !5
  %1551 = load i64, ptr %23, align 8, !tbaa !9
  %1552 = getelementptr inbounds double, ptr %1550, i64 %1551
  store double %1549, ptr %1552, align 8, !tbaa !11
  br label %1553

1553:                                             ; preds = %1537
  %1554 = load i64, ptr %23, align 8, !tbaa !9
  %1555 = add nsw i64 %1554, 1
  store i64 %1555, ptr %23, align 8, !tbaa !9
  br label %1533, !llvm.loop !26

1556:                                             ; preds = %1533
  br label %1583

1557:                                             ; preds = %1527
  %1558 = load ptr, ptr %10, align 8, !tbaa !5
  %1559 = load i64, ptr %1558, align 8, !tbaa !9
  store i64 %1559, ptr %18, align 8, !tbaa !9
  store i64 1, ptr %23, align 8, !tbaa !9
  br label %1560

1560:                                             ; preds = %1579, %1557
  %1561 = load i64, ptr %23, align 8, !tbaa !9
  %1562 = load i64, ptr %18, align 8, !tbaa !9
  %1563 = icmp sle i64 %1561, %1562
  br i1 %1563, label %1564, label %1582

1564:                                             ; preds = %1560
  %1565 = load ptr, ptr %12, align 8, !tbaa !5
  %1566 = load i64, ptr %23, align 8, !tbaa !9
  %1567 = getelementptr inbounds double, ptr %1565, i64 %1566
  %1568 = load double, ptr %1567, align 8, !tbaa !11
  %1569 = load ptr, ptr %12, align 8, !tbaa !5
  %1570 = load i64, ptr %28, align 8, !tbaa !9
  %1571 = getelementptr inbounds double, ptr %1569, i64 %1570
  %1572 = load double, ptr %1571, align 8, !tbaa !11
  %1573 = fsub double %1568, %1572
  %1574 = load double, ptr %33, align 8, !tbaa !11
  %1575 = fsub double %1573, %1574
  %1576 = load ptr, ptr %14, align 8, !tbaa !5
  %1577 = load i64, ptr %23, align 8, !tbaa !9
  %1578 = getelementptr inbounds double, ptr %1576, i64 %1577
  store double %1575, ptr %1578, align 8, !tbaa !11
  br label %1579

1579:                                             ; preds = %1564
  %1580 = load i64, ptr %23, align 8, !tbaa !9
  %1581 = add nsw i64 %1580, 1
  store i64 %1581, ptr %23, align 8, !tbaa !9
  br label %1560, !llvm.loop !27

1582:                                             ; preds = %1560
  br label %1583

1583:                                             ; preds = %1582, %1556
  %1584 = load i64, ptr %49, align 8, !tbaa !9
  %1585 = icmp ne i64 %1584, 0
  br i1 %1585, label %1586, label %1589

1586:                                             ; preds = %1583
  %1587 = load ptr, ptr %11, align 8, !tbaa !5
  %1588 = load i64, ptr %1587, align 8, !tbaa !9
  store i64 %1588, ptr %25, align 8, !tbaa !9
  br label %1593

1589:                                             ; preds = %1583
  %1590 = load ptr, ptr %11, align 8, !tbaa !5
  %1591 = load i64, ptr %1590, align 8, !tbaa !9
  %1592 = add nsw i64 %1591, 1
  store i64 %1592, ptr %25, align 8, !tbaa !9
  br label %1593

1593:                                             ; preds = %1589, %1586
  %1594 = load i64, ptr %25, align 8, !tbaa !9
  %1595 = sub nsw i64 %1594, 1
  store i64 %1595, ptr %35, align 8, !tbaa !9
  %1596 = load i64, ptr %25, align 8, !tbaa !9
  %1597 = add nsw i64 %1596, 1
  store i64 %1597, ptr %36, align 8, !tbaa !9
  store double 0.000000e+00, ptr %38, align 8, !tbaa !11
  store double 0.000000e+00, ptr %34, align 8, !tbaa !11
  store double 0.000000e+00, ptr %50, align 8, !tbaa !11
  %1598 = load i64, ptr %35, align 8, !tbaa !9
  store i64 %1598, ptr %18, align 8, !tbaa !9
  store i64 1, ptr %23, align 8, !tbaa !9
  br label %1599

1599:                                             ; preds = %1627, %1593
  %1600 = load i64, ptr %23, align 8, !tbaa !9
  %1601 = load i64, ptr %18, align 8, !tbaa !9
  %1602 = icmp sle i64 %1600, %1601
  br i1 %1602, label %1603, label %1630

1603:                                             ; preds = %1599
  %1604 = load ptr, ptr %13, align 8, !tbaa !5
  %1605 = load i64, ptr %23, align 8, !tbaa !9
  %1606 = getelementptr inbounds double, ptr %1604, i64 %1605
  %1607 = load double, ptr %1606, align 8, !tbaa !11
  %1608 = load ptr, ptr %14, align 8, !tbaa !5
  %1609 = load i64, ptr %23, align 8, !tbaa !9
  %1610 = getelementptr inbounds double, ptr %1608, i64 %1609
  %1611 = load double, ptr %1610, align 8, !tbaa !11
  %1612 = fdiv double %1607, %1611
  store double %1612, ptr %40, align 8, !tbaa !11
  %1613 = load ptr, ptr %13, align 8, !tbaa !5
  %1614 = load i64, ptr %23, align 8, !tbaa !9
  %1615 = getelementptr inbounds double, ptr %1613, i64 %1614
  %1616 = load double, ptr %1615, align 8, !tbaa !11
  %1617 = load double, ptr %40, align 8, !tbaa !11
  %1618 = load double, ptr %34, align 8, !tbaa !11
  %1619 = call double @llvm.fmuladd.f64(double %1616, double %1617, double %1618)
  store double %1619, ptr %34, align 8, !tbaa !11
  %1620 = load double, ptr %40, align 8, !tbaa !11
  %1621 = load double, ptr %40, align 8, !tbaa !11
  %1622 = load double, ptr %38, align 8, !tbaa !11
  %1623 = call double @llvm.fmuladd.f64(double %1620, double %1621, double %1622)
  store double %1623, ptr %38, align 8, !tbaa !11
  %1624 = load double, ptr %34, align 8, !tbaa !11
  %1625 = load double, ptr %50, align 8, !tbaa !11
  %1626 = fadd double %1625, %1624
  store double %1626, ptr %50, align 8, !tbaa !11
  br label %1627

1627:                                             ; preds = %1603
  %1628 = load i64, ptr %23, align 8, !tbaa !9
  %1629 = add nsw i64 %1628, 1
  store i64 %1629, ptr %23, align 8, !tbaa !9
  br label %1599, !llvm.loop !28

1630:                                             ; preds = %1599
  %1631 = load double, ptr %50, align 8, !tbaa !11
  %1632 = fcmp oge double %1631, 0.000000e+00
  br i1 %1632, label %1633, label %1635

1633:                                             ; preds = %1630
  %1634 = load double, ptr %50, align 8, !tbaa !11
  br label %1638

1635:                                             ; preds = %1630
  %1636 = load double, ptr %50, align 8, !tbaa !11
  %1637 = fneg double %1636
  br label %1638

1638:                                             ; preds = %1635, %1633
  %1639 = phi double [ %1634, %1633 ], [ %1637, %1635 ]
  store double %1639, ptr %50, align 8, !tbaa !11
  store double 0.000000e+00, ptr %37, align 8, !tbaa !11
  store double 0.000000e+00, ptr %31, align 8, !tbaa !11
  %1640 = load i64, ptr %36, align 8, !tbaa !9
  store i64 %1640, ptr %18, align 8, !tbaa !9
  %1641 = load ptr, ptr %10, align 8, !tbaa !5
  %1642 = load i64, ptr %1641, align 8, !tbaa !9
  store i64 %1642, ptr %23, align 8, !tbaa !9
  br label %1643

1643:                                             ; preds = %1671, %1638
  %1644 = load i64, ptr %23, align 8, !tbaa !9
  %1645 = load i64, ptr %18, align 8, !tbaa !9
  %1646 = icmp sge i64 %1644, %1645
  br i1 %1646, label %1647, label %1674

1647:                                             ; preds = %1643
  %1648 = load ptr, ptr %13, align 8, !tbaa !5
  %1649 = load i64, ptr %23, align 8, !tbaa !9
  %1650 = getelementptr inbounds double, ptr %1648, i64 %1649
  %1651 = load double, ptr %1650, align 8, !tbaa !11
  %1652 = load ptr, ptr %14, align 8, !tbaa !5
  %1653 = load i64, ptr %23, align 8, !tbaa !9
  %1654 = getelementptr inbounds double, ptr %1652, i64 %1653
  %1655 = load double, ptr %1654, align 8, !tbaa !11
  %1656 = fdiv double %1651, %1655
  store double %1656, ptr %40, align 8, !tbaa !11
  %1657 = load ptr, ptr %13, align 8, !tbaa !5
  %1658 = load i64, ptr %23, align 8, !tbaa !9
  %1659 = getelementptr inbounds double, ptr %1657, i64 %1658
  %1660 = load double, ptr %1659, align 8, !tbaa !11
  %1661 = load double, ptr %40, align 8, !tbaa !11
  %1662 = load double, ptr %31, align 8, !tbaa !11
  %1663 = call double @llvm.fmuladd.f64(double %1660, double %1661, double %1662)
  store double %1663, ptr %31, align 8, !tbaa !11
  %1664 = load double, ptr %40, align 8, !tbaa !11
  %1665 = load double, ptr %40, align 8, !tbaa !11
  %1666 = load double, ptr %37, align 8, !tbaa !11
  %1667 = call double @llvm.fmuladd.f64(double %1664, double %1665, double %1666)
  store double %1667, ptr %37, align 8, !tbaa !11
  %1668 = load double, ptr %31, align 8, !tbaa !11
  %1669 = load double, ptr %50, align 8, !tbaa !11
  %1670 = fadd double %1669, %1668
  store double %1670, ptr %50, align 8, !tbaa !11
  br label %1671

1671:                                             ; preds = %1647
  %1672 = load i64, ptr %23, align 8, !tbaa !9
  %1673 = add nsw i64 %1672, -1
  store i64 %1673, ptr %23, align 8, !tbaa !9
  br label %1643, !llvm.loop !29

1674:                                             ; preds = %1643
  %1675 = load double, ptr %51, align 8, !tbaa !11
  %1676 = load double, ptr %31, align 8, !tbaa !11
  %1677 = fadd double %1675, %1676
  %1678 = load double, ptr %34, align 8, !tbaa !11
  %1679 = fadd double %1677, %1678
  store double %1679, ptr %24, align 8, !tbaa !11
  store i64 0, ptr %48, align 8, !tbaa !9
  %1680 = load i64, ptr %49, align 8, !tbaa !9
  %1681 = icmp ne i64 %1680, 0
  br i1 %1681, label %1682, label %1687

1682:                                             ; preds = %1674
  %1683 = load double, ptr %24, align 8, !tbaa !11
  %1684 = fcmp olt double %1683, 0.000000e+00
  br i1 %1684, label %1685, label %1686

1685:                                             ; preds = %1682
  store i64 1, ptr %48, align 8, !tbaa !9
  br label %1686

1686:                                             ; preds = %1685, %1682
  br label %1692

1687:                                             ; preds = %1674
  %1688 = load double, ptr %24, align 8, !tbaa !11
  %1689 = fcmp ogt double %1688, 0.000000e+00
  br i1 %1689, label %1690, label %1691

1690:                                             ; preds = %1687
  store i64 1, ptr %48, align 8, !tbaa !9
  br label %1691

1691:                                             ; preds = %1690, %1687
  br label %1692

1692:                                             ; preds = %1691, %1686
  %1693 = load i64, ptr %25, align 8, !tbaa !9
  %1694 = icmp eq i64 %1693, 1
  br i1 %1694, label %1700, label %1695

1695:                                             ; preds = %1692
  %1696 = load i64, ptr %25, align 8, !tbaa !9
  %1697 = load ptr, ptr %10, align 8, !tbaa !5
  %1698 = load i64, ptr %1697, align 8, !tbaa !9
  %1699 = icmp eq i64 %1696, %1698
  br i1 %1699, label %1700, label %1701

1700:                                             ; preds = %1695, %1692
  store i64 0, ptr %48, align 8, !tbaa !9
  br label %1701

1701:                                             ; preds = %1700, %1695
  %1702 = load ptr, ptr %13, align 8, !tbaa !5
  %1703 = load i64, ptr %25, align 8, !tbaa !9
  %1704 = getelementptr inbounds double, ptr %1702, i64 %1703
  %1705 = load double, ptr %1704, align 8, !tbaa !11
  %1706 = load ptr, ptr %14, align 8, !tbaa !5
  %1707 = load i64, ptr %25, align 8, !tbaa !9
  %1708 = getelementptr inbounds double, ptr %1706, i64 %1707
  %1709 = load double, ptr %1708, align 8, !tbaa !11
  %1710 = fdiv double %1705, %1709
  store double %1710, ptr %40, align 8, !tbaa !11
  %1711 = load double, ptr %38, align 8, !tbaa !11
  %1712 = load double, ptr %37, align 8, !tbaa !11
  %1713 = fadd double %1711, %1712
  %1714 = load double, ptr %40, align 8, !tbaa !11
  %1715 = load double, ptr %40, align 8, !tbaa !11
  %1716 = call double @llvm.fmuladd.f64(double %1714, double %1715, double %1713)
  store double %1716, ptr %26, align 8, !tbaa !11
  %1717 = load ptr, ptr %13, align 8, !tbaa !5
  %1718 = load i64, ptr %25, align 8, !tbaa !9
  %1719 = getelementptr inbounds double, ptr %1717, i64 %1718
  %1720 = load double, ptr %1719, align 8, !tbaa !11
  %1721 = load double, ptr %40, align 8, !tbaa !11
  %1722 = fmul double %1720, %1721
  store double %1722, ptr %40, align 8, !tbaa !11
  %1723 = load double, ptr %40, align 8, !tbaa !11
  %1724 = load double, ptr %24, align 8, !tbaa !11
  %1725 = fadd double %1724, %1723
  store double %1725, ptr %24, align 8, !tbaa !11
  %1726 = load double, ptr %31, align 8, !tbaa !11
  %1727 = load double, ptr %34, align 8, !tbaa !11
  %1728 = fsub double %1726, %1727
  %1729 = load double, ptr %50, align 8, !tbaa !11
  %1730 = call double @llvm.fmuladd.f64(double %1728, double 8.000000e+00, double %1729)
  %1731 = load double, ptr %51, align 8, !tbaa !11
  %1732 = call double @llvm.fmuladd.f64(double %1731, double 2.000000e+00, double %1730)
  %1733 = load double, ptr %40, align 8, !tbaa !11
  %1734 = fcmp oge double %1733, 0.000000e+00
  br i1 %1734, label %1735, label %1737

1735:                                             ; preds = %1701
  %1736 = load double, ptr %40, align 8, !tbaa !11
  br label %1740

1737:                                             ; preds = %1701
  %1738 = load double, ptr %40, align 8, !tbaa !11
  %1739 = fneg double %1738
  br label %1740

1740:                                             ; preds = %1737, %1735
  %1741 = phi double [ %1736, %1735 ], [ %1739, %1737 ]
  %1742 = call double @llvm.fmuladd.f64(double %1741, double 3.000000e+00, double %1732)
  %1743 = load double, ptr %33, align 8, !tbaa !11
  %1744 = fcmp oge double %1743, 0.000000e+00
  br i1 %1744, label %1745, label %1747

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

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

1750:                                             ; preds = %1747, %1745
  %1751 = phi double [ %1746, %1745 ], [ %1749, %1747 ]
  %1752 = load double, ptr %26, align 8, !tbaa !11
  %1753 = call double @llvm.fmuladd.f64(double %1751, double %1752, double %1742)
  store double %1753, ptr %50, align 8, !tbaa !11
  %1754 = load double, ptr %24, align 8, !tbaa !11
  %1755 = fcmp oge double %1754, 0.000000e+00
  br i1 %1755, label %1756, label %1758

1756:                                             ; preds = %1750
  %1757 = load double, ptr %24, align 8, !tbaa !11
  br label %1761

1758:                                             ; preds = %1750
  %1759 = load double, ptr %24, align 8, !tbaa !11
  %1760 = fneg double %1759
  br label %1761

1761:                                             ; preds = %1758, %1756
  %1762 = phi double [ %1757, %1756 ], [ %1760, %1758 ]
  %1763 = load double, ptr %32, align 8, !tbaa !11
  %1764 = load double, ptr %50, align 8, !tbaa !11
  %1765 = fmul double %1763, %1764
  %1766 = fcmp ole double %1762, %1765
  br i1 %1766, label %1767, label %1788

1767:                                             ; preds = %1761
  %1768 = load i64, ptr %49, align 8, !tbaa !9
  %1769 = icmp ne i64 %1768, 0
  br i1 %1769, label %1770, label %1779

1770:                                             ; preds = %1767
  %1771 = load ptr, ptr %12, align 8, !tbaa !5
  %1772 = load ptr, ptr %11, align 8, !tbaa !5
  %1773 = load i64, ptr %1772, align 8, !tbaa !9
  %1774 = getelementptr inbounds double, ptr %1771, i64 %1773
  %1775 = load double, ptr %1774, align 8, !tbaa !11
  %1776 = load double, ptr %33, align 8, !tbaa !11
  %1777 = fadd double %1775, %1776
  %1778 = load ptr, ptr %16, align 8, !tbaa !5
  store double %1777, ptr %1778, align 8, !tbaa !11
  br label %1787

1779:                                             ; preds = %1767
  %1780 = load ptr, ptr %12, align 8, !tbaa !5
  %1781 = load i64, ptr %28, align 8, !tbaa !9
  %1782 = getelementptr inbounds double, ptr %1780, i64 %1781
  %1783 = load double, ptr %1782, align 8, !tbaa !11
  %1784 = load double, ptr %33, align 8, !tbaa !11
  %1785 = fadd double %1783, %1784
  %1786 = load ptr, ptr %16, align 8, !tbaa !5
  store double %1785, ptr %1786, align 8, !tbaa !11
  br label %1787

1787:                                             ; preds = %1779, %1770
  br label %3220

1788:                                             ; preds = %1761
  %1789 = load double, ptr %24, align 8, !tbaa !11
  %1790 = fcmp ole double %1789, 0.000000e+00
  br i1 %1790, label %1791, label %1801

1791:                                             ; preds = %1788
  %1792 = load double, ptr %43, align 8, !tbaa !11
  %1793 = load double, ptr %33, align 8, !tbaa !11
  %1794 = fcmp oge double %1792, %1793
  br i1 %1794, label %1795, label %1797

1795:                                             ; preds = %1791
  %1796 = load double, ptr %43, align 8, !tbaa !11
  br label %1799

1797:                                             ; preds = %1791
  %1798 = load double, ptr %33, align 8, !tbaa !11
  br label %1799

1799:                                             ; preds = %1797, %1795
  %1800 = phi double [ %1796, %1795 ], [ %1798, %1797 ]
  store double %1800, ptr %43, align 8, !tbaa !11
  br label %1811

1801:                                             ; preds = %1788
  %1802 = load double, ptr %44, align 8, !tbaa !11
  %1803 = load double, ptr %33, align 8, !tbaa !11
  %1804 = fcmp ole double %1802, %1803
  br i1 %1804, label %1805, label %1807

1805:                                             ; preds = %1801
  %1806 = load double, ptr %44, align 8, !tbaa !11
  br label %1809

1807:                                             ; preds = %1801
  %1808 = load double, ptr %33, align 8, !tbaa !11
  br label %1809

1809:                                             ; preds = %1807, %1805
  %1810 = phi double [ %1806, %1805 ], [ %1808, %1807 ]
  store double %1810, ptr %44, align 8, !tbaa !11
  br label %1811

1811:                                             ; preds = %1809, %1799
  %1812 = load i64, ptr %46, align 8, !tbaa !9
  %1813 = add nsw i64 %1812, 1
  store i64 %1813, ptr %46, align 8, !tbaa !9
  %1814 = load i64, ptr %48, align 8, !tbaa !9
  %1815 = icmp ne i64 %1814, 0
  br i1 %1815, label %2042, label %1816

1816:                                             ; preds = %1811
  %1817 = load i64, ptr %49, align 8, !tbaa !9
  %1818 = icmp ne i64 %1817, 0
  br i1 %1818, label %1819, label %1854

1819:                                             ; preds = %1816
  %1820 = load ptr, ptr %13, align 8, !tbaa !5
  %1821 = load ptr, ptr %11, align 8, !tbaa !5
  %1822 = load i64, ptr %1821, align 8, !tbaa !9
  %1823 = getelementptr inbounds double, ptr %1820, i64 %1822
  %1824 = load double, ptr %1823, align 8, !tbaa !11
  %1825 = load ptr, ptr %14, align 8, !tbaa !5
  %1826 = load ptr, ptr %11, align 8, !tbaa !5
  %1827 = load i64, ptr %1826, align 8, !tbaa !9
  %1828 = getelementptr inbounds double, ptr %1825, i64 %1827
  %1829 = load double, ptr %1828, align 8, !tbaa !11
  %1830 = fdiv double %1824, %1829
  store double %1830, ptr %19, align 8, !tbaa !11
  %1831 = load double, ptr %24, align 8, !tbaa !11
  %1832 = load ptr, ptr %14, align 8, !tbaa !5
  %1833 = load i64, ptr %28, align 8, !tbaa !9
  %1834 = getelementptr inbounds double, ptr %1832, i64 %1833
  %1835 = load double, ptr %1834, align 8, !tbaa !11
  %1836 = load double, ptr %26, align 8, !tbaa !11
  %1837 = fneg double %1835
  %1838 = call double @llvm.fmuladd.f64(double %1837, double %1836, double %1831)
  %1839 = load ptr, ptr %12, align 8, !tbaa !5
  %1840 = load ptr, ptr %11, align 8, !tbaa !5
  %1841 = load i64, ptr %1840, align 8, !tbaa !9
  %1842 = getelementptr inbounds double, ptr %1839, i64 %1841
  %1843 = load double, ptr %1842, align 8, !tbaa !11
  %1844 = load ptr, ptr %12, align 8, !tbaa !5
  %1845 = load i64, ptr %28, align 8, !tbaa !9
  %1846 = getelementptr inbounds double, ptr %1844, i64 %1845
  %1847 = load double, ptr %1846, align 8, !tbaa !11
  %1848 = fsub double %1843, %1847
  %1849 = load double, ptr %19, align 8, !tbaa !11
  %1850 = load double, ptr %19, align 8, !tbaa !11
  %1851 = fmul double %1849, %1850
  %1852 = fneg double %1848
  %1853 = call double @llvm.fmuladd.f64(double %1852, double %1851, double %1838)
  store double %1853, ptr %22, align 8, !tbaa !11
  br label %1888

1854:                                             ; preds = %1816
  %1855 = load ptr, ptr %13, align 8, !tbaa !5
  %1856 = load i64, ptr %28, align 8, !tbaa !9
  %1857 = getelementptr inbounds double, ptr %1855, i64 %1856
  %1858 = load double, ptr %1857, align 8, !tbaa !11
  %1859 = load ptr, ptr %14, align 8, !tbaa !5
  %1860 = load i64, ptr %28, align 8, !tbaa !9
  %1861 = getelementptr inbounds double, ptr %1859, i64 %1860
  %1862 = load double, ptr %1861, align 8, !tbaa !11
  %1863 = fdiv double %1858, %1862
  store double %1863, ptr %19, align 8, !tbaa !11
  %1864 = load double, ptr %24, align 8, !tbaa !11
  %1865 = load ptr, ptr %14, align 8, !tbaa !5
  %1866 = load ptr, ptr %11, align 8, !tbaa !5
  %1867 = load i64, ptr %1866, align 8, !tbaa !9
  %1868 = getelementptr inbounds double, ptr %1865, i64 %1867
  %1869 = load double, ptr %1868, align 8, !tbaa !11
  %1870 = load double, ptr %26, align 8, !tbaa !11
  %1871 = fneg double %1869
  %1872 = call double @llvm.fmuladd.f64(double %1871, double %1870, double %1864)
  %1873 = load ptr, ptr %12, align 8, !tbaa !5
  %1874 = load i64, ptr %28, align 8, !tbaa !9
  %1875 = getelementptr inbounds double, ptr %1873, i64 %1874
  %1876 = load double, ptr %1875, align 8, !tbaa !11
  %1877 = load ptr, ptr %12, align 8, !tbaa !5
  %1878 = load ptr, ptr %11, align 8, !tbaa !5
  %1879 = load i64, ptr %1878, align 8, !tbaa !9
  %1880 = getelementptr inbounds double, ptr %1877, i64 %1879
  %1881 = load double, ptr %1880, align 8, !tbaa !11
  %1882 = fsub double %1876, %1881
  %1883 = load double, ptr %19, align 8, !tbaa !11
  %1884 = load double, ptr %19, align 8, !tbaa !11
  %1885 = fmul double %1883, %1884
  %1886 = fneg double %1882
  %1887 = call double @llvm.fmuladd.f64(double %1886, double %1885, double %1872)
  store double %1887, ptr %22, align 8, !tbaa !11
  br label %1888

1888:                                             ; preds = %1854, %1819
  %1889 = load ptr, ptr %14, align 8, !tbaa !5
  %1890 = load ptr, ptr %11, align 8, !tbaa !5
  %1891 = load i64, ptr %1890, align 8, !tbaa !9
  %1892 = getelementptr inbounds double, ptr %1889, i64 %1891
  %1893 = load double, ptr %1892, align 8, !tbaa !11
  %1894 = load ptr, ptr %14, align 8, !tbaa !5
  %1895 = load i64, ptr %28, align 8, !tbaa !9
  %1896 = getelementptr inbounds double, ptr %1894, i64 %1895
  %1897 = load double, ptr %1896, align 8, !tbaa !11
  %1898 = fadd double %1893, %1897
  %1899 = load double, ptr %24, align 8, !tbaa !11
  %1900 = load ptr, ptr %14, align 8, !tbaa !5
  %1901 = load ptr, ptr %11, align 8, !tbaa !5
  %1902 = load i64, ptr %1901, align 8, !tbaa !9
  %1903 = getelementptr inbounds double, ptr %1900, i64 %1902
  %1904 = load double, ptr %1903, align 8, !tbaa !11
  %1905 = load ptr, ptr %14, align 8, !tbaa !5
  %1906 = load i64, ptr %28, align 8, !tbaa !9
  %1907 = getelementptr inbounds double, ptr %1905, i64 %1906
  %1908 = load double, ptr %1907, align 8, !tbaa !11
  %1909 = fmul double %1904, %1908
  %1910 = load double, ptr %26, align 8, !tbaa !11
  %1911 = fmul double %1909, %1910
  %1912 = fneg double %1911
  %1913 = call double @llvm.fmuladd.f64(double %1898, double %1899, double %1912)
  store double %1913, ptr %20, align 8, !tbaa !11
  %1914 = load ptr, ptr %14, align 8, !tbaa !5
  %1915 = load ptr, ptr %11, align 8, !tbaa !5
  %1916 = load i64, ptr %1915, align 8, !tbaa !9
  %1917 = getelementptr inbounds double, ptr %1914, i64 %1916
  %1918 = load double, ptr %1917, align 8, !tbaa !11
  %1919 = load ptr, ptr %14, align 8, !tbaa !5
  %1920 = load i64, ptr %28, align 8, !tbaa !9
  %1921 = getelementptr inbounds double, ptr %1919, i64 %1920
  %1922 = load double, ptr %1921, align 8, !tbaa !11
  %1923 = fmul double %1918, %1922
  %1924 = load double, ptr %24, align 8, !tbaa !11
  %1925 = fmul double %1923, %1924
  store double %1925, ptr %21, align 8, !tbaa !11
  %1926 = load double, ptr %22, align 8, !tbaa !11
  %1927 = fcmp oeq double %1926, 0.000000e+00
  br i1 %1927, label %1928, label %1989

1928:                                             ; preds = %1888
  %1929 = load double, ptr %20, align 8, !tbaa !11
  %1930 = fcmp oeq double %1929, 0.000000e+00
  br i1 %1930, label %1931, label %1985

1931:                                             ; preds = %1928
  %1932 = load i64, ptr %49, align 8, !tbaa !9
  %1933 = icmp ne i64 %1932, 0
  br i1 %1933, label %1934, label %1959

1934:                                             ; preds = %1931
  %1935 = load ptr, ptr %13, align 8, !tbaa !5
  %1936 = load ptr, ptr %11, align 8, !tbaa !5
  %1937 = load i64, ptr %1936, align 8, !tbaa !9
  %1938 = getelementptr inbounds double, ptr %1935, i64 %1937
  %1939 = load double, ptr %1938, align 8, !tbaa !11
  %1940 = load ptr, ptr %13, align 8, !tbaa !5
  %1941 = load ptr, ptr %11, align 8, !tbaa !5
  %1942 = load i64, ptr %1941, align 8, !tbaa !9
  %1943 = getelementptr inbounds double, ptr %1940, i64 %1942
  %1944 = load double, ptr %1943, align 8, !tbaa !11
  %1945 = load ptr, ptr %14, align 8, !tbaa !5
  %1946 = load i64, ptr %28, align 8, !tbaa !9
  %1947 = getelementptr inbounds double, ptr %1945, i64 %1946
  %1948 = load double, ptr %1947, align 8, !tbaa !11
  %1949 = load ptr, ptr %14, align 8, !tbaa !5
  %1950 = load i64, ptr %28, align 8, !tbaa !9
  %1951 = getelementptr inbounds double, ptr %1949, i64 %1950
  %1952 = load double, ptr %1951, align 8, !tbaa !11
  %1953 = fmul double %1948, %1952
  %1954 = load double, ptr %38, align 8, !tbaa !11
  %1955 = load double, ptr %37, align 8, !tbaa !11
  %1956 = fadd double %1954, %1955
  %1957 = fmul double %1953, %1956
  %1958 = call double @llvm.fmuladd.f64(double %1939, double %1944, double %1957)
  store double %1958, ptr %20, align 8, !tbaa !11
  br label %1984

1959:                                             ; preds = %1931
  %1960 = load ptr, ptr %13, align 8, !tbaa !5
  %1961 = load i64, ptr %28, align 8, !tbaa !9
  %1962 = getelementptr inbounds double, ptr %1960, i64 %1961
  %1963 = load double, ptr %1962, align 8, !tbaa !11
  %1964 = load ptr, ptr %13, align 8, !tbaa !5
  %1965 = load i64, ptr %28, align 8, !tbaa !9
  %1966 = getelementptr inbounds double, ptr %1964, i64 %1965
  %1967 = load double, ptr %1966, align 8, !tbaa !11
  %1968 = load ptr, ptr %14, align 8, !tbaa !5
  %1969 = load ptr, ptr %11, align 8, !tbaa !5
  %1970 = load i64, ptr %1969, align 8, !tbaa !9
  %1971 = getelementptr inbounds double, ptr %1968, i64 %1970
  %1972 = load double, ptr %1971, align 8, !tbaa !11
  %1973 = load ptr, ptr %14, align 8, !tbaa !5
  %1974 = load ptr, ptr %11, align 8, !tbaa !5
  %1975 = load i64, ptr %1974, align 8, !tbaa !9
  %1976 = getelementptr inbounds double, ptr %1973, i64 %1975
  %1977 = load double, ptr %1976, align 8, !tbaa !11
  %1978 = fmul double %1972, %1977
  %1979 = load double, ptr %38, align 8, !tbaa !11
  %1980 = load double, ptr %37, align 8, !tbaa !11
  %1981 = fadd double %1979, %1980
  %1982 = fmul double %1978, %1981
  %1983 = call double @llvm.fmuladd.f64(double %1963, double %1967, double %1982)
  store double %1983, ptr %20, align 8, !tbaa !11
  br label %1984

1984:                                             ; preds = %1959, %1934
  br label %1985

1985:                                             ; preds = %1984, %1928
  %1986 = load double, ptr %21, align 8, !tbaa !11
  %1987 = load double, ptr %20, align 8, !tbaa !11
  %1988 = fdiv double %1986, %1987
  store double %1988, ptr %30, align 8, !tbaa !11
  br label %2041

1989:                                             ; preds = %1888
  %1990 = load double, ptr %20, align 8, !tbaa !11
  %1991 = fcmp ole double %1990, 0.000000e+00
  br i1 %1991, label %1992, label %2016

1992:                                             ; preds = %1989
  %1993 = load double, ptr %20, align 8, !tbaa !11
  %1994 = load double, ptr %20, align 8, !tbaa !11
  %1995 = load double, ptr %20, align 8, !tbaa !11
  %1996 = load double, ptr %21, align 8, !tbaa !11
  %1997 = fmul double %1996, 4.000000e+00
  %1998 = load double, ptr %22, align 8, !tbaa !11
  %1999 = fmul double %1997, %1998
  %2000 = fneg double %1999
  %2001 = call double @llvm.fmuladd.f64(double %1994, double %1995, double %2000)
  store double %2001, ptr %19, align 8, !tbaa !11
  %2002 = load double, ptr %19, align 8, !tbaa !11
  %2003 = fcmp oge double %2002, 0.000000e+00
  br i1 %2003, label %2004, label %2006

2004:                                             ; preds = %1992
  %2005 = load double, ptr %19, align 8, !tbaa !11
  br label %2009

2006:                                             ; preds = %1992
  %2007 = load double, ptr %19, align 8, !tbaa !11
  %2008 = fneg double %2007
  br label %2009

2009:                                             ; preds = %2006, %2004
  %2010 = phi double [ %2005, %2004 ], [ %2008, %2006 ]
  %2011 = call double @sqrt(double noundef %2010) #5
  %2012 = fsub double %1993, %2011
  %2013 = load double, ptr %22, align 8, !tbaa !11
  %2014 = fmul double %2013, 2.000000e+00
  %2015 = fdiv double %2012, %2014
  store double %2015, ptr %30, align 8, !tbaa !11
  br label %2040

2016:                                             ; preds = %1989
  %2017 = load double, ptr %21, align 8, !tbaa !11
  %2018 = fmul double %2017, 2.000000e+00
  %2019 = load double, ptr %20, align 8, !tbaa !11
  %2020 = load double, ptr %20, align 8, !tbaa !11
  %2021 = load double, ptr %20, align 8, !tbaa !11
  %2022 = load double, ptr %21, align 8, !tbaa !11
  %2023 = fmul double %2022, 4.000000e+00
  %2024 = load double, ptr %22, align 8, !tbaa !11
  %2025 = fmul double %2023, %2024
  %2026 = fneg double %2025
  %2027 = call double @llvm.fmuladd.f64(double %2020, double %2021, double %2026)
  store double %2027, ptr %19, align 8, !tbaa !11
  %2028 = load double, ptr %19, align 8, !tbaa !11
  %2029 = fcmp oge double %2028, 0.000000e+00
  br i1 %2029, label %2030, label %2032

2030:                                             ; preds = %2016
  %2031 = load double, ptr %19, align 8, !tbaa !11
  br label %2035

2032:                                             ; preds = %2016
  %2033 = load double, ptr %19, align 8, !tbaa !11
  %2034 = fneg double %2033
  br label %2035

2035:                                             ; preds = %2032, %2030
  %2036 = phi double [ %2031, %2030 ], [ %2034, %2032 ]
  %2037 = call double @sqrt(double noundef %2036) #5
  %2038 = fadd double %2019, %2037
  %2039 = fdiv double %2018, %2038
  store double %2039, ptr %30, align 8, !tbaa !11
  br label %2040

2040:                                             ; preds = %2035, %2009
  br label %2041

2041:                                             ; preds = %2040, %1985
  br label %2194

2042:                                             ; preds = %1811
  %2043 = load double, ptr %51, align 8, !tbaa !11
  %2044 = load double, ptr %34, align 8, !tbaa !11
  %2045 = fadd double %2043, %2044
  %2046 = load double, ptr %31, align 8, !tbaa !11
  %2047 = fadd double %2045, %2046
  store double %2047, ptr %40, align 8, !tbaa !11
  %2048 = load i64, ptr %49, align 8, !tbaa !9
  %2049 = icmp ne i64 %2048, 0
  br i1 %2049, label %2050, label %2111

2050:                                             ; preds = %2042
  %2051 = load ptr, ptr %13, align 8, !tbaa !5
  %2052 = load i64, ptr %35, align 8, !tbaa !9
  %2053 = getelementptr inbounds double, ptr %2051, i64 %2052
  %2054 = load double, ptr %2053, align 8, !tbaa !11
  %2055 = load ptr, ptr %14, align 8, !tbaa !5
  %2056 = load i64, ptr %35, align 8, !tbaa !9
  %2057 = getelementptr inbounds double, ptr %2055, i64 %2056
  %2058 = load double, ptr %2057, align 8, !tbaa !11
  %2059 = fdiv double %2054, %2058
  store double %2059, ptr %42, align 8, !tbaa !11
  %2060 = load double, ptr %42, align 8, !tbaa !11
  %2061 = load double, ptr %42, align 8, !tbaa !11
  %2062 = fmul double %2061, %2060
  store double %2062, ptr %42, align 8, !tbaa !11
  %2063 = load double, ptr %40, align 8, !tbaa !11
  %2064 = load ptr, ptr %14, align 8, !tbaa !5
  %2065 = load i64, ptr %36, align 8, !tbaa !9
  %2066 = getelementptr inbounds double, ptr %2064, i64 %2065
  %2067 = load double, ptr %2066, align 8, !tbaa !11
  %2068 = load double, ptr %38, align 8, !tbaa !11
  %2069 = load double, ptr %37, align 8, !tbaa !11
  %2070 = fadd double %2068, %2069
  %2071 = fneg double %2067
  %2072 = call double @llvm.fmuladd.f64(double %2071, double %2070, double %2063)
  %2073 = load ptr, ptr %12, align 8, !tbaa !5
  %2074 = load i64, ptr %35, align 8, !tbaa !9
  %2075 = getelementptr inbounds double, ptr %2073, i64 %2074
  %2076 = load double, ptr %2075, align 8, !tbaa !11
  %2077 = load ptr, ptr %12, align 8, !tbaa !5
  %2078 = load i64, ptr %36, align 8, !tbaa !9
  %2079 = getelementptr inbounds double, ptr %2077, i64 %2078
  %2080 = load double, ptr %2079, align 8, !tbaa !11
  %2081 = fsub double %2076, %2080
  %2082 = load double, ptr %42, align 8, !tbaa !11
  %2083 = fneg double %2081
  %2084 = call double @llvm.fmuladd.f64(double %2083, double %2082, double %2072)
  store double %2084, ptr %22, align 8, !tbaa !11
  %2085 = load ptr, ptr %13, align 8, !tbaa !5
  %2086 = load i64, ptr %35, align 8, !tbaa !9
  %2087 = getelementptr inbounds double, ptr %2085, i64 %2086
  %2088 = load double, ptr %2087, align 8, !tbaa !11
  %2089 = load ptr, ptr %13, align 8, !tbaa !5
  %2090 = load i64, ptr %35, align 8, !tbaa !9
  %2091 = getelementptr inbounds double, ptr %2089, i64 %2090
  %2092 = load double, ptr %2091, align 8, !tbaa !11
  %2093 = fmul double %2088, %2092
  %2094 = getelementptr inbounds [3 x double], ptr %27, i64 0, i64 0
  store double %2093, ptr %2094, align 16, !tbaa !11
  %2095 = load ptr, ptr %14, align 8, !tbaa !5
  %2096 = load i64, ptr %36, align 8, !tbaa !9
  %2097 = getelementptr inbounds double, ptr %2095, i64 %2096
  %2098 = load double, ptr %2097, align 8, !tbaa !11
  %2099 = load ptr, ptr %14, align 8, !tbaa !5
  %2100 = load i64, ptr %36, align 8, !tbaa !9
  %2101 = getelementptr inbounds double, ptr %2099, i64 %2100
  %2102 = load double, ptr %2101, align 8, !tbaa !11
  %2103 = fmul double %2098, %2102
  %2104 = load double, ptr %38, align 8, !tbaa !11
  %2105 = load double, ptr %42, align 8, !tbaa !11
  %2106 = fsub double %2104, %2105
  %2107 = load double, ptr %37, align 8, !tbaa !11
  %2108 = fadd double %2106, %2107
  %2109 = fmul double %2103, %2108
  %2110 = getelementptr inbounds [3 x double], ptr %27, i64 0, i64 2
  store double %2109, ptr %2110, align 16, !tbaa !11
  br label %2172

2111:                                             ; preds = %2042
  %2112 = load ptr, ptr %13, align 8, !tbaa !5
  %2113 = load i64, ptr %36, align 8, !tbaa !9
  %2114 = getelementptr inbounds double, ptr %2112, i64 %2113
  %2115 = load double, ptr %2114, align 8, !tbaa !11
  %2116 = load ptr, ptr %14, align 8, !tbaa !5
  %2117 = load i64, ptr %36, align 8, !tbaa !9
  %2118 = getelementptr inbounds double, ptr %2116, i64 %2117
  %2119 = load double, ptr %2118, align 8, !tbaa !11
  %2120 = fdiv double %2115, %2119
  store double %2120, ptr %42, align 8, !tbaa !11
  %2121 = load double, ptr %42, align 8, !tbaa !11
  %2122 = load double, ptr %42, align 8, !tbaa !11
  %2123 = fmul double %2122, %2121
  store double %2123, ptr %42, align 8, !tbaa !11
  %2124 = load double, ptr %40, align 8, !tbaa !11
  %2125 = load ptr, ptr %14, align 8, !tbaa !5
  %2126 = load i64, ptr %35, align 8, !tbaa !9
  %2127 = getelementptr inbounds double, ptr %2125, i64 %2126
  %2128 = load double, ptr %2127, align 8, !tbaa !11
  %2129 = load double, ptr %38, align 8, !tbaa !11
  %2130 = load double, ptr %37, align 8, !tbaa !11
  %2131 = fadd double %2129, %2130
  %2132 = fneg double %2128
  %2133 = call double @llvm.fmuladd.f64(double %2132, double %2131, double %2124)
  %2134 = load ptr, ptr %12, align 8, !tbaa !5
  %2135 = load i64, ptr %36, align 8, !tbaa !9
  %2136 = getelementptr inbounds double, ptr %2134, i64 %2135
  %2137 = load double, ptr %2136, align 8, !tbaa !11
  %2138 = load ptr, ptr %12, align 8, !tbaa !5
  %2139 = load i64, ptr %35, align 8, !tbaa !9
  %2140 = getelementptr inbounds double, ptr %2138, i64 %2139
  %2141 = load double, ptr %2140, align 8, !tbaa !11
  %2142 = fsub double %2137, %2141
  %2143 = load double, ptr %42, align 8, !tbaa !11
  %2144 = fneg double %2142
  %2145 = call double @llvm.fmuladd.f64(double %2144, double %2143, double %2133)
  store double %2145, ptr %22, align 8, !tbaa !11
  %2146 = load ptr, ptr %14, align 8, !tbaa !5
  %2147 = load i64, ptr %35, align 8, !tbaa !9
  %2148 = getelementptr inbounds double, ptr %2146, i64 %2147
  %2149 = load double, ptr %2148, align 8, !tbaa !11
  %2150 = load ptr, ptr %14, align 8, !tbaa !5
  %2151 = load i64, ptr %35, align 8, !tbaa !9
  %2152 = getelementptr inbounds double, ptr %2150, i64 %2151
  %2153 = load double, ptr %2152, align 8, !tbaa !11
  %2154 = fmul double %2149, %2153
  %2155 = load double, ptr %38, align 8, !tbaa !11
  %2156 = load double, ptr %37, align 8, !tbaa !11
  %2157 = load double, ptr %42, align 8, !tbaa !11
  %2158 = fsub double %2156, %2157
  %2159 = fadd double %2155, %2158
  %2160 = fmul double %2154, %2159
  %2161 = getelementptr inbounds [3 x double], ptr %27, i64 0, i64 0
  store double %2160, ptr %2161, align 16, !tbaa !11
  %2162 = load ptr, ptr %13, align 8, !tbaa !5
  %2163 = load i64, ptr %36, align 8, !tbaa !9
  %2164 = getelementptr inbounds double, ptr %2162, i64 %2163
  %2165 = load double, ptr %2164, align 8, !tbaa !11
  %2166 = load ptr, ptr %13, align 8, !tbaa !5
  %2167 = load i64, ptr %36, align 8, !tbaa !9
  %2168 = getelementptr inbounds double, ptr %2166, i64 %2167
  %2169 = load double, ptr %2168, align 8, !tbaa !11
  %2170 = fmul double %2165, %2169
  %2171 = getelementptr inbounds [3 x double], ptr %27, i64 0, i64 2
  store double %2170, ptr %2171, align 16, !tbaa !11
  br label %2172

2172:                                             ; preds = %2111, %2050
  %2173 = load ptr, ptr %13, align 8, !tbaa !5
  %2174 = load i64, ptr %25, align 8, !tbaa !9
  %2175 = getelementptr inbounds double, ptr %2173, i64 %2174
  %2176 = load double, ptr %2175, align 8, !tbaa !11
  %2177 = load ptr, ptr %13, align 8, !tbaa !5
  %2178 = load i64, ptr %25, align 8, !tbaa !9
  %2179 = getelementptr inbounds double, ptr %2177, i64 %2178
  %2180 = load double, ptr %2179, align 8, !tbaa !11
  %2181 = fmul double %2176, %2180
  %2182 = getelementptr inbounds [3 x double], ptr %27, i64 0, i64 1
  store double %2181, ptr %2182, align 8, !tbaa !11
  %2183 = load ptr, ptr %14, align 8, !tbaa !5
  %2184 = load i64, ptr %35, align 8, !tbaa !9
  %2185 = getelementptr inbounds double, ptr %2183, i64 %2184
  %2186 = getelementptr inbounds [3 x double], ptr %27, i64 0, i64 0
  %2187 = load ptr, ptr %17, align 8, !tbaa !5
  %2188 = call i32 @dlaed6_(ptr noundef %46, ptr noundef %49, ptr noundef %22, ptr noundef %2185, ptr noundef %2186, ptr noundef %24, ptr noundef %30, ptr noundef %2187)
  %2189 = load ptr, ptr %17, align 8, !tbaa !5
  %2190 = load i64, ptr %2189, align 8, !tbaa !9
  %2191 = icmp ne i64 %2190, 0
  br i1 %2191, label %2192, label %2193

2192:                                             ; preds = %2172
  br label %3220

2193:                                             ; preds = %2172
  br label %2194

2194:                                             ; preds = %2193, %2041
  %2195 = load double, ptr %24, align 8, !tbaa !11
  %2196 = load double, ptr %30, align 8, !tbaa !11
  %2197 = fmul double %2195, %2196
  %2198 = fcmp oge double %2197, 0.000000e+00
  br i1 %2198, label %2199, label %2204

2199:                                             ; preds = %2194
  %2200 = load double, ptr %24, align 8, !tbaa !11
  %2201 = fneg double %2200
  %2202 = load double, ptr %26, align 8, !tbaa !11
  %2203 = fdiv double %2201, %2202
  store double %2203, ptr %30, align 8, !tbaa !11
  br label %2204

2204:                                             ; preds = %2199, %2194
  %2205 = load double, ptr %33, align 8, !tbaa !11
  %2206 = load double, ptr %30, align 8, !tbaa !11
  %2207 = fadd double %2205, %2206
  store double %2207, ptr %40, align 8, !tbaa !11
  %2208 = load double, ptr %40, align 8, !tbaa !11
  %2209 = load double, ptr %44, align 8, !tbaa !11
  %2210 = fcmp ogt double %2208, %2209
  br i1 %2210, label %2215, label %2211

2211:                                             ; preds = %2204
  %2212 = load double, ptr %40, align 8, !tbaa !11
  %2213 = load double, ptr %43, align 8, !tbaa !11
  %2214 = fcmp olt double %2212, %2213
  br i1 %2214, label %2215, label %2229

2215:                                             ; preds = %2211, %2204
  %2216 = load double, ptr %24, align 8, !tbaa !11
  %2217 = fcmp olt double %2216, 0.000000e+00
  br i1 %2217, label %2218, label %2223

2218:                                             ; preds = %2215
  %2219 = load double, ptr %44, align 8, !tbaa !11
  %2220 = load double, ptr %33, align 8, !tbaa !11
  %2221 = fsub double %2219, %2220
  %2222 = fdiv double %2221, 2.000000e+00
  store double %2222, ptr %30, align 8, !tbaa !11
  br label %2228

2223:                                             ; preds = %2215
  %2224 = load double, ptr %43, align 8, !tbaa !11
  %2225 = load double, ptr %33, align 8, !tbaa !11
  %2226 = fsub double %2224, %2225
  %2227 = fdiv double %2226, 2.000000e+00
  store double %2227, ptr %30, align 8, !tbaa !11
  br label %2228

2228:                                             ; preds = %2223, %2218
  br label %2229

2229:                                             ; preds = %2228, %2211
  %2230 = load double, ptr %24, align 8, !tbaa !11
  store double %2230, ptr %41, align 8, !tbaa !11
  %2231 = load ptr, ptr %10, align 8, !tbaa !5
  %2232 = load i64, ptr %2231, align 8, !tbaa !9
  store i64 %2232, ptr %18, align 8, !tbaa !9
  store i64 1, ptr %23, align 8, !tbaa !9
  br label %2233

2233:                                             ; preds = %2244, %2229
  %2234 = load i64, ptr %23, align 8, !tbaa !9
  %2235 = load i64, ptr %18, align 8, !tbaa !9
  %2236 = icmp sle i64 %2234, %2235
  br i1 %2236, label %2237, label %2247

2237:                                             ; preds = %2233
  %2238 = load double, ptr %30, align 8, !tbaa !11
  %2239 = load ptr, ptr %14, align 8, !tbaa !5
  %2240 = load i64, ptr %23, align 8, !tbaa !9
  %2241 = getelementptr inbounds double, ptr %2239, i64 %2240
  %2242 = load double, ptr %2241, align 8, !tbaa !11
  %2243 = fsub double %2242, %2238
  store double %2243, ptr %2241, align 8, !tbaa !11
  br label %2244

2244:                                             ; preds = %2237
  %2245 = load i64, ptr %23, align 8, !tbaa !9
  %2246 = add nsw i64 %2245, 1
  store i64 %2246, ptr %23, align 8, !tbaa !9
  br label %2233, !llvm.loop !30

2247:                                             ; preds = %2233
  store double 0.000000e+00, ptr %38, align 8, !tbaa !11
  store double 0.000000e+00, ptr %34, align 8, !tbaa !11
  store double 0.000000e+00, ptr %50, align 8, !tbaa !11
  %2248 = load i64, ptr %35, align 8, !tbaa !9
  store i64 %2248, ptr %18, align 8, !tbaa !9
  store i64 1, ptr %23, align 8, !tbaa !9
  br label %2249

2249:                                             ; preds = %2277, %2247
  %2250 = load i64, ptr %23, align 8, !tbaa !9
  %2251 = load i64, ptr %18, align 8, !tbaa !9
  %2252 = icmp sle i64 %2250, %2251
  br i1 %2252, label %2253, label %2280

2253:                                             ; preds = %2249
  %2254 = load ptr, ptr %13, align 8, !tbaa !5
  %2255 = load i64, ptr %23, align 8, !tbaa !9
  %2256 = getelementptr inbounds double, ptr %2254, i64 %2255
  %2257 = load double, ptr %2256, align 8, !tbaa !11
  %2258 = load ptr, ptr %14, align 8, !tbaa !5
  %2259 = load i64, ptr %23, align 8, !tbaa !9
  %2260 = getelementptr inbounds double, ptr %2258, i64 %2259
  %2261 = load double, ptr %2260, align 8, !tbaa !11
  %2262 = fdiv double %2257, %2261
  store double %2262, ptr %40, align 8, !tbaa !11
  %2263 = load ptr, ptr %13, align 8, !tbaa !5
  %2264 = load i64, ptr %23, align 8, !tbaa !9
  %2265 = getelementptr inbounds double, ptr %2263, i64 %2264
  %2266 = load double, ptr %2265, align 8, !tbaa !11
  %2267 = load double, ptr %40, align 8, !tbaa !11
  %2268 = load double, ptr %34, align 8, !tbaa !11
  %2269 = call double @llvm.fmuladd.f64(double %2266, double %2267, double %2268)
  store double %2269, ptr %34, align 8, !tbaa !11
  %2270 = load double, ptr %40, align 8, !tbaa !11
  %2271 = load double, ptr %40, align 8, !tbaa !11
  %2272 = load double, ptr %38, align 8, !tbaa !11
  %2273 = call double @llvm.fmuladd.f64(double %2270, double %2271, double %2272)
  store double %2273, ptr %38, align 8, !tbaa !11
  %2274 = load double, ptr %34, align 8, !tbaa !11
  %2275 = load double, ptr %50, align 8, !tbaa !11
  %2276 = fadd double %2275, %2274
  store double %2276, ptr %50, align 8, !tbaa !11
  br label %2277

2277:                                             ; preds = %2253
  %2278 = load i64, ptr %23, align 8, !tbaa !9
  %2279 = add nsw i64 %2278, 1
  store i64 %2279, ptr %23, align 8, !tbaa !9
  br label %2249, !llvm.loop !31

2280:                                             ; preds = %2249
  %2281 = load double, ptr %50, align 8, !tbaa !11
  %2282 = fcmp oge double %2281, 0.000000e+00
  br i1 %2282, label %2283, label %2285

2283:                                             ; preds = %2280
  %2284 = load double, ptr %50, align 8, !tbaa !11
  br label %2288

2285:                                             ; preds = %2280
  %2286 = load double, ptr %50, align 8, !tbaa !11
  %2287 = fneg double %2286
  br label %2288

2288:                                             ; preds = %2285, %2283
  %2289 = phi double [ %2284, %2283 ], [ %2287, %2285 ]
  store double %2289, ptr %50, align 8, !tbaa !11
  store double 0.000000e+00, ptr %37, align 8, !tbaa !11
  store double 0.000000e+00, ptr %31, align 8, !tbaa !11
  %2290 = load i64, ptr %36, align 8, !tbaa !9
  store i64 %2290, ptr %18, align 8, !tbaa !9
  %2291 = load ptr, ptr %10, align 8, !tbaa !5
  %2292 = load i64, ptr %2291, align 8, !tbaa !9
  store i64 %2292, ptr %23, align 8, !tbaa !9
  br label %2293

2293:                                             ; preds = %2321, %2288
  %2294 = load i64, ptr %23, align 8, !tbaa !9
  %2295 = load i64, ptr %18, align 8, !tbaa !9
  %2296 = icmp sge i64 %2294, %2295
  br i1 %2296, label %2297, label %2324

2297:                                             ; preds = %2293
  %2298 = load ptr, ptr %13, align 8, !tbaa !5
  %2299 = load i64, ptr %23, align 8, !tbaa !9
  %2300 = getelementptr inbounds double, ptr %2298, i64 %2299
  %2301 = load double, ptr %2300, align 8, !tbaa !11
  %2302 = load ptr, ptr %14, align 8, !tbaa !5
  %2303 = load i64, ptr %23, align 8, !tbaa !9
  %2304 = getelementptr inbounds double, ptr %2302, i64 %2303
  %2305 = load double, ptr %2304, align 8, !tbaa !11
  %2306 = fdiv double %2301, %2305
  store double %2306, ptr %40, align 8, !tbaa !11
  %2307 = load ptr, ptr %13, align 8, !tbaa !5
  %2308 = load i64, ptr %23, align 8, !tbaa !9
  %2309 = getelementptr inbounds double, ptr %2307, i64 %2308
  %2310 = load double, ptr %2309, align 8, !tbaa !11
  %2311 = load double, ptr %40, align 8, !tbaa !11
  %2312 = load double, ptr %31, align 8, !tbaa !11
  %2313 = call double @llvm.fmuladd.f64(double %2310, double %2311, double %2312)
  store double %2313, ptr %31, align 8, !tbaa !11
  %2314 = load double, ptr %40, align 8, !tbaa !11
  %2315 = load double, ptr %40, align 8, !tbaa !11
  %2316 = load double, ptr %37, align 8, !tbaa !11
  %2317 = call double @llvm.fmuladd.f64(double %2314, double %2315, double %2316)
  store double %2317, ptr %37, align 8, !tbaa !11
  %2318 = load double, ptr %31, align 8, !tbaa !11
  %2319 = load double, ptr %50, align 8, !tbaa !11
  %2320 = fadd double %2319, %2318
  store double %2320, ptr %50, align 8, !tbaa !11
  br label %2321

2321:                                             ; preds = %2297
  %2322 = load i64, ptr %23, align 8, !tbaa !9
  %2323 = add nsw i64 %2322, -1
  store i64 %2323, ptr %23, align 8, !tbaa !9
  br label %2293, !llvm.loop !32

2324:                                             ; preds = %2293
  %2325 = load ptr, ptr %13, align 8, !tbaa !5
  %2326 = load i64, ptr %25, align 8, !tbaa !9
  %2327 = getelementptr inbounds double, ptr %2325, i64 %2326
  %2328 = load double, ptr %2327, align 8, !tbaa !11
  %2329 = load ptr, ptr %14, align 8, !tbaa !5
  %2330 = load i64, ptr %25, align 8, !tbaa !9
  %2331 = getelementptr inbounds double, ptr %2329, i64 %2330
  %2332 = load double, ptr %2331, align 8, !tbaa !11
  %2333 = fdiv double %2328, %2332
  store double %2333, ptr %40, align 8, !tbaa !11
  %2334 = load double, ptr %38, align 8, !tbaa !11
  %2335 = load double, ptr %37, align 8, !tbaa !11
  %2336 = fadd double %2334, %2335
  %2337 = load double, ptr %40, align 8, !tbaa !11
  %2338 = load double, ptr %40, align 8, !tbaa !11
  %2339 = call double @llvm.fmuladd.f64(double %2337, double %2338, double %2336)
  store double %2339, ptr %26, align 8, !tbaa !11
  %2340 = load ptr, ptr %13, align 8, !tbaa !5
  %2341 = load i64, ptr %25, align 8, !tbaa !9
  %2342 = getelementptr inbounds double, ptr %2340, i64 %2341
  %2343 = load double, ptr %2342, align 8, !tbaa !11
  %2344 = load double, ptr %40, align 8, !tbaa !11
  %2345 = fmul double %2343, %2344
  store double %2345, ptr %40, align 8, !tbaa !11
  %2346 = load double, ptr %51, align 8, !tbaa !11
  %2347 = load double, ptr %31, align 8, !tbaa !11
  %2348 = fadd double %2346, %2347
  %2349 = load double, ptr %34, align 8, !tbaa !11
  %2350 = fadd double %2348, %2349
  %2351 = load double, ptr %40, align 8, !tbaa !11
  %2352 = fadd double %2350, %2351
  store double %2352, ptr %24, align 8, !tbaa !11
  %2353 = load double, ptr %31, align 8, !tbaa !11
  %2354 = load double, ptr %34, align 8, !tbaa !11
  %2355 = fsub double %2353, %2354
  %2356 = load double, ptr %50, align 8, !tbaa !11
  %2357 = call double @llvm.fmuladd.f64(double %2355, double 8.000000e+00, double %2356)
  %2358 = load double, ptr %51, align 8, !tbaa !11
  %2359 = call double @llvm.fmuladd.f64(double %2358, double 2.000000e+00, double %2357)
  %2360 = load double, ptr %40, align 8, !tbaa !11
  %2361 = fcmp oge double %2360, 0.000000e+00
  br i1 %2361, label %2362, label %2364

2362:                                             ; preds = %2324
  %2363 = load double, ptr %40, align 8, !tbaa !11
  br label %2367

2364:                                             ; preds = %2324
  %2365 = load double, ptr %40, align 8, !tbaa !11
  %2366 = fneg double %2365
  br label %2367

2367:                                             ; preds = %2364, %2362
  %2368 = phi double [ %2363, %2362 ], [ %2366, %2364 ]
  %2369 = call double @llvm.fmuladd.f64(double %2368, double 3.000000e+00, double %2359)
  %2370 = load double, ptr %33, align 8, !tbaa !11
  %2371 = load double, ptr %30, align 8, !tbaa !11
  %2372 = fadd double %2370, %2371
  store double %2372, ptr %19, align 8, !tbaa !11
  %2373 = load double, ptr %19, align 8, !tbaa !11
  %2374 = fcmp oge double %2373, 0.000000e+00
  br i1 %2374, label %2375, label %2377

2375:                                             ; preds = %2367
  %2376 = load double, ptr %19, align 8, !tbaa !11
  br label %2380

2377:                                             ; preds = %2367
  %2378 = load double, ptr %19, align 8, !tbaa !11
  %2379 = fneg double %2378
  br label %2380

2380:                                             ; preds = %2377, %2375
  %2381 = phi double [ %2376, %2375 ], [ %2379, %2377 ]
  %2382 = load double, ptr %26, align 8, !tbaa !11
  %2383 = call double @llvm.fmuladd.f64(double %2381, double %2382, double %2369)
  store double %2383, ptr %50, align 8, !tbaa !11
  store i64 0, ptr %47, align 8, !tbaa !9
  %2384 = load i64, ptr %49, align 8, !tbaa !9
  %2385 = icmp ne i64 %2384, 0
  br i1 %2385, label %2386, label %2402

2386:                                             ; preds = %2380
  %2387 = load double, ptr %24, align 8, !tbaa !11
  %2388 = fneg double %2387
  %2389 = load double, ptr %41, align 8, !tbaa !11
  %2390 = fcmp oge double %2389, 0.000000e+00
  br i1 %2390, label %2391, label %2393

2391:                                             ; preds = %2386
  %2392 = load double, ptr %41, align 8, !tbaa !11
  br label %2396

2393:                                             ; preds = %2386
  %2394 = load double, ptr %41, align 8, !tbaa !11
  %2395 = fneg double %2394
  br label %2396

2396:                                             ; preds = %2393, %2391
  %2397 = phi double [ %2392, %2391 ], [ %2395, %2393 ]
  %2398 = fdiv double %2397, 1.000000e+01
  %2399 = fcmp ogt double %2388, %2398
  br i1 %2399, label %2400, label %2401

2400:                                             ; preds = %2396
  store i64 1, ptr %47, align 8, !tbaa !9
  br label %2401

2401:                                             ; preds = %2400, %2396
  br label %2417

2402:                                             ; preds = %2380
  %2403 = load double, ptr %24, align 8, !tbaa !11
  %2404 = load double, ptr %41, align 8, !tbaa !11
  %2405 = fcmp oge double %2404, 0.000000e+00
  br i1 %2405, label %2406, label %2408

2406:                                             ; preds = %2402
  %2407 = load double, ptr %41, align 8, !tbaa !11
  br label %2411

2408:                                             ; preds = %2402
  %2409 = load double, ptr %41, align 8, !tbaa !11
  %2410 = fneg double %2409
  br label %2411

2411:                                             ; preds = %2408, %2406
  %2412 = phi double [ %2407, %2406 ], [ %2410, %2408 ]
  %2413 = fdiv double %2412, 1.000000e+01
  %2414 = fcmp ogt double %2403, %2413
  br i1 %2414, label %2415, label %2416

2415:                                             ; preds = %2411
  store i64 1, ptr %47, align 8, !tbaa !9
  br label %2416

2416:                                             ; preds = %2415, %2411
  br label %2417

2417:                                             ; preds = %2416, %2401
  %2418 = load double, ptr %30, align 8, !tbaa !11
  %2419 = load double, ptr %33, align 8, !tbaa !11
  %2420 = fadd double %2419, %2418
  store double %2420, ptr %33, align 8, !tbaa !11
  %2421 = load i64, ptr %46, align 8, !tbaa !9
  %2422 = add nsw i64 %2421, 1
  store i64 %2422, ptr %39, align 8, !tbaa !9
  %2423 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %2423, ptr %46, align 8, !tbaa !9
  br label %2424

2424:                                             ; preds = %3194, %2417
  %2425 = load i64, ptr %46, align 8, !tbaa !9
  %2426 = icmp sle i64 %2425, 30
  br i1 %2426, label %2427, label %3197

2427:                                             ; preds = %2424
  %2428 = load double, ptr %24, align 8, !tbaa !11
  %2429 = fcmp oge double %2428, 0.000000e+00
  br i1 %2429, label %2430, label %2432

2430:                                             ; preds = %2427
  %2431 = load double, ptr %24, align 8, !tbaa !11
  br label %2435

2432:                                             ; preds = %2427
  %2433 = load double, ptr %24, align 8, !tbaa !11
  %2434 = fneg double %2433
  br label %2435

2435:                                             ; preds = %2432, %2430
  %2436 = phi double [ %2431, %2430 ], [ %2434, %2432 ]
  %2437 = load double, ptr %32, align 8, !tbaa !11
  %2438 = load double, ptr %50, align 8, !tbaa !11
  %2439 = fmul double %2437, %2438
  %2440 = fcmp ole double %2436, %2439
  br i1 %2440, label %2441, label %2462

2441:                                             ; preds = %2435
  %2442 = load i64, ptr %49, align 8, !tbaa !9
  %2443 = icmp ne i64 %2442, 0
  br i1 %2443, label %2444, label %2453

2444:                                             ; preds = %2441
  %2445 = load ptr, ptr %12, align 8, !tbaa !5
  %2446 = load ptr, ptr %11, align 8, !tbaa !5
  %2447 = load i64, ptr %2446, align 8, !tbaa !9
  %2448 = getelementptr inbounds double, ptr %2445, i64 %2447
  %2449 = load double, ptr %2448, align 8, !tbaa !11
  %2450 = load double, ptr %33, align 8, !tbaa !11
  %2451 = fadd double %2449, %2450
  %2452 = load ptr, ptr %16, align 8, !tbaa !5
  store double %2451, ptr %2452, align 8, !tbaa !11
  br label %2461

2453:                                             ; preds = %2441
  %2454 = load ptr, ptr %12, align 8, !tbaa !5
  %2455 = load i64, ptr %28, align 8, !tbaa !9
  %2456 = getelementptr inbounds double, ptr %2454, i64 %2455
  %2457 = load double, ptr %2456, align 8, !tbaa !11
  %2458 = load double, ptr %33, align 8, !tbaa !11
  %2459 = fadd double %2457, %2458
  %2460 = load ptr, ptr %16, align 8, !tbaa !5
  store double %2459, ptr %2460, align 8, !tbaa !11
  br label %2461

2461:                                             ; preds = %2453, %2444
  br label %3220

2462:                                             ; preds = %2435
  %2463 = load double, ptr %24, align 8, !tbaa !11
  %2464 = fcmp ole double %2463, 0.000000e+00
  br i1 %2464, label %2465, label %2475

2465:                                             ; preds = %2462
  %2466 = load double, ptr %43, align 8, !tbaa !11
  %2467 = load double, ptr %33, align 8, !tbaa !11
  %2468 = fcmp oge double %2466, %2467
  br i1 %2468, label %2469, label %2471

2469:                                             ; preds = %2465
  %2470 = load double, ptr %43, align 8, !tbaa !11
  br label %2473

2471:                                             ; preds = %2465
  %2472 = load double, ptr %33, align 8, !tbaa !11
  br label %2473

2473:                                             ; preds = %2471, %2469
  %2474 = phi double [ %2470, %2469 ], [ %2472, %2471 ]
  store double %2474, ptr %43, align 8, !tbaa !11
  br label %2485

2475:                                             ; preds = %2462
  %2476 = load double, ptr %44, align 8, !tbaa !11
  %2477 = load double, ptr %33, align 8, !tbaa !11
  %2478 = fcmp ole double %2476, %2477
  br i1 %2478, label %2479, label %2481

2479:                                             ; preds = %2475
  %2480 = load double, ptr %44, align 8, !tbaa !11
  br label %2483

2481:                                             ; preds = %2475
  %2482 = load double, ptr %33, align 8, !tbaa !11
  br label %2483

2483:                                             ; preds = %2481, %2479
  %2484 = phi double [ %2480, %2479 ], [ %2482, %2481 ]
  store double %2484, ptr %44, align 8, !tbaa !11
  br label %2485

2485:                                             ; preds = %2483, %2473
  %2486 = load i64, ptr %48, align 8, !tbaa !9
  %2487 = icmp ne i64 %2486, 0
  br i1 %2487, label %2786, label %2488

2488:                                             ; preds = %2485
  %2489 = load i64, ptr %47, align 8, !tbaa !9
  %2490 = icmp ne i64 %2489, 0
  br i1 %2490, label %2564, label %2491

2491:                                             ; preds = %2488
  %2492 = load i64, ptr %49, align 8, !tbaa !9
  %2493 = icmp ne i64 %2492, 0
  br i1 %2493, label %2494, label %2529

2494:                                             ; preds = %2491
  %2495 = load ptr, ptr %13, align 8, !tbaa !5
  %2496 = load ptr, ptr %11, align 8, !tbaa !5
  %2497 = load i64, ptr %2496, align 8, !tbaa !9
  %2498 = getelementptr inbounds double, ptr %2495, i64 %2497
  %2499 = load double, ptr %2498, align 8, !tbaa !11
  %2500 = load ptr, ptr %14, align 8, !tbaa !5
  %2501 = load ptr, ptr %11, align 8, !tbaa !5
  %2502 = load i64, ptr %2501, align 8, !tbaa !9
  %2503 = getelementptr inbounds double, ptr %2500, i64 %2502
  %2504 = load double, ptr %2503, align 8, !tbaa !11
  %2505 = fdiv double %2499, %2504
  store double %2505, ptr %19, align 8, !tbaa !11
  %2506 = load double, ptr %24, align 8, !tbaa !11
  %2507 = load ptr, ptr %14, align 8, !tbaa !5
  %2508 = load i64, ptr %28, align 8, !tbaa !9
  %2509 = getelementptr inbounds double, ptr %2507, i64 %2508
  %2510 = load double, ptr %2509, align 8, !tbaa !11
  %2511 = load double, ptr %26, align 8, !tbaa !11
  %2512 = fneg double %2510
  %2513 = call double @llvm.fmuladd.f64(double %2512, double %2511, double %2506)
  %2514 = load ptr, ptr %12, align 8, !tbaa !5
  %2515 = load ptr, ptr %11, align 8, !tbaa !5
  %2516 = load i64, ptr %2515, align 8, !tbaa !9
  %2517 = getelementptr inbounds double, ptr %2514, i64 %2516
  %2518 = load double, ptr %2517, align 8, !tbaa !11
  %2519 = load ptr, ptr %12, align 8, !tbaa !5
  %2520 = load i64, ptr %28, align 8, !tbaa !9
  %2521 = getelementptr inbounds double, ptr %2519, i64 %2520
  %2522 = load double, ptr %2521, align 8, !tbaa !11
  %2523 = fsub double %2518, %2522
  %2524 = load double, ptr %19, align 8, !tbaa !11
  %2525 = load double, ptr %19, align 8, !tbaa !11
  %2526 = fmul double %2524, %2525
  %2527 = fneg double %2523
  %2528 = call double @llvm.fmuladd.f64(double %2527, double %2526, double %2513)
  store double %2528, ptr %22, align 8, !tbaa !11
  br label %2563

2529:                                             ; preds = %2491
  %2530 = load ptr, ptr %13, align 8, !tbaa !5
  %2531 = load i64, ptr %28, align 8, !tbaa !9
  %2532 = getelementptr inbounds double, ptr %2530, i64 %2531
  %2533 = load double, ptr %2532, align 8, !tbaa !11
  %2534 = load ptr, ptr %14, align 8, !tbaa !5
  %2535 = load i64, ptr %28, align 8, !tbaa !9
  %2536 = getelementptr inbounds double, ptr %2534, i64 %2535
  %2537 = load double, ptr %2536, align 8, !tbaa !11
  %2538 = fdiv double %2533, %2537
  store double %2538, ptr %19, align 8, !tbaa !11
  %2539 = load double, ptr %24, align 8, !tbaa !11
  %2540 = load ptr, ptr %14, align 8, !tbaa !5
  %2541 = load ptr, ptr %11, align 8, !tbaa !5
  %2542 = load i64, ptr %2541, align 8, !tbaa !9
  %2543 = getelementptr inbounds double, ptr %2540, i64 %2542
  %2544 = load double, ptr %2543, align 8, !tbaa !11
  %2545 = load double, ptr %26, align 8, !tbaa !11
  %2546 = fneg double %2544
  %2547 = call double @llvm.fmuladd.f64(double %2546, double %2545, double %2539)
  %2548 = load ptr, ptr %12, align 8, !tbaa !5
  %2549 = load i64, ptr %28, align 8, !tbaa !9
  %2550 = getelementptr inbounds double, ptr %2548, i64 %2549
  %2551 = load double, ptr %2550, align 8, !tbaa !11
  %2552 = load ptr, ptr %12, align 8, !tbaa !5
  %2553 = load ptr, ptr %11, align 8, !tbaa !5
  %2554 = load i64, ptr %2553, align 8, !tbaa !9
  %2555 = getelementptr inbounds double, ptr %2552, i64 %2554
  %2556 = load double, ptr %2555, align 8, !tbaa !11
  %2557 = fsub double %2551, %2556
  %2558 = load double, ptr %19, align 8, !tbaa !11
  %2559 = load double, ptr %19, align 8, !tbaa !11
  %2560 = fmul double %2558, %2559
  %2561 = fneg double %2557
  %2562 = call double @llvm.fmuladd.f64(double %2561, double %2560, double %2547)
  store double %2562, ptr %22, align 8, !tbaa !11
  br label %2563

2563:                                             ; preds = %2529, %2494
  br label %2603

2564:                                             ; preds = %2488
  %2565 = load ptr, ptr %13, align 8, !tbaa !5
  %2566 = load i64, ptr %25, align 8, !tbaa !9
  %2567 = getelementptr inbounds double, ptr %2565, i64 %2566
  %2568 = load double, ptr %2567, align 8, !tbaa !11
  %2569 = load ptr, ptr %14, align 8, !tbaa !5
  %2570 = load i64, ptr %25, align 8, !tbaa !9
  %2571 = getelementptr inbounds double, ptr %2569, i64 %2570
  %2572 = load double, ptr %2571, align 8, !tbaa !11
  %2573 = fdiv double %2568, %2572
  store double %2573, ptr %40, align 8, !tbaa !11
  %2574 = load i64, ptr %49, align 8, !tbaa !9
  %2575 = icmp ne i64 %2574, 0
  br i1 %2575, label %2576, label %2581

2576:                                             ; preds = %2564
  %2577 = load double, ptr %40, align 8, !tbaa !11
  %2578 = load double, ptr %40, align 8, !tbaa !11
  %2579 = load double, ptr %38, align 8, !tbaa !11
  %2580 = call double @llvm.fmuladd.f64(double %2577, double %2578, double %2579)
  store double %2580, ptr %38, align 8, !tbaa !11
  br label %2586

2581:                                             ; preds = %2564
  %2582 = load double, ptr %40, align 8, !tbaa !11
  %2583 = load double, ptr %40, align 8, !tbaa !11
  %2584 = load double, ptr %37, align 8, !tbaa !11
  %2585 = call double @llvm.fmuladd.f64(double %2582, double %2583, double %2584)
  store double %2585, ptr %37, align 8, !tbaa !11
  br label %2586

2586:                                             ; preds = %2581, %2576
  %2587 = load double, ptr %24, align 8, !tbaa !11
  %2588 = load ptr, ptr %14, align 8, !tbaa !5
  %2589 = load ptr, ptr %11, align 8, !tbaa !5
  %2590 = load i64, ptr %2589, align 8, !tbaa !9
  %2591 = getelementptr inbounds double, ptr %2588, i64 %2590
  %2592 = load double, ptr %2591, align 8, !tbaa !11
  %2593 = load double, ptr %38, align 8, !tbaa !11
  %2594 = fneg double %2592
  %2595 = call double @llvm.fmuladd.f64(double %2594, double %2593, double %2587)
  %2596 = load ptr, ptr %14, align 8, !tbaa !5
  %2597 = load i64, ptr %28, align 8, !tbaa !9
  %2598 = getelementptr inbounds double, ptr %2596, i64 %2597
  %2599 = load double, ptr %2598, align 8, !tbaa !11
  %2600 = load double, ptr %37, align 8, !tbaa !11
  %2601 = fneg double %2599
  %2602 = call double @llvm.fmuladd.f64(double %2601, double %2600, double %2595)
  store double %2602, ptr %22, align 8, !tbaa !11
  br label %2603

2603:                                             ; preds = %2586, %2563
  %2604 = load ptr, ptr %14, align 8, !tbaa !5
  %2605 = load ptr, ptr %11, align 8, !tbaa !5
  %2606 = load i64, ptr %2605, align 8, !tbaa !9
  %2607 = getelementptr inbounds double, ptr %2604, i64 %2606
  %2608 = load double, ptr %2607, align 8, !tbaa !11
  %2609 = load ptr, ptr %14, align 8, !tbaa !5
  %2610 = load i64, ptr %28, align 8, !tbaa !9
  %2611 = getelementptr inbounds double, ptr %2609, i64 %2610
  %2612 = load double, ptr %2611, align 8, !tbaa !11
  %2613 = fadd double %2608, %2612
  %2614 = load double, ptr %24, align 8, !tbaa !11
  %2615 = load ptr, ptr %14, align 8, !tbaa !5
  %2616 = load ptr, ptr %11, align 8, !tbaa !5
  %2617 = load i64, ptr %2616, align 8, !tbaa !9
  %2618 = getelementptr inbounds double, ptr %2615, i64 %2617
  %2619 = load double, ptr %2618, align 8, !tbaa !11
  %2620 = load ptr, ptr %14, align 8, !tbaa !5
  %2621 = load i64, ptr %28, align 8, !tbaa !9
  %2622 = getelementptr inbounds double, ptr %2620, i64 %2621
  %2623 = load double, ptr %2622, align 8, !tbaa !11
  %2624 = fmul double %2619, %2623
  %2625 = load double, ptr %26, align 8, !tbaa !11
  %2626 = fmul double %2624, %2625
  %2627 = fneg double %2626
  %2628 = call double @llvm.fmuladd.f64(double %2613, double %2614, double %2627)
  store double %2628, ptr %20, align 8, !tbaa !11
  %2629 = load ptr, ptr %14, align 8, !tbaa !5
  %2630 = load ptr, ptr %11, align 8, !tbaa !5
  %2631 = load i64, ptr %2630, align 8, !tbaa !9
  %2632 = getelementptr inbounds double, ptr %2629, i64 %2631
  %2633 = load double, ptr %2632, align 8, !tbaa !11
  %2634 = load ptr, ptr %14, align 8, !tbaa !5
  %2635 = load i64, ptr %28, align 8, !tbaa !9
  %2636 = getelementptr inbounds double, ptr %2634, i64 %2635
  %2637 = load double, ptr %2636, align 8, !tbaa !11
  %2638 = fmul double %2633, %2637
  %2639 = load double, ptr %24, align 8, !tbaa !11
  %2640 = fmul double %2638, %2639
  store double %2640, ptr %21, align 8, !tbaa !11
  %2641 = load double, ptr %22, align 8, !tbaa !11
  %2642 = fcmp oeq double %2641, 0.000000e+00
  br i1 %2642, label %2643, label %2733

2643:                                             ; preds = %2603
  %2644 = load double, ptr %20, align 8, !tbaa !11
  %2645 = fcmp oeq double %2644, 0.000000e+00
  br i1 %2645, label %2646, label %2729

2646:                                             ; preds = %2643
  %2647 = load i64, ptr %47, align 8, !tbaa !9
  %2648 = icmp ne i64 %2647, 0
  br i1 %2648, label %2703, label %2649

2649:                                             ; preds = %2646
  %2650 = load i64, ptr %49, align 8, !tbaa !9
  %2651 = icmp ne i64 %2650, 0
  br i1 %2651, label %2652, label %2677

2652:                                             ; preds = %2649
  %2653 = load ptr, ptr %13, align 8, !tbaa !5
  %2654 = load ptr, ptr %11, align 8, !tbaa !5
  %2655 = load i64, ptr %2654, align 8, !tbaa !9
  %2656 = getelementptr inbounds double, ptr %2653, i64 %2655
  %2657 = load double, ptr %2656, align 8, !tbaa !11
  %2658 = load ptr, ptr %13, align 8, !tbaa !5
  %2659 = load ptr, ptr %11, align 8, !tbaa !5
  %2660 = load i64, ptr %2659, align 8, !tbaa !9
  %2661 = getelementptr inbounds double, ptr %2658, i64 %2660
  %2662 = load double, ptr %2661, align 8, !tbaa !11
  %2663 = load ptr, ptr %14, align 8, !tbaa !5
  %2664 = load i64, ptr %28, align 8, !tbaa !9
  %2665 = getelementptr inbounds double, ptr %2663, i64 %2664
  %2666 = load double, ptr %2665, align 8, !tbaa !11
  %2667 = load ptr, ptr %14, align 8, !tbaa !5
  %2668 = load i64, ptr %28, align 8, !tbaa !9
  %2669 = getelementptr inbounds double, ptr %2667, i64 %2668
  %2670 = load double, ptr %2669, align 8, !tbaa !11
  %2671 = fmul double %2666, %2670
  %2672 = load double, ptr %38, align 8, !tbaa !11
  %2673 = load double, ptr %37, align 8, !tbaa !11
  %2674 = fadd double %2672, %2673
  %2675 = fmul double %2671, %2674
  %2676 = call double @llvm.fmuladd.f64(double %2657, double %2662, double %2675)
  store double %2676, ptr %20, align 8, !tbaa !11
  br label %2702

2677:                                             ; preds = %2649
  %2678 = load ptr, ptr %13, align 8, !tbaa !5
  %2679 = load i64, ptr %28, align 8, !tbaa !9
  %2680 = getelementptr inbounds double, ptr %2678, i64 %2679
  %2681 = load double, ptr %2680, align 8, !tbaa !11
  %2682 = load ptr, ptr %13, align 8, !tbaa !5
  %2683 = load i64, ptr %28, align 8, !tbaa !9
  %2684 = getelementptr inbounds double, ptr %2682, i64 %2683
  %2685 = load double, ptr %2684, align 8, !tbaa !11
  %2686 = load ptr, ptr %14, align 8, !tbaa !5
  %2687 = load ptr, ptr %11, align 8, !tbaa !5
  %2688 = load i64, ptr %2687, align 8, !tbaa !9
  %2689 = getelementptr inbounds double, ptr %2686, i64 %2688
  %2690 = load double, ptr %2689, align 8, !tbaa !11
  %2691 = load ptr, ptr %14, align 8, !tbaa !5
  %2692 = load ptr, ptr %11, align 8, !tbaa !5
  %2693 = load i64, ptr %2692, align 8, !tbaa !9
  %2694 = getelementptr inbounds double, ptr %2691, i64 %2693
  %2695 = load double, ptr %2694, align 8, !tbaa !11
  %2696 = fmul double %2690, %2695
  %2697 = load double, ptr %38, align 8, !tbaa !11
  %2698 = load double, ptr %37, align 8, !tbaa !11
  %2699 = fadd double %2697, %2698
  %2700 = fmul double %2696, %2699
  %2701 = call double @llvm.fmuladd.f64(double %2681, double %2685, double %2700)
  store double %2701, ptr %20, align 8, !tbaa !11
  br label %2702

2702:                                             ; preds = %2677, %2652
  br label %2728

2703:                                             ; preds = %2646
  %2704 = load ptr, ptr %14, align 8, !tbaa !5
  %2705 = load ptr, ptr %11, align 8, !tbaa !5
  %2706 = load i64, ptr %2705, align 8, !tbaa !9
  %2707 = getelementptr inbounds double, ptr %2704, i64 %2706
  %2708 = load double, ptr %2707, align 8, !tbaa !11
  %2709 = load ptr, ptr %14, align 8, !tbaa !5
  %2710 = load ptr, ptr %11, align 8, !tbaa !5
  %2711 = load i64, ptr %2710, align 8, !tbaa !9
  %2712 = getelementptr inbounds double, ptr %2709, i64 %2711
  %2713 = load double, ptr %2712, align 8, !tbaa !11
  %2714 = fmul double %2708, %2713
  %2715 = load double, ptr %38, align 8, !tbaa !11
  %2716 = load ptr, ptr %14, align 8, !tbaa !5
  %2717 = load i64, ptr %28, align 8, !tbaa !9
  %2718 = getelementptr inbounds double, ptr %2716, i64 %2717
  %2719 = load double, ptr %2718, align 8, !tbaa !11
  %2720 = load ptr, ptr %14, align 8, !tbaa !5
  %2721 = load i64, ptr %28, align 8, !tbaa !9
  %2722 = getelementptr inbounds double, ptr %2720, i64 %2721
  %2723 = load double, ptr %2722, align 8, !tbaa !11
  %2724 = fmul double %2719, %2723
  %2725 = load double, ptr %37, align 8, !tbaa !11
  %2726 = fmul double %2724, %2725
  %2727 = call double @llvm.fmuladd.f64(double %2714, double %2715, double %2726)
  store double %2727, ptr %20, align 8, !tbaa !11
  br label %2728

2728:                                             ; preds = %2703, %2702
  br label %2729

2729:                                             ; preds = %2728, %2643
  %2730 = load double, ptr %21, align 8, !tbaa !11
  %2731 = load double, ptr %20, align 8, !tbaa !11
  %2732 = fdiv double %2730, %2731
  store double %2732, ptr %30, align 8, !tbaa !11
  br label %2785

2733:                                             ; preds = %2603
  %2734 = load double, ptr %20, align 8, !tbaa !11
  %2735 = fcmp ole double %2734, 0.000000e+00
  br i1 %2735, label %2736, label %2760

2736:                                             ; preds = %2733
  %2737 = load double, ptr %20, align 8, !tbaa !11
  %2738 = load double, ptr %20, align 8, !tbaa !11
  %2739 = load double, ptr %20, align 8, !tbaa !11
  %2740 = load double, ptr %21, align 8, !tbaa !11
  %2741 = fmul double %2740, 4.000000e+00
  %2742 = load double, ptr %22, align 8, !tbaa !11
  %2743 = fmul double %2741, %2742
  %2744 = fneg double %2743
  %2745 = call double @llvm.fmuladd.f64(double %2738, double %2739, double %2744)
  store double %2745, ptr %19, align 8, !tbaa !11
  %2746 = load double, ptr %19, align 8, !tbaa !11
  %2747 = fcmp oge double %2746, 0.000000e+00
  br i1 %2747, label %2748, label %2750

2748:                                             ; preds = %2736
  %2749 = load double, ptr %19, align 8, !tbaa !11
  br label %2753

2750:                                             ; preds = %2736
  %2751 = load double, ptr %19, align 8, !tbaa !11
  %2752 = fneg double %2751
  br label %2753

2753:                                             ; preds = %2750, %2748
  %2754 = phi double [ %2749, %2748 ], [ %2752, %2750 ]
  %2755 = call double @sqrt(double noundef %2754) #5
  %2756 = fsub double %2737, %2755
  %2757 = load double, ptr %22, align 8, !tbaa !11
  %2758 = fmul double %2757, 2.000000e+00
  %2759 = fdiv double %2756, %2758
  store double %2759, ptr %30, align 8, !tbaa !11
  br label %2784

2760:                                             ; preds = %2733
  %2761 = load double, ptr %21, align 8, !tbaa !11
  %2762 = fmul double %2761, 2.000000e+00
  %2763 = load double, ptr %20, align 8, !tbaa !11
  %2764 = load double, ptr %20, align 8, !tbaa !11
  %2765 = load double, ptr %20, align 8, !tbaa !11
  %2766 = load double, ptr %21, align 8, !tbaa !11
  %2767 = fmul double %2766, 4.000000e+00
  %2768 = load double, ptr %22, align 8, !tbaa !11
  %2769 = fmul double %2767, %2768
  %2770 = fneg double %2769
  %2771 = call double @llvm.fmuladd.f64(double %2764, double %2765, double %2770)
  store double %2771, ptr %19, align 8, !tbaa !11
  %2772 = load double, ptr %19, align 8, !tbaa !11
  %2773 = fcmp oge double %2772, 0.000000e+00
  br i1 %2773, label %2774, label %2776

2774:                                             ; preds = %2760
  %2775 = load double, ptr %19, align 8, !tbaa !11
  br label %2779

2776:                                             ; preds = %2760
  %2777 = load double, ptr %19, align 8, !tbaa !11
  %2778 = fneg double %2777
  br label %2779

2779:                                             ; preds = %2776, %2774
  %2780 = phi double [ %2775, %2774 ], [ %2778, %2776 ]
  %2781 = call double @sqrt(double noundef %2780) #5
  %2782 = fadd double %2763, %2781
  %2783 = fdiv double %2762, %2782
  store double %2783, ptr %30, align 8, !tbaa !11
  br label %2784

2784:                                             ; preds = %2779, %2753
  br label %2785

2785:                                             ; preds = %2784, %2729
  br label %2972

2786:                                             ; preds = %2485
  %2787 = load double, ptr %51, align 8, !tbaa !11
  %2788 = load double, ptr %34, align 8, !tbaa !11
  %2789 = fadd double %2787, %2788
  %2790 = load double, ptr %31, align 8, !tbaa !11
  %2791 = fadd double %2789, %2790
  store double %2791, ptr %40, align 8, !tbaa !11
  %2792 = load i64, ptr %47, align 8, !tbaa !9
  %2793 = icmp ne i64 %2792, 0
  br i1 %2793, label %2794, label %2834

2794:                                             ; preds = %2786
  %2795 = load double, ptr %40, align 8, !tbaa !11
  %2796 = load ptr, ptr %14, align 8, !tbaa !5
  %2797 = load i64, ptr %35, align 8, !tbaa !9
  %2798 = getelementptr inbounds double, ptr %2796, i64 %2797
  %2799 = load double, ptr %2798, align 8, !tbaa !11
  %2800 = load double, ptr %38, align 8, !tbaa !11
  %2801 = fneg double %2799
  %2802 = call double @llvm.fmuladd.f64(double %2801, double %2800, double %2795)
  %2803 = load ptr, ptr %14, align 8, !tbaa !5
  %2804 = load i64, ptr %36, align 8, !tbaa !9
  %2805 = getelementptr inbounds double, ptr %2803, i64 %2804
  %2806 = load double, ptr %2805, align 8, !tbaa !11
  %2807 = load double, ptr %37, align 8, !tbaa !11
  %2808 = fneg double %2806
  %2809 = call double @llvm.fmuladd.f64(double %2808, double %2807, double %2802)
  store double %2809, ptr %22, align 8, !tbaa !11
  %2810 = load ptr, ptr %14, align 8, !tbaa !5
  %2811 = load i64, ptr %35, align 8, !tbaa !9
  %2812 = getelementptr inbounds double, ptr %2810, i64 %2811
  %2813 = load double, ptr %2812, align 8, !tbaa !11
  %2814 = load ptr, ptr %14, align 8, !tbaa !5
  %2815 = load i64, ptr %35, align 8, !tbaa !9
  %2816 = getelementptr inbounds double, ptr %2814, i64 %2815
  %2817 = load double, ptr %2816, align 8, !tbaa !11
  %2818 = fmul double %2813, %2817
  %2819 = load double, ptr %38, align 8, !tbaa !11
  %2820 = fmul double %2818, %2819
  %2821 = getelementptr inbounds [3 x double], ptr %27, i64 0, i64 0
  store double %2820, ptr %2821, align 16, !tbaa !11
  %2822 = load ptr, ptr %14, align 8, !tbaa !5
  %2823 = load i64, ptr %36, align 8, !tbaa !9
  %2824 = getelementptr inbounds double, ptr %2822, i64 %2823
  %2825 = load double, ptr %2824, align 8, !tbaa !11
  %2826 = load ptr, ptr %14, align 8, !tbaa !5
  %2827 = load i64, ptr %36, align 8, !tbaa !9
  %2828 = getelementptr inbounds double, ptr %2826, i64 %2827
  %2829 = load double, ptr %2828, align 8, !tbaa !11
  %2830 = fmul double %2825, %2829
  %2831 = load double, ptr %37, align 8, !tbaa !11
  %2832 = fmul double %2830, %2831
  %2833 = getelementptr inbounds [3 x double], ptr %27, i64 0, i64 2
  store double %2832, ptr %2833, align 16, !tbaa !11
  br label %2960

2834:                                             ; preds = %2786
  %2835 = load i64, ptr %49, align 8, !tbaa !9
  %2836 = icmp ne i64 %2835, 0
  br i1 %2836, label %2837, label %2898

2837:                                             ; preds = %2834
  %2838 = load ptr, ptr %13, align 8, !tbaa !5
  %2839 = load i64, ptr %35, align 8, !tbaa !9
  %2840 = getelementptr inbounds double, ptr %2838, i64 %2839
  %2841 = load double, ptr %2840, align 8, !tbaa !11
  %2842 = load ptr, ptr %14, align 8, !tbaa !5
  %2843 = load i64, ptr %35, align 8, !tbaa !9
  %2844 = getelementptr inbounds double, ptr %2842, i64 %2843
  %2845 = load double, ptr %2844, align 8, !tbaa !11
  %2846 = fdiv double %2841, %2845
  store double %2846, ptr %42, align 8, !tbaa !11
  %2847 = load double, ptr %42, align 8, !tbaa !11
  %2848 = load double, ptr %42, align 8, !tbaa !11
  %2849 = fmul double %2848, %2847
  store double %2849, ptr %42, align 8, !tbaa !11
  %2850 = load double, ptr %40, align 8, !tbaa !11
  %2851 = load ptr, ptr %14, align 8, !tbaa !5
  %2852 = load i64, ptr %36, align 8, !tbaa !9
  %2853 = getelementptr inbounds double, ptr %2851, i64 %2852
  %2854 = load double, ptr %2853, align 8, !tbaa !11
  %2855 = load double, ptr %38, align 8, !tbaa !11
  %2856 = load double, ptr %37, align 8, !tbaa !11
  %2857 = fadd double %2855, %2856
  %2858 = fneg double %2854
  %2859 = call double @llvm.fmuladd.f64(double %2858, double %2857, double %2850)
  %2860 = load ptr, ptr %12, align 8, !tbaa !5
  %2861 = load i64, ptr %35, align 8, !tbaa !9
  %2862 = getelementptr inbounds double, ptr %2860, i64 %2861
  %2863 = load double, ptr %2862, align 8, !tbaa !11
  %2864 = load ptr, ptr %12, align 8, !tbaa !5
  %2865 = load i64, ptr %36, align 8, !tbaa !9
  %2866 = getelementptr inbounds double, ptr %2864, i64 %2865
  %2867 = load double, ptr %2866, align 8, !tbaa !11
  %2868 = fsub double %2863, %2867
  %2869 = load double, ptr %42, align 8, !tbaa !11
  %2870 = fneg double %2868
  %2871 = call double @llvm.fmuladd.f64(double %2870, double %2869, double %2859)
  store double %2871, ptr %22, align 8, !tbaa !11
  %2872 = load ptr, ptr %13, align 8, !tbaa !5
  %2873 = load i64, ptr %35, align 8, !tbaa !9
  %2874 = getelementptr inbounds double, ptr %2872, i64 %2873
  %2875 = load double, ptr %2874, align 8, !tbaa !11
  %2876 = load ptr, ptr %13, align 8, !tbaa !5
  %2877 = load i64, ptr %35, align 8, !tbaa !9
  %2878 = getelementptr inbounds double, ptr %2876, i64 %2877
  %2879 = load double, ptr %2878, align 8, !tbaa !11
  %2880 = fmul double %2875, %2879
  %2881 = getelementptr inbounds [3 x double], ptr %27, i64 0, i64 0
  store double %2880, ptr %2881, align 16, !tbaa !11
  %2882 = load ptr, ptr %14, align 8, !tbaa !5
  %2883 = load i64, ptr %36, align 8, !tbaa !9
  %2884 = getelementptr inbounds double, ptr %2882, i64 %2883
  %2885 = load double, ptr %2884, align 8, !tbaa !11
  %2886 = load ptr, ptr %14, align 8, !tbaa !5
  %2887 = load i64, ptr %36, align 8, !tbaa !9
  %2888 = getelementptr inbounds double, ptr %2886, i64 %2887
  %2889 = load double, ptr %2888, align 8, !tbaa !11
  %2890 = fmul double %2885, %2889
  %2891 = load double, ptr %38, align 8, !tbaa !11
  %2892 = load double, ptr %42, align 8, !tbaa !11
  %2893 = fsub double %2891, %2892
  %2894 = load double, ptr %37, align 8, !tbaa !11
  %2895 = fadd double %2893, %2894
  %2896 = fmul double %2890, %2895
  %2897 = getelementptr inbounds [3 x double], ptr %27, i64 0, i64 2
  store double %2896, ptr %2897, align 16, !tbaa !11
  br label %2959

2898:                                             ; preds = %2834
  %2899 = load ptr, ptr %13, align 8, !tbaa !5
  %2900 = load i64, ptr %36, align 8, !tbaa !9
  %2901 = getelementptr inbounds double, ptr %2899, i64 %2900
  %2902 = load double, ptr %2901, align 8, !tbaa !11
  %2903 = load ptr, ptr %14, align 8, !tbaa !5
  %2904 = load i64, ptr %36, align 8, !tbaa !9
  %2905 = getelementptr inbounds double, ptr %2903, i64 %2904
  %2906 = load double, ptr %2905, align 8, !tbaa !11
  %2907 = fdiv double %2902, %2906
  store double %2907, ptr %42, align 8, !tbaa !11
  %2908 = load double, ptr %42, align 8, !tbaa !11
  %2909 = load double, ptr %42, align 8, !tbaa !11
  %2910 = fmul double %2909, %2908
  store double %2910, ptr %42, align 8, !tbaa !11
  %2911 = load double, ptr %40, align 8, !tbaa !11
  %2912 = load ptr, ptr %14, align 8, !tbaa !5
  %2913 = load i64, ptr %35, align 8, !tbaa !9
  %2914 = getelementptr inbounds double, ptr %2912, i64 %2913
  %2915 = load double, ptr %2914, align 8, !tbaa !11
  %2916 = load double, ptr %38, align 8, !tbaa !11
  %2917 = load double, ptr %37, align 8, !tbaa !11
  %2918 = fadd double %2916, %2917
  %2919 = fneg double %2915
  %2920 = call double @llvm.fmuladd.f64(double %2919, double %2918, double %2911)
  %2921 = load ptr, ptr %12, align 8, !tbaa !5
  %2922 = load i64, ptr %36, align 8, !tbaa !9
  %2923 = getelementptr inbounds double, ptr %2921, i64 %2922
  %2924 = load double, ptr %2923, align 8, !tbaa !11
  %2925 = load ptr, ptr %12, align 8, !tbaa !5
  %2926 = load i64, ptr %35, align 8, !tbaa !9
  %2927 = getelementptr inbounds double, ptr %2925, i64 %2926
  %2928 = load double, ptr %2927, align 8, !tbaa !11
  %2929 = fsub double %2924, %2928
  %2930 = load double, ptr %42, align 8, !tbaa !11
  %2931 = fneg double %2929
  %2932 = call double @llvm.fmuladd.f64(double %2931, double %2930, double %2920)
  store double %2932, ptr %22, align 8, !tbaa !11
  %2933 = load ptr, ptr %14, align 8, !tbaa !5
  %2934 = load i64, ptr %35, align 8, !tbaa !9
  %2935 = getelementptr inbounds double, ptr %2933, i64 %2934
  %2936 = load double, ptr %2935, align 8, !tbaa !11
  %2937 = load ptr, ptr %14, align 8, !tbaa !5
  %2938 = load i64, ptr %35, align 8, !tbaa !9
  %2939 = getelementptr inbounds double, ptr %2937, i64 %2938
  %2940 = load double, ptr %2939, align 8, !tbaa !11
  %2941 = fmul double %2936, %2940
  %2942 = load double, ptr %38, align 8, !tbaa !11
  %2943 = load double, ptr %37, align 8, !tbaa !11
  %2944 = load double, ptr %42, align 8, !tbaa !11
  %2945 = fsub double %2943, %2944
  %2946 = fadd double %2942, %2945
  %2947 = fmul double %2941, %2946
  %2948 = getelementptr inbounds [3 x double], ptr %27, i64 0, i64 0
  store double %2947, ptr %2948, align 16, !tbaa !11
  %2949 = load ptr, ptr %13, align 8, !tbaa !5
  %2950 = load i64, ptr %36, align 8, !tbaa !9
  %2951 = getelementptr inbounds double, ptr %2949, i64 %2950
  %2952 = load double, ptr %2951, align 8, !tbaa !11
  %2953 = load ptr, ptr %13, align 8, !tbaa !5
  %2954 = load i64, ptr %36, align 8, !tbaa !9
  %2955 = getelementptr inbounds double, ptr %2953, i64 %2954
  %2956 = load double, ptr %2955, align 8, !tbaa !11
  %2957 = fmul double %2952, %2956
  %2958 = getelementptr inbounds [3 x double], ptr %27, i64 0, i64 2
  store double %2957, ptr %2958, align 16, !tbaa !11
  br label %2959

2959:                                             ; preds = %2898, %2837
  br label %2960

2960:                                             ; preds = %2959, %2794
  %2961 = load ptr, ptr %14, align 8, !tbaa !5
  %2962 = load i64, ptr %35, align 8, !tbaa !9
  %2963 = getelementptr inbounds double, ptr %2961, i64 %2962
  %2964 = getelementptr inbounds [3 x double], ptr %27, i64 0, i64 0
  %2965 = load ptr, ptr %17, align 8, !tbaa !5
  %2966 = call i32 @dlaed6_(ptr noundef %46, ptr noundef %49, ptr noundef %22, ptr noundef %2963, ptr noundef %2964, ptr noundef %24, ptr noundef %30, ptr noundef %2965)
  %2967 = load ptr, ptr %17, align 8, !tbaa !5
  %2968 = load i64, ptr %2967, align 8, !tbaa !9
  %2969 = icmp ne i64 %2968, 0
  br i1 %2969, label %2970, label %2971

2970:                                             ; preds = %2960
  br label %3220

2971:                                             ; preds = %2960
  br label %2972

2972:                                             ; preds = %2971, %2785
  %2973 = load double, ptr %24, align 8, !tbaa !11
  %2974 = load double, ptr %30, align 8, !tbaa !11
  %2975 = fmul double %2973, %2974
  %2976 = fcmp oge double %2975, 0.000000e+00
  br i1 %2976, label %2977, label %2982

2977:                                             ; preds = %2972
  %2978 = load double, ptr %24, align 8, !tbaa !11
  %2979 = fneg double %2978
  %2980 = load double, ptr %26, align 8, !tbaa !11
  %2981 = fdiv double %2979, %2980
  store double %2981, ptr %30, align 8, !tbaa !11
  br label %2982

2982:                                             ; preds = %2977, %2972
  %2983 = load double, ptr %33, align 8, !tbaa !11
  %2984 = load double, ptr %30, align 8, !tbaa !11
  %2985 = fadd double %2983, %2984
  store double %2985, ptr %40, align 8, !tbaa !11
  %2986 = load double, ptr %40, align 8, !tbaa !11
  %2987 = load double, ptr %44, align 8, !tbaa !11
  %2988 = fcmp ogt double %2986, %2987
  br i1 %2988, label %2993, label %2989

2989:                                             ; preds = %2982
  %2990 = load double, ptr %40, align 8, !tbaa !11
  %2991 = load double, ptr %43, align 8, !tbaa !11
  %2992 = fcmp olt double %2990, %2991
  br i1 %2992, label %2993, label %3007

2993:                                             ; preds = %2989, %2982
  %2994 = load double, ptr %24, align 8, !tbaa !11
  %2995 = fcmp olt double %2994, 0.000000e+00
  br i1 %2995, label %2996, label %3001

2996:                                             ; preds = %2993
  %2997 = load double, ptr %44, align 8, !tbaa !11
  %2998 = load double, ptr %33, align 8, !tbaa !11
  %2999 = fsub double %2997, %2998
  %3000 = fdiv double %2999, 2.000000e+00
  store double %3000, ptr %30, align 8, !tbaa !11
  br label %3006

3001:                                             ; preds = %2993
  %3002 = load double, ptr %43, align 8, !tbaa !11
  %3003 = load double, ptr %33, align 8, !tbaa !11
  %3004 = fsub double %3002, %3003
  %3005 = fdiv double %3004, 2.000000e+00
  store double %3005, ptr %30, align 8, !tbaa !11
  br label %3006

3006:                                             ; preds = %3001, %2996
  br label %3007

3007:                                             ; preds = %3006, %2989
  %3008 = load ptr, ptr %10, align 8, !tbaa !5
  %3009 = load i64, ptr %3008, align 8, !tbaa !9
  store i64 %3009, ptr %18, align 8, !tbaa !9
  store i64 1, ptr %23, align 8, !tbaa !9
  br label %3010

3010:                                             ; preds = %3021, %3007
  %3011 = load i64, ptr %23, align 8, !tbaa !9
  %3012 = load i64, ptr %18, align 8, !tbaa !9
  %3013 = icmp sle i64 %3011, %3012
  br i1 %3013, label %3014, label %3024

3014:                                             ; preds = %3010
  %3015 = load double, ptr %30, align 8, !tbaa !11
  %3016 = load ptr, ptr %14, align 8, !tbaa !5
  %3017 = load i64, ptr %23, align 8, !tbaa !9
  %3018 = getelementptr inbounds double, ptr %3016, i64 %3017
  %3019 = load double, ptr %3018, align 8, !tbaa !11
  %3020 = fsub double %3019, %3015
  store double %3020, ptr %3018, align 8, !tbaa !11
  br label %3021

3021:                                             ; preds = %3014
  %3022 = load i64, ptr %23, align 8, !tbaa !9
  %3023 = add nsw i64 %3022, 1
  store i64 %3023, ptr %23, align 8, !tbaa !9
  br label %3010, !llvm.loop !33

3024:                                             ; preds = %3010
  %3025 = load double, ptr %30, align 8, !tbaa !11
  %3026 = load double, ptr %33, align 8, !tbaa !11
  %3027 = fadd double %3026, %3025
  store double %3027, ptr %33, align 8, !tbaa !11
  %3028 = load double, ptr %24, align 8, !tbaa !11
  store double %3028, ptr %41, align 8, !tbaa !11
  store double 0.000000e+00, ptr %38, align 8, !tbaa !11
  store double 0.000000e+00, ptr %34, align 8, !tbaa !11
  store double 0.000000e+00, ptr %50, align 8, !tbaa !11
  %3029 = load i64, ptr %35, align 8, !tbaa !9
  store i64 %3029, ptr %18, align 8, !tbaa !9
  store i64 1, ptr %23, align 8, !tbaa !9
  br label %3030

3030:                                             ; preds = %3058, %3024
  %3031 = load i64, ptr %23, align 8, !tbaa !9
  %3032 = load i64, ptr %18, align 8, !tbaa !9
  %3033 = icmp sle i64 %3031, %3032
  br i1 %3033, label %3034, label %3061

3034:                                             ; preds = %3030
  %3035 = load ptr, ptr %13, align 8, !tbaa !5
  %3036 = load i64, ptr %23, align 8, !tbaa !9
  %3037 = getelementptr inbounds double, ptr %3035, i64 %3036
  %3038 = load double, ptr %3037, align 8, !tbaa !11
  %3039 = load ptr, ptr %14, align 8, !tbaa !5
  %3040 = load i64, ptr %23, align 8, !tbaa !9
  %3041 = getelementptr inbounds double, ptr %3039, i64 %3040
  %3042 = load double, ptr %3041, align 8, !tbaa !11
  %3043 = fdiv double %3038, %3042
  store double %3043, ptr %40, align 8, !tbaa !11
  %3044 = load ptr, ptr %13, align 8, !tbaa !5
  %3045 = load i64, ptr %23, align 8, !tbaa !9
  %3046 = getelementptr inbounds double, ptr %3044, i64 %3045
  %3047 = load double, ptr %3046, align 8, !tbaa !11
  %3048 = load double, ptr %40, align 8, !tbaa !11
  %3049 = load double, ptr %34, align 8, !tbaa !11
  %3050 = call double @llvm.fmuladd.f64(double %3047, double %3048, double %3049)
  store double %3050, ptr %34, align 8, !tbaa !11
  %3051 = load double, ptr %40, align 8, !tbaa !11
  %3052 = load double, ptr %40, align 8, !tbaa !11
  %3053 = load double, ptr %38, align 8, !tbaa !11
  %3054 = call double @llvm.fmuladd.f64(double %3051, double %3052, double %3053)
  store double %3054, ptr %38, align 8, !tbaa !11
  %3055 = load double, ptr %34, align 8, !tbaa !11
  %3056 = load double, ptr %50, align 8, !tbaa !11
  %3057 = fadd double %3056, %3055
  store double %3057, ptr %50, align 8, !tbaa !11
  br label %3058

3058:                                             ; preds = %3034
  %3059 = load i64, ptr %23, align 8, !tbaa !9
  %3060 = add nsw i64 %3059, 1
  store i64 %3060, ptr %23, align 8, !tbaa !9
  br label %3030, !llvm.loop !34

3061:                                             ; preds = %3030
  %3062 = load double, ptr %50, align 8, !tbaa !11
  %3063 = fcmp oge double %3062, 0.000000e+00
  br i1 %3063, label %3064, label %3066

3064:                                             ; preds = %3061
  %3065 = load double, ptr %50, align 8, !tbaa !11
  br label %3069

3066:                                             ; preds = %3061
  %3067 = load double, ptr %50, align 8, !tbaa !11
  %3068 = fneg double %3067
  br label %3069

3069:                                             ; preds = %3066, %3064
  %3070 = phi double [ %3065, %3064 ], [ %3068, %3066 ]
  store double %3070, ptr %50, align 8, !tbaa !11
  store double 0.000000e+00, ptr %37, align 8, !tbaa !11
  store double 0.000000e+00, ptr %31, align 8, !tbaa !11
  %3071 = load i64, ptr %36, align 8, !tbaa !9
  store i64 %3071, ptr %18, align 8, !tbaa !9
  %3072 = load ptr, ptr %10, align 8, !tbaa !5
  %3073 = load i64, ptr %3072, align 8, !tbaa !9
  store i64 %3073, ptr %23, align 8, !tbaa !9
  br label %3074

3074:                                             ; preds = %3102, %3069
  %3075 = load i64, ptr %23, align 8, !tbaa !9
  %3076 = load i64, ptr %18, align 8, !tbaa !9
  %3077 = icmp sge i64 %3075, %3076
  br i1 %3077, label %3078, label %3105

3078:                                             ; preds = %3074
  %3079 = load ptr, ptr %13, align 8, !tbaa !5
  %3080 = load i64, ptr %23, align 8, !tbaa !9
  %3081 = getelementptr inbounds double, ptr %3079, i64 %3080
  %3082 = load double, ptr %3081, align 8, !tbaa !11
  %3083 = load ptr, ptr %14, align 8, !tbaa !5
  %3084 = load i64, ptr %23, align 8, !tbaa !9
  %3085 = getelementptr inbounds double, ptr %3083, i64 %3084
  %3086 = load double, ptr %3085, align 8, !tbaa !11
  %3087 = fdiv double %3082, %3086
  store double %3087, ptr %40, align 8, !tbaa !11
  %3088 = load ptr, ptr %13, align 8, !tbaa !5
  %3089 = load i64, ptr %23, align 8, !tbaa !9
  %3090 = getelementptr inbounds double, ptr %3088, i64 %3089
  %3091 = load double, ptr %3090, align 8, !tbaa !11
  %3092 = load double, ptr %40, align 8, !tbaa !11
  %3093 = load double, ptr %31, align 8, !tbaa !11
  %3094 = call double @llvm.fmuladd.f64(double %3091, double %3092, double %3093)
  store double %3094, ptr %31, align 8, !tbaa !11
  %3095 = load double, ptr %40, align 8, !tbaa !11
  %3096 = load double, ptr %40, align 8, !tbaa !11
  %3097 = load double, ptr %37, align 8, !tbaa !11
  %3098 = call double @llvm.fmuladd.f64(double %3095, double %3096, double %3097)
  store double %3098, ptr %37, align 8, !tbaa !11
  %3099 = load double, ptr %31, align 8, !tbaa !11
  %3100 = load double, ptr %50, align 8, !tbaa !11
  %3101 = fadd double %3100, %3099
  store double %3101, ptr %50, align 8, !tbaa !11
  br label %3102

3102:                                             ; preds = %3078
  %3103 = load i64, ptr %23, align 8, !tbaa !9
  %3104 = add nsw i64 %3103, -1
  store i64 %3104, ptr %23, align 8, !tbaa !9
  br label %3074, !llvm.loop !35

3105:                                             ; preds = %3074
  %3106 = load ptr, ptr %13, align 8, !tbaa !5
  %3107 = load i64, ptr %25, align 8, !tbaa !9
  %3108 = getelementptr inbounds double, ptr %3106, i64 %3107
  %3109 = load double, ptr %3108, align 8, !tbaa !11
  %3110 = load ptr, ptr %14, align 8, !tbaa !5
  %3111 = load i64, ptr %25, align 8, !tbaa !9
  %3112 = getelementptr inbounds double, ptr %3110, i64 %3111
  %3113 = load double, ptr %3112, align 8, !tbaa !11
  %3114 = fdiv double %3109, %3113
  store double %3114, ptr %40, align 8, !tbaa !11
  %3115 = load double, ptr %38, align 8, !tbaa !11
  %3116 = load double, ptr %37, align 8, !tbaa !11
  %3117 = fadd double %3115, %3116
  %3118 = load double, ptr %40, align 8, !tbaa !11
  %3119 = load double, ptr %40, align 8, !tbaa !11
  %3120 = call double @llvm.fmuladd.f64(double %3118, double %3119, double %3117)
  store double %3120, ptr %26, align 8, !tbaa !11
  %3121 = load ptr, ptr %13, align 8, !tbaa !5
  %3122 = load i64, ptr %25, align 8, !tbaa !9
  %3123 = getelementptr inbounds double, ptr %3121, i64 %3122
  %3124 = load double, ptr %3123, align 8, !tbaa !11
  %3125 = load double, ptr %40, align 8, !tbaa !11
  %3126 = fmul double %3124, %3125
  store double %3126, ptr %40, align 8, !tbaa !11
  %3127 = load double, ptr %51, align 8, !tbaa !11
  %3128 = load double, ptr %31, align 8, !tbaa !11
  %3129 = fadd double %3127, %3128
  %3130 = load double, ptr %34, align 8, !tbaa !11
  %3131 = fadd double %3129, %3130
  %3132 = load double, ptr %40, align 8, !tbaa !11
  %3133 = fadd double %3131, %3132
  store double %3133, ptr %24, align 8, !tbaa !11
  %3134 = load double, ptr %31, align 8, !tbaa !11
  %3135 = load double, ptr %34, align 8, !tbaa !11
  %3136 = fsub double %3134, %3135
  %3137 = load double, ptr %50, align 8, !tbaa !11
  %3138 = call double @llvm.fmuladd.f64(double %3136, double 8.000000e+00, double %3137)
  %3139 = load double, ptr %51, align 8, !tbaa !11
  %3140 = call double @llvm.fmuladd.f64(double %3139, double 2.000000e+00, double %3138)
  %3141 = load double, ptr %40, align 8, !tbaa !11
  %3142 = fcmp oge double %3141, 0.000000e+00
  br i1 %3142, label %3143, label %3145

3143:                                             ; preds = %3105
  %3144 = load double, ptr %40, align 8, !tbaa !11
  br label %3148

3145:                                             ; preds = %3105
  %3146 = load double, ptr %40, align 8, !tbaa !11
  %3147 = fneg double %3146
  br label %3148

3148:                                             ; preds = %3145, %3143
  %3149 = phi double [ %3144, %3143 ], [ %3147, %3145 ]
  %3150 = call double @llvm.fmuladd.f64(double %3149, double 3.000000e+00, double %3140)
  %3151 = load double, ptr %33, align 8, !tbaa !11
  %3152 = fcmp oge double %3151, 0.000000e+00
  br i1 %3152, label %3153, label %3155

3153:                                             ; preds = %3148
  %3154 = load double, ptr %33, align 8, !tbaa !11
  br label %3158

3155:                                             ; preds = %3148
  %3156 = load double, ptr %33, align 8, !tbaa !11
  %3157 = fneg double %3156
  br label %3158

3158:                                             ; preds = %3155, %3153
  %3159 = phi double [ %3154, %3153 ], [ %3157, %3155 ]
  %3160 = load double, ptr %26, align 8, !tbaa !11
  %3161 = call double @llvm.fmuladd.f64(double %3159, double %3160, double %3150)
  store double %3161, ptr %50, align 8, !tbaa !11
  %3162 = load double, ptr %24, align 8, !tbaa !11
  %3163 = load double, ptr %41, align 8, !tbaa !11
  %3164 = fmul double %3162, %3163
  %3165 = fcmp ogt double %3164, 0.000000e+00
  br i1 %3165, label %3166, label %3193

3166:                                             ; preds = %3158
  %3167 = load double, ptr %24, align 8, !tbaa !11
  %3168 = fcmp oge double %3167, 0.000000e+00
  br i1 %3168, label %3169, label %3171

3169:                                             ; preds = %3166
  %3170 = load double, ptr %24, align 8, !tbaa !11
  br label %3174

3171:                                             ; preds = %3166
  %3172 = load double, ptr %24, align 8, !tbaa !11
  %3173 = fneg double %3172
  br label %3174

3174:                                             ; preds = %3171, %3169
  %3175 = phi double [ %3170, %3169 ], [ %3173, %3171 ]
  %3176 = load double, ptr %41, align 8, !tbaa !11
  %3177 = fcmp oge double %3176, 0.000000e+00
  br i1 %3177, label %3178, label %3180

3178:                                             ; preds = %3174
  %3179 = load double, ptr %41, align 8, !tbaa !11
  br label %3183

3180:                                             ; preds = %3174
  %3181 = load double, ptr %41, align 8, !tbaa !11
  %3182 = fneg double %3181
  br label %3183

3183:                                             ; preds = %3180, %3178
  %3184 = phi double [ %3179, %3178 ], [ %3182, %3180 ]
  %3185 = fdiv double %3184, 1.000000e+01
  %3186 = fcmp ogt double %3175, %3185
  br i1 %3186, label %3187, label %3193

3187:                                             ; preds = %3183
  %3188 = load i64, ptr %47, align 8, !tbaa !9
  %3189 = icmp ne i64 %3188, 0
  %3190 = xor i1 %3189, true
  %3191 = zext i1 %3190 to i32
  %3192 = sext i32 %3191 to i64
  store i64 %3192, ptr %47, align 8, !tbaa !9
  br label %3193

3193:                                             ; preds = %3187, %3183, %3158
  br label %3194

3194:                                             ; preds = %3193
  %3195 = load i64, ptr %46, align 8, !tbaa !9
  %3196 = add nsw i64 %3195, 1
  store i64 %3196, ptr %46, align 8, !tbaa !9
  br label %2424, !llvm.loop !36

3197:                                             ; preds = %2424
  %3198 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 1, ptr %3198, align 8, !tbaa !9
  %3199 = load i64, ptr %49, align 8, !tbaa !9
  %3200 = icmp ne i64 %3199, 0
  br i1 %3200, label %3201, label %3210

3201:                                             ; preds = %3197
  %3202 = load ptr, ptr %12, align 8, !tbaa !5
  %3203 = load ptr, ptr %11, align 8, !tbaa !5
  %3204 = load i64, ptr %3203, align 8, !tbaa !9
  %3205 = getelementptr inbounds double, ptr %3202, i64 %3204
  %3206 = load double, ptr %3205, align 8, !tbaa !11
  %3207 = load double, ptr %33, align 8, !tbaa !11
  %3208 = fadd double %3206, %3207
  %3209 = load ptr, ptr %16, align 8, !tbaa !5
  store double %3208, ptr %3209, align 8, !tbaa !11
  br label %3218

3210:                                             ; preds = %3197
  %3211 = load ptr, ptr %12, align 8, !tbaa !5
  %3212 = load i64, ptr %28, align 8, !tbaa !9
  %3213 = getelementptr inbounds double, ptr %3211, i64 %3212
  %3214 = load double, ptr %3213, align 8, !tbaa !11
  %3215 = load double, ptr %33, align 8, !tbaa !11
  %3216 = fadd double %3214, %3215
  %3217 = load ptr, ptr %16, align 8, !tbaa !5
  store double %3216, ptr %3217, align 8, !tbaa !11
  br label %3218

3218:                                             ; preds = %3210, %3201
  br label %3219

3219:                                             ; preds = %3218
  br label %3220

3220:                                             ; preds = %3219, %2970, %2461, %2192, %1787, %1198, %900, %562
  store i32 0, ptr %9, align 4
  store i32 1, ptr %52, align 4
  br label %3221

3221:                                             ; preds = %3220, %84, %63
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  %3222 = load i32, ptr %9, align 4
  ret i32 %3222
}

; 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 i32 @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 i32 @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 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}
!31 = distinct !{!31, !14}
!32 = distinct !{!32, !14}
!33 = distinct !{!33, !14}
!34 = distinct !{!34, !14}
!35 = distinct !{!35, !14}
!36 = distinct !{!36, !14}


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

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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @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 [3 x double], align 16
  %12 = alloca double, align 8
  %13 = alloca i64, align 8
  %14 = alloca i64, 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 24, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 8, 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 i64 0, ptr %7, align 8, !tbaa !5
  %18 = load i64, ptr %0, align 8, !tbaa !5
  switch i64 %18, label %27 [
    i64 1, label %19
    i64 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
  %26 = tail call i32 @dlaed5_(ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6) #6
  br label %.loopexit

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

34:                                               ; preds = %27
  %35 = add i64 %31, -1
  %36 = fmul double %29, 5.000000e-01
  %.not13151449 = icmp slt i64 %31, 1
  br i1 %.not13151449, label %._crit_edge1459, label %.lr.ph1452

.lr.ph1452:                                       ; preds = %34
  %37 = getelementptr inbounds double, ptr %17, i64 %31
  %min.iters.check1804 = icmp ult i64 %31, 10
  br i1 %min.iters.check1804, label %scalar.ph1803.preheader, label %vector.memcheck1792

vector.memcheck1792:                              ; preds = %.lr.ph1452
  %38 = shl i64 %31, 3
  %scevgep1793 = getelementptr i8, ptr %4, i64 %38
  %scevgep1794 = getelementptr i8, ptr %2, i64 %38
  %bound01795 = icmp ugt ptr %scevgep1794, %4
  %bound11796 = icmp ult ptr %37, %scevgep1793
  %found.conflict1797 = and i1 %bound01795, %bound11796
  %bound01798 = icmp ugt ptr %scevgep1794, %4
  %bound11799 = icmp ugt ptr %scevgep1793, %2
  %found.conflict1800 = and i1 %bound01798, %bound11799
  %conflict.rdx1801 = or i1 %found.conflict1797, %found.conflict1800
  br i1 %conflict.rdx1801, label %scalar.ph1803.preheader, label %vector.ph1805

vector.ph1805:                                    ; preds = %vector.memcheck1792
  %n.vec1807 = and i64 %31, 9223372036854775804
  %ind.end1808 = or disjoint i64 %n.vec1807, 1
  %broadcast.splatinsert1819 = insertelement <2 x double> poison, double %36, i64 0
  %broadcast.splat1820 = shufflevector <2 x double> %broadcast.splatinsert1819, <2 x double> poison, <2 x i32> zeroinitializer
  %39 = load double, ptr %37, align 8, !tbaa !9, !alias.scope !11
  %broadcast.splatinsert1817 = insertelement <2 x double> poison, double %39, i64 0
  %broadcast.splat1818 = shufflevector <2 x double> %broadcast.splatinsert1817, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1810

vector.body1810:                                  ; preds = %vector.body1810, %vector.ph1805
  %index1811 = phi i64 [ 0, %vector.ph1805 ], [ %index.next1821, %vector.body1810 ]
  %40 = getelementptr double, ptr %2, i64 %index1811
  %41 = getelementptr inbounds i8, ptr %40, i64 16
  %wide.load1813 = load <2 x double>, ptr %40, align 8, !tbaa !9, !alias.scope !14
  %wide.load1814 = load <2 x double>, ptr %41, align 8, !tbaa !9, !alias.scope !14
  %42 = fsub <2 x double> %wide.load1813, %broadcast.splat1818
  %43 = fsub <2 x double> %wide.load1814, %broadcast.splat1818
  %44 = fsub <2 x double> %42, %broadcast.splat1820
  %45 = fsub <2 x double> %43, %broadcast.splat1820
  %46 = getelementptr double, ptr %4, i64 %index1811
  %47 = getelementptr inbounds i8, ptr %46, i64 16
  store <2 x double> %44, ptr %46, align 8, !tbaa !9, !alias.scope !16, !noalias !18
  store <2 x double> %45, ptr %47, align 8, !tbaa !9, !alias.scope !16, !noalias !18
  %index.next1821 = add nuw i64 %index1811, 4
  %48 = icmp eq i64 %index.next1821, %n.vec1807
  br i1 %48, label %middle.block1802, label %vector.body1810, !llvm.loop !19

middle.block1802:                                 ; preds = %vector.body1810
  %cmp.n1822 = icmp eq i64 %31, %n.vec1807
  br i1 %cmp.n1822, label %._crit_edge1453, label %scalar.ph1803.preheader

scalar.ph1803.preheader:                          ; preds = %middle.block1802, %vector.memcheck1792, %.lr.ph1452
  %.012381450.ph = phi i64 [ 1, %vector.memcheck1792 ], [ 1, %.lr.ph1452 ], [ %ind.end1808, %middle.block1802 ]
  %xtraiter1973 = and i64 %31, 1
  %lcmp.mod1974.not = icmp eq i64 %xtraiter1973, 0
  br i1 %lcmp.mod1974.not, label %scalar.ph1803.prol.loopexit, label %scalar.ph1803.prol

scalar.ph1803.prol:                               ; preds = %scalar.ph1803.preheader
  %49 = getelementptr inbounds double, ptr %17, i64 %.012381450.ph
  %50 = load double, ptr %49, align 8, !tbaa !9
  %51 = load double, ptr %37, align 8, !tbaa !9
  %52 = fsub double %50, %51
  %53 = fsub double %52, %36
  %54 = getelementptr inbounds double, ptr %15, i64 %.012381450.ph
  store double %53, ptr %54, align 8, !tbaa !9
  %55 = add nuw i64 %.012381450.ph, 1
  br label %scalar.ph1803.prol.loopexit

scalar.ph1803.prol.loopexit:                      ; preds = %scalar.ph1803.prol, %scalar.ph1803.preheader
  %.012381450.unr = phi i64 [ %.012381450.ph, %scalar.ph1803.preheader ], [ %55, %scalar.ph1803.prol ]
  %56 = icmp eq i64 %31, %.012381450.ph
  br i1 %56, label %._crit_edge1453, label %scalar.ph1803

scalar.ph1803:                                    ; preds = %scalar.ph1803.prol.loopexit, %scalar.ph1803
  %.012381450 = phi i64 [ %70, %scalar.ph1803 ], [ %.012381450.unr, %scalar.ph1803.prol.loopexit ]
  %57 = getelementptr inbounds double, ptr %17, i64 %.012381450
  %58 = load double, ptr %57, align 8, !tbaa !9
  %59 = load double, ptr %37, align 8, !tbaa !9
  %60 = fsub double %58, %59
  %61 = fsub double %60, %36
  %62 = getelementptr inbounds double, ptr %15, i64 %.012381450
  store double %61, ptr %62, align 8, !tbaa !9
  %63 = add nuw i64 %.012381450, 1
  %64 = getelementptr double, ptr %2, i64 %.012381450
  %65 = load double, ptr %64, align 8, !tbaa !9
  %66 = load double, ptr %37, align 8, !tbaa !9
  %67 = fsub double %65, %66
  %68 = fsub double %67, %36
  %69 = getelementptr double, ptr %4, i64 %.012381450
  store double %68, ptr %69, align 8, !tbaa !9
  %70 = add nuw i64 %.012381450, 2
  %exitcond1577.not.1 = icmp eq i64 %63, %31
  br i1 %exitcond1577.not.1, label %._crit_edge1453, label %scalar.ph1803, !llvm.loop !23

._crit_edge1453:                                  ; preds = %scalar.ph1803.prol.loopexit, %scalar.ph1803, %middle.block1802
  %.not13161454 = icmp slt i64 %31, 3
  br i1 %.not13161454, label %._crit_edge1459, label %.lr.ph1458.preheader

.lr.ph1458.preheader:                             ; preds = %._crit_edge1453
  %71 = add nsw i64 %31, -2
  %72 = add nsw i64 %31, -3
  %xtraiter1976 = and i64 %71, 3
  %73 = icmp ult i64 %72, 3
  br i1 %73, label %._crit_edge1459.loopexit.unr-lcssa, label %.lr.ph1458.preheader.new

.lr.ph1458.preheader.new:                         ; preds = %.lr.ph1458.preheader
  %unroll_iter1980 = and i64 %71, -4
  br label %.lr.ph1458

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

._crit_edge1459.loopexit.unr-lcssa:               ; preds = %.lr.ph1458, %.lr.ph1458.preheader
  %.lcssa1898.ph = phi double [ poison, %.lr.ph1458.preheader ], [ %103, %.lr.ph1458 ]
  %.012141456.unr = phi double [ 0.000000e+00, %.lr.ph1458.preheader ], [ %103, %.lr.ph1458 ]
  %.112391455.unr = phi i64 [ 1, %.lr.ph1458.preheader ], [ %104, %.lr.ph1458 ]
  %lcmp.mod1978.not = icmp eq i64 %xtraiter1976, 0
  br i1 %lcmp.mod1978.not, label %._crit_edge1459, label %.lr.ph1458.epil

.lr.ph1458.epil:                                  ; preds = %._crit_edge1459.loopexit.unr-lcssa, %.lr.ph1458.epil
  %.012141456.epil = phi double [ %111, %.lr.ph1458.epil ], [ %.012141456.unr, %._crit_edge1459.loopexit.unr-lcssa ]
  %.112391455.epil = phi i64 [ %112, %.lr.ph1458.epil ], [ %.112391455.unr, %._crit_edge1459.loopexit.unr-lcssa ]
  %epil.iter1977 = phi i64 [ %epil.iter1977.next, %.lr.ph1458.epil ], [ 0, %._crit_edge1459.loopexit.unr-lcssa ]
  %105 = getelementptr inbounds double, ptr %16, i64 %.112391455.epil
  %106 = load double, ptr %105, align 8, !tbaa !9
  %107 = fmul double %106, %106
  %108 = getelementptr inbounds double, ptr %15, i64 %.112391455.epil
  %109 = load double, ptr %108, align 8, !tbaa !9
  %110 = fdiv double %107, %109
  %111 = fadd double %.012141456.epil, %110
  %112 = add nuw i64 %.112391455.epil, 1
  %epil.iter1977.next = add i64 %epil.iter1977, 1
  %epil.iter1977.cmp.not = icmp eq i64 %epil.iter1977.next, %xtraiter1976
  br i1 %epil.iter1977.cmp.not, label %._crit_edge1459, label %.lr.ph1458.epil, !llvm.loop !25

._crit_edge1459:                                  ; preds = %._crit_edge1459.loopexit.unr-lcssa, %.lr.ph1458.epil, %34, %._crit_edge1453
  %.01214.lcssa = phi double [ 0.000000e+00, %._crit_edge1453 ], [ 0.000000e+00, %34 ], [ %.lcssa1898.ph, %._crit_edge1459.loopexit.unr-lcssa ], [ %111, %.lr.ph1458.epil ]
  %113 = fadd double %30, %.01214.lcssa
  %114 = getelementptr inbounds double, ptr %16, i64 %35
  %115 = getelementptr inbounds double, ptr %15, i64 %35
  %116 = load <2 x double>, ptr %114, align 8, !tbaa !9
  %117 = fmul <2 x double> %116, %116
  %118 = load <2 x double>, ptr %115, align 8, !tbaa !9
  %119 = fdiv <2 x double> %117, %118
  %120 = extractelement <2 x double> %119, i64 0
  %121 = fadd double %113, %120
  %122 = extractelement <2 x double> %119, i64 1
  %123 = fadd double %121, %122
  %124 = fcmp ugt double %123, 0.000000e+00
  %125 = getelementptr inbounds double, ptr %17, i64 %31
  %126 = load double, ptr %125, align 8, !tbaa !9
  %127 = getelementptr inbounds double, ptr %17, i64 %35
  %128 = load double, ptr %127, align 8, !tbaa !9
  %129 = fsub double %126, %128
  br i1 %124, label %166, label %130

130:                                              ; preds = %._crit_edge1459
  %131 = load double, ptr %5, align 8, !tbaa !9
  %132 = fadd double %129, %131
  %133 = insertelement <2 x double> poison, double %132, i64 0
  %134 = insertelement <2 x double> %133, double %131, i64 1
  %135 = fdiv <2 x double> %117, %134
  %shift = shufflevector <2 x double> %135, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %136 = fadd <2 x double> %shift, %135
  %137 = extractelement <2 x double> %136, i64 0
  %138 = fcmp ugt double %113, %137
  br i1 %138, label %139, label %164

139:                                              ; preds = %130
  %140 = fneg double %113
  %141 = extractelement <2 x double> %117, i64 0
  %142 = tail call double @llvm.fmuladd.f64(double %140, double %129, double %141)
  %143 = extractelement <2 x double> %116, i64 1
  %144 = tail call double @llvm.fmuladd.f64(double %143, double %143, double %142)
  %145 = extractelement <2 x double> %117, i64 1
  %146 = fmul double %145, %129
  %147 = fcmp olt double %144, 0.000000e+00
  br i1 %147, label %148, label %156

148:                                              ; preds = %139
  %149 = fmul double %146, 2.000000e+00
  %150 = fmul double %146, 4.000000e+00
  %151 = fmul double %113, %150
  %152 = tail call double @llvm.fmuladd.f64(double %144, double %144, double %151)
  %153 = tail call double @sqrt(double noundef %152) #6
  %154 = fsub double %153, %144
  %155 = fdiv double %149, %154
  br label %164

156:                                              ; preds = %139
  %157 = fmul double %146, 4.000000e+00
  %158 = fmul double %113, %157
  %159 = tail call double @llvm.fmuladd.f64(double %144, double %144, double %158)
  %160 = tail call double @sqrt(double noundef %159) #6
  %161 = fadd double %144, %160
  %162 = fmul double %113, 2.000000e+00
  %163 = fdiv double %161, %162
  br label %164

164:                                              ; preds = %130, %148, %156
  %.01223 = phi double [ %155, %148 ], [ %163, %156 ], [ %131, %130 ]
  %165 = load double, ptr %5, align 8, !tbaa !9
  br label %191

166:                                              ; preds = %._crit_edge1459
  %167 = fneg double %113
  %168 = extractelement <2 x double> %117, i64 0
  %169 = tail call double @llvm.fmuladd.f64(double %167, double %129, double %168)
  %170 = extractelement <2 x double> %116, i64 1
  %171 = tail call double @llvm.fmuladd.f64(double %170, double %170, double %169)
  %172 = extractelement <2 x double> %117, i64 1
  %173 = fmul double %172, %129
  %174 = fcmp olt double %171, 0.000000e+00
  br i1 %174, label %175, label %183

175:                                              ; preds = %166
  %176 = fmul double %173, 2.000000e+00
  %177 = fmul double %173, 4.000000e+00
  %178 = fmul double %113, %177
  %179 = tail call double @llvm.fmuladd.f64(double %171, double %171, double %178)
  %180 = tail call double @sqrt(double noundef %179) #6
  %181 = fsub double %180, %171
  %182 = fdiv double %176, %181
  br label %191

183:                                              ; preds = %166
  %184 = fmul double %173, 4.000000e+00
  %185 = fmul double %113, %184
  %186 = tail call double @llvm.fmuladd.f64(double %171, double %171, double %185)
  %187 = tail call double @sqrt(double noundef %186) #6
  %188 = fadd double %171, %187
  %189 = fmul double %113, 2.000000e+00
  %190 = fdiv double %188, %189
  br label %191

191:                                              ; preds = %175, %183, %164
  %.21225 = phi double [ %.01223, %164 ], [ %182, %175 ], [ %190, %183 ]
  %.01189 = phi double [ %36, %164 ], [ 0.000000e+00, %175 ], [ 0.000000e+00, %183 ]
  %.01181 = phi double [ %165, %164 ], [ %36, %175 ], [ %36, %183 ]
  %192 = load i64, ptr %0, align 8, !tbaa !5
  %.not13171461 = icmp slt i64 %192, 1
  br i1 %.not13171461, label %.preheader, label %.lr.ph1464

.lr.ph1464:                                       ; preds = %191
  %193 = load i64, ptr %1, align 8, !tbaa !5
  %194 = getelementptr inbounds double, ptr %17, i64 %193
  %min.iters.check1836 = icmp ult i64 %192, 10
  br i1 %min.iters.check1836, label %scalar.ph1835.preheader, label %vector.memcheck1823

scalar.ph1835.preheader:                          ; preds = %middle.block1834, %vector.memcheck1823, %.lr.ph1464
  %.212401462.ph = phi i64 [ 1, %vector.memcheck1823 ], [ 1, %.lr.ph1464 ], [ %ind.end1840, %middle.block1834 ]
  %xtraiter1982 = and i64 %192, 1
  %lcmp.mod1983.not = icmp eq i64 %xtraiter1982, 0
  br i1 %lcmp.mod1983.not, label %scalar.ph1835.prol.loopexit, label %scalar.ph1835.prol

scalar.ph1835.prol:                               ; preds = %scalar.ph1835.preheader
  %195 = getelementptr inbounds double, ptr %17, i64 %.212401462.ph
  %196 = load double, ptr %195, align 8, !tbaa !9
  %197 = load double, ptr %194, align 8, !tbaa !9
  %198 = fsub double %196, %197
  %199 = fsub double %198, %.21225
  %200 = getelementptr inbounds double, ptr %15, i64 %.212401462.ph
  store double %199, ptr %200, align 8, !tbaa !9
  %201 = add nuw i64 %.212401462.ph, 1
  br label %scalar.ph1835.prol.loopexit

scalar.ph1835.prol.loopexit:                      ; preds = %scalar.ph1835.prol, %scalar.ph1835.preheader
  %.212401462.unr = phi i64 [ %.212401462.ph, %scalar.ph1835.preheader ], [ %201, %scalar.ph1835.prol ]
  %202 = icmp eq i64 %192, %.212401462.ph
  br i1 %202, label %.preheader, label %scalar.ph1835

vector.memcheck1823:                              ; preds = %.lr.ph1464
  %203 = shl i64 %192, 3
  %scevgep1824 = getelementptr i8, ptr %4, i64 %203
  %204 = shl nsw i64 %193, 3
  %scevgep1825 = getelementptr i8, ptr %2, i64 %204
  %scevgep1826 = getelementptr i8, ptr %2, i64 %203
  %bound01827 = icmp ugt ptr %scevgep1825, %4
  %bound11828 = icmp ult ptr %194, %scevgep1824
  %found.conflict1829 = and i1 %bound01827, %bound11828
  %bound01830 = icmp ugt ptr %scevgep1826, %4
  %bound11831 = icmp ugt ptr %scevgep1824, %2
  %found.conflict1832 = and i1 %bound01830, %bound11831
  %conflict.rdx1833 = or i1 %found.conflict1829, %found.conflict1832
  br i1 %conflict.rdx1833, label %scalar.ph1835.preheader, label %vector.ph1837

vector.ph1837:                                    ; preds = %vector.memcheck1823
  %n.vec1839 = and i64 %192, 9223372036854775804
  %ind.end1840 = or disjoint i64 %n.vec1839, 1
  %broadcast.splatinsert1851 = insertelement <2 x double> poison, double %.21225, i64 0
  %broadcast.splat1852 = shufflevector <2 x double> %broadcast.splatinsert1851, <2 x double> poison, <2 x i32> zeroinitializer
  %205 = load double, ptr %194, align 8, !tbaa !9, !alias.scope !27
  %broadcast.splatinsert1849 = insertelement <2 x double> poison, double %205, i64 0
  %broadcast.splat1850 = shufflevector <2 x double> %broadcast.splatinsert1849, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1842

vector.body1842:                                  ; preds = %vector.body1842, %vector.ph1837
  %index1843 = phi i64 [ 0, %vector.ph1837 ], [ %index.next1853, %vector.body1842 ]
  %206 = getelementptr double, ptr %2, i64 %index1843
  %207 = getelementptr inbounds i8, ptr %206, i64 16
  %wide.load1845 = load <2 x double>, ptr %206, align 8, !tbaa !9, !alias.scope !30
  %wide.load1846 = load <2 x double>, ptr %207, align 8, !tbaa !9, !alias.scope !30
  %208 = fsub <2 x double> %wide.load1845, %broadcast.splat1850
  %209 = fsub <2 x double> %wide.load1846, %broadcast.splat1850
  %210 = fsub <2 x double> %208, %broadcast.splat1852
  %211 = fsub <2 x double> %209, %broadcast.splat1852
  %212 = getelementptr double, ptr %4, i64 %index1843
  %213 = getelementptr inbounds i8, ptr %212, i64 16
  store <2 x double> %210, ptr %212, align 8, !tbaa !9, !alias.scope !32, !noalias !34
  store <2 x double> %211, ptr %213, align 8, !tbaa !9, !alias.scope !32, !noalias !34
  %index.next1853 = add nuw i64 %index1843, 4
  %214 = icmp eq i64 %index.next1853, %n.vec1839
  br i1 %214, label %middle.block1834, label %vector.body1842, !llvm.loop !35

middle.block1834:                                 ; preds = %vector.body1842
  %cmp.n1854 = icmp eq i64 %192, %n.vec1839
  br i1 %cmp.n1854, label %.preheader, label %scalar.ph1835.preheader

.preheader:                                       ; preds = %scalar.ph1835.prol.loopexit, %scalar.ph1835, %middle.block1834, %191
  %.not1318.not1465 = icmp sgt i64 %31, 1
  br i1 %.not1318.not1465, label %.lr.ph1470.preheader, label %._crit_edge1471

.lr.ph1470.preheader:                             ; preds = %.preheader
  %xtraiter1985 = and i64 %35, 1
  %215 = icmp eq i64 %31, 2
  br i1 %215, label %._crit_edge1471.loopexit.unr-lcssa, label %.lr.ph1470.preheader.new

.lr.ph1470.preheader.new:                         ; preds = %.lr.ph1470.preheader
  %unroll_iter1991 = and i64 %35, -2
  br label %.lr.ph1470

scalar.ph1835:                                    ; preds = %scalar.ph1835.prol.loopexit, %scalar.ph1835
  %.212401462 = phi i64 [ %229, %scalar.ph1835 ], [ %.212401462.unr, %scalar.ph1835.prol.loopexit ]
  %216 = getelementptr inbounds double, ptr %17, i64 %.212401462
  %217 = load double, ptr %216, align 8, !tbaa !9
  %218 = load double, ptr %194, align 8, !tbaa !9
  %219 = fsub double %217, %218
  %220 = fsub double %219, %.21225
  %221 = getelementptr inbounds double, ptr %15, i64 %.212401462
  store double %220, ptr %221, align 8, !tbaa !9
  %222 = add nuw i64 %.212401462, 1
  %223 = getelementptr double, ptr %2, i64 %.212401462
  %224 = load double, ptr %223, align 8, !tbaa !9
  %225 = load double, ptr %194, align 8, !tbaa !9
  %226 = fsub double %224, %225
  %227 = fsub double %226, %.21225
  %228 = getelementptr double, ptr %4, i64 %.212401462
  store double %227, ptr %228, align 8, !tbaa !9
  %229 = add nuw i64 %.212401462, 2
  %exitcond1579.not.1 = icmp eq i64 %222, %192
  br i1 %exitcond1579.not.1, label %.preheader, label %scalar.ph1835, !llvm.loop !36

.lr.ph1470:                                       ; preds = %.lr.ph1470, %.lr.ph1470.preheader.new
  %.011751469 = phi double [ 0.000000e+00, %.lr.ph1470.preheader.new ], [ %252, %.lr.ph1470 ]
  %.312411466 = phi i64 [ 1, %.lr.ph1470.preheader.new ], [ %253, %.lr.ph1470 ]
  %230 = phi <2 x double> [ zeroinitializer, %.lr.ph1470.preheader.new ], [ %250, %.lr.ph1470 ]
  %niter1992 = phi i64 [ 0, %.lr.ph1470.preheader.new ], [ %niter1992.next.1, %.lr.ph1470 ]
  %231 = getelementptr inbounds double, ptr %16, i64 %.312411466
  %232 = load double, ptr %231, align 8, !tbaa !9
  %233 = getelementptr inbounds double, ptr %15, i64 %.312411466
  %234 = load double, ptr %233, align 8, !tbaa !9
  %235 = fdiv double %232, %234
  %236 = insertelement <2 x double> poison, double %232, i64 0
  %237 = insertelement <2 x double> %236, double %235, i64 1
  %238 = shufflevector <2 x double> %237, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %239 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %237, <2 x double> %238, <2 x double> %230)
  %240 = extractelement <2 x double> %239, i64 0
  %241 = fadd double %.011751469, %240
  %242 = getelementptr double, ptr %3, i64 %.312411466
  %243 = load double, ptr %242, align 8, !tbaa !9
  %244 = getelementptr double, ptr %4, i64 %.312411466
  %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> %239)
  %251 = extractelement <2 x double> %250, i64 0
  %252 = fadd double %241, %251
  %253 = add nuw nsw i64 %.312411466, 2
  %niter1992.next.1 = add i64 %niter1992, 2
  %niter1992.ncmp.1 = icmp eq i64 %niter1992.next.1, %unroll_iter1991
  br i1 %niter1992.ncmp.1, label %._crit_edge1471.loopexit.unr-lcssa, label %.lr.ph1470, !llvm.loop !37

._crit_edge1471.loopexit.unr-lcssa:               ; preds = %.lr.ph1470, %.lr.ph1470.preheader
  %.lcssa1897.ph = phi <2 x double> [ poison, %.lr.ph1470.preheader ], [ %250, %.lr.ph1470 ]
  %.lcssa1896.ph = phi double [ poison, %.lr.ph1470.preheader ], [ %252, %.lr.ph1470 ]
  %.011751469.unr = phi double [ 0.000000e+00, %.lr.ph1470.preheader ], [ %252, %.lr.ph1470 ]
  %.312411466.unr = phi i64 [ 1, %.lr.ph1470.preheader ], [ %253, %.lr.ph1470 ]
  %.unr1987 = phi <2 x double> [ zeroinitializer, %.lr.ph1470.preheader ], [ %250, %.lr.ph1470 ]
  %lcmp.mod1988.not = icmp eq i64 %xtraiter1985, 0
  br i1 %lcmp.mod1988.not, label %._crit_edge1471, label %.lr.ph1470.epil

.lr.ph1470.epil:                                  ; preds = %._crit_edge1471.loopexit.unr-lcssa
  %254 = getelementptr inbounds double, ptr %16, i64 %.312411466.unr
  %255 = load double, ptr %254, align 8, !tbaa !9
  %256 = getelementptr inbounds double, ptr %15, i64 %.312411466.unr
  %257 = load double, ptr %256, align 8, !tbaa !9
  %258 = fdiv double %255, %257
  %259 = insertelement <2 x double> poison, double %255, i64 0
  %260 = insertelement <2 x double> %259, double %258, i64 1
  %261 = shufflevector <2 x double> %260, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %262 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %260, <2 x double> %261, <2 x double> %.unr1987)
  %263 = extractelement <2 x double> %262, i64 0
  %264 = fadd double %.011751469.unr, %263
  br label %._crit_edge1471

._crit_edge1471:                                  ; preds = %.lr.ph1470.epil, %._crit_edge1471.loopexit.unr-lcssa, %.preheader
  %.01175.lcssa = phi double [ 0.000000e+00, %.preheader ], [ %.lcssa1896.ph, %._crit_edge1471.loopexit.unr-lcssa ], [ %264, %.lr.ph1470.epil ]
  %265 = phi <2 x double> [ zeroinitializer, %.preheader ], [ %.lcssa1897.ph, %._crit_edge1471.loopexit.unr-lcssa ], [ %262, %.lr.ph1470.epil ]
  %266 = fcmp oge double %.01175.lcssa, 0.000000e+00
  %267 = fneg double %.01175.lcssa
  %268 = select i1 %266, double %.01175.lcssa, double %267
  %269 = getelementptr inbounds double, ptr %16, i64 %192
  %270 = load double, ptr %269, align 8, !tbaa !9
  %271 = getelementptr inbounds double, ptr %15, i64 %192
  %272 = load double, ptr %271, align 8, !tbaa !9
  %273 = fdiv double %270, %272
  %274 = fmul double %270, %273
  %275 = fmul double %273, %273
  %276 = fneg double %274
  %277 = extractelement <2 x double> %265, i64 0
  %278 = fsub double %276, %277
  %279 = tail call double @llvm.fmuladd.f64(double %278, double 8.000000e+00, double %268)
  %280 = fsub double %279, %274
  %281 = fadd double %30, %280
  %282 = fcmp oge double %.21225, 0.000000e+00
  %283 = fneg double %.21225
  %284 = select i1 %282, double %.21225, double %283
  %285 = extractelement <2 x double> %265, i64 1
  %286 = fadd double %285, %275
  %287 = tail call double @llvm.fmuladd.f64(double %284, double %286, double %281)
  %288 = fadd double %30, %274
  %289 = fadd double %277, %288
  %290 = fcmp oge double %289, 0.000000e+00
  %291 = fneg double %289
  %292 = select i1 %290, double %289, double %291
  %293 = fmul double %28, %287
  %294 = fcmp ugt double %292, %293
  br i1 %294, label %300, label %295

295:                                              ; preds = %._crit_edge1471
  %296 = load i64, ptr %1, align 8, !tbaa !5
  %297 = getelementptr inbounds double, ptr %17, i64 %296
  %298 = load double, ptr %297, align 8, !tbaa !9
  %299 = fadd double %.21225, %298
  store double %299, ptr %6, align 8, !tbaa !9
  br label %.loopexit

300:                                              ; preds = %._crit_edge1471
  %301 = fcmp ugt double %289, 0.000000e+00
  br i1 %301, label %305, label %302

302:                                              ; preds = %300
  %303 = fcmp oge double %.01189, %.21225
  %304 = select i1 %303, double %.01189, double %.21225
  br label %thread-pre-split

305:                                              ; preds = %300
  %306 = fcmp ole double %.01181, %.21225
  %307 = select i1 %306, double %.01181, double %.21225
  br label %thread-pre-split

thread-pre-split:                                 ; preds = %305, %302
  %.11190 = phi double [ %304, %302 ], [ %.01189, %305 ]
  %.11182 = phi double [ %.01181, %302 ], [ %307, %305 ]
  %308 = getelementptr i8, ptr %271, i64 -8
  %309 = load double, ptr %308, align 8, !tbaa !9
  %310 = fneg double %309
  %311 = tail call double @llvm.fmuladd.f64(double %310, double %285, double %289)
  %312 = fneg double %272
  %313 = tail call double @llvm.fmuladd.f64(double %312, double %275, double %311)
  %314 = fadd double %272, %309
  %315 = fmul double %272, %309
  %316 = fneg double %315
  %317 = fmul double %286, %316
  %318 = tail call double @llvm.fmuladd.f64(double %314, double %289, double %317)
  %319 = fmul double %289, %315
  %320 = fcmp olt double %313, 0.000000e+00
  %321 = fneg double %313
  %322 = select i1 %320, double %321, double %313
  %323 = fcmp oeq double %313, 0.000000e+00
  br i1 %323, label %324, label %326

324:                                              ; preds = %thread-pre-split
  %325 = fsub double %.11182, %.21225
  br label %350

326:                                              ; preds = %thread-pre-split
  %327 = fcmp ult double %318, 0.000000e+00
  br i1 %327, label %339, label %328

328:                                              ; preds = %326
  %329 = fmul double %319, -4.000000e+00
  %330 = fmul double %329, %322
  %331 = tail call double @llvm.fmuladd.f64(double %318, double %318, double %330)
  %332 = fcmp oge double %331, 0.000000e+00
  %333 = fneg double %331
  %334 = select i1 %332, double %331, double %333
  %335 = tail call double @sqrt(double noundef %334) #6
  %336 = fadd double %318, %335
  %337 = fmul double %322, 2.000000e+00
  %338 = fdiv double %336, %337
  br label %350

339:                                              ; preds = %326
  %340 = fmul double %319, 2.000000e+00
  %341 = fmul double %319, -4.000000e+00
  %342 = fmul double %341, %322
  %343 = tail call double @llvm.fmuladd.f64(double %318, double %318, double %342)
  %344 = fcmp oge double %343, 0.000000e+00
  %345 = fneg double %343
  %346 = select i1 %344, double %343, double %345
  %347 = tail call double @sqrt(double noundef %346) #6
  %348 = fsub double %318, %347
  %349 = fdiv double %340, %348
  br label %350

350:                                              ; preds = %328, %339, %324
  %351 = phi double [ %338, %328 ], [ %349, %339 ], [ %325, %324 ]
  %352 = fmul double %289, %351
  %353 = fcmp ogt double %352, 0.000000e+00
  %354 = fdiv double %291, %286
  %355 = select i1 %353, double %354, double %351
  %356 = fadd double %.21225, %355
  %357 = fcmp ogt double %356, %.11182
  %358 = fcmp olt double %356, %.11190
  %or.cond = select i1 %357, i1 true, i1 %358
  br i1 %or.cond, label %359, label %367

359:                                              ; preds = %350
  %360 = fcmp olt double %289, 0.000000e+00
  br i1 %360, label %361, label %364

361:                                              ; preds = %359
  %362 = fsub double %.11182, %.21225
  %363 = fmul double %362, 5.000000e-01
  br label %367

364:                                              ; preds = %359
  %365 = fsub double %.11190, %.21225
  %366 = fmul double %365, 5.000000e-01
  br label %367

367:                                              ; preds = %350, %361, %364
  %368 = phi double [ %355, %350 ], [ %363, %361 ], [ %366, %364 ]
  %369 = load i64, ptr %0, align 8, !tbaa !5
  %.not13191475 = icmp slt i64 %369, 1
  br i1 %.not13191475, label %._crit_edge1479, label %.lr.ph1478.preheader

.lr.ph1478.preheader:                             ; preds = %367
  %min.iters.check1857 = icmp ult i64 %369, 4
  br i1 %min.iters.check1857, label %.lr.ph1478.preheader1895, label %vector.ph1858

vector.ph1858:                                    ; preds = %.lr.ph1478.preheader
  %n.vec1860 = and i64 %369, 9223372036854775804
  %ind.end1861 = or disjoint i64 %n.vec1860, 1
  %broadcast.splatinsert1868 = insertelement <2 x double> poison, double %368, i64 0
  %broadcast.splat1869 = shufflevector <2 x double> %broadcast.splatinsert1868, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1863

vector.body1863:                                  ; preds = %vector.body1863, %vector.ph1858
  %index1864 = phi i64 [ 0, %vector.ph1858 ], [ %index.next1870, %vector.body1863 ]
  %370 = getelementptr double, ptr %4, i64 %index1864
  %371 = getelementptr inbounds i8, ptr %370, i64 16
  %wide.load1866 = load <2 x double>, ptr %370, align 8, !tbaa !9
  %wide.load1867 = load <2 x double>, ptr %371, align 8, !tbaa !9
  %372 = fsub <2 x double> %wide.load1866, %broadcast.splat1869
  %373 = fsub <2 x double> %wide.load1867, %broadcast.splat1869
  store <2 x double> %372, ptr %370, align 8, !tbaa !9
  store <2 x double> %373, ptr %371, align 8, !tbaa !9
  %index.next1870 = add nuw i64 %index1864, 4
  %374 = icmp eq i64 %index.next1870, %n.vec1860
  br i1 %374, label %middle.block1855, label %vector.body1863, !llvm.loop !38

middle.block1855:                                 ; preds = %vector.body1863
  %cmp.n1871 = icmp eq i64 %369, %n.vec1860
  br i1 %cmp.n1871, label %._crit_edge1479, label %.lr.ph1478.preheader1895

.lr.ph1478.preheader1895:                         ; preds = %middle.block1855, %.lr.ph1478.preheader
  %.412421476.ph = phi i64 [ 1, %.lr.ph1478.preheader ], [ %ind.end1861, %middle.block1855 ]
  br label %.lr.ph1478

.lr.ph1478:                                       ; preds = %.lr.ph1478.preheader1895, %.lr.ph1478
  %.412421476 = phi i64 [ %378, %.lr.ph1478 ], [ %.412421476.ph, %.lr.ph1478.preheader1895 ]
  %375 = getelementptr inbounds double, ptr %15, i64 %.412421476
  %376 = load double, ptr %375, align 8, !tbaa !9
  %377 = fsub double %376, %368
  store double %377, ptr %375, align 8, !tbaa !9
  %378 = add nuw i64 %.412421476, 1
  %exitcond1581.not = icmp eq i64 %.412421476, %369
  br i1 %exitcond1581.not, label %._crit_edge1479, label %.lr.ph1478, !llvm.loop !39

._crit_edge1479:                                  ; preds = %.lr.ph1478, %middle.block1855, %367
  %379 = fadd double %.21225, %368
  br i1 %.not1318.not1465, label %.lr.ph1486.preheader, label %.lr.ph1524

.lr.ph1486.preheader:                             ; preds = %._crit_edge1479
  %xtraiter1993 = and i64 %35, 1
  %380 = icmp eq i64 %31, 2
  br i1 %380, label %.lr.ph1524.loopexit.unr-lcssa, label %.lr.ph1486.preheader.new

.lr.ph1486.preheader.new:                         ; preds = %.lr.ph1486.preheader
  %unroll_iter1999 = and i64 %35, -2
  br label %.lr.ph1486

.lr.ph1486:                                       ; preds = %.lr.ph1486, %.lr.ph1486.preheader.new
  %.11484 = phi double [ 0.000000e+00, %.lr.ph1486.preheader.new ], [ %403, %.lr.ph1486 ]
  %.512431481 = phi i64 [ 1, %.lr.ph1486.preheader.new ], [ %404, %.lr.ph1486 ]
  %381 = phi <2 x double> [ zeroinitializer, %.lr.ph1486.preheader.new ], [ %401, %.lr.ph1486 ]
  %niter2000 = phi i64 [ 0, %.lr.ph1486.preheader.new ], [ %niter2000.next.1, %.lr.ph1486 ]
  %382 = getelementptr inbounds double, ptr %16, i64 %.512431481
  %383 = load double, ptr %382, align 8, !tbaa !9
  %384 = getelementptr inbounds double, ptr %15, i64 %.512431481
  %385 = load double, ptr %384, align 8, !tbaa !9
  %386 = fdiv double %383, %385
  %387 = insertelement <2 x double> poison, double %383, i64 0
  %388 = insertelement <2 x double> %387, double %386, i64 1
  %389 = shufflevector <2 x double> %388, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %390 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %388, <2 x double> %389, <2 x double> %381)
  %391 = extractelement <2 x double> %390, i64 0
  %392 = fadd double %.11484, %391
  %393 = getelementptr double, ptr %3, i64 %.512431481
  %394 = load double, ptr %393, align 8, !tbaa !9
  %395 = getelementptr double, ptr %4, i64 %.512431481
  %396 = load double, ptr %395, align 8, !tbaa !9
  %397 = fdiv double %394, %396
  %398 = insertelement <2 x double> poison, double %394, i64 0
  %399 = insertelement <2 x double> %398, double %397, i64 1
  %400 = shufflevector <2 x double> %399, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %401 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %399, <2 x double> %400, <2 x double> %390)
  %402 = extractelement <2 x double> %401, i64 0
  %403 = fadd double %392, %402
  %404 = add nuw nsw i64 %.512431481, 2
  %niter2000.next.1 = add i64 %niter2000, 2
  %niter2000.ncmp.1 = icmp eq i64 %niter2000.next.1, %unroll_iter1999
  br i1 %niter2000.ncmp.1, label %.lr.ph1524.loopexit.unr-lcssa, label %.lr.ph1486, !llvm.loop !40

.lr.ph1524.loopexit.unr-lcssa:                    ; preds = %.lr.ph1486, %.lr.ph1486.preheader
  %.lcssa1894.ph = phi <2 x double> [ poison, %.lr.ph1486.preheader ], [ %401, %.lr.ph1486 ]
  %.lcssa1893.ph = phi double [ poison, %.lr.ph1486.preheader ], [ %403, %.lr.ph1486 ]
  %.11484.unr = phi double [ 0.000000e+00, %.lr.ph1486.preheader ], [ %403, %.lr.ph1486 ]
  %.512431481.unr = phi i64 [ 1, %.lr.ph1486.preheader ], [ %404, %.lr.ph1486 ]
  %.unr1995 = phi <2 x double> [ zeroinitializer, %.lr.ph1486.preheader ], [ %401, %.lr.ph1486 ]
  %lcmp.mod1996.not = icmp eq i64 %xtraiter1993, 0
  br i1 %lcmp.mod1996.not, label %.lr.ph1524, label %.lr.ph1486.epil

.lr.ph1486.epil:                                  ; preds = %.lr.ph1524.loopexit.unr-lcssa
  %405 = getelementptr inbounds double, ptr %16, i64 %.512431481.unr
  %406 = load double, ptr %405, align 8, !tbaa !9
  %407 = getelementptr inbounds double, ptr %15, i64 %.512431481.unr
  %408 = load double, ptr %407, align 8, !tbaa !9
  %409 = fdiv double %406, %408
  %410 = insertelement <2 x double> poison, double %406, i64 0
  %411 = insertelement <2 x double> %410, double %409, i64 1
  %412 = shufflevector <2 x double> %411, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %413 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %411, <2 x double> %412, <2 x double> %.unr1995)
  %414 = extractelement <2 x double> %413, i64 0
  %415 = fadd double %.11484.unr, %414
  br label %.lr.ph1524

.lr.ph1524:                                       ; preds = %.lr.ph1486.epil, %.lr.ph1524.loopexit.unr-lcssa, %._crit_edge1479
  %.1.lcssa = phi double [ 0.000000e+00, %._crit_edge1479 ], [ %.lcssa1893.ph, %.lr.ph1524.loopexit.unr-lcssa ], [ %415, %.lr.ph1486.epil ]
  %416 = phi <2 x double> [ zeroinitializer, %._crit_edge1479 ], [ %.lcssa1894.ph, %.lr.ph1524.loopexit.unr-lcssa ], [ %413, %.lr.ph1486.epil ]
  %417 = getelementptr inbounds double, ptr %16, i64 %369
  %418 = load double, ptr %417, align 8, !tbaa !9
  %419 = getelementptr inbounds double, ptr %15, i64 %369
  %420 = load double, ptr %419, align 8, !tbaa !9
  %421 = fdiv double %418, %420
  %422 = fmul double %418, %421
  %423 = fadd double %30, %422
  %424 = extractelement <2 x double> %416, i64 0
  %425 = fadd double %424, %423
  %426 = fcmp oge double %379, 0.000000e+00
  %427 = fneg double %379
  %428 = select i1 %426, double %379, double %427
  %429 = fmul double %421, %421
  %430 = extractelement <2 x double> %416, i64 1
  %431 = fadd double %430, %429
  %432 = fneg double %422
  %433 = fsub double %432, %424
  %434 = fcmp oge double %.1.lcssa, 0.000000e+00
  %435 = fneg double %.1.lcssa
  %436 = select i1 %434, double %.1.lcssa, double %435
  %437 = tail call double @llvm.fmuladd.f64(double %433, double 8.000000e+00, double %436)
  %438 = fsub double %437, %422
  %439 = fadd double %30, %438
  %440 = tail call double @llvm.fmuladd.f64(double %428, double %431, double %439)
  %invariant.gep = getelementptr i8, ptr %4, i64 -16
  %xtraiter2001 = and i64 %35, 1
  %441 = icmp eq i64 %31, 2
  %unroll_iter2007 = and i64 %35, -2
  %lcmp.mod2004.not = icmp eq i64 %xtraiter2001, 0
  br label %442

442:                                              ; preds = %.lr.ph1524, %._crit_edge1503
  %443 = phi double [ %420, %.lr.ph1524 ], [ %568, %._crit_edge1503 ]
  %444 = phi i64 [ %369, %.lr.ph1524 ], [ %515, %._crit_edge1503 ]
  %storemerge13211522 = phi i64 [ 3, %.lr.ph1524 ], [ %storemerge1321, %._crit_edge1503 ]
  %.21521 = phi double [ %440, %.lr.ph1524 ], [ %583, %._crit_edge1503 ]
  %.211831520 = phi double [ %.11182, %.lr.ph1524 ], [ %.31184, %._crit_edge1503 ]
  %.211911519 = phi double [ %.11190, %.lr.ph1524 ], [ %.31192, %._crit_edge1503 ]
  %.211991518 = phi double [ %430, %.lr.ph1524 ], [ %581, %._crit_edge1503 ]
  %.012071517 = phi double [ %429, %.lr.ph1524 ], [ %571, %._crit_edge1503 ]
  %.312261516 = phi double [ %379, %.lr.ph1524 ], [ %525, %._crit_edge1503 ]
  %storemerge13221515 = phi double [ %425, %.lr.ph1524 ], [ %585, %._crit_edge1503 ]
  %445 = fcmp oge double %storemerge13221515, 0.000000e+00
  %446 = fneg double %storemerge13221515
  %447 = select i1 %445, double %storemerge13221515, double %446
  %448 = fmul double %28, %.21521
  %449 = fcmp ugt double %447, %448
  br i1 %449, label %455, label %450

450:                                              ; preds = %442
  %451 = load i64, ptr %1, align 8, !tbaa !5
  %452 = getelementptr inbounds double, ptr %17, i64 %451
  %453 = load double, ptr %452, align 8, !tbaa !9
  %454 = fadd double %.312261516, %453
  store double %454, ptr %6, align 8, !tbaa !9
  br label %.loopexit

455:                                              ; preds = %442
  %456 = fcmp ugt double %storemerge13221515, 0.000000e+00
  br i1 %456, label %460, label %457

457:                                              ; preds = %455
  %458 = fcmp oge double %.211911519, %.312261516
  %459 = select i1 %458, double %.211911519, double %.312261516
  br label %463

460:                                              ; preds = %455
  %461 = fcmp ole double %.211831520, %.312261516
  %462 = select i1 %461, double %.211831520, double %.312261516
  br label %463

463:                                              ; preds = %460, %457
  %.31192 = phi double [ %459, %457 ], [ %.211911519, %460 ]
  %.31184 = phi double [ %.211831520, %457 ], [ %462, %460 ]
  %gep = getelementptr double, ptr %invariant.gep, i64 %444
  %464 = load double, ptr %gep, align 8, !tbaa !9
  %465 = fneg double %464
  %466 = tail call double @llvm.fmuladd.f64(double %465, double %.211991518, double %storemerge13221515)
  %467 = fneg double %443
  %468 = tail call double @llvm.fmuladd.f64(double %467, double %.012071517, double %466)
  %469 = fadd double %464, %443
  %470 = fmul double %464, %443
  %471 = fadd double %.012071517, %.211991518
  %472 = fneg double %470
  %473 = fmul double %471, %472
  %474 = tail call double @llvm.fmuladd.f64(double %469, double %storemerge13221515, double %473)
  %475 = fmul double %storemerge13221515, %470
  %476 = fcmp ult double %474, 0.000000e+00
  br i1 %476, label %488, label %477

477:                                              ; preds = %463
  %478 = fmul double %475, -4.000000e+00
  %479 = fmul double %468, %478
  %480 = tail call double @llvm.fmuladd.f64(double %474, double %474, double %479)
  %481 = fcmp oge double %480, 0.000000e+00
  %482 = fneg double %480
  %483 = select i1 %481, double %480, double %482
  %484 = tail call double @sqrt(double noundef %483) #6
  %485 = fadd double %474, %484
  %486 = fmul double %468, 2.000000e+00
  %487 = fdiv double %485, %486
  br label %499

488:                                              ; preds = %463
  %489 = fmul double %475, 2.000000e+00
  %490 = fmul double %475, -4.000000e+00
  %491 = fmul double %468, %490
  %492 = tail call double @llvm.fmuladd.f64(double %474, double %474, double %491)
  %493 = fcmp oge double %492, 0.000000e+00
  %494 = fneg double %492
  %495 = select i1 %493, double %492, double %494
  %496 = tail call double @sqrt(double noundef %495) #6
  %497 = fsub double %474, %496
  %498 = fdiv double %489, %497
  br label %499

499:                                              ; preds = %488, %477
  %storemerge1323 = phi double [ %498, %488 ], [ %487, %477 ]
  %500 = fmul double %storemerge1323, %storemerge13221515
  %501 = fcmp ogt double %500, 0.000000e+00
  %502 = fdiv double %446, %471
  %storemerge13231513 = select i1 %501, double %502, double %storemerge1323
  %503 = fadd double %.312261516, %storemerge13231513
  %504 = fcmp ogt double %503, %.31184
  %505 = fcmp olt double %503, %.31192
  %or.cond1326 = select i1 %504, i1 true, i1 %505
  br i1 %or.cond1326, label %506, label %514

506:                                              ; preds = %499
  %507 = fcmp olt double %storemerge13221515, 0.000000e+00
  br i1 %507, label %508, label %511

508:                                              ; preds = %506
  %509 = fsub double %.31184, %.312261516
  %510 = fmul double %509, 5.000000e-01
  br label %514

511:                                              ; preds = %506
  %512 = fsub double %.31192, %.312261516
  %513 = fmul double %512, 5.000000e-01
  br label %514

514:                                              ; preds = %499, %508, %511
  %storemerge13231512 = phi double [ %storemerge13231513, %499 ], [ %510, %508 ], [ %513, %511 ]
  %515 = load i64, ptr %0, align 8, !tbaa !5
  %.not13241491 = icmp slt i64 %515, 1
  br i1 %.not13241491, label %._crit_edge1495, label %.lr.ph1494.preheader

.lr.ph1494.preheader:                             ; preds = %514
  %min.iters.check1874 = icmp ult i64 %515, 4
  br i1 %min.iters.check1874, label %.lr.ph1494.preheader1889, label %vector.ph1875

vector.ph1875:                                    ; preds = %.lr.ph1494.preheader
  %n.vec1877 = and i64 %515, 9223372036854775804
  %ind.end1878 = or disjoint i64 %n.vec1877, 1
  %broadcast.splatinsert1885 = insertelement <2 x double> poison, double %storemerge13231512, i64 0
  %broadcast.splat1886 = shufflevector <2 x double> %broadcast.splatinsert1885, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1880

vector.body1880:                                  ; preds = %vector.body1880, %vector.ph1875
  %index1881 = phi i64 [ 0, %vector.ph1875 ], [ %index.next1887, %vector.body1880 ]
  %516 = getelementptr double, ptr %4, i64 %index1881
  %517 = getelementptr inbounds i8, ptr %516, i64 16
  %wide.load1883 = load <2 x double>, ptr %516, align 8, !tbaa !9
  %wide.load1884 = load <2 x double>, ptr %517, align 8, !tbaa !9
  %518 = fsub <2 x double> %wide.load1883, %broadcast.splat1886
  %519 = fsub <2 x double> %wide.load1884, %broadcast.splat1886
  store <2 x double> %518, ptr %516, align 8, !tbaa !9
  store <2 x double> %519, ptr %517, align 8, !tbaa !9
  %index.next1887 = add nuw i64 %index1881, 4
  %520 = icmp eq i64 %index.next1887, %n.vec1877
  br i1 %520, label %middle.block1872, label %vector.body1880, !llvm.loop !41

middle.block1872:                                 ; preds = %vector.body1880
  %cmp.n1888 = icmp eq i64 %515, %n.vec1877
  br i1 %cmp.n1888, label %._crit_edge1495, label %.lr.ph1494.preheader1889

.lr.ph1494.preheader1889:                         ; preds = %middle.block1872, %.lr.ph1494.preheader
  %.612441492.ph = phi i64 [ 1, %.lr.ph1494.preheader ], [ %ind.end1878, %middle.block1872 ]
  br label %.lr.ph1494

.lr.ph1494:                                       ; preds = %.lr.ph1494.preheader1889, %.lr.ph1494
  %.612441492 = phi i64 [ %524, %.lr.ph1494 ], [ %.612441492.ph, %.lr.ph1494.preheader1889 ]
  %521 = getelementptr inbounds double, ptr %15, i64 %.612441492
  %522 = load double, ptr %521, align 8, !tbaa !9
  %523 = fsub double %522, %storemerge13231512
  store double %523, ptr %521, align 8, !tbaa !9
  %524 = add nuw i64 %.612441492, 1
  %exitcond1583.not = icmp eq i64 %.612441492, %515
  br i1 %exitcond1583.not, label %._crit_edge1495, label %.lr.ph1494, !llvm.loop !42

._crit_edge1495:                                  ; preds = %.lr.ph1494, %middle.block1872, %514
  %525 = fadd double %.312261516, %storemerge13231512
  br i1 %.not1318.not1465, label %.lr.ph1502.preheader, label %._crit_edge1503

.lr.ph1502.preheader:                             ; preds = %._crit_edge1495
  br i1 %441, label %._crit_edge1503.loopexit.unr-lcssa, label %.lr.ph1502

.lr.ph1502:                                       ; preds = %.lr.ph1502.preheader, %.lr.ph1502
  %.31500 = phi double [ %548, %.lr.ph1502 ], [ 0.000000e+00, %.lr.ph1502.preheader ]
  %.712451497 = phi i64 [ %549, %.lr.ph1502 ], [ 1, %.lr.ph1502.preheader ]
  %526 = phi <2 x double> [ %546, %.lr.ph1502 ], [ zeroinitializer, %.lr.ph1502.preheader ]
  %niter2008 = phi i64 [ %niter2008.next.1, %.lr.ph1502 ], [ 0, %.lr.ph1502.preheader ]
  %527 = getelementptr inbounds double, ptr %16, i64 %.712451497
  %528 = load double, ptr %527, align 8, !tbaa !9
  %529 = getelementptr inbounds double, ptr %15, i64 %.712451497
  %530 = load double, ptr %529, align 8, !tbaa !9
  %531 = fdiv double %528, %530
  %532 = insertelement <2 x double> poison, double %528, i64 0
  %533 = insertelement <2 x double> %532, double %531, i64 1
  %534 = shufflevector <2 x double> %533, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %535 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %533, <2 x double> %534, <2 x double> %526)
  %536 = extractelement <2 x double> %535, i64 0
  %537 = fadd double %.31500, %536
  %538 = getelementptr double, ptr %3, i64 %.712451497
  %539 = load double, ptr %538, align 8, !tbaa !9
  %540 = getelementptr double, ptr %4, i64 %.712451497
  %541 = load double, ptr %540, align 8, !tbaa !9
  %542 = fdiv double %539, %541
  %543 = insertelement <2 x double> poison, double %539, i64 0
  %544 = insertelement <2 x double> %543, double %542, i64 1
  %545 = shufflevector <2 x double> %544, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %546 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %544, <2 x double> %545, <2 x double> %535)
  %547 = extractelement <2 x double> %546, i64 0
  %548 = fadd double %537, %547
  %549 = add nuw nsw i64 %.712451497, 2
  %niter2008.next.1 = add i64 %niter2008, 2
  %niter2008.ncmp.1 = icmp eq i64 %niter2008.next.1, %unroll_iter2007
  br i1 %niter2008.ncmp.1, label %._crit_edge1503.loopexit.unr-lcssa, label %.lr.ph1502, !llvm.loop !43

._crit_edge1503.loopexit.unr-lcssa:               ; preds = %.lr.ph1502, %.lr.ph1502.preheader
  %.lcssa1890.ph = phi <2 x double> [ poison, %.lr.ph1502.preheader ], [ %546, %.lr.ph1502 ]
  %.lcssa.ph = phi double [ poison, %.lr.ph1502.preheader ], [ %548, %.lr.ph1502 ]
  %.31500.unr = phi double [ 0.000000e+00, %.lr.ph1502.preheader ], [ %548, %.lr.ph1502 ]
  %.712451497.unr = phi i64 [ 1, %.lr.ph1502.preheader ], [ %549, %.lr.ph1502 ]
  %.unr2003 = phi <2 x double> [ zeroinitializer, %.lr.ph1502.preheader ], [ %546, %.lr.ph1502 ]
  br i1 %lcmp.mod2004.not, label %._crit_edge1503, label %.lr.ph1502.epil

.lr.ph1502.epil:                                  ; preds = %._crit_edge1503.loopexit.unr-lcssa
  %550 = getelementptr inbounds double, ptr %16, i64 %.712451497.unr
  %551 = load double, ptr %550, align 8, !tbaa !9
  %552 = getelementptr inbounds double, ptr %15, i64 %.712451497.unr
  %553 = load double, ptr %552, align 8, !tbaa !9
  %554 = fdiv double %551, %553
  %555 = insertelement <2 x double> poison, double %551, i64 0
  %556 = insertelement <2 x double> %555, double %554, i64 1
  %557 = shufflevector <2 x double> %556, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %558 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %556, <2 x double> %557, <2 x double> %.unr2003)
  %559 = extractelement <2 x double> %558, i64 0
  %560 = fadd double %.31500.unr, %559
  br label %._crit_edge1503

._crit_edge1503:                                  ; preds = %.lr.ph1502.epil, %._crit_edge1503.loopexit.unr-lcssa, %._crit_edge1495
  %.3.lcssa = phi double [ 0.000000e+00, %._crit_edge1495 ], [ %.lcssa.ph, %._crit_edge1503.loopexit.unr-lcssa ], [ %560, %.lr.ph1502.epil ]
  %561 = phi <2 x double> [ zeroinitializer, %._crit_edge1495 ], [ %.lcssa1890.ph, %._crit_edge1503.loopexit.unr-lcssa ], [ %558, %.lr.ph1502.epil ]
  %562 = fcmp oge double %.3.lcssa, 0.000000e+00
  %563 = fneg double %.3.lcssa
  %564 = select i1 %562, double %.3.lcssa, double %563
  %565 = getelementptr inbounds double, ptr %16, i64 %515
  %566 = load double, ptr %565, align 8, !tbaa !9
  %567 = getelementptr inbounds double, ptr %15, i64 %515
  %568 = load double, ptr %567, align 8, !tbaa !9
  %569 = fdiv double %566, %568
  %570 = fmul double %566, %569
  %571 = fmul double %569, %569
  %572 = fneg double %570
  %573 = extractelement <2 x double> %561, i64 0
  %574 = fsub double %572, %573
  %575 = tail call double @llvm.fmuladd.f64(double %574, double 8.000000e+00, double %564)
  %576 = fsub double %575, %570
  %577 = fadd double %30, %576
  %578 = fcmp oge double %525, 0.000000e+00
  %579 = fneg double %525
  %580 = select i1 %578, double %525, double %579
  %581 = extractelement <2 x double> %561, i64 1
  %582 = fadd double %581, %571
  %583 = tail call double @llvm.fmuladd.f64(double %580, double %582, double %577)
  %584 = fadd double %30, %570
  %585 = fadd double %573, %584
  %storemerge1321 = add i64 %storemerge13211522, 1
  %exitcond1585.not = icmp eq i64 %storemerge1321, 31
  br i1 %exitcond1585.not, label %._crit_edge1525, label %442, !llvm.loop !44

._crit_edge1525:                                  ; preds = %._crit_edge1503
  store i64 1, ptr %7, align 8, !tbaa !5
  %586 = load i64, ptr %1, align 8, !tbaa !5
  %587 = getelementptr inbounds double, ptr %17, i64 %586
  %588 = load double, ptr %587, align 8, !tbaa !9
  %589 = fadd double %525, %588
  store double %589, ptr %6, align 8, !tbaa !9
  br label %.loopexit

590:                                              ; preds = %27
  store i64 1, ptr %13, align 8, !tbaa !5
  %591 = getelementptr double, ptr %2, i64 %31
  %592 = load double, ptr %591, align 8, !tbaa !9
  %593 = getelementptr inbounds double, ptr %17, i64 %31
  %594 = load double, ptr %593, align 8, !tbaa !9
  %595 = fsub double %592, %594
  %596 = fmul double %595, 5.000000e-01
  %.not1338 = icmp slt i64 %32, 1
  br i1 %.not1338, label %.preheader1334, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %590
  %min.iters.check = icmp ult i64 %32, 10
  br i1 %min.iters.check, label %.lr.ph.preheader1924, label %vector.memcheck

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

.lr.ph.prol:                                      ; preds = %.lr.ph.preheader1924
  %597 = getelementptr inbounds double, ptr %17, i64 %.812461339.ph
  %598 = load double, ptr %597, align 8, !tbaa !9
  %599 = load double, ptr %593, align 8, !tbaa !9
  %600 = fsub double %598, %599
  %601 = fsub double %600, %596
  %602 = getelementptr inbounds double, ptr %15, i64 %.812461339.ph
  store double %601, ptr %602, align 8, !tbaa !9
  %603 = add nuw i64 %.812461339.ph, 1
  br label %.lr.ph.prol.loopexit

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader1924
  %.812461339.unr = phi i64 [ %.812461339.ph, %.lr.ph.preheader1924 ], [ %603, %.lr.ph.prol ]
  %604 = icmp eq i64 %32, %.812461339.ph
  br i1 %604, label %.preheader1334, label %.lr.ph

vector.memcheck:                                  ; preds = %.lr.ph.preheader
  %605 = shl i64 %32, 3
  %scevgep = getelementptr i8, ptr %4, i64 %605
  %606 = shl i64 %31, 3
  %scevgep1690 = getelementptr i8, ptr %2, i64 %606
  %scevgep1691 = getelementptr i8, ptr %2, i64 %605
  %bound0 = icmp ugt ptr %scevgep1690, %4
  %bound1 = icmp ult ptr %593, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  %bound01692 = icmp ugt ptr %scevgep1691, %4
  %bound11693 = icmp ugt ptr %scevgep, %2
  %found.conflict1694 = and i1 %bound01692, %bound11693
  %conflict.rdx = or i1 %found.conflict, %found.conflict1694
  br i1 %conflict.rdx, label %.lr.ph.preheader1924, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %32, 9223372036854775804
  %ind.end = or disjoint i64 %n.vec, 1
  %broadcast.splatinsert1698 = insertelement <2 x double> poison, double %596, i64 0
  %broadcast.splat1699 = shufflevector <2 x double> %broadcast.splatinsert1698, <2 x double> poison, <2 x i32> zeroinitializer
  %607 = load double, ptr %593, align 8, !tbaa !9, !alias.scope !45
  %broadcast.splatinsert1696 = insertelement <2 x double> poison, double %607, i64 0
  %broadcast.splat1697 = shufflevector <2 x double> %broadcast.splatinsert1696, <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 ]
  %608 = getelementptr double, ptr %2, i64 %index
  %609 = getelementptr inbounds i8, ptr %608, i64 16
  %wide.load = load <2 x double>, ptr %608, align 8, !tbaa !9, !alias.scope !48
  %wide.load1695 = load <2 x double>, ptr %609, align 8, !tbaa !9, !alias.scope !48
  %610 = fsub <2 x double> %wide.load, %broadcast.splat1697
  %611 = fsub <2 x double> %wide.load1695, %broadcast.splat1697
  %612 = fsub <2 x double> %610, %broadcast.splat1699
  %613 = fsub <2 x double> %611, %broadcast.splat1699
  %614 = getelementptr double, ptr %4, i64 %index
  %615 = getelementptr inbounds i8, ptr %614, i64 16
  store <2 x double> %612, ptr %614, align 8, !tbaa !9, !alias.scope !50, !noalias !52
  store <2 x double> %613, ptr %615, align 8, !tbaa !9, !alias.scope !50, !noalias !52
  %index.next = add nuw i64 %index, 4
  %616 = icmp eq i64 %index.next, %n.vec
  br i1 %616, label %middle.block, label %vector.body, !llvm.loop !53

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %32, %n.vec
  br i1 %cmp.n, label %.preheader1334, label %.lr.ph.preheader1924

.preheader1334:                                   ; preds = %.lr.ph.prol.loopexit, %.lr.ph, %middle.block, %590
  %.not1282.not1340 = icmp sgt i64 %31, 1
  br i1 %.not1282.not1340, label %.lr.ph1343.preheader, label %._crit_edge

.lr.ph1343.preheader:                             ; preds = %.preheader1334
  %617 = add nsw i64 %31, -1
  %618 = add nsw i64 %31, -2
  %xtraiter1925 = and i64 %617, 3
  %619 = icmp ult i64 %618, 3
  br i1 %619, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph1343.preheader.new

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

.lr.ph:                                           ; preds = %.lr.ph.prol.loopexit, %.lr.ph
  %.812461339 = phi i64 [ %633, %.lr.ph ], [ %.812461339.unr, %.lr.ph.prol.loopexit ]
  %620 = getelementptr inbounds double, ptr %17, i64 %.812461339
  %621 = load double, ptr %620, align 8, !tbaa !9
  %622 = load double, ptr %593, align 8, !tbaa !9
  %623 = fsub double %621, %622
  %624 = fsub double %623, %596
  %625 = getelementptr inbounds double, ptr %15, i64 %.812461339
  store double %624, ptr %625, align 8, !tbaa !9
  %626 = add nuw i64 %.812461339, 1
  %627 = getelementptr double, ptr %2, i64 %.812461339
  %628 = load double, ptr %627, align 8, !tbaa !9
  %629 = load double, ptr %593, align 8, !tbaa !9
  %630 = fsub double %628, %629
  %631 = fsub double %630, %596
  %632 = getelementptr double, ptr %4, i64 %.812461339
  store double %631, ptr %632, align 8, !tbaa !9
  %633 = add nuw i64 %.812461339, 2
  %exitcond.not.1 = icmp eq i64 %626, %32
  br i1 %exitcond.not.1, label %.preheader1334, label %.lr.ph, !llvm.loop !54

.lr.ph1343:                                       ; preds = %.lr.ph1343, %.lr.ph1343.preheader.new
  %.412181342 = phi double [ 0.000000e+00, %.lr.ph1343.preheader.new ], [ %663, %.lr.ph1343 ]
  %.912471341 = phi i64 [ 1, %.lr.ph1343.preheader.new ], [ %664, %.lr.ph1343 ]
  %niter = phi i64 [ 0, %.lr.ph1343.preheader.new ], [ %niter.next.3, %.lr.ph1343 ]
  %634 = getelementptr inbounds double, ptr %16, i64 %.912471341
  %635 = load double, ptr %634, align 8, !tbaa !9
  %636 = fmul double %635, %635
  %637 = getelementptr inbounds double, ptr %15, i64 %.912471341
  %638 = load double, ptr %637, align 8, !tbaa !9
  %639 = fdiv double %636, %638
  %640 = fadd double %.412181342, %639
  %641 = getelementptr double, ptr %3, i64 %.912471341
  %642 = load double, ptr %641, align 8, !tbaa !9
  %643 = fmul double %642, %642
  %644 = getelementptr double, ptr %4, i64 %.912471341
  %645 = load double, ptr %644, align 8, !tbaa !9
  %646 = fdiv double %643, %645
  %647 = fadd double %640, %646
  %648 = add nuw nsw i64 %.912471341, 2
  %649 = getelementptr inbounds double, ptr %16, i64 %648
  %650 = load double, ptr %649, align 8, !tbaa !9
  %651 = fmul double %650, %650
  %652 = getelementptr inbounds double, ptr %15, i64 %648
  %653 = load double, ptr %652, align 8, !tbaa !9
  %654 = fdiv double %651, %653
  %655 = fadd double %647, %654
  %656 = add nuw nsw i64 %.912471341, 3
  %657 = getelementptr inbounds double, ptr %16, i64 %656
  %658 = load double, ptr %657, align 8, !tbaa !9
  %659 = fmul double %658, %658
  %660 = getelementptr inbounds double, ptr %15, i64 %656
  %661 = load double, ptr %660, align 8, !tbaa !9
  %662 = fdiv double %659, %661
  %663 = fadd double %655, %662
  %664 = add nuw nsw i64 %.912471341, 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.ph1343, !llvm.loop !55

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph1343, %.lr.ph1343.preheader
  %.lcssa1923.ph = phi double [ poison, %.lr.ph1343.preheader ], [ %663, %.lr.ph1343 ]
  %.412181342.unr = phi double [ 0.000000e+00, %.lr.ph1343.preheader ], [ %663, %.lr.ph1343 ]
  %.912471341.unr = phi i64 [ 1, %.lr.ph1343.preheader ], [ %664, %.lr.ph1343 ]
  %lcmp.mod1926.not = icmp eq i64 %xtraiter1925, 0
  br i1 %lcmp.mod1926.not, label %._crit_edge, label %.lr.ph1343.epil

.lr.ph1343.epil:                                  ; preds = %._crit_edge.loopexit.unr-lcssa, %.lr.ph1343.epil
  %.412181342.epil = phi double [ %671, %.lr.ph1343.epil ], [ %.412181342.unr, %._crit_edge.loopexit.unr-lcssa ]
  %.912471341.epil = phi i64 [ %672, %.lr.ph1343.epil ], [ %.912471341.unr, %._crit_edge.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph1343.epil ], [ 0, %._crit_edge.loopexit.unr-lcssa ]
  %665 = getelementptr inbounds double, ptr %16, i64 %.912471341.epil
  %666 = load double, ptr %665, align 8, !tbaa !9
  %667 = fmul double %666, %666
  %668 = getelementptr inbounds double, ptr %15, i64 %.912471341.epil
  %669 = load double, ptr %668, align 8, !tbaa !9
  %670 = fdiv double %667, %669
  %671 = fadd double %.412181342.epil, %670
  %672 = add nuw nsw i64 %.912471341.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter1925
  br i1 %epil.iter.cmp.not, label %._crit_edge, label %.lr.ph1343.epil, !llvm.loop !56

._crit_edge:                                      ; preds = %._crit_edge.loopexit.unr-lcssa, %.lr.ph1343.epil, %.preheader1334
  %.41218.lcssa = phi double [ 0.000000e+00, %.preheader1334 ], [ %.lcssa1923.ph, %._crit_edge.loopexit.unr-lcssa ], [ %671, %.lr.ph1343.epil ]
  %673 = add nsw i64 %31, 2
  %.not12831344 = icmp slt i64 %32, %673
  br i1 %.not12831344, label %._crit_edge1349, label %.lr.ph1348.preheader

.lr.ph1348.preheader:                             ; preds = %._crit_edge
  %674 = xor i64 %31, -1
  %675 = add i64 %32, %674
  %676 = add i64 %32, -2
  %677 = sub i64 %676, %31
  %xtraiter1928 = and i64 %675, 3
  %lcmp.mod1929.not = icmp eq i64 %xtraiter1928, 0
  br i1 %lcmp.mod1929.not, label %.lr.ph1348.prol.loopexit, label %.lr.ph1348.prol

.lr.ph1348.prol:                                  ; preds = %.lr.ph1348.preheader, %.lr.ph1348.prol
  %.012311346.prol = phi double [ %684, %.lr.ph1348.prol ], [ 0.000000e+00, %.lr.ph1348.preheader ]
  %.1012481345.prol = phi i64 [ %685, %.lr.ph1348.prol ], [ %32, %.lr.ph1348.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph1348.prol ], [ 0, %.lr.ph1348.preheader ]
  %678 = getelementptr inbounds double, ptr %16, i64 %.1012481345.prol
  %679 = load double, ptr %678, align 8, !tbaa !9
  %680 = fmul double %679, %679
  %681 = getelementptr inbounds double, ptr %15, i64 %.1012481345.prol
  %682 = load double, ptr %681, align 8, !tbaa !9
  %683 = fdiv double %680, %682
  %684 = fadd double %.012311346.prol, %683
  %685 = add nsw i64 %.1012481345.prol, -1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter1928
  br i1 %prol.iter.cmp.not, label %.lr.ph1348.prol.loopexit, label %.lr.ph1348.prol, !llvm.loop !57

.lr.ph1348.prol.loopexit:                         ; preds = %.lr.ph1348.prol, %.lr.ph1348.preheader
  %.012311346.unr = phi double [ 0.000000e+00, %.lr.ph1348.preheader ], [ %684, %.lr.ph1348.prol ]
  %.1012481345.unr = phi i64 [ %32, %.lr.ph1348.preheader ], [ %685, %.lr.ph1348.prol ]
  %.lcssa1922.unr = phi double [ poison, %.lr.ph1348.preheader ], [ %684, %.lr.ph1348.prol ]
  %686 = icmp ult i64 %677, 3
  br i1 %686, label %._crit_edge1349, label %.lr.ph1348

.lr.ph1348:                                       ; preds = %.lr.ph1348.prol.loopexit, %.lr.ph1348
  %.012311346 = phi double [ %717, %.lr.ph1348 ], [ %.012311346.unr, %.lr.ph1348.prol.loopexit ]
  %.1012481345 = phi i64 [ %718, %.lr.ph1348 ], [ %.1012481345.unr, %.lr.ph1348.prol.loopexit ]
  %687 = getelementptr inbounds double, ptr %16, i64 %.1012481345
  %688 = load double, ptr %687, align 8, !tbaa !9
  %689 = fmul double %688, %688
  %690 = getelementptr inbounds double, ptr %15, i64 %.1012481345
  %691 = load double, ptr %690, align 8, !tbaa !9
  %692 = fdiv double %689, %691
  %693 = fadd double %.012311346, %692
  %694 = add nsw i64 %.1012481345, -1
  %695 = getelementptr inbounds double, ptr %16, i64 %694
  %696 = load double, ptr %695, align 8, !tbaa !9
  %697 = fmul double %696, %696
  %698 = getelementptr inbounds double, ptr %15, i64 %694
  %699 = load double, ptr %698, align 8, !tbaa !9
  %700 = fdiv double %697, %699
  %701 = fadd double %693, %700
  %702 = add nsw i64 %.1012481345, -2
  %703 = getelementptr inbounds double, ptr %16, i64 %702
  %704 = load double, ptr %703, align 8, !tbaa !9
  %705 = fmul double %704, %704
  %706 = getelementptr inbounds double, ptr %15, i64 %702
  %707 = load double, ptr %706, align 8, !tbaa !9
  %708 = fdiv double %705, %707
  %709 = fadd double %701, %708
  %710 = add nsw i64 %.1012481345, -3
  %711 = getelementptr inbounds double, ptr %16, i64 %710
  %712 = load double, ptr %711, align 8, !tbaa !9
  %713 = fmul double %712, %712
  %714 = getelementptr inbounds double, ptr %15, i64 %710
  %715 = load double, ptr %714, align 8, !tbaa !9
  %716 = fdiv double %713, %715
  %717 = fadd double %709, %716
  %718 = add nsw i64 %.1012481345, -4
  %.not1283.not.3 = icmp sgt i64 %710, %673
  br i1 %.not1283.not.3, label %.lr.ph1348, label %._crit_edge1349, !llvm.loop !58

._crit_edge1349:                                  ; preds = %.lr.ph1348.prol.loopexit, %.lr.ph1348, %._crit_edge
  %.01231.lcssa = phi double [ 0.000000e+00, %._crit_edge ], [ %.lcssa1922.unr, %.lr.ph1348.prol.loopexit ], [ %717, %.lr.ph1348 ]
  %719 = fadd double %30, %.41218.lcssa
  %720 = fadd double %719, %.01231.lcssa
  %721 = getelementptr inbounds double, ptr %16, i64 %31
  %722 = getelementptr inbounds double, ptr %15, i64 %31
  %723 = getelementptr double, ptr %3, i64 %31
  %724 = getelementptr double, ptr %4, i64 %31
  %725 = load <2 x double>, ptr %721, align 8, !tbaa !9
  %726 = fmul <2 x double> %725, %725
  %727 = load <2 x double>, ptr %722, align 8, !tbaa !9
  %728 = fdiv <2 x double> %726, %727
  %729 = extractelement <2 x double> %728, i64 0
  %730 = fadd double %720, %729
  %731 = extractelement <2 x double> %728, i64 1
  %732 = fadd double %730, %731
  %733 = fcmp ule double %732, 0.000000e+00
  br i1 %733, label %763, label %734

734:                                              ; preds = %._crit_edge1349
  store i64 1, ptr %14, align 8, !tbaa !5
  %735 = extractelement <2 x double> %726, i64 0
  %736 = tail call double @llvm.fmuladd.f64(double %720, double %595, double %735)
  %737 = extractelement <2 x double> %725, i64 1
  %738 = tail call double @llvm.fmuladd.f64(double %737, double %737, double %736)
  %739 = fmul double %595, %735
  %740 = fcmp ogt double %738, 0.000000e+00
  br i1 %740, label %741, label %752

741:                                              ; preds = %734
  %742 = fmul double %739, 2.000000e+00
  %743 = fmul double %739, -4.000000e+00
  %744 = fmul double %720, %743
  %745 = tail call double @llvm.fmuladd.f64(double %738, double %738, double %744)
  %746 = fcmp oge double %745, 0.000000e+00
  %747 = fneg double %745
  %748 = select i1 %746, double %745, double %747
  %749 = tail call double @sqrt(double noundef %748) #6
  %750 = fadd double %738, %749
  %751 = fdiv double %742, %750
  br label %797

752:                                              ; preds = %734
  %753 = fmul double %739, -4.000000e+00
  %754 = fmul double %720, %753
  %755 = tail call double @llvm.fmuladd.f64(double %738, double %738, double %754)
  %756 = fcmp oge double %755, 0.000000e+00
  %757 = fneg double %755
  %758 = select i1 %756, double %755, double %757
  %759 = tail call double @sqrt(double noundef %758) #6
  %760 = fsub double %738, %759
  %761 = fmul double %720, 2.000000e+00
  %762 = fdiv double %760, %761
  br label %797

763:                                              ; preds = %._crit_edge1349
  store i64 0, ptr %14, align 8, !tbaa !5
  %764 = extractelement <2 x double> %725, i64 0
  %765 = fneg double %764
  %766 = fmul double %764, %765
  %767 = tail call double @llvm.fmuladd.f64(double %720, double %595, double %766)
  %768 = extractelement <2 x double> %725, i64 1
  %769 = fneg double %768
  %770 = tail call double @llvm.fmuladd.f64(double %769, double %768, double %767)
  %771 = extractelement <2 x double> %726, i64 1
  %772 = fmul double %595, %771
  %773 = fcmp olt double %770, 0.000000e+00
  br i1 %773, label %774, label %785

774:                                              ; preds = %763
  %775 = fmul double %772, 2.000000e+00
  %776 = fmul double %772, 4.000000e+00
  %777 = fmul double %720, %776
  %778 = tail call double @llvm.fmuladd.f64(double %770, double %770, double %777)
  %779 = fcmp oge double %778, 0.000000e+00
  %780 = fneg double %778
  %781 = select i1 %779, double %778, double %780
  %782 = tail call double @sqrt(double noundef %781) #6
  %783 = fsub double %770, %782
  %784 = fdiv double %775, %783
  br label %835

785:                                              ; preds = %763
  %786 = fmul double %772, 4.000000e+00
  %787 = fmul double %720, %786
  %788 = tail call double @llvm.fmuladd.f64(double %770, double %770, double %787)
  %789 = fcmp oge double %788, 0.000000e+00
  %790 = fneg double %788
  %791 = select i1 %789, double %788, double %790
  %792 = tail call double @sqrt(double noundef %791) #6
  %793 = fadd double %770, %792
  %794 = fneg double %793
  %795 = fmul double %720, 2.000000e+00
  %796 = fdiv double %794, %795
  br label %835

797:                                              ; preds = %741, %752
  %.61229.ph = phi double [ %762, %752 ], [ %751, %741 ]
  %798 = load i64, ptr %0, align 8, !tbaa !5
  %.not12861351 = icmp slt i64 %798, 1
  br i1 %.not12861351, label %.loopexit1332.thread1612, label %.lr.ph1354

.lr.ph1354:                                       ; preds = %797
  %799 = load i64, ptr %1, align 8, !tbaa !5
  %800 = getelementptr inbounds double, ptr %17, i64 %799
  %min.iters.check1713 = icmp ult i64 %798, 10
  br i1 %min.iters.check1713, label %scalar.ph1712.preheader, label %vector.memcheck1700

vector.memcheck1700:                              ; preds = %.lr.ph1354
  %801 = shl i64 %798, 3
  %scevgep1701 = getelementptr i8, ptr %4, i64 %801
  %802 = shl nsw i64 %799, 3
  %scevgep1702 = getelementptr i8, ptr %2, i64 %802
  %scevgep1703 = getelementptr i8, ptr %2, i64 %801
  %bound01704 = icmp ugt ptr %scevgep1702, %4
  %bound11705 = icmp ult ptr %800, %scevgep1701
  %found.conflict1706 = and i1 %bound01704, %bound11705
  %bound01707 = icmp ugt ptr %scevgep1703, %4
  %bound11708 = icmp ugt ptr %scevgep1701, %2
  %found.conflict1709 = and i1 %bound01707, %bound11708
  %conflict.rdx1710 = or i1 %found.conflict1706, %found.conflict1709
  br i1 %conflict.rdx1710, label %scalar.ph1712.preheader, label %vector.ph1714

vector.ph1714:                                    ; preds = %vector.memcheck1700
  %n.vec1716 = and i64 %798, 9223372036854775804
  %ind.end1717 = or disjoint i64 %n.vec1716, 1
  %broadcast.splatinsert1726 = insertelement <2 x double> poison, double %.61229.ph, i64 0
  %broadcast.splat1727 = shufflevector <2 x double> %broadcast.splatinsert1726, <2 x double> poison, <2 x i32> zeroinitializer
  %803 = load double, ptr %800, align 8, !tbaa !9, !alias.scope !59
  %broadcast.splatinsert1724 = insertelement <2 x double> poison, double %803, i64 0
  %broadcast.splat1725 = shufflevector <2 x double> %broadcast.splatinsert1724, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1719

vector.body1719:                                  ; preds = %vector.body1719, %vector.ph1714
  %index1720 = phi i64 [ 0, %vector.ph1714 ], [ %index.next1728, %vector.body1719 ]
  %804 = getelementptr double, ptr %2, i64 %index1720
  %805 = getelementptr inbounds i8, ptr %804, i64 16
  %wide.load1722 = load <2 x double>, ptr %804, align 8, !tbaa !9, !alias.scope !62
  %wide.load1723 = load <2 x double>, ptr %805, align 8, !tbaa !9, !alias.scope !62
  %806 = fsub <2 x double> %wide.load1722, %broadcast.splat1725
  %807 = fsub <2 x double> %wide.load1723, %broadcast.splat1725
  %808 = fsub <2 x double> %806, %broadcast.splat1727
  %809 = fsub <2 x double> %807, %broadcast.splat1727
  %810 = getelementptr double, ptr %4, i64 %index1720
  %811 = getelementptr inbounds i8, ptr %810, i64 16
  store <2 x double> %808, ptr %810, align 8, !tbaa !9, !alias.scope !64, !noalias !66
  store <2 x double> %809, ptr %811, align 8, !tbaa !9, !alias.scope !64, !noalias !66
  %index.next1728 = add nuw i64 %index1720, 4
  %812 = icmp eq i64 %index.next1728, %n.vec1716
  br i1 %812, label %middle.block1711, label %vector.body1719, !llvm.loop !67

middle.block1711:                                 ; preds = %vector.body1719
  %cmp.n1729 = icmp eq i64 %798, %n.vec1716
  br i1 %cmp.n1729, label %.loopexit1332, label %scalar.ph1712.preheader

scalar.ph1712.preheader:                          ; preds = %middle.block1711, %vector.memcheck1700, %.lr.ph1354
  %.111352.ph = phi i64 [ 1, %vector.memcheck1700 ], [ 1, %.lr.ph1354 ], [ %ind.end1717, %middle.block1711 ]
  %xtraiter1930 = and i64 %798, 1
  %lcmp.mod1931.not = icmp eq i64 %xtraiter1930, 0
  br i1 %lcmp.mod1931.not, label %scalar.ph1712.prol.loopexit, label %scalar.ph1712.prol

scalar.ph1712.prol:                               ; preds = %scalar.ph1712.preheader
  %813 = getelementptr inbounds double, ptr %17, i64 %.111352.ph
  %814 = load double, ptr %813, align 8, !tbaa !9
  %815 = load double, ptr %800, align 8, !tbaa !9
  %816 = fsub double %814, %815
  %817 = fsub double %816, %.61229.ph
  %818 = getelementptr inbounds double, ptr %15, i64 %.111352.ph
  store double %817, ptr %818, align 8, !tbaa !9
  %819 = add nuw i64 %.111352.ph, 1
  br label %scalar.ph1712.prol.loopexit

scalar.ph1712.prol.loopexit:                      ; preds = %scalar.ph1712.prol, %scalar.ph1712.preheader
  %.111352.unr = phi i64 [ %.111352.ph, %scalar.ph1712.preheader ], [ %819, %scalar.ph1712.prol ]
  %820 = icmp eq i64 %798, %.111352.ph
  br i1 %820, label %.loopexit1332, label %scalar.ph1712

scalar.ph1712:                                    ; preds = %scalar.ph1712.prol.loopexit, %scalar.ph1712
  %.111352 = phi i64 [ %834, %scalar.ph1712 ], [ %.111352.unr, %scalar.ph1712.prol.loopexit ]
  %821 = getelementptr inbounds double, ptr %17, i64 %.111352
  %822 = load double, ptr %821, align 8, !tbaa !9
  %823 = load double, ptr %800, align 8, !tbaa !9
  %824 = fsub double %822, %823
  %825 = fsub double %824, %.61229.ph
  %826 = getelementptr inbounds double, ptr %15, i64 %.111352
  store double %825, ptr %826, align 8, !tbaa !9
  %827 = add nuw i64 %.111352, 1
  %828 = getelementptr double, ptr %2, i64 %.111352
  %829 = load double, ptr %828, align 8, !tbaa !9
  %830 = load double, ptr %800, align 8, !tbaa !9
  %831 = fsub double %829, %830
  %832 = fsub double %831, %.61229.ph
  %833 = getelementptr double, ptr %4, i64 %.111352
  store double %832, ptr %833, align 8, !tbaa !9
  %834 = add nuw i64 %.111352, 2
  %exitcond1570.not.1 = icmp eq i64 %827, %798
  br i1 %exitcond1570.not.1, label %.loopexit1332, label %scalar.ph1712, !llvm.loop !68

835:                                              ; preds = %785, %774
  %.51228 = phi double [ %784, %774 ], [ %796, %785 ]
  %836 = fneg double %596
  %837 = load i64, ptr %0, align 8, !tbaa !5
  %.not12851355 = icmp slt i64 %837, 1
  br i1 %.not12851355, label %.loopexit1332.thread, label %.lr.ph1358.preheader

.lr.ph1358.preheader:                             ; preds = %835
  %min.iters.check1743 = icmp ult i64 %837, 12
  br i1 %min.iters.check1743, label %.lr.ph1358.preheader1920, label %vector.memcheck1730

vector.memcheck1730:                              ; preds = %.lr.ph1358.preheader
  %838 = shl i64 %837, 3
  %scevgep1731 = getelementptr i8, ptr %4, i64 %838
  %839 = shl i64 %31, 3
  %840 = getelementptr i8, ptr %2, i64 %839
  %scevgep1732 = getelementptr i8, ptr %840, i64 8
  %scevgep1733 = getelementptr i8, ptr %2, i64 %838
  %bound01734 = icmp ugt ptr %scevgep1732, %4
  %bound11735 = icmp ult ptr %591, %scevgep1731
  %found.conflict1736 = and i1 %bound01734, %bound11735
  %bound01737 = icmp ugt ptr %scevgep1733, %4
  %bound11738 = icmp ugt ptr %scevgep1731, %2
  %found.conflict1739 = and i1 %bound01737, %bound11738
  %conflict.rdx1740 = or i1 %found.conflict1736, %found.conflict1739
  br i1 %conflict.rdx1740, label %.lr.ph1358.preheader1920, label %vector.ph1744

vector.ph1744:                                    ; preds = %vector.memcheck1730
  %n.vec1746 = and i64 %837, 9223372036854775804
  %ind.end1747 = or disjoint i64 %n.vec1746, 1
  %broadcast.splatinsert1756 = insertelement <2 x double> poison, double %.51228, i64 0
  %broadcast.splat1757 = shufflevector <2 x double> %broadcast.splatinsert1756, <2 x double> poison, <2 x i32> zeroinitializer
  %841 = load double, ptr %591, align 8, !tbaa !9, !alias.scope !69
  %broadcast.splatinsert1754 = insertelement <2 x double> poison, double %841, i64 0
  %broadcast.splat1755 = shufflevector <2 x double> %broadcast.splatinsert1754, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1749

vector.body1749:                                  ; preds = %vector.body1749, %vector.ph1744
  %index1750 = phi i64 [ 0, %vector.ph1744 ], [ %index.next1758, %vector.body1749 ]
  %842 = getelementptr double, ptr %2, i64 %index1750
  %843 = getelementptr inbounds i8, ptr %842, i64 16
  %wide.load1752 = load <2 x double>, ptr %842, align 8, !tbaa !9, !alias.scope !72
  %wide.load1753 = load <2 x double>, ptr %843, align 8, !tbaa !9, !alias.scope !72
  %844 = fsub <2 x double> %wide.load1752, %broadcast.splat1755
  %845 = fsub <2 x double> %wide.load1753, %broadcast.splat1755
  %846 = fsub <2 x double> %844, %broadcast.splat1757
  %847 = fsub <2 x double> %845, %broadcast.splat1757
  %848 = getelementptr double, ptr %4, i64 %index1750
  %849 = getelementptr inbounds i8, ptr %848, i64 16
  store <2 x double> %846, ptr %848, align 8, !tbaa !9, !alias.scope !74, !noalias !76
  store <2 x double> %847, ptr %849, align 8, !tbaa !9, !alias.scope !74, !noalias !76
  %index.next1758 = add nuw i64 %index1750, 4
  %850 = icmp eq i64 %index.next1758, %n.vec1746
  br i1 %850, label %middle.block1741, label %vector.body1749, !llvm.loop !77

middle.block1741:                                 ; preds = %vector.body1749
  %cmp.n1759 = icmp eq i64 %837, %n.vec1746
  br i1 %cmp.n1759, label %.loopexit1332, label %.lr.ph1358.preheader1920

.lr.ph1358.preheader1920:                         ; preds = %middle.block1741, %vector.memcheck1730, %.lr.ph1358.preheader
  %.121356.ph = phi i64 [ 1, %vector.memcheck1730 ], [ 1, %.lr.ph1358.preheader ], [ %ind.end1747, %middle.block1741 ]
  %xtraiter1933 = and i64 %837, 1
  %lcmp.mod1934.not = icmp eq i64 %xtraiter1933, 0
  br i1 %lcmp.mod1934.not, label %.lr.ph1358.prol.loopexit, label %.lr.ph1358.prol

.lr.ph1358.prol:                                  ; preds = %.lr.ph1358.preheader1920
  %851 = getelementptr inbounds double, ptr %17, i64 %.121356.ph
  %852 = load double, ptr %851, align 8, !tbaa !9
  %853 = load double, ptr %591, align 8, !tbaa !9
  %854 = fsub double %852, %853
  %855 = fsub double %854, %.51228
  %856 = getelementptr inbounds double, ptr %15, i64 %.121356.ph
  store double %855, ptr %856, align 8, !tbaa !9
  %857 = add nuw i64 %.121356.ph, 1
  br label %.lr.ph1358.prol.loopexit

.lr.ph1358.prol.loopexit:                         ; preds = %.lr.ph1358.prol, %.lr.ph1358.preheader1920
  %.121356.unr = phi i64 [ %.121356.ph, %.lr.ph1358.preheader1920 ], [ %857, %.lr.ph1358.prol ]
  %858 = icmp eq i64 %837, %.121356.ph
  br i1 %858, label %.loopexit1332, label %.lr.ph1358

.lr.ph1358:                                       ; preds = %.lr.ph1358.prol.loopexit, %.lr.ph1358
  %.121356 = phi i64 [ %872, %.lr.ph1358 ], [ %.121356.unr, %.lr.ph1358.prol.loopexit ]
  %859 = getelementptr inbounds double, ptr %17, i64 %.121356
  %860 = load double, ptr %859, align 8, !tbaa !9
  %861 = load double, ptr %591, align 8, !tbaa !9
  %862 = fsub double %860, %861
  %863 = fsub double %862, %.51228
  %864 = getelementptr inbounds double, ptr %15, i64 %.121356
  store double %863, ptr %864, align 8, !tbaa !9
  %865 = add nuw i64 %.121356, 1
  %866 = getelementptr double, ptr %2, i64 %.121356
  %867 = load double, ptr %866, align 8, !tbaa !9
  %868 = load double, ptr %591, align 8, !tbaa !9
  %869 = fsub double %867, %868
  %870 = fsub double %869, %.51228
  %871 = getelementptr double, ptr %4, i64 %.121356
  store double %870, ptr %871, align 8, !tbaa !9
  %872 = add nuw i64 %.121356, 2
  %exitcond1571.not.1 = icmp eq i64 %865, %837
  br i1 %exitcond1571.not.1, label %.loopexit1332, label %.lr.ph1358, !llvm.loop !78

.loopexit1332:                                    ; preds = %scalar.ph1712.prol.loopexit, %scalar.ph1712, %.lr.ph1358.prol.loopexit, %.lr.ph1358, %middle.block1711, %middle.block1741
  %.411851601 = phi double [ 0.000000e+00, %middle.block1741 ], [ %596, %middle.block1711 ], [ 0.000000e+00, %.lr.ph1358 ], [ 0.000000e+00, %.lr.ph1358.prol.loopexit ], [ %596, %scalar.ph1712 ], [ %596, %scalar.ph1712.prol.loopexit ]
  %.411931599 = phi double [ %836, %middle.block1741 ], [ 0.000000e+00, %middle.block1711 ], [ %836, %.lr.ph1358 ], [ %836, %.lr.ph1358.prol.loopexit ], [ 0.000000e+00, %scalar.ph1712 ], [ 0.000000e+00, %scalar.ph1712.prol.loopexit ]
  %.612291598 = phi double [ %.51228, %middle.block1741 ], [ %.61229.ph, %middle.block1711 ], [ %.51228, %.lr.ph1358 ], [ %.51228, %.lr.ph1358.prol.loopexit ], [ %.61229.ph, %scalar.ph1712 ], [ %.61229.ph, %scalar.ph1712.prol.loopexit ]
  %873 = phi i64 [ %837, %middle.block1741 ], [ %798, %middle.block1711 ], [ %837, %.lr.ph1358 ], [ %837, %.lr.ph1358.prol.loopexit ], [ %798, %scalar.ph1712 ], [ %798, %scalar.ph1712.prol.loopexit ]
  br i1 %733, label %.loopexit1332.thread, label %.loopexit1332.thread1612

.loopexit1332.thread1612:                         ; preds = %797, %.loopexit1332
  %874 = phi i64 [ %873, %.loopexit1332 ], [ %798, %797 ]
  %.6122915981618 = phi double [ %.612291598, %.loopexit1332 ], [ %.61229.ph, %797 ]
  %.4119315991617 = phi double [ %.411931599, %.loopexit1332 ], [ 0.000000e+00, %797 ]
  %.4118516011616 = phi double [ %.411851601, %.loopexit1332 ], [ %596, %797 ]
  %875 = load i64, ptr %1, align 8, !tbaa !5
  br label %879

.loopexit1332.thread:                             ; preds = %835, %.loopexit1332
  %876 = phi i64 [ %873, %.loopexit1332 ], [ %837, %835 ]
  %.6122915981611 = phi double [ %.612291598, %.loopexit1332 ], [ %.51228, %835 ]
  %.4119315991609 = phi double [ %.411931599, %.loopexit1332 ], [ %836, %835 ]
  %.4118516011607 = phi double [ %.411851601, %.loopexit1332 ], [ 0.000000e+00, %835 ]
  %877 = load i64, ptr %1, align 8, !tbaa !5
  %878 = add nsw i64 %877, 1
  br label %879

879:                                              ; preds = %.loopexit1332.thread, %.loopexit1332.thread1612
  %880 = phi i64 [ %874, %.loopexit1332.thread1612 ], [ %876, %.loopexit1332.thread ]
  %.6122915981610 = phi double [ %.6122915981618, %.loopexit1332.thread1612 ], [ %.6122915981611, %.loopexit1332.thread ]
  %.4119315991608 = phi double [ %.4119315991617, %.loopexit1332.thread1612 ], [ %.4119315991609, %.loopexit1332.thread ]
  %.4118516011606 = phi double [ %.4118516011616, %.loopexit1332.thread1612 ], [ %.4118516011607, %.loopexit1332.thread ]
  %881 = phi i64 [ %875, %.loopexit1332.thread1612 ], [ %877, %.loopexit1332.thread ]
  %.01237 = phi i64 [ %875, %.loopexit1332.thread1612 ], [ %878, %.loopexit1332.thread ]
  %882 = add nsw i64 %.01237, -1
  %.not1288.not1359 = icmp sgt i64 %.01237, 1
  br i1 %.not1288.not1359, label %.lr.ph1365.preheader, label %._crit_edge1366

.lr.ph1365.preheader:                             ; preds = %879
  %883 = add nsw i64 %.01237, -1
  %xtraiter1936 = and i64 %883, 1
  %884 = icmp eq i64 %.01237, 2
  br i1 %884, label %._crit_edge1366.loopexit.unr-lcssa, label %.lr.ph1365.preheader.new

.lr.ph1365.preheader.new:                         ; preds = %.lr.ph1365.preheader
  %unroll_iter1941 = and i64 %883, -2
  br label %.lr.ph1365

.lr.ph1365:                                       ; preds = %.lr.ph1365, %.lr.ph1365.preheader.new
  %.41363 = phi double [ 0.000000e+00, %.lr.ph1365.preheader.new ], [ %907, %.lr.ph1365 ]
  %.131360 = phi i64 [ 1, %.lr.ph1365.preheader.new ], [ %908, %.lr.ph1365 ]
  %885 = phi <2 x double> [ zeroinitializer, %.lr.ph1365.preheader.new ], [ %905, %.lr.ph1365 ]
  %niter1942 = phi i64 [ 0, %.lr.ph1365.preheader.new ], [ %niter1942.next.1, %.lr.ph1365 ]
  %886 = getelementptr inbounds double, ptr %16, i64 %.131360
  %887 = load double, ptr %886, align 8, !tbaa !9
  %888 = getelementptr inbounds double, ptr %15, i64 %.131360
  %889 = load double, ptr %888, align 8, !tbaa !9
  %890 = fdiv double %887, %889
  %891 = insertelement <2 x double> poison, double %887, i64 0
  %892 = insertelement <2 x double> %891, double %890, i64 1
  %893 = shufflevector <2 x double> %892, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %894 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %892, <2 x double> %893, <2 x double> %885)
  %895 = extractelement <2 x double> %894, i64 0
  %896 = fadd double %.41363, %895
  %897 = getelementptr double, ptr %3, i64 %.131360
  %898 = load double, ptr %897, align 8, !tbaa !9
  %899 = getelementptr double, ptr %4, i64 %.131360
  %900 = load double, ptr %899, align 8, !tbaa !9
  %901 = fdiv double %898, %900
  %902 = insertelement <2 x double> poison, double %898, i64 0
  %903 = insertelement <2 x double> %902, double %901, i64 1
  %904 = shufflevector <2 x double> %903, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %905 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %903, <2 x double> %904, <2 x double> %894)
  %906 = extractelement <2 x double> %905, i64 0
  %907 = fadd double %896, %906
  %908 = add nuw nsw i64 %.131360, 2
  %niter1942.next.1 = add i64 %niter1942, 2
  %niter1942.ncmp.1 = icmp eq i64 %niter1942.next.1, %unroll_iter1941
  br i1 %niter1942.ncmp.1, label %._crit_edge1366.loopexit.unr-lcssa, label %.lr.ph1365, !llvm.loop !79

._crit_edge1366.loopexit.unr-lcssa:               ; preds = %.lr.ph1365, %.lr.ph1365.preheader
  %.lcssa1919.ph = phi <2 x double> [ poison, %.lr.ph1365.preheader ], [ %905, %.lr.ph1365 ]
  %.lcssa1918.ph = phi double [ poison, %.lr.ph1365.preheader ], [ %907, %.lr.ph1365 ]
  %.41363.unr = phi double [ 0.000000e+00, %.lr.ph1365.preheader ], [ %907, %.lr.ph1365 ]
  %.131360.unr = phi i64 [ 1, %.lr.ph1365.preheader ], [ %908, %.lr.ph1365 ]
  %.unr = phi <2 x double> [ zeroinitializer, %.lr.ph1365.preheader ], [ %905, %.lr.ph1365 ]
  %lcmp.mod1938.not = icmp eq i64 %xtraiter1936, 0
  br i1 %lcmp.mod1938.not, label %._crit_edge1366, label %.lr.ph1365.epil

.lr.ph1365.epil:                                  ; preds = %._crit_edge1366.loopexit.unr-lcssa
  %909 = getelementptr inbounds double, ptr %16, i64 %.131360.unr
  %910 = load double, ptr %909, align 8, !tbaa !9
  %911 = getelementptr inbounds double, ptr %15, i64 %.131360.unr
  %912 = load double, ptr %911, align 8, !tbaa !9
  %913 = fdiv double %910, %912
  %914 = insertelement <2 x double> poison, double %910, i64 0
  %915 = insertelement <2 x double> %914, double %913, i64 1
  %916 = shufflevector <2 x double> %915, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %917 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %915, <2 x double> %916, <2 x double> %.unr)
  %918 = extractelement <2 x double> %917, i64 0
  %919 = fadd double %.41363.unr, %918
  br label %._crit_edge1366

._crit_edge1366:                                  ; preds = %.lr.ph1365.epil, %._crit_edge1366.loopexit.unr-lcssa, %879
  %.4.lcssa = phi double [ 0.000000e+00, %879 ], [ %.lcssa1918.ph, %._crit_edge1366.loopexit.unr-lcssa ], [ %919, %.lr.ph1365.epil ]
  %920 = phi <2 x double> [ zeroinitializer, %879 ], [ %.lcssa1919.ph, %._crit_edge1366.loopexit.unr-lcssa ], [ %917, %.lr.ph1365.epil ]
  %921 = fcmp oge double %.4.lcssa, 0.000000e+00
  %922 = fneg double %.4.lcssa
  %923 = select i1 %921, double %.4.lcssa, double %922
  %.not1289.not1370 = icmp sgt i64 %880, %.01237
  br i1 %.not1289.not1370, label %.lr.ph1376.preheader, label %._crit_edge1377

.lr.ph1376.preheader:                             ; preds = %._crit_edge1366
  %924 = sub i64 %880, %.01237
  %.neg = add i64 %.01237, 1
  %xtraiter1943 = and i64 %924, 1
  %lcmp.mod1944.not = icmp eq i64 %xtraiter1943, 0
  br i1 %lcmp.mod1944.not, label %.lr.ph1376.prol.loopexit, label %.lr.ph1376.prol

.lr.ph1376.prol:                                  ; preds = %.lr.ph1376.preheader
  %925 = getelementptr inbounds double, ptr %16, i64 %880
  %926 = load double, ptr %925, align 8, !tbaa !9
  %927 = getelementptr inbounds double, ptr %15, i64 %880
  %928 = load double, ptr %927, align 8, !tbaa !9
  %929 = fdiv double %926, %928
  %930 = insertelement <2 x double> poison, double %926, i64 0
  %931 = insertelement <2 x double> %930, double %929, i64 1
  %932 = shufflevector <2 x double> %931, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %933 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %931, <2 x double> %932, <2 x double> zeroinitializer)
  %934 = extractelement <2 x double> %933, i64 0
  %935 = fadd double %923, %934
  %936 = add nsw i64 %880, -1
  br label %.lr.ph1376.prol.loopexit

.lr.ph1376.prol.loopexit:                         ; preds = %.lr.ph1376.prol, %.lr.ph1376.preheader
  %.51374.unr = phi double [ %923, %.lr.ph1376.preheader ], [ %935, %.lr.ph1376.prol ]
  %.141371.unr = phi i64 [ %880, %.lr.ph1376.preheader ], [ %936, %.lr.ph1376.prol ]
  %.unr1946 = phi <2 x double> [ zeroinitializer, %.lr.ph1376.preheader ], [ %933, %.lr.ph1376.prol ]
  %.lcssa1917.unr = phi <2 x double> [ poison, %.lr.ph1376.preheader ], [ %933, %.lr.ph1376.prol ]
  %.lcssa1916.unr = phi double [ poison, %.lr.ph1376.preheader ], [ %935, %.lr.ph1376.prol ]
  %937 = icmp eq i64 %880, %.neg
  br i1 %937, label %._crit_edge1377, label %.lr.ph1376

.lr.ph1376:                                       ; preds = %.lr.ph1376.prol.loopexit, %.lr.ph1376
  %.51374 = phi double [ %961, %.lr.ph1376 ], [ %.51374.unr, %.lr.ph1376.prol.loopexit ]
  %.141371 = phi i64 [ %962, %.lr.ph1376 ], [ %.141371.unr, %.lr.ph1376.prol.loopexit ]
  %938 = phi <2 x double> [ %959, %.lr.ph1376 ], [ %.unr1946, %.lr.ph1376.prol.loopexit ]
  %939 = getelementptr inbounds double, ptr %16, i64 %.141371
  %940 = load double, ptr %939, align 8, !tbaa !9
  %941 = getelementptr inbounds double, ptr %15, i64 %.141371
  %942 = load double, ptr %941, align 8, !tbaa !9
  %943 = fdiv double %940, %942
  %944 = insertelement <2 x double> poison, double %940, i64 0
  %945 = insertelement <2 x double> %944, double %943, i64 1
  %946 = shufflevector <2 x double> %945, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %947 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %945, <2 x double> %946, <2 x double> %938)
  %948 = extractelement <2 x double> %947, i64 0
  %949 = fadd double %.51374, %948
  %950 = add nsw i64 %.141371, -1
  %951 = getelementptr inbounds double, ptr %16, i64 %950
  %952 = load double, ptr %951, align 8, !tbaa !9
  %953 = getelementptr inbounds double, ptr %15, i64 %950
  %954 = load double, ptr %953, align 8, !tbaa !9
  %955 = fdiv double %952, %954
  %956 = insertelement <2 x double> poison, double %952, i64 0
  %957 = insertelement <2 x double> %956, double %955, i64 1
  %958 = shufflevector <2 x double> %957, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %959 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %957, <2 x double> %958, <2 x double> %947)
  %960 = extractelement <2 x double> %959, i64 0
  %961 = fadd double %949, %960
  %962 = add nsw i64 %.141371, -2
  %.not1289.not.1 = icmp sgt i64 %962, %.01237
  br i1 %.not1289.not.1, label %.lr.ph1376, label %._crit_edge1377, !llvm.loop !80

._crit_edge1377:                                  ; preds = %.lr.ph1376.prol.loopexit, %.lr.ph1376, %._crit_edge1366
  %.5.lcssa = phi double [ %923, %._crit_edge1366 ], [ %.lcssa1916.unr, %.lr.ph1376.prol.loopexit ], [ %961, %.lr.ph1376 ]
  %963 = phi <2 x double> [ zeroinitializer, %._crit_edge1366 ], [ %.lcssa1917.unr, %.lr.ph1376.prol.loopexit ], [ %959, %.lr.ph1376 ]
  %964 = extractelement <2 x double> %963, i64 0
  %965 = fadd double %30, %964
  %966 = extractelement <2 x double> %920, i64 0
  %967 = fadd double %966, %965
  br i1 %733, label %971, label %968

968:                                              ; preds = %._crit_edge1377
  %969 = fcmp olt double %967, 0.000000e+00
  br i1 %969, label %970, label %974

970:                                              ; preds = %968
  br label %974

971:                                              ; preds = %._crit_edge1377
  %972 = fcmp ogt double %967, 0.000000e+00
  br i1 %972, label %973, label %974

973:                                              ; preds = %971
  br label %974

974:                                              ; preds = %971, %973, %968, %970
  %.not12911330 = phi i1 [ false, %970 ], [ true, %968 ], [ false, %973 ], [ true, %971 ]
  %975 = icmp eq i64 %.01237, 1
  %976 = icmp eq i64 %.01237, %880
  %or.cond1329 = or i1 %975, %976
  %977 = getelementptr inbounds double, ptr %16, i64 %.01237
  %978 = load double, ptr %977, align 8, !tbaa !9
  %979 = getelementptr inbounds double, ptr %15, i64 %.01237
  %980 = load double, ptr %979, align 8, !tbaa !9
  %981 = fdiv double %978, %980
  %982 = extractelement <2 x double> %963, i64 1
  %983 = extractelement <2 x double> %920, i64 1
  %984 = fadd double %983, %982
  %985 = tail call double @llvm.fmuladd.f64(double %981, double %981, double %984)
  %986 = fmul double %978, %981
  %987 = fadd double %967, %986
  store double %987, ptr %10, align 8, !tbaa !9
  %988 = fsub <2 x double> %963, %920
  %989 = extractelement <2 x double> %988, i64 0
  %990 = tail call double @llvm.fmuladd.f64(double %989, double 8.000000e+00, double %.5.lcssa)
  %991 = tail call double @llvm.fmuladd.f64(double %30, double 2.000000e+00, double %990)
  %992 = fcmp oge double %986, 0.000000e+00
  %993 = fneg double %986
  %994 = select i1 %992, double %986, double %993
  %995 = tail call double @llvm.fmuladd.f64(double %994, double 3.000000e+00, double %991)
  %996 = fcmp oge double %.6122915981610, 0.000000e+00
  %997 = fneg double %.6122915981610
  %998 = select i1 %996, double %.6122915981610, double %997
  %999 = tail call double @llvm.fmuladd.f64(double %998, double %985, double %995)
  %1000 = fcmp oge double %987, 0.000000e+00
  %1001 = fneg double %987
  %1002 = select i1 %1000, double %987, double %1001
  %1003 = fmul double %28, %999
  %1004 = fcmp ugt double %1002, %1003
  br i1 %1004, label %1013, label %1005

1005:                                             ; preds = %974
  br i1 %733, label %1010, label %1006

1006:                                             ; preds = %1005
  %1007 = getelementptr inbounds double, ptr %17, i64 %881
  %1008 = load double, ptr %1007, align 8, !tbaa !9
  %1009 = fadd double %.6122915981610, %1008
  store double %1009, ptr %6, align 8, !tbaa !9
  br label %.loopexit

1010:                                             ; preds = %1005
  %1011 = load double, ptr %591, align 8, !tbaa !9
  %1012 = fadd double %.6122915981610, %1011
  store double %1012, ptr %6, align 8, !tbaa !9
  br label %.loopexit

1013:                                             ; preds = %974
  %1014 = fcmp ugt double %987, 0.000000e+00
  br i1 %1014, label %1018, label %1015

1015:                                             ; preds = %1013
  %1016 = fcmp oge double %.4119315991608, %.6122915981610
  %1017 = select i1 %1016, double %.4119315991608, double %.6122915981610
  br label %1021

1018:                                             ; preds = %1013
  %1019 = fcmp ole double %.4118516011606, %.6122915981610
  %1020 = select i1 %1019, double %.4118516011606, double %.6122915981610
  br label %1021

1021:                                             ; preds = %1018, %1015
  %.51194 = phi double [ %1017, %1015 ], [ %.4119315991608, %1018 ]
  %.51186 = phi double [ %.4118516011606, %1015 ], [ %1020, %1018 ]
  store i64 2, ptr %13, align 8, !tbaa !5
  %.not1291 = or i1 %or.cond1329, %.not12911330
  br i1 %.not1291, label %1022, label %1103

1022:                                             ; preds = %1021
  %1023 = getelementptr inbounds double, ptr %17, i64 %881
  %1024 = load double, ptr %1023, align 8, !tbaa !9
  br i1 %733, label %1039, label %1025

1025:                                             ; preds = %1022
  %1026 = getelementptr inbounds double, ptr %16, i64 %881
  %1027 = load double, ptr %1026, align 8, !tbaa !9
  %1028 = getelementptr inbounds double, ptr %15, i64 %881
  %1029 = load double, ptr %1028, align 8, !tbaa !9
  %1030 = fdiv double %1027, %1029
  %1031 = load double, ptr %724, align 8, !tbaa !9
  %1032 = fneg double %1031
  %1033 = tail call double @llvm.fmuladd.f64(double %1032, double %985, double %987)
  %1034 = load double, ptr %591, align 8, !tbaa !9
  %1035 = fsub double %1024, %1034
  %1036 = fmul double %1030, %1030
  %1037 = fneg double %1035
  %1038 = tail call double @llvm.fmuladd.f64(double %1037, double %1036, double %1033)
  br label %1052

1039:                                             ; preds = %1022
  %1040 = load double, ptr %723, align 8, !tbaa !9
  %1041 = load double, ptr %724, align 8, !tbaa !9
  %1042 = fdiv double %1040, %1041
  %1043 = getelementptr inbounds double, ptr %15, i64 %881
  %1044 = load double, ptr %1043, align 8, !tbaa !9
  %1045 = fneg double %1044
  %1046 = tail call double @llvm.fmuladd.f64(double %1045, double %985, double %987)
  %1047 = load double, ptr %591, align 8, !tbaa !9
  %1048 = fsub double %1047, %1024
  %1049 = fmul double %1042, %1042
  %1050 = fneg double %1048
  %1051 = tail call double @llvm.fmuladd.f64(double %1050, double %1049, double %1046)
  br label %1052

1052:                                             ; preds = %1039, %1025
  %1053 = phi double [ %1041, %1039 ], [ %1031, %1025 ]
  %1054 = phi double [ %1044, %1039 ], [ %1029, %1025 ]
  %1055 = phi double [ %1051, %1039 ], [ %1038, %1025 ]
  %1056 = fadd double %1054, %1053
  %1057 = fmul double %1054, %1053
  %1058 = fneg double %1057
  %1059 = fmul double %985, %1058
  %1060 = tail call double @llvm.fmuladd.f64(double %1056, double %987, double %1059)
  %1061 = fmul double %987, %1057
  %1062 = fcmp oeq double %1055, 0.000000e+00
  br i1 %1062, label %1063, label %1079

1063:                                             ; preds = %1052
  %1064 = fcmp oeq double %1060, 0.000000e+00
  br i1 %1064, label %1065, label %1077

1065:                                             ; preds = %1063
  br i1 %733, label %1072, label %1066

1066:                                             ; preds = %1065
  %1067 = getelementptr inbounds double, ptr %16, i64 %881
  %1068 = load double, ptr %1067, align 8, !tbaa !9
  %1069 = fmul double %1053, %1053
  %1070 = fmul double %984, %1069
  %1071 = tail call double @llvm.fmuladd.f64(double %1068, double %1068, double %1070)
  br label %1077

1072:                                             ; preds = %1065
  %1073 = load double, ptr %723, align 8, !tbaa !9
  %1074 = fmul double %1054, %1054
  %1075 = fmul double %984, %1074
  %1076 = tail call double @llvm.fmuladd.f64(double %1073, double %1073, double %1075)
  br label %1077

1077:                                             ; preds = %1066, %1072, %1063
  %.01249 = phi double [ %1071, %1066 ], [ %1076, %1072 ], [ %1060, %1063 ]
  %1078 = fdiv double %1061, %.01249
  store double %1078, ptr %12, align 8, !tbaa !9
  br label %1159

1079:                                             ; preds = %1052
  %1080 = fcmp ugt double %1060, 0.000000e+00
  br i1 %1080, label %1092, label %1081

1081:                                             ; preds = %1079
  %1082 = fmul double %1061, -4.000000e+00
  %1083 = fmul double %1055, %1082
  %1084 = tail call double @llvm.fmuladd.f64(double %1060, double %1060, double %1083)
  %1085 = fcmp oge double %1084, 0.000000e+00
  %1086 = fneg double %1084
  %1087 = select i1 %1085, double %1084, double %1086
  %1088 = tail call double @sqrt(double noundef %1087) #6
  %1089 = fsub double %1060, %1088
  %1090 = fmul double %1055, 2.000000e+00
  %1091 = fdiv double %1089, %1090
  store double %1091, ptr %12, align 8, !tbaa !9
  br label %1159

1092:                                             ; preds = %1079
  %1093 = fmul double %1061, 2.000000e+00
  %1094 = fmul double %1061, -4.000000e+00
  %1095 = fmul double %1055, %1094
  %1096 = tail call double @llvm.fmuladd.f64(double %1060, double %1060, double %1095)
  %1097 = fcmp oge double %1096, 0.000000e+00
  %1098 = fneg double %1096
  %1099 = select i1 %1097, double %1096, double %1098
  %1100 = tail call double @sqrt(double noundef %1099) #6
  %1101 = fadd double %1060, %1100
  %1102 = fdiv double %1093, %1101
  store double %1102, ptr %12, align 8, !tbaa !9
  br label %1159

1103:                                             ; preds = %1021
  %1104 = fadd double %30, %966
  %1105 = fadd double %1104, %964
  br i1 %733, label %1129, label %1106

1106:                                             ; preds = %1103
  %1107 = getelementptr inbounds double, ptr %16, i64 %882
  %1108 = load double, ptr %1107, align 8, !tbaa !9
  %1109 = getelementptr inbounds double, ptr %15, i64 %882
  %1110 = load double, ptr %1109, align 8, !tbaa !9
  %1111 = fdiv double %1108, %1110
  %1112 = fmul double %1111, %1111
  %1113 = getelementptr double, ptr %4, i64 %.01237
  %1114 = load double, ptr %1113, align 8, !tbaa !9
  %1115 = fneg double %1114
  %1116 = tail call double @llvm.fmuladd.f64(double %1115, double %984, double %1105)
  %1117 = getelementptr inbounds double, ptr %17, i64 %882
  %1118 = load double, ptr %1117, align 8, !tbaa !9
  %1119 = getelementptr double, ptr %2, i64 %.01237
  %1120 = load double, ptr %1119, align 8, !tbaa !9
  %1121 = fsub double %1118, %1120
  %1122 = fneg double %1121
  %1123 = tail call double @llvm.fmuladd.f64(double %1122, double %1112, double %1116)
  %1124 = fmul double %1108, %1108
  %1125 = fmul double %1114, %1114
  %1126 = fsub double %983, %1112
  %1127 = fadd double %982, %1126
  %1128 = fmul double %1125, %1127
  br label %1152

1129:                                             ; preds = %1103
  %1130 = getelementptr double, ptr %3, i64 %.01237
  %1131 = load double, ptr %1130, align 8, !tbaa !9
  %1132 = getelementptr double, ptr %4, i64 %.01237
  %1133 = load double, ptr %1132, align 8, !tbaa !9
  %1134 = fdiv double %1131, %1133
  %1135 = fmul double %1134, %1134
  %1136 = getelementptr inbounds double, ptr %15, i64 %882
  %1137 = load double, ptr %1136, align 8, !tbaa !9
  %1138 = fneg double %1137
  %1139 = tail call double @llvm.fmuladd.f64(double %1138, double %984, double %1105)
  %1140 = getelementptr double, ptr %2, i64 %.01237
  %1141 = load double, ptr %1140, align 8, !tbaa !9
  %1142 = getelementptr inbounds double, ptr %17, i64 %882
  %1143 = load double, ptr %1142, align 8, !tbaa !9
  %1144 = fsub double %1141, %1143
  %1145 = fneg double %1144
  %1146 = tail call double @llvm.fmuladd.f64(double %1145, double %1135, double %1139)
  %1147 = fmul double %1137, %1137
  %1148 = fsub double %982, %1135
  %1149 = fadd double %983, %1148
  %1150 = fmul double %1147, %1149
  %1151 = fmul double %1131, %1131
  br label %1152

1152:                                             ; preds = %1129, %1106
  %.sink1587 = phi double [ %1146, %1129 ], [ %1123, %1106 ]
  %.sink1586 = phi double [ %1150, %1129 ], [ %1124, %1106 ]
  %.sink = phi double [ %1151, %1129 ], [ %1128, %1106 ]
  store double %.sink1587, ptr %9, align 8
  store double %.sink1586, ptr %11, align 16
  %1153 = getelementptr inbounds i8, ptr %11, i64 16
  store double %.sink, ptr %1153, align 16
  %1154 = fmul double %978, %978
  %1155 = getelementptr inbounds i8, ptr %11, i64 8
  store double %1154, ptr %1155, align 8, !tbaa !9
  %1156 = getelementptr inbounds double, ptr %15, i64 %882
  %1157 = call i32 @dlaed6_(ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %9, ptr noundef nonnull %1156, ptr noundef nonnull %11, ptr noundef nonnull %10, ptr noundef nonnull %12, ptr noundef nonnull %7) #6
  %1158 = load i64, ptr %7, align 8, !tbaa !5
  %.not1295 = icmp eq i64 %1158, 0
  br i1 %.not1295, label %._crit_edge1588, label %.loopexit

._crit_edge1588:                                  ; preds = %1152
  %.pre = load double, ptr %10, align 8, !tbaa !9
  %.pre1589 = load double, ptr %12, align 8, !tbaa !9
  br label %1159

1159:                                             ; preds = %._crit_edge1588, %1077, %1092, %1081
  %1160 = phi double [ %.pre1589, %._crit_edge1588 ], [ %1078, %1077 ], [ %1102, %1092 ], [ %1091, %1081 ]
  %1161 = phi double [ %.pre, %._crit_edge1588 ], [ %987, %1077 ], [ %987, %1092 ], [ %987, %1081 ]
  %1162 = fmul double %1161, %1160
  %1163 = fcmp ult double %1162, 0.000000e+00
  br i1 %1163, label %1167, label %1164

1164:                                             ; preds = %1159
  %1165 = fneg double %1161
  %1166 = fdiv double %1165, %985
  store double %1166, ptr %12, align 8, !tbaa !9
  br label %1167

1167:                                             ; preds = %1164, %1159
  %1168 = phi double [ %1166, %1164 ], [ %1160, %1159 ]
  %1169 = fadd double %.6122915981610, %1168
  %1170 = fcmp ogt double %1169, %.51186
  %1171 = fcmp olt double %1169, %.51194
  %or.cond1327 = select i1 %1170, i1 true, i1 %1171
  br i1 %or.cond1327, label %1172, label %1180

1172:                                             ; preds = %1167
  %1173 = fcmp olt double %1161, 0.000000e+00
  br i1 %1173, label %1174, label %1177

1174:                                             ; preds = %1172
  %1175 = fsub double %.51186, %.6122915981610
  %1176 = fmul double %1175, 5.000000e-01
  store double %1176, ptr %12, align 8, !tbaa !9
  br label %1180

1177:                                             ; preds = %1172
  %1178 = fsub double %.51194, %.6122915981610
  %1179 = fmul double %1178, 5.000000e-01
  store double %1179, ptr %12, align 8, !tbaa !9
  br label %1180

1180:                                             ; preds = %1167, %1174, %1177
  %1181 = phi double [ %1168, %1167 ], [ %1176, %1174 ], [ %1179, %1177 ]
  %1182 = load i64, ptr %0, align 8, !tbaa !5
  %.not12961381 = icmp slt i64 %1182, 1
  br i1 %.not12961381, label %.preheader1331, label %.lr.ph1384.preheader

.lr.ph1384.preheader:                             ; preds = %1180
  %min.iters.check1762 = icmp ult i64 %1182, 4
  br i1 %min.iters.check1762, label %.lr.ph1384.preheader1915, label %vector.ph1763

.lr.ph1384.preheader1915:                         ; preds = %middle.block1760, %.lr.ph1384.preheader
  %.151382.ph = phi i64 [ 1, %.lr.ph1384.preheader ], [ %ind.end1766, %middle.block1760 ]
  br label %.lr.ph1384

vector.ph1763:                                    ; preds = %.lr.ph1384.preheader
  %n.vec1765 = and i64 %1182, 9223372036854775804
  %ind.end1766 = or disjoint i64 %n.vec1765, 1
  %broadcast.splatinsert = insertelement <2 x double> poison, double %1181, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1768

vector.body1768:                                  ; preds = %vector.body1768, %vector.ph1763
  %index1769 = phi i64 [ 0, %vector.ph1763 ], [ %index.next1773, %vector.body1768 ]
  %1183 = getelementptr double, ptr %4, i64 %index1769
  %1184 = getelementptr inbounds i8, ptr %1183, i64 16
  %wide.load1771 = load <2 x double>, ptr %1183, align 8, !tbaa !9
  %wide.load1772 = load <2 x double>, ptr %1184, align 8, !tbaa !9
  %1185 = fsub <2 x double> %wide.load1771, %broadcast.splat
  %1186 = fsub <2 x double> %wide.load1772, %broadcast.splat
  store <2 x double> %1185, ptr %1183, align 8, !tbaa !9
  store <2 x double> %1186, ptr %1184, align 8, !tbaa !9
  %index.next1773 = add nuw i64 %index1769, 4
  %1187 = icmp eq i64 %index.next1773, %n.vec1765
  br i1 %1187, label %middle.block1760, label %vector.body1768, !llvm.loop !81

middle.block1760:                                 ; preds = %vector.body1768
  %cmp.n1774 = icmp eq i64 %1182, %n.vec1765
  br i1 %cmp.n1774, label %.preheader1331, label %.lr.ph1384.preheader1915

.preheader1331:                                   ; preds = %.lr.ph1384, %middle.block1760, %1180
  br i1 %.not1288.not1359, label %.lr.ph1390.preheader, label %._crit_edge1391

.lr.ph1390.preheader:                             ; preds = %.preheader1331
  %1188 = add nsw i64 %.01237, -1
  %xtraiter1947 = and i64 %1188, 1
  %1189 = icmp eq i64 %.01237, 2
  br i1 %1189, label %._crit_edge1391.loopexit.unr-lcssa, label %.lr.ph1390.preheader.new

.lr.ph1390.preheader.new:                         ; preds = %.lr.ph1390.preheader
  %unroll_iter1954 = and i64 %1188, -2
  br label %.lr.ph1390

.lr.ph1384:                                       ; preds = %.lr.ph1384.preheader1915, %.lr.ph1384
  %.151382 = phi i64 [ %1193, %.lr.ph1384 ], [ %.151382.ph, %.lr.ph1384.preheader1915 ]
  %1190 = getelementptr inbounds double, ptr %15, i64 %.151382
  %1191 = load double, ptr %1190, align 8, !tbaa !9
  %1192 = fsub double %1191, %1181
  store double %1192, ptr %1190, align 8, !tbaa !9
  %1193 = add nuw i64 %.151382, 1
  %exitcond1573.not = icmp eq i64 %.151382, %1182
  br i1 %exitcond1573.not, label %.preheader1331, label %.lr.ph1384, !llvm.loop !82

.lr.ph1390:                                       ; preds = %.lr.ph1390, %.lr.ph1390.preheader.new
  %.61389 = phi double [ 0.000000e+00, %.lr.ph1390.preheader.new ], [ %1216, %.lr.ph1390 ]
  %.161386 = phi i64 [ 1, %.lr.ph1390.preheader.new ], [ %1217, %.lr.ph1390 ]
  %1194 = phi <2 x double> [ zeroinitializer, %.lr.ph1390.preheader.new ], [ %1214, %.lr.ph1390 ]
  %niter1955 = phi i64 [ 0, %.lr.ph1390.preheader.new ], [ %niter1955.next.1, %.lr.ph1390 ]
  %1195 = getelementptr inbounds double, ptr %16, i64 %.161386
  %1196 = load double, ptr %1195, align 8, !tbaa !9
  %1197 = getelementptr inbounds double, ptr %15, i64 %.161386
  %1198 = load double, ptr %1197, align 8, !tbaa !9
  %1199 = fdiv double %1196, %1198
  %1200 = insertelement <2 x double> poison, double %1199, i64 0
  %1201 = insertelement <2 x double> %1200, double %1196, i64 1
  %1202 = shufflevector <2 x double> %1200, <2 x double> poison, <2 x i32> zeroinitializer
  %1203 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1201, <2 x double> %1202, <2 x double> %1194)
  %1204 = extractelement <2 x double> %1203, i64 1
  %1205 = fadd double %.61389, %1204
  %1206 = getelementptr double, ptr %3, i64 %.161386
  %1207 = load double, ptr %1206, align 8, !tbaa !9
  %1208 = getelementptr double, ptr %4, i64 %.161386
  %1209 = load double, ptr %1208, align 8, !tbaa !9
  %1210 = fdiv double %1207, %1209
  %1211 = insertelement <2 x double> poison, double %1210, i64 0
  %1212 = insertelement <2 x double> %1211, double %1207, i64 1
  %1213 = shufflevector <2 x double> %1211, <2 x double> poison, <2 x i32> zeroinitializer
  %1214 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1212, <2 x double> %1213, <2 x double> %1203)
  %1215 = extractelement <2 x double> %1214, i64 1
  %1216 = fadd double %1205, %1215
  %1217 = add nuw nsw i64 %.161386, 2
  %niter1955.next.1 = add i64 %niter1955, 2
  %niter1955.ncmp.1 = icmp eq i64 %niter1955.next.1, %unroll_iter1954
  br i1 %niter1955.ncmp.1, label %._crit_edge1391.loopexit.unr-lcssa.loopexit, label %.lr.ph1390, !llvm.loop !83

._crit_edge1391.loopexit.unr-lcssa.loopexit:      ; preds = %.lr.ph1390
  %1218 = extractelement <2 x double> %1214, i64 0
  br label %._crit_edge1391.loopexit.unr-lcssa

._crit_edge1391.loopexit.unr-lcssa:               ; preds = %._crit_edge1391.loopexit.unr-lcssa.loopexit, %.lr.ph1390.preheader
  %.lcssa1914.ph = phi double [ poison, %.lr.ph1390.preheader ], [ %1215, %._crit_edge1391.loopexit.unr-lcssa.loopexit ]
  %.lcssa1913.ph = phi double [ poison, %.lr.ph1390.preheader ], [ %1216, %._crit_edge1391.loopexit.unr-lcssa.loopexit ]
  %.lcssa1912.ph = phi double [ poison, %.lr.ph1390.preheader ], [ %1218, %._crit_edge1391.loopexit.unr-lcssa.loopexit ]
  %.61389.unr = phi double [ 0.000000e+00, %.lr.ph1390.preheader ], [ %1216, %._crit_edge1391.loopexit.unr-lcssa.loopexit ]
  %.161386.unr = phi i64 [ 1, %.lr.ph1390.preheader ], [ %1217, %._crit_edge1391.loopexit.unr-lcssa.loopexit ]
  %.unr1949 = phi <2 x double> [ zeroinitializer, %.lr.ph1390.preheader ], [ %1214, %._crit_edge1391.loopexit.unr-lcssa.loopexit ]
  %lcmp.mod1950.not = icmp eq i64 %xtraiter1947, 0
  br i1 %lcmp.mod1950.not, label %._crit_edge1391, label %.lr.ph1390.epil

.lr.ph1390.epil:                                  ; preds = %._crit_edge1391.loopexit.unr-lcssa
  %1219 = getelementptr inbounds double, ptr %16, i64 %.161386.unr
  %1220 = load double, ptr %1219, align 8, !tbaa !9
  %1221 = getelementptr inbounds double, ptr %15, i64 %.161386.unr
  %1222 = load double, ptr %1221, align 8, !tbaa !9
  %1223 = fdiv double %1220, %1222
  %1224 = insertelement <2 x double> poison, double %1223, i64 0
  %1225 = insertelement <2 x double> %1224, double %1220, i64 1
  %1226 = shufflevector <2 x double> %1224, <2 x double> poison, <2 x i32> zeroinitializer
  %1227 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1225, <2 x double> %1226, <2 x double> %.unr1949)
  %1228 = extractelement <2 x double> %1227, i64 1
  %1229 = fadd double %.61389.unr, %1228
  %1230 = extractelement <2 x double> %1227, i64 0
  br label %._crit_edge1391

._crit_edge1391:                                  ; preds = %.lr.ph1390.epil, %._crit_edge1391.loopexit.unr-lcssa, %.preheader1331
  %.61220.lcssa = phi double [ 0.000000e+00, %.preheader1331 ], [ %.lcssa1914.ph, %._crit_edge1391.loopexit.unr-lcssa ], [ %1228, %.lr.ph1390.epil ]
  %.51202.lcssa = phi double [ 0.000000e+00, %.preheader1331 ], [ %.lcssa1912.ph, %._crit_edge1391.loopexit.unr-lcssa ], [ %1230, %.lr.ph1390.epil ]
  %.6.lcssa = phi double [ 0.000000e+00, %.preheader1331 ], [ %.lcssa1913.ph, %._crit_edge1391.loopexit.unr-lcssa ], [ %1229, %.lr.ph1390.epil ]
  %1231 = fcmp oge double %.6.lcssa, 0.000000e+00
  %1232 = fneg double %.6.lcssa
  %1233 = select i1 %1231, double %.6.lcssa, double %1232
  %.not1298.not1395 = icmp sgt i64 %1182, %.01237
  br i1 %.not1298.not1395, label %.lr.ph1401.preheader, label %._crit_edge1402

.lr.ph1401.preheader:                             ; preds = %._crit_edge1391
  %1234 = sub i64 %1182, %.01237
  %.neg2009 = add i64 %.01237, 1
  %xtraiter1956 = and i64 %1234, 1
  %lcmp.mod1957.not = icmp eq i64 %xtraiter1956, 0
  br i1 %lcmp.mod1957.not, label %.lr.ph1401.prol.loopexit, label %.lr.ph1401.prol

.lr.ph1401.prol:                                  ; preds = %.lr.ph1401.preheader
  %1235 = getelementptr inbounds double, ptr %16, i64 %1182
  %1236 = load double, ptr %1235, align 8, !tbaa !9
  %1237 = getelementptr inbounds double, ptr %15, i64 %1182
  %1238 = load double, ptr %1237, align 8, !tbaa !9
  %1239 = fdiv double %1236, %1238
  %1240 = insertelement <2 x double> poison, double %1239, i64 0
  %1241 = insertelement <2 x double> %1240, double %1236, i64 1
  %1242 = shufflevector <2 x double> %1240, <2 x double> poison, <2 x i32> zeroinitializer
  %1243 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1241, <2 x double> %1242, <2 x double> zeroinitializer)
  %1244 = extractelement <2 x double> %1243, i64 1
  %1245 = fadd double %1233, %1244
  %1246 = add nsw i64 %1182, -1
  %1247 = extractelement <2 x double> %1243, i64 0
  br label %.lr.ph1401.prol.loopexit

.lr.ph1401.prol.loopexit:                         ; preds = %.lr.ph1401.prol, %.lr.ph1401.preheader
  %.71399.unr = phi double [ %1233, %.lr.ph1401.preheader ], [ %1245, %.lr.ph1401.prol ]
  %.171396.unr = phi i64 [ %1182, %.lr.ph1401.preheader ], [ %1246, %.lr.ph1401.prol ]
  %.unr1959 = phi <2 x double> [ zeroinitializer, %.lr.ph1401.preheader ], [ %1243, %.lr.ph1401.prol ]
  %.lcssa1911.unr = phi double [ poison, %.lr.ph1401.preheader ], [ %1244, %.lr.ph1401.prol ]
  %.lcssa1910.unr = phi double [ poison, %.lr.ph1401.preheader ], [ %1245, %.lr.ph1401.prol ]
  %.lcssa1909.unr = phi double [ poison, %.lr.ph1401.preheader ], [ %1247, %.lr.ph1401.prol ]
  %1248 = icmp eq i64 %1182, %.neg2009
  br i1 %1248, label %._crit_edge1402, label %.lr.ph1401

.lr.ph1401:                                       ; preds = %.lr.ph1401.prol.loopexit, %.lr.ph1401
  %.71399 = phi double [ %1272, %.lr.ph1401 ], [ %.71399.unr, %.lr.ph1401.prol.loopexit ]
  %.171396 = phi i64 [ %1273, %.lr.ph1401 ], [ %.171396.unr, %.lr.ph1401.prol.loopexit ]
  %1249 = phi <2 x double> [ %1270, %.lr.ph1401 ], [ %.unr1959, %.lr.ph1401.prol.loopexit ]
  %1250 = getelementptr inbounds double, ptr %16, i64 %.171396
  %1251 = load double, ptr %1250, align 8, !tbaa !9
  %1252 = getelementptr inbounds double, ptr %15, i64 %.171396
  %1253 = load double, ptr %1252, align 8, !tbaa !9
  %1254 = fdiv double %1251, %1253
  %1255 = insertelement <2 x double> poison, double %1254, i64 0
  %1256 = insertelement <2 x double> %1255, double %1251, i64 1
  %1257 = shufflevector <2 x double> %1255, <2 x double> poison, <2 x i32> zeroinitializer
  %1258 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1256, <2 x double> %1257, <2 x double> %1249)
  %1259 = extractelement <2 x double> %1258, i64 1
  %1260 = fadd double %.71399, %1259
  %1261 = add nsw i64 %.171396, -1
  %1262 = getelementptr inbounds double, ptr %16, i64 %1261
  %1263 = load double, ptr %1262, align 8, !tbaa !9
  %1264 = getelementptr inbounds double, ptr %15, i64 %1261
  %1265 = load double, ptr %1264, align 8, !tbaa !9
  %1266 = fdiv double %1263, %1265
  %1267 = insertelement <2 x double> poison, double %1266, i64 0
  %1268 = insertelement <2 x double> %1267, double %1263, i64 1
  %1269 = shufflevector <2 x double> %1267, <2 x double> poison, <2 x i32> zeroinitializer
  %1270 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1268, <2 x double> %1269, <2 x double> %1258)
  %1271 = extractelement <2 x double> %1270, i64 1
  %1272 = fadd double %1260, %1271
  %1273 = add nsw i64 %.171396, -2
  %.not1298.not.1 = icmp sgt i64 %1273, %.01237
  br i1 %.not1298.not.1, label %.lr.ph1401, label %._crit_edge1402.loopexit.unr-lcssa, !llvm.loop !84

._crit_edge1402.loopexit.unr-lcssa:               ; preds = %.lr.ph1401
  %1274 = extractelement <2 x double> %1270, i64 0
  br label %._crit_edge1402

._crit_edge1402:                                  ; preds = %._crit_edge1402.loopexit.unr-lcssa, %.lr.ph1401.prol.loopexit, %._crit_edge1391
  %.21233.lcssa = phi double [ 0.000000e+00, %._crit_edge1391 ], [ %.lcssa1911.unr, %.lr.ph1401.prol.loopexit ], [ %1271, %._crit_edge1402.loopexit.unr-lcssa ]
  %.21209.lcssa = phi double [ 0.000000e+00, %._crit_edge1391 ], [ %.lcssa1909.unr, %.lr.ph1401.prol.loopexit ], [ %1274, %._crit_edge1402.loopexit.unr-lcssa ]
  %.7.lcssa = phi double [ %1233, %._crit_edge1391 ], [ %.lcssa1910.unr, %.lr.ph1401.prol.loopexit ], [ %1272, %._crit_edge1402.loopexit.unr-lcssa ]
  %1275 = load double, ptr %977, align 8, !tbaa !9
  %1276 = load double, ptr %979, align 8, !tbaa !9
  %1277 = fdiv double %1275, %1276
  %1278 = fadd double %.51202.lcssa, %.21209.lcssa
  %1279 = call double @llvm.fmuladd.f64(double %1277, double %1277, double %1278)
  %1280 = fmul double %1275, %1277
  %1281 = fadd double %30, %.21233.lcssa
  %1282 = fadd double %.61220.lcssa, %1281
  %1283 = fadd double %1282, %1280
  store double %1283, ptr %10, align 8, !tbaa !9
  %1284 = fsub double %.21233.lcssa, %.61220.lcssa
  %1285 = call double @llvm.fmuladd.f64(double %1284, double 8.000000e+00, double %.7.lcssa)
  %1286 = call double @llvm.fmuladd.f64(double %30, double 2.000000e+00, double %1285)
  %1287 = fcmp oge double %1280, 0.000000e+00
  %1288 = fneg double %1280
  %1289 = select i1 %1287, double %1280, double %1288
  %1290 = call double @llvm.fmuladd.f64(double %1289, double 3.000000e+00, double %1286)
  %1291 = fadd double %.6122915981610, %1181
  %1292 = fcmp oge double %1291, 0.000000e+00
  %1293 = fneg double %1291
  %1294 = select i1 %1292, double %1291, double %1293
  %1295 = call double @llvm.fmuladd.f64(double %1294, double %1279, double %1290)
  %1296 = load i64, ptr %14, align 8, !tbaa !5
  %.not1299 = icmp eq i64 %1296, 0
  br i1 %.not1299, label %1305, label %1297

1297:                                             ; preds = %._crit_edge1402
  %1298 = fneg double %1283
  %1299 = fcmp oge double %1161, 0.000000e+00
  %1300 = fneg double %1161
  %1301 = select i1 %1299, double %1161, double %1300
  %1302 = fdiv double %1301, 1.000000e+01
  %1303 = fcmp olt double %1302, %1298
  br i1 %1303, label %1304, label %1312

1304:                                             ; preds = %1297
  br label %1312

1305:                                             ; preds = %._crit_edge1402
  %1306 = fcmp oge double %1161, 0.000000e+00
  %1307 = fneg double %1161
  %1308 = select i1 %1306, double %1161, double %1307
  %1309 = fdiv double %1308, 1.000000e+01
  %1310 = fcmp ogt double %1283, %1309
  br i1 %1310, label %1311, label %1312

1311:                                             ; preds = %1305
  br label %1312

1312:                                             ; preds = %1305, %1311, %1297, %1304
  %.01178 = phi i64 [ 1, %1304 ], [ 0, %1297 ], [ 1, %1311 ], [ 0, %1305 ]
  %storemerge1300.in1433 = load i64, ptr %13, align 8, !tbaa !5
  %storemerge13001434 = add nsw i64 %storemerge1300.in1433, 1
  store i64 %storemerge13001434, ptr %13, align 8, !tbaa !5
  %1313 = icmp slt i64 %storemerge1300.in1433, 30
  br i1 %1313, label %.lr.ph1446, label %._crit_edge1447

.lr.ph1446:                                       ; preds = %1312
  %1314 = getelementptr inbounds double, ptr %15, i64 %882
  %1315 = getelementptr double, ptr %4, i64 %.01237
  %1316 = getelementptr inbounds i8, ptr %11, i64 16
  %1317 = getelementptr inbounds double, ptr %16, i64 %882
  %1318 = getelementptr inbounds double, ptr %17, i64 %882
  %1319 = getelementptr double, ptr %2, i64 %.01237
  %1320 = getelementptr double, ptr %3, i64 %.01237
  %1321 = add i64 %.01237, -1
  %.neg2010 = add i64 %.01237, 1
  %xtraiter1960 = and i64 %1321, 1
  %1322 = icmp eq i64 %.01237, 2
  %unroll_iter1967 = and i64 %1321, -2
  %lcmp.mod1963.not = icmp eq i64 %xtraiter1960, 0
  br label %1323

1323:                                             ; preds = %.lr.ph1446, %1666
  %1324 = phi double [ %1276, %.lr.ph1446 ], [ %1634, %1666 ]
  %1325 = phi double [ %1275, %.lr.ph1446 ], [ %1633, %1666 ]
  %1326 = phi double [ %1283, %.lr.ph1446 ], [ %1641, %1666 ]
  %.81444 = phi double [ %1295, %.lr.ph1446 ], [ %1652, %1666 ]
  %.111791443 = phi i64 [ %.01178, %.lr.ph1446 ], [ %.21180, %1666 ]
  %.611871442 = phi double [ %.51186, %.lr.ph1446 ], [ %.71188, %1666 ]
  %.611951441 = phi double [ %.51194, %.lr.ph1446 ], [ %.71196, %1666 ]
  %.612031440 = phi double [ %.51202.lcssa, %.lr.ph1446 ], [ %.91206.lcssa, %1666 ]
  %.312101439 = phi double [ %.21209.lcssa, %.lr.ph1446 ], [ %.61213.lcssa, %1666 ]
  %.712211438 = phi double [ %.61220.lcssa, %.lr.ph1446 ], [ %.81222.lcssa, %1666 ]
  %.712301437 = phi double [ %1291, %.lr.ph1446 ], [ %1551, %1666 ]
  %.312341436 = phi double [ %.21233.lcssa, %.lr.ph1446 ], [ %.41235.lcssa, %1666 ]
  %.012361435 = phi double [ %1279, %.lr.ph1446 ], [ %1637, %1666 ]
  %1327 = fcmp oge double %1326, 0.000000e+00
  %1328 = fneg double %1326
  %1329 = select i1 %1327, double %1326, double %1328
  %1330 = fmul double %28, %.81444
  %1331 = fcmp ugt double %1329, %1330
  br i1 %1331, label %1342, label %1332

1332:                                             ; preds = %1323
  %1333 = load i64, ptr %14, align 8, !tbaa !5
  %.not1313 = icmp eq i64 %1333, 0
  br i1 %.not1313, label %1339, label %1334

1334:                                             ; preds = %1332
  %1335 = load i64, ptr %1, align 8, !tbaa !5
  %1336 = getelementptr inbounds double, ptr %17, i64 %1335
  %1337 = load double, ptr %1336, align 8, !tbaa !9
  %1338 = fadd double %.712301437, %1337
  store double %1338, ptr %6, align 8, !tbaa !9
  br label %.loopexit

1339:                                             ; preds = %1332
  %1340 = load double, ptr %591, align 8, !tbaa !9
  %1341 = fadd double %.712301437, %1340
  store double %1341, ptr %6, align 8, !tbaa !9
  br label %.loopexit

1342:                                             ; preds = %1323
  %1343 = fcmp ugt double %1326, 0.000000e+00
  br i1 %1343, label %1347, label %1344

1344:                                             ; preds = %1342
  %1345 = fcmp oge double %.611951441, %.712301437
  %1346 = select i1 %1345, double %.611951441, double %.712301437
  br label %1350

1347:                                             ; preds = %1342
  %1348 = fcmp ole double %.611871442, %.712301437
  %1349 = select i1 %1348, double %.611871442, double %.712301437
  br label %1350

1350:                                             ; preds = %1347, %1344
  %.71196 = phi double [ %1346, %1344 ], [ %.611951441, %1347 ]
  %.71188 = phi double [ %.611871442, %1344 ], [ %1349, %1347 ]
  br i1 %.not1291, label %1351, label %1462

1351:                                             ; preds = %1350
  %.not1302 = icmp eq i64 %.111791443, 0
  br i1 %.not1302, label %1352, label %1387

1352:                                             ; preds = %1351
  %1353 = load i64, ptr %14, align 8, !tbaa !5
  %.not1303 = icmp eq i64 %1353, 0
  br i1 %.not1303, label %1371, label %1354

1354:                                             ; preds = %1352
  %1355 = load i64, ptr %1, align 8, !tbaa !5
  %1356 = getelementptr inbounds double, ptr %16, i64 %1355
  %1357 = load double, ptr %1356, align 8, !tbaa !9
  %1358 = getelementptr inbounds double, ptr %15, i64 %1355
  %1359 = load double, ptr %1358, align 8, !tbaa !9
  %1360 = fdiv double %1357, %1359
  %1361 = load double, ptr %724, align 8, !tbaa !9
  %1362 = fneg double %1361
  %1363 = call double @llvm.fmuladd.f64(double %1362, double %.012361435, double %1326)
  %1364 = getelementptr inbounds double, ptr %17, i64 %1355
  %1365 = load double, ptr %1364, align 8, !tbaa !9
  %1366 = load double, ptr %591, align 8, !tbaa !9
  %1367 = fsub double %1365, %1366
  %1368 = fmul double %1360, %1360
  %1369 = fneg double %1367
  %1370 = call double @llvm.fmuladd.f64(double %1369, double %1368, double %1363)
  store double %1370, ptr %9, align 8, !tbaa !9
  br label %1400

1371:                                             ; preds = %1352
  %1372 = load double, ptr %723, align 8, !tbaa !9
  %1373 = load double, ptr %724, align 8, !tbaa !9
  %1374 = fdiv double %1372, %1373
  %1375 = load i64, ptr %1, align 8, !tbaa !5
  %1376 = getelementptr inbounds double, ptr %15, i64 %1375
  %1377 = load double, ptr %1376, align 8, !tbaa !9
  %1378 = fneg double %1377
  %1379 = call double @llvm.fmuladd.f64(double %1378, double %.012361435, double %1326)
  %1380 = load double, ptr %591, align 8, !tbaa !9
  %1381 = getelementptr inbounds double, ptr %17, i64 %1375
  %1382 = load double, ptr %1381, align 8, !tbaa !9
  %1383 = fsub double %1380, %1382
  %1384 = fmul double %1374, %1374
  %1385 = fneg double %1383
  %1386 = call double @llvm.fmuladd.f64(double %1385, double %1384, double %1379)
  store double %1386, ptr %9, align 8, !tbaa !9
  br label %1400

1387:                                             ; preds = %1351
  %1388 = fdiv double %1325, %1324
  %1389 = load i64, ptr %14, align 8, !tbaa !5
  %.not1304 = icmp eq i64 %1389, 0
  %1390 = call double @llvm.fmuladd.f64(double %1388, double %1388, double %.612031440)
  %1391 = call double @llvm.fmuladd.f64(double %1388, double %1388, double %.312101439)
  %.41211 = select i1 %.not1304, double %1391, double %.312101439
  %.71204 = select i1 %.not1304, double %.612031440, double %1390
  %1392 = load i64, ptr %1, align 8, !tbaa !5
  %1393 = getelementptr inbounds double, ptr %15, i64 %1392
  %1394 = load double, ptr %1393, align 8, !tbaa !9
  %1395 = fneg double %1394
  %1396 = call double @llvm.fmuladd.f64(double %1395, double %.71204, double %1326)
  %1397 = load double, ptr %724, align 8, !tbaa !9
  %1398 = fneg double %1397
  %1399 = call double @llvm.fmuladd.f64(double %1398, double %.41211, double %1396)
  store double %1399, ptr %9, align 8, !tbaa !9
  br label %1400

1400:                                             ; preds = %1354, %1371, %1387
  %1401 = phi i64 [ %1389, %1387 ], [ 1, %1354 ], [ 0, %1371 ]
  %1402 = phi double [ %1399, %1387 ], [ %1370, %1354 ], [ %1386, %1371 ]
  %1403 = phi double [ %1397, %1387 ], [ %1361, %1354 ], [ %1373, %1371 ]
  %1404 = phi double [ %1394, %1387 ], [ %1359, %1354 ], [ %1377, %1371 ]
  %1405 = phi i64 [ %1392, %1387 ], [ %1355, %1354 ], [ %1375, %1371 ]
  %.51212 = phi double [ %.41211, %1387 ], [ %.312101439, %1354 ], [ %.312101439, %1371 ]
  %.81205 = phi double [ %.71204, %1387 ], [ %.612031440, %1354 ], [ %.612031440, %1371 ]
  %1406 = fadd double %1404, %1403
  %1407 = fmul double %1404, %1403
  %1408 = fneg double %1407
  %1409 = fmul double %.012361435, %1408
  %1410 = call double @llvm.fmuladd.f64(double %1406, double %1326, double %1409)
  %1411 = fmul double %1326, %1407
  %1412 = fcmp oeq double %1402, 0.000000e+00
  br i1 %1412, label %1413, label %1437

1413:                                             ; preds = %1400
  %1414 = fcmp oeq double %1410, 0.000000e+00
  br i1 %1414, label %1415, label %1435

1415:                                             ; preds = %1413
  br i1 %.not1302, label %1416, label %1430

1416:                                             ; preds = %1415
  %.not1305 = icmp eq i64 %1401, 0
  br i1 %.not1305, label %1424, label %1417

1417:                                             ; preds = %1416
  %1418 = getelementptr inbounds double, ptr %16, i64 %1405
  %1419 = load double, ptr %1418, align 8, !tbaa !9
  %1420 = fmul double %1403, %1403
  %1421 = fadd double %.51212, %.81205
  %1422 = fmul double %1421, %1420
  %1423 = call double @llvm.fmuladd.f64(double %1419, double %1419, double %1422)
  br label %1435

1424:                                             ; preds = %1416
  %1425 = load double, ptr %723, align 8, !tbaa !9
  %1426 = fmul double %1404, %1404
  %1427 = fadd double %.51212, %.81205
  %1428 = fmul double %1427, %1426
  %1429 = call double @llvm.fmuladd.f64(double %1425, double %1425, double %1428)
  br label %1435

1430:                                             ; preds = %1415
  %1431 = fmul double %1404, %1404
  %1432 = fmul double %1403, %1403
  %1433 = fmul double %.51212, %1432
  %1434 = call double @llvm.fmuladd.f64(double %1431, double %.81205, double %1433)
  br label %1435

1435:                                             ; preds = %1430, %1424, %1417, %1413
  %.11250 = phi double [ %1434, %1430 ], [ %1423, %1417 ], [ %1429, %1424 ], [ %1410, %1413 ]
  %1436 = fdiv double %1411, %.11250
  store double %1436, ptr %12, align 8, !tbaa !9
  br label %1518

1437:                                             ; preds = %1400
  %1438 = fcmp ugt double %1410, 0.000000e+00
  br i1 %1438, label %1451, label %1439

1439:                                             ; preds = %1437
  %1440 = fmul double %1411, -4.000000e+00
  %1441 = fmul double %1402, %1440
  %1442 = call double @llvm.fmuladd.f64(double %1410, double %1410, double %1441)
  %1443 = fcmp oge double %1442, 0.000000e+00
  %1444 = fneg double %1442
  %1445 = select i1 %1443, double %1442, double %1444
  %1446 = call double @sqrt(double noundef %1445) #6
  %1447 = fsub double %1410, %1446
  %1448 = load double, ptr %9, align 8, !tbaa !9
  %1449 = fmul double %1448, 2.000000e+00
  %1450 = fdiv double %1447, %1449
  store double %1450, ptr %12, align 8, !tbaa !9
  br label %1518

1451:                                             ; preds = %1437
  %1452 = fmul double %1411, 2.000000e+00
  %1453 = fmul double %1411, -4.000000e+00
  %1454 = fmul double %1402, %1453
  %1455 = call double @llvm.fmuladd.f64(double %1410, double %1410, double %1454)
  %1456 = fcmp oge double %1455, 0.000000e+00
  %1457 = fneg double %1455
  %1458 = select i1 %1456, double %1455, double %1457
  %1459 = call double @sqrt(double noundef %1458) #6
  %1460 = fadd double %1410, %1459
  %1461 = fdiv double %1452, %1460
  store double %1461, ptr %12, align 8, !tbaa !9
  br label %1518

1462:                                             ; preds = %1350
  %1463 = fadd double %30, %.712211438
  %1464 = fadd double %.312341436, %1463
  %.not1306 = icmp eq i64 %.111791443, 0
  br i1 %.not1306, label %1476, label %1465

1465:                                             ; preds = %1462
  %1466 = load double, ptr %1314, align 8, !tbaa !9
  %1467 = fneg double %1466
  %1468 = call double @llvm.fmuladd.f64(double %1467, double %.612031440, double %1464)
  %1469 = load double, ptr %1315, align 8, !tbaa !9
  %1470 = fneg double %1469
  %1471 = call double @llvm.fmuladd.f64(double %1470, double %.312101439, double %1468)
  store double %1471, ptr %9, align 8, !tbaa !9
  %1472 = fmul double %1466, %1466
  %1473 = fmul double %.612031440, %1472
  store double %1473, ptr %11, align 16, !tbaa !9
  %1474 = fmul double %1469, %1469
  %1475 = fmul double %.312101439, %1474
  br label %1515

1476:                                             ; preds = %1462
  %1477 = load i64, ptr %14, align 8, !tbaa !5
  %.not1307 = icmp eq i64 %1477, 0
  %1478 = fadd double %.312101439, %.612031440
  br i1 %.not1307, label %1497, label %1479

1479:                                             ; preds = %1476
  %1480 = load double, ptr %1317, align 8, !tbaa !9
  %1481 = load double, ptr %1314, align 8, !tbaa !9
  %1482 = fdiv double %1480, %1481
  %1483 = fmul double %1482, %1482
  %1484 = load double, ptr %1315, align 8, !tbaa !9
  %1485 = fneg double %1484
  %1486 = call double @llvm.fmuladd.f64(double %1485, double %1478, double %1464)
  %1487 = load double, ptr %1318, align 8, !tbaa !9
  %1488 = load double, ptr %1319, align 8, !tbaa !9
  %1489 = fsub double %1487, %1488
  %1490 = fneg double %1489
  %1491 = call double @llvm.fmuladd.f64(double %1490, double %1483, double %1486)
  store double %1491, ptr %9, align 8, !tbaa !9
  %1492 = fmul double %1480, %1480
  store double %1492, ptr %11, align 16, !tbaa !9
  %1493 = fmul double %1484, %1484
  %1494 = fsub double %.612031440, %1483
  %1495 = fadd double %.312101439, %1494
  %1496 = fmul double %1493, %1495
  br label %1515

1497:                                             ; preds = %1476
  %1498 = load double, ptr %1320, align 8, !tbaa !9
  %1499 = load double, ptr %1315, align 8, !tbaa !9
  %1500 = fdiv double %1498, %1499
  %1501 = fmul double %1500, %1500
  %1502 = load double, ptr %1314, align 8, !tbaa !9
  %1503 = fneg double %1502
  %1504 = call double @llvm.fmuladd.f64(double %1503, double %1478, double %1464)
  %1505 = load double, ptr %1319, align 8, !tbaa !9
  %1506 = load double, ptr %1318, align 8, !tbaa !9
  %1507 = fsub double %1505, %1506
  %1508 = fneg double %1507
  %1509 = call double @llvm.fmuladd.f64(double %1508, double %1501, double %1504)
  store double %1509, ptr %9, align 8, !tbaa !9
  %1510 = fmul double %1502, %1502
  %1511 = fsub double %.312101439, %1501
  %1512 = fadd double %.612031440, %1511
  %1513 = fmul double %1510, %1512
  store double %1513, ptr %11, align 16, !tbaa !9
  %1514 = fmul double %1498, %1498
  br label %1515

1515:                                             ; preds = %1479, %1497, %1465
  %.sink1654 = phi double [ %1496, %1479 ], [ %1514, %1497 ], [ %1475, %1465 ]
  store double %.sink1654, ptr %1316, align 16, !tbaa !9
  %1516 = call i32 @dlaed6_(ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %9, ptr noundef nonnull %1314, ptr noundef nonnull %11, ptr noundef nonnull %10, ptr noundef nonnull %12, ptr noundef nonnull %7) #6
  %1517 = load i64, ptr %7, align 8, !tbaa !5
  %.not1308 = icmp eq i64 %1517, 0
  br i1 %.not1308, label %._crit_edge1590, label %.loopexit

._crit_edge1590:                                  ; preds = %1515
  %.pre1591 = load double, ptr %12, align 8, !tbaa !9
  br label %1518

1518:                                             ; preds = %._crit_edge1590, %1435, %1451, %1439
  %1519 = phi double [ %.pre1591, %._crit_edge1590 ], [ %1436, %1435 ], [ %1461, %1451 ], [ %1450, %1439 ]
  %1520 = load double, ptr %10, align 8, !tbaa !9
  %1521 = fmul double %1520, %1519
  %1522 = fcmp ult double %1521, 0.000000e+00
  br i1 %1522, label %1526, label %1523

1523:                                             ; preds = %1518
  %1524 = fneg double %1520
  %1525 = fdiv double %1524, %.012361435
  store double %1525, ptr %12, align 8, !tbaa !9
  br label %1526

1526:                                             ; preds = %1523, %1518
  %1527 = phi double [ %1525, %1523 ], [ %1519, %1518 ]
  %1528 = fadd double %.712301437, %1527
  %1529 = fcmp ogt double %1528, %.71188
  %1530 = fcmp olt double %1528, %.71196
  %or.cond1328 = select i1 %1529, i1 true, i1 %1530
  br i1 %or.cond1328, label %1531, label %1539

1531:                                             ; preds = %1526
  %1532 = fcmp olt double %1520, 0.000000e+00
  br i1 %1532, label %1533, label %1536

1533:                                             ; preds = %1531
  %1534 = fsub double %.71188, %.712301437
  %1535 = fmul double %1534, 5.000000e-01
  store double %1535, ptr %12, align 8, !tbaa !9
  br label %1539

1536:                                             ; preds = %1531
  %1537 = fsub double %.71196, %.712301437
  %1538 = fmul double %1537, 5.000000e-01
  store double %1538, ptr %12, align 8, !tbaa !9
  br label %1539

1539:                                             ; preds = %1526, %1533, %1536
  %1540 = phi double [ %1527, %1526 ], [ %1535, %1533 ], [ %1538, %1536 ]
  %1541 = load i64, ptr %0, align 8, !tbaa !5
  %.not13091406 = icmp slt i64 %1541, 1
  br i1 %.not13091406, label %._crit_edge1410, label %.lr.ph1409.preheader

.lr.ph1409.preheader:                             ; preds = %1539
  %min.iters.check1777 = icmp ult i64 %1541, 4
  br i1 %min.iters.check1777, label %.lr.ph1409.preheader1899, label %vector.ph1778

vector.ph1778:                                    ; preds = %.lr.ph1409.preheader
  %n.vec1780 = and i64 %1541, 9223372036854775804
  %ind.end1781 = or disjoint i64 %n.vec1780, 1
  %broadcast.splatinsert1788 = insertelement <2 x double> poison, double %1540, i64 0
  %broadcast.splat1789 = shufflevector <2 x double> %broadcast.splatinsert1788, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1783

vector.body1783:                                  ; preds = %vector.body1783, %vector.ph1778
  %index1784 = phi i64 [ 0, %vector.ph1778 ], [ %index.next1790, %vector.body1783 ]
  %1542 = getelementptr double, ptr %4, i64 %index1784
  %1543 = getelementptr inbounds i8, ptr %1542, i64 16
  %wide.load1786 = load <2 x double>, ptr %1542, align 8, !tbaa !9
  %wide.load1787 = load <2 x double>, ptr %1543, align 8, !tbaa !9
  %1544 = fsub <2 x double> %wide.load1786, %broadcast.splat1789
  %1545 = fsub <2 x double> %wide.load1787, %broadcast.splat1789
  store <2 x double> %1544, ptr %1542, align 8, !tbaa !9
  store <2 x double> %1545, ptr %1543, align 8, !tbaa !9
  %index.next1790 = add nuw i64 %index1784, 4
  %1546 = icmp eq i64 %index.next1790, %n.vec1780
  br i1 %1546, label %middle.block1775, label %vector.body1783, !llvm.loop !85

middle.block1775:                                 ; preds = %vector.body1783
  %cmp.n1791 = icmp eq i64 %1541, %n.vec1780
  br i1 %cmp.n1791, label %._crit_edge1410, label %.lr.ph1409.preheader1899

.lr.ph1409.preheader1899:                         ; preds = %middle.block1775, %.lr.ph1409.preheader
  %.181407.ph = phi i64 [ 1, %.lr.ph1409.preheader ], [ %ind.end1781, %middle.block1775 ]
  br label %.lr.ph1409

.lr.ph1409:                                       ; preds = %.lr.ph1409.preheader1899, %.lr.ph1409
  %.181407 = phi i64 [ %1550, %.lr.ph1409 ], [ %.181407.ph, %.lr.ph1409.preheader1899 ]
  %1547 = getelementptr inbounds double, ptr %15, i64 %.181407
  %1548 = load double, ptr %1547, align 8, !tbaa !9
  %1549 = fsub double %1548, %1540
  store double %1549, ptr %1547, align 8, !tbaa !9
  %1550 = add nuw i64 %.181407, 1
  %exitcond1575.not = icmp eq i64 %.181407, %1541
  br i1 %exitcond1575.not, label %._crit_edge1410, label %.lr.ph1409, !llvm.loop !86

._crit_edge1410:                                  ; preds = %.lr.ph1409, %middle.block1775, %1539
  %1551 = fadd double %.712301437, %1540
  br i1 %.not1288.not1359, label %.lr.ph1417.preheader, label %._crit_edge1418

.lr.ph1417.preheader:                             ; preds = %._crit_edge1410
  br i1 %1322, label %._crit_edge1418.loopexit.unr-lcssa, label %.lr.ph1417

.lr.ph1417:                                       ; preds = %.lr.ph1417.preheader, %.lr.ph1417
  %.91415 = phi double [ %1574, %.lr.ph1417 ], [ 0.000000e+00, %.lr.ph1417.preheader ]
  %.191412 = phi i64 [ %1575, %.lr.ph1417 ], [ 1, %.lr.ph1417.preheader ]
  %1552 = phi <2 x double> [ %1572, %.lr.ph1417 ], [ zeroinitializer, %.lr.ph1417.preheader ]
  %niter1968 = phi i64 [ %niter1968.next.1, %.lr.ph1417 ], [ 0, %.lr.ph1417.preheader ]
  %1553 = getelementptr inbounds double, ptr %16, i64 %.191412
  %1554 = load double, ptr %1553, align 8, !tbaa !9
  %1555 = getelementptr inbounds double, ptr %15, i64 %.191412
  %1556 = load double, ptr %1555, align 8, !tbaa !9
  %1557 = fdiv double %1554, %1556
  %1558 = insertelement <2 x double> poison, double %1557, i64 0
  %1559 = insertelement <2 x double> %1558, double %1554, i64 1
  %1560 = shufflevector <2 x double> %1558, <2 x double> poison, <2 x i32> zeroinitializer
  %1561 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1559, <2 x double> %1560, <2 x double> %1552)
  %1562 = extractelement <2 x double> %1561, i64 1
  %1563 = fadd double %.91415, %1562
  %1564 = getelementptr double, ptr %3, i64 %.191412
  %1565 = load double, ptr %1564, align 8, !tbaa !9
  %1566 = getelementptr double, ptr %4, i64 %.191412
  %1567 = load double, ptr %1566, align 8, !tbaa !9
  %1568 = fdiv double %1565, %1567
  %1569 = insertelement <2 x double> poison, double %1568, i64 0
  %1570 = insertelement <2 x double> %1569, double %1565, i64 1
  %1571 = shufflevector <2 x double> %1569, <2 x double> poison, <2 x i32> zeroinitializer
  %1572 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1570, <2 x double> %1571, <2 x double> %1561)
  %1573 = extractelement <2 x double> %1572, i64 1
  %1574 = fadd double %1563, %1573
  %1575 = add nuw nsw i64 %.191412, 2
  %niter1968.next.1 = add i64 %niter1968, 2
  %niter1968.ncmp.1 = icmp eq i64 %niter1968.next.1, %unroll_iter1967
  br i1 %niter1968.ncmp.1, label %._crit_edge1418.loopexit.unr-lcssa.loopexit, label %.lr.ph1417, !llvm.loop !87

._crit_edge1418.loopexit.unr-lcssa.loopexit:      ; preds = %.lr.ph1417
  %1576 = extractelement <2 x double> %1572, i64 0
  br label %._crit_edge1418.loopexit.unr-lcssa

._crit_edge1418.loopexit.unr-lcssa:               ; preds = %._crit_edge1418.loopexit.unr-lcssa.loopexit, %.lr.ph1417.preheader
  %.lcssa1902.ph = phi double [ poison, %.lr.ph1417.preheader ], [ %1573, %._crit_edge1418.loopexit.unr-lcssa.loopexit ]
  %.lcssa1901.ph = phi double [ poison, %.lr.ph1417.preheader ], [ %1574, %._crit_edge1418.loopexit.unr-lcssa.loopexit ]
  %.lcssa1900.ph = phi double [ poison, %.lr.ph1417.preheader ], [ %1576, %._crit_edge1418.loopexit.unr-lcssa.loopexit ]
  %.91415.unr = phi double [ 0.000000e+00, %.lr.ph1417.preheader ], [ %1574, %._crit_edge1418.loopexit.unr-lcssa.loopexit ]
  %.191412.unr = phi i64 [ 1, %.lr.ph1417.preheader ], [ %1575, %._crit_edge1418.loopexit.unr-lcssa.loopexit ]
  %.unr1962 = phi <2 x double> [ zeroinitializer, %.lr.ph1417.preheader ], [ %1572, %._crit_edge1418.loopexit.unr-lcssa.loopexit ]
  br i1 %lcmp.mod1963.not, label %._crit_edge1418, label %.lr.ph1417.epil

.lr.ph1417.epil:                                  ; preds = %._crit_edge1418.loopexit.unr-lcssa
  %1577 = getelementptr inbounds double, ptr %16, i64 %.191412.unr
  %1578 = load double, ptr %1577, align 8, !tbaa !9
  %1579 = getelementptr inbounds double, ptr %15, i64 %.191412.unr
  %1580 = load double, ptr %1579, align 8, !tbaa !9
  %1581 = fdiv double %1578, %1580
  %1582 = insertelement <2 x double> poison, double %1581, i64 0
  %1583 = insertelement <2 x double> %1582, double %1578, i64 1
  %1584 = shufflevector <2 x double> %1582, <2 x double> poison, <2 x i32> zeroinitializer
  %1585 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1583, <2 x double> %1584, <2 x double> %.unr1962)
  %1586 = extractelement <2 x double> %1585, i64 1
  %1587 = fadd double %.91415.unr, %1586
  %1588 = extractelement <2 x double> %1585, i64 0
  br label %._crit_edge1418

._crit_edge1418:                                  ; preds = %.lr.ph1417.epil, %._crit_edge1418.loopexit.unr-lcssa, %._crit_edge1410
  %.81222.lcssa = phi double [ 0.000000e+00, %._crit_edge1410 ], [ %.lcssa1902.ph, %._crit_edge1418.loopexit.unr-lcssa ], [ %1586, %.lr.ph1417.epil ]
  %.91206.lcssa = phi double [ 0.000000e+00, %._crit_edge1410 ], [ %.lcssa1900.ph, %._crit_edge1418.loopexit.unr-lcssa ], [ %1588, %.lr.ph1417.epil ]
  %.9.lcssa = phi double [ 0.000000e+00, %._crit_edge1410 ], [ %.lcssa1901.ph, %._crit_edge1418.loopexit.unr-lcssa ], [ %1587, %.lr.ph1417.epil ]
  %1589 = fcmp oge double %.9.lcssa, 0.000000e+00
  %1590 = fneg double %.9.lcssa
  %1591 = select i1 %1589, double %.9.lcssa, double %1590
  %.not1311.not1422 = icmp sgt i64 %1541, %.01237
  br i1 %.not1311.not1422, label %.lr.ph1428.preheader, label %._crit_edge1429

.lr.ph1428.preheader:                             ; preds = %._crit_edge1418
  %1592 = sub i64 %1541, %.01237
  %xtraiter1969 = and i64 %1592, 1
  %lcmp.mod1970.not = icmp eq i64 %xtraiter1969, 0
  br i1 %lcmp.mod1970.not, label %.lr.ph1428.prol.loopexit, label %.lr.ph1428.prol

.lr.ph1428.prol:                                  ; preds = %.lr.ph1428.preheader
  %1593 = getelementptr inbounds double, ptr %16, i64 %1541
  %1594 = load double, ptr %1593, align 8, !tbaa !9
  %1595 = getelementptr inbounds double, ptr %15, i64 %1541
  %1596 = load double, ptr %1595, align 8, !tbaa !9
  %1597 = fdiv double %1594, %1596
  %1598 = insertelement <2 x double> poison, double %1597, i64 0
  %1599 = insertelement <2 x double> %1598, double %1594, i64 1
  %1600 = shufflevector <2 x double> %1598, <2 x double> poison, <2 x i32> zeroinitializer
  %1601 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1599, <2 x double> %1600, <2 x double> zeroinitializer)
  %1602 = extractelement <2 x double> %1601, i64 1
  %1603 = fadd double %1591, %1602
  %1604 = add nsw i64 %1541, -1
  %1605 = extractelement <2 x double> %1601, i64 0
  br label %.lr.ph1428.prol.loopexit

.lr.ph1428.prol.loopexit:                         ; preds = %.lr.ph1428.prol, %.lr.ph1428.preheader
  %.101426.unr = phi double [ %1591, %.lr.ph1428.preheader ], [ %1603, %.lr.ph1428.prol ]
  %.201423.unr = phi i64 [ %1541, %.lr.ph1428.preheader ], [ %1604, %.lr.ph1428.prol ]
  %.unr1972 = phi <2 x double> [ zeroinitializer, %.lr.ph1428.preheader ], [ %1601, %.lr.ph1428.prol ]
  %.lcssa1905.unr = phi double [ poison, %.lr.ph1428.preheader ], [ %1602, %.lr.ph1428.prol ]
  %.lcssa1904.unr = phi double [ poison, %.lr.ph1428.preheader ], [ %1603, %.lr.ph1428.prol ]
  %.lcssa1903.unr = phi double [ poison, %.lr.ph1428.preheader ], [ %1605, %.lr.ph1428.prol ]
  %1606 = icmp eq i64 %1541, %.neg2010
  br i1 %1606, label %._crit_edge1429, label %.lr.ph1428

.lr.ph1428:                                       ; preds = %.lr.ph1428.prol.loopexit, %.lr.ph1428
  %.101426 = phi double [ %1630, %.lr.ph1428 ], [ %.101426.unr, %.lr.ph1428.prol.loopexit ]
  %.201423 = phi i64 [ %1631, %.lr.ph1428 ], [ %.201423.unr, %.lr.ph1428.prol.loopexit ]
  %1607 = phi <2 x double> [ %1628, %.lr.ph1428 ], [ %.unr1972, %.lr.ph1428.prol.loopexit ]
  %1608 = getelementptr inbounds double, ptr %16, i64 %.201423
  %1609 = load double, ptr %1608, align 8, !tbaa !9
  %1610 = getelementptr inbounds double, ptr %15, i64 %.201423
  %1611 = load double, ptr %1610, align 8, !tbaa !9
  %1612 = fdiv double %1609, %1611
  %1613 = insertelement <2 x double> poison, double %1612, i64 0
  %1614 = insertelement <2 x double> %1613, double %1609, i64 1
  %1615 = shufflevector <2 x double> %1613, <2 x double> poison, <2 x i32> zeroinitializer
  %1616 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1614, <2 x double> %1615, <2 x double> %1607)
  %1617 = extractelement <2 x double> %1616, i64 1
  %1618 = fadd double %.101426, %1617
  %1619 = add nsw i64 %.201423, -1
  %1620 = getelementptr inbounds double, ptr %16, i64 %1619
  %1621 = load double, ptr %1620, align 8, !tbaa !9
  %1622 = getelementptr inbounds double, ptr %15, i64 %1619
  %1623 = load double, ptr %1622, align 8, !tbaa !9
  %1624 = fdiv double %1621, %1623
  %1625 = insertelement <2 x double> poison, double %1624, i64 0
  %1626 = insertelement <2 x double> %1625, double %1621, i64 1
  %1627 = shufflevector <2 x double> %1625, <2 x double> poison, <2 x i32> zeroinitializer
  %1628 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1626, <2 x double> %1627, <2 x double> %1616)
  %1629 = extractelement <2 x double> %1628, i64 1
  %1630 = fadd double %1618, %1629
  %1631 = add nsw i64 %.201423, -2
  %.not1311.not.1 = icmp sgt i64 %1631, %.01237
  br i1 %.not1311.not.1, label %.lr.ph1428, label %._crit_edge1429.loopexit.unr-lcssa, !llvm.loop !88

._crit_edge1429.loopexit.unr-lcssa:               ; preds = %.lr.ph1428
  %1632 = extractelement <2 x double> %1628, i64 0
  br label %._crit_edge1429

._crit_edge1429:                                  ; preds = %._crit_edge1429.loopexit.unr-lcssa, %.lr.ph1428.prol.loopexit, %._crit_edge1418
  %.41235.lcssa = phi double [ 0.000000e+00, %._crit_edge1418 ], [ %.lcssa1905.unr, %.lr.ph1428.prol.loopexit ], [ %1629, %._crit_edge1429.loopexit.unr-lcssa ]
  %.61213.lcssa = phi double [ 0.000000e+00, %._crit_edge1418 ], [ %.lcssa1903.unr, %.lr.ph1428.prol.loopexit ], [ %1632, %._crit_edge1429.loopexit.unr-lcssa ]
  %.10.lcssa = phi double [ %1591, %._crit_edge1418 ], [ %.lcssa1904.unr, %.lr.ph1428.prol.loopexit ], [ %1630, %._crit_edge1429.loopexit.unr-lcssa ]
  %1633 = load double, ptr %977, align 8, !tbaa !9
  %1634 = load double, ptr %979, align 8, !tbaa !9
  %1635 = fdiv double %1633, %1634
  %1636 = fadd double %.91206.lcssa, %.61213.lcssa
  %1637 = call double @llvm.fmuladd.f64(double %1635, double %1635, double %1636)
  %1638 = fmul double %1633, %1635
  %1639 = fadd double %30, %.41235.lcssa
  %1640 = fadd double %.81222.lcssa, %1639
  %1641 = fadd double %1640, %1638
  store double %1641, ptr %10, align 8, !tbaa !9
  %1642 = fsub double %.41235.lcssa, %.81222.lcssa
  %1643 = call double @llvm.fmuladd.f64(double %1642, double 8.000000e+00, double %.10.lcssa)
  %1644 = call double @llvm.fmuladd.f64(double %30, double 2.000000e+00, double %1643)
  %1645 = fcmp oge double %1638, 0.000000e+00
  %1646 = fneg double %1638
  %1647 = select i1 %1645, double %1638, double %1646
  %1648 = call double @llvm.fmuladd.f64(double %1647, double 3.000000e+00, double %1644)
  %1649 = fcmp oge double %1551, 0.000000e+00
  %1650 = fneg double %1551
  %1651 = select i1 %1649, double %1551, double %1650
  %1652 = call double @llvm.fmuladd.f64(double %1651, double %1637, double %1648)
  %1653 = fmul double %1520, %1641
  %1654 = fcmp ogt double %1653, 0.000000e+00
  br i1 %1654, label %1655, label %1666

1655:                                             ; preds = %._crit_edge1429
  %1656 = fcmp oge double %1641, 0.000000e+00
  %1657 = fneg double %1641
  %1658 = select i1 %1656, double %1641, double %1657
  %1659 = fcmp oge double %1520, 0.000000e+00
  %1660 = fneg double %1520
  %1661 = select i1 %1659, double %1520, double %1660
  %1662 = fdiv double %1661, 1.000000e+01
  %1663 = fcmp ogt double %1658, %1662
  br i1 %1663, label %1664, label %1666

1664:                                             ; preds = %1655
  %.not1312 = icmp eq i64 %.111791443, 0
  %1665 = zext i1 %.not1312 to i64
  br label %1666

1666:                                             ; preds = %._crit_edge1429, %1655, %1664
  %.21180 = phi i64 [ %1665, %1664 ], [ %.111791443, %1655 ], [ %.111791443, %._crit_edge1429 ]
  %storemerge1300.in = load i64, ptr %13, align 8, !tbaa !5
  %storemerge1300 = add nsw i64 %storemerge1300.in, 1
  store i64 %storemerge1300, ptr %13, align 8, !tbaa !5
  %1667 = icmp slt i64 %storemerge1300.in, 30
  br i1 %1667, label %1323, label %._crit_edge1447.loopexit, !llvm.loop !89

._crit_edge1447.loopexit:                         ; preds = %1666
  %.pre1592 = load i64, ptr %14, align 8, !tbaa !5
  br label %._crit_edge1447

._crit_edge1447:                                  ; preds = %._crit_edge1447.loopexit, %1312
  %1668 = phi i64 [ %1296, %1312 ], [ %.pre1592, %._crit_edge1447.loopexit ]
  %.71230.lcssa = phi double [ %1291, %1312 ], [ %1551, %._crit_edge1447.loopexit ]
  store i64 1, ptr %7, align 8, !tbaa !5
  %.not1301 = icmp eq i64 %1668, 0
  br i1 %.not1301, label %1674, label %1669

1669:                                             ; preds = %._crit_edge1447
  %1670 = load i64, ptr %1, align 8, !tbaa !5
  %1671 = getelementptr inbounds double, ptr %17, i64 %1670
  %1672 = load double, ptr %1671, align 8, !tbaa !9
  %1673 = fadd double %.71230.lcssa, %1672
  store double %1673, ptr %6, align 8, !tbaa !9
  br label %.loopexit

1674:                                             ; preds = %._crit_edge1447
  %1675 = load double, ptr %591, align 8, !tbaa !9
  %1676 = fadd double %.71230.lcssa, %1675
  store double %1676, ptr %6, align 8, !tbaa !9
  br label %.loopexit

.loopexit:                                        ; preds = %1515, %295, %450, %._crit_edge1525, %1010, %1006, %1152, %1339, %1334, %1669, %1674, %25, %19
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 24, 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 i32 0
}

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

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

declare i32 @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 i32 @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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!12}
!12 = distinct !{!12, !13}
!13 = distinct !{!13, !"LVerDomain"}
!14 = !{!15}
!15 = distinct !{!15, !13}
!16 = !{!17}
!17 = distinct !{!17, !13}
!18 = !{!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,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,MergedLoadStoreMotionPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass