; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (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 i32, align 4
@c__2 = external hidden global i32, align 4
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__10 = external hidden global i32, align 4
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@c__3 = external hidden global i32, align 4
@c__4 = external hidden global i32, align 4
@c__11 = external hidden global i32, align 4

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

76:                                               ; preds = %3
  %77 = load ptr, ptr %6, align 8, !tbaa !5
  store i32 -1, ptr %77, align 4, !tbaa !9
  %78 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef @c__1, i32 noundef 6)
  store i32 1, ptr %61, align 4
  br label %1865

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

83:                                               ; preds = %79
  store i32 1, ptr %61, align 4
  br label %1865

84:                                               ; preds = %79
  %85 = load ptr, ptr %4, align 8, !tbaa !5
  %86 = load i32, ptr %85, align 4, !tbaa !9
  %87 = icmp eq i32 %86, 1
  br i1 %87, label %88, label %97

88:                                               ; preds = %84
  %89 = load ptr, ptr %5, align 8, !tbaa !5
  %90 = getelementptr inbounds double, ptr %89, i64 1
  %91 = load double, ptr %90, align 8, !tbaa !11
  %92 = fcmp olt double %91, 0.000000e+00
  br i1 %92, label %93, label %96

93:                                               ; preds = %88
  %94 = load ptr, ptr %6, align 8, !tbaa !5
  store i32 -201, ptr %94, align 4, !tbaa !9
  %95 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef @c__2, i32 noundef 6)
  br label %96

96:                                               ; preds = %93, %88
  store i32 1, ptr %61, align 4
  br label %1865

97:                                               ; preds = %84
  %98 = load ptr, ptr %4, align 8, !tbaa !5
  %99 = load i32, ptr %98, align 4, !tbaa !9
  %100 = icmp eq i32 %99, 2
  br i1 %100, label %101, label %267

101:                                              ; preds = %97
  %102 = load ptr, ptr %5, align 8, !tbaa !5
  %103 = getelementptr inbounds double, ptr %102, i64 1
  %104 = load double, ptr %103, align 8, !tbaa !11
  %105 = fcmp olt double %104, 0.000000e+00
  br i1 %105, label %106, label %109

106:                                              ; preds = %101
  %107 = load ptr, ptr %6, align 8, !tbaa !5
  store i32 -201, ptr %107, align 4, !tbaa !9
  %108 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef @c__2, i32 noundef 6)
  store i32 1, ptr %61, align 4
  br label %1865

109:                                              ; preds = %101
  %110 = load ptr, ptr %5, align 8, !tbaa !5
  %111 = getelementptr inbounds double, ptr %110, i64 2
  %112 = load double, ptr %111, align 8, !tbaa !11
  %113 = fcmp olt double %112, 0.000000e+00
  br i1 %113, label %114, label %117

114:                                              ; preds = %109
  %115 = load ptr, ptr %6, align 8, !tbaa !5
  store i32 -202, ptr %115, align 4, !tbaa !9
  %116 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef @c__2, i32 noundef 6)
  store i32 1, ptr %61, align 4
  br label %1865

117:                                              ; preds = %109
  %118 = load ptr, ptr %5, align 8, !tbaa !5
  %119 = getelementptr inbounds double, ptr %118, i64 3
  %120 = load double, ptr %119, align 8, !tbaa !11
  %121 = fcmp olt double %120, 0.000000e+00
  br i1 %121, label %122, label %125

122:                                              ; preds = %117
  %123 = load ptr, ptr %6, align 8, !tbaa !5
  store i32 -203, ptr %123, align 4, !tbaa !9
  %124 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef @c__2, i32 noundef 6)
  store i32 1, ptr %61, align 4
  br label %1865

125:                                              ; preds = %117
  %126 = load ptr, ptr %5, align 8, !tbaa !5
  %127 = getelementptr inbounds double, ptr %126, i64 3
  %128 = load double, ptr %127, align 8, !tbaa !11
  %129 = load ptr, ptr %5, align 8, !tbaa !5
  %130 = getelementptr inbounds double, ptr %129, i64 1
  %131 = load double, ptr %130, align 8, !tbaa !11
  %132 = fcmp ogt double %128, %131
  br i1 %132, label %133, label %145

133:                                              ; preds = %125
  %134 = load ptr, ptr %5, align 8, !tbaa !5
  %135 = getelementptr inbounds double, ptr %134, i64 3
  %136 = load double, ptr %135, align 8, !tbaa !11
  store double %136, ptr %27, align 8, !tbaa !11
  %137 = load ptr, ptr %5, align 8, !tbaa !5
  %138 = getelementptr inbounds double, ptr %137, i64 1
  %139 = load double, ptr %138, align 8, !tbaa !11
  %140 = load ptr, ptr %5, align 8, !tbaa !5
  %141 = getelementptr inbounds double, ptr %140, i64 3
  store double %139, ptr %141, align 8, !tbaa !11
  %142 = load double, ptr %27, align 8, !tbaa !11
  %143 = load ptr, ptr %5, align 8, !tbaa !5
  %144 = getelementptr inbounds double, ptr %143, i64 1
  store double %142, ptr %144, align 8, !tbaa !11
  br label %145

145:                                              ; preds = %133, %125
  br label %146

146:                                              ; preds = %145
  br label %147

147:                                              ; preds = %146
  br label %148

148:                                              ; preds = %147
  %149 = load ptr, ptr %5, align 8, !tbaa !5
  %150 = getelementptr inbounds double, ptr %149, i64 1
  %151 = load double, ptr %150, align 8, !tbaa !11
  %152 = load ptr, ptr %5, align 8, !tbaa !5
  %153 = getelementptr inbounds double, ptr %152, i64 2
  %154 = load double, ptr %153, align 8, !tbaa !11
  %155 = fadd double %151, %154
  %156 = load ptr, ptr %5, align 8, !tbaa !5
  %157 = getelementptr inbounds double, ptr %156, i64 3
  %158 = load double, ptr %157, align 8, !tbaa !11
  %159 = fadd double %155, %158
  %160 = load ptr, ptr %5, align 8, !tbaa !5
  %161 = getelementptr inbounds double, ptr %160, i64 5
  store double %159, ptr %161, align 8, !tbaa !11
  %162 = load ptr, ptr %5, align 8, !tbaa !5
  %163 = getelementptr inbounds double, ptr %162, i64 2
  %164 = load double, ptr %163, align 8, !tbaa !11
  %165 = load ptr, ptr %5, align 8, !tbaa !5
  %166 = getelementptr inbounds double, ptr %165, i64 3
  %167 = load double, ptr %166, align 8, !tbaa !11
  %168 = load double, ptr %60, align 8, !tbaa !11
  %169 = fmul double %167, %168
  %170 = fcmp ogt double %164, %169
  br i1 %170, label %171, label %252

171:                                              ; preds = %148
  %172 = load ptr, ptr %5, align 8, !tbaa !5
  %173 = getelementptr inbounds double, ptr %172, i64 1
  %174 = load double, ptr %173, align 8, !tbaa !11
  %175 = load ptr, ptr %5, align 8, !tbaa !5
  %176 = getelementptr inbounds double, ptr %175, i64 3
  %177 = load double, ptr %176, align 8, !tbaa !11
  %178 = fsub double %174, %177
  %179 = load ptr, ptr %5, align 8, !tbaa !5
  %180 = getelementptr inbounds double, ptr %179, i64 2
  %181 = load double, ptr %180, align 8, !tbaa !11
  %182 = fadd double %178, %181
  %183 = fmul double %182, 5.000000e-01
  store double %183, ptr %32, align 8, !tbaa !11
  %184 = load ptr, ptr %5, align 8, !tbaa !5
  %185 = getelementptr inbounds double, ptr %184, i64 3
  %186 = load double, ptr %185, align 8, !tbaa !11
  %187 = load ptr, ptr %5, align 8, !tbaa !5
  %188 = getelementptr inbounds double, ptr %187, i64 2
  %189 = load double, ptr %188, align 8, !tbaa !11
  %190 = load double, ptr %32, align 8, !tbaa !11
  %191 = fdiv double %189, %190
  %192 = fmul double %186, %191
  store double %192, ptr %31, align 8, !tbaa !11
  %193 = load double, ptr %31, align 8, !tbaa !11
  %194 = load double, ptr %32, align 8, !tbaa !11
  %195 = fcmp ole double %193, %194
  br i1 %195, label %196, label %213

196:                                              ; preds = %171
  %197 = load ptr, ptr %5, align 8, !tbaa !5
  %198 = getelementptr inbounds double, ptr %197, i64 3
  %199 = load double, ptr %198, align 8, !tbaa !11
  %200 = load ptr, ptr %5, align 8, !tbaa !5
  %201 = getelementptr inbounds double, ptr %200, i64 2
  %202 = load double, ptr %201, align 8, !tbaa !11
  %203 = load double, ptr %32, align 8, !tbaa !11
  %204 = load double, ptr %31, align 8, !tbaa !11
  %205 = load double, ptr %32, align 8, !tbaa !11
  %206 = fdiv double %204, %205
  %207 = fadd double %206, 1.000000e+00
  %208 = call double @sqrt(double noundef %207) #5
  %209 = fadd double %208, 1.000000e+00
  %210 = fmul double %203, %209
  %211 = fdiv double %202, %210
  %212 = fmul double %199, %211
  store double %212, ptr %31, align 8, !tbaa !11
  br label %230

213:                                              ; preds = %171
  %214 = load ptr, ptr %5, align 8, !tbaa !5
  %215 = getelementptr inbounds double, ptr %214, i64 3
  %216 = load double, ptr %215, align 8, !tbaa !11
  %217 = load ptr, ptr %5, align 8, !tbaa !5
  %218 = getelementptr inbounds double, ptr %217, i64 2
  %219 = load double, ptr %218, align 8, !tbaa !11
  %220 = load double, ptr %32, align 8, !tbaa !11
  %221 = load double, ptr %32, align 8, !tbaa !11
  %222 = call double @sqrt(double noundef %221) #5
  %223 = load double, ptr %32, align 8, !tbaa !11
  %224 = load double, ptr %31, align 8, !tbaa !11
  %225 = fadd double %223, %224
  %226 = call double @sqrt(double noundef %225) #5
  %227 = call double @llvm.fmuladd.f64(double %222, double %226, double %220)
  %228 = fdiv double %219, %227
  %229 = fmul double %216, %228
  store double %229, ptr %31, align 8, !tbaa !11
  br label %230

230:                                              ; preds = %213, %196
  %231 = load ptr, ptr %5, align 8, !tbaa !5
  %232 = getelementptr inbounds double, ptr %231, i64 1
  %233 = load double, ptr %232, align 8, !tbaa !11
  %234 = load double, ptr %31, align 8, !tbaa !11
  %235 = load ptr, ptr %5, align 8, !tbaa !5
  %236 = getelementptr inbounds double, ptr %235, i64 2
  %237 = load double, ptr %236, align 8, !tbaa !11
  %238 = fadd double %234, %237
  %239 = fadd double %233, %238
  store double %239, ptr %32, align 8, !tbaa !11
  %240 = load ptr, ptr %5, align 8, !tbaa !5
  %241 = getelementptr inbounds double, ptr %240, i64 1
  %242 = load double, ptr %241, align 8, !tbaa !11
  %243 = load double, ptr %32, align 8, !tbaa !11
  %244 = fdiv double %242, %243
  %245 = load ptr, ptr %5, align 8, !tbaa !5
  %246 = getelementptr inbounds double, ptr %245, i64 3
  %247 = load double, ptr %246, align 8, !tbaa !11
  %248 = fmul double %247, %244
  store double %248, ptr %246, align 8, !tbaa !11
  %249 = load double, ptr %32, align 8, !tbaa !11
  %250 = load ptr, ptr %5, align 8, !tbaa !5
  %251 = getelementptr inbounds double, ptr %250, i64 1
  store double %249, ptr %251, align 8, !tbaa !11
  br label %252

252:                                              ; preds = %230, %148
  %253 = load ptr, ptr %5, align 8, !tbaa !5
  %254 = getelementptr inbounds double, ptr %253, i64 3
  %255 = load double, ptr %254, align 8, !tbaa !11
  %256 = load ptr, ptr %5, align 8, !tbaa !5
  %257 = getelementptr inbounds double, ptr %256, i64 2
  store double %255, ptr %257, align 8, !tbaa !11
  %258 = load ptr, ptr %5, align 8, !tbaa !5
  %259 = getelementptr inbounds double, ptr %258, i64 2
  %260 = load double, ptr %259, align 8, !tbaa !11
  %261 = load ptr, ptr %5, align 8, !tbaa !5
  %262 = getelementptr inbounds double, ptr %261, i64 1
  %263 = load double, ptr %262, align 8, !tbaa !11
  %264 = fadd double %260, %263
  %265 = load ptr, ptr %5, align 8, !tbaa !5
  %266 = getelementptr inbounds double, ptr %265, i64 6
  store double %264, ptr %266, align 8, !tbaa !11
  store i32 1, ptr %61, align 4
  br label %1865

267:                                              ; preds = %97
  br label %268

268:                                              ; preds = %267
  br label %269

269:                                              ; preds = %268
  br label %270

270:                                              ; preds = %269
  %271 = load ptr, ptr %5, align 8, !tbaa !5
  %272 = load ptr, ptr %4, align 8, !tbaa !5
  %273 = load i32, ptr %272, align 4, !tbaa !9
  %274 = mul nsw i32 %273, 2
  %275 = sext i32 %274 to i64
  %276 = getelementptr inbounds double, ptr %271, i64 %275
  store double 0.000000e+00, ptr %276, align 8, !tbaa !11
  %277 = load ptr, ptr %5, align 8, !tbaa !5
  %278 = getelementptr inbounds double, ptr %277, i64 2
  %279 = load double, ptr %278, align 8, !tbaa !11
  store double %279, ptr %15, align 8, !tbaa !11
  store double 0.000000e+00, ptr %22, align 8, !tbaa !11
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  store double 0.000000e+00, ptr %27, align 8, !tbaa !11
  store double 0.000000e+00, ptr %28, align 8, !tbaa !11
  %280 = load ptr, ptr %4, align 8, !tbaa !5
  %281 = load i32, ptr %280, align 4, !tbaa !9
  %282 = sub nsw i32 %281, 1
  %283 = shl i32 %282, 1
  store i32 %283, ptr %7, align 4, !tbaa !9
  store i32 1, ptr %30, align 4, !tbaa !9
  br label %284

284:                                              ; preds = %387, %270
  %285 = load i32, ptr %30, align 4, !tbaa !9
  %286 = load i32, ptr %7, align 4, !tbaa !9
  %287 = icmp sle i32 %285, %286
  br i1 %287, label %288, label %390

288:                                              ; preds = %284
  %289 = load ptr, ptr %5, align 8, !tbaa !5
  %290 = load i32, ptr %30, align 4, !tbaa !9
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds double, ptr %289, i64 %291
  %293 = load double, ptr %292, align 8, !tbaa !11
  %294 = fcmp olt double %293, 0.000000e+00
  br i1 %294, label %295, label %301

295:                                              ; preds = %288
  %296 = load i32, ptr %30, align 4, !tbaa !9
  %297 = add nsw i32 %296, 200
  %298 = sub nsw i32 0, %297
  %299 = load ptr, ptr %6, align 8, !tbaa !5
  store i32 %298, ptr %299, align 4, !tbaa !9
  %300 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef @c__2, i32 noundef 6)
  store i32 1, ptr %61, align 4
  br label %1865

301:                                              ; preds = %288
  %302 = load ptr, ptr %5, align 8, !tbaa !5
  %303 = load i32, ptr %30, align 4, !tbaa !9
  %304 = add nsw i32 %303, 1
  %305 = sext i32 %304 to i64
  %306 = getelementptr inbounds double, ptr %302, i64 %305
  %307 = load double, ptr %306, align 8, !tbaa !11
  %308 = fcmp olt double %307, 0.000000e+00
  br i1 %308, label %309, label %315

309:                                              ; preds = %301
  %310 = load i32, ptr %30, align 4, !tbaa !9
  %311 = add nsw i32 %310, 201
  %312 = sub nsw i32 0, %311
  %313 = load ptr, ptr %6, align 8, !tbaa !5
  store i32 %312, ptr %313, align 4, !tbaa !9
  %314 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef @c__2, i32 noundef 6)
  store i32 1, ptr %61, align 4
  br label %1865

315:                                              ; preds = %301
  br label %316

316:                                              ; preds = %315
  %317 = load ptr, ptr %5, align 8, !tbaa !5
  %318 = load i32, ptr %30, align 4, !tbaa !9
  %319 = sext i32 %318 to i64
  %320 = getelementptr inbounds double, ptr %317, i64 %319
  %321 = load double, ptr %320, align 8, !tbaa !11
  %322 = load double, ptr %27, align 8, !tbaa !11
  %323 = fadd double %322, %321
  store double %323, ptr %27, align 8, !tbaa !11
  %324 = load ptr, ptr %5, align 8, !tbaa !5
  %325 = load i32, ptr %30, align 4, !tbaa !9
  %326 = add nsw i32 %325, 1
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds double, ptr %324, i64 %327
  %329 = load double, ptr %328, align 8, !tbaa !11
  %330 = load double, ptr %28, align 8, !tbaa !11
  %331 = fadd double %330, %329
  store double %331, ptr %28, align 8, !tbaa !11
  %332 = load double, ptr %22, align 8, !tbaa !11
  store double %332, ptr %10, align 8, !tbaa !11
  %333 = load ptr, ptr %5, align 8, !tbaa !5
  %334 = load i32, ptr %30, align 4, !tbaa !9
  %335 = sext i32 %334 to i64
  %336 = getelementptr inbounds double, ptr %333, i64 %335
  %337 = load double, ptr %336, align 8, !tbaa !11
  store double %337, ptr %11, align 8, !tbaa !11
  %338 = load double, ptr %10, align 8, !tbaa !11
  %339 = load double, ptr %11, align 8, !tbaa !11
  %340 = fcmp oge double %338, %339
  br i1 %340, label %341, label %343

341:                                              ; preds = %316
  %342 = load double, ptr %10, align 8, !tbaa !11
  br label %345

343:                                              ; preds = %316
  %344 = load double, ptr %11, align 8, !tbaa !11
  br label %345

345:                                              ; preds = %343, %341
  %346 = phi double [ %342, %341 ], [ %344, %343 ]
  store double %346, ptr %22, align 8, !tbaa !11
  %347 = load double, ptr %15, align 8, !tbaa !11
  store double %347, ptr %10, align 8, !tbaa !11
  %348 = load ptr, ptr %5, align 8, !tbaa !5
  %349 = load i32, ptr %30, align 4, !tbaa !9
  %350 = add nsw i32 %349, 1
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds double, ptr %348, i64 %351
  %353 = load double, ptr %352, align 8, !tbaa !11
  store double %353, ptr %11, align 8, !tbaa !11
  %354 = load double, ptr %10, align 8, !tbaa !11
  %355 = load double, ptr %11, align 8, !tbaa !11
  %356 = fcmp ole double %354, %355
  br i1 %356, label %357, label %359

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

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

361:                                              ; preds = %359, %357
  %362 = phi double [ %358, %357 ], [ %360, %359 ]
  store double %362, ptr %15, align 8, !tbaa !11
  %363 = load double, ptr %22, align 8, !tbaa !11
  %364 = load double, ptr %23, align 8, !tbaa !11
  %365 = fcmp oge double %363, %364
  br i1 %365, label %366, label %368

366:                                              ; preds = %361
  %367 = load double, ptr %22, align 8, !tbaa !11
  br label %370

368:                                              ; preds = %361
  %369 = load double, ptr %23, align 8, !tbaa !11
  br label %370

370:                                              ; preds = %368, %366
  %371 = phi double [ %367, %366 ], [ %369, %368 ]
  store double %371, ptr %10, align 8, !tbaa !11
  %372 = load ptr, ptr %5, align 8, !tbaa !5
  %373 = load i32, ptr %30, align 4, !tbaa !9
  %374 = add nsw i32 %373, 1
  %375 = sext i32 %374 to i64
  %376 = getelementptr inbounds double, ptr %372, i64 %375
  %377 = load double, ptr %376, align 8, !tbaa !11
  store double %377, ptr %11, align 8, !tbaa !11
  %378 = load double, ptr %10, align 8, !tbaa !11
  %379 = load double, ptr %11, align 8, !tbaa !11
  %380 = fcmp oge double %378, %379
  br i1 %380, label %381, label %383

381:                                              ; preds = %370
  %382 = load double, ptr %10, align 8, !tbaa !11
  br label %385

383:                                              ; preds = %370
  %384 = load double, ptr %11, align 8, !tbaa !11
  br label %385

385:                                              ; preds = %383, %381
  %386 = phi double [ %382, %381 ], [ %384, %383 ]
  store double %386, ptr %23, align 8, !tbaa !11
  br label %387

387:                                              ; preds = %385
  %388 = load i32, ptr %30, align 4, !tbaa !9
  %389 = add nsw i32 %388, 2
  store i32 %389, ptr %30, align 4, !tbaa !9
  br label %284, !llvm.loop !13

390:                                              ; preds = %284
  %391 = load ptr, ptr %5, align 8, !tbaa !5
  %392 = load ptr, ptr %4, align 8, !tbaa !5
  %393 = load i32, ptr %392, align 4, !tbaa !9
  %394 = shl i32 %393, 1
  %395 = sub nsw i32 %394, 1
  %396 = sext i32 %395 to i64
  %397 = getelementptr inbounds double, ptr %391, i64 %396
  %398 = load double, ptr %397, align 8, !tbaa !11
  %399 = fcmp olt double %398, 0.000000e+00
  br i1 %399, label %400, label %408

400:                                              ; preds = %390
  %401 = load ptr, ptr %4, align 8, !tbaa !5
  %402 = load i32, ptr %401, align 4, !tbaa !9
  %403 = shl i32 %402, 1
  %404 = add nsw i32 %403, 199
  %405 = sub nsw i32 0, %404
  %406 = load ptr, ptr %6, align 8, !tbaa !5
  store i32 %405, ptr %406, align 4, !tbaa !9
  %407 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef @c__2, i32 noundef 6)
  store i32 1, ptr %61, align 4
  br label %1865

408:                                              ; preds = %390
  %409 = load ptr, ptr %5, align 8, !tbaa !5
  %410 = load ptr, ptr %4, align 8, !tbaa !5
  %411 = load i32, ptr %410, align 4, !tbaa !9
  %412 = shl i32 %411, 1
  %413 = sub nsw i32 %412, 1
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds double, ptr %409, i64 %414
  %416 = load double, ptr %415, align 8, !tbaa !11
  %417 = load double, ptr %27, align 8, !tbaa !11
  %418 = fadd double %417, %416
  store double %418, ptr %27, align 8, !tbaa !11
  %419 = load double, ptr %22, align 8, !tbaa !11
  store double %419, ptr %10, align 8, !tbaa !11
  %420 = load ptr, ptr %5, align 8, !tbaa !5
  %421 = load ptr, ptr %4, align 8, !tbaa !5
  %422 = load i32, ptr %421, align 4, !tbaa !9
  %423 = shl i32 %422, 1
  %424 = sub nsw i32 %423, 1
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds double, ptr %420, i64 %425
  %427 = load double, ptr %426, align 8, !tbaa !11
  store double %427, ptr %11, align 8, !tbaa !11
  %428 = load double, ptr %10, align 8, !tbaa !11
  %429 = load double, ptr %11, align 8, !tbaa !11
  %430 = fcmp oge double %428, %429
  br i1 %430, label %431, label %433

431:                                              ; preds = %408
  %432 = load double, ptr %10, align 8, !tbaa !11
  br label %435

433:                                              ; preds = %408
  %434 = load double, ptr %11, align 8, !tbaa !11
  br label %435

435:                                              ; preds = %433, %431
  %436 = phi double [ %432, %431 ], [ %434, %433 ]
  store double %436, ptr %22, align 8, !tbaa !11
  %437 = load double, ptr %22, align 8, !tbaa !11
  %438 = load double, ptr %23, align 8, !tbaa !11
  %439 = fcmp oge double %437, %438
  br i1 %439, label %440, label %442

440:                                              ; preds = %435
  %441 = load double, ptr %22, align 8, !tbaa !11
  br label %444

442:                                              ; preds = %435
  %443 = load double, ptr %23, align 8, !tbaa !11
  br label %444

444:                                              ; preds = %442, %440
  %445 = phi double [ %441, %440 ], [ %443, %442 ]
  store double %445, ptr %23, align 8, !tbaa !11
  %446 = load double, ptr %28, align 8, !tbaa !11
  %447 = fcmp oeq double %446, 0.000000e+00
  br i1 %447, label %448, label %482

448:                                              ; preds = %444
  %449 = load ptr, ptr %4, align 8, !tbaa !5
  %450 = load i32, ptr %449, align 4, !tbaa !9
  store i32 %450, ptr %7, align 4, !tbaa !9
  store i32 2, ptr %30, align 4, !tbaa !9
  br label %451

451:                                              ; preds = %467, %448
  %452 = load i32, ptr %30, align 4, !tbaa !9
  %453 = load i32, ptr %7, align 4, !tbaa !9
  %454 = icmp sle i32 %452, %453
  br i1 %454, label %455, label %470

455:                                              ; preds = %451
  %456 = load ptr, ptr %5, align 8, !tbaa !5
  %457 = load i32, ptr %30, align 4, !tbaa !9
  %458 = shl i32 %457, 1
  %459 = sub nsw i32 %458, 1
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds double, ptr %456, i64 %460
  %462 = load double, ptr %461, align 8, !tbaa !11
  %463 = load ptr, ptr %5, align 8, !tbaa !5
  %464 = load i32, ptr %30, align 4, !tbaa !9
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds double, ptr %463, i64 %465
  store double %462, ptr %466, align 8, !tbaa !11
  br label %467

467:                                              ; preds = %455
  %468 = load i32, ptr %30, align 4, !tbaa !9
  %469 = add nsw i32 %468, 1
  store i32 %469, ptr %30, align 4, !tbaa !9
  br label %451, !llvm.loop !15

470:                                              ; preds = %451
  %471 = load ptr, ptr %4, align 8, !tbaa !5
  %472 = load ptr, ptr %5, align 8, !tbaa !5
  %473 = getelementptr inbounds double, ptr %472, i64 1
  call void @dlasrt_(ptr noundef @.str.3, ptr noundef %471, ptr noundef %473, ptr noundef %37)
  %474 = load double, ptr %27, align 8, !tbaa !11
  %475 = load ptr, ptr %5, align 8, !tbaa !5
  %476 = load ptr, ptr %4, align 8, !tbaa !5
  %477 = load i32, ptr %476, align 4, !tbaa !9
  %478 = shl i32 %477, 1
  %479 = sub nsw i32 %478, 1
  %480 = sext i32 %479 to i64
  %481 = getelementptr inbounds double, ptr %475, i64 %480
  store double %474, ptr %481, align 8, !tbaa !11
  store i32 1, ptr %61, align 4
  br label %1865

482:                                              ; preds = %444
  %483 = load double, ptr %27, align 8, !tbaa !11
  %484 = load double, ptr %28, align 8, !tbaa !11
  %485 = fadd double %483, %484
  store double %485, ptr %35, align 8, !tbaa !11
  %486 = load double, ptr %35, align 8, !tbaa !11
  %487 = fcmp oeq double %486, 0.000000e+00
  br i1 %487, label %488, label %496

488:                                              ; preds = %482
  %489 = load ptr, ptr %5, align 8, !tbaa !5
  %490 = load ptr, ptr %4, align 8, !tbaa !5
  %491 = load i32, ptr %490, align 4, !tbaa !9
  %492 = shl i32 %491, 1
  %493 = sub nsw i32 %492, 1
  %494 = sext i32 %493 to i64
  %495 = getelementptr inbounds double, ptr %489, i64 %494
  store double 0.000000e+00, ptr %495, align 8, !tbaa !11
  store i32 1, ptr %61, align 4
  br label %1865

496:                                              ; preds = %482
  %497 = call i32 @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, i32 noundef 6, i32 noundef 1)
  %498 = icmp eq i32 %497, 1
  br i1 %498, label %499, label %502

499:                                              ; preds = %496
  %500 = call i32 @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, i32 noundef 6, i32 noundef 1)
  %501 = icmp eq i32 %500, 1
  br label %502

502:                                              ; preds = %499, %496
  %503 = phi i1 [ false, %496 ], [ %501, %499 ]
  %504 = zext i1 %503 to i32
  store i32 %504, ptr %12, align 4, !tbaa !9
  %505 = load ptr, ptr %4, align 8, !tbaa !5
  %506 = load i32, ptr %505, align 4, !tbaa !9
  %507 = shl i32 %506, 1
  store i32 %507, ptr %30, align 4, !tbaa !9
  br label %508

508:                                              ; preds = %546, %502
  %509 = load i32, ptr %30, align 4, !tbaa !9
  %510 = icmp sge i32 %509, 2
  br i1 %510, label %511, label %549

511:                                              ; preds = %508
  %512 = load ptr, ptr %5, align 8, !tbaa !5
  %513 = load i32, ptr %30, align 4, !tbaa !9
  %514 = mul nsw i32 %513, 2
  %515 = sext i32 %514 to i64
  %516 = getelementptr inbounds double, ptr %512, i64 %515
  store double 0.000000e+00, ptr %516, align 8, !tbaa !11
  %517 = load ptr, ptr %5, align 8, !tbaa !5
  %518 = load i32, ptr %30, align 4, !tbaa !9
  %519 = sext i32 %518 to i64
  %520 = getelementptr inbounds double, ptr %517, i64 %519
  %521 = load double, ptr %520, align 8, !tbaa !11
  %522 = load ptr, ptr %5, align 8, !tbaa !5
  %523 = load i32, ptr %30, align 4, !tbaa !9
  %524 = shl i32 %523, 1
  %525 = sub nsw i32 %524, 1
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds double, ptr %522, i64 %526
  store double %521, ptr %527, align 8, !tbaa !11
  %528 = load ptr, ptr %5, align 8, !tbaa !5
  %529 = load i32, ptr %30, align 4, !tbaa !9
  %530 = shl i32 %529, 1
  %531 = sub nsw i32 %530, 2
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds double, ptr %528, i64 %532
  store double 0.000000e+00, ptr %533, align 8, !tbaa !11
  %534 = load ptr, ptr %5, align 8, !tbaa !5
  %535 = load i32, ptr %30, align 4, !tbaa !9
  %536 = sub nsw i32 %535, 1
  %537 = sext i32 %536 to i64
  %538 = getelementptr inbounds double, ptr %534, i64 %537
  %539 = load double, ptr %538, align 8, !tbaa !11
  %540 = load ptr, ptr %5, align 8, !tbaa !5
  %541 = load i32, ptr %30, align 4, !tbaa !9
  %542 = shl i32 %541, 1
  %543 = sub nsw i32 %542, 3
  %544 = sext i32 %543 to i64
  %545 = getelementptr inbounds double, ptr %540, i64 %544
  store double %539, ptr %545, align 8, !tbaa !11
  br label %546

546:                                              ; preds = %511
  %547 = load i32, ptr %30, align 4, !tbaa !9
  %548 = add nsw i32 %547, -2
  store i32 %548, ptr %30, align 4, !tbaa !9
  br label %508, !llvm.loop !16

549:                                              ; preds = %508
  store i32 1, ptr %40, align 4, !tbaa !9
  %550 = load ptr, ptr %4, align 8, !tbaa !5
  %551 = load i32, ptr %550, align 4, !tbaa !9
  store i32 %551, ptr %43, align 4, !tbaa !9
  %552 = load ptr, ptr %5, align 8, !tbaa !5
  %553 = load i32, ptr %40, align 4, !tbaa !9
  %554 = shl i32 %553, 2
  %555 = sub nsw i32 %554, 3
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds double, ptr %552, i64 %556
  %558 = load double, ptr %557, align 8, !tbaa !11
  %559 = fmul double %558, 1.500000e+00
  %560 = load ptr, ptr %5, align 8, !tbaa !5
  %561 = load i32, ptr %43, align 4, !tbaa !9
  %562 = shl i32 %561, 2
  %563 = sub nsw i32 %562, 3
  %564 = sext i32 %563 to i64
  %565 = getelementptr inbounds double, ptr %560, i64 %564
  %566 = load double, ptr %565, align 8, !tbaa !11
  %567 = fcmp olt double %559, %566
  br i1 %567, label %568, label %643

568:                                              ; preds = %549
  %569 = load i32, ptr %40, align 4, !tbaa !9
  %570 = load i32, ptr %43, align 4, !tbaa !9
  %571 = add nsw i32 %569, %570
  %572 = shl i32 %571, 2
  store i32 %572, ptr %59, align 4, !tbaa !9
  %573 = load i32, ptr %40, align 4, !tbaa !9
  %574 = load i32, ptr %43, align 4, !tbaa !9
  %575 = add nsw i32 %573, %574
  %576 = sub nsw i32 %575, 1
  %577 = shl i32 %576, 1
  store i32 %577, ptr %7, align 4, !tbaa !9
  %578 = load i32, ptr %40, align 4, !tbaa !9
  %579 = shl i32 %578, 2
  store i32 %579, ptr %42, align 4, !tbaa !9
  br label %580

580:                                              ; preds = %639, %568
  %581 = load i32, ptr %42, align 4, !tbaa !9
  %582 = load i32, ptr %7, align 4, !tbaa !9
  %583 = icmp sle i32 %581, %582
  br i1 %583, label %584, label %642

584:                                              ; preds = %580
  %585 = load ptr, ptr %5, align 8, !tbaa !5
  %586 = load i32, ptr %42, align 4, !tbaa !9
  %587 = sub nsw i32 %586, 3
  %588 = sext i32 %587 to i64
  %589 = getelementptr inbounds double, ptr %585, i64 %588
  %590 = load double, ptr %589, align 8, !tbaa !11
  store double %590, ptr %21, align 8, !tbaa !11
  %591 = load ptr, ptr %5, align 8, !tbaa !5
  %592 = load i32, ptr %59, align 4, !tbaa !9
  %593 = load i32, ptr %42, align 4, !tbaa !9
  %594 = sub nsw i32 %592, %593
  %595 = sub nsw i32 %594, 3
  %596 = sext i32 %595 to i64
  %597 = getelementptr inbounds double, ptr %591, i64 %596
  %598 = load double, ptr %597, align 8, !tbaa !11
  %599 = load ptr, ptr %5, align 8, !tbaa !5
  %600 = load i32, ptr %42, align 4, !tbaa !9
  %601 = sub nsw i32 %600, 3
  %602 = sext i32 %601 to i64
  %603 = getelementptr inbounds double, ptr %599, i64 %602
  store double %598, ptr %603, align 8, !tbaa !11
  %604 = load double, ptr %21, align 8, !tbaa !11
  %605 = load ptr, ptr %5, align 8, !tbaa !5
  %606 = load i32, ptr %59, align 4, !tbaa !9
  %607 = load i32, ptr %42, align 4, !tbaa !9
  %608 = sub nsw i32 %606, %607
  %609 = sub nsw i32 %608, 3
  %610 = sext i32 %609 to i64
  %611 = getelementptr inbounds double, ptr %605, i64 %610
  store double %604, ptr %611, align 8, !tbaa !11
  %612 = load ptr, ptr %5, align 8, !tbaa !5
  %613 = load i32, ptr %42, align 4, !tbaa !9
  %614 = sub nsw i32 %613, 1
  %615 = sext i32 %614 to i64
  %616 = getelementptr inbounds double, ptr %612, i64 %615
  %617 = load double, ptr %616, align 8, !tbaa !11
  store double %617, ptr %21, align 8, !tbaa !11
  %618 = load ptr, ptr %5, align 8, !tbaa !5
  %619 = load i32, ptr %59, align 4, !tbaa !9
  %620 = load i32, ptr %42, align 4, !tbaa !9
  %621 = sub nsw i32 %619, %620
  %622 = sub nsw i32 %621, 5
  %623 = sext i32 %622 to i64
  %624 = getelementptr inbounds double, ptr %618, i64 %623
  %625 = load double, ptr %624, align 8, !tbaa !11
  %626 = load ptr, ptr %5, align 8, !tbaa !5
  %627 = load i32, ptr %42, align 4, !tbaa !9
  %628 = sub nsw i32 %627, 1
  %629 = sext i32 %628 to i64
  %630 = getelementptr inbounds double, ptr %626, i64 %629
  store double %625, ptr %630, align 8, !tbaa !11
  %631 = load double, ptr %21, align 8, !tbaa !11
  %632 = load ptr, ptr %5, align 8, !tbaa !5
  %633 = load i32, ptr %59, align 4, !tbaa !9
  %634 = load i32, ptr %42, align 4, !tbaa !9
  %635 = sub nsw i32 %633, %634
  %636 = sub nsw i32 %635, 5
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds double, ptr %632, i64 %637
  store double %631, ptr %638, align 8, !tbaa !11
  br label %639

639:                                              ; preds = %584
  %640 = load i32, ptr %42, align 4, !tbaa !9
  %641 = add nsw i32 %640, 4
  store i32 %641, ptr %42, align 4, !tbaa !9
  br label %580, !llvm.loop !17

642:                                              ; preds = %580
  br label %643

643:                                              ; preds = %642, %549
  store i32 0, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %30, align 4, !tbaa !9
  br label %644

644:                                              ; preds = %1002, %643
  %645 = load i32, ptr %30, align 4, !tbaa !9
  %646 = icmp sle i32 %645, 2
  br i1 %646, label %647, label %1005

647:                                              ; preds = %644
  %648 = load ptr, ptr %5, align 8, !tbaa !5
  %649 = load i32, ptr %43, align 4, !tbaa !9
  %650 = shl i32 %649, 2
  %651 = load i32, ptr %47, align 4, !tbaa !9
  %652 = add nsw i32 %650, %651
  %653 = sub nsw i32 %652, 3
  %654 = sext i32 %653 to i64
  %655 = getelementptr inbounds double, ptr %648, i64 %654
  %656 = load double, ptr %655, align 8, !tbaa !11
  store double %656, ptr %27, align 8, !tbaa !11
  %657 = load i32, ptr %40, align 4, !tbaa !9
  %658 = shl i32 %657, 2
  %659 = load i32, ptr %47, align 4, !tbaa !9
  %660 = add nsw i32 %658, %659
  store i32 %660, ptr %7, align 4, !tbaa !9
  %661 = load i32, ptr %43, align 4, !tbaa !9
  %662 = sub nsw i32 %661, 1
  %663 = shl i32 %662, 2
  %664 = load i32, ptr %47, align 4, !tbaa !9
  %665 = add nsw i32 %663, %664
  store i32 %665, ptr %42, align 4, !tbaa !9
  br label %666

666:                                              ; preds = %712, %647
  %667 = load i32, ptr %42, align 4, !tbaa !9
  %668 = load i32, ptr %7, align 4, !tbaa !9
  %669 = icmp sge i32 %667, %668
  br i1 %669, label %670, label %715

670:                                              ; preds = %666
  %671 = load ptr, ptr %5, align 8, !tbaa !5
  %672 = load i32, ptr %42, align 4, !tbaa !9
  %673 = sub nsw i32 %672, 1
  %674 = sext i32 %673 to i64
  %675 = getelementptr inbounds double, ptr %671, i64 %674
  %676 = load double, ptr %675, align 8, !tbaa !11
  %677 = load double, ptr %60, align 8, !tbaa !11
  %678 = load double, ptr %27, align 8, !tbaa !11
  %679 = fmul double %677, %678
  %680 = fcmp ole double %676, %679
  br i1 %680, label %681, label %693

681:                                              ; preds = %670
  %682 = load ptr, ptr %5, align 8, !tbaa !5
  %683 = load i32, ptr %42, align 4, !tbaa !9
  %684 = sub nsw i32 %683, 1
  %685 = sext i32 %684 to i64
  %686 = getelementptr inbounds double, ptr %682, i64 %685
  store double 0.000000e+00, ptr %686, align 8, !tbaa !11
  %687 = load ptr, ptr %5, align 8, !tbaa !5
  %688 = load i32, ptr %42, align 4, !tbaa !9
  %689 = sub nsw i32 %688, 3
  %690 = sext i32 %689 to i64
  %691 = getelementptr inbounds double, ptr %687, i64 %690
  %692 = load double, ptr %691, align 8, !tbaa !11
  store double %692, ptr %27, align 8, !tbaa !11
  br label %711

693:                                              ; preds = %670
  %694 = load ptr, ptr %5, align 8, !tbaa !5
  %695 = load i32, ptr %42, align 4, !tbaa !9
  %696 = sub nsw i32 %695, 3
  %697 = sext i32 %696 to i64
  %698 = getelementptr inbounds double, ptr %694, i64 %697
  %699 = load double, ptr %698, align 8, !tbaa !11
  %700 = load double, ptr %27, align 8, !tbaa !11
  %701 = load double, ptr %27, align 8, !tbaa !11
  %702 = load ptr, ptr %5, align 8, !tbaa !5
  %703 = load i32, ptr %42, align 4, !tbaa !9
  %704 = sub nsw i32 %703, 1
  %705 = sext i32 %704 to i64
  %706 = getelementptr inbounds double, ptr %702, i64 %705
  %707 = load double, ptr %706, align 8, !tbaa !11
  %708 = fadd double %701, %707
  %709 = fdiv double %700, %708
  %710 = fmul double %699, %709
  store double %710, ptr %27, align 8, !tbaa !11
  br label %711

711:                                              ; preds = %693, %681
  br label %712

712:                                              ; preds = %711
  %713 = load i32, ptr %42, align 4, !tbaa !9
  %714 = add nsw i32 %713, -4
  store i32 %714, ptr %42, align 4, !tbaa !9
  br label %666, !llvm.loop !18

715:                                              ; preds = %666
  %716 = load ptr, ptr %5, align 8, !tbaa !5
  %717 = load i32, ptr %40, align 4, !tbaa !9
  %718 = shl i32 %717, 2
  %719 = load i32, ptr %47, align 4, !tbaa !9
  %720 = add nsw i32 %718, %719
  %721 = add nsw i32 %720, 1
  %722 = sext i32 %721 to i64
  %723 = getelementptr inbounds double, ptr %716, i64 %722
  %724 = load double, ptr %723, align 8, !tbaa !11
  store double %724, ptr %15, align 8, !tbaa !11
  %725 = load ptr, ptr %5, align 8, !tbaa !5
  %726 = load i32, ptr %40, align 4, !tbaa !9
  %727 = shl i32 %726, 2
  %728 = load i32, ptr %47, align 4, !tbaa !9
  %729 = add nsw i32 %727, %728
  %730 = sub nsw i32 %729, 3
  %731 = sext i32 %730 to i64
  %732 = getelementptr inbounds double, ptr %725, i64 %731
  %733 = load double, ptr %732, align 8, !tbaa !11
  store double %733, ptr %27, align 8, !tbaa !11
  %734 = load i32, ptr %43, align 4, !tbaa !9
  %735 = sub nsw i32 %734, 1
  %736 = shl i32 %735, 2
  %737 = load i32, ptr %47, align 4, !tbaa !9
  %738 = add nsw i32 %736, %737
  store i32 %738, ptr %7, align 4, !tbaa !9
  %739 = load i32, ptr %40, align 4, !tbaa !9
  %740 = shl i32 %739, 2
  %741 = load i32, ptr %47, align 4, !tbaa !9
  %742 = add nsw i32 %740, %741
  store i32 %742, ptr %42, align 4, !tbaa !9
  br label %743

743:                                              ; preds = %944, %715
  %744 = load i32, ptr %42, align 4, !tbaa !9
  %745 = load i32, ptr %7, align 4, !tbaa !9
  %746 = icmp sle i32 %744, %745
  br i1 %746, label %747, label %947

747:                                              ; preds = %743
  %748 = load double, ptr %27, align 8, !tbaa !11
  %749 = load ptr, ptr %5, align 8, !tbaa !5
  %750 = load i32, ptr %42, align 4, !tbaa !9
  %751 = sub nsw i32 %750, 1
  %752 = sext i32 %751 to i64
  %753 = getelementptr inbounds double, ptr %749, i64 %752
  %754 = load double, ptr %753, align 8, !tbaa !11
  %755 = fadd double %748, %754
  %756 = load ptr, ptr %5, align 8, !tbaa !5
  %757 = load i32, ptr %42, align 4, !tbaa !9
  %758 = load i32, ptr %47, align 4, !tbaa !9
  %759 = shl i32 %758, 1
  %760 = sub nsw i32 %757, %759
  %761 = sub nsw i32 %760, 2
  %762 = sext i32 %761 to i64
  %763 = getelementptr inbounds double, ptr %756, i64 %762
  store double %755, ptr %763, align 8, !tbaa !11
  %764 = load ptr, ptr %5, align 8, !tbaa !5
  %765 = load i32, ptr %42, align 4, !tbaa !9
  %766 = sub nsw i32 %765, 1
  %767 = sext i32 %766 to i64
  %768 = getelementptr inbounds double, ptr %764, i64 %767
  %769 = load double, ptr %768, align 8, !tbaa !11
  %770 = load double, ptr %60, align 8, !tbaa !11
  %771 = load double, ptr %27, align 8, !tbaa !11
  %772 = fmul double %770, %771
  %773 = fcmp ole double %769, %772
  br i1 %773, label %774, label %802

774:                                              ; preds = %747
  %775 = load ptr, ptr %5, align 8, !tbaa !5
  %776 = load i32, ptr %42, align 4, !tbaa !9
  %777 = sub nsw i32 %776, 1
  %778 = sext i32 %777 to i64
  %779 = getelementptr inbounds double, ptr %775, i64 %778
  store double 0.000000e+00, ptr %779, align 8, !tbaa !11
  %780 = load double, ptr %27, align 8, !tbaa !11
  %781 = load ptr, ptr %5, align 8, !tbaa !5
  %782 = load i32, ptr %42, align 4, !tbaa !9
  %783 = load i32, ptr %47, align 4, !tbaa !9
  %784 = shl i32 %783, 1
  %785 = sub nsw i32 %782, %784
  %786 = sub nsw i32 %785, 2
  %787 = sext i32 %786 to i64
  %788 = getelementptr inbounds double, ptr %781, i64 %787
  store double %780, ptr %788, align 8, !tbaa !11
  %789 = load ptr, ptr %5, align 8, !tbaa !5
  %790 = load i32, ptr %42, align 4, !tbaa !9
  %791 = load i32, ptr %47, align 4, !tbaa !9
  %792 = shl i32 %791, 1
  %793 = sub nsw i32 %790, %792
  %794 = sext i32 %793 to i64
  %795 = getelementptr inbounds double, ptr %789, i64 %794
  store double 0.000000e+00, ptr %795, align 8, !tbaa !11
  %796 = load ptr, ptr %5, align 8, !tbaa !5
  %797 = load i32, ptr %42, align 4, !tbaa !9
  %798 = add nsw i32 %797, 1
  %799 = sext i32 %798 to i64
  %800 = getelementptr inbounds double, ptr %796, i64 %799
  %801 = load double, ptr %800, align 8, !tbaa !11
  store double %801, ptr %27, align 8, !tbaa !11
  br label %925

802:                                              ; preds = %747
  %803 = load double, ptr %52, align 8, !tbaa !11
  %804 = load ptr, ptr %5, align 8, !tbaa !5
  %805 = load i32, ptr %42, align 4, !tbaa !9
  %806 = add nsw i32 %805, 1
  %807 = sext i32 %806 to i64
  %808 = getelementptr inbounds double, ptr %804, i64 %807
  %809 = load double, ptr %808, align 8, !tbaa !11
  %810 = fmul double %803, %809
  %811 = load ptr, ptr %5, align 8, !tbaa !5
  %812 = load i32, ptr %42, align 4, !tbaa !9
  %813 = load i32, ptr %47, align 4, !tbaa !9
  %814 = shl i32 %813, 1
  %815 = sub nsw i32 %812, %814
  %816 = sub nsw i32 %815, 2
  %817 = sext i32 %816 to i64
  %818 = getelementptr inbounds double, ptr %811, i64 %817
  %819 = load double, ptr %818, align 8, !tbaa !11
  %820 = fcmp olt double %810, %819
  br i1 %820, label %821, label %875

821:                                              ; preds = %802
  %822 = load double, ptr %52, align 8, !tbaa !11
  %823 = load ptr, ptr %5, align 8, !tbaa !5
  %824 = load i32, ptr %42, align 4, !tbaa !9
  %825 = load i32, ptr %47, align 4, !tbaa !9
  %826 = shl i32 %825, 1
  %827 = sub nsw i32 %824, %826
  %828 = sub nsw i32 %827, 2
  %829 = sext i32 %828 to i64
  %830 = getelementptr inbounds double, ptr %823, i64 %829
  %831 = load double, ptr %830, align 8, !tbaa !11
  %832 = fmul double %822, %831
  %833 = load ptr, ptr %5, align 8, !tbaa !5
  %834 = load i32, ptr %42, align 4, !tbaa !9
  %835 = add nsw i32 %834, 1
  %836 = sext i32 %835 to i64
  %837 = getelementptr inbounds double, ptr %833, i64 %836
  %838 = load double, ptr %837, align 8, !tbaa !11
  %839 = fcmp olt double %832, %838
  br i1 %839, label %840, label %875

840:                                              ; preds = %821
  %841 = load ptr, ptr %5, align 8, !tbaa !5
  %842 = load i32, ptr %42, align 4, !tbaa !9
  %843 = add nsw i32 %842, 1
  %844 = sext i32 %843 to i64
  %845 = getelementptr inbounds double, ptr %841, i64 %844
  %846 = load double, ptr %845, align 8, !tbaa !11
  %847 = load ptr, ptr %5, align 8, !tbaa !5
  %848 = load i32, ptr %42, align 4, !tbaa !9
  %849 = load i32, ptr %47, align 4, !tbaa !9
  %850 = shl i32 %849, 1
  %851 = sub nsw i32 %848, %850
  %852 = sub nsw i32 %851, 2
  %853 = sext i32 %852 to i64
  %854 = getelementptr inbounds double, ptr %847, i64 %853
  %855 = load double, ptr %854, align 8, !tbaa !11
  %856 = fdiv double %846, %855
  store double %856, ptr %21, align 8, !tbaa !11
  %857 = load ptr, ptr %5, align 8, !tbaa !5
  %858 = load i32, ptr %42, align 4, !tbaa !9
  %859 = sub nsw i32 %858, 1
  %860 = sext i32 %859 to i64
  %861 = getelementptr inbounds double, ptr %857, i64 %860
  %862 = load double, ptr %861, align 8, !tbaa !11
  %863 = load double, ptr %21, align 8, !tbaa !11
  %864 = fmul double %862, %863
  %865 = load ptr, ptr %5, align 8, !tbaa !5
  %866 = load i32, ptr %42, align 4, !tbaa !9
  %867 = load i32, ptr %47, align 4, !tbaa !9
  %868 = shl i32 %867, 1
  %869 = sub nsw i32 %866, %868
  %870 = sext i32 %869 to i64
  %871 = getelementptr inbounds double, ptr %865, i64 %870
  store double %864, ptr %871, align 8, !tbaa !11
  %872 = load double, ptr %21, align 8, !tbaa !11
  %873 = load double, ptr %27, align 8, !tbaa !11
  %874 = fmul double %873, %872
  store double %874, ptr %27, align 8, !tbaa !11
  br label %924

875:                                              ; preds = %821, %802
  %876 = load ptr, ptr %5, align 8, !tbaa !5
  %877 = load i32, ptr %42, align 4, !tbaa !9
  %878 = add nsw i32 %877, 1
  %879 = sext i32 %878 to i64
  %880 = getelementptr inbounds double, ptr %876, i64 %879
  %881 = load double, ptr %880, align 8, !tbaa !11
  %882 = load ptr, ptr %5, align 8, !tbaa !5
  %883 = load i32, ptr %42, align 4, !tbaa !9
  %884 = sub nsw i32 %883, 1
  %885 = sext i32 %884 to i64
  %886 = getelementptr inbounds double, ptr %882, i64 %885
  %887 = load double, ptr %886, align 8, !tbaa !11
  %888 = load ptr, ptr %5, align 8, !tbaa !5
  %889 = load i32, ptr %42, align 4, !tbaa !9
  %890 = load i32, ptr %47, align 4, !tbaa !9
  %891 = shl i32 %890, 1
  %892 = sub nsw i32 %889, %891
  %893 = sub nsw i32 %892, 2
  %894 = sext i32 %893 to i64
  %895 = getelementptr inbounds double, ptr %888, i64 %894
  %896 = load double, ptr %895, align 8, !tbaa !11
  %897 = fdiv double %887, %896
  %898 = fmul double %881, %897
  %899 = load ptr, ptr %5, align 8, !tbaa !5
  %900 = load i32, ptr %42, align 4, !tbaa !9
  %901 = load i32, ptr %47, align 4, !tbaa !9
  %902 = shl i32 %901, 1
  %903 = sub nsw i32 %900, %902
  %904 = sext i32 %903 to i64
  %905 = getelementptr inbounds double, ptr %899, i64 %904
  store double %898, ptr %905, align 8, !tbaa !11
  %906 = load ptr, ptr %5, align 8, !tbaa !5
  %907 = load i32, ptr %42, align 4, !tbaa !9
  %908 = add nsw i32 %907, 1
  %909 = sext i32 %908 to i64
  %910 = getelementptr inbounds double, ptr %906, i64 %909
  %911 = load double, ptr %910, align 8, !tbaa !11
  %912 = load double, ptr %27, align 8, !tbaa !11
  %913 = load ptr, ptr %5, align 8, !tbaa !5
  %914 = load i32, ptr %42, align 4, !tbaa !9
  %915 = load i32, ptr %47, align 4, !tbaa !9
  %916 = shl i32 %915, 1
  %917 = sub nsw i32 %914, %916
  %918 = sub nsw i32 %917, 2
  %919 = sext i32 %918 to i64
  %920 = getelementptr inbounds double, ptr %913, i64 %919
  %921 = load double, ptr %920, align 8, !tbaa !11
  %922 = fdiv double %912, %921
  %923 = fmul double %911, %922
  store double %923, ptr %27, align 8, !tbaa !11
  br label %924

924:                                              ; preds = %875, %840
  br label %925

925:                                              ; preds = %924, %774
  %926 = load double, ptr %15, align 8, !tbaa !11
  store double %926, ptr %10, align 8, !tbaa !11
  %927 = load ptr, ptr %5, align 8, !tbaa !5
  %928 = load i32, ptr %42, align 4, !tbaa !9
  %929 = load i32, ptr %47, align 4, !tbaa !9
  %930 = shl i32 %929, 1
  %931 = sub nsw i32 %928, %930
  %932 = sext i32 %931 to i64
  %933 = getelementptr inbounds double, ptr %927, i64 %932
  %934 = load double, ptr %933, align 8, !tbaa !11
  store double %934, ptr %11, align 8, !tbaa !11
  %935 = load double, ptr %10, align 8, !tbaa !11
  %936 = load double, ptr %11, align 8, !tbaa !11
  %937 = fcmp ole double %935, %936
  br i1 %937, label %938, label %940

938:                                              ; preds = %925
  %939 = load double, ptr %10, align 8, !tbaa !11
  br label %942

940:                                              ; preds = %925
  %941 = load double, ptr %11, align 8, !tbaa !11
  br label %942

942:                                              ; preds = %940, %938
  %943 = phi double [ %939, %938 ], [ %941, %940 ]
  store double %943, ptr %15, align 8, !tbaa !11
  br label %944

944:                                              ; preds = %942
  %945 = load i32, ptr %42, align 4, !tbaa !9
  %946 = add nsw i32 %945, 4
  store i32 %946, ptr %42, align 4, !tbaa !9
  br label %743, !llvm.loop !19

947:                                              ; preds = %743
  %948 = load double, ptr %27, align 8, !tbaa !11
  %949 = load ptr, ptr %5, align 8, !tbaa !5
  %950 = load i32, ptr %43, align 4, !tbaa !9
  %951 = shl i32 %950, 2
  %952 = load i32, ptr %47, align 4, !tbaa !9
  %953 = sub nsw i32 %951, %952
  %954 = sub nsw i32 %953, 2
  %955 = sext i32 %954 to i64
  %956 = getelementptr inbounds double, ptr %949, i64 %955
  store double %948, ptr %956, align 8, !tbaa !11
  %957 = load ptr, ptr %5, align 8, !tbaa !5
  %958 = load i32, ptr %40, align 4, !tbaa !9
  %959 = shl i32 %958, 2
  %960 = load i32, ptr %47, align 4, !tbaa !9
  %961 = sub nsw i32 %959, %960
  %962 = sub nsw i32 %961, 2
  %963 = sext i32 %962 to i64
  %964 = getelementptr inbounds double, ptr %957, i64 %963
  %965 = load double, ptr %964, align 8, !tbaa !11
  store double %965, ptr %22, align 8, !tbaa !11
  %966 = load i32, ptr %43, align 4, !tbaa !9
  %967 = shl i32 %966, 2
  %968 = load i32, ptr %47, align 4, !tbaa !9
  %969 = sub nsw i32 %967, %968
  %970 = sub nsw i32 %969, 2
  store i32 %970, ptr %7, align 4, !tbaa !9
  %971 = load i32, ptr %40, align 4, !tbaa !9
  %972 = shl i32 %971, 2
  %973 = load i32, ptr %47, align 4, !tbaa !9
  %974 = sub nsw i32 %972, %973
  %975 = add nsw i32 %974, 2
  store i32 %975, ptr %42, align 4, !tbaa !9
  br label %976

976:                                              ; preds = %996, %947
  %977 = load i32, ptr %42, align 4, !tbaa !9
  %978 = load i32, ptr %7, align 4, !tbaa !9
  %979 = icmp sle i32 %977, %978
  br i1 %979, label %980, label %999

980:                                              ; preds = %976
  %981 = load double, ptr %22, align 8, !tbaa !11
  store double %981, ptr %10, align 8, !tbaa !11
  %982 = load ptr, ptr %5, align 8, !tbaa !5
  %983 = load i32, ptr %42, align 4, !tbaa !9
  %984 = sext i32 %983 to i64
  %985 = getelementptr inbounds double, ptr %982, i64 %984
  %986 = load double, ptr %985, align 8, !tbaa !11
  store double %986, ptr %11, align 8, !tbaa !11
  %987 = load double, ptr %10, align 8, !tbaa !11
  %988 = load double, ptr %11, align 8, !tbaa !11
  %989 = fcmp oge double %987, %988
  br i1 %989, label %990, label %992

990:                                              ; preds = %980
  %991 = load double, ptr %10, align 8, !tbaa !11
  br label %994

992:                                              ; preds = %980
  %993 = load double, ptr %11, align 8, !tbaa !11
  br label %994

994:                                              ; preds = %992, %990
  %995 = phi double [ %991, %990 ], [ %993, %992 ]
  store double %995, ptr %22, align 8, !tbaa !11
  br label %996

996:                                              ; preds = %994
  %997 = load i32, ptr %42, align 4, !tbaa !9
  %998 = add nsw i32 %997, 4
  store i32 %998, ptr %42, align 4, !tbaa !9
  br label %976, !llvm.loop !20

999:                                              ; preds = %976
  %1000 = load i32, ptr %47, align 4, !tbaa !9
  %1001 = sub nsw i32 1, %1000
  store i32 %1001, ptr %47, align 4, !tbaa !9
  br label %1002

1002:                                             ; preds = %999
  %1003 = load i32, ptr %30, align 4, !tbaa !9
  %1004 = add nsw i32 %1003, 1
  store i32 %1004, ptr %30, align 4, !tbaa !9
  br label %644, !llvm.loop !21

1005:                                             ; preds = %644
  store i32 0, ptr %45, align 4, !tbaa !9
  store double 0.000000e+00, ptr %25, align 8, !tbaa !11
  store double 0.000000e+00, ptr %26, align 8, !tbaa !11
  store double 0.000000e+00, ptr %46, align 8, !tbaa !11
  store double 0.000000e+00, ptr %53, align 8, !tbaa !11
  store double 0.000000e+00, ptr %54, align 8, !tbaa !11
  store double 0.000000e+00, ptr %29, align 8, !tbaa !11
  store double 0.000000e+00, ptr %57, align 8, !tbaa !11
  store i32 2, ptr %19, align 4, !tbaa !9
  store i32 0, ptr %33, align 4, !tbaa !9
  %1006 = load i32, ptr %43, align 4, !tbaa !9
  %1007 = load i32, ptr %40, align 4, !tbaa !9
  %1008 = sub nsw i32 %1006, %1007
  %1009 = shl i32 %1008, 1
  store i32 %1009, ptr %18, align 4, !tbaa !9
  %1010 = load ptr, ptr %4, align 8, !tbaa !5
  %1011 = load i32, ptr %1010, align 4, !tbaa !9
  %1012 = add nsw i32 %1011, 1
  store i32 %1012, ptr %7, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %1013

1013:                                             ; preds = %1763, %1005
  %1014 = load i32, ptr %49, align 4, !tbaa !9
  %1015 = load i32, ptr %7, align 4, !tbaa !9
  %1016 = icmp sle i32 %1014, %1015
  br i1 %1016, label %1017, label %1766

1017:                                             ; preds = %1013
  %1018 = load i32, ptr %43, align 4, !tbaa !9
  %1019 = icmp slt i32 %1018, 1
  br i1 %1019, label %1020, label %1021

1020:                                             ; preds = %1017
  br label %1768

1021:                                             ; preds = %1017
  store double 0.000000e+00, ptr %34, align 8, !tbaa !11
  %1022 = load i32, ptr %43, align 4, !tbaa !9
  %1023 = load ptr, ptr %4, align 8, !tbaa !5
  %1024 = load i32, ptr %1023, align 4, !tbaa !9
  %1025 = icmp eq i32 %1022, %1024
  br i1 %1025, label %1026, label %1027

1026:                                             ; preds = %1021
  store double 0.000000e+00, ptr %36, align 8, !tbaa !11
  br label %1036

1027:                                             ; preds = %1021
  %1028 = load ptr, ptr %5, align 8, !tbaa !5
  %1029 = load i32, ptr %43, align 4, !tbaa !9
  %1030 = shl i32 %1029, 2
  %1031 = sub nsw i32 %1030, 1
  %1032 = sext i32 %1031 to i64
  %1033 = getelementptr inbounds double, ptr %1028, i64 %1032
  %1034 = load double, ptr %1033, align 8, !tbaa !11
  %1035 = fneg double %1034
  store double %1035, ptr %36, align 8, !tbaa !11
  br label %1036

1036:                                             ; preds = %1027, %1026
  %1037 = load double, ptr %36, align 8, !tbaa !11
  %1038 = fcmp olt double %1037, 0.000000e+00
  br i1 %1038, label %1039, label %1041

1039:                                             ; preds = %1036
  %1040 = load ptr, ptr %6, align 8, !tbaa !5
  store i32 1, ptr %1040, align 4, !tbaa !9
  store i32 1, ptr %61, align 4
  br label %1865

1041:                                             ; preds = %1036
  store double 0.000000e+00, ptr %16, align 8, !tbaa !11
  %1042 = load i32, ptr %43, align 4, !tbaa !9
  %1043 = load i32, ptr %40, align 4, !tbaa !9
  %1044 = icmp sgt i32 %1042, %1043
  br i1 %1044, label %1045, label %1062

1045:                                             ; preds = %1041
  %1046 = load ptr, ptr %5, align 8, !tbaa !5
  %1047 = load i32, ptr %43, align 4, !tbaa !9
  %1048 = shl i32 %1047, 2
  %1049 = sub nsw i32 %1048, 5
  %1050 = sext i32 %1049 to i64
  %1051 = getelementptr inbounds double, ptr %1046, i64 %1050
  %1052 = load double, ptr %1051, align 8, !tbaa !11
  store double %1052, ptr %10, align 8, !tbaa !11
  %1053 = load double, ptr %10, align 8, !tbaa !11
  %1054 = fcmp oge double %1053, 0.000000e+00
  br i1 %1054, label %1055, label %1057

1055:                                             ; preds = %1045
  %1056 = load double, ptr %10, align 8, !tbaa !11
  br label %1060

1057:                                             ; preds = %1045
  %1058 = load double, ptr %10, align 8, !tbaa !11
  %1059 = fneg double %1058
  br label %1060

1060:                                             ; preds = %1057, %1055
  %1061 = phi double [ %1056, %1055 ], [ %1059, %1057 ]
  store double %1061, ptr %15, align 8, !tbaa !11
  br label %1063

1062:                                             ; preds = %1041
  store double 0.000000e+00, ptr %15, align 8, !tbaa !11
  br label %1063

1063:                                             ; preds = %1062, %1060
  %1064 = load ptr, ptr %5, align 8, !tbaa !5
  %1065 = load i32, ptr %43, align 4, !tbaa !9
  %1066 = shl i32 %1065, 2
  %1067 = sub nsw i32 %1066, 3
  %1068 = sext i32 %1067 to i64
  %1069 = getelementptr inbounds double, ptr %1064, i64 %1068
  %1070 = load double, ptr %1069, align 8, !tbaa !11
  store double %1070, ptr %20, align 8, !tbaa !11
  %1071 = load double, ptr %20, align 8, !tbaa !11
  store double %1071, ptr %22, align 8, !tbaa !11
  %1072 = load i32, ptr %43, align 4, !tbaa !9
  %1073 = shl i32 %1072, 2
  store i32 %1073, ptr %42, align 4, !tbaa !9
  br label %1074

1074:                                             ; preds = %1164, %1063
  %1075 = load i32, ptr %42, align 4, !tbaa !9
  %1076 = icmp sge i32 %1075, 8
  br i1 %1076, label %1077, label %1167

1077:                                             ; preds = %1074
  %1078 = load ptr, ptr %5, align 8, !tbaa !5
  %1079 = load i32, ptr %42, align 4, !tbaa !9
  %1080 = sub nsw i32 %1079, 5
  %1081 = sext i32 %1080 to i64
  %1082 = getelementptr inbounds double, ptr %1078, i64 %1081
  %1083 = load double, ptr %1082, align 8, !tbaa !11
  %1084 = fcmp ole double %1083, 0.000000e+00
  br i1 %1084, label %1085, label %1086

1085:                                             ; preds = %1077
  br label %1168

1086:                                             ; preds = %1077
  %1087 = load double, ptr %20, align 8, !tbaa !11
  %1088 = load double, ptr %16, align 8, !tbaa !11
  %1089 = fmul double %1088, 4.000000e+00
  %1090 = fcmp oge double %1087, %1089
  br i1 %1090, label %1091, label %1124

1091:                                             ; preds = %1086
  %1092 = load double, ptr %20, align 8, !tbaa !11
  store double %1092, ptr %10, align 8, !tbaa !11
  %1093 = load ptr, ptr %5, align 8, !tbaa !5
  %1094 = load i32, ptr %42, align 4, !tbaa !9
  %1095 = sub nsw i32 %1094, 3
  %1096 = sext i32 %1095 to i64
  %1097 = getelementptr inbounds double, ptr %1093, i64 %1096
  %1098 = load double, ptr %1097, align 8, !tbaa !11
  store double %1098, ptr %11, align 8, !tbaa !11
  %1099 = load double, ptr %10, align 8, !tbaa !11
  %1100 = load double, ptr %11, align 8, !tbaa !11
  %1101 = fcmp ole double %1099, %1100
  br i1 %1101, label %1102, label %1104

1102:                                             ; preds = %1091
  %1103 = load double, ptr %10, align 8, !tbaa !11
  br label %1106

1104:                                             ; preds = %1091
  %1105 = load double, ptr %11, align 8, !tbaa !11
  br label %1106

1106:                                             ; preds = %1104, %1102
  %1107 = phi double [ %1103, %1102 ], [ %1105, %1104 ]
  store double %1107, ptr %20, align 8, !tbaa !11
  %1108 = load double, ptr %16, align 8, !tbaa !11
  store double %1108, ptr %10, align 8, !tbaa !11
  %1109 = load ptr, ptr %5, align 8, !tbaa !5
  %1110 = load i32, ptr %42, align 4, !tbaa !9
  %1111 = sub nsw i32 %1110, 5
  %1112 = sext i32 %1111 to i64
  %1113 = getelementptr inbounds double, ptr %1109, i64 %1112
  %1114 = load double, ptr %1113, align 8, !tbaa !11
  store double %1114, ptr %11, align 8, !tbaa !11
  %1115 = load double, ptr %10, align 8, !tbaa !11
  %1116 = load double, ptr %11, align 8, !tbaa !11
  %1117 = fcmp oge double %1115, %1116
  br i1 %1117, label %1118, label %1120

1118:                                             ; preds = %1106
  %1119 = load double, ptr %10, align 8, !tbaa !11
  br label %1122

1120:                                             ; preds = %1106
  %1121 = load double, ptr %11, align 8, !tbaa !11
  br label %1122

1122:                                             ; preds = %1120, %1118
  %1123 = phi double [ %1119, %1118 ], [ %1121, %1120 ]
  store double %1123, ptr %16, align 8, !tbaa !11
  br label %1124

1124:                                             ; preds = %1122, %1086
  %1125 = load double, ptr %22, align 8, !tbaa !11
  store double %1125, ptr %10, align 8, !tbaa !11
  %1126 = load ptr, ptr %5, align 8, !tbaa !5
  %1127 = load i32, ptr %42, align 4, !tbaa !9
  %1128 = sub nsw i32 %1127, 7
  %1129 = sext i32 %1128 to i64
  %1130 = getelementptr inbounds double, ptr %1126, i64 %1129
  %1131 = load double, ptr %1130, align 8, !tbaa !11
  %1132 = load ptr, ptr %5, align 8, !tbaa !5
  %1133 = load i32, ptr %42, align 4, !tbaa !9
  %1134 = sub nsw i32 %1133, 5
  %1135 = sext i32 %1134 to i64
  %1136 = getelementptr inbounds double, ptr %1132, i64 %1135
  %1137 = load double, ptr %1136, align 8, !tbaa !11
  %1138 = fadd double %1131, %1137
  store double %1138, ptr %11, align 8, !tbaa !11
  %1139 = load double, ptr %10, align 8, !tbaa !11
  %1140 = load double, ptr %11, align 8, !tbaa !11
  %1141 = fcmp oge double %1139, %1140
  br i1 %1141, label %1142, label %1144

1142:                                             ; preds = %1124
  %1143 = load double, ptr %10, align 8, !tbaa !11
  br label %1146

1144:                                             ; preds = %1124
  %1145 = load double, ptr %11, align 8, !tbaa !11
  br label %1146

1146:                                             ; preds = %1144, %1142
  %1147 = phi double [ %1143, %1142 ], [ %1145, %1144 ]
  store double %1147, ptr %22, align 8, !tbaa !11
  %1148 = load double, ptr %15, align 8, !tbaa !11
  store double %1148, ptr %10, align 8, !tbaa !11
  %1149 = load ptr, ptr %5, align 8, !tbaa !5
  %1150 = load i32, ptr %42, align 4, !tbaa !9
  %1151 = sub nsw i32 %1150, 5
  %1152 = sext i32 %1151 to i64
  %1153 = getelementptr inbounds double, ptr %1149, i64 %1152
  %1154 = load double, ptr %1153, align 8, !tbaa !11
  store double %1154, ptr %11, align 8, !tbaa !11
  %1155 = load double, ptr %10, align 8, !tbaa !11
  %1156 = load double, ptr %11, align 8, !tbaa !11
  %1157 = fcmp ole double %1155, %1156
  br i1 %1157, label %1158, label %1160

1158:                                             ; preds = %1146
  %1159 = load double, ptr %10, align 8, !tbaa !11
  br label %1162

1160:                                             ; preds = %1146
  %1161 = load double, ptr %11, align 8, !tbaa !11
  br label %1162

1162:                                             ; preds = %1160, %1158
  %1163 = phi double [ %1159, %1158 ], [ %1161, %1160 ]
  store double %1163, ptr %15, align 8, !tbaa !11
  br label %1164

1164:                                             ; preds = %1162
  %1165 = load i32, ptr %42, align 4, !tbaa !9
  %1166 = add nsw i32 %1165, -4
  store i32 %1166, ptr %42, align 4, !tbaa !9
  br label %1074, !llvm.loop !22

1167:                                             ; preds = %1074
  store i32 4, ptr %42, align 4, !tbaa !9
  br label %1168

1168:                                             ; preds = %1167, %1085
  %1169 = load i32, ptr %42, align 4, !tbaa !9
  %1170 = sdiv i32 %1169, 4
  store i32 %1170, ptr %40, align 4, !tbaa !9
  store i32 0, ptr %47, align 4, !tbaa !9
  %1171 = load i32, ptr %43, align 4, !tbaa !9
  %1172 = load i32, ptr %40, align 4, !tbaa !9
  %1173 = sub nsw i32 %1171, %1172
  %1174 = icmp sgt i32 %1173, 1
  br i1 %1174, label %1175, label %1372

1175:                                             ; preds = %1168
  %1176 = load ptr, ptr %5, align 8, !tbaa !5
  %1177 = load i32, ptr %40, align 4, !tbaa !9
  %1178 = shl i32 %1177, 2
  %1179 = sub nsw i32 %1178, 3
  %1180 = sext i32 %1179 to i64
  %1181 = getelementptr inbounds double, ptr %1176, i64 %1180
  %1182 = load double, ptr %1181, align 8, !tbaa !11
  store double %1182, ptr %55, align 8, !tbaa !11
  %1183 = load double, ptr %55, align 8, !tbaa !11
  store double %1183, ptr %48, align 8, !tbaa !11
  %1184 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %1184, ptr %17, align 4, !tbaa !9
  %1185 = load i32, ptr %43, align 4, !tbaa !9
  %1186 = shl i32 %1185, 2
  %1187 = sub nsw i32 %1186, 3
  store i32 %1187, ptr %8, align 4, !tbaa !9
  %1188 = load i32, ptr %40, align 4, !tbaa !9
  %1189 = shl i32 %1188, 2
  %1190 = add nsw i32 %1189, 1
  store i32 %1190, ptr %42, align 4, !tbaa !9
  br label %1191

1191:                                             ; preds = %1221, %1175
  %1192 = load i32, ptr %42, align 4, !tbaa !9
  %1193 = load i32, ptr %8, align 4, !tbaa !9
  %1194 = icmp sle i32 %1192, %1193
  br i1 %1194, label %1195, label %1224

1195:                                             ; preds = %1191
  %1196 = load ptr, ptr %5, align 8, !tbaa !5
  %1197 = load i32, ptr %42, align 4, !tbaa !9
  %1198 = sext i32 %1197 to i64
  %1199 = getelementptr inbounds double, ptr %1196, i64 %1198
  %1200 = load double, ptr %1199, align 8, !tbaa !11
  %1201 = load double, ptr %55, align 8, !tbaa !11
  %1202 = load double, ptr %55, align 8, !tbaa !11
  %1203 = load ptr, ptr %5, align 8, !tbaa !5
  %1204 = load i32, ptr %42, align 4, !tbaa !9
  %1205 = sub nsw i32 %1204, 2
  %1206 = sext i32 %1205 to i64
  %1207 = getelementptr inbounds double, ptr %1203, i64 %1206
  %1208 = load double, ptr %1207, align 8, !tbaa !11
  %1209 = fadd double %1202, %1208
  %1210 = fdiv double %1201, %1209
  %1211 = fmul double %1200, %1210
  store double %1211, ptr %55, align 8, !tbaa !11
  %1212 = load double, ptr %55, align 8, !tbaa !11
  %1213 = load double, ptr %48, align 8, !tbaa !11
  %1214 = fcmp ole double %1212, %1213
  br i1 %1214, label %1215, label %1220

1215:                                             ; preds = %1195
  %1216 = load double, ptr %55, align 8, !tbaa !11
  store double %1216, ptr %48, align 8, !tbaa !11
  %1217 = load i32, ptr %42, align 4, !tbaa !9
  %1218 = add nsw i32 %1217, 3
  %1219 = sdiv i32 %1218, 4
  store i32 %1219, ptr %17, align 4, !tbaa !9
  br label %1220

1220:                                             ; preds = %1215, %1195
  br label %1221

1221:                                             ; preds = %1220
  %1222 = load i32, ptr %42, align 4, !tbaa !9
  %1223 = add nsw i32 %1222, 4
  store i32 %1223, ptr %42, align 4, !tbaa !9
  br label %1191, !llvm.loop !23

1224:                                             ; preds = %1191
  %1225 = load i32, ptr %17, align 4, !tbaa !9
  %1226 = load i32, ptr %40, align 4, !tbaa !9
  %1227 = sub nsw i32 %1225, %1226
  %1228 = shl i32 %1227, 1
  %1229 = load i32, ptr %43, align 4, !tbaa !9
  %1230 = load i32, ptr %17, align 4, !tbaa !9
  %1231 = sub nsw i32 %1229, %1230
  %1232 = icmp slt i32 %1228, %1231
  br i1 %1232, label %1233, label %1371

1233:                                             ; preds = %1224
  %1234 = load double, ptr %48, align 8, !tbaa !11
  %1235 = load ptr, ptr %5, align 8, !tbaa !5
  %1236 = load i32, ptr %43, align 4, !tbaa !9
  %1237 = shl i32 %1236, 2
  %1238 = sub nsw i32 %1237, 3
  %1239 = sext i32 %1238 to i64
  %1240 = getelementptr inbounds double, ptr %1235, i64 %1239
  %1241 = load double, ptr %1240, align 8, !tbaa !11
  %1242 = fmul double %1241, 5.000000e-01
  %1243 = fcmp ole double %1234, %1242
  br i1 %1243, label %1244, label %1371

1244:                                             ; preds = %1233
  %1245 = load i32, ptr %40, align 4, !tbaa !9
  %1246 = load i32, ptr %43, align 4, !tbaa !9
  %1247 = add nsw i32 %1245, %1246
  %1248 = shl i32 %1247, 2
  store i32 %1248, ptr %59, align 4, !tbaa !9
  store i32 2, ptr %47, align 4, !tbaa !9
  %1249 = load i32, ptr %40, align 4, !tbaa !9
  %1250 = load i32, ptr %43, align 4, !tbaa !9
  %1251 = add nsw i32 %1249, %1250
  %1252 = sub nsw i32 %1251, 1
  %1253 = shl i32 %1252, 1
  store i32 %1253, ptr %8, align 4, !tbaa !9
  %1254 = load i32, ptr %40, align 4, !tbaa !9
  %1255 = shl i32 %1254, 2
  store i32 %1255, ptr %42, align 4, !tbaa !9
  br label %1256

1256:                                             ; preds = %1367, %1244
  %1257 = load i32, ptr %42, align 4, !tbaa !9
  %1258 = load i32, ptr %8, align 4, !tbaa !9
  %1259 = icmp sle i32 %1257, %1258
  br i1 %1259, label %1260, label %1370

1260:                                             ; preds = %1256
  %1261 = load ptr, ptr %5, align 8, !tbaa !5
  %1262 = load i32, ptr %42, align 4, !tbaa !9
  %1263 = sub nsw i32 %1262, 3
  %1264 = sext i32 %1263 to i64
  %1265 = getelementptr inbounds double, ptr %1261, i64 %1264
  %1266 = load double, ptr %1265, align 8, !tbaa !11
  store double %1266, ptr %21, align 8, !tbaa !11
  %1267 = load ptr, ptr %5, align 8, !tbaa !5
  %1268 = load i32, ptr %59, align 4, !tbaa !9
  %1269 = load i32, ptr %42, align 4, !tbaa !9
  %1270 = sub nsw i32 %1268, %1269
  %1271 = sub nsw i32 %1270, 3
  %1272 = sext i32 %1271 to i64
  %1273 = getelementptr inbounds double, ptr %1267, i64 %1272
  %1274 = load double, ptr %1273, align 8, !tbaa !11
  %1275 = load ptr, ptr %5, align 8, !tbaa !5
  %1276 = load i32, ptr %42, align 4, !tbaa !9
  %1277 = sub nsw i32 %1276, 3
  %1278 = sext i32 %1277 to i64
  %1279 = getelementptr inbounds double, ptr %1275, i64 %1278
  store double %1274, ptr %1279, align 8, !tbaa !11
  %1280 = load double, ptr %21, align 8, !tbaa !11
  %1281 = load ptr, ptr %5, align 8, !tbaa !5
  %1282 = load i32, ptr %59, align 4, !tbaa !9
  %1283 = load i32, ptr %42, align 4, !tbaa !9
  %1284 = sub nsw i32 %1282, %1283
  %1285 = sub nsw i32 %1284, 3
  %1286 = sext i32 %1285 to i64
  %1287 = getelementptr inbounds double, ptr %1281, i64 %1286
  store double %1280, ptr %1287, align 8, !tbaa !11
  %1288 = load ptr, ptr %5, align 8, !tbaa !5
  %1289 = load i32, ptr %42, align 4, !tbaa !9
  %1290 = sub nsw i32 %1289, 2
  %1291 = sext i32 %1290 to i64
  %1292 = getelementptr inbounds double, ptr %1288, i64 %1291
  %1293 = load double, ptr %1292, align 8, !tbaa !11
  store double %1293, ptr %21, align 8, !tbaa !11
  %1294 = load ptr, ptr %5, align 8, !tbaa !5
  %1295 = load i32, ptr %59, align 4, !tbaa !9
  %1296 = load i32, ptr %42, align 4, !tbaa !9
  %1297 = sub nsw i32 %1295, %1296
  %1298 = sub nsw i32 %1297, 2
  %1299 = sext i32 %1298 to i64
  %1300 = getelementptr inbounds double, ptr %1294, i64 %1299
  %1301 = load double, ptr %1300, align 8, !tbaa !11
  %1302 = load ptr, ptr %5, align 8, !tbaa !5
  %1303 = load i32, ptr %42, align 4, !tbaa !9
  %1304 = sub nsw i32 %1303, 2
  %1305 = sext i32 %1304 to i64
  %1306 = getelementptr inbounds double, ptr %1302, i64 %1305
  store double %1301, ptr %1306, align 8, !tbaa !11
  %1307 = load double, ptr %21, align 8, !tbaa !11
  %1308 = load ptr, ptr %5, align 8, !tbaa !5
  %1309 = load i32, ptr %59, align 4, !tbaa !9
  %1310 = load i32, ptr %42, align 4, !tbaa !9
  %1311 = sub nsw i32 %1309, %1310
  %1312 = sub nsw i32 %1311, 2
  %1313 = sext i32 %1312 to i64
  %1314 = getelementptr inbounds double, ptr %1308, i64 %1313
  store double %1307, ptr %1314, align 8, !tbaa !11
  %1315 = load ptr, ptr %5, align 8, !tbaa !5
  %1316 = load i32, ptr %42, align 4, !tbaa !9
  %1317 = sub nsw i32 %1316, 1
  %1318 = sext i32 %1317 to i64
  %1319 = getelementptr inbounds double, ptr %1315, i64 %1318
  %1320 = load double, ptr %1319, align 8, !tbaa !11
  store double %1320, ptr %21, align 8, !tbaa !11
  %1321 = load ptr, ptr %5, align 8, !tbaa !5
  %1322 = load i32, ptr %59, align 4, !tbaa !9
  %1323 = load i32, ptr %42, align 4, !tbaa !9
  %1324 = sub nsw i32 %1322, %1323
  %1325 = sub nsw i32 %1324, 5
  %1326 = sext i32 %1325 to i64
  %1327 = getelementptr inbounds double, ptr %1321, i64 %1326
  %1328 = load double, ptr %1327, align 8, !tbaa !11
  %1329 = load ptr, ptr %5, align 8, !tbaa !5
  %1330 = load i32, ptr %42, align 4, !tbaa !9
  %1331 = sub nsw i32 %1330, 1
  %1332 = sext i32 %1331 to i64
  %1333 = getelementptr inbounds double, ptr %1329, i64 %1332
  store double %1328, ptr %1333, align 8, !tbaa !11
  %1334 = load double, ptr %21, align 8, !tbaa !11
  %1335 = load ptr, ptr %5, align 8, !tbaa !5
  %1336 = load i32, ptr %59, align 4, !tbaa !9
  %1337 = load i32, ptr %42, align 4, !tbaa !9
  %1338 = sub nsw i32 %1336, %1337
  %1339 = sub nsw i32 %1338, 5
  %1340 = sext i32 %1339 to i64
  %1341 = getelementptr inbounds double, ptr %1335, i64 %1340
  store double %1334, ptr %1341, align 8, !tbaa !11
  %1342 = load ptr, ptr %5, align 8, !tbaa !5
  %1343 = load i32, ptr %42, align 4, !tbaa !9
  %1344 = sext i32 %1343 to i64
  %1345 = getelementptr inbounds double, ptr %1342, i64 %1344
  %1346 = load double, ptr %1345, align 8, !tbaa !11
  store double %1346, ptr %21, align 8, !tbaa !11
  %1347 = load ptr, ptr %5, align 8, !tbaa !5
  %1348 = load i32, ptr %59, align 4, !tbaa !9
  %1349 = load i32, ptr %42, align 4, !tbaa !9
  %1350 = sub nsw i32 %1348, %1349
  %1351 = sub nsw i32 %1350, 4
  %1352 = sext i32 %1351 to i64
  %1353 = getelementptr inbounds double, ptr %1347, i64 %1352
  %1354 = load double, ptr %1353, align 8, !tbaa !11
  %1355 = load ptr, ptr %5, align 8, !tbaa !5
  %1356 = load i32, ptr %42, align 4, !tbaa !9
  %1357 = sext i32 %1356 to i64
  %1358 = getelementptr inbounds double, ptr %1355, i64 %1357
  store double %1354, ptr %1358, align 8, !tbaa !11
  %1359 = load double, ptr %21, align 8, !tbaa !11
  %1360 = load ptr, ptr %5, align 8, !tbaa !5
  %1361 = load i32, ptr %59, align 4, !tbaa !9
  %1362 = load i32, ptr %42, align 4, !tbaa !9
  %1363 = sub nsw i32 %1361, %1362
  %1364 = sub nsw i32 %1363, 4
  %1365 = sext i32 %1364 to i64
  %1366 = getelementptr inbounds double, ptr %1360, i64 %1365
  store double %1359, ptr %1366, align 8, !tbaa !11
  br label %1367

1367:                                             ; preds = %1260
  %1368 = load i32, ptr %42, align 4, !tbaa !9
  %1369 = add nsw i32 %1368, 4
  store i32 %1369, ptr %42, align 4, !tbaa !9
  br label %1256, !llvm.loop !24

1370:                                             ; preds = %1256
  br label %1371

1371:                                             ; preds = %1370, %1233, %1224
  br label %1372

1372:                                             ; preds = %1371, %1168
  store double 0.000000e+00, ptr %10, align 8, !tbaa !11
  %1373 = load double, ptr %20, align 8, !tbaa !11
  %1374 = load double, ptr %20, align 8, !tbaa !11
  %1375 = call double @sqrt(double noundef %1374) #5
  %1376 = fmul double %1375, 2.000000e+00
  %1377 = load double, ptr %16, align 8, !tbaa !11
  %1378 = call double @sqrt(double noundef %1377) #5
  %1379 = fneg double %1376
  %1380 = call double @llvm.fmuladd.f64(double %1379, double %1378, double %1373)
  store double %1380, ptr %11, align 8, !tbaa !11
  %1381 = load double, ptr %10, align 8, !tbaa !11
  %1382 = load double, ptr %11, align 8, !tbaa !11
  %1383 = fcmp oge double %1381, %1382
  br i1 %1383, label %1384, label %1386

1384:                                             ; preds = %1372
  %1385 = load double, ptr %10, align 8, !tbaa !11
  br label %1388

1386:                                             ; preds = %1372
  %1387 = load double, ptr %11, align 8, !tbaa !11
  br label %1388

1388:                                             ; preds = %1386, %1384
  %1389 = phi double [ %1385, %1384 ], [ %1387, %1386 ]
  %1390 = fneg double %1389
  store double %1390, ptr %14, align 8, !tbaa !11
  %1391 = load i32, ptr %43, align 4, !tbaa !9
  %1392 = load i32, ptr %40, align 4, !tbaa !9
  %1393 = sub nsw i32 %1391, %1392
  %1394 = add nsw i32 %1393, 1
  %1395 = mul nsw i32 %1394, 100
  store i32 %1395, ptr %13, align 4, !tbaa !9
  %1396 = load i32, ptr %13, align 4, !tbaa !9
  store i32 %1396, ptr %8, align 4, !tbaa !9
  store i32 1, ptr %50, align 4, !tbaa !9
  br label %1397

1397:                                             ; preds = %1591, %1388
  %1398 = load i32, ptr %50, align 4, !tbaa !9
  %1399 = load i32, ptr %8, align 4, !tbaa !9
  %1400 = icmp sle i32 %1398, %1399
  br i1 %1400, label %1401, label %1594

1401:                                             ; preds = %1397
  %1402 = load i32, ptr %40, align 4, !tbaa !9
  %1403 = load i32, ptr %43, align 4, !tbaa !9
  %1404 = icmp sgt i32 %1402, %1403
  br i1 %1404, label %1405, label %1406

1405:                                             ; preds = %1401
  br label %1762

1406:                                             ; preds = %1401
  %1407 = load ptr, ptr %5, align 8, !tbaa !5
  %1408 = getelementptr inbounds double, ptr %1407, i64 1
  call void @dlasq3_(ptr noundef %40, ptr noundef %43, ptr noundef %1408, ptr noundef %47, ptr noundef %14, ptr noundef %36, ptr noundef %34, ptr noundef %22, ptr noundef %33, ptr noundef %19, ptr noundef %18, ptr noundef %12, ptr noundef %45, ptr noundef %25, ptr noundef %26, ptr noundef %46, ptr noundef %53, ptr noundef %54, ptr noundef %29, ptr noundef %57)
  %1409 = load i32, ptr %47, align 4, !tbaa !9
  %1410 = sub nsw i32 1, %1409
  store i32 %1410, ptr %47, align 4, !tbaa !9
  %1411 = load i32, ptr %47, align 4, !tbaa !9
  %1412 = icmp eq i32 %1411, 0
  br i1 %1412, label %1413, label %1590

1413:                                             ; preds = %1406
  %1414 = load i32, ptr %43, align 4, !tbaa !9
  %1415 = load i32, ptr %40, align 4, !tbaa !9
  %1416 = sub nsw i32 %1414, %1415
  %1417 = icmp sge i32 %1416, 3
  br i1 %1417, label %1418, label %1590

1418:                                             ; preds = %1413
  %1419 = load ptr, ptr %5, align 8, !tbaa !5
  %1420 = load i32, ptr %43, align 4, !tbaa !9
  %1421 = mul nsw i32 %1420, 4
  %1422 = sext i32 %1421 to i64
  %1423 = getelementptr inbounds double, ptr %1419, i64 %1422
  %1424 = load double, ptr %1423, align 8, !tbaa !11
  %1425 = load double, ptr %60, align 8, !tbaa !11
  %1426 = load double, ptr %22, align 8, !tbaa !11
  %1427 = fmul double %1425, %1426
  %1428 = fcmp ole double %1424, %1427
  br i1 %1428, label %1441, label %1429

1429:                                             ; preds = %1418
  %1430 = load ptr, ptr %5, align 8, !tbaa !5
  %1431 = load i32, ptr %43, align 4, !tbaa !9
  %1432 = shl i32 %1431, 2
  %1433 = sub nsw i32 %1432, 1
  %1434 = sext i32 %1433 to i64
  %1435 = getelementptr inbounds double, ptr %1430, i64 %1434
  %1436 = load double, ptr %1435, align 8, !tbaa !11
  %1437 = load double, ptr %60, align 8, !tbaa !11
  %1438 = load double, ptr %36, align 8, !tbaa !11
  %1439 = fmul double %1437, %1438
  %1440 = fcmp ole double %1436, %1439
  br i1 %1440, label %1441, label %1589

1441:                                             ; preds = %1429, %1418
  %1442 = load i32, ptr %40, align 4, !tbaa !9
  %1443 = sub nsw i32 %1442, 1
  store i32 %1443, ptr %24, align 4, !tbaa !9
  %1444 = load ptr, ptr %5, align 8, !tbaa !5
  %1445 = load i32, ptr %40, align 4, !tbaa !9
  %1446 = shl i32 %1445, 2
  %1447 = sub nsw i32 %1446, 3
  %1448 = sext i32 %1447 to i64
  %1449 = getelementptr inbounds double, ptr %1444, i64 %1448
  %1450 = load double, ptr %1449, align 8, !tbaa !11
  store double %1450, ptr %22, align 8, !tbaa !11
  %1451 = load ptr, ptr %5, align 8, !tbaa !5
  %1452 = load i32, ptr %40, align 4, !tbaa !9
  %1453 = shl i32 %1452, 2
  %1454 = sub nsw i32 %1453, 1
  %1455 = sext i32 %1454 to i64
  %1456 = getelementptr inbounds double, ptr %1451, i64 %1455
  %1457 = load double, ptr %1456, align 8, !tbaa !11
  store double %1457, ptr %15, align 8, !tbaa !11
  %1458 = load ptr, ptr %5, align 8, !tbaa !5
  %1459 = load i32, ptr %40, align 4, !tbaa !9
  %1460 = mul nsw i32 %1459, 4
  %1461 = sext i32 %1460 to i64
  %1462 = getelementptr inbounds double, ptr %1458, i64 %1461
  %1463 = load double, ptr %1462, align 8, !tbaa !11
  store double %1463, ptr %51, align 8, !tbaa !11
  %1464 = load i32, ptr %43, align 4, !tbaa !9
  %1465 = sub nsw i32 %1464, 3
  %1466 = shl i32 %1465, 2
  store i32 %1466, ptr %9, align 4, !tbaa !9
  %1467 = load i32, ptr %40, align 4, !tbaa !9
  %1468 = shl i32 %1467, 2
  store i32 %1468, ptr %42, align 4, !tbaa !9
  br label %1469

1469:                                             ; preds = %1570, %1441
  %1470 = load i32, ptr %42, align 4, !tbaa !9
  %1471 = load i32, ptr %9, align 4, !tbaa !9
  %1472 = icmp sle i32 %1470, %1471
  br i1 %1472, label %1473, label %1573

1473:                                             ; preds = %1469
  %1474 = load ptr, ptr %5, align 8, !tbaa !5
  %1475 = load i32, ptr %42, align 4, !tbaa !9
  %1476 = sext i32 %1475 to i64
  %1477 = getelementptr inbounds double, ptr %1474, i64 %1476
  %1478 = load double, ptr %1477, align 8, !tbaa !11
  %1479 = load double, ptr %60, align 8, !tbaa !11
  %1480 = load ptr, ptr %5, align 8, !tbaa !5
  %1481 = load i32, ptr %42, align 4, !tbaa !9
  %1482 = sub nsw i32 %1481, 3
  %1483 = sext i32 %1482 to i64
  %1484 = getelementptr inbounds double, ptr %1480, i64 %1483
  %1485 = load double, ptr %1484, align 8, !tbaa !11
  %1486 = fmul double %1479, %1485
  %1487 = fcmp ole double %1478, %1486
  br i1 %1487, label %1499, label %1488

1488:                                             ; preds = %1473
  %1489 = load ptr, ptr %5, align 8, !tbaa !5
  %1490 = load i32, ptr %42, align 4, !tbaa !9
  %1491 = sub nsw i32 %1490, 1
  %1492 = sext i32 %1491 to i64
  %1493 = getelementptr inbounds double, ptr %1489, i64 %1492
  %1494 = load double, ptr %1493, align 8, !tbaa !11
  %1495 = load double, ptr %60, align 8, !tbaa !11
  %1496 = load double, ptr %36, align 8, !tbaa !11
  %1497 = fmul double %1495, %1496
  %1498 = fcmp ole double %1494, %1497
  br i1 %1498, label %1499, label %1521

1499:                                             ; preds = %1488, %1473
  %1500 = load double, ptr %36, align 8, !tbaa !11
  %1501 = fneg double %1500
  %1502 = load ptr, ptr %5, align 8, !tbaa !5
  %1503 = load i32, ptr %42, align 4, !tbaa !9
  %1504 = sub nsw i32 %1503, 1
  %1505 = sext i32 %1504 to i64
  %1506 = getelementptr inbounds double, ptr %1502, i64 %1505
  store double %1501, ptr %1506, align 8, !tbaa !11
  %1507 = load i32, ptr %42, align 4, !tbaa !9
  %1508 = sdiv i32 %1507, 4
  store i32 %1508, ptr %24, align 4, !tbaa !9
  store double 0.000000e+00, ptr %22, align 8, !tbaa !11
  %1509 = load ptr, ptr %5, align 8, !tbaa !5
  %1510 = load i32, ptr %42, align 4, !tbaa !9
  %1511 = add nsw i32 %1510, 3
  %1512 = sext i32 %1511 to i64
  %1513 = getelementptr inbounds double, ptr %1509, i64 %1512
  %1514 = load double, ptr %1513, align 8, !tbaa !11
  store double %1514, ptr %15, align 8, !tbaa !11
  %1515 = load ptr, ptr %5, align 8, !tbaa !5
  %1516 = load i32, ptr %42, align 4, !tbaa !9
  %1517 = add nsw i32 %1516, 4
  %1518 = sext i32 %1517 to i64
  %1519 = getelementptr inbounds double, ptr %1515, i64 %1518
  %1520 = load double, ptr %1519, align 8, !tbaa !11
  store double %1520, ptr %51, align 8, !tbaa !11
  br label %1569

1521:                                             ; preds = %1488
  %1522 = load double, ptr %22, align 8, !tbaa !11
  store double %1522, ptr %10, align 8, !tbaa !11
  %1523 = load ptr, ptr %5, align 8, !tbaa !5
  %1524 = load i32, ptr %42, align 4, !tbaa !9
  %1525 = add nsw i32 %1524, 1
  %1526 = sext i32 %1525 to i64
  %1527 = getelementptr inbounds double, ptr %1523, i64 %1526
  %1528 = load double, ptr %1527, align 8, !tbaa !11
  store double %1528, ptr %11, align 8, !tbaa !11
  %1529 = load double, ptr %10, align 8, !tbaa !11
  %1530 = load double, ptr %11, align 8, !tbaa !11
  %1531 = fcmp oge double %1529, %1530
  br i1 %1531, label %1532, label %1534

1532:                                             ; preds = %1521
  %1533 = load double, ptr %10, align 8, !tbaa !11
  br label %1536

1534:                                             ; preds = %1521
  %1535 = load double, ptr %11, align 8, !tbaa !11
  br label %1536

1536:                                             ; preds = %1534, %1532
  %1537 = phi double [ %1533, %1532 ], [ %1535, %1534 ]
  store double %1537, ptr %22, align 8, !tbaa !11
  %1538 = load double, ptr %15, align 8, !tbaa !11
  store double %1538, ptr %10, align 8, !tbaa !11
  %1539 = load ptr, ptr %5, align 8, !tbaa !5
  %1540 = load i32, ptr %42, align 4, !tbaa !9
  %1541 = sub nsw i32 %1540, 1
  %1542 = sext i32 %1541 to i64
  %1543 = getelementptr inbounds double, ptr %1539, i64 %1542
  %1544 = load double, ptr %1543, align 8, !tbaa !11
  store double %1544, ptr %11, align 8, !tbaa !11
  %1545 = load double, ptr %10, align 8, !tbaa !11
  %1546 = load double, ptr %11, align 8, !tbaa !11
  %1547 = fcmp ole double %1545, %1546
  br i1 %1547, label %1548, label %1550

1548:                                             ; preds = %1536
  %1549 = load double, ptr %10, align 8, !tbaa !11
  br label %1552

1550:                                             ; preds = %1536
  %1551 = load double, ptr %11, align 8, !tbaa !11
  br label %1552

1552:                                             ; preds = %1550, %1548
  %1553 = phi double [ %1549, %1548 ], [ %1551, %1550 ]
  store double %1553, ptr %15, align 8, !tbaa !11
  %1554 = load double, ptr %51, align 8, !tbaa !11
  store double %1554, ptr %10, align 8, !tbaa !11
  %1555 = load ptr, ptr %5, align 8, !tbaa !5
  %1556 = load i32, ptr %42, align 4, !tbaa !9
  %1557 = sext i32 %1556 to i64
  %1558 = getelementptr inbounds double, ptr %1555, i64 %1557
  %1559 = load double, ptr %1558, align 8, !tbaa !11
  store double %1559, ptr %11, align 8, !tbaa !11
  %1560 = load double, ptr %10, align 8, !tbaa !11
  %1561 = load double, ptr %11, align 8, !tbaa !11
  %1562 = fcmp ole double %1560, %1561
  br i1 %1562, label %1563, label %1565

1563:                                             ; preds = %1552
  %1564 = load double, ptr %10, align 8, !tbaa !11
  br label %1567

1565:                                             ; preds = %1552
  %1566 = load double, ptr %11, align 8, !tbaa !11
  br label %1567

1567:                                             ; preds = %1565, %1563
  %1568 = phi double [ %1564, %1563 ], [ %1566, %1565 ]
  store double %1568, ptr %51, align 8, !tbaa !11
  br label %1569

1569:                                             ; preds = %1567, %1499
  br label %1570

1570:                                             ; preds = %1569
  %1571 = load i32, ptr %42, align 4, !tbaa !9
  %1572 = add nsw i32 %1571, 4
  store i32 %1572, ptr %42, align 4, !tbaa !9
  br label %1469, !llvm.loop !25

1573:                                             ; preds = %1469
  %1574 = load double, ptr %15, align 8, !tbaa !11
  %1575 = load ptr, ptr %5, align 8, !tbaa !5
  %1576 = load i32, ptr %43, align 4, !tbaa !9
  %1577 = shl i32 %1576, 2
  %1578 = sub nsw i32 %1577, 1
  %1579 = sext i32 %1578 to i64
  %1580 = getelementptr inbounds double, ptr %1575, i64 %1579
  store double %1574, ptr %1580, align 8, !tbaa !11
  %1581 = load double, ptr %51, align 8, !tbaa !11
  %1582 = load ptr, ptr %5, align 8, !tbaa !5
  %1583 = load i32, ptr %43, align 4, !tbaa !9
  %1584 = mul nsw i32 %1583, 4
  %1585 = sext i32 %1584 to i64
  %1586 = getelementptr inbounds double, ptr %1582, i64 %1585
  store double %1581, ptr %1586, align 8, !tbaa !11
  %1587 = load i32, ptr %24, align 4, !tbaa !9
  %1588 = add nsw i32 %1587, 1
  store i32 %1588, ptr %40, align 4, !tbaa !9
  br label %1589

1589:                                             ; preds = %1573, %1429
  br label %1590

1590:                                             ; preds = %1589, %1413, %1406
  br label %1591

1591:                                             ; preds = %1590
  %1592 = load i32, ptr %50, align 4, !tbaa !9
  %1593 = add nsw i32 %1592, 1
  store i32 %1593, ptr %50, align 4, !tbaa !9
  br label %1397, !llvm.loop !26

1594:                                             ; preds = %1397
  %1595 = load ptr, ptr %6, align 8, !tbaa !5
  store i32 2, ptr %1595, align 4, !tbaa !9
  %1596 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %1596, ptr %41, align 4, !tbaa !9
  %1597 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %1597, ptr %44, align 4, !tbaa !9
  br label %1598

1598:                                             ; preds = %1705, %1594
  %1599 = load ptr, ptr %5, align 8, !tbaa !5
  %1600 = load i32, ptr %40, align 4, !tbaa !9
  %1601 = shl i32 %1600, 2
  %1602 = sub nsw i32 %1601, 3
  %1603 = sext i32 %1602 to i64
  %1604 = getelementptr inbounds double, ptr %1599, i64 %1603
  %1605 = load double, ptr %1604, align 8, !tbaa !11
  store double %1605, ptr %39, align 8, !tbaa !11
  %1606 = load double, ptr %36, align 8, !tbaa !11
  %1607 = load ptr, ptr %5, align 8, !tbaa !5
  %1608 = load i32, ptr %40, align 4, !tbaa !9
  %1609 = shl i32 %1608, 2
  %1610 = sub nsw i32 %1609, 3
  %1611 = sext i32 %1610 to i64
  %1612 = getelementptr inbounds double, ptr %1607, i64 %1611
  %1613 = load double, ptr %1612, align 8, !tbaa !11
  %1614 = fadd double %1613, %1606
  store double %1614, ptr %1612, align 8, !tbaa !11
  %1615 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %1615, ptr %8, align 4, !tbaa !9
  %1616 = load i32, ptr %40, align 4, !tbaa !9
  %1617 = add nsw i32 %1616, 1
  store i32 %1617, ptr %30, align 4, !tbaa !9
  br label %1618

1618:                                             ; preds = %1679, %1598
  %1619 = load i32, ptr %30, align 4, !tbaa !9
  %1620 = load i32, ptr %8, align 4, !tbaa !9
  %1621 = icmp sle i32 %1619, %1620
  br i1 %1621, label %1622, label %1682

1622:                                             ; preds = %1618
  %1623 = load ptr, ptr %5, align 8, !tbaa !5
  %1624 = load i32, ptr %30, align 4, !tbaa !9
  %1625 = shl i32 %1624, 2
  %1626 = sub nsw i32 %1625, 5
  %1627 = sext i32 %1626 to i64
  %1628 = getelementptr inbounds double, ptr %1623, i64 %1627
  %1629 = load double, ptr %1628, align 8, !tbaa !11
  store double %1629, ptr %38, align 8, !tbaa !11
  %1630 = load double, ptr %39, align 8, !tbaa !11
  %1631 = load ptr, ptr %5, align 8, !tbaa !5
  %1632 = load i32, ptr %30, align 4, !tbaa !9
  %1633 = shl i32 %1632, 2
  %1634 = sub nsw i32 %1633, 7
  %1635 = sext i32 %1634 to i64
  %1636 = getelementptr inbounds double, ptr %1631, i64 %1635
  %1637 = load double, ptr %1636, align 8, !tbaa !11
  %1638 = fdiv double %1630, %1637
  %1639 = load ptr, ptr %5, align 8, !tbaa !5
  %1640 = load i32, ptr %30, align 4, !tbaa !9
  %1641 = shl i32 %1640, 2
  %1642 = sub nsw i32 %1641, 5
  %1643 = sext i32 %1642 to i64
  %1644 = getelementptr inbounds double, ptr %1639, i64 %1643
  %1645 = load double, ptr %1644, align 8, !tbaa !11
  %1646 = fmul double %1645, %1638
  store double %1646, ptr %1644, align 8, !tbaa !11
  %1647 = load ptr, ptr %5, align 8, !tbaa !5
  %1648 = load i32, ptr %30, align 4, !tbaa !9
  %1649 = shl i32 %1648, 2
  %1650 = sub nsw i32 %1649, 3
  %1651 = sext i32 %1650 to i64
  %1652 = getelementptr inbounds double, ptr %1647, i64 %1651
  %1653 = load double, ptr %1652, align 8, !tbaa !11
  store double %1653, ptr %39, align 8, !tbaa !11
  %1654 = load ptr, ptr %5, align 8, !tbaa !5
  %1655 = load i32, ptr %30, align 4, !tbaa !9
  %1656 = shl i32 %1655, 2
  %1657 = sub nsw i32 %1656, 3
  %1658 = sext i32 %1657 to i64
  %1659 = getelementptr inbounds double, ptr %1654, i64 %1658
  %1660 = load double, ptr %1659, align 8, !tbaa !11
  %1661 = load double, ptr %36, align 8, !tbaa !11
  %1662 = fadd double %1660, %1661
  %1663 = load double, ptr %38, align 8, !tbaa !11
  %1664 = fadd double %1662, %1663
  %1665 = load ptr, ptr %5, align 8, !tbaa !5
  %1666 = load i32, ptr %30, align 4, !tbaa !9
  %1667 = shl i32 %1666, 2
  %1668 = sub nsw i32 %1667, 5
  %1669 = sext i32 %1668 to i64
  %1670 = getelementptr inbounds double, ptr %1665, i64 %1669
  %1671 = load double, ptr %1670, align 8, !tbaa !11
  %1672 = fsub double %1664, %1671
  %1673 = load ptr, ptr %5, align 8, !tbaa !5
  %1674 = load i32, ptr %30, align 4, !tbaa !9
  %1675 = shl i32 %1674, 2
  %1676 = sub nsw i32 %1675, 3
  %1677 = sext i32 %1676 to i64
  %1678 = getelementptr inbounds double, ptr %1673, i64 %1677
  store double %1672, ptr %1678, align 8, !tbaa !11
  br label %1679

1679:                                             ; preds = %1622
  %1680 = load i32, ptr %30, align 4, !tbaa !9
  %1681 = add nsw i32 %1680, 1
  store i32 %1681, ptr %30, align 4, !tbaa !9
  br label %1618, !llvm.loop !27

1682:                                             ; preds = %1618
  %1683 = load i32, ptr %41, align 4, !tbaa !9
  %1684 = icmp sgt i32 %1683, 1
  br i1 %1684, label %1685, label %1714

1685:                                             ; preds = %1682
  %1686 = load i32, ptr %41, align 4, !tbaa !9
  %1687 = sub nsw i32 %1686, 1
  store i32 %1687, ptr %44, align 4, !tbaa !9
  br label %1688

1688:                                             ; preds = %1702, %1685
  %1689 = load i32, ptr %41, align 4, !tbaa !9
  %1690 = icmp sge i32 %1689, 2
  br i1 %1690, label %1691, label %1700

1691:                                             ; preds = %1688
  %1692 = load ptr, ptr %5, align 8, !tbaa !5
  %1693 = load i32, ptr %41, align 4, !tbaa !9
  %1694 = shl i32 %1693, 2
  %1695 = sub nsw i32 %1694, 5
  %1696 = sext i32 %1695 to i64
  %1697 = getelementptr inbounds double, ptr %1692, i64 %1696
  %1698 = load double, ptr %1697, align 8, !tbaa !11
  %1699 = fcmp oge double %1698, 0.000000e+00
  br label %1700

1700:                                             ; preds = %1691, %1688
  %1701 = phi i1 [ false, %1688 ], [ %1699, %1691 ]
  br i1 %1701, label %1702, label %1705

1702:                                             ; preds = %1700
  %1703 = load i32, ptr %41, align 4, !tbaa !9
  %1704 = add nsw i32 %1703, -1
  store i32 %1704, ptr %41, align 4, !tbaa !9
  br label %1688, !llvm.loop !28

1705:                                             ; preds = %1700
  %1706 = load ptr, ptr %5, align 8, !tbaa !5
  %1707 = load i32, ptr %44, align 4, !tbaa !9
  %1708 = shl i32 %1707, 2
  %1709 = sub nsw i32 %1708, 1
  %1710 = sext i32 %1709 to i64
  %1711 = getelementptr inbounds double, ptr %1706, i64 %1710
  %1712 = load double, ptr %1711, align 8, !tbaa !11
  %1713 = fneg double %1712
  store double %1713, ptr %36, align 8, !tbaa !11
  br label %1598

1714:                                             ; preds = %1682
  %1715 = load ptr, ptr %4, align 8, !tbaa !5
  %1716 = load i32, ptr %1715, align 4, !tbaa !9
  store i32 %1716, ptr %8, align 4, !tbaa !9
  store i32 1, ptr %30, align 4, !tbaa !9
  br label %1717

1717:                                             ; preds = %1758, %1714
  %1718 = load i32, ptr %30, align 4, !tbaa !9
  %1719 = load i32, ptr %8, align 4, !tbaa !9
  %1720 = icmp sle i32 %1718, %1719
  br i1 %1720, label %1721, label %1761

1721:                                             ; preds = %1717
  %1722 = load ptr, ptr %5, align 8, !tbaa !5
  %1723 = load i32, ptr %30, align 4, !tbaa !9
  %1724 = shl i32 %1723, 2
  %1725 = sub nsw i32 %1724, 3
  %1726 = sext i32 %1725 to i64
  %1727 = getelementptr inbounds double, ptr %1722, i64 %1726
  %1728 = load double, ptr %1727, align 8, !tbaa !11
  %1729 = load ptr, ptr %5, align 8, !tbaa !5
  %1730 = load i32, ptr %30, align 4, !tbaa !9
  %1731 = shl i32 %1730, 1
  %1732 = sub nsw i32 %1731, 1
  %1733 = sext i32 %1732 to i64
  %1734 = getelementptr inbounds double, ptr %1729, i64 %1733
  store double %1728, ptr %1734, align 8, !tbaa !11
  %1735 = load i32, ptr %30, align 4, !tbaa !9
  %1736 = load i32, ptr %43, align 4, !tbaa !9
  %1737 = icmp slt i32 %1735, %1736
  br i1 %1737, label %1738, label %1751

1738:                                             ; preds = %1721
  %1739 = load ptr, ptr %5, align 8, !tbaa !5
  %1740 = load i32, ptr %30, align 4, !tbaa !9
  %1741 = shl i32 %1740, 2
  %1742 = sub nsw i32 %1741, 1
  %1743 = sext i32 %1742 to i64
  %1744 = getelementptr inbounds double, ptr %1739, i64 %1743
  %1745 = load double, ptr %1744, align 8, !tbaa !11
  %1746 = load ptr, ptr %5, align 8, !tbaa !5
  %1747 = load i32, ptr %30, align 4, !tbaa !9
  %1748 = mul nsw i32 %1747, 2
  %1749 = sext i32 %1748 to i64
  %1750 = getelementptr inbounds double, ptr %1746, i64 %1749
  store double %1745, ptr %1750, align 8, !tbaa !11
  br label %1757

1751:                                             ; preds = %1721
  %1752 = load ptr, ptr %5, align 8, !tbaa !5
  %1753 = load i32, ptr %30, align 4, !tbaa !9
  %1754 = mul nsw i32 %1753, 2
  %1755 = sext i32 %1754 to i64
  %1756 = getelementptr inbounds double, ptr %1752, i64 %1755
  store double 0.000000e+00, ptr %1756, align 8, !tbaa !11
  br label %1757

1757:                                             ; preds = %1751, %1738
  br label %1758

1758:                                             ; preds = %1757
  %1759 = load i32, ptr %30, align 4, !tbaa !9
  %1760 = add nsw i32 %1759, 1
  store i32 %1760, ptr %30, align 4, !tbaa !9
  br label %1717, !llvm.loop !29

1761:                                             ; preds = %1717
  store i32 1, ptr %61, align 4
  br label %1865

1762:                                             ; preds = %1405
  br label %1763

1763:                                             ; preds = %1762
  %1764 = load i32, ptr %49, align 4, !tbaa !9
  %1765 = add nsw i32 %1764, 1
  store i32 %1765, ptr %49, align 4, !tbaa !9
  br label %1013, !llvm.loop !30

1766:                                             ; preds = %1013
  %1767 = load ptr, ptr %6, align 8, !tbaa !5
  store i32 3, ptr %1767, align 4, !tbaa !9
  store i32 1, ptr %61, align 4
  br label %1865

1768:                                             ; preds = %1020
  %1769 = load ptr, ptr %4, align 8, !tbaa !5
  %1770 = load i32, ptr %1769, align 4, !tbaa !9
  store i32 %1770, ptr %7, align 4, !tbaa !9
  store i32 2, ptr %30, align 4, !tbaa !9
  br label %1771

1771:                                             ; preds = %1787, %1768
  %1772 = load i32, ptr %30, align 4, !tbaa !9
  %1773 = load i32, ptr %7, align 4, !tbaa !9
  %1774 = icmp sle i32 %1772, %1773
  br i1 %1774, label %1775, label %1790

1775:                                             ; preds = %1771
  %1776 = load ptr, ptr %5, align 8, !tbaa !5
  %1777 = load i32, ptr %30, align 4, !tbaa !9
  %1778 = shl i32 %1777, 2
  %1779 = sub nsw i32 %1778, 3
  %1780 = sext i32 %1779 to i64
  %1781 = getelementptr inbounds double, ptr %1776, i64 %1780
  %1782 = load double, ptr %1781, align 8, !tbaa !11
  %1783 = load ptr, ptr %5, align 8, !tbaa !5
  %1784 = load i32, ptr %30, align 4, !tbaa !9
  %1785 = sext i32 %1784 to i64
  %1786 = getelementptr inbounds double, ptr %1783, i64 %1785
  store double %1782, ptr %1786, align 8, !tbaa !11
  br label %1787

1787:                                             ; preds = %1775
  %1788 = load i32, ptr %30, align 4, !tbaa !9
  %1789 = add nsw i32 %1788, 1
  store i32 %1789, ptr %30, align 4, !tbaa !9
  br label %1771, !llvm.loop !31

1790:                                             ; preds = %1771
  %1791 = load ptr, ptr %4, align 8, !tbaa !5
  %1792 = load ptr, ptr %5, align 8, !tbaa !5
  %1793 = getelementptr inbounds double, ptr %1792, i64 1
  call void @dlasrt_(ptr noundef @.str.3, ptr noundef %1791, ptr noundef %1793, ptr noundef %37)
  store double 0.000000e+00, ptr %28, align 8, !tbaa !11
  %1794 = load ptr, ptr %4, align 8, !tbaa !5
  %1795 = load i32, ptr %1794, align 4, !tbaa !9
  store i32 %1795, ptr %30, align 4, !tbaa !9
  br label %1796

1796:                                             ; preds = %1807, %1790
  %1797 = load i32, ptr %30, align 4, !tbaa !9
  %1798 = icmp sge i32 %1797, 1
  br i1 %1798, label %1799, label %1810

1799:                                             ; preds = %1796
  %1800 = load ptr, ptr %5, align 8, !tbaa !5
  %1801 = load i32, ptr %30, align 4, !tbaa !9
  %1802 = sext i32 %1801 to i64
  %1803 = getelementptr inbounds double, ptr %1800, i64 %1802
  %1804 = load double, ptr %1803, align 8, !tbaa !11
  %1805 = load double, ptr %28, align 8, !tbaa !11
  %1806 = fadd double %1805, %1804
  store double %1806, ptr %28, align 8, !tbaa !11
  br label %1807

1807:                                             ; preds = %1799
  %1808 = load i32, ptr %30, align 4, !tbaa !9
  %1809 = add nsw i32 %1808, -1
  store i32 %1809, ptr %30, align 4, !tbaa !9
  br label %1796, !llvm.loop !32

1810:                                             ; preds = %1796
  %1811 = load double, ptr %35, align 8, !tbaa !11
  %1812 = load ptr, ptr %5, align 8, !tbaa !5
  %1813 = load ptr, ptr %4, align 8, !tbaa !5
  %1814 = load i32, ptr %1813, align 4, !tbaa !9
  %1815 = shl i32 %1814, 1
  %1816 = add nsw i32 %1815, 1
  %1817 = sext i32 %1816 to i64
  %1818 = getelementptr inbounds double, ptr %1812, i64 %1817
  store double %1811, ptr %1818, align 8, !tbaa !11
  %1819 = load double, ptr %28, align 8, !tbaa !11
  %1820 = load ptr, ptr %5, align 8, !tbaa !5
  %1821 = load ptr, ptr %4, align 8, !tbaa !5
  %1822 = load i32, ptr %1821, align 4, !tbaa !9
  %1823 = shl i32 %1822, 1
  %1824 = add nsw i32 %1823, 2
  %1825 = sext i32 %1824 to i64
  %1826 = getelementptr inbounds double, ptr %1820, i64 %1825
  store double %1819, ptr %1826, align 8, !tbaa !11
  %1827 = load i32, ptr %19, align 4, !tbaa !9
  %1828 = sitofp i32 %1827 to double
  %1829 = load ptr, ptr %5, align 8, !tbaa !5
  %1830 = load ptr, ptr %4, align 8, !tbaa !5
  %1831 = load i32, ptr %1830, align 4, !tbaa !9
  %1832 = shl i32 %1831, 1
  %1833 = add nsw i32 %1832, 3
  %1834 = sext i32 %1833 to i64
  %1835 = getelementptr inbounds double, ptr %1829, i64 %1834
  store double %1828, ptr %1835, align 8, !tbaa !11
  %1836 = load ptr, ptr %4, align 8, !tbaa !5
  %1837 = load i32, ptr %1836, align 4, !tbaa !9
  store i32 %1837, ptr %7, align 4, !tbaa !9
  %1838 = load i32, ptr %18, align 4, !tbaa !9
  %1839 = sitofp i32 %1838 to double
  %1840 = load i32, ptr %7, align 4, !tbaa !9
  %1841 = load i32, ptr %7, align 4, !tbaa !9
  %1842 = mul nsw i32 %1840, %1841
  %1843 = sitofp i32 %1842 to double
  %1844 = fdiv double %1839, %1843
  %1845 = load ptr, ptr %5, align 8, !tbaa !5
  %1846 = load ptr, ptr %4, align 8, !tbaa !5
  %1847 = load i32, ptr %1846, align 4, !tbaa !9
  %1848 = shl i32 %1847, 1
  %1849 = add nsw i32 %1848, 4
  %1850 = sext i32 %1849 to i64
  %1851 = getelementptr inbounds double, ptr %1845, i64 %1850
  store double %1844, ptr %1851, align 8, !tbaa !11
  %1852 = load i32, ptr %33, align 4, !tbaa !9
  %1853 = sitofp i32 %1852 to double
  %1854 = fmul double %1853, 1.000000e+02
  %1855 = load i32, ptr %19, align 4, !tbaa !9
  %1856 = sitofp i32 %1855 to double
  %1857 = fdiv double %1854, %1856
  %1858 = load ptr, ptr %5, align 8, !tbaa !5
  %1859 = load ptr, ptr %4, align 8, !tbaa !5
  %1860 = load i32, ptr %1859, align 4, !tbaa !9
  %1861 = shl i32 %1860, 1
  %1862 = add nsw i32 %1861, 5
  %1863 = sext i32 %1862 to i64
  %1864 = getelementptr inbounds double, ptr %1858, i64 %1863
  store double %1857, ptr %1864, align 8, !tbaa !11
  store i32 1, ptr %61, align 4
  br label %1865

1865:                                             ; preds = %1810, %1766, %1761, %1039, %488, %470, %400, %309, %295, %252, %122, %114, %106, %96, %83, %76
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #5
  ret void
}

; 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, i32 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 void @dlasrt_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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


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

; Function Attrs: nounwind uwtable
define dso_local void @dlasq2_(ptr noundef %0, ptr noundef %1, ptr nocapture noundef writeonly %2) local_unnamed_addr #0 {
  %4 = alloca i32, align 4
  %5 = alloca double, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca i32, align 4
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca double, align 8
  %20 = alloca i32, align 4
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #5
  call void @llvm.lifetime.start.p0(i64 4, 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 4, 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 4, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.start.p0(i64 4, 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 i32 0, ptr %2, align 4, !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 i32, ptr %0, align 4, !tbaa !5
  %30 = icmp slt i32 %29, 0
  br i1 %30, label %31, label %33

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

33:                                               ; preds = %3
  switch i32 %29, label %.lr.ph.preheader [
    i32 0, label %.loopexit
    i32 1, label %34
    i32 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 %.loopexit

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

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

42:                                               ; preds = %39
  store i32 -201, ptr %2, align 4, !tbaa !5
  %43 = tail call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull @c__2, i32 noundef 6) #5
  br label %.loopexit

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

48:                                               ; preds = %44
  store i32 -202, ptr %2, align 4, !tbaa !5
  %49 = tail call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull @c__2, i32 noundef 6) #5
  br label %.loopexit

50:                                               ; preds = %44
  %51 = getelementptr inbounds i8, ptr %1, i64 16
  %52 = load double, ptr %51, align 8, !tbaa !9
  %53 = fcmp olt double %52, 0.000000e+00
  br i1 %53, label %54, label %56

54:                                               ; preds = %50
  store i32 -203, ptr %2, align 4, !tbaa !5
  %55 = tail call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull @c__2, i32 noundef 6) #5
  br label %.loopexit

56:                                               ; preds = %50
  %57 = fcmp ogt double %52, %40
  br i1 %57, label %58, label %59

58:                                               ; preds = %56
  store double %40, ptr %51, align 8, !tbaa !9
  store double %52, ptr %1, align 8, !tbaa !9
  br label %59

59:                                               ; preds = %56, %58
  %60 = phi double [ %52, %56 ], [ %40, %58 ]
  %61 = phi double [ %40, %56 ], [ %52, %58 ]
  %62 = fadd double %46, %61
  %63 = fadd double %62, %60
  %64 = getelementptr inbounds i8, ptr %1, i64 32
  store double %63, ptr %64, align 8, !tbaa !9
  %65 = fmul double %28, %60
  %66 = fcmp ogt double %46, %65
  br i1 %66, label %67, label %93

67:                                               ; preds = %59
  %68 = fsub double %61, %60
  %69 = fadd double %46, %68
  %70 = fmul double %69, 5.000000e-01
  %71 = fdiv double %46, %70
  %72 = fmul double %60, %71
  %73 = fcmp ugt double %72, %70
  br i1 %73, label %80, label %74

74:                                               ; preds = %67
  %75 = fdiv double %72, %70
  %76 = fadd double %75, 1.000000e+00
  %77 = tail call double @sqrt(double noundef %76) #5
  %78 = fadd double %77, 1.000000e+00
  %79 = fmul double %70, %78
  br label %85

80:                                               ; preds = %67
  %81 = tail call double @sqrt(double noundef %70) #5
  %82 = fadd double %70, %72
  %83 = tail call double @sqrt(double noundef %82) #5
  %84 = tail call double @llvm.fmuladd.f64(double %81, double %83, double %70)
  br label %85

85:                                               ; preds = %80, %74
  %.pn607 = phi double [ %79, %74 ], [ %84, %80 ]
  %.pn = fdiv double %46, %.pn607
  %.0549 = fmul double %60, %.pn
  %86 = load double, ptr %1, align 8, !tbaa !9
  %87 = load double, ptr %45, align 8, !tbaa !9
  %88 = fadd double %.0549, %87
  %89 = fadd double %86, %88
  %90 = fdiv double %86, %89
  %91 = load double, ptr %51, align 8, !tbaa !9
  %92 = fmul double %91, %90
  store double %92, ptr %51, align 8, !tbaa !9
  store double %89, ptr %1, align 8, !tbaa !9
  br label %93

93:                                               ; preds = %85, %59
  %94 = phi double [ %89, %85 ], [ %61, %59 ]
  %95 = phi double [ %92, %85 ], [ %60, %59 ]
  store double %95, ptr %45, align 8, !tbaa !9
  %96 = fadd double %95, %94
  %97 = getelementptr inbounds i8, ptr %1, i64 40
  store double %96, ptr %97, align 8, !tbaa !9
  br label %.loopexit

.lr.ph.preheader:                                 ; preds = %33
  %98 = shl nuw nsw i32 %29, 1
  %99 = zext nneg i32 %98 to i64
  %100 = getelementptr double, ptr %24, i64 %99
  store double 0.000000e+00, ptr %100, align 8, !tbaa !9
  %101 = add nsw i32 %98, -2
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %118
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next, %118 ]
  %.0558624 = phi double [ 0.000000e+00, %.lr.ph.preheader ], [ %120, %118 ]
  %.0560623 = phi double [ 0.000000e+00, %.lr.ph.preheader ], [ %119, %118 ]
  %102 = phi double [ 0.000000e+00, %.lr.ph.preheader ], [ %122, %118 ]
  %103 = getelementptr inbounds double, ptr %24, i64 %indvars.iv
  %104 = load double, ptr %103, align 8, !tbaa !9
  %105 = fcmp olt double %104, 0.000000e+00
  br i1 %105, label %106, label %110

106:                                              ; preds = %.lr.ph
  %107 = trunc nuw nsw i64 %indvars.iv to i32
  %108 = sub nuw nsw i32 -200, %107
  store i32 %108, ptr %2, align 4, !tbaa !5
  %109 = tail call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull @c__2, i32 noundef 6) #5
  br label %.loopexit

110:                                              ; preds = %.lr.ph
  %111 = getelementptr inbounds i8, ptr %103, i64 8
  %112 = load double, ptr %111, align 8, !tbaa !9
  %113 = fcmp olt double %112, 0.000000e+00
  br i1 %113, label %114, label %118

114:                                              ; preds = %110
  %115 = trunc nuw nsw i64 %indvars.iv to i32
  %116 = sub nuw nsw i32 -201, %115
  store i32 %116, ptr %2, align 4, !tbaa !5
  %117 = tail call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull @c__2, i32 noundef 6) #5
  br label %.loopexit

118:                                              ; preds = %110
  %119 = fadd double %.0560623, %104
  %120 = fadd double %.0558624, %112
  %121 = fcmp oge double %102, %104
  %122 = select i1 %121, double %102, double %104
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 2
  %123 = trunc nuw i64 %indvars.iv.next to i32
  %.not = icmp slt i32 %101, %123
  br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !11

._crit_edge:                                      ; preds = %118
  %124 = getelementptr i8, ptr %100, i64 -8
  %125 = load double, ptr %124, align 8, !tbaa !9
  %126 = fcmp olt double %125, 0.000000e+00
  br i1 %126, label %127, label %130

127:                                              ; preds = %._crit_edge
  %128 = sub nuw nsw i32 -199, %98
  store i32 %128, ptr %2, align 4, !tbaa !5
  %129 = tail call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull @c__2, i32 noundef 6) #5
  br label %.loopexit

130:                                              ; preds = %._crit_edge
  %131 = fadd double %119, %125
  %132 = fcmp oge double %122, %125
  %133 = select i1 %132, double %122, double %125
  store double %133, ptr %8, align 8, !tbaa !9
  %134 = fcmp oeq double %120, 0.000000e+00
  br i1 %134, label %.preheader, label %165

.preheader:                                       ; preds = %130
  %invariant.gep756 = getelementptr i8, ptr %1, i64 -16
  %.not606758 = icmp slt i32 %29, 2
  br i1 %.not606758, label %._crit_edge761, label %.lr.ph760.preheader

.lr.ph760.preheader:                              ; preds = %.preheader
  %135 = add nuw i32 %29, 1
  %wide.trip.count821 = zext i32 %135 to i64
  %136 = add nsw i64 %wide.trip.count821, -2
  %137 = add nsw i64 %wide.trip.count821, -3
  %xtraiter899 = and i64 %136, 3
  %138 = icmp ult i64 %137, 3
  br i1 %138, label %._crit_edge761.loopexit.unr-lcssa, label %.lr.ph760.preheader.new

.lr.ph760.preheader.new:                          ; preds = %.lr.ph760.preheader
  %unroll_iter902 = and i64 %136, -4
  br label %.lr.ph760

.lr.ph760:                                        ; preds = %.lr.ph760, %.lr.ph760.preheader.new
  %indvars.iv818 = phi i64 [ 2, %.lr.ph760.preheader.new ], [ %indvars.iv.next819.3, %.lr.ph760 ]
  %niter903 = phi i64 [ 0, %.lr.ph760.preheader.new ], [ %niter903.next.3, %.lr.ph760 ]
  %indvars.iv818.tr = trunc i64 %indvars.iv818 to i32
  %139 = shl i32 %indvars.iv818.tr, 1
  %140 = sext i32 %139 to i64
  %gep757 = getelementptr double, ptr %invariant.gep756, i64 %140
  %141 = load double, ptr %gep757, align 8, !tbaa !9
  %142 = getelementptr inbounds double, ptr %24, i64 %indvars.iv818
  store double %141, ptr %142, align 8, !tbaa !9
  %143 = trunc i64 %indvars.iv818 to i32
  %indvars.iv818.tr.1 = shl i32 %143, 1
  %144 = or disjoint i32 %indvars.iv818.tr.1, 2
  %145 = sext i32 %144 to i64
  %gep757.1 = getelementptr double, ptr %invariant.gep756, i64 %145
  %146 = load double, ptr %gep757.1, align 8, !tbaa !9
  %147 = getelementptr double, ptr %1, i64 %indvars.iv818
  store double %146, ptr %147, align 8, !tbaa !9
  %indvars.iv.next819.1 = add nuw nsw i64 %indvars.iv818, 2
  %indvars.iv818.tr.2 = trunc i64 %indvars.iv.next819.1 to i32
  %148 = shl i32 %indvars.iv818.tr.2, 1
  %149 = sext i32 %148 to i64
  %gep757.2 = getelementptr double, ptr %invariant.gep756, i64 %149
  %150 = load double, ptr %gep757.2, align 8, !tbaa !9
  %151 = getelementptr inbounds double, ptr %24, i64 %indvars.iv.next819.1
  store double %150, ptr %151, align 8, !tbaa !9
  %indvars.iv.next819.2 = add nuw nsw i64 %indvars.iv818, 3
  %indvars.iv818.tr.3 = trunc i64 %indvars.iv.next819.2 to i32
  %152 = shl i32 %indvars.iv818.tr.3, 1
  %153 = sext i32 %152 to i64
  %gep757.3 = getelementptr double, ptr %invariant.gep756, i64 %153
  %154 = load double, ptr %gep757.3, align 8, !tbaa !9
  %155 = getelementptr inbounds double, ptr %24, i64 %indvars.iv.next819.2
  store double %154, ptr %155, align 8, !tbaa !9
  %indvars.iv.next819.3 = add nuw nsw i64 %indvars.iv818, 4
  %niter903.next.3 = add i64 %niter903, 4
  %niter903.ncmp.3 = icmp eq i64 %niter903.next.3, %unroll_iter902
  br i1 %niter903.ncmp.3, label %._crit_edge761.loopexit.unr-lcssa, label %.lr.ph760, !llvm.loop !13

._crit_edge761.loopexit.unr-lcssa:                ; preds = %.lr.ph760, %.lr.ph760.preheader
  %indvars.iv818.unr = phi i64 [ 2, %.lr.ph760.preheader ], [ %indvars.iv.next819.3, %.lr.ph760 ]
  %lcmp.mod901.not = icmp eq i64 %xtraiter899, 0
  br i1 %lcmp.mod901.not, label %._crit_edge761, label %.lr.ph760.epil

.lr.ph760.epil:                                   ; preds = %._crit_edge761.loopexit.unr-lcssa, %.lr.ph760.epil
  %indvars.iv818.epil = phi i64 [ %indvars.iv.next819.epil, %.lr.ph760.epil ], [ %indvars.iv818.unr, %._crit_edge761.loopexit.unr-lcssa ]
  %epil.iter900 = phi i64 [ %epil.iter900.next, %.lr.ph760.epil ], [ 0, %._crit_edge761.loopexit.unr-lcssa ]
  %indvars.iv818.tr.epil = trunc i64 %indvars.iv818.epil to i32
  %156 = shl i32 %indvars.iv818.tr.epil, 1
  %157 = sext i32 %156 to i64
  %gep757.epil = getelementptr double, ptr %invariant.gep756, i64 %157
  %158 = load double, ptr %gep757.epil, align 8, !tbaa !9
  %159 = getelementptr inbounds double, ptr %24, i64 %indvars.iv818.epil
  store double %158, ptr %159, align 8, !tbaa !9
  %indvars.iv.next819.epil = add nuw nsw i64 %indvars.iv818.epil, 1
  %epil.iter900.next = add i64 %epil.iter900, 1
  %epil.iter900.cmp.not = icmp eq i64 %epil.iter900.next, %xtraiter899
  br i1 %epil.iter900.cmp.not, label %._crit_edge761, label %.lr.ph760.epil, !llvm.loop !14

._crit_edge761:                                   ; preds = %._crit_edge761.loopexit.unr-lcssa, %.lr.ph760.epil, %.preheader
  call void @dlasrt_(ptr noundef nonnull @.str.3, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %15) #5
  %160 = load i32, ptr %0, align 4, !tbaa !5
  %161 = shl i32 %160, 1
  %162 = sext i32 %161 to i64
  %163 = getelementptr double, ptr %24, i64 %162
  %164 = getelementptr i8, ptr %163, i64 -8
  store double %131, ptr %164, align 8, !tbaa !9
  br label %.loopexit

165:                                              ; preds = %130
  %166 = fadd double %120, %131
  %167 = fcmp oeq double %166, 0.000000e+00
  br i1 %167, label %168, label %169

168:                                              ; preds = %165
  store double 0.000000e+00, ptr %124, align 8, !tbaa !9
  br label %.loopexit

169:                                              ; preds = %165
  %170 = tail call i32 @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, i32 noundef 6, i32 noundef 1) #5
  %171 = icmp eq i32 %170, 1
  br i1 %171, label %172, label %175

172:                                              ; preds = %169
  %173 = tail call i32 @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, i32 noundef 6, i32 noundef 1) #5
  %174 = icmp eq i32 %173, 1
  br label %175

175:                                              ; preds = %172, %169
  %176 = phi i1 [ false, %169 ], [ %174, %172 ]
  %177 = zext i1 %176 to i32
  store i32 %177, ptr %4, align 4, !tbaa !5
  %178 = load i32, ptr %0, align 4, !tbaa !5
  %179 = shl i32 %178, 1
  %180 = icmp sgt i32 %179, 1
  br i1 %180, label %.lr.ph630.preheader, label %._crit_edge631

.lr.ph630.preheader:                              ; preds = %175
  %181 = zext nneg i32 %179 to i64
  br label %.lr.ph630

.lr.ph630:                                        ; preds = %.lr.ph630.preheader, %.lr.ph630
  %indvars.iv770 = phi i64 [ %181, %.lr.ph630.preheader ], [ %indvars.iv.next771, %.lr.ph630 ]
  %.idx = shl i64 %indvars.iv770, 4
  %182 = getelementptr i8, ptr %24, i64 %.idx
  store double 0.000000e+00, ptr %182, align 8, !tbaa !9
  %183 = getelementptr inbounds double, ptr %24, i64 %indvars.iv770
  %184 = load double, ptr %183, align 8, !tbaa !9
  %185 = getelementptr i8, ptr %182, i64 -8
  store double %184, ptr %185, align 8, !tbaa !9
  %186 = getelementptr i8, ptr %182, i64 -16
  store double 0.000000e+00, ptr %186, align 8, !tbaa !9
  %187 = getelementptr i8, ptr %183, i64 -8
  %188 = load double, ptr %187, align 8, !tbaa !9
  %189 = getelementptr i8, ptr %182, i64 -24
  store double %188, ptr %189, align 8, !tbaa !9
  %indvars.iv.next771 = add nsw i64 %indvars.iv770, -2
  %190 = icmp ugt i64 %indvars.iv770, 3
  br i1 %190, label %.lr.ph630, label %._crit_edge631, !llvm.loop !16

._crit_edge631:                                   ; preds = %.lr.ph630, %175
  store i32 1, ptr %16, align 4, !tbaa !5
  store i32 %178, ptr %17, align 4, !tbaa !5
  %191 = load double, ptr %1, align 8, !tbaa !9
  %192 = fmul double %191, 1.500000e+00
  %193 = shl i32 %178, 2
  %194 = sext i32 %193 to i64
  %195 = getelementptr double, ptr %24, i64 %194
  %196 = getelementptr i8, ptr %195, i64 -24
  %197 = load double, ptr %196, align 8, !tbaa !9
  %198 = fcmp olt double %192, %197
  br i1 %198, label %199, label %.loopexit614

199:                                              ; preds = %._crit_edge631
  %200 = add i32 %193, 4
  %.not594632 = icmp slt i32 %179, 4
  br i1 %.not594632, label %.loopexit614, label %.lr.ph635.preheader

.lr.ph635.preheader:                              ; preds = %199
  %201 = zext nneg i32 %179 to i64
  br label %.lr.ph635

.lr.ph635:                                        ; preds = %.lr.ph635.preheader, %.lr.ph635
  %indvars.iv773 = phi i64 [ 4, %.lr.ph635.preheader ], [ %indvars.iv.next774, %.lr.ph635 ]
  %202 = getelementptr double, ptr %24, i64 %indvars.iv773
  %203 = getelementptr i8, ptr %202, i64 -24
  %204 = load double, ptr %203, align 8, !tbaa !9
  %205 = trunc nuw nsw i64 %indvars.iv773 to i32
  %206 = sub i32 %200, %205
  %207 = sext i32 %206 to i64
  %208 = getelementptr double, ptr %24, i64 %207
  %209 = getelementptr i8, ptr %208, i64 -24
  %210 = load double, ptr %209, align 8, !tbaa !9
  store double %210, ptr %203, align 8, !tbaa !9
  store double %204, ptr %209, align 8, !tbaa !9
  %211 = getelementptr i8, ptr %202, i64 -8
  %212 = load double, ptr %211, align 8, !tbaa !9
  %213 = getelementptr i8, ptr %208, i64 -40
  %214 = load double, ptr %213, align 8, !tbaa !9
  store double %214, ptr %211, align 8, !tbaa !9
  store double %212, ptr %213, align 8, !tbaa !9
  %indvars.iv.next774 = add nuw nsw i64 %indvars.iv773, 4
  %.not594 = icmp ugt i64 %indvars.iv.next774, %201
  br i1 %.not594, label %.loopexit614.loopexit, label %.lr.ph635, !llvm.loop !17

.loopexit614.loopexit:                            ; preds = %.lr.ph635
  %invariant.gep.phi.trans.insert = getelementptr i8, ptr %1, i64 -32
  %gep.phi.trans.insert = getelementptr double, ptr %invariant.gep.phi.trans.insert, i64 %194
  %.pre = load double, ptr %gep.phi.trans.insert, align 8, !tbaa !9
  br label %.loopexit614

.loopexit614:                                     ; preds = %.loopexit614.loopexit, %199, %._crit_edge631
  %215 = phi double [ %.pre, %.loopexit614.loopexit ], [ %197, %199 ], [ %197, %._crit_edge631 ]
  store i32 0, ptr %20, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %1, i64 -32
  %216 = add i32 %193, -4
  %invariant.gep657 = getelementptr i8, ptr %1, i64 -24
  %.not603636 = icmp slt i32 %216, 4
  br i1 %.not603636, label %._crit_edge641.thread, label %.lr.ph640.preheader

._crit_edge641.thread:                            ; preds = %.loopexit614
  %217 = load double, ptr %1, align 8, !tbaa !9
  br label %._crit_edge655.thread

.lr.ph640.preheader:                              ; preds = %.loopexit614
  %218 = zext nneg i32 %216 to i64
  br label %.lr.ph640

.lr.ph640:                                        ; preds = %.lr.ph640.preheader, %233
  %indvars.iv776 = phi i64 [ %218, %.lr.ph640.preheader ], [ %indvars.iv.next777, %233 ]
  %.1561637 = phi double [ %215, %.lr.ph640.preheader ], [ %.2562, %233 ]
  %219 = getelementptr double, ptr %24, i64 %indvars.iv776
  %220 = getelementptr i8, ptr %219, i64 -8
  %221 = load double, ptr %220, align 8, !tbaa !9
  %222 = fmul double %28, %.1561637
  %223 = fcmp ugt double %221, %222
  br i1 %223, label %227, label %224

224:                                              ; preds = %.lr.ph640
  store double 0.000000e+00, ptr %220, align 8, !tbaa !9
  %225 = getelementptr i8, ptr %219, i64 -24
  %226 = load double, ptr %225, align 8, !tbaa !9
  br label %233

227:                                              ; preds = %.lr.ph640
  %228 = getelementptr i8, ptr %219, i64 -24
  %229 = load double, ptr %228, align 8, !tbaa !9
  %230 = fadd double %.1561637, %221
  %231 = fdiv double %.1561637, %230
  %232 = fmul double %231, %229
  br label %233

233:                                              ; preds = %224, %227
  %.2562 = phi double [ %226, %224 ], [ %232, %227 ]
  %indvars.iv.next777 = add nsw i64 %indvars.iv776, -4
  %.not603 = icmp slt i64 %indvars.iv776, 8
  br i1 %.not603, label %._crit_edge641, label %.lr.ph640, !llvm.loop !18

._crit_edge641:                                   ; preds = %233
  %234 = load double, ptr %1, align 8, !tbaa !9
  br i1 %.not603636, label %._crit_edge655.thread, label %.lr.ph647

.lr.ph647:                                        ; preds = %._crit_edge641
  %235 = zext nneg i32 %216 to i64
  br label %236

236:                                              ; preds = %.lr.ph647, %263
  %indvars.iv779 = phi i64 [ 4, %.lr.ph647 ], [ %indvars.iv.next780, %263 ]
  %.3563643 = phi double [ %234, %.lr.ph647 ], [ %.4564, %263 ]
  %237 = getelementptr double, ptr %24, i64 %indvars.iv779
  %238 = getelementptr i8, ptr %237, i64 -8
  %239 = load double, ptr %238, align 8, !tbaa !9
  %240 = fadd double %.3563643, %239
  %241 = getelementptr i8, ptr %237, i64 -16
  store double %240, ptr %241, align 8, !tbaa !9
  %242 = fmul double %28, %.3563643
  %243 = fcmp ugt double %239, %242
  br i1 %243, label %247, label %244

244:                                              ; preds = %236
  store double %.3563643, ptr %241, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %238, align 8, !tbaa !9
  %245 = getelementptr i8, ptr %237, i64 8
  %246 = load double, ptr %245, align 8, !tbaa !9
  br label %263

247:                                              ; preds = %236
  %248 = getelementptr i8, ptr %237, i64 8
  %249 = load double, ptr %248, align 8, !tbaa !9
  %250 = fmul double %26, %249
  %251 = fcmp olt double %250, %240
  %252 = fmul double %26, %240
  %253 = fcmp olt double %252, %249
  %or.cond = and i1 %253, %251
  br i1 %or.cond, label %254, label %258

254:                                              ; preds = %247
  %255 = fdiv double %249, %240
  %256 = fmul double %239, %255
  store double %256, ptr %237, align 8, !tbaa !9
  %257 = fmul double %.3563643, %255
  br label %263

258:                                              ; preds = %247
  %259 = fdiv double %239, %240
  %260 = fmul double %259, %249
  store double %260, ptr %237, align 8, !tbaa !9
  %261 = fdiv double %.3563643, %240
  %262 = fmul double %261, %249
  br label %263

263:                                              ; preds = %254, %258, %244
  %.4564 = phi double [ %246, %244 ], [ %257, %254 ], [ %262, %258 ]
  %indvars.iv.next780 = add nuw nsw i64 %indvars.iv779, 4
  %.not604 = icmp ugt i64 %indvars.iv.next780, %235
  br i1 %.not604, label %._crit_edge648, label %236, !llvm.loop !19

._crit_edge655.thread:                            ; preds = %._crit_edge641, %._crit_edge641.thread
  %.3563.lcssa.ph = phi double [ %217, %._crit_edge641.thread ], [ %234, %._crit_edge641 ]
  %gep658834 = getelementptr double, ptr %invariant.gep657, i64 %194
  store double %.3563.lcssa.ph, ptr %gep658834, align 8, !tbaa !9
  br label %._crit_edge641.1.thread

._crit_edge648:                                   ; preds = %263
  %gep658 = getelementptr double, ptr %invariant.gep657, i64 %194
  store double %.4564, ptr %gep658, align 8, !tbaa !9
  %264 = add i32 %193, -3
  br i1 %.not603636, label %._crit_edge641.1.thread, label %.lr.ph640.preheader.1

.lr.ph640.preheader.1:                            ; preds = %._crit_edge648
  %265 = or disjoint i32 %193, 1
  %266 = sext i32 %265 to i64
  %gep.1 = getelementptr double, ptr %invariant.gep, i64 %266
  %267 = load double, ptr %gep.1, align 8, !tbaa !9
  %268 = sext i32 %264 to i64
  br label %.lr.ph640.1

.lr.ph640.1:                                      ; preds = %283, %.lr.ph640.preheader.1
  %indvars.iv776.1 = phi i64 [ %268, %.lr.ph640.preheader.1 ], [ %indvars.iv.next777.1, %283 ]
  %.1561637.1 = phi double [ %267, %.lr.ph640.preheader.1 ], [ %.2562.1, %283 ]
  %269 = getelementptr double, ptr %24, i64 %indvars.iv776.1
  %270 = getelementptr i8, ptr %269, i64 -8
  %271 = load double, ptr %270, align 8, !tbaa !9
  %272 = fmul double %28, %.1561637.1
  %273 = fcmp ugt double %271, %272
  br i1 %273, label %277, label %274

274:                                              ; preds = %.lr.ph640.1
  store double 0.000000e+00, ptr %270, align 8, !tbaa !9
  %275 = getelementptr i8, ptr %269, i64 -24
  %276 = load double, ptr %275, align 8, !tbaa !9
  br label %283

277:                                              ; preds = %.lr.ph640.1
  %278 = getelementptr i8, ptr %269, i64 -24
  %279 = load double, ptr %278, align 8, !tbaa !9
  %280 = fadd double %.1561637.1, %271
  %281 = fdiv double %.1561637.1, %280
  %282 = fmul double %281, %279
  br label %283

283:                                              ; preds = %277, %274
  %.2562.1 = phi double [ %276, %274 ], [ %282, %277 ]
  %indvars.iv.next777.1 = add nsw i64 %indvars.iv776.1, -4
  %.not603.1 = icmp slt i64 %indvars.iv776.1, 9
  br i1 %.not603.1, label %._crit_edge641.1, label %.lr.ph640.1, !llvm.loop !18

._crit_edge641.1.thread:                          ; preds = %._crit_edge655.thread, %._crit_edge648
  %284 = getelementptr i8, ptr %1, i64 8
  %285 = load double, ptr %284, align 8, !tbaa !9
  br label %._crit_edge648.1.thread

._crit_edge641.1:                                 ; preds = %283
  %286 = getelementptr i8, ptr %1, i64 8
  %287 = load double, ptr %286, align 8, !tbaa !9
  br i1 %.not603636, label %._crit_edge648.1.thread, label %.lr.ph647.1

.lr.ph647.1:                                      ; preds = %._crit_edge641.1
  %288 = sext i32 %264 to i64
  br label %289

289:                                              ; preds = %318, %.lr.ph647.1
  %indvars.iv779.1 = phi i64 [ 5, %.lr.ph647.1 ], [ %indvars.iv.next780.1, %318 ]
  %.3563643.1 = phi double [ %287, %.lr.ph647.1 ], [ %.4564.1, %318 ]
  %290 = getelementptr double, ptr %24, i64 %indvars.iv779.1
  %291 = getelementptr i8, ptr %290, i64 -8
  %292 = load double, ptr %291, align 8, !tbaa !9
  %293 = fadd double %.3563643.1, %292
  %294 = getelementptr double, ptr %24, i64 %indvars.iv779.1
  %295 = getelementptr i8, ptr %294, i64 -16
  %296 = getelementptr i8, ptr %294, i64 -32
  store double %293, ptr %296, align 8, !tbaa !9
  %297 = fmul double %28, %.3563643.1
  %298 = fcmp ugt double %292, %297
  br i1 %298, label %302, label %299

299:                                              ; preds = %289
  store double %.3563643.1, ptr %296, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %295, align 8, !tbaa !9
  %300 = getelementptr i8, ptr %290, i64 8
  %301 = load double, ptr %300, align 8, !tbaa !9
  br label %318

302:                                              ; preds = %289
  %303 = getelementptr i8, ptr %290, i64 8
  %304 = load double, ptr %303, align 8, !tbaa !9
  %305 = fmul double %26, %304
  %306 = fcmp olt double %305, %293
  %307 = fmul double %26, %293
  %308 = fcmp olt double %307, %304
  %or.cond.1 = and i1 %308, %306
  br i1 %or.cond.1, label %314, label %309

309:                                              ; preds = %302
  %310 = fdiv double %292, %293
  %311 = fmul double %310, %304
  store double %311, ptr %295, align 8, !tbaa !9
  %312 = fdiv double %.3563643.1, %293
  %313 = fmul double %312, %304
  br label %318

314:                                              ; preds = %302
  %315 = fdiv double %304, %293
  %316 = fmul double %292, %315
  store double %316, ptr %295, align 8, !tbaa !9
  %317 = fmul double %.3563643.1, %315
  br label %318

318:                                              ; preds = %314, %309, %299
  %.4564.1 = phi double [ %301, %299 ], [ %317, %314 ], [ %313, %309 ]
  %indvars.iv.next780.1 = add nuw nsw i64 %indvars.iv779.1, 4
  %.not604.1 = icmp sgt i64 %indvars.iv.next780.1, %288
  br i1 %.not604.1, label %._crit_edge648.1, label %289, !llvm.loop !19

._crit_edge648.1.thread:                          ; preds = %._crit_edge641.1.thread, %._crit_edge641.1
  %.3563.lcssa.1.ph = phi double [ %285, %._crit_edge641.1.thread ], [ %287, %._crit_edge641.1 ]
  %319 = sext i32 %193 to i64
  %320 = getelementptr double, ptr %invariant.gep657, i64 %319
  %gep658.1837 = getelementptr i8, ptr %320, i64 -8
  store double %.3563.lcssa.1.ph, ptr %gep658.1837, align 8, !tbaa !9
  %321 = load double, ptr %1, align 8, !tbaa !9
  br label %._crit_edge655.1

._crit_edge648.1:                                 ; preds = %318
  %322 = sext i32 %193 to i64
  %323 = getelementptr double, ptr %invariant.gep657, i64 %322
  %gep658.1 = getelementptr i8, ptr %323, i64 -8
  store double %.4564.1, ptr %gep658.1, align 8, !tbaa !9
  %324 = load double, ptr %1, align 8, !tbaa !9
  %.not605651.1 = icmp slt i32 %193, 8
  br i1 %.not605651.1, label %._crit_edge655.1, label %.lr.ph654.preheader.1

.lr.ph654.preheader.1:                            ; preds = %._crit_edge648.1
  %325 = add nsw i32 %193, -3
  %326 = zext nneg i32 %325 to i64
  br label %.lr.ph654.1

.lr.ph654.1:                                      ; preds = %.lr.ph654.1, %.lr.ph654.preheader.1
  %indvars.iv782.1 = phi i64 [ 5, %.lr.ph654.preheader.1 ], [ %indvars.iv.next783.1, %.lr.ph654.1 ]
  %327 = phi double [ %324, %.lr.ph654.preheader.1 ], [ %331, %.lr.ph654.1 ]
  %328 = getelementptr inbounds double, ptr %24, i64 %indvars.iv782.1
  %329 = load double, ptr %328, align 8, !tbaa !9
  %330 = fcmp oge double %327, %329
  %331 = select i1 %330, double %327, double %329
  %indvars.iv.next783.1 = add nuw nsw i64 %indvars.iv782.1, 4
  %.not605.1 = icmp ugt i64 %indvars.iv.next783.1, %326
  br i1 %.not605.1, label %._crit_edge655.1, label %.lr.ph654.1, !llvm.loop !20

._crit_edge655.1:                                 ; preds = %.lr.ph654.1, %._crit_edge648.1.thread, %._crit_edge648.1
  %.lcssa656665.1 = phi double [ %324, %._crit_edge648.1 ], [ %321, %._crit_edge648.1.thread ], [ %331, %.lr.ph654.1 ]
  store i32 0, ptr %20, align 4, !tbaa !5
  store double %.lcssa656665.1, ptr %8, align 8, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !5
  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 %19, align 8, !tbaa !9
  store double 0.000000e+00, ptr %21, align 8, !tbaa !9
  store double 0.000000e+00, ptr %22, align 8, !tbaa !9
  store double 0.000000e+00, ptr %11, align 8, !tbaa !9
  store double 0.000000e+00, ptr %23, align 8, !tbaa !9
  store i32 2, ptr %7, align 4, !tbaa !5
  store i32 0, ptr %12, align 4, !tbaa !5
  %332 = add i32 %179, -2
  store i32 %332, ptr %6, align 4, !tbaa !5
  %invariant.gep714 = getelementptr i8, ptr %1, i64 -16
  %invariant.gep716 = getelementptr i8, ptr %1, i64 -48
  %.not595722 = icmp slt i32 %178, 0
  br i1 %.not595722, label %._crit_edge726, label %.lr.ph725.preheader

.lr.ph725.preheader:                              ; preds = %._crit_edge655.1
  %333 = add nuw i32 %178, 1
  br label %.lr.ph725

.lr.ph725:                                        ; preds = %.lr.ph725.preheader, %610
  %334 = phi i32 [ %442, %610 ], [ %178, %.lr.ph725.preheader ]
  %.0535723 = phi i32 [ %611, %610 ], [ 1, %.lr.ph725.preheader ]
  %335 = icmp slt i32 %334, 1
  br i1 %335, label %612, label %336

336:                                              ; preds = %.lr.ph725
  store double 0.000000e+00, ptr %13, align 8, !tbaa !9
  %337 = load i32, ptr %0, align 4, !tbaa !5
  %338 = icmp eq i32 %334, %337
  br i1 %338, label %.thread, label %339

.thread:                                          ; preds = %336
  store double 0.000000e+00, ptr %14, align 8, !tbaa !9
  br label %._crit_edge826

339:                                              ; preds = %336
  %340 = shl i32 %334, 2
  %341 = sext i32 %340 to i64
  %gep715 = getelementptr double, ptr %invariant.gep714, i64 %341
  %342 = load double, ptr %gep715, align 8, !tbaa !9
  %343 = fneg double %342
  store double %343, ptr %14, align 8, !tbaa !9
  %344 = fcmp ogt double %342, 0.000000e+00
  br i1 %344, label %345, label %._crit_edge826

345:                                              ; preds = %339
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %.loopexit

._crit_edge826:                                   ; preds = %339, %.thread
  %.pre-phi828 = shl i32 %334, 2
  %.pre-phi830 = sext i32 %.pre-phi828 to i64
  %gep719 = getelementptr double, ptr %invariant.gep, i64 %.pre-phi830
  %346 = load double, ptr %gep719, align 8, !tbaa !9
  store double %346, ptr %8, align 8, !tbaa !9
  %347 = icmp sgt i32 %.pre-phi828, 7
  br i1 %347, label %.lr.ph673.preheader, label %._crit_edge674

.lr.ph673.preheader:                              ; preds = %._crit_edge826
  %348 = zext nneg i32 %.pre-phi828 to i64
  br label %.lr.ph673

.lr.ph673:                                        ; preds = %.lr.ph673.preheader, %364
  %indvars.iv785 = phi i64 [ %348, %.lr.ph673.preheader ], [ %indvars.iv.next786, %364 ]
  %.0568669 = phi double [ %346, %.lr.ph673.preheader ], [ %.1569, %364 ]
  %.0572668 = phi double [ 0.000000e+00, %.lr.ph673.preheader ], [ %.1573, %364 ]
  %349 = phi double [ %346, %.lr.ph673.preheader ], [ %369, %364 ]
  %350 = getelementptr double, ptr %24, i64 %indvars.iv785
  %351 = getelementptr i8, ptr %350, i64 -40
  %352 = load double, ptr %351, align 8, !tbaa !9
  %353 = fcmp ugt double %352, 0.000000e+00
  br i1 %353, label %354, label %._crit_edge674.loopexit.split.loop.exit854

354:                                              ; preds = %.lr.ph673
  %355 = fmul double %.0572668, 4.000000e+00
  %356 = fcmp ult double %.0568669, %355
  br i1 %356, label %364, label %357

357:                                              ; preds = %354
  %358 = getelementptr i8, ptr %350, i64 -24
  %359 = load double, ptr %358, align 8, !tbaa !9
  %360 = fcmp ole double %.0568669, %359
  %361 = select i1 %360, double %.0568669, double %359
  %362 = fcmp oge double %.0572668, %352
  %363 = select i1 %362, double %.0572668, double %352
  br label %364

364:                                              ; preds = %357, %354
  %.1573 = phi double [ %363, %357 ], [ %.0572668, %354 ]
  %.1569 = phi double [ %361, %357 ], [ %.0568669, %354 ]
  %365 = getelementptr i8, ptr %350, i64 -56
  %366 = load double, ptr %365, align 8, !tbaa !9
  %367 = fadd double %352, %366
  %368 = fcmp oge double %349, %367
  %369 = select i1 %368, double %349, double %367
  store double %369, ptr %8, align 8, !tbaa !9
  %indvars.iv.next786 = add nsw i64 %indvars.iv785, -4
  %370 = icmp sgt i64 %indvars.iv785, 11
  br i1 %370, label %.lr.ph673, label %._crit_edge674, !llvm.loop !21

._crit_edge674.loopexit.split.loop.exit854:       ; preds = %.lr.ph673
  %371 = trunc nuw nsw i64 %indvars.iv785 to i32
  br label %._crit_edge674

._crit_edge674:                                   ; preds = %364, %._crit_edge674.loopexit.split.loop.exit854, %._crit_edge826
  %.0572.lcssa = phi double [ 0.000000e+00, %._crit_edge826 ], [ %.0572668, %._crit_edge674.loopexit.split.loop.exit854 ], [ %.1573, %364 ]
  %.0568.lcssa = phi double [ %346, %._crit_edge826 ], [ %.0568669, %._crit_edge674.loopexit.split.loop.exit854 ], [ %.1569, %364 ]
  %.5 = phi i32 [ 4, %._crit_edge826 ], [ %371, %._crit_edge674.loopexit.split.loop.exit854 ], [ 4, %364 ]
  %372 = lshr i32 %.5, 2
  store i32 %372, ptr %16, align 4, !tbaa !5
  store i32 0, ptr %20, align 4, !tbaa !5
  %373 = sub nsw i32 %334, %372
  %374 = icmp sgt i32 %373, 1
  br i1 %374, label %375, label %.loopexit613

375:                                              ; preds = %._crit_edge674
  %376 = and i32 %.5, 2147483644
  %377 = zext nneg i32 %376 to i64
  %gep721 = getelementptr double, ptr %invariant.gep, i64 %377
  %378 = load double, ptr %gep721, align 8, !tbaa !9
  %379 = add nsw i32 %.pre-phi828, -3
  %.not596682.not = icmp slt i32 %376, %379
  br i1 %.not596682.not, label %.lr.ph688.preheader, label %._crit_edge689

.lr.ph688.preheader:                              ; preds = %375
  %380 = and i32 %.5, 2147483644
  %381 = or disjoint i32 %380, 1
  %382 = zext nneg i32 %381 to i64
  br label %.lr.ph688

.lr.ph688:                                        ; preds = %.lr.ph688.preheader, %.lr.ph688
  %indvars.iv788 = phi i64 [ %382, %.lr.ph688.preheader ], [ %indvars.iv.next789, %.lr.ph688 ]
  %.0686 = phi double [ %378, %.lr.ph688.preheader ], [ %389, %.lr.ph688 ]
  %.0536685 = phi double [ %378, %.lr.ph688.preheader ], [ %.1537, %.lr.ph688 ]
  %.0570683 = phi i32 [ %372, %.lr.ph688.preheader ], [ %.1571, %.lr.ph688 ]
  %383 = getelementptr inbounds double, ptr %24, i64 %indvars.iv788
  %384 = load double, ptr %383, align 8, !tbaa !9
  %385 = getelementptr i8, ptr %383, i64 -16
  %386 = load double, ptr %385, align 8, !tbaa !9
  %387 = fadd double %.0686, %386
  %388 = fdiv double %.0686, %387
  %389 = fmul double %384, %388
  %390 = fcmp ugt double %389, %.0536685
  %391 = add nuw nsw i64 %indvars.iv788, 3
  %392 = lshr i64 %391, 2
  %393 = trunc nuw nsw i64 %392 to i32
  %.1571 = select i1 %390, i32 %.0570683, i32 %393
  %.1537 = select i1 %390, double %.0536685, double %389
  %indvars.iv.next789 = add nuw nsw i64 %indvars.iv788, 4
  %394 = trunc nuw i64 %indvars.iv.next789 to i32
  %.not596 = icmp slt i32 %379, %394
  br i1 %.not596, label %._crit_edge689.loopexit, label %.lr.ph688, !llvm.loop !22

._crit_edge689.loopexit:                          ; preds = %.lr.ph688
  %.pre825 = sub nsw i32 %334, %.1571
  br label %._crit_edge689

._crit_edge689:                                   ; preds = %._crit_edge689.loopexit, %375
  %.pre-phi = phi i32 [ %.pre825, %._crit_edge689.loopexit ], [ %373, %375 ]
  %.0570.lcssa = phi i32 [ %.1571, %._crit_edge689.loopexit ], [ %372, %375 ]
  %.0536.lcssa = phi double [ %.1537, %._crit_edge689.loopexit ], [ %378, %375 ]
  %395 = sub nsw i32 %.0570.lcssa, %372
  %396 = shl i32 %395, 1
  %397 = icmp sge i32 %396, %.pre-phi
  %398 = fmul double %346, 5.000000e-01
  %399 = fcmp ugt double %.0536.lcssa, %398
  %or.cond611 = select i1 %397, i1 true, i1 %399
  br i1 %or.cond611, label %.loopexit613, label %400

400:                                              ; preds = %._crit_edge689
  %401 = add nuw nsw i32 %372, %334
  store i32 2, ptr %20, align 4, !tbaa !5
  %402 = shl nuw i32 %401, 1
  %403 = add i32 %402, -2
  %.not597692 = icmp sgt i32 %376, %403
  br i1 %.not597692, label %.loopexit613, label %.lr.ph695.preheader

.lr.ph695.preheader:                              ; preds = %400
  %404 = shl i32 %401, 2
  %405 = and i32 %.5, 2147483644
  %406 = zext nneg i32 %405 to i64
  %407 = sext i32 %404 to i64
  %408 = sext i32 %403 to i64
  br label %.lr.ph695

.lr.ph695:                                        ; preds = %.lr.ph695.preheader, %.lr.ph695
  %indvars.iv791 = phi i64 [ %406, %.lr.ph695.preheader ], [ %indvars.iv.next792, %.lr.ph695 ]
  %409 = getelementptr double, ptr %24, i64 %indvars.iv791
  %410 = getelementptr i8, ptr %409, i64 -24
  %411 = load double, ptr %410, align 8, !tbaa !9
  %412 = sub nsw i64 %407, %indvars.iv791
  %413 = getelementptr double, ptr %24, i64 %412
  %414 = getelementptr i8, ptr %413, i64 -24
  %415 = load double, ptr %414, align 8, !tbaa !9
  store double %415, ptr %410, align 8, !tbaa !9
  store double %411, ptr %414, align 8, !tbaa !9
  %416 = getelementptr i8, ptr %409, i64 -16
  %417 = load double, ptr %416, align 8, !tbaa !9
  %418 = getelementptr i8, ptr %413, i64 -16
  %419 = load double, ptr %418, align 8, !tbaa !9
  store double %419, ptr %416, align 8, !tbaa !9
  store double %417, ptr %418, align 8, !tbaa !9
  %420 = getelementptr i8, ptr %409, i64 -8
  %421 = load double, ptr %420, align 8, !tbaa !9
  %422 = getelementptr i8, ptr %413, i64 -40
  %423 = load double, ptr %422, align 8, !tbaa !9
  store double %423, ptr %420, align 8, !tbaa !9
  store double %421, ptr %422, align 8, !tbaa !9
  %424 = load double, ptr %409, align 8, !tbaa !9
  %425 = getelementptr i8, ptr %413, i64 -32
  %426 = load double, ptr %425, align 8, !tbaa !9
  store double %426, ptr %409, align 8, !tbaa !9
  store double %424, ptr %425, align 8, !tbaa !9
  %indvars.iv.next792 = add nuw nsw i64 %indvars.iv791, 4
  %.not597 = icmp sgt i64 %indvars.iv.next792, %408
  br i1 %.not597, label %.loopexit613, label %.lr.ph695, !llvm.loop !23

.loopexit613:                                     ; preds = %.lr.ph695, %400, %._crit_edge689, %._crit_edge674
  %427 = call double @sqrt(double noundef %.0568.lcssa) #5
  %428 = call double @sqrt(double noundef %.0572.lcssa) #5
  %429 = fmul double %427, -2.000000e+00
  %430 = call double @llvm.fmuladd.f64(double %429, double %428, double %.0568.lcssa)
  %431 = fcmp ole double %430, 0.000000e+00
  %.neg = fneg double %430
  %432 = select i1 %431, double -0.000000e+00, double %.neg
  store double %432, ptr %5, align 8, !tbaa !9
  %433 = load i32, ptr %17, align 4, !tbaa !5
  %434 = load i32, ptr %16, align 4, !tbaa !5
  %435 = sub nsw i32 %433, %434
  %436 = mul i32 %435, 100
  %437 = add i32 %436, 100
  %.not598708 = icmp slt i32 %437, 1
  br i1 %.not598708, label %._crit_edge712, label %.lr.ph711.preheader

.lr.ph711.preheader:                              ; preds = %.loopexit613
  %438 = mul i32 %433, 100
  %439 = add i32 %438, 101
  %.neg831 = mul i32 %434, -100
  %440 = add i32 %.neg831, %439
  br label %.lr.ph711

.lr.ph711:                                        ; preds = %.lr.ph711.preheader, %516
  %.0534709 = phi i32 [ %517, %516 ], [ 1, %.lr.ph711.preheader ]
  %441 = load i32, ptr %16, align 4, !tbaa !5
  %442 = load i32, ptr %17, align 4, !tbaa !5
  %443 = icmp sgt i32 %441, %442
  br i1 %443, label %610, label %444

444:                                              ; preds = %.lr.ph711
  call void @dlasq3_(ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %1, ptr noundef nonnull %20, ptr noundef nonnull %5, ptr noundef nonnull %14, ptr noundef nonnull %13, ptr noundef nonnull %8, ptr noundef nonnull %12, ptr noundef nonnull %7, ptr noundef nonnull %6, ptr noundef nonnull %4, ptr noundef nonnull %18, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %19, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %11, ptr noundef nonnull %23) #5
  %445 = load i32, ptr %20, align 4, !tbaa !5
  %446 = sub nsw i32 1, %445
  store i32 %446, ptr %20, align 4, !tbaa !5
  %447 = icmp eq i32 %445, 1
  br i1 %447, label %448, label %516

448:                                              ; preds = %444
  %449 = load i32, ptr %17, align 4, !tbaa !5
  %450 = load i32, ptr %16, align 4, !tbaa !5
  %451 = sub nsw i32 %449, %450
  %452 = icmp sgt i32 %451, 2
  br i1 %452, label %453, label %516

453:                                              ; preds = %448
  %454 = shl nsw i32 %449, 2
  %455 = sext i32 %454 to i64
  %456 = getelementptr inbounds double, ptr %24, i64 %455
  %457 = load double, ptr %456, align 8, !tbaa !9
  %458 = load double, ptr %8, align 8, !tbaa !9
  %459 = fmul double %28, %458
  %460 = fcmp ugt double %457, %459
  br i1 %460, label %461, label %467

461:                                              ; preds = %453
  %462 = getelementptr i8, ptr %456, i64 -8
  %463 = load double, ptr %462, align 8, !tbaa !9
  %464 = load double, ptr %14, align 8, !tbaa !9
  %465 = fmul double %28, %464
  %466 = fcmp ugt double %463, %465
  br i1 %466, label %516, label %467

467:                                              ; preds = %461, %453
  %468 = add nsw i32 %450, -1
  %469 = shl i32 %450, 2
  %470 = sext i32 %469 to i64
  %471 = getelementptr double, ptr %24, i64 %470
  %472 = getelementptr i8, ptr %471, i64 -24
  %473 = load double, ptr %472, align 8, !tbaa !9
  store double %473, ptr %8, align 8, !tbaa !9
  %474 = getelementptr i8, ptr %471, i64 -8
  %475 = load <2 x double>, ptr %474, align 8, !tbaa !9
  %476 = add i32 %454, -12
  %.not601697 = icmp sgt i32 %469, %476
  br i1 %.not601697, label %._crit_edge704, label %.lr.ph703

.lr.ph703:                                        ; preds = %467
  %477 = load double, ptr %14, align 8
  %478 = fmul double %28, %477
  %479 = fneg double %477
  %480 = sext i32 %476 to i64
  br label %481

481:                                              ; preds = %.lr.ph703, %510
  %indvars.iv794 = phi i64 [ %470, %.lr.ph703 ], [ %indvars.iv.next795, %510 ]
  %.0565698 = phi i32 [ %468, %.lr.ph703 ], [ %.1566, %510 ]
  %482 = phi double [ %473, %.lr.ph703 ], [ %511, %510 ]
  %483 = phi <2 x double> [ %475, %.lr.ph703 ], [ %512, %510 ]
  %484 = getelementptr inbounds double, ptr %24, i64 %indvars.iv794
  %485 = load double, ptr %484, align 8, !tbaa !9
  %486 = getelementptr i8, ptr %484, i64 -24
  %487 = load double, ptr %486, align 8, !tbaa !9
  %488 = fmul double %28, %487
  %489 = fcmp ugt double %485, %488
  br i1 %489, label %490, label %494

490:                                              ; preds = %481
  %491 = getelementptr i8, ptr %484, i64 -8
  %492 = load double, ptr %491, align 8, !tbaa !9
  %493 = fcmp ugt double %492, %478
  br i1 %493, label %501, label %494

494:                                              ; preds = %490, %481
  %495 = getelementptr i8, ptr %484, i64 -8
  store double %479, ptr %495, align 8, !tbaa !9
  %496 = trunc nsw i64 %indvars.iv794 to i32
  %497 = ashr exact i32 %496, 2
  store double 0.000000e+00, ptr %8, align 8, !tbaa !9
  %498 = or disjoint i64 %indvars.iv794, 3
  %499 = getelementptr inbounds double, ptr %24, i64 %498
  %500 = load <2 x double>, ptr %499, align 8, !tbaa !9
  br label %510

501:                                              ; preds = %490
  %502 = getelementptr double, ptr %1, i64 %indvars.iv794
  %503 = load double, ptr %502, align 8, !tbaa !9
  %504 = fcmp oge double %482, %503
  %505 = select i1 %504, double %482, double %503
  store double %505, ptr %8, align 8, !tbaa !9
  %506 = insertelement <2 x double> poison, double %492, i64 0
  %507 = insertelement <2 x double> %506, double %485, i64 1
  %508 = fcmp ole <2 x double> %483, %507
  %509 = select <2 x i1> %508, <2 x double> %483, <2 x double> %507
  br label %510

510:                                              ; preds = %494, %501
  %511 = phi double [ 0.000000e+00, %494 ], [ %505, %501 ]
  %.1566 = phi i32 [ %497, %494 ], [ %.0565698, %501 ]
  %512 = phi <2 x double> [ %500, %494 ], [ %509, %501 ]
  %indvars.iv.next795 = add nsw i64 %indvars.iv794, 4
  %.not601 = icmp sgt i64 %indvars.iv.next795, %480
  br i1 %.not601, label %._crit_edge704, label %481, !llvm.loop !24

._crit_edge704:                                   ; preds = %510, %467
  %.0565.lcssa = phi i32 [ %468, %467 ], [ %.1566, %510 ]
  %513 = phi <2 x double> [ %475, %467 ], [ %512, %510 ]
  %514 = getelementptr i8, ptr %456, i64 -8
  store <2 x double> %513, ptr %514, align 8, !tbaa !9
  %515 = add nsw i32 %.0565.lcssa, 1
  store i32 %515, ptr %16, align 4, !tbaa !5
  br label %516

516:                                              ; preds = %444, %448, %._crit_edge704, %461
  %517 = add nuw nsw i32 %.0534709, 1
  %exitcond.not = icmp eq i32 %517, %440
  br i1 %exitcond.not, label %._crit_edge712.loopexit, label %.lr.ph711, !llvm.loop !25

._crit_edge712.loopexit:                          ; preds = %516
  %.pre823 = load i32, ptr %16, align 4, !tbaa !5
  %.pre824 = load i32, ptr %17, align 4, !tbaa !5
  br label %._crit_edge712

._crit_edge712:                                   ; preds = %.loopexit613, %._crit_edge712.loopexit
  %518 = phi i32 [ %.pre824, %._crit_edge712.loopexit ], [ %433, %.loopexit613 ]
  %519 = phi i32 [ %.pre823, %._crit_edge712.loopexit ], [ %434, %.loopexit613 ]
  store i32 2, ptr %2, align 4, !tbaa !5
  %520 = shl i32 %519, 2
  %521 = sext i32 %520 to i64
  %522 = getelementptr double, ptr %24, i64 %521
  %523 = getelementptr i8, ptr %522, i64 -24
  %.not599.not727 = icmp slt i32 %519, %518
  %.promoted736 = load double, ptr %14, align 8, !tbaa !9
  %524 = sext i32 %519 to i64
  %wide.trip.count = sext i32 %518 to i64
  %525 = sub nsw i64 %wide.trip.count, %524
  %xtraiter = and i64 %525, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  %indvars.iv.next799.prol = add nsw i64 %524, 1
  %526 = trunc nsw i64 %indvars.iv.next799.prol to i32
  %527 = shl i32 %526, 2
  %528 = sext i32 %527 to i64
  %529 = getelementptr double, ptr %24, i64 %528
  %530 = getelementptr i8, ptr %529, i64 -40
  %531 = getelementptr i8, ptr %529, i64 -56
  %532 = getelementptr i8, ptr %529, i64 -24
  %533 = add nsw i64 %wide.trip.count, -1
  %534 = icmp eq i64 %533, %524
  br label %535

535:                                              ; preds = %.critedge, %._crit_edge712
  %536 = phi double [ %.promoted736, %._crit_edge712 ], [ %592, %.critedge ]
  %.0540 = phi i32 [ %519, %._crit_edge712 ], [ %.1541.lcssa, %.critedge ]
  %537 = load double, ptr %523, align 8, !tbaa !9
  %538 = fadd double %537, %536
  store double %538, ptr %523, align 8, !tbaa !9
  br i1 %.not599.not727, label %.lr.ph731.preheader, label %._crit_edge732

.lr.ph731.preheader:                              ; preds = %535
  br i1 %lcmp.mod.not, label %.lr.ph731.prol.loopexit, label %.lr.ph731.prol

.lr.ph731.prol:                                   ; preds = %.lr.ph731.preheader
  %539 = load double, ptr %530, align 8, !tbaa !9
  %540 = load double, ptr %531, align 8, !tbaa !9
  %541 = fdiv double %537, %540
  %542 = fmul double %539, %541
  store double %542, ptr %530, align 8, !tbaa !9
  %543 = load double, ptr %532, align 8, !tbaa !9
  %544 = fadd double %536, %543
  %545 = fadd double %539, %544
  %546 = fsub double %545, %542
  store double %546, ptr %532, align 8, !tbaa !9
  br label %.lr.ph731.prol.loopexit

.lr.ph731.prol.loopexit:                          ; preds = %.lr.ph731.prol, %.lr.ph731.preheader
  %indvars.iv798.unr = phi i64 [ %524, %.lr.ph731.preheader ], [ %indvars.iv.next799.prol, %.lr.ph731.prol ]
  %.0542729.unr = phi double [ %537, %.lr.ph731.preheader ], [ %543, %.lr.ph731.prol ]
  br i1 %534, label %._crit_edge732, label %.lr.ph731

.lr.ph731:                                        ; preds = %.lr.ph731.prol.loopexit, %.lr.ph731
  %indvars.iv798 = phi i64 [ %indvars.iv.next799.1, %.lr.ph731 ], [ %indvars.iv798.unr, %.lr.ph731.prol.loopexit ]
  %.0542729 = phi double [ %574, %.lr.ph731 ], [ %.0542729.unr, %.lr.ph731.prol.loopexit ]
  %547 = trunc i64 %indvars.iv798 to i32
  %548 = shl i32 %547, 2
  %549 = add i32 %548, 4
  %550 = sext i32 %549 to i64
  %551 = getelementptr double, ptr %24, i64 %550
  %552 = getelementptr i8, ptr %551, i64 -40
  %553 = load double, ptr %552, align 8, !tbaa !9
  %554 = getelementptr i8, ptr %551, i64 -56
  %555 = load double, ptr %554, align 8, !tbaa !9
  %556 = fdiv double %.0542729, %555
  %557 = fmul double %553, %556
  store double %557, ptr %552, align 8, !tbaa !9
  %558 = getelementptr i8, ptr %551, i64 -24
  %559 = load double, ptr %558, align 8, !tbaa !9
  %560 = fadd double %536, %559
  %561 = fadd double %553, %560
  %562 = fsub double %561, %557
  store double %562, ptr %558, align 8, !tbaa !9
  %indvars.iv.next799.1 = add nsw i64 %indvars.iv798, 2
  %563 = trunc nsw i64 %indvars.iv.next799.1 to i32
  %564 = shl i32 %563, 2
  %565 = sext i32 %564 to i64
  %566 = getelementptr double, ptr %24, i64 %565
  %567 = getelementptr i8, ptr %566, i64 -40
  %568 = load double, ptr %567, align 8, !tbaa !9
  %569 = getelementptr i8, ptr %566, i64 -56
  %570 = load double, ptr %569, align 8, !tbaa !9
  %571 = fdiv double %559, %570
  %572 = fmul double %568, %571
  store double %572, ptr %567, align 8, !tbaa !9
  %573 = getelementptr i8, ptr %566, i64 -24
  %574 = load double, ptr %573, align 8, !tbaa !9
  %575 = fadd double %536, %574
  %576 = fadd double %568, %575
  %577 = fsub double %576, %572
  store double %577, ptr %573, align 8, !tbaa !9
  %exitcond801.not.1 = icmp eq i64 %indvars.iv.next799.1, %wide.trip.count
  br i1 %exitcond801.not.1, label %._crit_edge732, label %.lr.ph731, !llvm.loop !26

._crit_edge732:                                   ; preds = %.lr.ph731.prol.loopexit, %.lr.ph731, %535
  %578 = icmp sgt i32 %.0540, 1
  br i1 %578, label %.preheader612.preheader, label %593

.preheader612.preheader:                          ; preds = %._crit_edge732
  %579 = zext nneg i32 %.0540 to i64
  br label %.preheader612

.preheader612:                                    ; preds = %.preheader612.preheader, %585
  %indvars.iv802 = phi i64 [ %579, %.preheader612.preheader ], [ %indvars.iv.next803, %585 ]
  %580 = trunc nuw nsw i64 %indvars.iv802 to i32
  %581 = shl i32 %580, 2
  %582 = sext i32 %581 to i64
  %gep734 = getelementptr double, ptr %invariant.gep716, i64 %582
  %583 = load double, ptr %gep734, align 8, !tbaa !9
  %584 = fcmp ult double %583, 0.000000e+00
  br i1 %584, label %.critedge, label %585

585:                                              ; preds = %.preheader612
  %indvars.iv.next803 = add nsw i64 %indvars.iv802, -1
  %586 = icmp sgt i64 %indvars.iv802, 2
  br i1 %586, label %.preheader612, label %.critedge, !llvm.loop !27

.critedge:                                        ; preds = %585, %.preheader612
  %.1541.lcssa = phi i32 [ 1, %585 ], [ %580, %.preheader612 ]
  %587 = shl i32 %.0540, 2
  %588 = add i32 %587, -5
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds double, ptr %24, i64 %589
  %591 = load double, ptr %590, align 8, !tbaa !9
  %592 = fneg double %591
  br label %535

593:                                              ; preds = %._crit_edge732
  %594 = load i32, ptr %0, align 4, !tbaa !5
  %.not600739 = icmp slt i32 %594, 1
  br i1 %.not600739, label %.loopexit, label %.lr.ph742.preheader

.lr.ph742.preheader:                              ; preds = %593
  %595 = sext i32 %518 to i64
  %596 = add nuw i32 %594, 1
  %wide.trip.count808 = zext i32 %596 to i64
  br label %.lr.ph742

.lr.ph742:                                        ; preds = %.lr.ph742.preheader, %608
  %indvars.iv805 = phi i64 [ 1, %.lr.ph742.preheader ], [ %indvars.iv.next806, %608 ]
  %597 = trunc nuw nsw i64 %indvars.iv805 to i32
  %598 = shl i32 %597, 2
  %599 = sext i32 %598 to i64
  %600 = getelementptr double, ptr %24, i64 %599
  %601 = getelementptr i8, ptr %600, i64 -24
  %602 = load double, ptr %601, align 8, !tbaa !9
  %sext = shl i64 %indvars.iv805, 33
  %603 = ashr exact i64 %sext, 29
  %gep738 = getelementptr i8, ptr %invariant.gep714, i64 %603
  store double %602, ptr %gep738, align 8, !tbaa !9
  %604 = icmp slt i64 %indvars.iv805, %595
  br i1 %604, label %605, label %608

605:                                              ; preds = %.lr.ph742
  %606 = getelementptr i8, ptr %600, i64 -8
  %607 = load double, ptr %606, align 8, !tbaa !9
  br label %608

608:                                              ; preds = %.lr.ph742, %605
  %.sink = phi double [ %607, %605 ], [ 0.000000e+00, %.lr.ph742 ]
  %.idx832 = shl i64 %indvars.iv805, 4
  %609 = getelementptr inbounds i8, ptr %24, i64 %.idx832
  store double %.sink, ptr %609, align 8
  %indvars.iv.next806 = add nuw nsw i64 %indvars.iv805, 1
  %exitcond809.not = icmp eq i64 %indvars.iv.next806, %wide.trip.count808
  br i1 %exitcond809.not, label %.loopexit, label %.lr.ph742, !llvm.loop !28

610:                                              ; preds = %.lr.ph711
  %611 = add nuw i32 %.0535723, 1
  %exitcond797 = icmp eq i32 %.0535723, %333
  br i1 %exitcond797, label %._crit_edge726, label %.lr.ph725, !llvm.loop !29

._crit_edge726:                                   ; preds = %610, %._crit_edge655.1
  store i32 3, ptr %2, align 4, !tbaa !5
  br label %.loopexit

612:                                              ; preds = %.lr.ph725
  %613 = load i32, ptr %0, align 4, !tbaa !5
  %.not602745 = icmp slt i32 %613, 2
  br i1 %.not602745, label %._crit_edge749, label %.lr.ph748.preheader

.lr.ph748.preheader:                              ; preds = %612
  %614 = add nuw i32 %613, 1
  %wide.trip.count813 = zext i32 %614 to i64
  %615 = add nsw i64 %wide.trip.count813, -2
  %616 = add nsw i64 %wide.trip.count813, -3
  %xtraiter895 = and i64 %615, 3
  %617 = icmp ult i64 %616, 3
  br i1 %617, label %._crit_edge749.loopexit.unr-lcssa, label %.lr.ph748.preheader.new

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

.lr.ph748:                                        ; preds = %.lr.ph748, %.lr.ph748.preheader.new
  %indvars.iv810 = phi i64 [ 2, %.lr.ph748.preheader.new ], [ %indvars.iv.next811.3, %.lr.ph748 ]
  %niter = phi i64 [ 0, %.lr.ph748.preheader.new ], [ %niter.next.3, %.lr.ph748 ]
  %618 = trunc nuw nsw i64 %indvars.iv810 to i32
  %619 = shl i32 %618, 2
  %620 = sext i32 %619 to i64
  %gep744 = getelementptr double, ptr %invariant.gep, i64 %620
  %621 = load double, ptr %gep744, align 8, !tbaa !9
  %622 = getelementptr inbounds double, ptr %24, i64 %indvars.iv810
  store double %621, ptr %622, align 8, !tbaa !9
  %623 = trunc i64 %indvars.iv810 to i32
  %624 = shl i32 %623, 2
  %625 = or disjoint i32 %624, 4
  %626 = sext i32 %625 to i64
  %gep744.1 = getelementptr double, ptr %invariant.gep, i64 %626
  %627 = load double, ptr %gep744.1, align 8, !tbaa !9
  %628 = getelementptr double, ptr %1, i64 %indvars.iv810
  store double %627, ptr %628, align 8, !tbaa !9
  %indvars.iv.next811.1 = add nuw nsw i64 %indvars.iv810, 2
  %629 = trunc nuw nsw i64 %indvars.iv.next811.1 to i32
  %630 = shl i32 %629, 2
  %631 = sext i32 %630 to i64
  %gep744.2 = getelementptr double, ptr %invariant.gep, i64 %631
  %632 = load double, ptr %gep744.2, align 8, !tbaa !9
  %633 = getelementptr inbounds double, ptr %24, i64 %indvars.iv.next811.1
  store double %632, ptr %633, align 8, !tbaa !9
  %indvars.iv.next811.2 = add nuw nsw i64 %indvars.iv810, 3
  %634 = trunc nuw nsw i64 %indvars.iv.next811.2 to i32
  %635 = shl i32 %634, 2
  %636 = sext i32 %635 to i64
  %gep744.3 = getelementptr double, ptr %invariant.gep, i64 %636
  %637 = load double, ptr %gep744.3, align 8, !tbaa !9
  %638 = getelementptr inbounds double, ptr %24, i64 %indvars.iv.next811.2
  store double %637, ptr %638, align 8, !tbaa !9
  %indvars.iv.next811.3 = add nuw nsw i64 %indvars.iv810, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge749.loopexit.unr-lcssa, label %.lr.ph748, !llvm.loop !30

._crit_edge749.loopexit.unr-lcssa:                ; preds = %.lr.ph748, %.lr.ph748.preheader
  %indvars.iv810.unr = phi i64 [ 2, %.lr.ph748.preheader ], [ %indvars.iv.next811.3, %.lr.ph748 ]
  %lcmp.mod896.not = icmp eq i64 %xtraiter895, 0
  br i1 %lcmp.mod896.not, label %._crit_edge749, label %.lr.ph748.epil

.lr.ph748.epil:                                   ; preds = %._crit_edge749.loopexit.unr-lcssa, %.lr.ph748.epil
  %indvars.iv810.epil = phi i64 [ %indvars.iv.next811.epil, %.lr.ph748.epil ], [ %indvars.iv810.unr, %._crit_edge749.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph748.epil ], [ 0, %._crit_edge749.loopexit.unr-lcssa ]
  %639 = trunc nuw nsw i64 %indvars.iv810.epil to i32
  %640 = shl i32 %639, 2
  %641 = sext i32 %640 to i64
  %gep744.epil = getelementptr double, ptr %invariant.gep, i64 %641
  %642 = load double, ptr %gep744.epil, align 8, !tbaa !9
  %643 = getelementptr inbounds double, ptr %24, i64 %indvars.iv810.epil
  store double %642, ptr %643, align 8, !tbaa !9
  %indvars.iv.next811.epil = add nuw nsw i64 %indvars.iv810.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter895
  br i1 %epil.iter.cmp.not, label %._crit_edge749, label %.lr.ph748.epil, !llvm.loop !31

._crit_edge749:                                   ; preds = %._crit_edge749.loopexit.unr-lcssa, %.lr.ph748.epil, %612
  call void @dlasrt_(ptr noundef nonnull @.str.3, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %15) #5
  %644 = load i32, ptr %0, align 4, !tbaa !5
  %645 = icmp sgt i32 %644, 0
  br i1 %645, label %.lr.ph753.preheader, label %._crit_edge754

.lr.ph753.preheader:                              ; preds = %._crit_edge749
  %646 = zext nneg i32 %644 to i64
  %xtraiter897 = and i64 %646, 7
  %lcmp.mod898.not = icmp eq i64 %xtraiter897, 0
  br i1 %lcmp.mod898.not, label %.lr.ph753.prol.loopexit, label %.lr.ph753.prol

.lr.ph753.prol:                                   ; preds = %.lr.ph753.preheader, %.lr.ph753.prol
  %indvars.iv815.prol = phi i64 [ %indvars.iv.next816.prol, %.lr.ph753.prol ], [ %646, %.lr.ph753.preheader ]
  %.1559750.prol = phi double [ %649, %.lr.ph753.prol ], [ 0.000000e+00, %.lr.ph753.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph753.prol ], [ 0, %.lr.ph753.preheader ]
  %647 = getelementptr inbounds double, ptr %24, i64 %indvars.iv815.prol
  %648 = load double, ptr %647, align 8, !tbaa !9
  %649 = fadd double %.1559750.prol, %648
  %indvars.iv.next816.prol = add nsw i64 %indvars.iv815.prol, -1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter897
  br i1 %prol.iter.cmp.not, label %.lr.ph753.prol.loopexit, label %.lr.ph753.prol, !llvm.loop !32

.lr.ph753.prol.loopexit:                          ; preds = %.lr.ph753.prol, %.lr.ph753.preheader
  %indvars.iv815.unr = phi i64 [ %646, %.lr.ph753.preheader ], [ %indvars.iv.next816.prol, %.lr.ph753.prol ]
  %.1559750.unr = phi double [ 0.000000e+00, %.lr.ph753.preheader ], [ %649, %.lr.ph753.prol ]
  %.lcssa.unr = phi double [ poison, %.lr.ph753.preheader ], [ %649, %.lr.ph753.prol ]
  %650 = icmp ult i32 %644, 8
  br i1 %650, label %._crit_edge754, label %.lr.ph753.preheader.new

.lr.ph753.preheader.new:                          ; preds = %.lr.ph753.prol.loopexit
  %invariant.gep924 = getelementptr i8, ptr %24, i64 -8
  %invariant.gep925 = getelementptr i8, ptr %24, i64 -16
  %invariant.gep927 = getelementptr i8, ptr %24, i64 -24
  %invariant.gep929 = getelementptr i8, ptr %24, i64 -32
  %invariant.gep931 = getelementptr i8, ptr %24, i64 -40
  %invariant.gep933 = getelementptr i8, ptr %24, i64 -48
  br label %.lr.ph753

.lr.ph753:                                        ; preds = %.lr.ph753, %.lr.ph753.preheader.new
  %indvars.iv815 = phi i64 [ %indvars.iv815.unr, %.lr.ph753.preheader.new ], [ %indvars.iv.next816.7, %.lr.ph753 ]
  %.1559750 = phi double [ %.1559750.unr, %.lr.ph753.preheader.new ], [ %668, %.lr.ph753 ]
  %651 = getelementptr inbounds double, ptr %24, i64 %indvars.iv815
  %652 = load double, ptr %651, align 8, !tbaa !9
  %653 = fadd double %.1559750, %652
  %gep = getelementptr double, ptr %invariant.gep924, i64 %indvars.iv815
  %654 = load double, ptr %gep, align 8, !tbaa !9
  %655 = fadd double %653, %654
  %gep926 = getelementptr double, ptr %invariant.gep925, i64 %indvars.iv815
  %656 = load double, ptr %gep926, align 8, !tbaa !9
  %657 = fadd double %655, %656
  %gep928 = getelementptr double, ptr %invariant.gep927, i64 %indvars.iv815
  %658 = load double, ptr %gep928, align 8, !tbaa !9
  %659 = fadd double %657, %658
  %gep930 = getelementptr double, ptr %invariant.gep929, i64 %indvars.iv815
  %660 = load double, ptr %gep930, align 8, !tbaa !9
  %661 = fadd double %659, %660
  %gep932 = getelementptr double, ptr %invariant.gep931, i64 %indvars.iv815
  %662 = load double, ptr %gep932, align 8, !tbaa !9
  %663 = fadd double %661, %662
  %gep934 = getelementptr double, ptr %invariant.gep933, i64 %indvars.iv815
  %664 = load double, ptr %gep934, align 8, !tbaa !9
  %665 = fadd double %663, %664
  %indvars.iv.next816.6 = add nsw i64 %indvars.iv815, -7
  %666 = getelementptr inbounds double, ptr %24, i64 %indvars.iv.next816.6
  %667 = load double, ptr %666, align 8, !tbaa !9
  %668 = fadd double %665, %667
  %indvars.iv.next816.7 = add nsw i64 %indvars.iv815, -8
  %669 = icmp ugt i64 %indvars.iv.next816.6, 1
  br i1 %669, label %.lr.ph753, label %._crit_edge754, !llvm.loop !33

._crit_edge754:                                   ; preds = %.lr.ph753.prol.loopexit, %.lr.ph753, %._crit_edge749
  %.1559.lcssa = phi double [ 0.000000e+00, %._crit_edge749 ], [ %.lcssa.unr, %.lr.ph753.prol.loopexit ], [ %668, %.lr.ph753 ]
  %670 = shl i32 %644, 1
  %671 = or disjoint i32 %670, 1
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds double, ptr %24, i64 %672
  store double %166, ptr %673, align 8, !tbaa !9
  %674 = sext i32 %670 to i64
  %675 = getelementptr double, ptr %24, i64 %674
  %676 = getelementptr i8, ptr %675, i64 16
  store double %.1559.lcssa, ptr %676, align 8, !tbaa !9
  %677 = load i32, ptr %7, align 4, !tbaa !5
  %678 = sitofp i32 %677 to double
  %679 = getelementptr i8, ptr %675, i64 24
  store double %678, ptr %679, align 8, !tbaa !9
  %680 = load i32, ptr %6, align 4, !tbaa !5
  %681 = sitofp i32 %680 to double
  %682 = mul nsw i32 %644, %644
  %683 = uitofp nneg i32 %682 to double
  %684 = getelementptr i8, ptr %675, i64 32
  %685 = load i32, ptr %12, align 4, !tbaa !5
  %686 = sitofp i32 %685 to double
  %687 = fmul double %686, 1.000000e+02
  %688 = insertelement <2 x double> poison, double %681, i64 0
  %689 = insertelement <2 x double> %688, double %687, i64 1
  %690 = insertelement <2 x double> poison, double %683, i64 0
  %691 = insertelement <2 x double> %690, double %678, i64 1
  %692 = fdiv <2 x double> %689, %691
  store <2 x double> %692, ptr %684, align 8, !tbaa !9
  br label %.loopexit

.loopexit:                                        ; preds = %608, %593, %33, %34, %37, %._crit_edge754, %._crit_edge726, %345, %168, %._crit_edge761, %127, %114, %106, %93, %54, %48, %42, %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 4, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 4, 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 4, 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 4, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #5
  ret void
}

; 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, i32 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 void @dlasrt_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare void @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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = 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, !12}
!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, !12}
!30 = distinct !{!30, !12}
!31 = distinct !{!31, !15}
!32 = distinct !{!32, !15}
!33 = distinct !{!33, !12}


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