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

; 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 [10 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@c__1 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__10 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@c__3 = external hidden global i64, align 8
@c__4 = external hidden global i64, align 8
@c__11 = external hidden global i64, align 8

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

73:                                               ; preds = %3
  %74 = load ptr, ptr %7, align 8, !tbaa !5
  store i64 -1, ptr %74, align 8, !tbaa !9
  %75 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef @c__1)
  store i32 0, ptr %4, align 4
  store i32 1, ptr %58, align 4
  br label %1570

76:                                               ; preds = %3
  %77 = load ptr, ptr %5, align 8, !tbaa !5
  %78 = load i64, ptr %77, align 8, !tbaa !9
  %79 = icmp eq i64 %78, 0
  br i1 %79, label %80, label %81

80:                                               ; preds = %76
  store i32 0, ptr %4, align 4
  store i32 1, ptr %58, align 4
  br label %1570

81:                                               ; preds = %76
  %82 = load ptr, ptr %5, align 8, !tbaa !5
  %83 = load i64, ptr %82, align 8, !tbaa !9
  %84 = icmp eq i64 %83, 1
  br i1 %84, label %85, label %94

85:                                               ; preds = %81
  %86 = load ptr, ptr %6, align 8, !tbaa !5
  %87 = getelementptr inbounds double, ptr %86, i64 1
  %88 = load double, ptr %87, align 8, !tbaa !11
  %89 = fcmp olt double %88, 0.000000e+00
  br i1 %89, label %90, label %93

90:                                               ; preds = %85
  %91 = load ptr, ptr %7, align 8, !tbaa !5
  store i64 -201, ptr %91, align 8, !tbaa !9
  %92 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef @c__2)
  br label %93

93:                                               ; preds = %90, %85
  store i32 0, ptr %4, align 4
  store i32 1, ptr %58, align 4
  br label %1570

94:                                               ; preds = %81
  %95 = load ptr, ptr %5, align 8, !tbaa !5
  %96 = load i64, ptr %95, align 8, !tbaa !9
  %97 = icmp eq i64 %96, 2
  br i1 %97, label %98, label %251

98:                                               ; preds = %94
  %99 = load ptr, ptr %6, align 8, !tbaa !5
  %100 = getelementptr inbounds double, ptr %99, i64 2
  %101 = load double, ptr %100, align 8, !tbaa !11
  %102 = fcmp olt double %101, 0.000000e+00
  br i1 %102, label %108, label %103

103:                                              ; preds = %98
  %104 = load ptr, ptr %6, align 8, !tbaa !5
  %105 = getelementptr inbounds double, ptr %104, i64 3
  %106 = load double, ptr %105, align 8, !tbaa !11
  %107 = fcmp olt double %106, 0.000000e+00
  br i1 %107, label %108, label %111

108:                                              ; preds = %103, %98
  %109 = load ptr, ptr %7, align 8, !tbaa !5
  store i64 -2, ptr %109, align 8, !tbaa !9
  %110 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef @c__2)
  store i32 0, ptr %4, align 4
  store i32 1, ptr %58, align 4
  br label %1570

111:                                              ; preds = %103
  %112 = load ptr, ptr %6, align 8, !tbaa !5
  %113 = getelementptr inbounds double, ptr %112, i64 3
  %114 = load double, ptr %113, align 8, !tbaa !11
  %115 = load ptr, ptr %6, align 8, !tbaa !5
  %116 = getelementptr inbounds double, ptr %115, i64 1
  %117 = load double, ptr %116, align 8, !tbaa !11
  %118 = fcmp ogt double %114, %117
  br i1 %118, label %119, label %131

119:                                              ; preds = %111
  %120 = load ptr, ptr %6, align 8, !tbaa !5
  %121 = getelementptr inbounds double, ptr %120, i64 3
  %122 = load double, ptr %121, align 8, !tbaa !11
  store double %122, ptr %13, align 8, !tbaa !11
  %123 = load ptr, ptr %6, align 8, !tbaa !5
  %124 = getelementptr inbounds double, ptr %123, i64 1
  %125 = load double, ptr %124, align 8, !tbaa !11
  %126 = load ptr, ptr %6, align 8, !tbaa !5
  %127 = getelementptr inbounds double, ptr %126, i64 3
  store double %125, ptr %127, align 8, !tbaa !11
  %128 = load double, ptr %13, align 8, !tbaa !11
  %129 = load ptr, ptr %6, align 8, !tbaa !5
  %130 = getelementptr inbounds double, ptr %129, i64 1
  store double %128, ptr %130, align 8, !tbaa !11
  br label %131

131:                                              ; preds = %119, %111
  br label %132

132:                                              ; preds = %131
  %133 = load ptr, ptr %6, align 8, !tbaa !5
  %134 = getelementptr inbounds double, ptr %133, i64 1
  %135 = load double, ptr %134, align 8, !tbaa !11
  %136 = load ptr, ptr %6, align 8, !tbaa !5
  %137 = getelementptr inbounds double, ptr %136, i64 2
  %138 = load double, ptr %137, align 8, !tbaa !11
  %139 = fadd double %135, %138
  %140 = load ptr, ptr %6, align 8, !tbaa !5
  %141 = getelementptr inbounds double, ptr %140, i64 3
  %142 = load double, ptr %141, align 8, !tbaa !11
  %143 = fadd double %139, %142
  %144 = load ptr, ptr %6, align 8, !tbaa !5
  %145 = getelementptr inbounds double, ptr %144, i64 5
  store double %143, ptr %145, align 8, !tbaa !11
  %146 = load ptr, ptr %6, align 8, !tbaa !5
  %147 = getelementptr inbounds double, ptr %146, i64 2
  %148 = load double, ptr %147, align 8, !tbaa !11
  %149 = load ptr, ptr %6, align 8, !tbaa !5
  %150 = getelementptr inbounds double, ptr %149, i64 3
  %151 = load double, ptr %150, align 8, !tbaa !11
  %152 = load double, ptr %31, align 8, !tbaa !11
  %153 = fmul double %151, %152
  %154 = fcmp ogt double %148, %153
  br i1 %154, label %155, label %236

155:                                              ; preds = %132
  %156 = load ptr, ptr %6, align 8, !tbaa !5
  %157 = getelementptr inbounds double, ptr %156, i64 1
  %158 = load double, ptr %157, align 8, !tbaa !11
  %159 = load ptr, ptr %6, align 8, !tbaa !5
  %160 = getelementptr inbounds double, ptr %159, i64 3
  %161 = load double, ptr %160, align 8, !tbaa !11
  %162 = fsub double %158, %161
  %163 = load ptr, ptr %6, align 8, !tbaa !5
  %164 = getelementptr inbounds double, ptr %163, i64 2
  %165 = load double, ptr %164, align 8, !tbaa !11
  %166 = fadd double %162, %165
  %167 = fmul double %166, 5.000000e-01
  store double %167, ptr %18, align 8, !tbaa !11
  %168 = load ptr, ptr %6, align 8, !tbaa !5
  %169 = getelementptr inbounds double, ptr %168, i64 3
  %170 = load double, ptr %169, align 8, !tbaa !11
  %171 = load ptr, ptr %6, align 8, !tbaa !5
  %172 = getelementptr inbounds double, ptr %171, i64 2
  %173 = load double, ptr %172, align 8, !tbaa !11
  %174 = load double, ptr %18, align 8, !tbaa !11
  %175 = fdiv double %173, %174
  %176 = fmul double %170, %175
  store double %176, ptr %17, align 8, !tbaa !11
  %177 = load double, ptr %17, align 8, !tbaa !11
  %178 = load double, ptr %18, align 8, !tbaa !11
  %179 = fcmp ole double %177, %178
  br i1 %179, label %180, label %197

180:                                              ; preds = %155
  %181 = load ptr, ptr %6, align 8, !tbaa !5
  %182 = getelementptr inbounds double, ptr %181, i64 3
  %183 = load double, ptr %182, align 8, !tbaa !11
  %184 = load ptr, ptr %6, align 8, !tbaa !5
  %185 = getelementptr inbounds double, ptr %184, i64 2
  %186 = load double, ptr %185, align 8, !tbaa !11
  %187 = load double, ptr %18, align 8, !tbaa !11
  %188 = load double, ptr %17, align 8, !tbaa !11
  %189 = load double, ptr %18, align 8, !tbaa !11
  %190 = fdiv double %188, %189
  %191 = fadd double %190, 1.000000e+00
  %192 = call double @sqrt(double noundef %191) #5
  %193 = fadd double %192, 1.000000e+00
  %194 = fmul double %187, %193
  %195 = fdiv double %186, %194
  %196 = fmul double %183, %195
  store double %196, ptr %17, align 8, !tbaa !11
  br label %214

197:                                              ; preds = %155
  %198 = load ptr, ptr %6, align 8, !tbaa !5
  %199 = getelementptr inbounds double, ptr %198, i64 3
  %200 = load double, ptr %199, align 8, !tbaa !11
  %201 = load ptr, ptr %6, align 8, !tbaa !5
  %202 = getelementptr inbounds double, ptr %201, i64 2
  %203 = load double, ptr %202, align 8, !tbaa !11
  %204 = load double, ptr %18, align 8, !tbaa !11
  %205 = load double, ptr %18, align 8, !tbaa !11
  %206 = call double @sqrt(double noundef %205) #5
  %207 = load double, ptr %18, align 8, !tbaa !11
  %208 = load double, ptr %17, align 8, !tbaa !11
  %209 = fadd double %207, %208
  %210 = call double @sqrt(double noundef %209) #5
  %211 = call double @llvm.fmuladd.f64(double %206, double %210, double %204)
  %212 = fdiv double %203, %211
  %213 = fmul double %200, %212
  store double %213, ptr %17, align 8, !tbaa !11
  br label %214

214:                                              ; preds = %197, %180
  %215 = load ptr, ptr %6, align 8, !tbaa !5
  %216 = getelementptr inbounds double, ptr %215, i64 1
  %217 = load double, ptr %216, align 8, !tbaa !11
  %218 = load double, ptr %17, align 8, !tbaa !11
  %219 = load ptr, ptr %6, align 8, !tbaa !5
  %220 = getelementptr inbounds double, ptr %219, i64 2
  %221 = load double, ptr %220, align 8, !tbaa !11
  %222 = fadd double %218, %221
  %223 = fadd double %217, %222
  store double %223, ptr %18, align 8, !tbaa !11
  %224 = load ptr, ptr %6, align 8, !tbaa !5
  %225 = getelementptr inbounds double, ptr %224, i64 1
  %226 = load double, ptr %225, align 8, !tbaa !11
  %227 = load double, ptr %18, align 8, !tbaa !11
  %228 = fdiv double %226, %227
  %229 = load ptr, ptr %6, align 8, !tbaa !5
  %230 = getelementptr inbounds double, ptr %229, i64 3
  %231 = load double, ptr %230, align 8, !tbaa !11
  %232 = fmul double %231, %228
  store double %232, ptr %230, align 8, !tbaa !11
  %233 = load double, ptr %18, align 8, !tbaa !11
  %234 = load ptr, ptr %6, align 8, !tbaa !5
  %235 = getelementptr inbounds double, ptr %234, i64 1
  store double %233, ptr %235, align 8, !tbaa !11
  br label %236

236:                                              ; preds = %214, %132
  %237 = load ptr, ptr %6, align 8, !tbaa !5
  %238 = getelementptr inbounds double, ptr %237, i64 3
  %239 = load double, ptr %238, align 8, !tbaa !11
  %240 = load ptr, ptr %6, align 8, !tbaa !5
  %241 = getelementptr inbounds double, ptr %240, i64 2
  store double %239, ptr %241, align 8, !tbaa !11
  %242 = load ptr, ptr %6, align 8, !tbaa !5
  %243 = getelementptr inbounds double, ptr %242, i64 2
  %244 = load double, ptr %243, align 8, !tbaa !11
  %245 = load ptr, ptr %6, align 8, !tbaa !5
  %246 = getelementptr inbounds double, ptr %245, i64 1
  %247 = load double, ptr %246, align 8, !tbaa !11
  %248 = fadd double %244, %247
  %249 = load ptr, ptr %6, align 8, !tbaa !5
  %250 = getelementptr inbounds double, ptr %249, i64 6
  store double %248, ptr %250, align 8, !tbaa !11
  store i32 0, ptr %4, align 4
  store i32 1, ptr %58, align 4
  br label %1570

251:                                              ; preds = %94
  br label %252

252:                                              ; preds = %251
  br label %253

253:                                              ; preds = %252
  br label %254

254:                                              ; preds = %253
  %255 = load ptr, ptr %6, align 8, !tbaa !5
  %256 = load ptr, ptr %5, align 8, !tbaa !5
  %257 = load i64, ptr %256, align 8, !tbaa !9
  %258 = mul nsw i64 %257, 2
  %259 = getelementptr inbounds double, ptr %255, i64 %258
  store double 0.000000e+00, ptr %259, align 8, !tbaa !11
  %260 = load ptr, ptr %6, align 8, !tbaa !5
  %261 = getelementptr inbounds double, ptr %260, i64 2
  %262 = load double, ptr %261, align 8, !tbaa !11
  store double %262, ptr %35, align 8, !tbaa !11
  store double 0.000000e+00, ptr %42, align 8, !tbaa !11
  store double 0.000000e+00, ptr %43, align 8, !tbaa !11
  store double 0.000000e+00, ptr %13, align 8, !tbaa !11
  store double 0.000000e+00, ptr %14, align 8, !tbaa !11
  %263 = load ptr, ptr %5, align 8, !tbaa !5
  %264 = load i64, ptr %263, align 8, !tbaa !9
  %265 = sub nsw i64 %264, 1
  %266 = shl i64 %265, 1
  store i64 %266, ptr %8, align 8, !tbaa !9
  store i64 1, ptr %16, align 8, !tbaa !9
  br label %267

267:                                              ; preds = %363, %254
  %268 = load i64, ptr %16, align 8, !tbaa !9
  %269 = load i64, ptr %8, align 8, !tbaa !9
  %270 = icmp sle i64 %268, %269
  br i1 %270, label %271, label %366

271:                                              ; preds = %267
  %272 = load ptr, ptr %6, align 8, !tbaa !5
  %273 = load i64, ptr %16, align 8, !tbaa !9
  %274 = getelementptr inbounds double, ptr %272, i64 %273
  %275 = load double, ptr %274, align 8, !tbaa !11
  %276 = fcmp olt double %275, 0.000000e+00
  br i1 %276, label %277, label %283

277:                                              ; preds = %271
  %278 = load i64, ptr %16, align 8, !tbaa !9
  %279 = add nsw i64 %278, 200
  %280 = sub nsw i64 0, %279
  %281 = load ptr, ptr %7, align 8, !tbaa !5
  store i64 %280, ptr %281, align 8, !tbaa !9
  %282 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef @c__2)
  store i32 0, ptr %4, align 4
  store i32 1, ptr %58, align 4
  br label %1570

283:                                              ; preds = %271
  %284 = load ptr, ptr %6, align 8, !tbaa !5
  %285 = load i64, ptr %16, align 8, !tbaa !9
  %286 = add nsw i64 %285, 1
  %287 = getelementptr inbounds double, ptr %284, i64 %286
  %288 = load double, ptr %287, align 8, !tbaa !11
  %289 = fcmp olt double %288, 0.000000e+00
  br i1 %289, label %290, label %296

290:                                              ; preds = %283
  %291 = load i64, ptr %16, align 8, !tbaa !9
  %292 = add nsw i64 %291, 201
  %293 = sub nsw i64 0, %292
  %294 = load ptr, ptr %7, align 8, !tbaa !5
  store i64 %293, ptr %294, align 8, !tbaa !9
  %295 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef @c__2)
  store i32 0, ptr %4, align 4
  store i32 1, ptr %58, align 4
  br label %1570

296:                                              ; preds = %283
  br label %297

297:                                              ; preds = %296
  %298 = load ptr, ptr %6, align 8, !tbaa !5
  %299 = load i64, ptr %16, align 8, !tbaa !9
  %300 = getelementptr inbounds double, ptr %298, i64 %299
  %301 = load double, ptr %300, align 8, !tbaa !11
  %302 = load double, ptr %13, align 8, !tbaa !11
  %303 = fadd double %302, %301
  store double %303, ptr %13, align 8, !tbaa !11
  %304 = load ptr, ptr %6, align 8, !tbaa !5
  %305 = load i64, ptr %16, align 8, !tbaa !9
  %306 = add nsw i64 %305, 1
  %307 = getelementptr inbounds double, ptr %304, i64 %306
  %308 = load double, ptr %307, align 8, !tbaa !11
  %309 = load double, ptr %14, align 8, !tbaa !11
  %310 = fadd double %309, %308
  store double %310, ptr %14, align 8, !tbaa !11
  %311 = load double, ptr %42, align 8, !tbaa !11
  store double %311, ptr %11, align 8, !tbaa !11
  %312 = load ptr, ptr %6, align 8, !tbaa !5
  %313 = load i64, ptr %16, align 8, !tbaa !9
  %314 = getelementptr inbounds double, ptr %312, i64 %313
  %315 = load double, ptr %314, align 8, !tbaa !11
  store double %315, ptr %12, align 8, !tbaa !11
  %316 = load double, ptr %11, align 8, !tbaa !11
  %317 = load double, ptr %12, align 8, !tbaa !11
  %318 = fcmp oge double %316, %317
  br i1 %318, label %319, label %321

319:                                              ; preds = %297
  %320 = load double, ptr %11, align 8, !tbaa !11
  br label %323

321:                                              ; preds = %297
  %322 = load double, ptr %12, align 8, !tbaa !11
  br label %323

323:                                              ; preds = %321, %319
  %324 = phi double [ %320, %319 ], [ %322, %321 ]
  store double %324, ptr %42, align 8, !tbaa !11
  %325 = load double, ptr %35, align 8, !tbaa !11
  store double %325, ptr %11, align 8, !tbaa !11
  %326 = load ptr, ptr %6, align 8, !tbaa !5
  %327 = load i64, ptr %16, align 8, !tbaa !9
  %328 = add nsw i64 %327, 1
  %329 = getelementptr inbounds double, ptr %326, i64 %328
  %330 = load double, ptr %329, align 8, !tbaa !11
  store double %330, ptr %12, align 8, !tbaa !11
  %331 = load double, ptr %11, align 8, !tbaa !11
  %332 = load double, ptr %12, align 8, !tbaa !11
  %333 = fcmp ole double %331, %332
  br i1 %333, label %334, label %336

334:                                              ; preds = %323
  %335 = load double, ptr %11, align 8, !tbaa !11
  br label %338

336:                                              ; preds = %323
  %337 = load double, ptr %12, align 8, !tbaa !11
  br label %338

338:                                              ; preds = %336, %334
  %339 = phi double [ %335, %334 ], [ %337, %336 ]
  store double %339, ptr %35, align 8, !tbaa !11
  %340 = load double, ptr %42, align 8, !tbaa !11
  %341 = load double, ptr %43, align 8, !tbaa !11
  %342 = fcmp oge double %340, %341
  br i1 %342, label %343, label %345

343:                                              ; preds = %338
  %344 = load double, ptr %42, align 8, !tbaa !11
  br label %347

345:                                              ; preds = %338
  %346 = load double, ptr %43, align 8, !tbaa !11
  br label %347

347:                                              ; preds = %345, %343
  %348 = phi double [ %344, %343 ], [ %346, %345 ]
  store double %348, ptr %11, align 8, !tbaa !11
  %349 = load ptr, ptr %6, align 8, !tbaa !5
  %350 = load i64, ptr %16, align 8, !tbaa !9
  %351 = add nsw i64 %350, 1
  %352 = getelementptr inbounds double, ptr %349, i64 %351
  %353 = load double, ptr %352, align 8, !tbaa !11
  store double %353, ptr %12, align 8, !tbaa !11
  %354 = load double, ptr %11, align 8, !tbaa !11
  %355 = load double, ptr %12, align 8, !tbaa !11
  %356 = fcmp oge double %354, %355
  br i1 %356, label %357, label %359

357:                                              ; preds = %347
  %358 = load double, ptr %11, align 8, !tbaa !11
  br label %361

359:                                              ; preds = %347
  %360 = load double, ptr %12, align 8, !tbaa !11
  br label %361

361:                                              ; preds = %359, %357
  %362 = phi double [ %358, %357 ], [ %360, %359 ]
  store double %362, ptr %43, align 8, !tbaa !11
  br label %363

363:                                              ; preds = %361
  %364 = load i64, ptr %16, align 8, !tbaa !9
  %365 = add nsw i64 %364, 2
  store i64 %365, ptr %16, align 8, !tbaa !9
  br label %267, !llvm.loop !13

366:                                              ; preds = %267
  %367 = load ptr, ptr %6, align 8, !tbaa !5
  %368 = load ptr, ptr %5, align 8, !tbaa !5
  %369 = load i64, ptr %368, align 8, !tbaa !9
  %370 = shl i64 %369, 1
  %371 = sub nsw i64 %370, 1
  %372 = getelementptr inbounds double, ptr %367, i64 %371
  %373 = load double, ptr %372, align 8, !tbaa !11
  %374 = fcmp olt double %373, 0.000000e+00
  br i1 %374, label %375, label %383

375:                                              ; preds = %366
  %376 = load ptr, ptr %5, align 8, !tbaa !5
  %377 = load i64, ptr %376, align 8, !tbaa !9
  %378 = shl i64 %377, 1
  %379 = add nsw i64 %378, 199
  %380 = sub nsw i64 0, %379
  %381 = load ptr, ptr %7, align 8, !tbaa !5
  store i64 %380, ptr %381, align 8, !tbaa !9
  %382 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef @c__2)
  store i32 0, ptr %4, align 4
  store i32 1, ptr %58, align 4
  br label %1570

383:                                              ; preds = %366
  %384 = load ptr, ptr %6, align 8, !tbaa !5
  %385 = load ptr, ptr %5, align 8, !tbaa !5
  %386 = load i64, ptr %385, align 8, !tbaa !9
  %387 = shl i64 %386, 1
  %388 = sub nsw i64 %387, 1
  %389 = getelementptr inbounds double, ptr %384, i64 %388
  %390 = load double, ptr %389, align 8, !tbaa !11
  %391 = load double, ptr %13, align 8, !tbaa !11
  %392 = fadd double %391, %390
  store double %392, ptr %13, align 8, !tbaa !11
  %393 = load double, ptr %42, align 8, !tbaa !11
  store double %393, ptr %11, align 8, !tbaa !11
  %394 = load ptr, ptr %6, align 8, !tbaa !5
  %395 = load ptr, ptr %5, align 8, !tbaa !5
  %396 = load i64, ptr %395, align 8, !tbaa !9
  %397 = shl i64 %396, 1
  %398 = sub nsw i64 %397, 1
  %399 = getelementptr inbounds double, ptr %394, i64 %398
  %400 = load double, ptr %399, align 8, !tbaa !11
  store double %400, ptr %12, align 8, !tbaa !11
  %401 = load double, ptr %11, align 8, !tbaa !11
  %402 = load double, ptr %12, align 8, !tbaa !11
  %403 = fcmp oge double %401, %402
  br i1 %403, label %404, label %406

404:                                              ; preds = %383
  %405 = load double, ptr %11, align 8, !tbaa !11
  br label %408

406:                                              ; preds = %383
  %407 = load double, ptr %12, align 8, !tbaa !11
  br label %408

408:                                              ; preds = %406, %404
  %409 = phi double [ %405, %404 ], [ %407, %406 ]
  store double %409, ptr %42, align 8, !tbaa !11
  %410 = load double, ptr %42, align 8, !tbaa !11
  %411 = load double, ptr %43, align 8, !tbaa !11
  %412 = fcmp oge double %410, %411
  br i1 %412, label %413, label %415

413:                                              ; preds = %408
  %414 = load double, ptr %42, align 8, !tbaa !11
  br label %417

415:                                              ; preds = %408
  %416 = load double, ptr %43, align 8, !tbaa !11
  br label %417

417:                                              ; preds = %415, %413
  %418 = phi double [ %414, %413 ], [ %416, %415 ]
  store double %418, ptr %43, align 8, !tbaa !11
  %419 = load double, ptr %14, align 8, !tbaa !11
  %420 = fcmp oeq double %419, 0.000000e+00
  br i1 %420, label %421, label %453

421:                                              ; preds = %417
  %422 = load ptr, ptr %5, align 8, !tbaa !5
  %423 = load i64, ptr %422, align 8, !tbaa !9
  store i64 %423, ptr %8, align 8, !tbaa !9
  store i64 2, ptr %16, align 8, !tbaa !9
  br label %424

424:                                              ; preds = %438, %421
  %425 = load i64, ptr %16, align 8, !tbaa !9
  %426 = load i64, ptr %8, align 8, !tbaa !9
  %427 = icmp sle i64 %425, %426
  br i1 %427, label %428, label %441

428:                                              ; preds = %424
  %429 = load ptr, ptr %6, align 8, !tbaa !5
  %430 = load i64, ptr %16, align 8, !tbaa !9
  %431 = shl i64 %430, 1
  %432 = sub nsw i64 %431, 1
  %433 = getelementptr inbounds double, ptr %429, i64 %432
  %434 = load double, ptr %433, align 8, !tbaa !11
  %435 = load ptr, ptr %6, align 8, !tbaa !5
  %436 = load i64, ptr %16, align 8, !tbaa !9
  %437 = getelementptr inbounds double, ptr %435, i64 %436
  store double %434, ptr %437, align 8, !tbaa !11
  br label %438

438:                                              ; preds = %428
  %439 = load i64, ptr %16, align 8, !tbaa !9
  %440 = add nsw i64 %439, 1
  store i64 %440, ptr %16, align 8, !tbaa !9
  br label %424, !llvm.loop !15

441:                                              ; preds = %424
  %442 = load ptr, ptr %5, align 8, !tbaa !5
  %443 = load ptr, ptr %6, align 8, !tbaa !5
  %444 = getelementptr inbounds double, ptr %443, i64 1
  %445 = call i32 @dlasrt_(ptr noundef @.str.3, ptr noundef %442, ptr noundef %444, ptr noundef %51)
  %446 = load double, ptr %13, align 8, !tbaa !11
  %447 = load ptr, ptr %6, align 8, !tbaa !5
  %448 = load ptr, ptr %5, align 8, !tbaa !5
  %449 = load i64, ptr %448, align 8, !tbaa !9
  %450 = shl i64 %449, 1
  %451 = sub nsw i64 %450, 1
  %452 = getelementptr inbounds double, ptr %447, i64 %451
  store double %446, ptr %452, align 8, !tbaa !11
  store i32 0, ptr %4, align 4
  store i32 1, ptr %58, align 4
  br label %1570

453:                                              ; preds = %417
  %454 = load double, ptr %13, align 8, !tbaa !11
  %455 = load double, ptr %14, align 8, !tbaa !11
  %456 = fadd double %454, %455
  store double %456, ptr %49, align 8, !tbaa !11
  %457 = load double, ptr %49, align 8, !tbaa !11
  %458 = fcmp oeq double %457, 0.000000e+00
  br i1 %458, label %459, label %466

459:                                              ; preds = %453
  %460 = load ptr, ptr %6, align 8, !tbaa !5
  %461 = load ptr, ptr %5, align 8, !tbaa !5
  %462 = load i64, ptr %461, align 8, !tbaa !9
  %463 = shl i64 %462, 1
  %464 = sub nsw i64 %463, 1
  %465 = getelementptr inbounds double, ptr %460, i64 %464
  store double 0.000000e+00, ptr %465, align 8, !tbaa !11
  store i32 0, ptr %4, align 4
  store i32 1, ptr %58, align 4
  br label %1570

466:                                              ; preds = %453
  %467 = call i64 @ilaenv_(ptr noundef @c__10, ptr noundef @.str.2, ptr noundef @.str.4, ptr noundef @c__1, ptr noundef @c__2, ptr noundef @c__3, ptr noundef @c__4)
  %468 = icmp eq i64 %467, 1
  br i1 %468, label %469, label %472

469:                                              ; preds = %466
  %470 = call i64 @ilaenv_(ptr noundef @c__11, ptr noundef @.str.2, ptr noundef @.str.4, ptr noundef @c__1, ptr noundef @c__2, ptr noundef @c__3, ptr noundef @c__4)
  %471 = icmp eq i64 %470, 1
  br label %472

472:                                              ; preds = %469, %466
  %473 = phi i1 [ false, %466 ], [ %471, %469 ]
  %474 = zext i1 %473 to i32
  %475 = sext i32 %474 to i64
  store i64 %475, ptr %32, align 8, !tbaa !9
  %476 = load ptr, ptr %5, align 8, !tbaa !5
  %477 = load i64, ptr %476, align 8, !tbaa !9
  %478 = shl i64 %477, 1
  store i64 %478, ptr %16, align 8, !tbaa !9
  br label %479

479:                                              ; preds = %511, %472
  %480 = load i64, ptr %16, align 8, !tbaa !9
  %481 = icmp sge i64 %480, 2
  br i1 %481, label %482, label %514

482:                                              ; preds = %479
  %483 = load ptr, ptr %6, align 8, !tbaa !5
  %484 = load i64, ptr %16, align 8, !tbaa !9
  %485 = mul nsw i64 %484, 2
  %486 = getelementptr inbounds double, ptr %483, i64 %485
  store double 0.000000e+00, ptr %486, align 8, !tbaa !11
  %487 = load ptr, ptr %6, align 8, !tbaa !5
  %488 = load i64, ptr %16, align 8, !tbaa !9
  %489 = getelementptr inbounds double, ptr %487, i64 %488
  %490 = load double, ptr %489, align 8, !tbaa !11
  %491 = load ptr, ptr %6, align 8, !tbaa !5
  %492 = load i64, ptr %16, align 8, !tbaa !9
  %493 = shl i64 %492, 1
  %494 = sub nsw i64 %493, 1
  %495 = getelementptr inbounds double, ptr %491, i64 %494
  store double %490, ptr %495, align 8, !tbaa !11
  %496 = load ptr, ptr %6, align 8, !tbaa !5
  %497 = load i64, ptr %16, align 8, !tbaa !9
  %498 = shl i64 %497, 1
  %499 = sub nsw i64 %498, 2
  %500 = getelementptr inbounds double, ptr %496, i64 %499
  store double 0.000000e+00, ptr %500, align 8, !tbaa !11
  %501 = load ptr, ptr %6, align 8, !tbaa !5
  %502 = load i64, ptr %16, align 8, !tbaa !9
  %503 = sub nsw i64 %502, 1
  %504 = getelementptr inbounds double, ptr %501, i64 %503
  %505 = load double, ptr %504, align 8, !tbaa !11
  %506 = load ptr, ptr %6, align 8, !tbaa !5
  %507 = load i64, ptr %16, align 8, !tbaa !9
  %508 = shl i64 %507, 1
  %509 = sub nsw i64 %508, 3
  %510 = getelementptr inbounds double, ptr %506, i64 %509
  store double %505, ptr %510, align 8, !tbaa !11
  br label %511

511:                                              ; preds = %482
  %512 = load i64, ptr %16, align 8, !tbaa !9
  %513 = add nsw i64 %512, -2
  store i64 %513, ptr %16, align 8, !tbaa !9
  br label %479, !llvm.loop !16

514:                                              ; preds = %479
  store i64 1, ptr %19, align 8, !tbaa !9
  %515 = load ptr, ptr %5, align 8, !tbaa !5
  %516 = load i64, ptr %515, align 8, !tbaa !9
  store i64 %516, ptr %21, align 8, !tbaa !9
  %517 = load ptr, ptr %6, align 8, !tbaa !5
  %518 = load i64, ptr %19, align 8, !tbaa !9
  %519 = shl i64 %518, 2
  %520 = sub nsw i64 %519, 3
  %521 = getelementptr inbounds double, ptr %517, i64 %520
  %522 = load double, ptr %521, align 8, !tbaa !11
  %523 = fmul double %522, 1.500000e+00
  %524 = load ptr, ptr %6, align 8, !tbaa !5
  %525 = load i64, ptr %21, align 8, !tbaa !9
  %526 = shl i64 %525, 2
  %527 = sub nsw i64 %526, 3
  %528 = getelementptr inbounds double, ptr %524, i64 %527
  %529 = load double, ptr %528, align 8, !tbaa !11
  %530 = fcmp olt double %523, %529
  br i1 %530, label %531, label %598

531:                                              ; preds = %514
  %532 = load i64, ptr %19, align 8, !tbaa !9
  %533 = load i64, ptr %21, align 8, !tbaa !9
  %534 = add nsw i64 %532, %533
  %535 = shl i64 %534, 2
  store i64 %535, ptr %30, align 8, !tbaa !9
  %536 = load i64, ptr %19, align 8, !tbaa !9
  %537 = load i64, ptr %21, align 8, !tbaa !9
  %538 = add nsw i64 %536, %537
  %539 = sub nsw i64 %538, 1
  %540 = shl i64 %539, 1
  store i64 %540, ptr %8, align 8, !tbaa !9
  %541 = load i64, ptr %19, align 8, !tbaa !9
  %542 = shl i64 %541, 2
  store i64 %542, ptr %20, align 8, !tbaa !9
  br label %543

543:                                              ; preds = %594, %531
  %544 = load i64, ptr %20, align 8, !tbaa !9
  %545 = load i64, ptr %8, align 8, !tbaa !9
  %546 = icmp sle i64 %544, %545
  br i1 %546, label %547, label %597

547:                                              ; preds = %543
  %548 = load ptr, ptr %6, align 8, !tbaa !5
  %549 = load i64, ptr %20, align 8, !tbaa !9
  %550 = sub nsw i64 %549, 3
  %551 = getelementptr inbounds double, ptr %548, i64 %550
  %552 = load double, ptr %551, align 8, !tbaa !11
  store double %552, ptr %41, align 8, !tbaa !11
  %553 = load ptr, ptr %6, align 8, !tbaa !5
  %554 = load i64, ptr %30, align 8, !tbaa !9
  %555 = load i64, ptr %20, align 8, !tbaa !9
  %556 = sub nsw i64 %554, %555
  %557 = sub nsw i64 %556, 3
  %558 = getelementptr inbounds double, ptr %553, i64 %557
  %559 = load double, ptr %558, align 8, !tbaa !11
  %560 = load ptr, ptr %6, align 8, !tbaa !5
  %561 = load i64, ptr %20, align 8, !tbaa !9
  %562 = sub nsw i64 %561, 3
  %563 = getelementptr inbounds double, ptr %560, i64 %562
  store double %559, ptr %563, align 8, !tbaa !11
  %564 = load double, ptr %41, align 8, !tbaa !11
  %565 = load ptr, ptr %6, align 8, !tbaa !5
  %566 = load i64, ptr %30, align 8, !tbaa !9
  %567 = load i64, ptr %20, align 8, !tbaa !9
  %568 = sub nsw i64 %566, %567
  %569 = sub nsw i64 %568, 3
  %570 = getelementptr inbounds double, ptr %565, i64 %569
  store double %564, ptr %570, align 8, !tbaa !11
  %571 = load ptr, ptr %6, align 8, !tbaa !5
  %572 = load i64, ptr %20, align 8, !tbaa !9
  %573 = sub nsw i64 %572, 1
  %574 = getelementptr inbounds double, ptr %571, i64 %573
  %575 = load double, ptr %574, align 8, !tbaa !11
  store double %575, ptr %41, align 8, !tbaa !11
  %576 = load ptr, ptr %6, align 8, !tbaa !5
  %577 = load i64, ptr %30, align 8, !tbaa !9
  %578 = load i64, ptr %20, align 8, !tbaa !9
  %579 = sub nsw i64 %577, %578
  %580 = sub nsw i64 %579, 5
  %581 = getelementptr inbounds double, ptr %576, i64 %580
  %582 = load double, ptr %581, align 8, !tbaa !11
  %583 = load ptr, ptr %6, align 8, !tbaa !5
  %584 = load i64, ptr %20, align 8, !tbaa !9
  %585 = sub nsw i64 %584, 1
  %586 = getelementptr inbounds double, ptr %583, i64 %585
  store double %582, ptr %586, align 8, !tbaa !11
  %587 = load double, ptr %41, align 8, !tbaa !11
  %588 = load ptr, ptr %6, align 8, !tbaa !5
  %589 = load i64, ptr %30, align 8, !tbaa !9
  %590 = load i64, ptr %20, align 8, !tbaa !9
  %591 = sub nsw i64 %589, %590
  %592 = sub nsw i64 %591, 5
  %593 = getelementptr inbounds double, ptr %588, i64 %592
  store double %587, ptr %593, align 8, !tbaa !11
  br label %594

594:                                              ; preds = %547
  %595 = load i64, ptr %20, align 8, !tbaa !9
  %596 = add nsw i64 %595, 4
  store i64 %596, ptr %20, align 8, !tbaa !9
  br label %543, !llvm.loop !17

597:                                              ; preds = %543
  br label %598

598:                                              ; preds = %597, %514
  store i64 0, ptr %23, align 8, !tbaa !9
  store i64 1, ptr %16, align 8, !tbaa !9
  br label %599

599:                                              ; preds = %924, %598
  %600 = load i64, ptr %16, align 8, !tbaa !9
  %601 = icmp sle i64 %600, 2
  br i1 %601, label %602, label %927

602:                                              ; preds = %599
  %603 = load ptr, ptr %6, align 8, !tbaa !5
  %604 = load i64, ptr %21, align 8, !tbaa !9
  %605 = shl i64 %604, 2
  %606 = load i64, ptr %23, align 8, !tbaa !9
  %607 = add nsw i64 %605, %606
  %608 = sub nsw i64 %607, 3
  %609 = getelementptr inbounds double, ptr %603, i64 %608
  %610 = load double, ptr %609, align 8, !tbaa !11
  store double %610, ptr %13, align 8, !tbaa !11
  %611 = load i64, ptr %19, align 8, !tbaa !9
  %612 = shl i64 %611, 2
  %613 = load i64, ptr %23, align 8, !tbaa !9
  %614 = add nsw i64 %612, %613
  store i64 %614, ptr %8, align 8, !tbaa !9
  %615 = load i64, ptr %21, align 8, !tbaa !9
  %616 = sub nsw i64 %615, 1
  %617 = shl i64 %616, 2
  %618 = load i64, ptr %23, align 8, !tbaa !9
  %619 = add nsw i64 %617, %618
  store i64 %619, ptr %20, align 8, !tbaa !9
  br label %620

620:                                              ; preds = %661, %602
  %621 = load i64, ptr %20, align 8, !tbaa !9
  %622 = load i64, ptr %8, align 8, !tbaa !9
  %623 = icmp sge i64 %621, %622
  br i1 %623, label %624, label %664

624:                                              ; preds = %620
  %625 = load ptr, ptr %6, align 8, !tbaa !5
  %626 = load i64, ptr %20, align 8, !tbaa !9
  %627 = sub nsw i64 %626, 1
  %628 = getelementptr inbounds double, ptr %625, i64 %627
  %629 = load double, ptr %628, align 8, !tbaa !11
  %630 = load double, ptr %31, align 8, !tbaa !11
  %631 = load double, ptr %13, align 8, !tbaa !11
  %632 = fmul double %630, %631
  %633 = fcmp ole double %629, %632
  br i1 %633, label %634, label %644

634:                                              ; preds = %624
  %635 = load ptr, ptr %6, align 8, !tbaa !5
  %636 = load i64, ptr %20, align 8, !tbaa !9
  %637 = sub nsw i64 %636, 1
  %638 = getelementptr inbounds double, ptr %635, i64 %637
  store double -0.000000e+00, ptr %638, align 8, !tbaa !11
  %639 = load ptr, ptr %6, align 8, !tbaa !5
  %640 = load i64, ptr %20, align 8, !tbaa !9
  %641 = sub nsw i64 %640, 3
  %642 = getelementptr inbounds double, ptr %639, i64 %641
  %643 = load double, ptr %642, align 8, !tbaa !11
  store double %643, ptr %13, align 8, !tbaa !11
  br label %660

644:                                              ; preds = %624
  %645 = load ptr, ptr %6, align 8, !tbaa !5
  %646 = load i64, ptr %20, align 8, !tbaa !9
  %647 = sub nsw i64 %646, 3
  %648 = getelementptr inbounds double, ptr %645, i64 %647
  %649 = load double, ptr %648, align 8, !tbaa !11
  %650 = load double, ptr %13, align 8, !tbaa !11
  %651 = load double, ptr %13, align 8, !tbaa !11
  %652 = load ptr, ptr %6, align 8, !tbaa !5
  %653 = load i64, ptr %20, align 8, !tbaa !9
  %654 = sub nsw i64 %653, 1
  %655 = getelementptr inbounds double, ptr %652, i64 %654
  %656 = load double, ptr %655, align 8, !tbaa !11
  %657 = fadd double %651, %656
  %658 = fdiv double %650, %657
  %659 = fmul double %649, %658
  store double %659, ptr %13, align 8, !tbaa !11
  br label %660

660:                                              ; preds = %644, %634
  br label %661

661:                                              ; preds = %660
  %662 = load i64, ptr %20, align 8, !tbaa !9
  %663 = add nsw i64 %662, -4
  store i64 %663, ptr %20, align 8, !tbaa !9
  br label %620, !llvm.loop !18

664:                                              ; preds = %620
  %665 = load ptr, ptr %6, align 8, !tbaa !5
  %666 = load i64, ptr %19, align 8, !tbaa !9
  %667 = shl i64 %666, 2
  %668 = load i64, ptr %23, align 8, !tbaa !9
  %669 = add nsw i64 %667, %668
  %670 = add nsw i64 %669, 1
  %671 = getelementptr inbounds double, ptr %665, i64 %670
  %672 = load double, ptr %671, align 8, !tbaa !11
  store double %672, ptr %35, align 8, !tbaa !11
  %673 = load ptr, ptr %6, align 8, !tbaa !5
  %674 = load i64, ptr %19, align 8, !tbaa !9
  %675 = shl i64 %674, 2
  %676 = load i64, ptr %23, align 8, !tbaa !9
  %677 = add nsw i64 %675, %676
  %678 = sub nsw i64 %677, 3
  %679 = getelementptr inbounds double, ptr %673, i64 %678
  %680 = load double, ptr %679, align 8, !tbaa !11
  store double %680, ptr %13, align 8, !tbaa !11
  %681 = load i64, ptr %21, align 8, !tbaa !9
  %682 = sub nsw i64 %681, 1
  %683 = shl i64 %682, 2
  %684 = load i64, ptr %23, align 8, !tbaa !9
  %685 = add nsw i64 %683, %684
  store i64 %685, ptr %8, align 8, !tbaa !9
  %686 = load i64, ptr %19, align 8, !tbaa !9
  %687 = shl i64 %686, 2
  %688 = load i64, ptr %23, align 8, !tbaa !9
  %689 = add nsw i64 %687, %688
  store i64 %689, ptr %20, align 8, !tbaa !9
  br label %690

690:                                              ; preds = %869, %664
  %691 = load i64, ptr %20, align 8, !tbaa !9
  %692 = load i64, ptr %8, align 8, !tbaa !9
  %693 = icmp sle i64 %691, %692
  br i1 %693, label %694, label %872

694:                                              ; preds = %690
  %695 = load double, ptr %13, align 8, !tbaa !11
  %696 = load ptr, ptr %6, align 8, !tbaa !5
  %697 = load i64, ptr %20, align 8, !tbaa !9
  %698 = sub nsw i64 %697, 1
  %699 = getelementptr inbounds double, ptr %696, i64 %698
  %700 = load double, ptr %699, align 8, !tbaa !11
  %701 = fadd double %695, %700
  %702 = load ptr, ptr %6, align 8, !tbaa !5
  %703 = load i64, ptr %20, align 8, !tbaa !9
  %704 = load i64, ptr %23, align 8, !tbaa !9
  %705 = shl i64 %704, 1
  %706 = sub nsw i64 %703, %705
  %707 = sub nsw i64 %706, 2
  %708 = getelementptr inbounds double, ptr %702, i64 %707
  store double %701, ptr %708, align 8, !tbaa !11
  %709 = load ptr, ptr %6, align 8, !tbaa !5
  %710 = load i64, ptr %20, align 8, !tbaa !9
  %711 = sub nsw i64 %710, 1
  %712 = getelementptr inbounds double, ptr %709, i64 %711
  %713 = load double, ptr %712, align 8, !tbaa !11
  %714 = load double, ptr %31, align 8, !tbaa !11
  %715 = load double, ptr %13, align 8, !tbaa !11
  %716 = fmul double %714, %715
  %717 = fcmp ole double %713, %716
  br i1 %717, label %718, label %742

718:                                              ; preds = %694
  %719 = load ptr, ptr %6, align 8, !tbaa !5
  %720 = load i64, ptr %20, align 8, !tbaa !9
  %721 = sub nsw i64 %720, 1
  %722 = getelementptr inbounds double, ptr %719, i64 %721
  store double -0.000000e+00, ptr %722, align 8, !tbaa !11
  %723 = load double, ptr %13, align 8, !tbaa !11
  %724 = load ptr, ptr %6, align 8, !tbaa !5
  %725 = load i64, ptr %20, align 8, !tbaa !9
  %726 = load i64, ptr %23, align 8, !tbaa !9
  %727 = shl i64 %726, 1
  %728 = sub nsw i64 %725, %727
  %729 = sub nsw i64 %728, 2
  %730 = getelementptr inbounds double, ptr %724, i64 %729
  store double %723, ptr %730, align 8, !tbaa !11
  %731 = load ptr, ptr %6, align 8, !tbaa !5
  %732 = load i64, ptr %20, align 8, !tbaa !9
  %733 = load i64, ptr %23, align 8, !tbaa !9
  %734 = shl i64 %733, 1
  %735 = sub nsw i64 %732, %734
  %736 = getelementptr inbounds double, ptr %731, i64 %735
  store double 0.000000e+00, ptr %736, align 8, !tbaa !11
  %737 = load ptr, ptr %6, align 8, !tbaa !5
  %738 = load i64, ptr %20, align 8, !tbaa !9
  %739 = add nsw i64 %738, 1
  %740 = getelementptr inbounds double, ptr %737, i64 %739
  %741 = load double, ptr %740, align 8, !tbaa !11
  store double %741, ptr %13, align 8, !tbaa !11
  br label %851

742:                                              ; preds = %694
  %743 = load double, ptr %57, align 8, !tbaa !11
  %744 = load ptr, ptr %6, align 8, !tbaa !5
  %745 = load i64, ptr %20, align 8, !tbaa !9
  %746 = add nsw i64 %745, 1
  %747 = getelementptr inbounds double, ptr %744, i64 %746
  %748 = load double, ptr %747, align 8, !tbaa !11
  %749 = fmul double %743, %748
  %750 = load ptr, ptr %6, align 8, !tbaa !5
  %751 = load i64, ptr %20, align 8, !tbaa !9
  %752 = load i64, ptr %23, align 8, !tbaa !9
  %753 = shl i64 %752, 1
  %754 = sub nsw i64 %751, %753
  %755 = sub nsw i64 %754, 2
  %756 = getelementptr inbounds double, ptr %750, i64 %755
  %757 = load double, ptr %756, align 8, !tbaa !11
  %758 = fcmp olt double %749, %757
  br i1 %758, label %759, label %807

759:                                              ; preds = %742
  %760 = load double, ptr %57, align 8, !tbaa !11
  %761 = load ptr, ptr %6, align 8, !tbaa !5
  %762 = load i64, ptr %20, align 8, !tbaa !9
  %763 = load i64, ptr %23, align 8, !tbaa !9
  %764 = shl i64 %763, 1
  %765 = sub nsw i64 %762, %764
  %766 = sub nsw i64 %765, 2
  %767 = getelementptr inbounds double, ptr %761, i64 %766
  %768 = load double, ptr %767, align 8, !tbaa !11
  %769 = fmul double %760, %768
  %770 = load ptr, ptr %6, align 8, !tbaa !5
  %771 = load i64, ptr %20, align 8, !tbaa !9
  %772 = add nsw i64 %771, 1
  %773 = getelementptr inbounds double, ptr %770, i64 %772
  %774 = load double, ptr %773, align 8, !tbaa !11
  %775 = fcmp olt double %769, %774
  br i1 %775, label %776, label %807

776:                                              ; preds = %759
  %777 = load ptr, ptr %6, align 8, !tbaa !5
  %778 = load i64, ptr %20, align 8, !tbaa !9
  %779 = add nsw i64 %778, 1
  %780 = getelementptr inbounds double, ptr %777, i64 %779
  %781 = load double, ptr %780, align 8, !tbaa !11
  %782 = load ptr, ptr %6, align 8, !tbaa !5
  %783 = load i64, ptr %20, align 8, !tbaa !9
  %784 = load i64, ptr %23, align 8, !tbaa !9
  %785 = shl i64 %784, 1
  %786 = sub nsw i64 %783, %785
  %787 = sub nsw i64 %786, 2
  %788 = getelementptr inbounds double, ptr %782, i64 %787
  %789 = load double, ptr %788, align 8, !tbaa !11
  %790 = fdiv double %781, %789
  store double %790, ptr %41, align 8, !tbaa !11
  %791 = load ptr, ptr %6, align 8, !tbaa !5
  %792 = load i64, ptr %20, align 8, !tbaa !9
  %793 = sub nsw i64 %792, 1
  %794 = getelementptr inbounds double, ptr %791, i64 %793
  %795 = load double, ptr %794, align 8, !tbaa !11
  %796 = load double, ptr %41, align 8, !tbaa !11
  %797 = fmul double %795, %796
  %798 = load ptr, ptr %6, align 8, !tbaa !5
  %799 = load i64, ptr %20, align 8, !tbaa !9
  %800 = load i64, ptr %23, align 8, !tbaa !9
  %801 = shl i64 %800, 1
  %802 = sub nsw i64 %799, %801
  %803 = getelementptr inbounds double, ptr %798, i64 %802
  store double %797, ptr %803, align 8, !tbaa !11
  %804 = load double, ptr %41, align 8, !tbaa !11
  %805 = load double, ptr %13, align 8, !tbaa !11
  %806 = fmul double %805, %804
  store double %806, ptr %13, align 8, !tbaa !11
  br label %850

807:                                              ; preds = %759, %742
  %808 = load ptr, ptr %6, align 8, !tbaa !5
  %809 = load i64, ptr %20, align 8, !tbaa !9
  %810 = add nsw i64 %809, 1
  %811 = getelementptr inbounds double, ptr %808, i64 %810
  %812 = load double, ptr %811, align 8, !tbaa !11
  %813 = load ptr, ptr %6, align 8, !tbaa !5
  %814 = load i64, ptr %20, align 8, !tbaa !9
  %815 = sub nsw i64 %814, 1
  %816 = getelementptr inbounds double, ptr %813, i64 %815
  %817 = load double, ptr %816, align 8, !tbaa !11
  %818 = load ptr, ptr %6, align 8, !tbaa !5
  %819 = load i64, ptr %20, align 8, !tbaa !9
  %820 = load i64, ptr %23, align 8, !tbaa !9
  %821 = shl i64 %820, 1
  %822 = sub nsw i64 %819, %821
  %823 = sub nsw i64 %822, 2
  %824 = getelementptr inbounds double, ptr %818, i64 %823
  %825 = load double, ptr %824, align 8, !tbaa !11
  %826 = fdiv double %817, %825
  %827 = fmul double %812, %826
  %828 = load ptr, ptr %6, align 8, !tbaa !5
  %829 = load i64, ptr %20, align 8, !tbaa !9
  %830 = load i64, ptr %23, align 8, !tbaa !9
  %831 = shl i64 %830, 1
  %832 = sub nsw i64 %829, %831
  %833 = getelementptr inbounds double, ptr %828, i64 %832
  store double %827, ptr %833, align 8, !tbaa !11
  %834 = load ptr, ptr %6, align 8, !tbaa !5
  %835 = load i64, ptr %20, align 8, !tbaa !9
  %836 = add nsw i64 %835, 1
  %837 = getelementptr inbounds double, ptr %834, i64 %836
  %838 = load double, ptr %837, align 8, !tbaa !11
  %839 = load double, ptr %13, align 8, !tbaa !11
  %840 = load ptr, ptr %6, align 8, !tbaa !5
  %841 = load i64, ptr %20, align 8, !tbaa !9
  %842 = load i64, ptr %23, align 8, !tbaa !9
  %843 = shl i64 %842, 1
  %844 = sub nsw i64 %841, %843
  %845 = sub nsw i64 %844, 2
  %846 = getelementptr inbounds double, ptr %840, i64 %845
  %847 = load double, ptr %846, align 8, !tbaa !11
  %848 = fdiv double %839, %847
  %849 = fmul double %838, %848
  store double %849, ptr %13, align 8, !tbaa !11
  br label %850

850:                                              ; preds = %807, %776
  br label %851

851:                                              ; preds = %850, %718
  %852 = load double, ptr %35, align 8, !tbaa !11
  store double %852, ptr %11, align 8, !tbaa !11
  %853 = load ptr, ptr %6, align 8, !tbaa !5
  %854 = load i64, ptr %20, align 8, !tbaa !9
  %855 = load i64, ptr %23, align 8, !tbaa !9
  %856 = shl i64 %855, 1
  %857 = sub nsw i64 %854, %856
  %858 = getelementptr inbounds double, ptr %853, i64 %857
  %859 = load double, ptr %858, align 8, !tbaa !11
  store double %859, ptr %12, align 8, !tbaa !11
  %860 = load double, ptr %11, align 8, !tbaa !11
  %861 = load double, ptr %12, align 8, !tbaa !11
  %862 = fcmp ole double %860, %861
  br i1 %862, label %863, label %865

863:                                              ; preds = %851
  %864 = load double, ptr %11, align 8, !tbaa !11
  br label %867

865:                                              ; preds = %851
  %866 = load double, ptr %12, align 8, !tbaa !11
  br label %867

867:                                              ; preds = %865, %863
  %868 = phi double [ %864, %863 ], [ %866, %865 ]
  store double %868, ptr %35, align 8, !tbaa !11
  br label %869

869:                                              ; preds = %867
  %870 = load i64, ptr %20, align 8, !tbaa !9
  %871 = add nsw i64 %870, 4
  store i64 %871, ptr %20, align 8, !tbaa !9
  br label %690, !llvm.loop !19

872:                                              ; preds = %690
  %873 = load double, ptr %13, align 8, !tbaa !11
  %874 = load ptr, ptr %6, align 8, !tbaa !5
  %875 = load i64, ptr %21, align 8, !tbaa !9
  %876 = shl i64 %875, 2
  %877 = load i64, ptr %23, align 8, !tbaa !9
  %878 = sub nsw i64 %876, %877
  %879 = sub nsw i64 %878, 2
  %880 = getelementptr inbounds double, ptr %874, i64 %879
  store double %873, ptr %880, align 8, !tbaa !11
  %881 = load ptr, ptr %6, align 8, !tbaa !5
  %882 = load i64, ptr %19, align 8, !tbaa !9
  %883 = shl i64 %882, 2
  %884 = load i64, ptr %23, align 8, !tbaa !9
  %885 = sub nsw i64 %883, %884
  %886 = sub nsw i64 %885, 2
  %887 = getelementptr inbounds double, ptr %881, i64 %886
  %888 = load double, ptr %887, align 8, !tbaa !11
  store double %888, ptr %42, align 8, !tbaa !11
  %889 = load i64, ptr %21, align 8, !tbaa !9
  %890 = shl i64 %889, 2
  %891 = load i64, ptr %23, align 8, !tbaa !9
  %892 = sub nsw i64 %890, %891
  %893 = sub nsw i64 %892, 2
  store i64 %893, ptr %8, align 8, !tbaa !9
  %894 = load i64, ptr %19, align 8, !tbaa !9
  %895 = shl i64 %894, 2
  %896 = load i64, ptr %23, align 8, !tbaa !9
  %897 = sub nsw i64 %895, %896
  %898 = add nsw i64 %897, 2
  store i64 %898, ptr %20, align 8, !tbaa !9
  br label %899

899:                                              ; preds = %918, %872
  %900 = load i64, ptr %20, align 8, !tbaa !9
  %901 = load i64, ptr %8, align 8, !tbaa !9
  %902 = icmp sle i64 %900, %901
  br i1 %902, label %903, label %921

903:                                              ; preds = %899
  %904 = load double, ptr %42, align 8, !tbaa !11
  store double %904, ptr %11, align 8, !tbaa !11
  %905 = load ptr, ptr %6, align 8, !tbaa !5
  %906 = load i64, ptr %20, align 8, !tbaa !9
  %907 = getelementptr inbounds double, ptr %905, i64 %906
  %908 = load double, ptr %907, align 8, !tbaa !11
  store double %908, ptr %12, align 8, !tbaa !11
  %909 = load double, ptr %11, align 8, !tbaa !11
  %910 = load double, ptr %12, align 8, !tbaa !11
  %911 = fcmp oge double %909, %910
  br i1 %911, label %912, label %914

912:                                              ; preds = %903
  %913 = load double, ptr %11, align 8, !tbaa !11
  br label %916

914:                                              ; preds = %903
  %915 = load double, ptr %12, align 8, !tbaa !11
  br label %916

916:                                              ; preds = %914, %912
  %917 = phi double [ %913, %912 ], [ %915, %914 ]
  store double %917, ptr %42, align 8, !tbaa !11
  br label %918

918:                                              ; preds = %916
  %919 = load i64, ptr %20, align 8, !tbaa !9
  %920 = add nsw i64 %919, 4
  store i64 %920, ptr %20, align 8, !tbaa !9
  br label %899, !llvm.loop !20

921:                                              ; preds = %899
  %922 = load i64, ptr %23, align 8, !tbaa !9
  %923 = sub nsw i64 1, %922
  store i64 %923, ptr %23, align 8, !tbaa !9
  br label %924

924:                                              ; preds = %921
  %925 = load i64, ptr %16, align 8, !tbaa !9
  %926 = add nsw i64 %925, 1
  store i64 %926, ptr %16, align 8, !tbaa !9
  br label %599, !llvm.loop !21

927:                                              ; preds = %599
  store i64 0, ptr %52, align 8, !tbaa !9
  store double 0.000000e+00, ptr %45, align 8, !tbaa !11
  store double 0.000000e+00, ptr %46, align 8, !tbaa !11
  store double 0.000000e+00, ptr %22, align 8, !tbaa !11
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  store double 0.000000e+00, ptr %25, align 8, !tbaa !11
  store double 0.000000e+00, ptr %15, align 8, !tbaa !11
  store double 0.000000e+00, ptr %28, align 8, !tbaa !11
  store i64 2, ptr %39, align 8, !tbaa !9
  store i64 0, ptr %47, align 8, !tbaa !9
  %928 = load i64, ptr %21, align 8, !tbaa !9
  %929 = load i64, ptr %19, align 8, !tbaa !9
  %930 = sub nsw i64 %928, %929
  %931 = shl i64 %930, 1
  store i64 %931, ptr %38, align 8, !tbaa !9
  %932 = load ptr, ptr %5, align 8, !tbaa !5
  %933 = load i64, ptr %932, align 8, !tbaa !9
  %934 = add nsw i64 %933, 1
  store i64 %934, ptr %8, align 8, !tbaa !9
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %935

935:                                              ; preds = %1475, %927
  %936 = load i64, ptr %54, align 8, !tbaa !9
  %937 = load i64, ptr %8, align 8, !tbaa !9
  %938 = icmp sle i64 %936, %937
  br i1 %938, label %939, label %1478

939:                                              ; preds = %935
  %940 = load i64, ptr %21, align 8, !tbaa !9
  %941 = icmp slt i64 %940, 1
  br i1 %941, label %942, label %943

942:                                              ; preds = %939
  br label %1480

943:                                              ; preds = %939
  store double 0.000000e+00, ptr %48, align 8, !tbaa !11
  %944 = load i64, ptr %21, align 8, !tbaa !9
  %945 = load ptr, ptr %5, align 8, !tbaa !5
  %946 = load i64, ptr %945, align 8, !tbaa !9
  %947 = icmp eq i64 %944, %946
  br i1 %947, label %948, label %949

948:                                              ; preds = %943
  store double 0.000000e+00, ptr %50, align 8, !tbaa !11
  br label %957

949:                                              ; preds = %943
  %950 = load ptr, ptr %6, align 8, !tbaa !5
  %951 = load i64, ptr %21, align 8, !tbaa !9
  %952 = shl i64 %951, 2
  %953 = sub nsw i64 %952, 1
  %954 = getelementptr inbounds double, ptr %950, i64 %953
  %955 = load double, ptr %954, align 8, !tbaa !11
  %956 = fneg double %955
  store double %956, ptr %50, align 8, !tbaa !11
  br label %957

957:                                              ; preds = %949, %948
  %958 = load double, ptr %50, align 8, !tbaa !11
  %959 = fcmp olt double %958, 0.000000e+00
  br i1 %959, label %960, label %962

960:                                              ; preds = %957
  %961 = load ptr, ptr %7, align 8, !tbaa !5
  store i64 1, ptr %961, align 8, !tbaa !9
  store i32 0, ptr %4, align 4
  store i32 1, ptr %58, align 4
  br label %1570

962:                                              ; preds = %957
  store double 0.000000e+00, ptr %36, align 8, !tbaa !11
  %963 = load i64, ptr %21, align 8, !tbaa !9
  %964 = load i64, ptr %19, align 8, !tbaa !9
  %965 = icmp sgt i64 %963, %964
  br i1 %965, label %966, label %982

966:                                              ; preds = %962
  %967 = load ptr, ptr %6, align 8, !tbaa !5
  %968 = load i64, ptr %21, align 8, !tbaa !9
  %969 = shl i64 %968, 2
  %970 = sub nsw i64 %969, 5
  %971 = getelementptr inbounds double, ptr %967, i64 %970
  %972 = load double, ptr %971, align 8, !tbaa !11
  store double %972, ptr %11, align 8, !tbaa !11
  %973 = load double, ptr %11, align 8, !tbaa !11
  %974 = fcmp oge double %973, 0.000000e+00
  br i1 %974, label %975, label %977

975:                                              ; preds = %966
  %976 = load double, ptr %11, align 8, !tbaa !11
  br label %980

977:                                              ; preds = %966
  %978 = load double, ptr %11, align 8, !tbaa !11
  %979 = fneg double %978
  br label %980

980:                                              ; preds = %977, %975
  %981 = phi double [ %976, %975 ], [ %979, %977 ]
  store double %981, ptr %35, align 8, !tbaa !11
  br label %983

982:                                              ; preds = %962
  store double 0.000000e+00, ptr %35, align 8, !tbaa !11
  br label %983

983:                                              ; preds = %982, %980
  %984 = load ptr, ptr %6, align 8, !tbaa !5
  %985 = load i64, ptr %21, align 8, !tbaa !9
  %986 = shl i64 %985, 2
  %987 = sub nsw i64 %986, 3
  %988 = getelementptr inbounds double, ptr %984, i64 %987
  %989 = load double, ptr %988, align 8, !tbaa !11
  store double %989, ptr %40, align 8, !tbaa !11
  %990 = load double, ptr %40, align 8, !tbaa !11
  store double %990, ptr %42, align 8, !tbaa !11
  %991 = load i64, ptr %21, align 8, !tbaa !9
  %992 = shl i64 %991, 2
  store i64 %992, ptr %20, align 8, !tbaa !9
  br label %993

993:                                              ; preds = %1077, %983
  %994 = load i64, ptr %20, align 8, !tbaa !9
  %995 = icmp sge i64 %994, 8
  br i1 %995, label %996, label %1080

996:                                              ; preds = %993
  %997 = load ptr, ptr %6, align 8, !tbaa !5
  %998 = load i64, ptr %20, align 8, !tbaa !9
  %999 = sub nsw i64 %998, 5
  %1000 = getelementptr inbounds double, ptr %997, i64 %999
  %1001 = load double, ptr %1000, align 8, !tbaa !11
  %1002 = fcmp ole double %1001, 0.000000e+00
  br i1 %1002, label %1003, label %1004

1003:                                             ; preds = %996
  br label %1081

1004:                                             ; preds = %996
  %1005 = load double, ptr %40, align 8, !tbaa !11
  %1006 = load double, ptr %36, align 8, !tbaa !11
  %1007 = fmul double %1006, 4.000000e+00
  %1008 = fcmp oge double %1005, %1007
  br i1 %1008, label %1009, label %1040

1009:                                             ; preds = %1004
  %1010 = load double, ptr %40, align 8, !tbaa !11
  store double %1010, ptr %11, align 8, !tbaa !11
  %1011 = load ptr, ptr %6, align 8, !tbaa !5
  %1012 = load i64, ptr %20, align 8, !tbaa !9
  %1013 = sub nsw i64 %1012, 3
  %1014 = getelementptr inbounds double, ptr %1011, i64 %1013
  %1015 = load double, ptr %1014, align 8, !tbaa !11
  store double %1015, ptr %12, align 8, !tbaa !11
  %1016 = load double, ptr %11, align 8, !tbaa !11
  %1017 = load double, ptr %12, align 8, !tbaa !11
  %1018 = fcmp ole double %1016, %1017
  br i1 %1018, label %1019, label %1021

1019:                                             ; preds = %1009
  %1020 = load double, ptr %11, align 8, !tbaa !11
  br label %1023

1021:                                             ; preds = %1009
  %1022 = load double, ptr %12, align 8, !tbaa !11
  br label %1023

1023:                                             ; preds = %1021, %1019
  %1024 = phi double [ %1020, %1019 ], [ %1022, %1021 ]
  store double %1024, ptr %40, align 8, !tbaa !11
  %1025 = load double, ptr %36, align 8, !tbaa !11
  store double %1025, ptr %11, align 8, !tbaa !11
  %1026 = load ptr, ptr %6, align 8, !tbaa !5
  %1027 = load i64, ptr %20, align 8, !tbaa !9
  %1028 = sub nsw i64 %1027, 5
  %1029 = getelementptr inbounds double, ptr %1026, i64 %1028
  %1030 = load double, ptr %1029, align 8, !tbaa !11
  store double %1030, ptr %12, align 8, !tbaa !11
  %1031 = load double, ptr %11, align 8, !tbaa !11
  %1032 = load double, ptr %12, align 8, !tbaa !11
  %1033 = fcmp oge double %1031, %1032
  br i1 %1033, label %1034, label %1036

1034:                                             ; preds = %1023
  %1035 = load double, ptr %11, align 8, !tbaa !11
  br label %1038

1036:                                             ; preds = %1023
  %1037 = load double, ptr %12, align 8, !tbaa !11
  br label %1038

1038:                                             ; preds = %1036, %1034
  %1039 = phi double [ %1035, %1034 ], [ %1037, %1036 ]
  store double %1039, ptr %36, align 8, !tbaa !11
  br label %1040

1040:                                             ; preds = %1038, %1004
  %1041 = load double, ptr %42, align 8, !tbaa !11
  store double %1041, ptr %11, align 8, !tbaa !11
  %1042 = load ptr, ptr %6, align 8, !tbaa !5
  %1043 = load i64, ptr %20, align 8, !tbaa !9
  %1044 = sub nsw i64 %1043, 7
  %1045 = getelementptr inbounds double, ptr %1042, i64 %1044
  %1046 = load double, ptr %1045, align 8, !tbaa !11
  %1047 = load ptr, ptr %6, align 8, !tbaa !5
  %1048 = load i64, ptr %20, align 8, !tbaa !9
  %1049 = sub nsw i64 %1048, 5
  %1050 = getelementptr inbounds double, ptr %1047, i64 %1049
  %1051 = load double, ptr %1050, align 8, !tbaa !11
  %1052 = fadd double %1046, %1051
  store double %1052, ptr %12, align 8, !tbaa !11
  %1053 = load double, ptr %11, align 8, !tbaa !11
  %1054 = load double, ptr %12, align 8, !tbaa !11
  %1055 = fcmp oge double %1053, %1054
  br i1 %1055, label %1056, label %1058

1056:                                             ; preds = %1040
  %1057 = load double, ptr %11, align 8, !tbaa !11
  br label %1060

1058:                                             ; preds = %1040
  %1059 = load double, ptr %12, align 8, !tbaa !11
  br label %1060

1060:                                             ; preds = %1058, %1056
  %1061 = phi double [ %1057, %1056 ], [ %1059, %1058 ]
  store double %1061, ptr %42, align 8, !tbaa !11
  %1062 = load double, ptr %35, align 8, !tbaa !11
  store double %1062, ptr %11, align 8, !tbaa !11
  %1063 = load ptr, ptr %6, align 8, !tbaa !5
  %1064 = load i64, ptr %20, align 8, !tbaa !9
  %1065 = sub nsw i64 %1064, 5
  %1066 = getelementptr inbounds double, ptr %1063, i64 %1065
  %1067 = load double, ptr %1066, align 8, !tbaa !11
  store double %1067, ptr %12, align 8, !tbaa !11
  %1068 = load double, ptr %11, align 8, !tbaa !11
  %1069 = load double, ptr %12, align 8, !tbaa !11
  %1070 = fcmp ole double %1068, %1069
  br i1 %1070, label %1071, label %1073

1071:                                             ; preds = %1060
  %1072 = load double, ptr %11, align 8, !tbaa !11
  br label %1075

1073:                                             ; preds = %1060
  %1074 = load double, ptr %12, align 8, !tbaa !11
  br label %1075

1075:                                             ; preds = %1073, %1071
  %1076 = phi double [ %1072, %1071 ], [ %1074, %1073 ]
  store double %1076, ptr %35, align 8, !tbaa !11
  br label %1077

1077:                                             ; preds = %1075
  %1078 = load i64, ptr %20, align 8, !tbaa !9
  %1079 = add nsw i64 %1078, -4
  store i64 %1079, ptr %20, align 8, !tbaa !9
  br label %993, !llvm.loop !22

1080:                                             ; preds = %993
  store i64 4, ptr %20, align 8, !tbaa !9
  br label %1081

1081:                                             ; preds = %1080, %1003
  %1082 = load i64, ptr %20, align 8, !tbaa !9
  %1083 = sdiv i64 %1082, 4
  store i64 %1083, ptr %19, align 8, !tbaa !9
  store i64 0, ptr %23, align 8, !tbaa !9
  %1084 = load i64, ptr %21, align 8, !tbaa !9
  %1085 = load i64, ptr %19, align 8, !tbaa !9
  %1086 = sub nsw i64 %1084, %1085
  %1087 = icmp sgt i64 %1086, 1
  br i1 %1087, label %1088, label %1265

1088:                                             ; preds = %1081
  %1089 = load ptr, ptr %6, align 8, !tbaa !5
  %1090 = load i64, ptr %19, align 8, !tbaa !9
  %1091 = shl i64 %1090, 2
  %1092 = sub nsw i64 %1091, 3
  %1093 = getelementptr inbounds double, ptr %1089, i64 %1092
  %1094 = load double, ptr %1093, align 8, !tbaa !11
  store double %1094, ptr %26, align 8, !tbaa !11
  %1095 = load double, ptr %26, align 8, !tbaa !11
  store double %1095, ptr %53, align 8, !tbaa !11
  %1096 = load i64, ptr %19, align 8, !tbaa !9
  store i64 %1096, ptr %37, align 8, !tbaa !9
  %1097 = load i64, ptr %21, align 8, !tbaa !9
  %1098 = shl i64 %1097, 2
  %1099 = sub nsw i64 %1098, 3
  store i64 %1099, ptr %9, align 8, !tbaa !9
  %1100 = load i64, ptr %19, align 8, !tbaa !9
  %1101 = shl i64 %1100, 2
  %1102 = add nsw i64 %1101, 1
  store i64 %1102, ptr %20, align 8, !tbaa !9
  br label %1103

1103:                                             ; preds = %1131, %1088
  %1104 = load i64, ptr %20, align 8, !tbaa !9
  %1105 = load i64, ptr %9, align 8, !tbaa !9
  %1106 = icmp sle i64 %1104, %1105
  br i1 %1106, label %1107, label %1134

1107:                                             ; preds = %1103
  %1108 = load ptr, ptr %6, align 8, !tbaa !5
  %1109 = load i64, ptr %20, align 8, !tbaa !9
  %1110 = getelementptr inbounds double, ptr %1108, i64 %1109
  %1111 = load double, ptr %1110, align 8, !tbaa !11
  %1112 = load double, ptr %26, align 8, !tbaa !11
  %1113 = load double, ptr %26, align 8, !tbaa !11
  %1114 = load ptr, ptr %6, align 8, !tbaa !5
  %1115 = load i64, ptr %20, align 8, !tbaa !9
  %1116 = sub nsw i64 %1115, 2
  %1117 = getelementptr inbounds double, ptr %1114, i64 %1116
  %1118 = load double, ptr %1117, align 8, !tbaa !11
  %1119 = fadd double %1113, %1118
  %1120 = fdiv double %1112, %1119
  %1121 = fmul double %1111, %1120
  store double %1121, ptr %26, align 8, !tbaa !11
  %1122 = load double, ptr %26, align 8, !tbaa !11
  %1123 = load double, ptr %53, align 8, !tbaa !11
  %1124 = fcmp ole double %1122, %1123
  br i1 %1124, label %1125, label %1130

1125:                                             ; preds = %1107
  %1126 = load double, ptr %26, align 8, !tbaa !11
  store double %1126, ptr %53, align 8, !tbaa !11
  %1127 = load i64, ptr %20, align 8, !tbaa !9
  %1128 = add nsw i64 %1127, 3
  %1129 = sdiv i64 %1128, 4
  store i64 %1129, ptr %37, align 8, !tbaa !9
  br label %1130

1130:                                             ; preds = %1125, %1107
  br label %1131

1131:                                             ; preds = %1130
  %1132 = load i64, ptr %20, align 8, !tbaa !9
  %1133 = add nsw i64 %1132, 4
  store i64 %1133, ptr %20, align 8, !tbaa !9
  br label %1103, !llvm.loop !23

1134:                                             ; preds = %1103
  %1135 = load i64, ptr %37, align 8, !tbaa !9
  %1136 = load i64, ptr %19, align 8, !tbaa !9
  %1137 = sub nsw i64 %1135, %1136
  %1138 = shl i64 %1137, 1
  %1139 = load i64, ptr %21, align 8, !tbaa !9
  %1140 = load i64, ptr %37, align 8, !tbaa !9
  %1141 = sub nsw i64 %1139, %1140
  %1142 = icmp slt i64 %1138, %1141
  br i1 %1142, label %1143, label %1264

1143:                                             ; preds = %1134
  %1144 = load double, ptr %53, align 8, !tbaa !11
  %1145 = load ptr, ptr %6, align 8, !tbaa !5
  %1146 = load i64, ptr %21, align 8, !tbaa !9
  %1147 = shl i64 %1146, 2
  %1148 = sub nsw i64 %1147, 3
  %1149 = getelementptr inbounds double, ptr %1145, i64 %1148
  %1150 = load double, ptr %1149, align 8, !tbaa !11
  %1151 = fmul double %1150, 5.000000e-01
  %1152 = fcmp ole double %1144, %1151
  br i1 %1152, label %1153, label %1264

1153:                                             ; preds = %1143
  %1154 = load i64, ptr %19, align 8, !tbaa !9
  %1155 = load i64, ptr %21, align 8, !tbaa !9
  %1156 = add nsw i64 %1154, %1155
  %1157 = shl i64 %1156, 2
  store i64 %1157, ptr %30, align 8, !tbaa !9
  store i64 2, ptr %23, align 8, !tbaa !9
  %1158 = load i64, ptr %19, align 8, !tbaa !9
  %1159 = load i64, ptr %21, align 8, !tbaa !9
  %1160 = add nsw i64 %1158, %1159
  %1161 = sub nsw i64 %1160, 1
  %1162 = shl i64 %1161, 1
  store i64 %1162, ptr %9, align 8, !tbaa !9
  %1163 = load i64, ptr %19, align 8, !tbaa !9
  %1164 = shl i64 %1163, 2
  store i64 %1164, ptr %20, align 8, !tbaa !9
  br label %1165

1165:                                             ; preds = %1260, %1153
  %1166 = load i64, ptr %20, align 8, !tbaa !9
  %1167 = load i64, ptr %9, align 8, !tbaa !9
  %1168 = icmp sle i64 %1166, %1167
  br i1 %1168, label %1169, label %1263

1169:                                             ; preds = %1165
  %1170 = load ptr, ptr %6, align 8, !tbaa !5
  %1171 = load i64, ptr %20, align 8, !tbaa !9
  %1172 = sub nsw i64 %1171, 3
  %1173 = getelementptr inbounds double, ptr %1170, i64 %1172
  %1174 = load double, ptr %1173, align 8, !tbaa !11
  store double %1174, ptr %41, align 8, !tbaa !11
  %1175 = load ptr, ptr %6, align 8, !tbaa !5
  %1176 = load i64, ptr %30, align 8, !tbaa !9
  %1177 = load i64, ptr %20, align 8, !tbaa !9
  %1178 = sub nsw i64 %1176, %1177
  %1179 = sub nsw i64 %1178, 3
  %1180 = getelementptr inbounds double, ptr %1175, i64 %1179
  %1181 = load double, ptr %1180, align 8, !tbaa !11
  %1182 = load ptr, ptr %6, align 8, !tbaa !5
  %1183 = load i64, ptr %20, align 8, !tbaa !9
  %1184 = sub nsw i64 %1183, 3
  %1185 = getelementptr inbounds double, ptr %1182, i64 %1184
  store double %1181, ptr %1185, align 8, !tbaa !11
  %1186 = load double, ptr %41, align 8, !tbaa !11
  %1187 = load ptr, ptr %6, align 8, !tbaa !5
  %1188 = load i64, ptr %30, align 8, !tbaa !9
  %1189 = load i64, ptr %20, align 8, !tbaa !9
  %1190 = sub nsw i64 %1188, %1189
  %1191 = sub nsw i64 %1190, 3
  %1192 = getelementptr inbounds double, ptr %1187, i64 %1191
  store double %1186, ptr %1192, align 8, !tbaa !11
  %1193 = load ptr, ptr %6, align 8, !tbaa !5
  %1194 = load i64, ptr %20, align 8, !tbaa !9
  %1195 = sub nsw i64 %1194, 2
  %1196 = getelementptr inbounds double, ptr %1193, i64 %1195
  %1197 = load double, ptr %1196, align 8, !tbaa !11
  store double %1197, ptr %41, align 8, !tbaa !11
  %1198 = load ptr, ptr %6, align 8, !tbaa !5
  %1199 = load i64, ptr %30, align 8, !tbaa !9
  %1200 = load i64, ptr %20, align 8, !tbaa !9
  %1201 = sub nsw i64 %1199, %1200
  %1202 = sub nsw i64 %1201, 2
  %1203 = getelementptr inbounds double, ptr %1198, i64 %1202
  %1204 = load double, ptr %1203, align 8, !tbaa !11
  %1205 = load ptr, ptr %6, align 8, !tbaa !5
  %1206 = load i64, ptr %20, align 8, !tbaa !9
  %1207 = sub nsw i64 %1206, 2
  %1208 = getelementptr inbounds double, ptr %1205, i64 %1207
  store double %1204, ptr %1208, align 8, !tbaa !11
  %1209 = load double, ptr %41, align 8, !tbaa !11
  %1210 = load ptr, ptr %6, align 8, !tbaa !5
  %1211 = load i64, ptr %30, align 8, !tbaa !9
  %1212 = load i64, ptr %20, align 8, !tbaa !9
  %1213 = sub nsw i64 %1211, %1212
  %1214 = sub nsw i64 %1213, 2
  %1215 = getelementptr inbounds double, ptr %1210, i64 %1214
  store double %1209, ptr %1215, align 8, !tbaa !11
  %1216 = load ptr, ptr %6, align 8, !tbaa !5
  %1217 = load i64, ptr %20, align 8, !tbaa !9
  %1218 = sub nsw i64 %1217, 1
  %1219 = getelementptr inbounds double, ptr %1216, i64 %1218
  %1220 = load double, ptr %1219, align 8, !tbaa !11
  store double %1220, ptr %41, align 8, !tbaa !11
  %1221 = load ptr, ptr %6, align 8, !tbaa !5
  %1222 = load i64, ptr %30, align 8, !tbaa !9
  %1223 = load i64, ptr %20, align 8, !tbaa !9
  %1224 = sub nsw i64 %1222, %1223
  %1225 = sub nsw i64 %1224, 5
  %1226 = getelementptr inbounds double, ptr %1221, i64 %1225
  %1227 = load double, ptr %1226, align 8, !tbaa !11
  %1228 = load ptr, ptr %6, align 8, !tbaa !5
  %1229 = load i64, ptr %20, align 8, !tbaa !9
  %1230 = sub nsw i64 %1229, 1
  %1231 = getelementptr inbounds double, ptr %1228, i64 %1230
  store double %1227, ptr %1231, align 8, !tbaa !11
  %1232 = load double, ptr %41, align 8, !tbaa !11
  %1233 = load ptr, ptr %6, align 8, !tbaa !5
  %1234 = load i64, ptr %30, align 8, !tbaa !9
  %1235 = load i64, ptr %20, align 8, !tbaa !9
  %1236 = sub nsw i64 %1234, %1235
  %1237 = sub nsw i64 %1236, 5
  %1238 = getelementptr inbounds double, ptr %1233, i64 %1237
  store double %1232, ptr %1238, align 8, !tbaa !11
  %1239 = load ptr, ptr %6, align 8, !tbaa !5
  %1240 = load i64, ptr %20, align 8, !tbaa !9
  %1241 = getelementptr inbounds double, ptr %1239, i64 %1240
  %1242 = load double, ptr %1241, align 8, !tbaa !11
  store double %1242, ptr %41, align 8, !tbaa !11
  %1243 = load ptr, ptr %6, align 8, !tbaa !5
  %1244 = load i64, ptr %30, align 8, !tbaa !9
  %1245 = load i64, ptr %20, align 8, !tbaa !9
  %1246 = sub nsw i64 %1244, %1245
  %1247 = sub nsw i64 %1246, 4
  %1248 = getelementptr inbounds double, ptr %1243, i64 %1247
  %1249 = load double, ptr %1248, align 8, !tbaa !11
  %1250 = load ptr, ptr %6, align 8, !tbaa !5
  %1251 = load i64, ptr %20, align 8, !tbaa !9
  %1252 = getelementptr inbounds double, ptr %1250, i64 %1251
  store double %1249, ptr %1252, align 8, !tbaa !11
  %1253 = load double, ptr %41, align 8, !tbaa !11
  %1254 = load ptr, ptr %6, align 8, !tbaa !5
  %1255 = load i64, ptr %30, align 8, !tbaa !9
  %1256 = load i64, ptr %20, align 8, !tbaa !9
  %1257 = sub nsw i64 %1255, %1256
  %1258 = sub nsw i64 %1257, 4
  %1259 = getelementptr inbounds double, ptr %1254, i64 %1258
  store double %1253, ptr %1259, align 8, !tbaa !11
  br label %1260

1260:                                             ; preds = %1169
  %1261 = load i64, ptr %20, align 8, !tbaa !9
  %1262 = add nsw i64 %1261, 4
  store i64 %1262, ptr %20, align 8, !tbaa !9
  br label %1165, !llvm.loop !24

1263:                                             ; preds = %1165
  br label %1264

1264:                                             ; preds = %1263, %1143, %1134
  br label %1265

1265:                                             ; preds = %1264, %1081
  store double 0.000000e+00, ptr %11, align 8, !tbaa !11
  %1266 = load double, ptr %40, align 8, !tbaa !11
  %1267 = load double, ptr %40, align 8, !tbaa !11
  %1268 = call double @sqrt(double noundef %1267) #5
  %1269 = fmul double %1268, 2.000000e+00
  %1270 = load double, ptr %36, align 8, !tbaa !11
  %1271 = call double @sqrt(double noundef %1270) #5
  %1272 = fneg double %1269
  %1273 = call double @llvm.fmuladd.f64(double %1272, double %1271, double %1266)
  store double %1273, ptr %12, align 8, !tbaa !11
  %1274 = load double, ptr %11, align 8, !tbaa !11
  %1275 = load double, ptr %12, align 8, !tbaa !11
  %1276 = fcmp oge double %1274, %1275
  br i1 %1276, label %1277, label %1279

1277:                                             ; preds = %1265
  %1278 = load double, ptr %11, align 8, !tbaa !11
  br label %1281

1279:                                             ; preds = %1265
  %1280 = load double, ptr %12, align 8, !tbaa !11
  br label %1281

1281:                                             ; preds = %1279, %1277
  %1282 = phi double [ %1278, %1277 ], [ %1280, %1279 ]
  %1283 = fneg double %1282
  store double %1283, ptr %34, align 8, !tbaa !11
  %1284 = load i64, ptr %21, align 8, !tbaa !9
  %1285 = load i64, ptr %19, align 8, !tbaa !9
  %1286 = sub nsw i64 %1284, %1285
  %1287 = add nsw i64 %1286, 1
  %1288 = mul nsw i64 %1287, 30
  store i64 %1288, ptr %33, align 8, !tbaa !9
  %1289 = load i64, ptr %33, align 8, !tbaa !9
  store i64 %1289, ptr %9, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %1290

1290:                                             ; preds = %1469, %1281
  %1291 = load i64, ptr %55, align 8, !tbaa !9
  %1292 = load i64, ptr %9, align 8, !tbaa !9
  %1293 = icmp sle i64 %1291, %1292
  br i1 %1293, label %1294, label %1472

1294:                                             ; preds = %1290
  %1295 = load i64, ptr %19, align 8, !tbaa !9
  %1296 = load i64, ptr %21, align 8, !tbaa !9
  %1297 = icmp sgt i64 %1295, %1296
  br i1 %1297, label %1298, label %1299

1298:                                             ; preds = %1294
  br label %1474

1299:                                             ; preds = %1294
  %1300 = load ptr, ptr %6, align 8, !tbaa !5
  %1301 = getelementptr inbounds double, ptr %1300, i64 1
  %1302 = call i32 @dlasq3_(ptr noundef %19, ptr noundef %21, ptr noundef %1301, ptr noundef %23, ptr noundef %34, ptr noundef %50, ptr noundef %48, ptr noundef %42, ptr noundef %47, ptr noundef %39, ptr noundef %38, ptr noundef %32, ptr noundef %52, ptr noundef %45, ptr noundef %46, ptr noundef %22, ptr noundef %24, ptr noundef %25, ptr noundef %15, ptr noundef %28)
  %1303 = load i64, ptr %23, align 8, !tbaa !9
  %1304 = sub nsw i64 1, %1303
  store i64 %1304, ptr %23, align 8, !tbaa !9
  %1305 = load i64, ptr %23, align 8, !tbaa !9
  %1306 = icmp eq i64 %1305, 0
  br i1 %1306, label %1307, label %1468

1307:                                             ; preds = %1299
  %1308 = load i64, ptr %21, align 8, !tbaa !9
  %1309 = load i64, ptr %19, align 8, !tbaa !9
  %1310 = sub nsw i64 %1308, %1309
  %1311 = icmp sge i64 %1310, 3
  br i1 %1311, label %1312, label %1468

1312:                                             ; preds = %1307
  %1313 = load ptr, ptr %6, align 8, !tbaa !5
  %1314 = load i64, ptr %21, align 8, !tbaa !9
  %1315 = mul nsw i64 %1314, 4
  %1316 = getelementptr inbounds double, ptr %1313, i64 %1315
  %1317 = load double, ptr %1316, align 8, !tbaa !11
  %1318 = load double, ptr %31, align 8, !tbaa !11
  %1319 = load double, ptr %42, align 8, !tbaa !11
  %1320 = fmul double %1318, %1319
  %1321 = fcmp ole double %1317, %1320
  br i1 %1321, label %1333, label %1322

1322:                                             ; preds = %1312
  %1323 = load ptr, ptr %6, align 8, !tbaa !5
  %1324 = load i64, ptr %21, align 8, !tbaa !9
  %1325 = shl i64 %1324, 2
  %1326 = sub nsw i64 %1325, 1
  %1327 = getelementptr inbounds double, ptr %1323, i64 %1326
  %1328 = load double, ptr %1327, align 8, !tbaa !11
  %1329 = load double, ptr %31, align 8, !tbaa !11
  %1330 = load double, ptr %50, align 8, !tbaa !11
  %1331 = fmul double %1329, %1330
  %1332 = fcmp ole double %1328, %1331
  br i1 %1332, label %1333, label %1467

1333:                                             ; preds = %1322, %1312
  %1334 = load i64, ptr %19, align 8, !tbaa !9
  %1335 = sub nsw i64 %1334, 1
  store i64 %1335, ptr %44, align 8, !tbaa !9
  %1336 = load ptr, ptr %6, align 8, !tbaa !5
  %1337 = load i64, ptr %19, align 8, !tbaa !9
  %1338 = shl i64 %1337, 2
  %1339 = sub nsw i64 %1338, 3
  %1340 = getelementptr inbounds double, ptr %1336, i64 %1339
  %1341 = load double, ptr %1340, align 8, !tbaa !11
  store double %1341, ptr %42, align 8, !tbaa !11
  %1342 = load ptr, ptr %6, align 8, !tbaa !5
  %1343 = load i64, ptr %19, align 8, !tbaa !9
  %1344 = shl i64 %1343, 2
  %1345 = sub nsw i64 %1344, 1
  %1346 = getelementptr inbounds double, ptr %1342, i64 %1345
  %1347 = load double, ptr %1346, align 8, !tbaa !11
  store double %1347, ptr %35, align 8, !tbaa !11
  %1348 = load ptr, ptr %6, align 8, !tbaa !5
  %1349 = load i64, ptr %19, align 8, !tbaa !9
  %1350 = mul nsw i64 %1349, 4
  %1351 = getelementptr inbounds double, ptr %1348, i64 %1350
  %1352 = load double, ptr %1351, align 8, !tbaa !11
  store double %1352, ptr %56, align 8, !tbaa !11
  %1353 = load i64, ptr %21, align 8, !tbaa !9
  %1354 = sub nsw i64 %1353, 3
  %1355 = shl i64 %1354, 2
  store i64 %1355, ptr %10, align 8, !tbaa !9
  %1356 = load i64, ptr %19, align 8, !tbaa !9
  %1357 = shl i64 %1356, 2
  store i64 %1357, ptr %20, align 8, !tbaa !9
  br label %1358

1358:                                             ; preds = %1450, %1333
  %1359 = load i64, ptr %20, align 8, !tbaa !9
  %1360 = load i64, ptr %10, align 8, !tbaa !9
  %1361 = icmp sle i64 %1359, %1360
  br i1 %1361, label %1362, label %1453

1362:                                             ; preds = %1358
  %1363 = load ptr, ptr %6, align 8, !tbaa !5
  %1364 = load i64, ptr %20, align 8, !tbaa !9
  %1365 = getelementptr inbounds double, ptr %1363, i64 %1364
  %1366 = load double, ptr %1365, align 8, !tbaa !11
  %1367 = load double, ptr %31, align 8, !tbaa !11
  %1368 = load ptr, ptr %6, align 8, !tbaa !5
  %1369 = load i64, ptr %20, align 8, !tbaa !9
  %1370 = sub nsw i64 %1369, 3
  %1371 = getelementptr inbounds double, ptr %1368, i64 %1370
  %1372 = load double, ptr %1371, align 8, !tbaa !11
  %1373 = fmul double %1367, %1372
  %1374 = fcmp ole double %1366, %1373
  br i1 %1374, label %1385, label %1375

1375:                                             ; preds = %1362
  %1376 = load ptr, ptr %6, align 8, !tbaa !5
  %1377 = load i64, ptr %20, align 8, !tbaa !9
  %1378 = sub nsw i64 %1377, 1
  %1379 = getelementptr inbounds double, ptr %1376, i64 %1378
  %1380 = load double, ptr %1379, align 8, !tbaa !11
  %1381 = load double, ptr %31, align 8, !tbaa !11
  %1382 = load double, ptr %50, align 8, !tbaa !11
  %1383 = fmul double %1381, %1382
  %1384 = fcmp ole double %1380, %1383
  br i1 %1384, label %1385, label %1404

1385:                                             ; preds = %1375, %1362
  %1386 = load double, ptr %50, align 8, !tbaa !11
  %1387 = fneg double %1386
  %1388 = load ptr, ptr %6, align 8, !tbaa !5
  %1389 = load i64, ptr %20, align 8, !tbaa !9
  %1390 = sub nsw i64 %1389, 1
  %1391 = getelementptr inbounds double, ptr %1388, i64 %1390
  store double %1387, ptr %1391, align 8, !tbaa !11
  %1392 = load i64, ptr %20, align 8, !tbaa !9
  %1393 = sdiv i64 %1392, 4
  store i64 %1393, ptr %44, align 8, !tbaa !9
  store double 0.000000e+00, ptr %42, align 8, !tbaa !11
  %1394 = load ptr, ptr %6, align 8, !tbaa !5
  %1395 = load i64, ptr %20, align 8, !tbaa !9
  %1396 = add nsw i64 %1395, 3
  %1397 = getelementptr inbounds double, ptr %1394, i64 %1396
  %1398 = load double, ptr %1397, align 8, !tbaa !11
  store double %1398, ptr %35, align 8, !tbaa !11
  %1399 = load ptr, ptr %6, align 8, !tbaa !5
  %1400 = load i64, ptr %20, align 8, !tbaa !9
  %1401 = add nsw i64 %1400, 4
  %1402 = getelementptr inbounds double, ptr %1399, i64 %1401
  %1403 = load double, ptr %1402, align 8, !tbaa !11
  store double %1403, ptr %56, align 8, !tbaa !11
  br label %1449

1404:                                             ; preds = %1375
  %1405 = load double, ptr %42, align 8, !tbaa !11
  store double %1405, ptr %11, align 8, !tbaa !11
  %1406 = load ptr, ptr %6, align 8, !tbaa !5
  %1407 = load i64, ptr %20, align 8, !tbaa !9
  %1408 = add nsw i64 %1407, 1
  %1409 = getelementptr inbounds double, ptr %1406, i64 %1408
  %1410 = load double, ptr %1409, align 8, !tbaa !11
  store double %1410, ptr %12, align 8, !tbaa !11
  %1411 = load double, ptr %11, align 8, !tbaa !11
  %1412 = load double, ptr %12, align 8, !tbaa !11
  %1413 = fcmp oge double %1411, %1412
  br i1 %1413, label %1414, label %1416

1414:                                             ; preds = %1404
  %1415 = load double, ptr %11, align 8, !tbaa !11
  br label %1418

1416:                                             ; preds = %1404
  %1417 = load double, ptr %12, align 8, !tbaa !11
  br label %1418

1418:                                             ; preds = %1416, %1414
  %1419 = phi double [ %1415, %1414 ], [ %1417, %1416 ]
  store double %1419, ptr %42, align 8, !tbaa !11
  %1420 = load double, ptr %35, align 8, !tbaa !11
  store double %1420, ptr %11, align 8, !tbaa !11
  %1421 = load ptr, ptr %6, align 8, !tbaa !5
  %1422 = load i64, ptr %20, align 8, !tbaa !9
  %1423 = sub nsw i64 %1422, 1
  %1424 = getelementptr inbounds double, ptr %1421, i64 %1423
  %1425 = load double, ptr %1424, align 8, !tbaa !11
  store double %1425, ptr %12, align 8, !tbaa !11
  %1426 = load double, ptr %11, align 8, !tbaa !11
  %1427 = load double, ptr %12, align 8, !tbaa !11
  %1428 = fcmp ole double %1426, %1427
  br i1 %1428, label %1429, label %1431

1429:                                             ; preds = %1418
  %1430 = load double, ptr %11, align 8, !tbaa !11
  br label %1433

1431:                                             ; preds = %1418
  %1432 = load double, ptr %12, align 8, !tbaa !11
  br label %1433

1433:                                             ; preds = %1431, %1429
  %1434 = phi double [ %1430, %1429 ], [ %1432, %1431 ]
  store double %1434, ptr %35, align 8, !tbaa !11
  %1435 = load double, ptr %56, align 8, !tbaa !11
  store double %1435, ptr %11, align 8, !tbaa !11
  %1436 = load ptr, ptr %6, align 8, !tbaa !5
  %1437 = load i64, ptr %20, align 8, !tbaa !9
  %1438 = getelementptr inbounds double, ptr %1436, i64 %1437
  %1439 = load double, ptr %1438, align 8, !tbaa !11
  store double %1439, ptr %12, align 8, !tbaa !11
  %1440 = load double, ptr %11, align 8, !tbaa !11
  %1441 = load double, ptr %12, align 8, !tbaa !11
  %1442 = fcmp ole double %1440, %1441
  br i1 %1442, label %1443, label %1445

1443:                                             ; preds = %1433
  %1444 = load double, ptr %11, align 8, !tbaa !11
  br label %1447

1445:                                             ; preds = %1433
  %1446 = load double, ptr %12, align 8, !tbaa !11
  br label %1447

1447:                                             ; preds = %1445, %1443
  %1448 = phi double [ %1444, %1443 ], [ %1446, %1445 ]
  store double %1448, ptr %56, align 8, !tbaa !11
  br label %1449

1449:                                             ; preds = %1447, %1385
  br label %1450

1450:                                             ; preds = %1449
  %1451 = load i64, ptr %20, align 8, !tbaa !9
  %1452 = add nsw i64 %1451, 4
  store i64 %1452, ptr %20, align 8, !tbaa !9
  br label %1358, !llvm.loop !25

1453:                                             ; preds = %1358
  %1454 = load double, ptr %35, align 8, !tbaa !11
  %1455 = load ptr, ptr %6, align 8, !tbaa !5
  %1456 = load i64, ptr %21, align 8, !tbaa !9
  %1457 = shl i64 %1456, 2
  %1458 = sub nsw i64 %1457, 1
  %1459 = getelementptr inbounds double, ptr %1455, i64 %1458
  store double %1454, ptr %1459, align 8, !tbaa !11
  %1460 = load double, ptr %56, align 8, !tbaa !11
  %1461 = load ptr, ptr %6, align 8, !tbaa !5
  %1462 = load i64, ptr %21, align 8, !tbaa !9
  %1463 = mul nsw i64 %1462, 4
  %1464 = getelementptr inbounds double, ptr %1461, i64 %1463
  store double %1460, ptr %1464, align 8, !tbaa !11
  %1465 = load i64, ptr %44, align 8, !tbaa !9
  %1466 = add nsw i64 %1465, 1
  store i64 %1466, ptr %19, align 8, !tbaa !9
  br label %1467

1467:                                             ; preds = %1453, %1322
  br label %1468

1468:                                             ; preds = %1467, %1307, %1299
  br label %1469

1469:                                             ; preds = %1468
  %1470 = load i64, ptr %55, align 8, !tbaa !9
  %1471 = add nsw i64 %1470, 1
  store i64 %1471, ptr %55, align 8, !tbaa !9
  br label %1290, !llvm.loop !26

1472:                                             ; preds = %1290
  %1473 = load ptr, ptr %7, align 8, !tbaa !5
  store i64 2, ptr %1473, align 8, !tbaa !9
  store i32 0, ptr %4, align 4
  store i32 1, ptr %58, align 4
  br label %1570

1474:                                             ; preds = %1298
  br label %1475

1475:                                             ; preds = %1474
  %1476 = load i64, ptr %54, align 8, !tbaa !9
  %1477 = add nsw i64 %1476, 1
  store i64 %1477, ptr %54, align 8, !tbaa !9
  br label %935, !llvm.loop !27

1478:                                             ; preds = %935
  %1479 = load ptr, ptr %7, align 8, !tbaa !5
  store i64 3, ptr %1479, align 8, !tbaa !9
  store i32 0, ptr %4, align 4
  store i32 1, ptr %58, align 4
  br label %1570

1480:                                             ; preds = %942
  %1481 = load ptr, ptr %5, align 8, !tbaa !5
  %1482 = load i64, ptr %1481, align 8, !tbaa !9
  store i64 %1482, ptr %8, align 8, !tbaa !9
  store i64 2, ptr %16, align 8, !tbaa !9
  br label %1483

1483:                                             ; preds = %1497, %1480
  %1484 = load i64, ptr %16, align 8, !tbaa !9
  %1485 = load i64, ptr %8, align 8, !tbaa !9
  %1486 = icmp sle i64 %1484, %1485
  br i1 %1486, label %1487, label %1500

1487:                                             ; preds = %1483
  %1488 = load ptr, ptr %6, align 8, !tbaa !5
  %1489 = load i64, ptr %16, align 8, !tbaa !9
  %1490 = shl i64 %1489, 2
  %1491 = sub nsw i64 %1490, 3
  %1492 = getelementptr inbounds double, ptr %1488, i64 %1491
  %1493 = load double, ptr %1492, align 8, !tbaa !11
  %1494 = load ptr, ptr %6, align 8, !tbaa !5
  %1495 = load i64, ptr %16, align 8, !tbaa !9
  %1496 = getelementptr inbounds double, ptr %1494, i64 %1495
  store double %1493, ptr %1496, align 8, !tbaa !11
  br label %1497

1497:                                             ; preds = %1487
  %1498 = load i64, ptr %16, align 8, !tbaa !9
  %1499 = add nsw i64 %1498, 1
  store i64 %1499, ptr %16, align 8, !tbaa !9
  br label %1483, !llvm.loop !28

1500:                                             ; preds = %1483
  %1501 = load ptr, ptr %5, align 8, !tbaa !5
  %1502 = load ptr, ptr %6, align 8, !tbaa !5
  %1503 = getelementptr inbounds double, ptr %1502, i64 1
  %1504 = call i32 @dlasrt_(ptr noundef @.str.3, ptr noundef %1501, ptr noundef %1503, ptr noundef %51)
  store double 0.000000e+00, ptr %14, align 8, !tbaa !11
  %1505 = load ptr, ptr %5, align 8, !tbaa !5
  %1506 = load i64, ptr %1505, align 8, !tbaa !9
  store i64 %1506, ptr %16, align 8, !tbaa !9
  br label %1507

1507:                                             ; preds = %1517, %1500
  %1508 = load i64, ptr %16, align 8, !tbaa !9
  %1509 = icmp sge i64 %1508, 1
  br i1 %1509, label %1510, label %1520

1510:                                             ; preds = %1507
  %1511 = load ptr, ptr %6, align 8, !tbaa !5
  %1512 = load i64, ptr %16, align 8, !tbaa !9
  %1513 = getelementptr inbounds double, ptr %1511, i64 %1512
  %1514 = load double, ptr %1513, align 8, !tbaa !11
  %1515 = load double, ptr %14, align 8, !tbaa !11
  %1516 = fadd double %1515, %1514
  store double %1516, ptr %14, align 8, !tbaa !11
  br label %1517

1517:                                             ; preds = %1510
  %1518 = load i64, ptr %16, align 8, !tbaa !9
  %1519 = add nsw i64 %1518, -1
  store i64 %1519, ptr %16, align 8, !tbaa !9
  br label %1507, !llvm.loop !29

1520:                                             ; preds = %1507
  %1521 = load double, ptr %49, align 8, !tbaa !11
  %1522 = load ptr, ptr %6, align 8, !tbaa !5
  %1523 = load ptr, ptr %5, align 8, !tbaa !5
  %1524 = load i64, ptr %1523, align 8, !tbaa !9
  %1525 = shl i64 %1524, 1
  %1526 = add nsw i64 %1525, 1
  %1527 = getelementptr inbounds double, ptr %1522, i64 %1526
  store double %1521, ptr %1527, align 8, !tbaa !11
  %1528 = load double, ptr %14, align 8, !tbaa !11
  %1529 = load ptr, ptr %6, align 8, !tbaa !5
  %1530 = load ptr, ptr %5, align 8, !tbaa !5
  %1531 = load i64, ptr %1530, align 8, !tbaa !9
  %1532 = shl i64 %1531, 1
  %1533 = add nsw i64 %1532, 2
  %1534 = getelementptr inbounds double, ptr %1529, i64 %1533
  store double %1528, ptr %1534, align 8, !tbaa !11
  %1535 = load i64, ptr %39, align 8, !tbaa !9
  %1536 = sitofp i64 %1535 to double
  %1537 = load ptr, ptr %6, align 8, !tbaa !5
  %1538 = load ptr, ptr %5, align 8, !tbaa !5
  %1539 = load i64, ptr %1538, align 8, !tbaa !9
  %1540 = shl i64 %1539, 1
  %1541 = add nsw i64 %1540, 3
  %1542 = getelementptr inbounds double, ptr %1537, i64 %1541
  store double %1536, ptr %1542, align 8, !tbaa !11
  %1543 = load ptr, ptr %5, align 8, !tbaa !5
  %1544 = load i64, ptr %1543, align 8, !tbaa !9
  store i64 %1544, ptr %8, align 8, !tbaa !9
  %1545 = load i64, ptr %38, align 8, !tbaa !9
  %1546 = sitofp i64 %1545 to double
  %1547 = load i64, ptr %8, align 8, !tbaa !9
  %1548 = load i64, ptr %8, align 8, !tbaa !9
  %1549 = mul nsw i64 %1547, %1548
  %1550 = sitofp i64 %1549 to double
  %1551 = fdiv double %1546, %1550
  %1552 = load ptr, ptr %6, align 8, !tbaa !5
  %1553 = load ptr, ptr %5, align 8, !tbaa !5
  %1554 = load i64, ptr %1553, align 8, !tbaa !9
  %1555 = shl i64 %1554, 1
  %1556 = add nsw i64 %1555, 4
  %1557 = getelementptr inbounds double, ptr %1552, i64 %1556
  store double %1551, ptr %1557, align 8, !tbaa !11
  %1558 = load i64, ptr %47, align 8, !tbaa !9
  %1559 = sitofp i64 %1558 to double
  %1560 = fmul double %1559, 1.000000e+02
  %1561 = load i64, ptr %39, align 8, !tbaa !9
  %1562 = sitofp i64 %1561 to double
  %1563 = fdiv double %1560, %1562
  %1564 = load ptr, ptr %6, align 8, !tbaa !5
  %1565 = load ptr, ptr %5, align 8, !tbaa !5
  %1566 = load i64, ptr %1565, align 8, !tbaa !9
  %1567 = shl i64 %1566, 1
  %1568 = add nsw i64 %1567, 5
  %1569 = getelementptr inbounds double, ptr %1564, i64 %1568
  store double %1563, ptr %1569, align 8, !tbaa !11
  store i32 0, ptr %4, align 4
  store i32 1, ptr %58, align 4
  br label %1570

1570:                                             ; preds = %1520, %1478, %1472, %960, %459, %441, %375, %290, %277, %236, %108, %93, %80, %73
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 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
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #5
  %1571 = load i32, ptr %4, align 4
  ret i32 %1571
}

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

declare double @dlamch_(ptr noundef) #2

declare i32 @xerbla_(ptr noundef, ptr noundef) #2

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

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

declare i32 @dlasrt_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare i64 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare i32 @dlasq3_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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


; 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 [10 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@c__1 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__10 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@c__3 = external hidden global i64, align 8
@c__4 = external hidden global i64, align 8
@c__11 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dlasq2_(ptr noundef %0, ptr noundef %1, ptr nocapture noundef writeonly %2) local_unnamed_addr #0 {
  %4 = alloca double, align 8
  %5 = alloca i64, align 8
  %6 = alloca i64, align 8
  %7 = alloca double, align 8
  %8 = alloca i64, align 8
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca i64, align 8
  %13 = alloca double, align 8
  %14 = alloca i64, align 8
  %15 = alloca i64, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca i64, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  %24 = getelementptr inbounds i8, ptr %1, i64 -8
  store i64 0, ptr %2, align 8, !tbaa !5
  %25 = tail call double @dlamch_(ptr noundef nonnull @.str) #5
  %26 = tail call double @dlamch_(ptr noundef nonnull @.str.1) #5
  %27 = fmul double %25, 1.000000e+02
  %28 = fmul double %27, %27
  %29 = load i64, ptr %0, align 8, !tbaa !5
  %30 = icmp slt i64 %29, 0
  br i1 %30, label %31, label %33

31:                                               ; preds = %3
  store i64 -1, ptr %2, align 8, !tbaa !5
  %32 = tail call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull @c__1) #5
  br label %611

33:                                               ; preds = %3
  switch i64 %29, label %92 [
    i64 0, label %611
    i64 1, label %34
    i64 2, label %39
  ]

34:                                               ; preds = %33
  %35 = load double, ptr %1, align 8, !tbaa !9
  %36 = fcmp olt double %35, 0.000000e+00
  br i1 %36, label %37, label %611

37:                                               ; preds = %34
  store i64 -201, ptr %2, align 8, !tbaa !5
  %38 = tail call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull @c__2) #5
  br label %611

39:                                               ; preds = %33
  %40 = getelementptr inbounds i8, ptr %1, i64 8
  %41 = load double, ptr %40, align 8, !tbaa !9
  %42 = fcmp olt double %41, 0.000000e+00
  br i1 %42, label %47, label %43

43:                                               ; preds = %39
  %44 = getelementptr inbounds i8, ptr %1, i64 16
  %45 = load double, ptr %44, align 8, !tbaa !9
  %46 = fcmp olt double %45, 0.000000e+00
  br i1 %46, label %47, label %49

47:                                               ; preds = %43, %39
  store i64 -2, ptr %2, align 8, !tbaa !5
  %48 = tail call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull @c__2) #5
  br label %611

49:                                               ; preds = %43
  %50 = load double, ptr %1, align 8, !tbaa !9
  %51 = fcmp ogt double %45, %50
  br i1 %51, label %52, label %53

52:                                               ; preds = %49
  store double %50, ptr %44, align 8, !tbaa !9
  store double %45, ptr %1, align 8, !tbaa !9
  br label %53

53:                                               ; preds = %49, %52
  %54 = phi double [ %45, %49 ], [ %50, %52 ]
  %55 = phi double [ %50, %49 ], [ %45, %52 ]
  %56 = fadd double %41, %55
  %57 = fadd double %56, %54
  %58 = getelementptr inbounds i8, ptr %1, i64 32
  store double %57, ptr %58, align 8, !tbaa !9
  %59 = fmul double %28, %54
  %60 = fcmp ogt double %41, %59
  br i1 %60, label %61, label %87

61:                                               ; preds = %53
  %62 = fsub double %55, %54
  %63 = fadd double %41, %62
  %64 = fmul double %63, 5.000000e-01
  %65 = fdiv double %41, %64
  %66 = fmul double %54, %65
  %67 = fcmp ugt double %66, %64
  br i1 %67, label %74, label %68

68:                                               ; preds = %61
  %69 = fdiv double %66, %64
  %70 = fadd double %69, 1.000000e+00
  %71 = tail call double @sqrt(double noundef %70) #5
  %72 = fadd double %71, 1.000000e+00
  %73 = fmul double %64, %72
  br label %79

74:                                               ; preds = %61
  %75 = tail call double @sqrt(double noundef %64) #5
  %76 = fadd double %64, %66
  %77 = tail call double @sqrt(double noundef %76) #5
  %78 = tail call double @llvm.fmuladd.f64(double %75, double %77, double %64)
  br label %79

79:                                               ; preds = %74, %68
  %.pn576 = phi double [ %73, %68 ], [ %78, %74 ]
  %.pn = fdiv double %41, %.pn576
  %.0510 = fmul double %54, %.pn
  %80 = load double, ptr %1, align 8, !tbaa !9
  %81 = load double, ptr %40, align 8, !tbaa !9
  %82 = fadd double %.0510, %81
  %83 = fadd double %80, %82
  %84 = fdiv double %80, %83
  %85 = load double, ptr %44, align 8, !tbaa !9
  %86 = fmul double %85, %84
  store double %86, ptr %44, align 8, !tbaa !9
  store double %83, ptr %1, align 8, !tbaa !9
  br label %87

87:                                               ; preds = %79, %53
  %88 = phi double [ %83, %79 ], [ %55, %53 ]
  %89 = phi double [ %86, %79 ], [ %54, %53 ]
  store double %89, ptr %40, align 8, !tbaa !9
  %90 = fadd double %89, %88
  %91 = getelementptr inbounds i8, ptr %1, i64 40
  store double %90, ptr %91, align 8, !tbaa !9
  br label %611

92:                                               ; preds = %33
  %.idx = shl nsw i64 %29, 4
  %93 = getelementptr inbounds i8, ptr %24, i64 %.idx
  store double 0.000000e+00, ptr %93, align 8, !tbaa !9
  %94 = getelementptr i8, ptr %1, i64 8
  %95 = shl nuw i64 %29, 1
  %96 = add i64 %95, -2
  %.not589 = icmp slt i64 %96, 1
  br i1 %.not589, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %92, %111
  %.0511592 = phi i64 [ %116, %111 ], [ 1, %92 ]
  %.0517591 = phi double [ %113, %111 ], [ 0.000000e+00, %92 ]
  %.0519590 = phi double [ %112, %111 ], [ 0.000000e+00, %92 ]
  %97 = phi double [ %115, %111 ], [ 0.000000e+00, %92 ]
  %98 = getelementptr inbounds double, ptr %24, i64 %.0511592
  %99 = load double, ptr %98, align 8, !tbaa !9
  %100 = fcmp olt double %99, 0.000000e+00
  br i1 %100, label %101, label %104

101:                                              ; preds = %.lr.ph
  %102 = sub nuw nsw i64 -200, %.0511592
  store i64 %102, ptr %2, align 8, !tbaa !5
  %103 = tail call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull @c__2) #5
  br label %611

104:                                              ; preds = %.lr.ph
  %105 = getelementptr double, ptr %1, i64 %.0511592
  %106 = load double, ptr %105, align 8, !tbaa !9
  %107 = fcmp olt double %106, 0.000000e+00
  br i1 %107, label %108, label %111

108:                                              ; preds = %104
  %109 = sub nuw nsw i64 -201, %.0511592
  store i64 %109, ptr %2, align 8, !tbaa !5
  %110 = tail call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull @c__2) #5
  br label %611

111:                                              ; preds = %104
  %112 = fadd double %.0519590, %99
  %113 = fadd double %.0517591, %106
  %114 = fcmp oge double %97, %99
  %115 = select i1 %114, double %97, double %99
  %116 = add nuw nsw i64 %.0511592, 2
  %.not = icmp sgt i64 %116, %96
  br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !11

._crit_edge:                                      ; preds = %111, %92
  %117 = phi double [ 0.000000e+00, %92 ], [ %115, %111 ]
  %.0519.lcssa = phi double [ 0.000000e+00, %92 ], [ %112, %111 ]
  %.0517.lcssa = phi double [ 0.000000e+00, %92 ], [ %113, %111 ]
  %118 = getelementptr double, ptr %24, i64 %95
  %119 = getelementptr i8, ptr %118, i64 -8
  %120 = load double, ptr %119, align 8, !tbaa !9
  %121 = fcmp olt double %120, 0.000000e+00
  br i1 %121, label %122, label %125

122:                                              ; preds = %._crit_edge
  %123 = sub nsw i64 -199, %95
  store i64 %123, ptr %2, align 8, !tbaa !5
  %124 = tail call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull @c__2) #5
  br label %611

125:                                              ; preds = %._crit_edge
  %126 = fadd double %.0519.lcssa, %120
  %127 = fcmp oge double %117, %120
  %128 = select i1 %127, double %117, double %120
  store double %128, ptr %16, align 8, !tbaa !9
  %129 = fcmp oeq double %.0517.lcssa, 0.000000e+00
  br i1 %129, label %.preheader, label %152

.preheader:                                       ; preds = %125
  %invariant.gep713 = getelementptr i8, ptr %1, i64 -16
  %.not573715 = icmp slt i64 %29, 2
  br i1 %.not573715, label %._crit_edge718, label %.lr.ph717.preheader

.lr.ph717.preheader:                              ; preds = %.preheader
  %130 = add nsw i64 %29, -1
  %131 = add nsw i64 %29, -2
  %xtraiter781 = and i64 %130, 3
  %132 = icmp ult i64 %131, 3
  br i1 %132, label %._crit_edge718.loopexit.unr-lcssa, label %.lr.ph717.preheader.new

.lr.ph717.preheader.new:                          ; preds = %.lr.ph717.preheader
  %unroll_iter784 = and i64 %130, -4
  br label %.lr.ph717

.lr.ph717:                                        ; preds = %.lr.ph717, %.lr.ph717.preheader.new
  %.1512716 = phi i64 [ 2, %.lr.ph717.preheader.new ], [ %144, %.lr.ph717 ]
  %niter785 = phi i64 [ 0, %.lr.ph717.preheader.new ], [ %niter785.next.3, %.lr.ph717 ]
  %.idx575 = shl i64 %.1512716, 4
  %gep714 = getelementptr i8, ptr %invariant.gep713, i64 %.idx575
  %133 = load double, ptr %gep714, align 8, !tbaa !9
  %134 = getelementptr inbounds double, ptr %24, i64 %.1512716
  store double %133, ptr %134, align 8, !tbaa !9
  %135 = shl i64 %.1512716, 4
  %gep714.1 = getelementptr i8, ptr %1, i64 %135
  %136 = load double, ptr %gep714.1, align 8, !tbaa !9
  %137 = getelementptr double, ptr %1, i64 %.1512716
  store double %136, ptr %137, align 8, !tbaa !9
  %138 = add nuw i64 %.1512716, 2
  %.idx575.2 = shl i64 %138, 4
  %gep714.2 = getelementptr i8, ptr %invariant.gep713, i64 %.idx575.2
  %139 = load double, ptr %gep714.2, align 8, !tbaa !9
  %140 = getelementptr inbounds double, ptr %24, i64 %138
  store double %139, ptr %140, align 8, !tbaa !9
  %141 = add nuw i64 %.1512716, 3
  %.idx575.3 = shl i64 %141, 4
  %gep714.3 = getelementptr i8, ptr %invariant.gep713, i64 %.idx575.3
  %142 = load double, ptr %gep714.3, align 8, !tbaa !9
  %143 = getelementptr inbounds double, ptr %24, i64 %141
  store double %142, ptr %143, align 8, !tbaa !9
  %144 = add nuw i64 %.1512716, 4
  %niter785.next.3 = add i64 %niter785, 4
  %niter785.ncmp.3 = icmp eq i64 %niter785.next.3, %unroll_iter784
  br i1 %niter785.ncmp.3, label %._crit_edge718.loopexit.unr-lcssa, label %.lr.ph717, !llvm.loop !13

._crit_edge718.loopexit.unr-lcssa:                ; preds = %.lr.ph717, %.lr.ph717.preheader
  %.1512716.unr = phi i64 [ 2, %.lr.ph717.preheader ], [ %144, %.lr.ph717 ]
  %lcmp.mod783.not = icmp eq i64 %xtraiter781, 0
  br i1 %lcmp.mod783.not, label %._crit_edge718, label %.lr.ph717.epil

.lr.ph717.epil:                                   ; preds = %._crit_edge718.loopexit.unr-lcssa, %.lr.ph717.epil
  %.1512716.epil = phi i64 [ %147, %.lr.ph717.epil ], [ %.1512716.unr, %._crit_edge718.loopexit.unr-lcssa ]
  %epil.iter782 = phi i64 [ %epil.iter782.next, %.lr.ph717.epil ], [ 0, %._crit_edge718.loopexit.unr-lcssa ]
  %.idx575.epil = shl i64 %.1512716.epil, 4
  %gep714.epil = getelementptr i8, ptr %invariant.gep713, i64 %.idx575.epil
  %145 = load double, ptr %gep714.epil, align 8, !tbaa !9
  %146 = getelementptr inbounds double, ptr %24, i64 %.1512716.epil
  store double %145, ptr %146, align 8, !tbaa !9
  %147 = add nuw i64 %.1512716.epil, 1
  %epil.iter782.next = add i64 %epil.iter782, 1
  %epil.iter782.cmp.not = icmp eq i64 %epil.iter782.next, %xtraiter781
  br i1 %epil.iter782.cmp.not, label %._crit_edge718, label %.lr.ph717.epil, !llvm.loop !14

._crit_edge718:                                   ; preds = %._crit_edge718.loopexit.unr-lcssa, %.lr.ph717.epil, %.preheader
  %148 = call i32 @dlasrt_(ptr noundef nonnull @.str.3, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %22) #5
  %149 = load i64, ptr %0, align 8, !tbaa !5
  %.idx574 = shl i64 %149, 4
  %150 = getelementptr i8, ptr %24, i64 %.idx574
  %151 = getelementptr i8, ptr %150, i64 -8
  store double %126, ptr %151, align 8, !tbaa !9
  br label %611

152:                                              ; preds = %125
  %153 = fadd double %.0517.lcssa, %126
  %154 = fcmp oeq double %153, 0.000000e+00
  br i1 %154, label %155, label %157

155:                                              ; preds = %152
  %156 = getelementptr i8, ptr %93, i64 -8
  store double 0.000000e+00, ptr %156, align 8, !tbaa !9
  br label %611

157:                                              ; preds = %152
  %158 = tail call i64 @ilaenv_(ptr noundef nonnull @c__10, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.4, ptr noundef nonnull @c__1, ptr noundef nonnull @c__2, ptr noundef nonnull @c__3, ptr noundef nonnull @c__4) #5
  %159 = icmp eq i64 %158, 1
  br i1 %159, label %160, label %163

160:                                              ; preds = %157
  %161 = tail call i64 @ilaenv_(ptr noundef nonnull @c__11, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.4, ptr noundef nonnull @c__1, ptr noundef nonnull @c__2, ptr noundef nonnull @c__3, ptr noundef nonnull @c__4) #5
  %162 = icmp eq i64 %161, 1
  br label %163

163:                                              ; preds = %160, %157
  %164 = phi i1 [ false, %157 ], [ %162, %160 ]
  %165 = zext i1 %164 to i64
  store i64 %165, ptr %12, align 8, !tbaa !5
  %166 = load i64, ptr %0, align 8, !tbaa !5
  %167 = shl i64 %166, 1
  %168 = icmp sgt i64 %167, 1
  br i1 %168, label %.lr.ph598.preheader, label %._crit_edge599

.lr.ph598.preheader:                              ; preds = %163
  %169 = add nsw i64 %167, -2
  %170 = and i64 %169, 2
  %lcmp.mod.not.not = icmp eq i64 %170, 0
  br i1 %lcmp.mod.not.not, label %.lr.ph598.prol, label %.lr.ph598.prol.loopexit

.lr.ph598.prol:                                   ; preds = %.lr.ph598.preheader
  %.idx571.prol = shl i64 %166, 5
  %171 = getelementptr i8, ptr %24, i64 %.idx571.prol
  store double 0.000000e+00, ptr %171, align 8, !tbaa !9
  %172 = getelementptr inbounds double, ptr %24, i64 %167
  %173 = load double, ptr %172, align 8, !tbaa !9
  %174 = getelementptr i8, ptr %171, i64 -8
  store double %173, ptr %174, align 8, !tbaa !9
  %175 = getelementptr i8, ptr %171, i64 -16
  store double 0.000000e+00, ptr %175, align 8, !tbaa !9
  %176 = getelementptr i8, ptr %172, i64 -8
  %177 = load double, ptr %176, align 8, !tbaa !9
  %178 = getelementptr i8, ptr %171, i64 -24
  store double %177, ptr %178, align 8, !tbaa !9
  %179 = add nsw i64 %167, -2
  br label %.lr.ph598.prol.loopexit

.lr.ph598.prol.loopexit:                          ; preds = %.lr.ph598.prol, %.lr.ph598.preheader
  %.2513596.unr = phi i64 [ %167, %.lr.ph598.preheader ], [ %179, %.lr.ph598.prol ]
  %180 = icmp eq i64 %169, 0
  br i1 %180, label %._crit_edge599, label %.lr.ph598

.lr.ph598:                                        ; preds = %.lr.ph598.prol.loopexit, %.lr.ph598
  %.2513596 = phi i64 [ %198, %.lr.ph598 ], [ %.2513596.unr, %.lr.ph598.prol.loopexit ]
  %.idx571 = shl i64 %.2513596, 4
  %181 = getelementptr i8, ptr %24, i64 %.idx571
  store double 0.000000e+00, ptr %181, align 8, !tbaa !9
  %182 = getelementptr inbounds double, ptr %24, i64 %.2513596
  %183 = load double, ptr %182, align 8, !tbaa !9
  %184 = getelementptr i8, ptr %181, i64 -8
  store double %183, ptr %184, align 8, !tbaa !9
  %185 = getelementptr i8, ptr %181, i64 -16
  store double 0.000000e+00, ptr %185, align 8, !tbaa !9
  %186 = getelementptr i8, ptr %182, i64 -8
  %187 = load double, ptr %186, align 8, !tbaa !9
  %188 = getelementptr i8, ptr %181, i64 -24
  store double %187, ptr %188, align 8, !tbaa !9
  %189 = add nsw i64 %.2513596, -2
  %.idx571.1 = shl i64 %189, 4
  %190 = getelementptr i8, ptr %24, i64 %.idx571.1
  store double 0.000000e+00, ptr %190, align 8, !tbaa !9
  %191 = getelementptr inbounds double, ptr %24, i64 %189
  %192 = load double, ptr %191, align 8, !tbaa !9
  %193 = getelementptr i8, ptr %190, i64 -8
  store double %192, ptr %193, align 8, !tbaa !9
  %194 = getelementptr i8, ptr %190, i64 -16
  store double 0.000000e+00, ptr %194, align 8, !tbaa !9
  %195 = getelementptr i8, ptr %191, i64 -8
  %196 = load double, ptr %195, align 8, !tbaa !9
  %197 = getelementptr i8, ptr %190, i64 -24
  store double %196, ptr %197, align 8, !tbaa !9
  %198 = add nsw i64 %.2513596, -4
  %199 = icmp ugt i64 %189, 3
  br i1 %199, label %.lr.ph598, label %._crit_edge599, !llvm.loop !16

._crit_edge599:                                   ; preds = %.lr.ph598.prol.loopexit, %.lr.ph598, %163
  store i64 1, ptr %5, align 8, !tbaa !5
  store i64 %166, ptr %6, align 8, !tbaa !5
  %200 = load double, ptr %1, align 8, !tbaa !9
  %201 = fmul double %200, 1.500000e+00
  %.idx543 = shl i64 %166, 5
  %202 = getelementptr i8, ptr %24, i64 %.idx543
  %203 = getelementptr i8, ptr %202, i64 -24
  %204 = load double, ptr %203, align 8, !tbaa !9
  %205 = fcmp olt double %201, %204
  %206 = shl i64 %166, 2
  br i1 %205, label %207, label %.loopexit582

207:                                              ; preds = %._crit_edge599
  %208 = add i64 %206, 4
  %.not544600 = icmp slt i64 %167, 4
  br i1 %.not544600, label %.loopexit582, label %.lr.ph603.preheader

.lr.ph603.preheader:                              ; preds = %207
  %209 = add nsw i64 %167, -4
  %210 = icmp ult i64 %209, 4
  br i1 %210, label %.loopexit582.loopexit.unr-lcssa, label %.lr.ph603.preheader.new

.lr.ph603.preheader.new:                          ; preds = %.lr.ph603.preheader
  %211 = lshr i64 %209, 2
  %212 = add nuw nsw i64 %211, 1
  %unroll_iter = and i64 %212, 9223372036854775806
  br label %.lr.ph603

.lr.ph603:                                        ; preds = %.lr.ph603, %.lr.ph603.preheader.new
  %.0504601 = phi i64 [ 4, %.lr.ph603.preheader.new ], [ %235, %.lr.ph603 ]
  %niter = phi i64 [ 0, %.lr.ph603.preheader.new ], [ %niter.next.1, %.lr.ph603 ]
  %213 = getelementptr double, ptr %24, i64 %.0504601
  %214 = getelementptr i8, ptr %213, i64 -24
  %215 = load double, ptr %214, align 8, !tbaa !9
  %216 = sub i64 %208, %.0504601
  %217 = getelementptr double, ptr %24, i64 %216
  %218 = getelementptr i8, ptr %217, i64 -24
  %219 = load double, ptr %218, align 8, !tbaa !9
  store double %219, ptr %214, align 8, !tbaa !9
  store double %215, ptr %218, align 8, !tbaa !9
  %220 = getelementptr i8, ptr %213, i64 -8
  %221 = load double, ptr %220, align 8, !tbaa !9
  %222 = getelementptr i8, ptr %217, i64 -40
  %223 = load double, ptr %222, align 8, !tbaa !9
  store double %223, ptr %220, align 8, !tbaa !9
  store double %221, ptr %222, align 8, !tbaa !9
  %224 = getelementptr double, ptr %24, i64 %.0504601
  %225 = getelementptr i8, ptr %224, i64 8
  %226 = load double, ptr %225, align 8, !tbaa !9
  %227 = sub i64 %206, %.0504601
  %228 = getelementptr double, ptr %24, i64 %227
  %229 = getelementptr i8, ptr %228, i64 -24
  %230 = load double, ptr %229, align 8, !tbaa !9
  store double %230, ptr %225, align 8, !tbaa !9
  store double %226, ptr %229, align 8, !tbaa !9
  %231 = getelementptr i8, ptr %224, i64 24
  %232 = load double, ptr %231, align 8, !tbaa !9
  %233 = getelementptr i8, ptr %228, i64 -40
  %234 = load double, ptr %233, align 8, !tbaa !9
  store double %234, ptr %231, align 8, !tbaa !9
  store double %232, ptr %233, align 8, !tbaa !9
  %235 = add nuw nsw i64 %.0504601, 8
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.loopexit582.loopexit.unr-lcssa, label %.lr.ph603, !llvm.loop !17

.loopexit582.loopexit.unr-lcssa:                  ; preds = %.lr.ph603, %.lr.ph603.preheader
  %.0504601.unr = phi i64 [ 4, %.lr.ph603.preheader ], [ %235, %.lr.ph603 ]
  %236 = and i64 %209, 4
  %lcmp.mod768.not.not = icmp eq i64 %236, 0
  br i1 %lcmp.mod768.not.not, label %.lr.ph603.epil, label %.loopexit582.loopexit

.lr.ph603.epil:                                   ; preds = %.loopexit582.loopexit.unr-lcssa
  %237 = getelementptr double, ptr %24, i64 %.0504601.unr
  %238 = getelementptr i8, ptr %237, i64 -24
  %239 = load double, ptr %238, align 8, !tbaa !9
  %240 = sub i64 %208, %.0504601.unr
  %241 = getelementptr double, ptr %24, i64 %240
  %242 = getelementptr i8, ptr %241, i64 -24
  %243 = load double, ptr %242, align 8, !tbaa !9
  store double %243, ptr %238, align 8, !tbaa !9
  store double %239, ptr %242, align 8, !tbaa !9
  %244 = getelementptr i8, ptr %237, i64 -8
  %245 = load double, ptr %244, align 8, !tbaa !9
  %246 = getelementptr i8, ptr %241, i64 -40
  %247 = load double, ptr %246, align 8, !tbaa !9
  store double %247, ptr %244, align 8, !tbaa !9
  store double %245, ptr %246, align 8, !tbaa !9
  br label %.loopexit582.loopexit

.loopexit582.loopexit:                            ; preds = %.loopexit582.loopexit.unr-lcssa, %.lr.ph603.epil
  %.pre = load double, ptr %203, align 8, !tbaa !9
  br label %.loopexit582

.loopexit582:                                     ; preds = %._crit_edge599, %.loopexit582.loopexit, %207
  %248 = phi double [ %.pre, %.loopexit582.loopexit ], [ %204, %207 ], [ %204, %._crit_edge599 ]
  store i64 0, ptr %8, align 8, !tbaa !5
  %249 = add i64 %206, -4
  %invariant.gep = getelementptr i8, ptr %1, i64 -16
  %invariant.gep628 = getelementptr i8, ptr %1, i64 -24
  %.not568604 = icmp slt i64 %249, 4
  br i1 %.not568604, label %._crit_edge609.thread, label %.lr.ph608

._crit_edge609.thread:                            ; preds = %.loopexit582
  %250 = load double, ptr %1, align 8, !tbaa !9
  br label %._crit_edge623.thread

.lr.ph608:                                        ; preds = %.loopexit582, %265
  %.1505606 = phi i64 [ %266, %265 ], [ %249, %.loopexit582 ]
  %.1520605 = phi double [ %.2521, %265 ], [ %248, %.loopexit582 ]
  %251 = getelementptr double, ptr %24, i64 %.1505606
  %252 = getelementptr i8, ptr %251, i64 -8
  %253 = load double, ptr %252, align 8, !tbaa !9
  %254 = fmul double %28, %.1520605
  %255 = fcmp ugt double %253, %254
  br i1 %255, label %259, label %256

256:                                              ; preds = %.lr.ph608
  store double -0.000000e+00, ptr %252, align 8, !tbaa !9
  %257 = getelementptr i8, ptr %251, i64 -24
  %258 = load double, ptr %257, align 8, !tbaa !9
  br label %265

259:                                              ; preds = %.lr.ph608
  %260 = getelementptr i8, ptr %251, i64 -24
  %261 = load double, ptr %260, align 8, !tbaa !9
  %262 = fadd double %.1520605, %253
  %263 = fdiv double %.1520605, %262
  %264 = fmul double %263, %261
  br label %265

265:                                              ; preds = %256, %259
  %.2521 = phi double [ %258, %256 ], [ %264, %259 ]
  %266 = add nsw i64 %.1505606, -4
  %.not568 = icmp slt i64 %.1505606, 8
  br i1 %.not568, label %._crit_edge609, label %.lr.ph608, !llvm.loop !18

._crit_edge609:                                   ; preds = %265
  %267 = load double, ptr %1, align 8, !tbaa !9
  br i1 %.not568604, label %._crit_edge623.thread, label %.lr.ph615

.lr.ph615:                                        ; preds = %._crit_edge609, %293
  %.2506612 = phi i64 [ %294, %293 ], [ 4, %._crit_edge609 ]
  %.3522611 = phi double [ %.4523, %293 ], [ %267, %._crit_edge609 ]
  %gep = getelementptr double, ptr %invariant.gep, i64 %.2506612
  %268 = load double, ptr %gep, align 8, !tbaa !9
  %269 = fadd double %.3522611, %268
  %270 = getelementptr double, ptr %24, i64 %.2506612
  %271 = getelementptr i8, ptr %270, i64 -16
  store double %269, ptr %271, align 8, !tbaa !9
  %272 = fmul double %28, %.3522611
  %273 = fcmp ugt double %268, %272
  br i1 %273, label %277, label %274

274:                                              ; preds = %.lr.ph615
  store double %.3522611, ptr %271, align 8, !tbaa !9
  store <2 x double> <double -0.000000e+00, double 0.000000e+00>, ptr %gep, align 8, !tbaa !9
  %275 = getelementptr double, ptr %1, i64 %.2506612
  %276 = load double, ptr %275, align 8, !tbaa !9
  br label %293

277:                                              ; preds = %.lr.ph615
  %278 = getelementptr double, ptr %1, i64 %.2506612
  %279 = load double, ptr %278, align 8, !tbaa !9
  %280 = fmul double %26, %279
  %281 = fcmp olt double %280, %269
  %282 = fmul double %26, %269
  %283 = fcmp olt double %282, %279
  %or.cond = and i1 %283, %281
  br i1 %or.cond, label %284, label %288

284:                                              ; preds = %277
  %285 = fdiv double %279, %269
  %286 = fmul double %268, %285
  store double %286, ptr %270, align 8, !tbaa !9
  %287 = fmul double %.3522611, %285
  br label %293

288:                                              ; preds = %277
  %289 = fdiv double %268, %269
  %290 = fmul double %289, %279
  store double %290, ptr %270, align 8, !tbaa !9
  %291 = fdiv double %.3522611, %269
  %292 = fmul double %291, %279
  br label %293

293:                                              ; preds = %284, %288, %274
  %.4523 = phi double [ %276, %274 ], [ %287, %284 ], [ %292, %288 ]
  %294 = add nuw nsw i64 %.2506612, 4
  %.not569 = icmp sgt i64 %294, %249
  br i1 %.not569, label %._crit_edge616, label %.lr.ph615, !llvm.loop !19

._crit_edge623.thread:                            ; preds = %._crit_edge609, %._crit_edge609.thread
  %.ph = phi double [ %250, %._crit_edge609.thread ], [ %267, %._crit_edge609 ]
  %gep629733 = getelementptr double, ptr %invariant.gep628, i64 %206
  store double %.ph, ptr %gep629733, align 8, !tbaa !9
  br label %._crit_edge609.1.thread

._crit_edge616:                                   ; preds = %293
  %gep629 = getelementptr double, ptr %invariant.gep628, i64 %206
  store double %.4523, ptr %gep629, align 8, !tbaa !9
  %295 = add i64 %206, -3
  br i1 %.not568604, label %._crit_edge609.1.thread, label %.lr.ph608.1

.lr.ph608.1:                                      ; preds = %._crit_edge616, %310
  %.1505606.1 = phi i64 [ %311, %310 ], [ %295, %._crit_edge616 ]
  %.1520605.1 = phi double [ %.2521.1, %310 ], [ %.4523, %._crit_edge616 ]
  %296 = getelementptr double, ptr %24, i64 %.1505606.1
  %297 = getelementptr i8, ptr %296, i64 -8
  %298 = load double, ptr %297, align 8, !tbaa !9
  %299 = fmul double %28, %.1520605.1
  %300 = fcmp ugt double %298, %299
  br i1 %300, label %304, label %301

301:                                              ; preds = %.lr.ph608.1
  store double -0.000000e+00, ptr %297, align 8, !tbaa !9
  %302 = getelementptr i8, ptr %296, i64 -24
  %303 = load double, ptr %302, align 8, !tbaa !9
  br label %310

304:                                              ; preds = %.lr.ph608.1
  %305 = getelementptr i8, ptr %296, i64 -24
  %306 = load double, ptr %305, align 8, !tbaa !9
  %307 = fadd double %.1520605.1, %298
  %308 = fdiv double %.1520605.1, %307
  %309 = fmul double %308, %306
  br label %310

310:                                              ; preds = %304, %301
  %.2521.1 = phi double [ %303, %301 ], [ %309, %304 ]
  %311 = add nsw i64 %.1505606.1, -4
  %.not568.1 = icmp slt i64 %.1505606.1, 9
  br i1 %.not568.1, label %._crit_edge609.1, label %.lr.ph608.1, !llvm.loop !18

._crit_edge609.1.thread:                          ; preds = %._crit_edge623.thread, %._crit_edge616
  %312 = load double, ptr %94, align 8, !tbaa !9
  br label %._crit_edge616.1.thread

._crit_edge609.1:                                 ; preds = %310
  %313 = load double, ptr %94, align 8, !tbaa !9
  br i1 %.not568604, label %._crit_edge616.1.thread, label %.lr.ph615.1

.lr.ph615.1:                                      ; preds = %._crit_edge609.1, %340
  %.2506612.1 = phi i64 [ %341, %340 ], [ 5, %._crit_edge609.1 ]
  %.3522611.1 = phi double [ %.4523.1, %340 ], [ %313, %._crit_edge609.1 ]
  %gep.1 = getelementptr double, ptr %invariant.gep, i64 %.2506612.1
  %314 = load double, ptr %gep.1, align 8, !tbaa !9
  %315 = fadd double %.3522611.1, %314
  %316 = getelementptr double, ptr %24, i64 %.2506612.1
  %317 = getelementptr i8, ptr %316, i64 -16
  %318 = getelementptr i8, ptr %316, i64 -32
  store double %315, ptr %318, align 8, !tbaa !9
  %319 = fmul double %28, %.3522611.1
  %320 = fcmp ugt double %314, %319
  br i1 %320, label %324, label %321

321:                                              ; preds = %.lr.ph615.1
  store double %.3522611.1, ptr %318, align 8, !tbaa !9
  store <2 x double> <double 0.000000e+00, double -0.000000e+00>, ptr %317, align 8, !tbaa !9
  %322 = getelementptr double, ptr %1, i64 %.2506612.1
  %323 = load double, ptr %322, align 8, !tbaa !9
  br label %340

324:                                              ; preds = %.lr.ph615.1
  %325 = getelementptr double, ptr %1, i64 %.2506612.1
  %326 = load double, ptr %325, align 8, !tbaa !9
  %327 = fmul double %26, %326
  %328 = fcmp olt double %327, %315
  %329 = fmul double %26, %315
  %330 = fcmp olt double %329, %326
  %or.cond.1 = and i1 %330, %328
  br i1 %or.cond.1, label %336, label %331

331:                                              ; preds = %324
  %332 = fdiv double %314, %315
  %333 = fmul double %332, %326
  store double %333, ptr %317, align 8, !tbaa !9
  %334 = fdiv double %.3522611.1, %315
  %335 = fmul double %334, %326
  br label %340

336:                                              ; preds = %324
  %337 = fdiv double %326, %315
  %338 = fmul double %314, %337
  store double %338, ptr %317, align 8, !tbaa !9
  %339 = fmul double %.3522611.1, %337
  br label %340

340:                                              ; preds = %336, %331, %321
  %.4523.1 = phi double [ %323, %321 ], [ %339, %336 ], [ %335, %331 ]
  %341 = add nuw nsw i64 %.2506612.1, 4
  %.not569.1 = icmp sgt i64 %341, %295
  br i1 %.not569.1, label %._crit_edge616.1, label %.lr.ph615.1, !llvm.loop !19

._crit_edge616.1.thread:                          ; preds = %._crit_edge609.1.thread, %._crit_edge609.1
  %.3522.lcssa.1.ph = phi double [ %312, %._crit_edge609.1.thread ], [ %313, %._crit_edge609.1 ]
  %342 = getelementptr double, ptr %invariant.gep628, i64 %206
  %gep629.1737 = getelementptr i8, ptr %342, i64 -8
  store double %.3522.lcssa.1.ph, ptr %gep629.1737, align 8, !tbaa !9
  %343 = load double, ptr %1, align 8, !tbaa !9
  br label %._crit_edge623.1

._crit_edge616.1:                                 ; preds = %340
  %344 = getelementptr double, ptr %invariant.gep628, i64 %206
  %gep629.1 = getelementptr i8, ptr %344, i64 -8
  store double %.4523.1, ptr %gep629.1, align 8, !tbaa !9
  %345 = load double, ptr %1, align 8, !tbaa !9
  %.not570619.1 = icmp slt i64 %206, 8
  br i1 %.not570619.1, label %._crit_edge623.1, label %.lr.ph622.1.preheader

.lr.ph622.1.preheader:                            ; preds = %._crit_edge616.1
  %346 = add nsw i64 %206, -8
  %347 = lshr exact i64 %346, 2
  %348 = add nuw nsw i64 %347, 1
  %xtraiter769 = and i64 %348, 3
  %349 = icmp ult i64 %346, 12
  br i1 %349, label %._crit_edge623.1.loopexit.unr-lcssa, label %.lr.ph622.1.preheader.new

.lr.ph622.1.preheader.new:                        ; preds = %.lr.ph622.1.preheader
  %unroll_iter772 = and i64 %348, 9223372036854775804
  %invariant.gep803 = getelementptr inbounds i8, ptr %24, i64 32
  %invariant.gep805 = getelementptr inbounds i8, ptr %24, i64 64
  %invariant.gep807 = getelementptr inbounds i8, ptr %24, i64 96
  br label %.lr.ph622.1

.lr.ph622.1:                                      ; preds = %.lr.ph622.1, %.lr.ph622.1.preheader.new
  %.3507620.1 = phi i64 [ 5, %.lr.ph622.1.preheader.new ], [ %364, %.lr.ph622.1 ]
  %350 = phi double [ %345, %.lr.ph622.1.preheader.new ], [ %363, %.lr.ph622.1 ]
  %niter773 = phi i64 [ 0, %.lr.ph622.1.preheader.new ], [ %niter773.next.3, %.lr.ph622.1 ]
  %351 = getelementptr inbounds double, ptr %24, i64 %.3507620.1
  %352 = load double, ptr %351, align 8, !tbaa !9
  %353 = fcmp oge double %350, %352
  %354 = select i1 %353, double %350, double %352
  %gep804 = getelementptr inbounds double, ptr %invariant.gep803, i64 %.3507620.1
  %355 = load double, ptr %gep804, align 8, !tbaa !9
  %356 = fcmp oge double %354, %355
  %357 = select i1 %356, double %354, double %355
  %gep806 = getelementptr inbounds double, ptr %invariant.gep805, i64 %.3507620.1
  %358 = load double, ptr %gep806, align 8, !tbaa !9
  %359 = fcmp oge double %357, %358
  %360 = select i1 %359, double %357, double %358
  %gep808 = getelementptr inbounds double, ptr %invariant.gep807, i64 %.3507620.1
  %361 = load double, ptr %gep808, align 8, !tbaa !9
  %362 = fcmp oge double %360, %361
  %363 = select i1 %362, double %360, double %361
  %364 = add nuw nsw i64 %.3507620.1, 16
  %niter773.next.3 = add nuw i64 %niter773, 4
  %niter773.ncmp.3 = icmp eq i64 %niter773.next.3, %unroll_iter772
  br i1 %niter773.ncmp.3, label %._crit_edge623.1.loopexit.unr-lcssa, label %.lr.ph622.1, !llvm.loop !20

._crit_edge623.1.loopexit.unr-lcssa:              ; preds = %.lr.ph622.1, %.lr.ph622.1.preheader
  %.lcssa761.ph = phi double [ poison, %.lr.ph622.1.preheader ], [ %363, %.lr.ph622.1 ]
  %.3507620.1.unr = phi i64 [ 5, %.lr.ph622.1.preheader ], [ %364, %.lr.ph622.1 ]
  %.unr = phi double [ %345, %.lr.ph622.1.preheader ], [ %363, %.lr.ph622.1 ]
  %lcmp.mod770.not = icmp eq i64 %xtraiter769, 0
  br i1 %lcmp.mod770.not, label %._crit_edge623.1, label %.lr.ph622.1.epil

.lr.ph622.1.epil:                                 ; preds = %._crit_edge623.1.loopexit.unr-lcssa, %.lr.ph622.1.epil
  %.3507620.1.epil = phi i64 [ %370, %.lr.ph622.1.epil ], [ %.3507620.1.unr, %._crit_edge623.1.loopexit.unr-lcssa ]
  %365 = phi double [ %369, %.lr.ph622.1.epil ], [ %.unr, %._crit_edge623.1.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph622.1.epil ], [ 0, %._crit_edge623.1.loopexit.unr-lcssa ]
  %366 = getelementptr inbounds double, ptr %24, i64 %.3507620.1.epil
  %367 = load double, ptr %366, align 8, !tbaa !9
  %368 = fcmp oge double %365, %367
  %369 = select i1 %368, double %365, double %367
  %370 = add nuw nsw i64 %.3507620.1.epil, 4
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter769
  br i1 %epil.iter.cmp.not, label %._crit_edge623.1, label %.lr.ph622.1.epil, !llvm.loop !21

._crit_edge623.1:                                 ; preds = %._crit_edge623.1.loopexit.unr-lcssa, %.lr.ph622.1.epil, %._crit_edge616.1.thread, %._crit_edge616.1
  %.lcssa636.1 = phi double [ %345, %._crit_edge616.1 ], [ %343, %._crit_edge616.1.thread ], [ %.lcssa761.ph, %._crit_edge623.1.loopexit.unr-lcssa ], [ %369, %.lr.ph622.1.epil ]
  store i64 0, ptr %8, align 8, !tbaa !5
  store double %.lcssa636.1, ptr %16, align 8, !tbaa !9
  store i64 0, ptr %23, align 8, !tbaa !5
  store double 0.000000e+00, ptr %17, align 8, !tbaa !9
  store double 0.000000e+00, ptr %18, align 8, !tbaa !9
  store double 0.000000e+00, ptr %7, align 8, !tbaa !9
  store double 0.000000e+00, ptr %9, align 8, !tbaa !9
  store double 0.000000e+00, ptr %10, align 8, !tbaa !9
  store double 0.000000e+00, ptr %4, align 8, !tbaa !9
  store double 0.000000e+00, ptr %11, align 8, !tbaa !9
  store i64 2, ptr %15, align 8, !tbaa !5
  store i64 0, ptr %19, align 8, !tbaa !5
  %371 = add i64 %167, -2
  store i64 %371, ptr %14, align 8, !tbaa !5
  %invariant.gep691 = getelementptr i8, ptr %1, i64 -32
  %.not545695 = icmp slt i64 %166, 0
  br i1 %.not545695, label %._crit_edge699, label %.lr.ph698

.lr.ph698:                                        ; preds = %._crit_edge623.1
  %372 = add nuw i64 %166, 1
  %invariant.gep809 = getelementptr i8, ptr %24, i64 -24
  br label %373

373:                                              ; preds = %.lr.ph698, %541
  %374 = phi i64 [ %166, %.lr.ph698 ], [ %470, %541 ]
  %.0489696 = phi i64 [ 1, %.lr.ph698 ], [ %542, %541 ]
  %375 = icmp slt i64 %374, 1
  br i1 %375, label %543, label %376

376:                                              ; preds = %373
  store double 0.000000e+00, ptr %20, align 8, !tbaa !9
  %377 = load i64, ptr %0, align 8, !tbaa !5
  %378 = icmp eq i64 %374, %377
  br i1 %378, label %.thread, label %379

.thread:                                          ; preds = %376
  store double 0.000000e+00, ptr %21, align 8, !tbaa !9
  br label %._crit_edge729

379:                                              ; preds = %376
  %.idx546 = shl i64 %374, 5
  %gep688 = getelementptr i8, ptr %invariant.gep, i64 %.idx546
  %380 = load double, ptr %gep688, align 8, !tbaa !9
  %381 = fneg double %380
  store double %381, ptr %21, align 8, !tbaa !9
  %382 = fcmp ogt double %380, 0.000000e+00
  br i1 %382, label %383, label %._crit_edge729

383:                                              ; preds = %379
  store i64 1, ptr %2, align 8, !tbaa !5
  br label %611

._crit_edge729:                                   ; preds = %379, %.thread
  %.idx548.pre-phi = shl i64 %374, 5
  %gep692 = getelementptr i8, ptr %invariant.gep691, i64 %.idx548.pre-phi
  %384 = load double, ptr %gep692, align 8, !tbaa !9
  store double %384, ptr %16, align 8, !tbaa !9
  %385 = shl i64 %374, 2
  %386 = icmp sgt i64 %385, 7
  br i1 %386, label %.lr.ph644, label %._crit_edge645

.lr.ph644:                                        ; preds = %._crit_edge729, %402
  %.0495642 = phi double [ %.1496, %402 ], [ %384, %._crit_edge729 ]
  %.0499641 = phi double [ %.1500, %402 ], [ 0.000000e+00, %._crit_edge729 ]
  %.4508639 = phi i64 [ %408, %402 ], [ %385, %._crit_edge729 ]
  %387 = phi double [ %407, %402 ], [ %384, %._crit_edge729 ]
  %388 = getelementptr double, ptr %24, i64 %.4508639
  %389 = getelementptr i8, ptr %388, i64 -40
  %390 = load double, ptr %389, align 8, !tbaa !9
  %391 = fcmp ugt double %390, 0.000000e+00
  br i1 %391, label %392, label %._crit_edge645

392:                                              ; preds = %.lr.ph644
  %393 = fmul double %.0499641, 4.000000e+00
  %394 = fcmp ult double %.0495642, %393
  br i1 %394, label %402, label %395

395:                                              ; preds = %392
  %396 = getelementptr i8, ptr %388, i64 -24
  %397 = load double, ptr %396, align 8, !tbaa !9
  %398 = fcmp ole double %.0495642, %397
  %399 = select i1 %398, double %.0495642, double %397
  %400 = fcmp oge double %.0499641, %390
  %401 = select i1 %400, double %.0499641, double %390
  br label %402

402:                                              ; preds = %395, %392
  %.1500 = phi double [ %401, %395 ], [ %.0499641, %392 ]
  %.1496 = phi double [ %399, %395 ], [ %.0495642, %392 ]
  %403 = getelementptr i8, ptr %388, i64 -56
  %404 = load double, ptr %403, align 8, !tbaa !9
  %405 = fadd double %390, %404
  %406 = fcmp oge double %387, %405
  %407 = select i1 %406, double %387, double %405
  store double %407, ptr %16, align 8, !tbaa !9
  %408 = add nsw i64 %.4508639, -4
  %409 = icmp sgt i64 %.4508639, 11
  br i1 %409, label %.lr.ph644, label %._crit_edge645, !llvm.loop !22

._crit_edge645:                                   ; preds = %.lr.ph644, %402, %._crit_edge729
  %.0499.lcssa = phi double [ 0.000000e+00, %._crit_edge729 ], [ %.1500, %402 ], [ %.0499641, %.lr.ph644 ]
  %.0495.lcssa = phi double [ %384, %._crit_edge729 ], [ %.1496, %402 ], [ %.0495642, %.lr.ph644 ]
  %.5509 = phi i64 [ 4, %._crit_edge729 ], [ 4, %402 ], [ %.4508639, %.lr.ph644 ]
  %410 = lshr i64 %.5509, 2
  store i64 %410, ptr %5, align 8, !tbaa !5
  store i64 0, ptr %8, align 8, !tbaa !5
  %411 = sub nsw i64 %374, %410
  %412 = icmp sgt i64 %411, 1
  br i1 %412, label %413, label %.loopexit

413:                                              ; preds = %._crit_edge645
  %414 = and i64 %.5509, 9223372036854775804
  %gep694 = getelementptr double, ptr %invariant.gep691, i64 %414
  %415 = load double, ptr %gep694, align 8, !tbaa !9
  %416 = add nsw i64 %385, -3
  %.not549653.not = icmp slt i64 %414, %416
  br i1 %.not549653.not, label %.lr.ph659.preheader, label %._crit_edge660

.lr.ph659.preheader:                              ; preds = %413
  %417 = or disjoint i64 %414, 1
  br label %.lr.ph659

.lr.ph659:                                        ; preds = %.lr.ph659.preheader, %.lr.ph659
  %.0490657 = phi double [ %.1491, %.lr.ph659 ], [ %415, %.lr.ph659.preheader ]
  %.0497656 = phi i64 [ %.1498, %.lr.ph659 ], [ %410, %.lr.ph659.preheader ]
  %.0503655 = phi double [ %424, %.lr.ph659 ], [ %415, %.lr.ph659.preheader ]
  %.6654 = phi i64 [ %428, %.lr.ph659 ], [ %417, %.lr.ph659.preheader ]
  %418 = getelementptr inbounds double, ptr %24, i64 %.6654
  %419 = load double, ptr %418, align 8, !tbaa !9
  %420 = getelementptr i8, ptr %418, i64 -16
  %421 = load double, ptr %420, align 8, !tbaa !9
  %422 = fadd double %.0503655, %421
  %423 = fdiv double %.0503655, %422
  %424 = fmul double %419, %423
  %425 = fcmp ugt double %424, %.0490657
  %426 = add nuw nsw i64 %.6654, 3
  %427 = lshr i64 %426, 2
  %.1498 = select i1 %425, i64 %.0497656, i64 %427
  %.1491 = select i1 %425, double %.0490657, double %424
  %428 = add nuw nsw i64 %.6654, 4
  %.not549 = icmp sgt i64 %428, %416
  br i1 %.not549, label %._crit_edge660.loopexit, label %.lr.ph659, !llvm.loop !23

._crit_edge660.loopexit:                          ; preds = %.lr.ph659
  %.pre728 = sub nsw i64 %374, %.1498
  br label %._crit_edge660

._crit_edge660:                                   ; preds = %._crit_edge660.loopexit, %413
  %.pre-phi = phi i64 [ %.pre728, %._crit_edge660.loopexit ], [ %411, %413 ]
  %.0497.lcssa = phi i64 [ %.1498, %._crit_edge660.loopexit ], [ %410, %413 ]
  %.0490.lcssa = phi double [ %.1491, %._crit_edge660.loopexit ], [ %415, %413 ]
  %429 = sub nsw i64 %.0497.lcssa, %410
  %430 = shl nsw i64 %429, 1
  %431 = icmp sge i64 %430, %.pre-phi
  %432 = fmul double %384, 5.000000e-01
  %433 = fcmp ugt double %.0490.lcssa, %432
  %or.cond580 = select i1 %431, i1 true, i1 %433
  br i1 %or.cond580, label %.loopexit, label %434

434:                                              ; preds = %._crit_edge660
  %435 = add nuw nsw i64 %410, %374
  %436 = shl i64 %435, 2
  store i64 2, ptr %8, align 8, !tbaa !5
  %437 = shl nuw i64 %435, 1
  %438 = add i64 %437, -2
  %.not551663 = icmp sgt i64 %414, %438
  br i1 %.not551663, label %.loopexit, label %.lr.ph666

.lr.ph666:                                        ; preds = %434, %.lr.ph666
  %.7664 = phi i64 [ %457, %.lr.ph666 ], [ %414, %434 ]
  %439 = getelementptr double, ptr %24, i64 %.7664
  %440 = getelementptr i8, ptr %439, i64 -24
  %441 = load double, ptr %440, align 8, !tbaa !9
  %442 = sub nsw i64 %436, %.7664
  %443 = getelementptr double, ptr %24, i64 %442
  %444 = getelementptr i8, ptr %443, i64 -24
  %445 = load double, ptr %444, align 8, !tbaa !9
  store double %445, ptr %440, align 8, !tbaa !9
  store double %441, ptr %444, align 8, !tbaa !9
  %446 = getelementptr i8, ptr %439, i64 -16
  %447 = load double, ptr %446, align 8, !tbaa !9
  %448 = getelementptr i8, ptr %443, i64 -16
  %449 = load double, ptr %448, align 8, !tbaa !9
  store double %449, ptr %446, align 8, !tbaa !9
  store double %447, ptr %448, align 8, !tbaa !9
  %450 = getelementptr i8, ptr %439, i64 -8
  %451 = load double, ptr %450, align 8, !tbaa !9
  %452 = getelementptr i8, ptr %443, i64 -40
  %453 = load double, ptr %452, align 8, !tbaa !9
  store double %453, ptr %450, align 8, !tbaa !9
  store double %451, ptr %452, align 8, !tbaa !9
  %454 = load double, ptr %439, align 8, !tbaa !9
  %455 = getelementptr i8, ptr %443, i64 -32
  %456 = load double, ptr %455, align 8, !tbaa !9
  store double %456, ptr %439, align 8, !tbaa !9
  store double %454, ptr %455, align 8, !tbaa !9
  %457 = add nuw nsw i64 %.7664, 4
  %.not551 = icmp sgt i64 %457, %438
  br i1 %.not551, label %.loopexit, label %.lr.ph666, !llvm.loop !24

.loopexit:                                        ; preds = %.lr.ph666, %434, %._crit_edge660, %._crit_edge645
  %458 = call double @sqrt(double noundef %.0495.lcssa) #5
  %459 = call double @sqrt(double noundef %.0499.lcssa) #5
  %460 = fmul double %458, -2.000000e+00
  %461 = call double @llvm.fmuladd.f64(double %460, double %459, double %.0495.lcssa)
  %462 = fcmp ole double %461, 0.000000e+00
  %.neg = fneg double %461
  %463 = select i1 %462, double -0.000000e+00, double %.neg
  store double %463, ptr %13, align 8, !tbaa !9
  %464 = load i64, ptr %6, align 8, !tbaa !5
  %465 = load i64, ptr %5, align 8, !tbaa !5
  %466 = sub nsw i64 %464, %465
  %467 = mul i64 %466, 30
  %468 = add i64 %467, 30
  %.not552681 = icmp slt i64 %468, 1
  br i1 %.not552681, label %._crit_edge685, label %.lr.ph684

.lr.ph684:                                        ; preds = %.loopexit, %539
  %.0488682 = phi i64 [ %540, %539 ], [ 1, %.loopexit ]
  %469 = load i64, ptr %5, align 8, !tbaa !5
  %470 = load i64, ptr %6, align 8, !tbaa !5
  %471 = icmp sgt i64 %469, %470
  br i1 %471, label %541, label %472

472:                                              ; preds = %.lr.ph684
  %473 = call i32 @dlasq3_(ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull %1, ptr noundef nonnull %8, ptr noundef nonnull %13, ptr noundef nonnull %21, ptr noundef nonnull %20, ptr noundef nonnull %16, ptr noundef nonnull %19, ptr noundef nonnull %15, ptr noundef nonnull %14, ptr noundef nonnull %12, ptr noundef nonnull %23, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %7, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %4, ptr noundef nonnull %11) #5
  %474 = load i64, ptr %8, align 8, !tbaa !5
  %475 = sub nsw i64 1, %474
  store i64 %475, ptr %8, align 8, !tbaa !5
  %476 = icmp eq i64 %474, 1
  br i1 %476, label %477, label %539

477:                                              ; preds = %472
  %478 = load i64, ptr %6, align 8, !tbaa !5
  %479 = load i64, ptr %5, align 8, !tbaa !5
  %480 = sub nsw i64 %478, %479
  %481 = icmp sgt i64 %480, 2
  br i1 %481, label %482, label %539

482:                                              ; preds = %477
  %.idx553 = shl nsw i64 %478, 5
  %483 = getelementptr inbounds i8, ptr %24, i64 %.idx553
  %484 = load double, ptr %483, align 8, !tbaa !9
  %485 = load double, ptr %16, align 8, !tbaa !9
  %486 = fmul double %28, %485
  %487 = fcmp ugt double %484, %486
  br i1 %487, label %488, label %494

488:                                              ; preds = %482
  %489 = getelementptr i8, ptr %483, i64 -8
  %490 = load double, ptr %489, align 8, !tbaa !9
  %491 = load double, ptr %21, align 8, !tbaa !9
  %492 = fmul double %28, %491
  %493 = fcmp ugt double %490, %492
  br i1 %493, label %539, label %494

494:                                              ; preds = %488, %482
  %495 = add nsw i64 %479, -1
  %.idx555 = shl i64 %479, 5
  %gep810 = getelementptr i8, ptr %invariant.gep809, i64 %.idx555
  %496 = load double, ptr %gep810, align 8, !tbaa !9
  store double %496, ptr %16, align 8, !tbaa !9
  %497 = shl i64 %479, 2
  %gep680 = getelementptr double, ptr %invariant.gep, i64 %497
  %498 = load <2 x double>, ptr %gep680, align 8, !tbaa !9
  %499 = shl i64 %478, 2
  %500 = add i64 %499, -12
  %.not557668 = icmp sgt i64 %497, %500
  br i1 %.not557668, label %._crit_edge675, label %.lr.ph674

.lr.ph674:                                        ; preds = %494
  %501 = load double, ptr %21, align 8
  %502 = fmul double %28, %501
  %503 = fneg double %501
  br label %504

504:                                              ; preds = %.lr.ph674, %532
  %.0492671 = phi i64 [ %495, %.lr.ph674 ], [ %.1493, %532 ]
  %.8669 = phi i64 [ %497, %.lr.ph674 ], [ %535, %532 ]
  %505 = phi double [ %496, %.lr.ph674 ], [ %533, %532 ]
  %506 = phi <2 x double> [ %498, %.lr.ph674 ], [ %534, %532 ]
  %507 = getelementptr inbounds double, ptr %24, i64 %.8669
  %508 = load double, ptr %507, align 8, !tbaa !9
  %509 = getelementptr i8, ptr %507, i64 -24
  %510 = load double, ptr %509, align 8, !tbaa !9
  %511 = fmul double %28, %510
  %512 = fcmp ugt double %508, %511
  br i1 %512, label %513, label %517

513:                                              ; preds = %504
  %514 = getelementptr i8, ptr %507, i64 -8
  %515 = load double, ptr %514, align 8, !tbaa !9
  %516 = fcmp ugt double %515, %502
  br i1 %516, label %523, label %517

517:                                              ; preds = %513, %504
  %518 = getelementptr i8, ptr %507, i64 -8
  store double %503, ptr %518, align 8, !tbaa !9
  %519 = ashr exact i64 %.8669, 2
  store double 0.000000e+00, ptr %16, align 8, !tbaa !9
  %520 = or disjoint i64 %.8669, 3
  %521 = getelementptr inbounds double, ptr %24, i64 %520
  %522 = load <2 x double>, ptr %521, align 8, !tbaa !9
  br label %532

523:                                              ; preds = %513
  %524 = getelementptr double, ptr %1, i64 %.8669
  %525 = load double, ptr %524, align 8, !tbaa !9
  %526 = fcmp oge double %505, %525
  %527 = select i1 %526, double %505, double %525
  store double %527, ptr %16, align 8, !tbaa !9
  %528 = insertelement <2 x double> poison, double %515, i64 0
  %529 = insertelement <2 x double> %528, double %508, i64 1
  %530 = fcmp ole <2 x double> %506, %529
  %531 = select <2 x i1> %530, <2 x double> %506, <2 x double> %529
  br label %532

532:                                              ; preds = %517, %523
  %533 = phi double [ 0.000000e+00, %517 ], [ %527, %523 ]
  %.1493 = phi i64 [ %519, %517 ], [ %.0492671, %523 ]
  %534 = phi <2 x double> [ %522, %517 ], [ %531, %523 ]
  %535 = add nsw i64 %.8669, 4
  %.not557 = icmp sgt i64 %535, %500
  br i1 %.not557, label %._crit_edge675, label %504, !llvm.loop !25

._crit_edge675:                                   ; preds = %532, %494
  %.0492.lcssa = phi i64 [ %495, %494 ], [ %.1493, %532 ]
  %536 = phi <2 x double> [ %498, %494 ], [ %534, %532 ]
  %537 = getelementptr i8, ptr %483, i64 -8
  store <2 x double> %536, ptr %537, align 8, !tbaa !9
  %538 = add nsw i64 %.0492.lcssa, 1
  store i64 %538, ptr %5, align 8, !tbaa !5
  br label %539

539:                                              ; preds = %472, %477, %._crit_edge675, %488
  %540 = add nuw nsw i64 %.0488682, 1
  %.not552.not = icmp slt i64 %.0488682, %468
  br i1 %.not552.not, label %.lr.ph684, label %._crit_edge685, !llvm.loop !26

._crit_edge685:                                   ; preds = %.loopexit, %539
  store i64 2, ptr %2, align 8, !tbaa !5
  br label %611

541:                                              ; preds = %.lr.ph684
  %542 = add nuw i64 %.0489696, 1
  %exitcond = icmp eq i64 %.0489696, %372
  br i1 %exitcond, label %._crit_edge699, label %373, !llvm.loop !27

._crit_edge699:                                   ; preds = %541, %._crit_edge623.1
  store i64 3, ptr %2, align 8, !tbaa !5
  br label %611

543:                                              ; preds = %373
  %544 = load i64, ptr %0, align 8, !tbaa !5
  %.not560702 = icmp slt i64 %544, 2
  br i1 %.not560702, label %._crit_edge706, label %.lr.ph705.preheader

.lr.ph705.preheader:                              ; preds = %543
  %545 = add nsw i64 %544, -1
  %546 = add nsw i64 %544, -2
  %xtraiter774 = and i64 %545, 3
  %547 = icmp ult i64 %546, 3
  br i1 %547, label %._crit_edge706.loopexit.unr-lcssa, label %.lr.ph705.preheader.new

.lr.ph705.preheader.new:                          ; preds = %.lr.ph705.preheader
  %unroll_iter777 = and i64 %545, -4
  br label %.lr.ph705

.lr.ph705:                                        ; preds = %.lr.ph705, %.lr.ph705.preheader.new
  %.4515703 = phi i64 [ 2, %.lr.ph705.preheader.new ], [ %559, %.lr.ph705 ]
  %niter778 = phi i64 [ 0, %.lr.ph705.preheader.new ], [ %niter778.next.3, %.lr.ph705 ]
  %.idx566 = shl i64 %.4515703, 5
  %gep701 = getelementptr i8, ptr %invariant.gep691, i64 %.idx566
  %548 = load double, ptr %gep701, align 8, !tbaa !9
  %549 = getelementptr inbounds double, ptr %24, i64 %.4515703
  store double %548, ptr %549, align 8, !tbaa !9
  %550 = shl i64 %.4515703, 5
  %gep701.1 = getelementptr i8, ptr %1, i64 %550
  %551 = load double, ptr %gep701.1, align 8, !tbaa !9
  %552 = getelementptr double, ptr %1, i64 %.4515703
  store double %551, ptr %552, align 8, !tbaa !9
  %553 = add nuw i64 %.4515703, 2
  %.idx566.2 = shl i64 %553, 5
  %gep701.2 = getelementptr i8, ptr %invariant.gep691, i64 %.idx566.2
  %554 = load double, ptr %gep701.2, align 8, !tbaa !9
  %555 = getelementptr inbounds double, ptr %24, i64 %553
  store double %554, ptr %555, align 8, !tbaa !9
  %556 = add nuw i64 %.4515703, 3
  %.idx566.3 = shl i64 %556, 5
  %gep701.3 = getelementptr i8, ptr %invariant.gep691, i64 %.idx566.3
  %557 = load double, ptr %gep701.3, align 8, !tbaa !9
  %558 = getelementptr inbounds double, ptr %24, i64 %556
  store double %557, ptr %558, align 8, !tbaa !9
  %559 = add nuw i64 %.4515703, 4
  %niter778.next.3 = add i64 %niter778, 4
  %niter778.ncmp.3 = icmp eq i64 %niter778.next.3, %unroll_iter777
  br i1 %niter778.ncmp.3, label %._crit_edge706.loopexit.unr-lcssa, label %.lr.ph705, !llvm.loop !28

._crit_edge706.loopexit.unr-lcssa:                ; preds = %.lr.ph705, %.lr.ph705.preheader
  %.4515703.unr = phi i64 [ 2, %.lr.ph705.preheader ], [ %559, %.lr.ph705 ]
  %lcmp.mod776.not = icmp eq i64 %xtraiter774, 0
  br i1 %lcmp.mod776.not, label %._crit_edge706, label %.lr.ph705.epil

.lr.ph705.epil:                                   ; preds = %._crit_edge706.loopexit.unr-lcssa, %.lr.ph705.epil
  %.4515703.epil = phi i64 [ %562, %.lr.ph705.epil ], [ %.4515703.unr, %._crit_edge706.loopexit.unr-lcssa ]
  %epil.iter775 = phi i64 [ %epil.iter775.next, %.lr.ph705.epil ], [ 0, %._crit_edge706.loopexit.unr-lcssa ]
  %.idx566.epil = shl i64 %.4515703.epil, 5
  %gep701.epil = getelementptr i8, ptr %invariant.gep691, i64 %.idx566.epil
  %560 = load double, ptr %gep701.epil, align 8, !tbaa !9
  %561 = getelementptr inbounds double, ptr %24, i64 %.4515703.epil
  store double %560, ptr %561, align 8, !tbaa !9
  %562 = add nuw i64 %.4515703.epil, 1
  %epil.iter775.next = add i64 %epil.iter775, 1
  %epil.iter775.cmp.not = icmp eq i64 %epil.iter775.next, %xtraiter774
  br i1 %epil.iter775.cmp.not, label %._crit_edge706, label %.lr.ph705.epil, !llvm.loop !29

._crit_edge706:                                   ; preds = %._crit_edge706.loopexit.unr-lcssa, %.lr.ph705.epil, %543
  %563 = call i32 @dlasrt_(ptr noundef nonnull @.str.3, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %22) #5
  %564 = load i64, ptr %0, align 8, !tbaa !5
  %565 = icmp sgt i64 %564, 0
  br i1 %565, label %.lr.ph710.preheader, label %._crit_edge711

.lr.ph710.preheader:                              ; preds = %._crit_edge706
  %xtraiter779 = and i64 %564, 7
  %lcmp.mod780.not = icmp eq i64 %xtraiter779, 0
  br i1 %lcmp.mod780.not, label %.lr.ph710.prol.loopexit, label %.lr.ph710.prol

.lr.ph710.prol:                                   ; preds = %.lr.ph710.preheader, %.lr.ph710.prol
  %.5516708.prol = phi i64 [ %569, %.lr.ph710.prol ], [ %564, %.lr.ph710.preheader ]
  %.1518707.prol = phi double [ %568, %.lr.ph710.prol ], [ 0.000000e+00, %.lr.ph710.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph710.prol ], [ 0, %.lr.ph710.preheader ]
  %566 = getelementptr inbounds double, ptr %24, i64 %.5516708.prol
  %567 = load double, ptr %566, align 8, !tbaa !9
  %568 = fadd double %.1518707.prol, %567
  %569 = add nsw i64 %.5516708.prol, -1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter779
  br i1 %prol.iter.cmp.not, label %.lr.ph710.prol.loopexit, label %.lr.ph710.prol, !llvm.loop !30

.lr.ph710.prol.loopexit:                          ; preds = %.lr.ph710.prol, %.lr.ph710.preheader
  %.5516708.unr = phi i64 [ %564, %.lr.ph710.preheader ], [ %569, %.lr.ph710.prol ]
  %.1518707.unr = phi double [ 0.000000e+00, %.lr.ph710.preheader ], [ %568, %.lr.ph710.prol ]
  %.lcssa.unr = phi double [ poison, %.lr.ph710.preheader ], [ %568, %.lr.ph710.prol ]
  %570 = icmp ult i64 %564, 8
  br i1 %570, label %._crit_edge711, label %.lr.ph710.preheader.new

.lr.ph710.preheader.new:                          ; preds = %.lr.ph710.prol.loopexit
  %invariant.gep811 = getelementptr i8, ptr %24, i64 -8
  %invariant.gep813 = getelementptr i8, ptr %24, i64 -16
  %invariant.gep815 = getelementptr i8, ptr %24, i64 -24
  %invariant.gep817 = getelementptr i8, ptr %24, i64 -32
  %invariant.gep819 = getelementptr i8, ptr %24, i64 -40
  %invariant.gep821 = getelementptr i8, ptr %24, i64 -48
  br label %.lr.ph710

.lr.ph710:                                        ; preds = %.lr.ph710, %.lr.ph710.preheader.new
  %.5516708 = phi i64 [ %.5516708.unr, %.lr.ph710.preheader.new ], [ %590, %.lr.ph710 ]
  %.1518707 = phi double [ %.1518707.unr, %.lr.ph710.preheader.new ], [ %589, %.lr.ph710 ]
  %571 = getelementptr inbounds double, ptr %24, i64 %.5516708
  %572 = load double, ptr %571, align 8, !tbaa !9
  %573 = fadd double %.1518707, %572
  %gep812 = getelementptr double, ptr %invariant.gep811, i64 %.5516708
  %574 = load double, ptr %gep812, align 8, !tbaa !9
  %575 = fadd double %573, %574
  %gep814 = getelementptr double, ptr %invariant.gep813, i64 %.5516708
  %576 = load double, ptr %gep814, align 8, !tbaa !9
  %577 = fadd double %575, %576
  %gep816 = getelementptr double, ptr %invariant.gep815, i64 %.5516708
  %578 = load double, ptr %gep816, align 8, !tbaa !9
  %579 = fadd double %577, %578
  %gep818 = getelementptr double, ptr %invariant.gep817, i64 %.5516708
  %580 = load double, ptr %gep818, align 8, !tbaa !9
  %581 = fadd double %579, %580
  %gep820 = getelementptr double, ptr %invariant.gep819, i64 %.5516708
  %582 = load double, ptr %gep820, align 8, !tbaa !9
  %583 = fadd double %581, %582
  %gep822 = getelementptr double, ptr %invariant.gep821, i64 %.5516708
  %584 = load double, ptr %gep822, align 8, !tbaa !9
  %585 = fadd double %583, %584
  %586 = add nsw i64 %.5516708, -7
  %587 = getelementptr inbounds double, ptr %24, i64 %586
  %588 = load double, ptr %587, align 8, !tbaa !9
  %589 = fadd double %585, %588
  %590 = add nsw i64 %.5516708, -8
  %591 = icmp ugt i64 %586, 1
  br i1 %591, label %.lr.ph710, label %._crit_edge711, !llvm.loop !31

._crit_edge711:                                   ; preds = %.lr.ph710.prol.loopexit, %.lr.ph710, %._crit_edge706
  %.1518.lcssa = phi double [ 0.000000e+00, %._crit_edge706 ], [ %.lcssa.unr, %.lr.ph710.prol.loopexit ], [ %589, %.lr.ph710 ]
  %.idx561 = shl i64 %564, 4
  %592 = getelementptr i8, ptr %1, i64 %.idx561
  store double %153, ptr %592, align 8, !tbaa !9
  %593 = getelementptr i8, ptr %24, i64 %.idx561
  %594 = getelementptr i8, ptr %593, i64 16
  store double %.1518.lcssa, ptr %594, align 8, !tbaa !9
  %595 = load i64, ptr %15, align 8, !tbaa !5
  %596 = sitofp i64 %595 to double
  %597 = getelementptr i8, ptr %593, i64 24
  store double %596, ptr %597, align 8, !tbaa !9
  %598 = load i64, ptr %14, align 8, !tbaa !5
  %599 = sitofp i64 %598 to double
  %600 = mul nsw i64 %564, %564
  %601 = uitofp nneg i64 %600 to double
  %602 = getelementptr i8, ptr %593, i64 32
  %603 = load i64, ptr %19, align 8, !tbaa !5
  %604 = sitofp i64 %603 to double
  %605 = fmul double %604, 1.000000e+02
  %606 = insertelement <2 x double> poison, double %599, i64 0
  %607 = insertelement <2 x double> %606, double %605, i64 1
  %608 = insertelement <2 x double> poison, double %601, i64 0
  %609 = insertelement <2 x double> %608, double %596, i64 1
  %610 = fdiv <2 x double> %607, %609
  store <2 x double> %610, ptr %602, align 8, !tbaa !9
  br label %611

611:                                              ; preds = %33, %34, %37, %._crit_edge711, %._crit_edge699, %._crit_edge685, %383, %155, %._crit_edge718, %122, %108, %101, %87, %47, %31
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #5
  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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

declare i32 @xerbla_(ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #3

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

declare i32 @dlasrt_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i64 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @dlasq3_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress 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 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress 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 #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = !{!"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 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.unroll.disable"}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}
!20 = distinct !{!20, !12}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12}
!27 = distinct !{!27, !12}
!28 = distinct !{!28, !12}
!29 = distinct !{!29, !15}
!30 = distinct !{!30, !15}
!31 = distinct !{!31, !12}


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