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

; 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 [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@c_false = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4
@c_b21 = external hidden global double, align 8
@c_b25 = external hidden global double, align 8
@c_true = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @dlaqtr_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10) #0 {
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca i32, align 4
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca [4 x double], align 16
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca [4 x double], align 16
  %41 = alloca double, align 8
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca double, align 8
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca double, align 8
  %49 = alloca double, align 8
  %50 = alloca double, align 8
  %51 = alloca double, align 8
  %52 = alloca double, align 8
  %53 = alloca double, align 8
  %54 = alloca i32, align 4
  %55 = alloca double, align 8
  %56 = alloca double, align 8
  %57 = alloca double, align 8
  %58 = alloca double, align 8
  %59 = alloca double, align 8
  %60 = alloca i32, align 4
  store ptr %0, ptr %12, align 8, !tbaa !5
  store ptr %1, ptr %13, align 8, !tbaa !5
  store ptr %2, ptr %14, align 8, !tbaa !5
  store ptr %3, ptr %15, align 8, !tbaa !5
  store ptr %4, ptr %16, align 8, !tbaa !5
  store ptr %5, ptr %17, align 8, !tbaa !5
  store ptr %6, ptr %18, align 8, !tbaa !5
  store ptr %7, ptr %19, align 8, !tbaa !5
  store ptr %8, ptr %20, align 8, !tbaa !5
  store ptr %9, ptr %21, align 8, !tbaa !5
  store ptr %10, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #4
  %61 = load ptr, ptr %16, align 8, !tbaa !5
  %62 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %62, ptr %23, align 4, !tbaa !9
  %63 = load i32, ptr %23, align 4, !tbaa !9
  %64 = mul nsw i32 %63, 1
  %65 = add nsw i32 1, %64
  store i32 %65, ptr %24, align 4, !tbaa !9
  %66 = load i32, ptr %24, align 4, !tbaa !9
  %67 = load ptr, ptr %15, align 8, !tbaa !5
  %68 = sext i32 %66 to i64
  %69 = sub i64 0, %68
  %70 = getelementptr inbounds double, ptr %67, i64 %69
  store ptr %70, ptr %15, align 8, !tbaa !5
  %71 = load ptr, ptr %17, align 8, !tbaa !5
  %72 = getelementptr inbounds double, ptr %71, i32 -1
  store ptr %72, ptr %17, align 8, !tbaa !5
  %73 = load ptr, ptr %20, align 8, !tbaa !5
  %74 = getelementptr inbounds double, ptr %73, i32 -1
  store ptr %74, ptr %20, align 8, !tbaa !5
  %75 = load ptr, ptr %21, align 8, !tbaa !5
  %76 = getelementptr inbounds double, ptr %75, i32 -1
  store ptr %76, ptr %21, align 8, !tbaa !5
  %77 = load ptr, ptr %12, align 8, !tbaa !5
  %78 = load i32, ptr %77, align 4, !tbaa !9
  %79 = icmp ne i32 %78, 0
  %80 = xor i1 %79, true
  %81 = zext i1 %80 to i32
  store i32 %81, ptr %54, align 4, !tbaa !9
  %82 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 0, ptr %82, align 4, !tbaa !9
  %83 = load ptr, ptr %14, align 8, !tbaa !5
  %84 = load i32, ptr %83, align 4, !tbaa !9
  %85 = icmp eq i32 %84, 0
  br i1 %85, label %86, label %87

86:                                               ; preds = %11
  store i32 1, ptr %60, align 4
  br label %2654

87:                                               ; preds = %11
  %88 = call double @dlamch_(ptr noundef @.str)
  store double %88, ptr %57, align 8, !tbaa !11
  %89 = call double @dlamch_(ptr noundef @.str.1)
  %90 = load double, ptr %57, align 8, !tbaa !11
  %91 = fdiv double %89, %90
  store double %91, ptr %55, align 8, !tbaa !11
  %92 = load double, ptr %55, align 8, !tbaa !11
  %93 = fdiv double 1.000000e+00, %92
  store double %93, ptr %53, align 8, !tbaa !11
  %94 = load ptr, ptr %14, align 8, !tbaa !5
  %95 = load ptr, ptr %14, align 8, !tbaa !5
  %96 = load ptr, ptr %15, align 8, !tbaa !5
  %97 = load i32, ptr %24, align 4, !tbaa !9
  %98 = sext i32 %97 to i64
  %99 = getelementptr inbounds double, ptr %96, i64 %98
  %100 = load ptr, ptr %16, align 8, !tbaa !5
  %101 = getelementptr inbounds [4 x double], ptr %36, i64 0, i64 0
  %102 = call double @dlange_(ptr noundef @.str.2, ptr noundef %94, ptr noundef %95, ptr noundef %99, ptr noundef %100, ptr noundef %101)
  store double %102, ptr %48, align 8, !tbaa !11
  %103 = load ptr, ptr %13, align 8, !tbaa !5
  %104 = load i32, ptr %103, align 4, !tbaa !9
  %105 = icmp ne i32 %104, 0
  br i1 %105, label %144, label %106

106:                                              ; preds = %87
  %107 = load double, ptr %48, align 8, !tbaa !11
  store double %107, ptr %27, align 8, !tbaa !11
  %108 = load ptr, ptr %18, align 8, !tbaa !5
  %109 = load double, ptr %108, align 8, !tbaa !11
  %110 = fcmp oge double %109, 0.000000e+00
  br i1 %110, label %111, label %114

111:                                              ; preds = %106
  %112 = load ptr, ptr %18, align 8, !tbaa !5
  %113 = load double, ptr %112, align 8, !tbaa !11
  br label %118

114:                                              ; preds = %106
  %115 = load ptr, ptr %18, align 8, !tbaa !5
  %116 = load double, ptr %115, align 8, !tbaa !11
  %117 = fneg double %116
  br label %118

118:                                              ; preds = %114, %111
  %119 = phi double [ %113, %111 ], [ %117, %114 ]
  store double %119, ptr %28, align 8, !tbaa !11
  %120 = load double, ptr %27, align 8, !tbaa !11
  %121 = load double, ptr %28, align 8, !tbaa !11
  %122 = fcmp oge double %120, %121
  br i1 %122, label %123, label %125

123:                                              ; preds = %118
  %124 = load double, ptr %27, align 8, !tbaa !11
  br label %127

125:                                              ; preds = %118
  %126 = load double, ptr %28, align 8, !tbaa !11
  br label %127

127:                                              ; preds = %125, %123
  %128 = phi double [ %124, %123 ], [ %126, %125 ]
  store double %128, ptr %27, align 8, !tbaa !11
  %129 = load ptr, ptr %14, align 8, !tbaa !5
  %130 = load ptr, ptr %17, align 8, !tbaa !5
  %131 = getelementptr inbounds double, ptr %130, i64 1
  %132 = load ptr, ptr %14, align 8, !tbaa !5
  %133 = getelementptr inbounds [4 x double], ptr %36, i64 0, i64 0
  %134 = call double @dlange_(ptr noundef @.str.2, ptr noundef %129, ptr noundef @c__1, ptr noundef %131, ptr noundef %132, ptr noundef %133)
  store double %134, ptr %28, align 8, !tbaa !11
  %135 = load double, ptr %27, align 8, !tbaa !11
  %136 = load double, ptr %28, align 8, !tbaa !11
  %137 = fcmp oge double %135, %136
  br i1 %137, label %138, label %140

138:                                              ; preds = %127
  %139 = load double, ptr %27, align 8, !tbaa !11
  br label %142

140:                                              ; preds = %127
  %141 = load double, ptr %28, align 8, !tbaa !11
  br label %142

142:                                              ; preds = %140, %138
  %143 = phi double [ %139, %138 ], [ %141, %140 ]
  store double %143, ptr %48, align 8, !tbaa !11
  br label %144

144:                                              ; preds = %142, %87
  %145 = load double, ptr %55, align 8, !tbaa !11
  store double %145, ptr %27, align 8, !tbaa !11
  %146 = load double, ptr %57, align 8, !tbaa !11
  %147 = load double, ptr %48, align 8, !tbaa !11
  %148 = fmul double %146, %147
  store double %148, ptr %28, align 8, !tbaa !11
  %149 = load double, ptr %27, align 8, !tbaa !11
  %150 = load double, ptr %28, align 8, !tbaa !11
  %151 = fcmp oge double %149, %150
  br i1 %151, label %152, label %154

152:                                              ; preds = %144
  %153 = load double, ptr %27, align 8, !tbaa !11
  br label %156

154:                                              ; preds = %144
  %155 = load double, ptr %28, align 8, !tbaa !11
  br label %156

156:                                              ; preds = %154, %152
  %157 = phi double [ %153, %152 ], [ %155, %154 ]
  store double %157, ptr %34, align 8, !tbaa !11
  %158 = load ptr, ptr %21, align 8, !tbaa !5
  %159 = getelementptr inbounds double, ptr %158, i64 1
  store double 0.000000e+00, ptr %159, align 8, !tbaa !11
  %160 = load ptr, ptr %14, align 8, !tbaa !5
  %161 = load i32, ptr %160, align 4, !tbaa !9
  store i32 %161, ptr %25, align 4, !tbaa !9
  store i32 2, ptr %38, align 4, !tbaa !9
  br label %162

162:                                              ; preds = %181, %156
  %163 = load i32, ptr %38, align 4, !tbaa !9
  %164 = load i32, ptr %25, align 4, !tbaa !9
  %165 = icmp sle i32 %163, %164
  br i1 %165, label %166, label %184

166:                                              ; preds = %162
  %167 = load i32, ptr %38, align 4, !tbaa !9
  %168 = sub nsw i32 %167, 1
  store i32 %168, ptr %26, align 4, !tbaa !9
  %169 = load ptr, ptr %15, align 8, !tbaa !5
  %170 = load i32, ptr %38, align 4, !tbaa !9
  %171 = load i32, ptr %23, align 4, !tbaa !9
  %172 = mul nsw i32 %170, %171
  %173 = add nsw i32 %172, 1
  %174 = sext i32 %173 to i64
  %175 = getelementptr inbounds double, ptr %169, i64 %174
  %176 = call double @dasum_(ptr noundef %26, ptr noundef %175, ptr noundef @c__1)
  %177 = load ptr, ptr %21, align 8, !tbaa !5
  %178 = load i32, ptr %38, align 4, !tbaa !9
  %179 = sext i32 %178 to i64
  %180 = getelementptr inbounds double, ptr %177, i64 %179
  store double %176, ptr %180, align 8, !tbaa !11
  br label %181

181:                                              ; preds = %166
  %182 = load i32, ptr %38, align 4, !tbaa !9
  %183 = add nsw i32 %182, 1
  store i32 %183, ptr %38, align 4, !tbaa !9
  br label %162, !llvm.loop !13

184:                                              ; preds = %162
  %185 = load ptr, ptr %13, align 8, !tbaa !5
  %186 = load i32, ptr %185, align 4, !tbaa !9
  %187 = icmp ne i32 %186, 0
  br i1 %187, label %220, label %188

188:                                              ; preds = %184
  %189 = load ptr, ptr %14, align 8, !tbaa !5
  %190 = load i32, ptr %189, align 4, !tbaa !9
  store i32 %190, ptr %25, align 4, !tbaa !9
  store i32 2, ptr %37, align 4, !tbaa !9
  br label %191

191:                                              ; preds = %216, %188
  %192 = load i32, ptr %37, align 4, !tbaa !9
  %193 = load i32, ptr %25, align 4, !tbaa !9
  %194 = icmp sle i32 %192, %193
  br i1 %194, label %195, label %219

195:                                              ; preds = %191
  %196 = load ptr, ptr %17, align 8, !tbaa !5
  %197 = load i32, ptr %37, align 4, !tbaa !9
  %198 = sext i32 %197 to i64
  %199 = getelementptr inbounds double, ptr %196, i64 %198
  %200 = load double, ptr %199, align 8, !tbaa !11
  store double %200, ptr %27, align 8, !tbaa !11
  %201 = load double, ptr %27, align 8, !tbaa !11
  %202 = fcmp oge double %201, 0.000000e+00
  br i1 %202, label %203, label %205

203:                                              ; preds = %195
  %204 = load double, ptr %27, align 8, !tbaa !11
  br label %208

205:                                              ; preds = %195
  %206 = load double, ptr %27, align 8, !tbaa !11
  %207 = fneg double %206
  br label %208

208:                                              ; preds = %205, %203
  %209 = phi double [ %204, %203 ], [ %207, %205 ]
  %210 = load ptr, ptr %21, align 8, !tbaa !5
  %211 = load i32, ptr %37, align 4, !tbaa !9
  %212 = sext i32 %211 to i64
  %213 = getelementptr inbounds double, ptr %210, i64 %212
  %214 = load double, ptr %213, align 8, !tbaa !11
  %215 = fadd double %214, %209
  store double %215, ptr %213, align 8, !tbaa !11
  br label %216

216:                                              ; preds = %208
  %217 = load i32, ptr %37, align 4, !tbaa !9
  %218 = add nsw i32 %217, 1
  store i32 %218, ptr %37, align 4, !tbaa !9
  br label %191, !llvm.loop !15

219:                                              ; preds = %191
  br label %220

220:                                              ; preds = %219, %184
  %221 = load ptr, ptr %14, align 8, !tbaa !5
  %222 = load i32, ptr %221, align 4, !tbaa !9
  %223 = shl i32 %222, 1
  store i32 %223, ptr %47, align 4, !tbaa !9
  %224 = load ptr, ptr %14, align 8, !tbaa !5
  %225 = load i32, ptr %224, align 4, !tbaa !9
  store i32 %225, ptr %46, align 4, !tbaa !9
  %226 = load ptr, ptr %13, align 8, !tbaa !5
  %227 = load i32, ptr %226, align 4, !tbaa !9
  %228 = icmp ne i32 %227, 0
  br i1 %228, label %231, label %229

229:                                              ; preds = %220
  %230 = load i32, ptr %47, align 4, !tbaa !9
  store i32 %230, ptr %46, align 4, !tbaa !9
  br label %231

231:                                              ; preds = %229, %220
  %232 = load ptr, ptr %20, align 8, !tbaa !5
  %233 = getelementptr inbounds double, ptr %232, i64 1
  %234 = call i32 @idamax_(ptr noundef %46, ptr noundef %233, ptr noundef @c__1)
  store i32 %234, ptr %39, align 4, !tbaa !9
  %235 = load ptr, ptr %20, align 8, !tbaa !5
  %236 = load i32, ptr %39, align 4, !tbaa !9
  %237 = sext i32 %236 to i64
  %238 = getelementptr inbounds double, ptr %235, i64 %237
  %239 = load double, ptr %238, align 8, !tbaa !11
  store double %239, ptr %27, align 8, !tbaa !11
  %240 = load double, ptr %27, align 8, !tbaa !11
  %241 = fcmp oge double %240, 0.000000e+00
  br i1 %241, label %242, label %244

242:                                              ; preds = %231
  %243 = load double, ptr %27, align 8, !tbaa !11
  br label %247

244:                                              ; preds = %231
  %245 = load double, ptr %27, align 8, !tbaa !11
  %246 = fneg double %245
  br label %247

247:                                              ; preds = %244, %242
  %248 = phi double [ %243, %242 ], [ %246, %244 ]
  store double %248, ptr %35, align 8, !tbaa !11
  %249 = load ptr, ptr %19, align 8, !tbaa !5
  store double 1.000000e+00, ptr %249, align 8, !tbaa !11
  %250 = load double, ptr %35, align 8, !tbaa !11
  %251 = load double, ptr %53, align 8, !tbaa !11
  %252 = fcmp ogt double %250, %251
  br i1 %252, label %253, label %262

253:                                              ; preds = %247
  %254 = load double, ptr %53, align 8, !tbaa !11
  %255 = load double, ptr %35, align 8, !tbaa !11
  %256 = fdiv double %254, %255
  %257 = load ptr, ptr %19, align 8, !tbaa !5
  store double %256, ptr %257, align 8, !tbaa !11
  %258 = load ptr, ptr %19, align 8, !tbaa !5
  %259 = load ptr, ptr %20, align 8, !tbaa !5
  %260 = getelementptr inbounds double, ptr %259, i64 1
  call void @dscal_(ptr noundef %46, ptr noundef %258, ptr noundef %260, ptr noundef @c__1)
  %261 = load double, ptr %53, align 8, !tbaa !11
  store double %261, ptr %35, align 8, !tbaa !11
  br label %262

262:                                              ; preds = %253, %247
  %263 = load ptr, ptr %13, align 8, !tbaa !5
  %264 = load i32, ptr %263, align 4, !tbaa !9
  %265 = icmp ne i32 %264, 0
  br i1 %265, label %266, label %1082

266:                                              ; preds = %262
  %267 = load i32, ptr %54, align 4, !tbaa !9
  %268 = icmp ne i32 %267, 0
  br i1 %268, label %269, label %663

269:                                              ; preds = %266
  %270 = load ptr, ptr %14, align 8, !tbaa !5
  %271 = load i32, ptr %270, align 4, !tbaa !9
  store i32 %271, ptr %42, align 4, !tbaa !9
  %272 = load ptr, ptr %14, align 8, !tbaa !5
  %273 = load i32, ptr %272, align 4, !tbaa !9
  store i32 %273, ptr %38, align 4, !tbaa !9
  br label %274

274:                                              ; preds = %659, %269
  %275 = load i32, ptr %38, align 4, !tbaa !9
  %276 = icmp sge i32 %275, 1
  br i1 %276, label %277, label %662

277:                                              ; preds = %274
  %278 = load i32, ptr %38, align 4, !tbaa !9
  %279 = load i32, ptr %42, align 4, !tbaa !9
  %280 = icmp sgt i32 %278, %279
  br i1 %280, label %281, label %282

281:                                              ; preds = %277
  br label %658

282:                                              ; preds = %277
  %283 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %283, ptr %43, align 4, !tbaa !9
  %284 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %284, ptr %44, align 4, !tbaa !9
  %285 = load i32, ptr %38, align 4, !tbaa !9
  %286 = sub nsw i32 %285, 1
  store i32 %286, ptr %42, align 4, !tbaa !9
  %287 = load i32, ptr %38, align 4, !tbaa !9
  %288 = icmp sgt i32 %287, 1
  br i1 %288, label %289, label %307

289:                                              ; preds = %282
  %290 = load ptr, ptr %15, align 8, !tbaa !5
  %291 = load i32, ptr %38, align 4, !tbaa !9
  %292 = load i32, ptr %38, align 4, !tbaa !9
  %293 = sub nsw i32 %292, 1
  %294 = load i32, ptr %23, align 4, !tbaa !9
  %295 = mul nsw i32 %293, %294
  %296 = add nsw i32 %291, %295
  %297 = sext i32 %296 to i64
  %298 = getelementptr inbounds double, ptr %290, i64 %297
  %299 = load double, ptr %298, align 8, !tbaa !11
  %300 = fcmp une double %299, 0.000000e+00
  br i1 %300, label %301, label %306

301:                                              ; preds = %289
  %302 = load i32, ptr %38, align 4, !tbaa !9
  %303 = sub nsw i32 %302, 1
  store i32 %303, ptr %43, align 4, !tbaa !9
  %304 = load i32, ptr %38, align 4, !tbaa !9
  %305 = sub nsw i32 %304, 2
  store i32 %305, ptr %42, align 4, !tbaa !9
  br label %306

306:                                              ; preds = %301, %289
  br label %307

307:                                              ; preds = %306, %282
  %308 = load i32, ptr %43, align 4, !tbaa !9
  %309 = load i32, ptr %44, align 4, !tbaa !9
  %310 = icmp eq i32 %308, %309
  br i1 %310, label %311, label %475

311:                                              ; preds = %307
  %312 = load ptr, ptr %20, align 8, !tbaa !5
  %313 = load i32, ptr %43, align 4, !tbaa !9
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds double, ptr %312, i64 %314
  %316 = load double, ptr %315, align 8, !tbaa !11
  store double %316, ptr %27, align 8, !tbaa !11
  %317 = load double, ptr %27, align 8, !tbaa !11
  %318 = fcmp oge double %317, 0.000000e+00
  br i1 %318, label %319, label %321

319:                                              ; preds = %311
  %320 = load double, ptr %27, align 8, !tbaa !11
  br label %324

321:                                              ; preds = %311
  %322 = load double, ptr %27, align 8, !tbaa !11
  %323 = fneg double %322
  br label %324

324:                                              ; preds = %321, %319
  %325 = phi double [ %320, %319 ], [ %323, %321 ]
  store double %325, ptr %50, align 8, !tbaa !11
  %326 = load ptr, ptr %15, align 8, !tbaa !5
  %327 = load i32, ptr %43, align 4, !tbaa !9
  %328 = load i32, ptr %43, align 4, !tbaa !9
  %329 = load i32, ptr %23, align 4, !tbaa !9
  %330 = mul nsw i32 %328, %329
  %331 = add nsw i32 %327, %330
  %332 = sext i32 %331 to i64
  %333 = getelementptr inbounds double, ptr %326, i64 %332
  %334 = load double, ptr %333, align 8, !tbaa !11
  store double %334, ptr %27, align 8, !tbaa !11
  %335 = load double, ptr %27, align 8, !tbaa !11
  %336 = fcmp oge double %335, 0.000000e+00
  br i1 %336, label %337, label %339

337:                                              ; preds = %324
  %338 = load double, ptr %27, align 8, !tbaa !11
  br label %342

339:                                              ; preds = %324
  %340 = load double, ptr %27, align 8, !tbaa !11
  %341 = fneg double %340
  br label %342

342:                                              ; preds = %339, %337
  %343 = phi double [ %338, %337 ], [ %341, %339 ]
  store double %343, ptr %58, align 8, !tbaa !11
  %344 = load ptr, ptr %15, align 8, !tbaa !5
  %345 = load i32, ptr %43, align 4, !tbaa !9
  %346 = load i32, ptr %43, align 4, !tbaa !9
  %347 = load i32, ptr %23, align 4, !tbaa !9
  %348 = mul nsw i32 %346, %347
  %349 = add nsw i32 %345, %348
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds double, ptr %344, i64 %350
  %352 = load double, ptr %351, align 8, !tbaa !11
  store double %352, ptr %59, align 8, !tbaa !11
  %353 = load double, ptr %58, align 8, !tbaa !11
  %354 = load double, ptr %34, align 8, !tbaa !11
  %355 = fcmp olt double %353, %354
  br i1 %355, label %356, label %360

356:                                              ; preds = %342
  %357 = load double, ptr %34, align 8, !tbaa !11
  store double %357, ptr %59, align 8, !tbaa !11
  %358 = load double, ptr %34, align 8, !tbaa !11
  store double %358, ptr %58, align 8, !tbaa !11
  %359 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 1, ptr %359, align 4, !tbaa !9
  br label %360

360:                                              ; preds = %356, %342
  %361 = load double, ptr %50, align 8, !tbaa !11
  %362 = fcmp oeq double %361, 0.000000e+00
  br i1 %362, label %363, label %364

363:                                              ; preds = %360
  br label %658

364:                                              ; preds = %360
  %365 = load double, ptr %58, align 8, !tbaa !11
  %366 = fcmp olt double %365, 1.000000e+00
  br i1 %366, label %367, label %387

367:                                              ; preds = %364
  %368 = load double, ptr %50, align 8, !tbaa !11
  %369 = load double, ptr %53, align 8, !tbaa !11
  %370 = load double, ptr %58, align 8, !tbaa !11
  %371 = fmul double %369, %370
  %372 = fcmp ogt double %368, %371
  br i1 %372, label %373, label %386

373:                                              ; preds = %367
  %374 = load double, ptr %50, align 8, !tbaa !11
  %375 = fdiv double 1.000000e+00, %374
  store double %375, ptr %56, align 8, !tbaa !11
  %376 = load ptr, ptr %14, align 8, !tbaa !5
  %377 = load ptr, ptr %20, align 8, !tbaa !5
  %378 = getelementptr inbounds double, ptr %377, i64 1
  call void @dscal_(ptr noundef %376, ptr noundef %56, ptr noundef %378, ptr noundef @c__1)
  %379 = load double, ptr %56, align 8, !tbaa !11
  %380 = load ptr, ptr %19, align 8, !tbaa !5
  %381 = load double, ptr %380, align 8, !tbaa !11
  %382 = fmul double %381, %379
  store double %382, ptr %380, align 8, !tbaa !11
  %383 = load double, ptr %56, align 8, !tbaa !11
  %384 = load double, ptr %35, align 8, !tbaa !11
  %385 = fmul double %384, %383
  store double %385, ptr %35, align 8, !tbaa !11
  br label %386

386:                                              ; preds = %373, %367
  br label %387

387:                                              ; preds = %386, %364
  %388 = load double, ptr %59, align 8, !tbaa !11
  %389 = load ptr, ptr %20, align 8, !tbaa !5
  %390 = load i32, ptr %43, align 4, !tbaa !9
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds double, ptr %389, i64 %391
  %393 = load double, ptr %392, align 8, !tbaa !11
  %394 = fdiv double %393, %388
  store double %394, ptr %392, align 8, !tbaa !11
  %395 = load ptr, ptr %20, align 8, !tbaa !5
  %396 = load i32, ptr %43, align 4, !tbaa !9
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds double, ptr %395, i64 %397
  %399 = load double, ptr %398, align 8, !tbaa !11
  store double %399, ptr %27, align 8, !tbaa !11
  %400 = load double, ptr %27, align 8, !tbaa !11
  %401 = fcmp oge double %400, 0.000000e+00
  br i1 %401, label %402, label %404

402:                                              ; preds = %387
  %403 = load double, ptr %27, align 8, !tbaa !11
  br label %407

404:                                              ; preds = %387
  %405 = load double, ptr %27, align 8, !tbaa !11
  %406 = fneg double %405
  br label %407

407:                                              ; preds = %404, %402
  %408 = phi double [ %403, %402 ], [ %406, %404 ]
  store double %408, ptr %50, align 8, !tbaa !11
  %409 = load double, ptr %50, align 8, !tbaa !11
  %410 = fcmp ogt double %409, 1.000000e+00
  br i1 %410, label %411, label %434

411:                                              ; preds = %407
  %412 = load double, ptr %50, align 8, !tbaa !11
  %413 = fdiv double 1.000000e+00, %412
  store double %413, ptr %56, align 8, !tbaa !11
  %414 = load ptr, ptr %21, align 8, !tbaa !5
  %415 = load i32, ptr %43, align 4, !tbaa !9
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds double, ptr %414, i64 %416
  %418 = load double, ptr %417, align 8, !tbaa !11
  %419 = load double, ptr %53, align 8, !tbaa !11
  %420 = load double, ptr %35, align 8, !tbaa !11
  %421 = fsub double %419, %420
  %422 = load double, ptr %56, align 8, !tbaa !11
  %423 = fmul double %421, %422
  %424 = fcmp ogt double %418, %423
  br i1 %424, label %425, label %433

425:                                              ; preds = %411
  %426 = load ptr, ptr %14, align 8, !tbaa !5
  %427 = load ptr, ptr %20, align 8, !tbaa !5
  %428 = getelementptr inbounds double, ptr %427, i64 1
  call void @dscal_(ptr noundef %426, ptr noundef %56, ptr noundef %428, ptr noundef @c__1)
  %429 = load double, ptr %56, align 8, !tbaa !11
  %430 = load ptr, ptr %19, align 8, !tbaa !5
  %431 = load double, ptr %430, align 8, !tbaa !11
  %432 = fmul double %431, %429
  store double %432, ptr %430, align 8, !tbaa !11
  br label %433

433:                                              ; preds = %425, %411
  br label %434

434:                                              ; preds = %433, %407
  %435 = load i32, ptr %43, align 4, !tbaa !9
  %436 = icmp sgt i32 %435, 1
  br i1 %436, label %437, label %474

437:                                              ; preds = %434
  %438 = load i32, ptr %43, align 4, !tbaa !9
  %439 = sub nsw i32 %438, 1
  store i32 %439, ptr %25, align 4, !tbaa !9
  %440 = load ptr, ptr %20, align 8, !tbaa !5
  %441 = load i32, ptr %43, align 4, !tbaa !9
  %442 = sext i32 %441 to i64
  %443 = getelementptr inbounds double, ptr %440, i64 %442
  %444 = load double, ptr %443, align 8, !tbaa !11
  %445 = fneg double %444
  store double %445, ptr %27, align 8, !tbaa !11
  %446 = load ptr, ptr %15, align 8, !tbaa !5
  %447 = load i32, ptr %43, align 4, !tbaa !9
  %448 = load i32, ptr %23, align 4, !tbaa !9
  %449 = mul nsw i32 %447, %448
  %450 = add nsw i32 %449, 1
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds double, ptr %446, i64 %451
  %453 = load ptr, ptr %20, align 8, !tbaa !5
  %454 = getelementptr inbounds double, ptr %453, i64 1
  call void @daxpy_(ptr noundef %25, ptr noundef %27, ptr noundef %452, ptr noundef @c__1, ptr noundef %454, ptr noundef @c__1)
  %455 = load i32, ptr %43, align 4, !tbaa !9
  %456 = sub nsw i32 %455, 1
  store i32 %456, ptr %25, align 4, !tbaa !9
  %457 = load ptr, ptr %20, align 8, !tbaa !5
  %458 = getelementptr inbounds double, ptr %457, i64 1
  %459 = call i32 @idamax_(ptr noundef %25, ptr noundef %458, ptr noundef @c__1)
  store i32 %459, ptr %39, align 4, !tbaa !9
  %460 = load ptr, ptr %20, align 8, !tbaa !5
  %461 = load i32, ptr %39, align 4, !tbaa !9
  %462 = sext i32 %461 to i64
  %463 = getelementptr inbounds double, ptr %460, i64 %462
  %464 = load double, ptr %463, align 8, !tbaa !11
  store double %464, ptr %27, align 8, !tbaa !11
  %465 = load double, ptr %27, align 8, !tbaa !11
  %466 = fcmp oge double %465, 0.000000e+00
  br i1 %466, label %467, label %469

467:                                              ; preds = %437
  %468 = load double, ptr %27, align 8, !tbaa !11
  br label %472

469:                                              ; preds = %437
  %470 = load double, ptr %27, align 8, !tbaa !11
  %471 = fneg double %470
  br label %472

472:                                              ; preds = %469, %467
  %473 = phi double [ %468, %467 ], [ %471, %469 ]
  store double %473, ptr %35, align 8, !tbaa !11
  br label %474

474:                                              ; preds = %472, %434
  br label %657

475:                                              ; preds = %307
  %476 = load ptr, ptr %20, align 8, !tbaa !5
  %477 = load i32, ptr %43, align 4, !tbaa !9
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds double, ptr %476, i64 %478
  %480 = load double, ptr %479, align 8, !tbaa !11
  %481 = getelementptr inbounds [4 x double], ptr %36, i64 0, i64 0
  store double %480, ptr %481, align 16, !tbaa !11
  %482 = load ptr, ptr %20, align 8, !tbaa !5
  %483 = load i32, ptr %44, align 4, !tbaa !9
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds double, ptr %482, i64 %484
  %486 = load double, ptr %485, align 8, !tbaa !11
  %487 = getelementptr inbounds [4 x double], ptr %36, i64 0, i64 1
  store double %486, ptr %487, align 8, !tbaa !11
  %488 = load ptr, ptr %15, align 8, !tbaa !5
  %489 = load i32, ptr %43, align 4, !tbaa !9
  %490 = load i32, ptr %43, align 4, !tbaa !9
  %491 = load i32, ptr %23, align 4, !tbaa !9
  %492 = mul nsw i32 %490, %491
  %493 = add nsw i32 %489, %492
  %494 = sext i32 %493 to i64
  %495 = getelementptr inbounds double, ptr %488, i64 %494
  %496 = load ptr, ptr %16, align 8, !tbaa !5
  %497 = getelementptr inbounds [4 x double], ptr %36, i64 0, i64 0
  %498 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_false, ptr noundef @c__2, ptr noundef @c__1, ptr noundef %34, ptr noundef @c_b21, ptr noundef %495, ptr noundef %496, ptr noundef @c_b21, ptr noundef @c_b21, ptr noundef %497, ptr noundef @c__2, ptr noundef @c_b25, ptr noundef @c_b25, ptr noundef %498, ptr noundef @c__2, ptr noundef %51, ptr noundef %48, ptr noundef %33)
  %499 = load i32, ptr %33, align 4, !tbaa !9
  %500 = icmp ne i32 %499, 0
  br i1 %500, label %501, label %503

501:                                              ; preds = %475
  %502 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 2, ptr %502, align 4, !tbaa !9
  br label %503

503:                                              ; preds = %501, %475
  %504 = load double, ptr %51, align 8, !tbaa !11
  %505 = fcmp une double %504, 1.000000e+00
  br i1 %505, label %506, label %514

506:                                              ; preds = %503
  %507 = load ptr, ptr %14, align 8, !tbaa !5
  %508 = load ptr, ptr %20, align 8, !tbaa !5
  %509 = getelementptr inbounds double, ptr %508, i64 1
  call void @dscal_(ptr noundef %507, ptr noundef %51, ptr noundef %509, ptr noundef @c__1)
  %510 = load double, ptr %51, align 8, !tbaa !11
  %511 = load ptr, ptr %19, align 8, !tbaa !5
  %512 = load double, ptr %511, align 8, !tbaa !11
  %513 = fmul double %512, %510
  store double %513, ptr %511, align 8, !tbaa !11
  br label %514

514:                                              ; preds = %506, %503
  %515 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 0
  %516 = load double, ptr %515, align 16, !tbaa !11
  %517 = load ptr, ptr %20, align 8, !tbaa !5
  %518 = load i32, ptr %43, align 4, !tbaa !9
  %519 = sext i32 %518 to i64
  %520 = getelementptr inbounds double, ptr %517, i64 %519
  store double %516, ptr %520, align 8, !tbaa !11
  %521 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 1
  %522 = load double, ptr %521, align 8, !tbaa !11
  %523 = load ptr, ptr %20, align 8, !tbaa !5
  %524 = load i32, ptr %44, align 4, !tbaa !9
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds double, ptr %523, i64 %525
  store double %522, ptr %526, align 8, !tbaa !11
  %527 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 0
  %528 = load double, ptr %527, align 16, !tbaa !11
  %529 = fcmp oge double %528, 0.000000e+00
  br i1 %529, label %530, label %533

530:                                              ; preds = %514
  %531 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 0
  %532 = load double, ptr %531, align 16, !tbaa !11
  br label %537

533:                                              ; preds = %514
  %534 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 0
  %535 = load double, ptr %534, align 16, !tbaa !11
  %536 = fneg double %535
  br label %537

537:                                              ; preds = %533, %530
  %538 = phi double [ %532, %530 ], [ %536, %533 ]
  store double %538, ptr %27, align 8, !tbaa !11
  %539 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 1
  %540 = load double, ptr %539, align 8, !tbaa !11
  %541 = fcmp oge double %540, 0.000000e+00
  br i1 %541, label %542, label %545

542:                                              ; preds = %537
  %543 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 1
  %544 = load double, ptr %543, align 8, !tbaa !11
  br label %549

545:                                              ; preds = %537
  %546 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 1
  %547 = load double, ptr %546, align 8, !tbaa !11
  %548 = fneg double %547
  br label %549

549:                                              ; preds = %545, %542
  %550 = phi double [ %544, %542 ], [ %548, %545 ]
  store double %550, ptr %28, align 8, !tbaa !11
  %551 = load double, ptr %27, align 8, !tbaa !11
  %552 = load double, ptr %28, align 8, !tbaa !11
  %553 = fcmp oge double %551, %552
  br i1 %553, label %554, label %556

554:                                              ; preds = %549
  %555 = load double, ptr %27, align 8, !tbaa !11
  br label %558

556:                                              ; preds = %549
  %557 = load double, ptr %28, align 8, !tbaa !11
  br label %558

558:                                              ; preds = %556, %554
  %559 = phi double [ %555, %554 ], [ %557, %556 ]
  store double %559, ptr %50, align 8, !tbaa !11
  %560 = load double, ptr %50, align 8, !tbaa !11
  %561 = fcmp ogt double %560, 1.000000e+00
  br i1 %561, label %562, label %599

562:                                              ; preds = %558
  %563 = load double, ptr %50, align 8, !tbaa !11
  %564 = fdiv double 1.000000e+00, %563
  store double %564, ptr %56, align 8, !tbaa !11
  %565 = load ptr, ptr %21, align 8, !tbaa !5
  %566 = load i32, ptr %43, align 4, !tbaa !9
  %567 = sext i32 %566 to i64
  %568 = getelementptr inbounds double, ptr %565, i64 %567
  %569 = load double, ptr %568, align 8, !tbaa !11
  store double %569, ptr %27, align 8, !tbaa !11
  %570 = load ptr, ptr %21, align 8, !tbaa !5
  %571 = load i32, ptr %44, align 4, !tbaa !9
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds double, ptr %570, i64 %572
  %574 = load double, ptr %573, align 8, !tbaa !11
  store double %574, ptr %28, align 8, !tbaa !11
  %575 = load double, ptr %27, align 8, !tbaa !11
  %576 = load double, ptr %28, align 8, !tbaa !11
  %577 = fcmp oge double %575, %576
  br i1 %577, label %578, label %580

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

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

582:                                              ; preds = %580, %578
  %583 = phi double [ %579, %578 ], [ %581, %580 ]
  %584 = load double, ptr %53, align 8, !tbaa !11
  %585 = load double, ptr %35, align 8, !tbaa !11
  %586 = fsub double %584, %585
  %587 = load double, ptr %56, align 8, !tbaa !11
  %588 = fmul double %586, %587
  %589 = fcmp ogt double %583, %588
  br i1 %589, label %590, label %598

590:                                              ; preds = %582
  %591 = load ptr, ptr %14, align 8, !tbaa !5
  %592 = load ptr, ptr %20, align 8, !tbaa !5
  %593 = getelementptr inbounds double, ptr %592, i64 1
  call void @dscal_(ptr noundef %591, ptr noundef %56, ptr noundef %593, ptr noundef @c__1)
  %594 = load double, ptr %56, align 8, !tbaa !11
  %595 = load ptr, ptr %19, align 8, !tbaa !5
  %596 = load double, ptr %595, align 8, !tbaa !11
  %597 = fmul double %596, %594
  store double %597, ptr %595, align 8, !tbaa !11
  br label %598

598:                                              ; preds = %590, %582
  br label %599

599:                                              ; preds = %598, %558
  %600 = load i32, ptr %43, align 4, !tbaa !9
  %601 = icmp sgt i32 %600, 1
  br i1 %601, label %602, label %656

602:                                              ; preds = %599
  %603 = load i32, ptr %43, align 4, !tbaa !9
  %604 = sub nsw i32 %603, 1
  store i32 %604, ptr %25, align 4, !tbaa !9
  %605 = load ptr, ptr %20, align 8, !tbaa !5
  %606 = load i32, ptr %43, align 4, !tbaa !9
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds double, ptr %605, i64 %607
  %609 = load double, ptr %608, align 8, !tbaa !11
  %610 = fneg double %609
  store double %610, ptr %27, align 8, !tbaa !11
  %611 = load ptr, ptr %15, align 8, !tbaa !5
  %612 = load i32, ptr %43, align 4, !tbaa !9
  %613 = load i32, ptr %23, align 4, !tbaa !9
  %614 = mul nsw i32 %612, %613
  %615 = add nsw i32 %614, 1
  %616 = sext i32 %615 to i64
  %617 = getelementptr inbounds double, ptr %611, i64 %616
  %618 = load ptr, ptr %20, align 8, !tbaa !5
  %619 = getelementptr inbounds double, ptr %618, i64 1
  call void @daxpy_(ptr noundef %25, ptr noundef %27, ptr noundef %617, ptr noundef @c__1, ptr noundef %619, ptr noundef @c__1)
  %620 = load i32, ptr %43, align 4, !tbaa !9
  %621 = sub nsw i32 %620, 1
  store i32 %621, ptr %25, align 4, !tbaa !9
  %622 = load ptr, ptr %20, align 8, !tbaa !5
  %623 = load i32, ptr %44, align 4, !tbaa !9
  %624 = sext i32 %623 to i64
  %625 = getelementptr inbounds double, ptr %622, i64 %624
  %626 = load double, ptr %625, align 8, !tbaa !11
  %627 = fneg double %626
  store double %627, ptr %27, align 8, !tbaa !11
  %628 = load ptr, ptr %15, align 8, !tbaa !5
  %629 = load i32, ptr %44, align 4, !tbaa !9
  %630 = load i32, ptr %23, align 4, !tbaa !9
  %631 = mul nsw i32 %629, %630
  %632 = add nsw i32 %631, 1
  %633 = sext i32 %632 to i64
  %634 = getelementptr inbounds double, ptr %628, i64 %633
  %635 = load ptr, ptr %20, align 8, !tbaa !5
  %636 = getelementptr inbounds double, ptr %635, i64 1
  call void @daxpy_(ptr noundef %25, ptr noundef %27, ptr noundef %634, ptr noundef @c__1, ptr noundef %636, ptr noundef @c__1)
  %637 = load i32, ptr %43, align 4, !tbaa !9
  %638 = sub nsw i32 %637, 1
  store i32 %638, ptr %25, align 4, !tbaa !9
  %639 = load ptr, ptr %20, align 8, !tbaa !5
  %640 = getelementptr inbounds double, ptr %639, i64 1
  %641 = call i32 @idamax_(ptr noundef %25, ptr noundef %640, ptr noundef @c__1)
  store i32 %641, ptr %39, align 4, !tbaa !9
  %642 = load ptr, ptr %20, align 8, !tbaa !5
  %643 = load i32, ptr %39, align 4, !tbaa !9
  %644 = sext i32 %643 to i64
  %645 = getelementptr inbounds double, ptr %642, i64 %644
  %646 = load double, ptr %645, align 8, !tbaa !11
  store double %646, ptr %27, align 8, !tbaa !11
  %647 = load double, ptr %27, align 8, !tbaa !11
  %648 = fcmp oge double %647, 0.000000e+00
  br i1 %648, label %649, label %651

649:                                              ; preds = %602
  %650 = load double, ptr %27, align 8, !tbaa !11
  br label %654

651:                                              ; preds = %602
  %652 = load double, ptr %27, align 8, !tbaa !11
  %653 = fneg double %652
  br label %654

654:                                              ; preds = %651, %649
  %655 = phi double [ %650, %649 ], [ %653, %651 ]
  store double %655, ptr %35, align 8, !tbaa !11
  br label %656

656:                                              ; preds = %654, %599
  br label %657

657:                                              ; preds = %656, %474
  br label %658

658:                                              ; preds = %657, %363, %281
  br label %659

659:                                              ; preds = %658
  %660 = load i32, ptr %38, align 4, !tbaa !9
  %661 = add nsw i32 %660, -1
  store i32 %661, ptr %38, align 4, !tbaa !9
  br label %274, !llvm.loop !16

662:                                              ; preds = %274
  br label %1081

663:                                              ; preds = %266
  store i32 1, ptr %42, align 4, !tbaa !9
  %664 = load ptr, ptr %14, align 8, !tbaa !5
  %665 = load i32, ptr %664, align 4, !tbaa !9
  store i32 %665, ptr %25, align 4, !tbaa !9
  store i32 1, ptr %38, align 4, !tbaa !9
  br label %666

666:                                              ; preds = %1077, %663
  %667 = load i32, ptr %38, align 4, !tbaa !9
  %668 = load i32, ptr %25, align 4, !tbaa !9
  %669 = icmp sle i32 %667, %668
  br i1 %669, label %670, label %1080

670:                                              ; preds = %666
  %671 = load i32, ptr %38, align 4, !tbaa !9
  %672 = load i32, ptr %42, align 4, !tbaa !9
  %673 = icmp slt i32 %671, %672
  br i1 %673, label %674, label %675

674:                                              ; preds = %670
  br label %1076

675:                                              ; preds = %670
  %676 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %676, ptr %43, align 4, !tbaa !9
  %677 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %677, ptr %44, align 4, !tbaa !9
  %678 = load i32, ptr %38, align 4, !tbaa !9
  %679 = add nsw i32 %678, 1
  store i32 %679, ptr %42, align 4, !tbaa !9
  %680 = load i32, ptr %38, align 4, !tbaa !9
  %681 = load ptr, ptr %14, align 8, !tbaa !5
  %682 = load i32, ptr %681, align 4, !tbaa !9
  %683 = icmp slt i32 %680, %682
  br i1 %683, label %684, label %702

684:                                              ; preds = %675
  %685 = load ptr, ptr %15, align 8, !tbaa !5
  %686 = load i32, ptr %38, align 4, !tbaa !9
  %687 = add nsw i32 %686, 1
  %688 = load i32, ptr %38, align 4, !tbaa !9
  %689 = load i32, ptr %23, align 4, !tbaa !9
  %690 = mul nsw i32 %688, %689
  %691 = add nsw i32 %687, %690
  %692 = sext i32 %691 to i64
  %693 = getelementptr inbounds double, ptr %685, i64 %692
  %694 = load double, ptr %693, align 8, !tbaa !11
  %695 = fcmp une double %694, 0.000000e+00
  br i1 %695, label %696, label %701

696:                                              ; preds = %684
  %697 = load i32, ptr %38, align 4, !tbaa !9
  %698 = add nsw i32 %697, 1
  store i32 %698, ptr %44, align 4, !tbaa !9
  %699 = load i32, ptr %38, align 4, !tbaa !9
  %700 = add nsw i32 %699, 2
  store i32 %700, ptr %42, align 4, !tbaa !9
  br label %701

701:                                              ; preds = %696, %684
  br label %702

702:                                              ; preds = %701, %675
  %703 = load i32, ptr %43, align 4, !tbaa !9
  %704 = load i32, ptr %44, align 4, !tbaa !9
  %705 = icmp eq i32 %703, %704
  br i1 %705, label %706, label %871

706:                                              ; preds = %702
  %707 = load ptr, ptr %20, align 8, !tbaa !5
  %708 = load i32, ptr %43, align 4, !tbaa !9
  %709 = sext i32 %708 to i64
  %710 = getelementptr inbounds double, ptr %707, i64 %709
  %711 = load double, ptr %710, align 8, !tbaa !11
  store double %711, ptr %27, align 8, !tbaa !11
  %712 = load double, ptr %27, align 8, !tbaa !11
  %713 = fcmp oge double %712, 0.000000e+00
  br i1 %713, label %714, label %716

714:                                              ; preds = %706
  %715 = load double, ptr %27, align 8, !tbaa !11
  br label %719

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

719:                                              ; preds = %716, %714
  %720 = phi double [ %715, %714 ], [ %718, %716 ]
  store double %720, ptr %50, align 8, !tbaa !11
  %721 = load double, ptr %35, align 8, !tbaa !11
  %722 = fcmp ogt double %721, 1.000000e+00
  br i1 %722, label %723, label %749

723:                                              ; preds = %719
  %724 = load double, ptr %35, align 8, !tbaa !11
  %725 = fdiv double 1.000000e+00, %724
  store double %725, ptr %56, align 8, !tbaa !11
  %726 = load ptr, ptr %21, align 8, !tbaa !5
  %727 = load i32, ptr %43, align 4, !tbaa !9
  %728 = sext i32 %727 to i64
  %729 = getelementptr inbounds double, ptr %726, i64 %728
  %730 = load double, ptr %729, align 8, !tbaa !11
  %731 = load double, ptr %53, align 8, !tbaa !11
  %732 = load double, ptr %50, align 8, !tbaa !11
  %733 = fsub double %731, %732
  %734 = load double, ptr %56, align 8, !tbaa !11
  %735 = fmul double %733, %734
  %736 = fcmp ogt double %730, %735
  br i1 %736, label %737, label %748

737:                                              ; preds = %723
  %738 = load ptr, ptr %14, align 8, !tbaa !5
  %739 = load ptr, ptr %20, align 8, !tbaa !5
  %740 = getelementptr inbounds double, ptr %739, i64 1
  call void @dscal_(ptr noundef %738, ptr noundef %56, ptr noundef %740, ptr noundef @c__1)
  %741 = load double, ptr %56, align 8, !tbaa !11
  %742 = load ptr, ptr %19, align 8, !tbaa !5
  %743 = load double, ptr %742, align 8, !tbaa !11
  %744 = fmul double %743, %741
  store double %744, ptr %742, align 8, !tbaa !11
  %745 = load double, ptr %56, align 8, !tbaa !11
  %746 = load double, ptr %35, align 8, !tbaa !11
  %747 = fmul double %746, %745
  store double %747, ptr %35, align 8, !tbaa !11
  br label %748

748:                                              ; preds = %737, %723
  br label %749

749:                                              ; preds = %748, %719
  %750 = load i32, ptr %43, align 4, !tbaa !9
  %751 = sub nsw i32 %750, 1
  store i32 %751, ptr %26, align 4, !tbaa !9
  %752 = load ptr, ptr %15, align 8, !tbaa !5
  %753 = load i32, ptr %43, align 4, !tbaa !9
  %754 = load i32, ptr %23, align 4, !tbaa !9
  %755 = mul nsw i32 %753, %754
  %756 = add nsw i32 %755, 1
  %757 = sext i32 %756 to i64
  %758 = getelementptr inbounds double, ptr %752, i64 %757
  %759 = load ptr, ptr %20, align 8, !tbaa !5
  %760 = getelementptr inbounds double, ptr %759, i64 1
  %761 = call double @ddot_(ptr noundef %26, ptr noundef %758, ptr noundef @c__1, ptr noundef %760, ptr noundef @c__1)
  %762 = load ptr, ptr %20, align 8, !tbaa !5
  %763 = load i32, ptr %43, align 4, !tbaa !9
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds double, ptr %762, i64 %764
  %766 = load double, ptr %765, align 8, !tbaa !11
  %767 = fsub double %766, %761
  store double %767, ptr %765, align 8, !tbaa !11
  %768 = load ptr, ptr %20, align 8, !tbaa !5
  %769 = load i32, ptr %43, align 4, !tbaa !9
  %770 = sext i32 %769 to i64
  %771 = getelementptr inbounds double, ptr %768, i64 %770
  %772 = load double, ptr %771, align 8, !tbaa !11
  store double %772, ptr %27, align 8, !tbaa !11
  %773 = load double, ptr %27, align 8, !tbaa !11
  %774 = fcmp oge double %773, 0.000000e+00
  br i1 %774, label %775, label %777

775:                                              ; preds = %749
  %776 = load double, ptr %27, align 8, !tbaa !11
  br label %780

777:                                              ; preds = %749
  %778 = load double, ptr %27, align 8, !tbaa !11
  %779 = fneg double %778
  br label %780

780:                                              ; preds = %777, %775
  %781 = phi double [ %776, %775 ], [ %779, %777 ]
  store double %781, ptr %50, align 8, !tbaa !11
  %782 = load ptr, ptr %15, align 8, !tbaa !5
  %783 = load i32, ptr %43, align 4, !tbaa !9
  %784 = load i32, ptr %43, align 4, !tbaa !9
  %785 = load i32, ptr %23, align 4, !tbaa !9
  %786 = mul nsw i32 %784, %785
  %787 = add nsw i32 %783, %786
  %788 = sext i32 %787 to i64
  %789 = getelementptr inbounds double, ptr %782, i64 %788
  %790 = load double, ptr %789, align 8, !tbaa !11
  store double %790, ptr %27, align 8, !tbaa !11
  %791 = load double, ptr %27, align 8, !tbaa !11
  %792 = fcmp oge double %791, 0.000000e+00
  br i1 %792, label %793, label %795

793:                                              ; preds = %780
  %794 = load double, ptr %27, align 8, !tbaa !11
  br label %798

795:                                              ; preds = %780
  %796 = load double, ptr %27, align 8, !tbaa !11
  %797 = fneg double %796
  br label %798

798:                                              ; preds = %795, %793
  %799 = phi double [ %794, %793 ], [ %797, %795 ]
  store double %799, ptr %58, align 8, !tbaa !11
  %800 = load ptr, ptr %15, align 8, !tbaa !5
  %801 = load i32, ptr %43, align 4, !tbaa !9
  %802 = load i32, ptr %43, align 4, !tbaa !9
  %803 = load i32, ptr %23, align 4, !tbaa !9
  %804 = mul nsw i32 %802, %803
  %805 = add nsw i32 %801, %804
  %806 = sext i32 %805 to i64
  %807 = getelementptr inbounds double, ptr %800, i64 %806
  %808 = load double, ptr %807, align 8, !tbaa !11
  store double %808, ptr %59, align 8, !tbaa !11
  %809 = load double, ptr %58, align 8, !tbaa !11
  %810 = load double, ptr %34, align 8, !tbaa !11
  %811 = fcmp olt double %809, %810
  br i1 %811, label %812, label %816

812:                                              ; preds = %798
  %813 = load double, ptr %34, align 8, !tbaa !11
  store double %813, ptr %59, align 8, !tbaa !11
  %814 = load double, ptr %34, align 8, !tbaa !11
  store double %814, ptr %58, align 8, !tbaa !11
  %815 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 1, ptr %815, align 4, !tbaa !9
  br label %816

816:                                              ; preds = %812, %798
  %817 = load double, ptr %58, align 8, !tbaa !11
  %818 = fcmp olt double %817, 1.000000e+00
  br i1 %818, label %819, label %839

819:                                              ; preds = %816
  %820 = load double, ptr %50, align 8, !tbaa !11
  %821 = load double, ptr %53, align 8, !tbaa !11
  %822 = load double, ptr %58, align 8, !tbaa !11
  %823 = fmul double %821, %822
  %824 = fcmp ogt double %820, %823
  br i1 %824, label %825, label %838

825:                                              ; preds = %819
  %826 = load double, ptr %50, align 8, !tbaa !11
  %827 = fdiv double 1.000000e+00, %826
  store double %827, ptr %56, align 8, !tbaa !11
  %828 = load ptr, ptr %14, align 8, !tbaa !5
  %829 = load ptr, ptr %20, align 8, !tbaa !5
  %830 = getelementptr inbounds double, ptr %829, i64 1
  call void @dscal_(ptr noundef %828, ptr noundef %56, ptr noundef %830, ptr noundef @c__1)
  %831 = load double, ptr %56, align 8, !tbaa !11
  %832 = load ptr, ptr %19, align 8, !tbaa !5
  %833 = load double, ptr %832, align 8, !tbaa !11
  %834 = fmul double %833, %831
  store double %834, ptr %832, align 8, !tbaa !11
  %835 = load double, ptr %56, align 8, !tbaa !11
  %836 = load double, ptr %35, align 8, !tbaa !11
  %837 = fmul double %836, %835
  store double %837, ptr %35, align 8, !tbaa !11
  br label %838

838:                                              ; preds = %825, %819
  br label %839

839:                                              ; preds = %838, %816
  %840 = load double, ptr %59, align 8, !tbaa !11
  %841 = load ptr, ptr %20, align 8, !tbaa !5
  %842 = load i32, ptr %43, align 4, !tbaa !9
  %843 = sext i32 %842 to i64
  %844 = getelementptr inbounds double, ptr %841, i64 %843
  %845 = load double, ptr %844, align 8, !tbaa !11
  %846 = fdiv double %845, %840
  store double %846, ptr %844, align 8, !tbaa !11
  %847 = load double, ptr %35, align 8, !tbaa !11
  store double %847, ptr %28, align 8, !tbaa !11
  %848 = load ptr, ptr %20, align 8, !tbaa !5
  %849 = load i32, ptr %43, align 4, !tbaa !9
  %850 = sext i32 %849 to i64
  %851 = getelementptr inbounds double, ptr %848, i64 %850
  %852 = load double, ptr %851, align 8, !tbaa !11
  store double %852, ptr %27, align 8, !tbaa !11
  %853 = load double, ptr %27, align 8, !tbaa !11
  %854 = fcmp oge double %853, 0.000000e+00
  br i1 %854, label %855, label %857

855:                                              ; preds = %839
  %856 = load double, ptr %27, align 8, !tbaa !11
  br label %860

857:                                              ; preds = %839
  %858 = load double, ptr %27, align 8, !tbaa !11
  %859 = fneg double %858
  br label %860

860:                                              ; preds = %857, %855
  %861 = phi double [ %856, %855 ], [ %859, %857 ]
  store double %861, ptr %29, align 8, !tbaa !11
  %862 = load double, ptr %28, align 8, !tbaa !11
  %863 = load double, ptr %29, align 8, !tbaa !11
  %864 = fcmp oge double %862, %863
  br i1 %864, label %865, label %867

865:                                              ; preds = %860
  %866 = load double, ptr %28, align 8, !tbaa !11
  br label %869

867:                                              ; preds = %860
  %868 = load double, ptr %29, align 8, !tbaa !11
  br label %869

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

871:                                              ; preds = %702
  %872 = load ptr, ptr %20, align 8, !tbaa !5
  %873 = load i32, ptr %43, align 4, !tbaa !9
  %874 = sext i32 %873 to i64
  %875 = getelementptr inbounds double, ptr %872, i64 %874
  %876 = load double, ptr %875, align 8, !tbaa !11
  store double %876, ptr %27, align 8, !tbaa !11
  %877 = load double, ptr %27, align 8, !tbaa !11
  %878 = fcmp oge double %877, 0.000000e+00
  br i1 %878, label %879, label %881

879:                                              ; preds = %871
  %880 = load double, ptr %27, align 8, !tbaa !11
  br label %884

881:                                              ; preds = %871
  %882 = load double, ptr %27, align 8, !tbaa !11
  %883 = fneg double %882
  br label %884

884:                                              ; preds = %881, %879
  %885 = phi double [ %880, %879 ], [ %883, %881 ]
  store double %885, ptr %29, align 8, !tbaa !11
  %886 = load ptr, ptr %20, align 8, !tbaa !5
  %887 = load i32, ptr %44, align 4, !tbaa !9
  %888 = sext i32 %887 to i64
  %889 = getelementptr inbounds double, ptr %886, i64 %888
  %890 = load double, ptr %889, align 8, !tbaa !11
  store double %890, ptr %28, align 8, !tbaa !11
  %891 = load double, ptr %28, align 8, !tbaa !11
  %892 = fcmp oge double %891, 0.000000e+00
  br i1 %892, label %893, label %895

893:                                              ; preds = %884
  %894 = load double, ptr %28, align 8, !tbaa !11
  br label %898

895:                                              ; preds = %884
  %896 = load double, ptr %28, align 8, !tbaa !11
  %897 = fneg double %896
  br label %898

898:                                              ; preds = %895, %893
  %899 = phi double [ %894, %893 ], [ %897, %895 ]
  store double %899, ptr %30, align 8, !tbaa !11
  %900 = load double, ptr %29, align 8, !tbaa !11
  %901 = load double, ptr %30, align 8, !tbaa !11
  %902 = fcmp oge double %900, %901
  br i1 %902, label %903, label %905

903:                                              ; preds = %898
  %904 = load double, ptr %29, align 8, !tbaa !11
  br label %907

905:                                              ; preds = %898
  %906 = load double, ptr %30, align 8, !tbaa !11
  br label %907

907:                                              ; preds = %905, %903
  %908 = phi double [ %904, %903 ], [ %906, %905 ]
  store double %908, ptr %50, align 8, !tbaa !11
  %909 = load double, ptr %35, align 8, !tbaa !11
  %910 = fcmp ogt double %909, 1.000000e+00
  br i1 %910, label %911, label %951

911:                                              ; preds = %907
  %912 = load double, ptr %35, align 8, !tbaa !11
  %913 = fdiv double 1.000000e+00, %912
  store double %913, ptr %56, align 8, !tbaa !11
  %914 = load ptr, ptr %21, align 8, !tbaa !5
  %915 = load i32, ptr %44, align 4, !tbaa !9
  %916 = sext i32 %915 to i64
  %917 = getelementptr inbounds double, ptr %914, i64 %916
  %918 = load double, ptr %917, align 8, !tbaa !11
  store double %918, ptr %27, align 8, !tbaa !11
  %919 = load ptr, ptr %21, align 8, !tbaa !5
  %920 = load i32, ptr %43, align 4, !tbaa !9
  %921 = sext i32 %920 to i64
  %922 = getelementptr inbounds double, ptr %919, i64 %921
  %923 = load double, ptr %922, align 8, !tbaa !11
  store double %923, ptr %28, align 8, !tbaa !11
  %924 = load double, ptr %27, align 8, !tbaa !11
  %925 = load double, ptr %28, align 8, !tbaa !11
  %926 = fcmp oge double %924, %925
  br i1 %926, label %927, label %929

927:                                              ; preds = %911
  %928 = load double, ptr %27, align 8, !tbaa !11
  br label %931

929:                                              ; preds = %911
  %930 = load double, ptr %28, align 8, !tbaa !11
  br label %931

931:                                              ; preds = %929, %927
  %932 = phi double [ %928, %927 ], [ %930, %929 ]
  %933 = load double, ptr %53, align 8, !tbaa !11
  %934 = load double, ptr %50, align 8, !tbaa !11
  %935 = fsub double %933, %934
  %936 = load double, ptr %56, align 8, !tbaa !11
  %937 = fmul double %935, %936
  %938 = fcmp ogt double %932, %937
  br i1 %938, label %939, label %950

939:                                              ; preds = %931
  %940 = load ptr, ptr %14, align 8, !tbaa !5
  %941 = load ptr, ptr %20, align 8, !tbaa !5
  %942 = getelementptr inbounds double, ptr %941, i64 1
  call void @dscal_(ptr noundef %940, ptr noundef %56, ptr noundef %942, ptr noundef @c__1)
  %943 = load double, ptr %56, align 8, !tbaa !11
  %944 = load ptr, ptr %19, align 8, !tbaa !5
  %945 = load double, ptr %944, align 8, !tbaa !11
  %946 = fmul double %945, %943
  store double %946, ptr %944, align 8, !tbaa !11
  %947 = load double, ptr %56, align 8, !tbaa !11
  %948 = load double, ptr %35, align 8, !tbaa !11
  %949 = fmul double %948, %947
  store double %949, ptr %35, align 8, !tbaa !11
  br label %950

950:                                              ; preds = %939, %931
  br label %951

951:                                              ; preds = %950, %907
  %952 = load i32, ptr %43, align 4, !tbaa !9
  %953 = sub nsw i32 %952, 1
  store i32 %953, ptr %26, align 4, !tbaa !9
  %954 = load ptr, ptr %20, align 8, !tbaa !5
  %955 = load i32, ptr %43, align 4, !tbaa !9
  %956 = sext i32 %955 to i64
  %957 = getelementptr inbounds double, ptr %954, i64 %956
  %958 = load double, ptr %957, align 8, !tbaa !11
  %959 = load ptr, ptr %15, align 8, !tbaa !5
  %960 = load i32, ptr %43, align 4, !tbaa !9
  %961 = load i32, ptr %23, align 4, !tbaa !9
  %962 = mul nsw i32 %960, %961
  %963 = add nsw i32 %962, 1
  %964 = sext i32 %963 to i64
  %965 = getelementptr inbounds double, ptr %959, i64 %964
  %966 = load ptr, ptr %20, align 8, !tbaa !5
  %967 = getelementptr inbounds double, ptr %966, i64 1
  %968 = call double @ddot_(ptr noundef %26, ptr noundef %965, ptr noundef @c__1, ptr noundef %967, ptr noundef @c__1)
  %969 = fsub double %958, %968
  %970 = getelementptr inbounds [4 x double], ptr %36, i64 0, i64 0
  store double %969, ptr %970, align 16, !tbaa !11
  %971 = load i32, ptr %43, align 4, !tbaa !9
  %972 = sub nsw i32 %971, 1
  store i32 %972, ptr %26, align 4, !tbaa !9
  %973 = load ptr, ptr %20, align 8, !tbaa !5
  %974 = load i32, ptr %44, align 4, !tbaa !9
  %975 = sext i32 %974 to i64
  %976 = getelementptr inbounds double, ptr %973, i64 %975
  %977 = load double, ptr %976, align 8, !tbaa !11
  %978 = load ptr, ptr %15, align 8, !tbaa !5
  %979 = load i32, ptr %44, align 4, !tbaa !9
  %980 = load i32, ptr %23, align 4, !tbaa !9
  %981 = mul nsw i32 %979, %980
  %982 = add nsw i32 %981, 1
  %983 = sext i32 %982 to i64
  %984 = getelementptr inbounds double, ptr %978, i64 %983
  %985 = load ptr, ptr %20, align 8, !tbaa !5
  %986 = getelementptr inbounds double, ptr %985, i64 1
  %987 = call double @ddot_(ptr noundef %26, ptr noundef %984, ptr noundef @c__1, ptr noundef %986, ptr noundef @c__1)
  %988 = fsub double %977, %987
  %989 = getelementptr inbounds [4 x double], ptr %36, i64 0, i64 1
  store double %988, ptr %989, align 8, !tbaa !11
  %990 = load ptr, ptr %15, align 8, !tbaa !5
  %991 = load i32, ptr %43, align 4, !tbaa !9
  %992 = load i32, ptr %43, align 4, !tbaa !9
  %993 = load i32, ptr %23, align 4, !tbaa !9
  %994 = mul nsw i32 %992, %993
  %995 = add nsw i32 %991, %994
  %996 = sext i32 %995 to i64
  %997 = getelementptr inbounds double, ptr %990, i64 %996
  %998 = load ptr, ptr %16, align 8, !tbaa !5
  %999 = getelementptr inbounds [4 x double], ptr %36, i64 0, i64 0
  %1000 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_true, ptr noundef @c__2, ptr noundef @c__1, ptr noundef %34, ptr noundef @c_b21, ptr noundef %997, ptr noundef %998, ptr noundef @c_b21, ptr noundef @c_b21, ptr noundef %999, ptr noundef @c__2, ptr noundef @c_b25, ptr noundef @c_b25, ptr noundef %1000, ptr noundef @c__2, ptr noundef %51, ptr noundef %48, ptr noundef %33)
  %1001 = load i32, ptr %33, align 4, !tbaa !9
  %1002 = icmp ne i32 %1001, 0
  br i1 %1002, label %1003, label %1005

1003:                                             ; preds = %951
  %1004 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 2, ptr %1004, align 4, !tbaa !9
  br label %1005

1005:                                             ; preds = %1003, %951
  %1006 = load double, ptr %51, align 8, !tbaa !11
  %1007 = fcmp une double %1006, 1.000000e+00
  br i1 %1007, label %1008, label %1016

1008:                                             ; preds = %1005
  %1009 = load ptr, ptr %14, align 8, !tbaa !5
  %1010 = load ptr, ptr %20, align 8, !tbaa !5
  %1011 = getelementptr inbounds double, ptr %1010, i64 1
  call void @dscal_(ptr noundef %1009, ptr noundef %51, ptr noundef %1011, ptr noundef @c__1)
  %1012 = load double, ptr %51, align 8, !tbaa !11
  %1013 = load ptr, ptr %19, align 8, !tbaa !5
  %1014 = load double, ptr %1013, align 8, !tbaa !11
  %1015 = fmul double %1014, %1012
  store double %1015, ptr %1013, align 8, !tbaa !11
  br label %1016

1016:                                             ; preds = %1008, %1005
  %1017 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 0
  %1018 = load double, ptr %1017, align 16, !tbaa !11
  %1019 = load ptr, ptr %20, align 8, !tbaa !5
  %1020 = load i32, ptr %43, align 4, !tbaa !9
  %1021 = sext i32 %1020 to i64
  %1022 = getelementptr inbounds double, ptr %1019, i64 %1021
  store double %1018, ptr %1022, align 8, !tbaa !11
  %1023 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 1
  %1024 = load double, ptr %1023, align 8, !tbaa !11
  %1025 = load ptr, ptr %20, align 8, !tbaa !5
  %1026 = load i32, ptr %44, align 4, !tbaa !9
  %1027 = sext i32 %1026 to i64
  %1028 = getelementptr inbounds double, ptr %1025, i64 %1027
  store double %1024, ptr %1028, align 8, !tbaa !11
  %1029 = load ptr, ptr %20, align 8, !tbaa !5
  %1030 = load i32, ptr %43, align 4, !tbaa !9
  %1031 = sext i32 %1030 to i64
  %1032 = getelementptr inbounds double, ptr %1029, i64 %1031
  %1033 = load double, ptr %1032, align 8, !tbaa !11
  store double %1033, ptr %27, align 8, !tbaa !11
  %1034 = load double, ptr %27, align 8, !tbaa !11
  %1035 = fcmp oge double %1034, 0.000000e+00
  br i1 %1035, label %1036, label %1038

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

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

1041:                                             ; preds = %1038, %1036
  %1042 = phi double [ %1037, %1036 ], [ %1040, %1038 ]
  store double %1042, ptr %29, align 8, !tbaa !11
  %1043 = load ptr, ptr %20, align 8, !tbaa !5
  %1044 = load i32, ptr %44, align 4, !tbaa !9
  %1045 = sext i32 %1044 to i64
  %1046 = getelementptr inbounds double, ptr %1043, i64 %1045
  %1047 = load double, ptr %1046, align 8, !tbaa !11
  store double %1047, ptr %28, align 8, !tbaa !11
  %1048 = load double, ptr %28, align 8, !tbaa !11
  %1049 = fcmp oge double %1048, 0.000000e+00
  br i1 %1049, label %1050, label %1052

1050:                                             ; preds = %1041
  %1051 = load double, ptr %28, align 8, !tbaa !11
  br label %1055

1052:                                             ; preds = %1041
  %1053 = load double, ptr %28, align 8, !tbaa !11
  %1054 = fneg double %1053
  br label %1055

1055:                                             ; preds = %1052, %1050
  %1056 = phi double [ %1051, %1050 ], [ %1054, %1052 ]
  store double %1056, ptr %30, align 8, !tbaa !11
  %1057 = load double, ptr %29, align 8, !tbaa !11
  %1058 = load double, ptr %30, align 8, !tbaa !11
  %1059 = fcmp oge double %1057, %1058
  br i1 %1059, label %1060, label %1062

1060:                                             ; preds = %1055
  %1061 = load double, ptr %29, align 8, !tbaa !11
  br label %1064

1062:                                             ; preds = %1055
  %1063 = load double, ptr %30, align 8, !tbaa !11
  br label %1064

1064:                                             ; preds = %1062, %1060
  %1065 = phi double [ %1061, %1060 ], [ %1063, %1062 ]
  store double %1065, ptr %29, align 8, !tbaa !11
  %1066 = load double, ptr %29, align 8, !tbaa !11
  %1067 = load double, ptr %35, align 8, !tbaa !11
  %1068 = fcmp oge double %1066, %1067
  br i1 %1068, label %1069, label %1071

1069:                                             ; preds = %1064
  %1070 = load double, ptr %29, align 8, !tbaa !11
  br label %1073

1071:                                             ; preds = %1064
  %1072 = load double, ptr %35, align 8, !tbaa !11
  br label %1073

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

1075:                                             ; preds = %1073, %869
  br label %1076

1076:                                             ; preds = %1075, %674
  br label %1077

1077:                                             ; preds = %1076
  %1078 = load i32, ptr %38, align 4, !tbaa !9
  %1079 = add nsw i32 %1078, 1
  store i32 %1079, ptr %38, align 4, !tbaa !9
  br label %666, !llvm.loop !17

1080:                                             ; preds = %666
  br label %1081

1081:                                             ; preds = %1080, %662
  br label %2653

1082:                                             ; preds = %262
  %1083 = load double, ptr %57, align 8, !tbaa !11
  %1084 = load ptr, ptr %18, align 8, !tbaa !5
  %1085 = load double, ptr %1084, align 8, !tbaa !11
  %1086 = fcmp oge double %1085, 0.000000e+00
  br i1 %1086, label %1087, label %1090

1087:                                             ; preds = %1082
  %1088 = load ptr, ptr %18, align 8, !tbaa !5
  %1089 = load double, ptr %1088, align 8, !tbaa !11
  br label %1094

1090:                                             ; preds = %1082
  %1091 = load ptr, ptr %18, align 8, !tbaa !5
  %1092 = load double, ptr %1091, align 8, !tbaa !11
  %1093 = fneg double %1092
  br label %1094

1094:                                             ; preds = %1090, %1087
  %1095 = phi double [ %1089, %1087 ], [ %1093, %1090 ]
  %1096 = fmul double %1083, %1095
  store double %1096, ptr %27, align 8, !tbaa !11
  %1097 = load double, ptr %27, align 8, !tbaa !11
  %1098 = load double, ptr %34, align 8, !tbaa !11
  %1099 = fcmp oge double %1097, %1098
  br i1 %1099, label %1100, label %1102

1100:                                             ; preds = %1094
  %1101 = load double, ptr %27, align 8, !tbaa !11
  br label %1104

1102:                                             ; preds = %1094
  %1103 = load double, ptr %34, align 8, !tbaa !11
  br label %1104

1104:                                             ; preds = %1102, %1100
  %1105 = phi double [ %1101, %1100 ], [ %1103, %1102 ]
  store double %1105, ptr %45, align 8, !tbaa !11
  %1106 = load i32, ptr %54, align 4, !tbaa !9
  %1107 = icmp ne i32 %1106, 0
  br i1 %1107, label %1108, label %1884

1108:                                             ; preds = %1104
  %1109 = load ptr, ptr %14, align 8, !tbaa !5
  %1110 = load i32, ptr %1109, align 4, !tbaa !9
  store i32 %1110, ptr %42, align 4, !tbaa !9
  %1111 = load ptr, ptr %14, align 8, !tbaa !5
  %1112 = load i32, ptr %1111, align 4, !tbaa !9
  store i32 %1112, ptr %38, align 4, !tbaa !9
  br label %1113

1113:                                             ; preds = %1880, %1108
  %1114 = load i32, ptr %38, align 4, !tbaa !9
  %1115 = icmp sge i32 %1114, 1
  br i1 %1115, label %1116, label %1883

1116:                                             ; preds = %1113
  %1117 = load i32, ptr %38, align 4, !tbaa !9
  %1118 = load i32, ptr %42, align 4, !tbaa !9
  %1119 = icmp sgt i32 %1117, %1118
  br i1 %1119, label %1120, label %1121

1120:                                             ; preds = %1116
  br label %1879

1121:                                             ; preds = %1116
  %1122 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %1122, ptr %43, align 4, !tbaa !9
  %1123 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %1123, ptr %44, align 4, !tbaa !9
  %1124 = load i32, ptr %38, align 4, !tbaa !9
  %1125 = sub nsw i32 %1124, 1
  store i32 %1125, ptr %42, align 4, !tbaa !9
  %1126 = load i32, ptr %38, align 4, !tbaa !9
  %1127 = icmp sgt i32 %1126, 1
  br i1 %1127, label %1128, label %1146

1128:                                             ; preds = %1121
  %1129 = load ptr, ptr %15, align 8, !tbaa !5
  %1130 = load i32, ptr %38, align 4, !tbaa !9
  %1131 = load i32, ptr %38, align 4, !tbaa !9
  %1132 = sub nsw i32 %1131, 1
  %1133 = load i32, ptr %23, align 4, !tbaa !9
  %1134 = mul nsw i32 %1132, %1133
  %1135 = add nsw i32 %1130, %1134
  %1136 = sext i32 %1135 to i64
  %1137 = getelementptr inbounds double, ptr %1129, i64 %1136
  %1138 = load double, ptr %1137, align 8, !tbaa !11
  %1139 = fcmp une double %1138, 0.000000e+00
  br i1 %1139, label %1140, label %1145

1140:                                             ; preds = %1128
  %1141 = load i32, ptr %38, align 4, !tbaa !9
  %1142 = sub nsw i32 %1141, 1
  store i32 %1142, ptr %43, align 4, !tbaa !9
  %1143 = load i32, ptr %38, align 4, !tbaa !9
  %1144 = sub nsw i32 %1143, 2
  store i32 %1144, ptr %42, align 4, !tbaa !9
  br label %1145

1145:                                             ; preds = %1140, %1128
  br label %1146

1146:                                             ; preds = %1145, %1121
  %1147 = load i32, ptr %43, align 4, !tbaa !9
  %1148 = load i32, ptr %44, align 4, !tbaa !9
  %1149 = icmp eq i32 %1147, %1148
  br i1 %1149, label %1150, label %1478

1150:                                             ; preds = %1146
  %1151 = load ptr, ptr %18, align 8, !tbaa !5
  %1152 = load double, ptr %1151, align 8, !tbaa !11
  store double %1152, ptr %41, align 8, !tbaa !11
  %1153 = load i32, ptr %43, align 4, !tbaa !9
  %1154 = icmp eq i32 %1153, 1
  br i1 %1154, label %1155, label %1159

1155:                                             ; preds = %1150
  %1156 = load ptr, ptr %17, align 8, !tbaa !5
  %1157 = getelementptr inbounds double, ptr %1156, i64 1
  %1158 = load double, ptr %1157, align 8, !tbaa !11
  store double %1158, ptr %41, align 8, !tbaa !11
  br label %1159

1159:                                             ; preds = %1155, %1150
  %1160 = load ptr, ptr %20, align 8, !tbaa !5
  %1161 = load i32, ptr %43, align 4, !tbaa !9
  %1162 = sext i32 %1161 to i64
  %1163 = getelementptr inbounds double, ptr %1160, i64 %1162
  %1164 = load double, ptr %1163, align 8, !tbaa !11
  store double %1164, ptr %27, align 8, !tbaa !11
  %1165 = load double, ptr %27, align 8, !tbaa !11
  %1166 = fcmp oge double %1165, 0.000000e+00
  br i1 %1166, label %1167, label %1169

1167:                                             ; preds = %1159
  %1168 = load double, ptr %27, align 8, !tbaa !11
  br label %1172

1169:                                             ; preds = %1159
  %1170 = load double, ptr %27, align 8, !tbaa !11
  %1171 = fneg double %1170
  br label %1172

1172:                                             ; preds = %1169, %1167
  %1173 = phi double [ %1168, %1167 ], [ %1171, %1169 ]
  %1174 = load ptr, ptr %20, align 8, !tbaa !5
  %1175 = load ptr, ptr %14, align 8, !tbaa !5
  %1176 = load i32, ptr %1175, align 4, !tbaa !9
  %1177 = load i32, ptr %43, align 4, !tbaa !9
  %1178 = add nsw i32 %1176, %1177
  %1179 = sext i32 %1178 to i64
  %1180 = getelementptr inbounds double, ptr %1174, i64 %1179
  %1181 = load double, ptr %1180, align 8, !tbaa !11
  store double %1181, ptr %28, align 8, !tbaa !11
  %1182 = load double, ptr %28, align 8, !tbaa !11
  %1183 = fcmp oge double %1182, 0.000000e+00
  br i1 %1183, label %1184, label %1186

1184:                                             ; preds = %1172
  %1185 = load double, ptr %28, align 8, !tbaa !11
  br label %1189

1186:                                             ; preds = %1172
  %1187 = load double, ptr %28, align 8, !tbaa !11
  %1188 = fneg double %1187
  br label %1189

1189:                                             ; preds = %1186, %1184
  %1190 = phi double [ %1185, %1184 ], [ %1188, %1186 ]
  %1191 = fadd double %1173, %1190
  store double %1191, ptr %50, align 8, !tbaa !11
  %1192 = load ptr, ptr %15, align 8, !tbaa !5
  %1193 = load i32, ptr %43, align 4, !tbaa !9
  %1194 = load i32, ptr %43, align 4, !tbaa !9
  %1195 = load i32, ptr %23, align 4, !tbaa !9
  %1196 = mul nsw i32 %1194, %1195
  %1197 = add nsw i32 %1193, %1196
  %1198 = sext i32 %1197 to i64
  %1199 = getelementptr inbounds double, ptr %1192, i64 %1198
  %1200 = load double, ptr %1199, align 8, !tbaa !11
  store double %1200, ptr %27, align 8, !tbaa !11
  %1201 = load double, ptr %27, align 8, !tbaa !11
  %1202 = fcmp oge double %1201, 0.000000e+00
  br i1 %1202, label %1203, label %1205

1203:                                             ; preds = %1189
  %1204 = load double, ptr %27, align 8, !tbaa !11
  br label %1208

1205:                                             ; preds = %1189
  %1206 = load double, ptr %27, align 8, !tbaa !11
  %1207 = fneg double %1206
  br label %1208

1208:                                             ; preds = %1205, %1203
  %1209 = phi double [ %1204, %1203 ], [ %1207, %1205 ]
  %1210 = load double, ptr %41, align 8, !tbaa !11
  %1211 = fcmp oge double %1210, 0.000000e+00
  br i1 %1211, label %1212, label %1214

1212:                                             ; preds = %1208
  %1213 = load double, ptr %41, align 8, !tbaa !11
  br label %1217

1214:                                             ; preds = %1208
  %1215 = load double, ptr %41, align 8, !tbaa !11
  %1216 = fneg double %1215
  br label %1217

1217:                                             ; preds = %1214, %1212
  %1218 = phi double [ %1213, %1212 ], [ %1216, %1214 ]
  %1219 = fadd double %1209, %1218
  store double %1219, ptr %58, align 8, !tbaa !11
  %1220 = load ptr, ptr %15, align 8, !tbaa !5
  %1221 = load i32, ptr %43, align 4, !tbaa !9
  %1222 = load i32, ptr %43, align 4, !tbaa !9
  %1223 = load i32, ptr %23, align 4, !tbaa !9
  %1224 = mul nsw i32 %1222, %1223
  %1225 = add nsw i32 %1221, %1224
  %1226 = sext i32 %1225 to i64
  %1227 = getelementptr inbounds double, ptr %1220, i64 %1226
  %1228 = load double, ptr %1227, align 8, !tbaa !11
  store double %1228, ptr %59, align 8, !tbaa !11
  %1229 = load double, ptr %58, align 8, !tbaa !11
  %1230 = load double, ptr %45, align 8, !tbaa !11
  %1231 = fcmp olt double %1229, %1230
  br i1 %1231, label %1232, label %1236

1232:                                             ; preds = %1217
  %1233 = load double, ptr %45, align 8, !tbaa !11
  store double %1233, ptr %59, align 8, !tbaa !11
  %1234 = load double, ptr %45, align 8, !tbaa !11
  store double %1234, ptr %58, align 8, !tbaa !11
  %1235 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 1, ptr %1235, align 4, !tbaa !9
  br label %1236

1236:                                             ; preds = %1232, %1217
  %1237 = load double, ptr %50, align 8, !tbaa !11
  %1238 = fcmp oeq double %1237, 0.000000e+00
  br i1 %1238, label %1239, label %1240

1239:                                             ; preds = %1236
  br label %1879

1240:                                             ; preds = %1236
  %1241 = load double, ptr %58, align 8, !tbaa !11
  %1242 = fcmp olt double %1241, 1.000000e+00
  br i1 %1242, label %1243, label %1262

1243:                                             ; preds = %1240
  %1244 = load double, ptr %50, align 8, !tbaa !11
  %1245 = load double, ptr %53, align 8, !tbaa !11
  %1246 = load double, ptr %58, align 8, !tbaa !11
  %1247 = fmul double %1245, %1246
  %1248 = fcmp ogt double %1244, %1247
  br i1 %1248, label %1249, label %1261

1249:                                             ; preds = %1243
  %1250 = load double, ptr %50, align 8, !tbaa !11
  %1251 = fdiv double 1.000000e+00, %1250
  store double %1251, ptr %56, align 8, !tbaa !11
  %1252 = load ptr, ptr %20, align 8, !tbaa !5
  %1253 = getelementptr inbounds double, ptr %1252, i64 1
  call void @dscal_(ptr noundef %47, ptr noundef %56, ptr noundef %1253, ptr noundef @c__1)
  %1254 = load double, ptr %56, align 8, !tbaa !11
  %1255 = load ptr, ptr %19, align 8, !tbaa !5
  %1256 = load double, ptr %1255, align 8, !tbaa !11
  %1257 = fmul double %1256, %1254
  store double %1257, ptr %1255, align 8, !tbaa !11
  %1258 = load double, ptr %56, align 8, !tbaa !11
  %1259 = load double, ptr %35, align 8, !tbaa !11
  %1260 = fmul double %1259, %1258
  store double %1260, ptr %35, align 8, !tbaa !11
  br label %1261

1261:                                             ; preds = %1249, %1243
  br label %1262

1262:                                             ; preds = %1261, %1240
  %1263 = load ptr, ptr %20, align 8, !tbaa !5
  %1264 = load i32, ptr %43, align 4, !tbaa !9
  %1265 = sext i32 %1264 to i64
  %1266 = getelementptr inbounds double, ptr %1263, i64 %1265
  %1267 = load ptr, ptr %20, align 8, !tbaa !5
  %1268 = load ptr, ptr %14, align 8, !tbaa !5
  %1269 = load i32, ptr %1268, align 4, !tbaa !9
  %1270 = load i32, ptr %43, align 4, !tbaa !9
  %1271 = add nsw i32 %1269, %1270
  %1272 = sext i32 %1271 to i64
  %1273 = getelementptr inbounds double, ptr %1267, i64 %1272
  call void @dladiv_(ptr noundef %1266, ptr noundef %1273, ptr noundef %59, ptr noundef %41, ptr noundef %52, ptr noundef %49)
  %1274 = load double, ptr %52, align 8, !tbaa !11
  %1275 = load ptr, ptr %20, align 8, !tbaa !5
  %1276 = load i32, ptr %43, align 4, !tbaa !9
  %1277 = sext i32 %1276 to i64
  %1278 = getelementptr inbounds double, ptr %1275, i64 %1277
  store double %1274, ptr %1278, align 8, !tbaa !11
  %1279 = load double, ptr %49, align 8, !tbaa !11
  %1280 = load ptr, ptr %20, align 8, !tbaa !5
  %1281 = load ptr, ptr %14, align 8, !tbaa !5
  %1282 = load i32, ptr %1281, align 4, !tbaa !9
  %1283 = load i32, ptr %43, align 4, !tbaa !9
  %1284 = add nsw i32 %1282, %1283
  %1285 = sext i32 %1284 to i64
  %1286 = getelementptr inbounds double, ptr %1280, i64 %1285
  store double %1279, ptr %1286, align 8, !tbaa !11
  %1287 = load ptr, ptr %20, align 8, !tbaa !5
  %1288 = load i32, ptr %43, align 4, !tbaa !9
  %1289 = sext i32 %1288 to i64
  %1290 = getelementptr inbounds double, ptr %1287, i64 %1289
  %1291 = load double, ptr %1290, align 8, !tbaa !11
  store double %1291, ptr %27, align 8, !tbaa !11
  %1292 = load double, ptr %27, align 8, !tbaa !11
  %1293 = fcmp oge double %1292, 0.000000e+00
  br i1 %1293, label %1294, label %1296

1294:                                             ; preds = %1262
  %1295 = load double, ptr %27, align 8, !tbaa !11
  br label %1299

1296:                                             ; preds = %1262
  %1297 = load double, ptr %27, align 8, !tbaa !11
  %1298 = fneg double %1297
  br label %1299

1299:                                             ; preds = %1296, %1294
  %1300 = phi double [ %1295, %1294 ], [ %1298, %1296 ]
  %1301 = load ptr, ptr %20, align 8, !tbaa !5
  %1302 = load ptr, ptr %14, align 8, !tbaa !5
  %1303 = load i32, ptr %1302, align 4, !tbaa !9
  %1304 = load i32, ptr %43, align 4, !tbaa !9
  %1305 = add nsw i32 %1303, %1304
  %1306 = sext i32 %1305 to i64
  %1307 = getelementptr inbounds double, ptr %1301, i64 %1306
  %1308 = load double, ptr %1307, align 8, !tbaa !11
  store double %1308, ptr %28, align 8, !tbaa !11
  %1309 = load double, ptr %28, align 8, !tbaa !11
  %1310 = fcmp oge double %1309, 0.000000e+00
  br i1 %1310, label %1311, label %1313

1311:                                             ; preds = %1299
  %1312 = load double, ptr %28, align 8, !tbaa !11
  br label %1316

1313:                                             ; preds = %1299
  %1314 = load double, ptr %28, align 8, !tbaa !11
  %1315 = fneg double %1314
  br label %1316

1316:                                             ; preds = %1313, %1311
  %1317 = phi double [ %1312, %1311 ], [ %1315, %1313 ]
  %1318 = fadd double %1300, %1317
  store double %1318, ptr %50, align 8, !tbaa !11
  %1319 = load double, ptr %50, align 8, !tbaa !11
  %1320 = fcmp ogt double %1319, 1.000000e+00
  br i1 %1320, label %1321, label %1343

1321:                                             ; preds = %1316
  %1322 = load double, ptr %50, align 8, !tbaa !11
  %1323 = fdiv double 1.000000e+00, %1322
  store double %1323, ptr %56, align 8, !tbaa !11
  %1324 = load ptr, ptr %21, align 8, !tbaa !5
  %1325 = load i32, ptr %43, align 4, !tbaa !9
  %1326 = sext i32 %1325 to i64
  %1327 = getelementptr inbounds double, ptr %1324, i64 %1326
  %1328 = load double, ptr %1327, align 8, !tbaa !11
  %1329 = load double, ptr %53, align 8, !tbaa !11
  %1330 = load double, ptr %35, align 8, !tbaa !11
  %1331 = fsub double %1329, %1330
  %1332 = load double, ptr %56, align 8, !tbaa !11
  %1333 = fmul double %1331, %1332
  %1334 = fcmp ogt double %1328, %1333
  br i1 %1334, label %1335, label %1342

1335:                                             ; preds = %1321
  %1336 = load ptr, ptr %20, align 8, !tbaa !5
  %1337 = getelementptr inbounds double, ptr %1336, i64 1
  call void @dscal_(ptr noundef %47, ptr noundef %56, ptr noundef %1337, ptr noundef @c__1)
  %1338 = load double, ptr %56, align 8, !tbaa !11
  %1339 = load ptr, ptr %19, align 8, !tbaa !5
  %1340 = load double, ptr %1339, align 8, !tbaa !11
  %1341 = fmul double %1340, %1338
  store double %1341, ptr %1339, align 8, !tbaa !11
  br label %1342

1342:                                             ; preds = %1335, %1321
  br label %1343

1343:                                             ; preds = %1342, %1316
  %1344 = load i32, ptr %43, align 4, !tbaa !9
  %1345 = icmp sgt i32 %1344, 1
  br i1 %1345, label %1346, label %1477

1346:                                             ; preds = %1343
  %1347 = load i32, ptr %43, align 4, !tbaa !9
  %1348 = sub nsw i32 %1347, 1
  store i32 %1348, ptr %25, align 4, !tbaa !9
  %1349 = load ptr, ptr %20, align 8, !tbaa !5
  %1350 = load i32, ptr %43, align 4, !tbaa !9
  %1351 = sext i32 %1350 to i64
  %1352 = getelementptr inbounds double, ptr %1349, i64 %1351
  %1353 = load double, ptr %1352, align 8, !tbaa !11
  %1354 = fneg double %1353
  store double %1354, ptr %27, align 8, !tbaa !11
  %1355 = load ptr, ptr %15, align 8, !tbaa !5
  %1356 = load i32, ptr %43, align 4, !tbaa !9
  %1357 = load i32, ptr %23, align 4, !tbaa !9
  %1358 = mul nsw i32 %1356, %1357
  %1359 = add nsw i32 %1358, 1
  %1360 = sext i32 %1359 to i64
  %1361 = getelementptr inbounds double, ptr %1355, i64 %1360
  %1362 = load ptr, ptr %20, align 8, !tbaa !5
  %1363 = getelementptr inbounds double, ptr %1362, i64 1
  call void @daxpy_(ptr noundef %25, ptr noundef %27, ptr noundef %1361, ptr noundef @c__1, ptr noundef %1363, ptr noundef @c__1)
  %1364 = load i32, ptr %43, align 4, !tbaa !9
  %1365 = sub nsw i32 %1364, 1
  store i32 %1365, ptr %25, align 4, !tbaa !9
  %1366 = load ptr, ptr %20, align 8, !tbaa !5
  %1367 = load ptr, ptr %14, align 8, !tbaa !5
  %1368 = load i32, ptr %1367, align 4, !tbaa !9
  %1369 = load i32, ptr %43, align 4, !tbaa !9
  %1370 = add nsw i32 %1368, %1369
  %1371 = sext i32 %1370 to i64
  %1372 = getelementptr inbounds double, ptr %1366, i64 %1371
  %1373 = load double, ptr %1372, align 8, !tbaa !11
  %1374 = fneg double %1373
  store double %1374, ptr %27, align 8, !tbaa !11
  %1375 = load ptr, ptr %15, align 8, !tbaa !5
  %1376 = load i32, ptr %43, align 4, !tbaa !9
  %1377 = load i32, ptr %23, align 4, !tbaa !9
  %1378 = mul nsw i32 %1376, %1377
  %1379 = add nsw i32 %1378, 1
  %1380 = sext i32 %1379 to i64
  %1381 = getelementptr inbounds double, ptr %1375, i64 %1380
  %1382 = load ptr, ptr %20, align 8, !tbaa !5
  %1383 = load ptr, ptr %14, align 8, !tbaa !5
  %1384 = load i32, ptr %1383, align 4, !tbaa !9
  %1385 = add nsw i32 %1384, 1
  %1386 = sext i32 %1385 to i64
  %1387 = getelementptr inbounds double, ptr %1382, i64 %1386
  call void @daxpy_(ptr noundef %25, ptr noundef %27, ptr noundef %1381, ptr noundef @c__1, ptr noundef %1387, ptr noundef @c__1)
  %1388 = load ptr, ptr %17, align 8, !tbaa !5
  %1389 = load i32, ptr %43, align 4, !tbaa !9
  %1390 = sext i32 %1389 to i64
  %1391 = getelementptr inbounds double, ptr %1388, i64 %1390
  %1392 = load double, ptr %1391, align 8, !tbaa !11
  %1393 = load ptr, ptr %20, align 8, !tbaa !5
  %1394 = load ptr, ptr %14, align 8, !tbaa !5
  %1395 = load i32, ptr %1394, align 4, !tbaa !9
  %1396 = load i32, ptr %43, align 4, !tbaa !9
  %1397 = add nsw i32 %1395, %1396
  %1398 = sext i32 %1397 to i64
  %1399 = getelementptr inbounds double, ptr %1393, i64 %1398
  %1400 = load double, ptr %1399, align 8, !tbaa !11
  %1401 = load ptr, ptr %20, align 8, !tbaa !5
  %1402 = getelementptr inbounds double, ptr %1401, i64 1
  %1403 = load double, ptr %1402, align 8, !tbaa !11
  %1404 = call double @llvm.fmuladd.f64(double %1392, double %1400, double %1403)
  store double %1404, ptr %1402, align 8, !tbaa !11
  %1405 = load ptr, ptr %17, align 8, !tbaa !5
  %1406 = load i32, ptr %43, align 4, !tbaa !9
  %1407 = sext i32 %1406 to i64
  %1408 = getelementptr inbounds double, ptr %1405, i64 %1407
  %1409 = load double, ptr %1408, align 8, !tbaa !11
  %1410 = load ptr, ptr %20, align 8, !tbaa !5
  %1411 = load i32, ptr %43, align 4, !tbaa !9
  %1412 = sext i32 %1411 to i64
  %1413 = getelementptr inbounds double, ptr %1410, i64 %1412
  %1414 = load double, ptr %1413, align 8, !tbaa !11
  %1415 = load ptr, ptr %20, align 8, !tbaa !5
  %1416 = load ptr, ptr %14, align 8, !tbaa !5
  %1417 = load i32, ptr %1416, align 4, !tbaa !9
  %1418 = add nsw i32 %1417, 1
  %1419 = sext i32 %1418 to i64
  %1420 = getelementptr inbounds double, ptr %1415, i64 %1419
  %1421 = load double, ptr %1420, align 8, !tbaa !11
  %1422 = fneg double %1409
  %1423 = call double @llvm.fmuladd.f64(double %1422, double %1414, double %1421)
  store double %1423, ptr %1420, align 8, !tbaa !11
  store double 0.000000e+00, ptr %35, align 8, !tbaa !11
  %1424 = load i32, ptr %43, align 4, !tbaa !9
  %1425 = sub nsw i32 %1424, 1
  store i32 %1425, ptr %25, align 4, !tbaa !9
  store i32 1, ptr %39, align 4, !tbaa !9
  br label %1426

1426:                                             ; preds = %1473, %1346
  %1427 = load i32, ptr %39, align 4, !tbaa !9
  %1428 = load i32, ptr %25, align 4, !tbaa !9
  %1429 = icmp sle i32 %1427, %1428
  br i1 %1429, label %1430, label %1476

1430:                                             ; preds = %1426
  %1431 = load double, ptr %35, align 8, !tbaa !11
  store double %1431, ptr %29, align 8, !tbaa !11
  %1432 = load ptr, ptr %20, align 8, !tbaa !5
  %1433 = load i32, ptr %39, align 4, !tbaa !9
  %1434 = sext i32 %1433 to i64
  %1435 = getelementptr inbounds double, ptr %1432, i64 %1434
  %1436 = load double, ptr %1435, align 8, !tbaa !11
  store double %1436, ptr %27, align 8, !tbaa !11
  %1437 = load double, ptr %27, align 8, !tbaa !11
  %1438 = fcmp oge double %1437, 0.000000e+00
  br i1 %1438, label %1439, label %1441

1439:                                             ; preds = %1430
  %1440 = load double, ptr %27, align 8, !tbaa !11
  br label %1444

1441:                                             ; preds = %1430
  %1442 = load double, ptr %27, align 8, !tbaa !11
  %1443 = fneg double %1442
  br label %1444

1444:                                             ; preds = %1441, %1439
  %1445 = phi double [ %1440, %1439 ], [ %1443, %1441 ]
  %1446 = load ptr, ptr %20, align 8, !tbaa !5
  %1447 = load i32, ptr %39, align 4, !tbaa !9
  %1448 = load ptr, ptr %14, align 8, !tbaa !5
  %1449 = load i32, ptr %1448, align 4, !tbaa !9
  %1450 = add nsw i32 %1447, %1449
  %1451 = sext i32 %1450 to i64
  %1452 = getelementptr inbounds double, ptr %1446, i64 %1451
  %1453 = load double, ptr %1452, align 8, !tbaa !11
  store double %1453, ptr %28, align 8, !tbaa !11
  %1454 = load double, ptr %28, align 8, !tbaa !11
  %1455 = fcmp oge double %1454, 0.000000e+00
  br i1 %1455, label %1456, label %1458

1456:                                             ; preds = %1444
  %1457 = load double, ptr %28, align 8, !tbaa !11
  br label %1461

1458:                                             ; preds = %1444
  %1459 = load double, ptr %28, align 8, !tbaa !11
  %1460 = fneg double %1459
  br label %1461

1461:                                             ; preds = %1458, %1456
  %1462 = phi double [ %1457, %1456 ], [ %1460, %1458 ]
  %1463 = fadd double %1445, %1462
  store double %1463, ptr %30, align 8, !tbaa !11
  %1464 = load double, ptr %29, align 8, !tbaa !11
  %1465 = load double, ptr %30, align 8, !tbaa !11
  %1466 = fcmp oge double %1464, %1465
  br i1 %1466, label %1467, label %1469

1467:                                             ; preds = %1461
  %1468 = load double, ptr %29, align 8, !tbaa !11
  br label %1471

1469:                                             ; preds = %1461
  %1470 = load double, ptr %30, align 8, !tbaa !11
  br label %1471

1471:                                             ; preds = %1469, %1467
  %1472 = phi double [ %1468, %1467 ], [ %1470, %1469 ]
  store double %1472, ptr %35, align 8, !tbaa !11
  br label %1473

1473:                                             ; preds = %1471
  %1474 = load i32, ptr %39, align 4, !tbaa !9
  %1475 = add nsw i32 %1474, 1
  store i32 %1475, ptr %39, align 4, !tbaa !9
  br label %1426, !llvm.loop !18

1476:                                             ; preds = %1426
  br label %1477

1477:                                             ; preds = %1476, %1343
  br label %1878

1478:                                             ; preds = %1146
  %1479 = load ptr, ptr %20, align 8, !tbaa !5
  %1480 = load i32, ptr %43, align 4, !tbaa !9
  %1481 = sext i32 %1480 to i64
  %1482 = getelementptr inbounds double, ptr %1479, i64 %1481
  %1483 = load double, ptr %1482, align 8, !tbaa !11
  %1484 = getelementptr inbounds [4 x double], ptr %36, i64 0, i64 0
  store double %1483, ptr %1484, align 16, !tbaa !11
  %1485 = load ptr, ptr %20, align 8, !tbaa !5
  %1486 = load i32, ptr %44, align 4, !tbaa !9
  %1487 = sext i32 %1486 to i64
  %1488 = getelementptr inbounds double, ptr %1485, i64 %1487
  %1489 = load double, ptr %1488, align 8, !tbaa !11
  %1490 = getelementptr inbounds [4 x double], ptr %36, i64 0, i64 1
  store double %1489, ptr %1490, align 8, !tbaa !11
  %1491 = load ptr, ptr %20, align 8, !tbaa !5
  %1492 = load ptr, ptr %14, align 8, !tbaa !5
  %1493 = load i32, ptr %1492, align 4, !tbaa !9
  %1494 = load i32, ptr %43, align 4, !tbaa !9
  %1495 = add nsw i32 %1493, %1494
  %1496 = sext i32 %1495 to i64
  %1497 = getelementptr inbounds double, ptr %1491, i64 %1496
  %1498 = load double, ptr %1497, align 8, !tbaa !11
  %1499 = getelementptr inbounds [4 x double], ptr %36, i64 0, i64 2
  store double %1498, ptr %1499, align 16, !tbaa !11
  %1500 = load ptr, ptr %20, align 8, !tbaa !5
  %1501 = load ptr, ptr %14, align 8, !tbaa !5
  %1502 = load i32, ptr %1501, align 4, !tbaa !9
  %1503 = load i32, ptr %44, align 4, !tbaa !9
  %1504 = add nsw i32 %1502, %1503
  %1505 = sext i32 %1504 to i64
  %1506 = getelementptr inbounds double, ptr %1500, i64 %1505
  %1507 = load double, ptr %1506, align 8, !tbaa !11
  %1508 = getelementptr inbounds [4 x double], ptr %36, i64 0, i64 3
  store double %1507, ptr %1508, align 8, !tbaa !11
  %1509 = load ptr, ptr %18, align 8, !tbaa !5
  %1510 = load double, ptr %1509, align 8, !tbaa !11
  %1511 = fneg double %1510
  store double %1511, ptr %27, align 8, !tbaa !11
  %1512 = load ptr, ptr %15, align 8, !tbaa !5
  %1513 = load i32, ptr %43, align 4, !tbaa !9
  %1514 = load i32, ptr %43, align 4, !tbaa !9
  %1515 = load i32, ptr %23, align 4, !tbaa !9
  %1516 = mul nsw i32 %1514, %1515
  %1517 = add nsw i32 %1513, %1516
  %1518 = sext i32 %1517 to i64
  %1519 = getelementptr inbounds double, ptr %1512, i64 %1518
  %1520 = load ptr, ptr %16, align 8, !tbaa !5
  %1521 = getelementptr inbounds [4 x double], ptr %36, i64 0, i64 0
  %1522 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_false, ptr noundef @c__2, ptr noundef @c__2, ptr noundef %45, ptr noundef @c_b21, ptr noundef %1519, ptr noundef %1520, ptr noundef @c_b21, ptr noundef @c_b21, ptr noundef %1521, ptr noundef @c__2, ptr noundef @c_b25, ptr noundef %27, ptr noundef %1522, ptr noundef @c__2, ptr noundef %51, ptr noundef %48, ptr noundef %33)
  %1523 = load i32, ptr %33, align 4, !tbaa !9
  %1524 = icmp ne i32 %1523, 0
  br i1 %1524, label %1525, label %1527

1525:                                             ; preds = %1478
  %1526 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 2, ptr %1526, align 4, !tbaa !9
  br label %1527

1527:                                             ; preds = %1525, %1478
  %1528 = load double, ptr %51, align 8, !tbaa !11
  %1529 = fcmp une double %1528, 1.000000e+00
  br i1 %1529, label %1530, label %1541

1530:                                             ; preds = %1527
  %1531 = load ptr, ptr %14, align 8, !tbaa !5
  %1532 = load i32, ptr %1531, align 4, !tbaa !9
  %1533 = shl i32 %1532, 1
  store i32 %1533, ptr %25, align 4, !tbaa !9
  %1534 = load ptr, ptr %20, align 8, !tbaa !5
  %1535 = getelementptr inbounds double, ptr %1534, i64 1
  call void @dscal_(ptr noundef %25, ptr noundef %51, ptr noundef %1535, ptr noundef @c__1)
  %1536 = load double, ptr %51, align 8, !tbaa !11
  %1537 = load ptr, ptr %19, align 8, !tbaa !5
  %1538 = load double, ptr %1537, align 8, !tbaa !11
  %1539 = fmul double %1536, %1538
  %1540 = load ptr, ptr %19, align 8, !tbaa !5
  store double %1539, ptr %1540, align 8, !tbaa !11
  br label %1541

1541:                                             ; preds = %1530, %1527
  %1542 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 0
  %1543 = load double, ptr %1542, align 16, !tbaa !11
  %1544 = load ptr, ptr %20, align 8, !tbaa !5
  %1545 = load i32, ptr %43, align 4, !tbaa !9
  %1546 = sext i32 %1545 to i64
  %1547 = getelementptr inbounds double, ptr %1544, i64 %1546
  store double %1543, ptr %1547, align 8, !tbaa !11
  %1548 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 1
  %1549 = load double, ptr %1548, align 8, !tbaa !11
  %1550 = load ptr, ptr %20, align 8, !tbaa !5
  %1551 = load i32, ptr %44, align 4, !tbaa !9
  %1552 = sext i32 %1551 to i64
  %1553 = getelementptr inbounds double, ptr %1550, i64 %1552
  store double %1549, ptr %1553, align 8, !tbaa !11
  %1554 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 2
  %1555 = load double, ptr %1554, align 16, !tbaa !11
  %1556 = load ptr, ptr %20, align 8, !tbaa !5
  %1557 = load ptr, ptr %14, align 8, !tbaa !5
  %1558 = load i32, ptr %1557, align 4, !tbaa !9
  %1559 = load i32, ptr %43, align 4, !tbaa !9
  %1560 = add nsw i32 %1558, %1559
  %1561 = sext i32 %1560 to i64
  %1562 = getelementptr inbounds double, ptr %1556, i64 %1561
  store double %1555, ptr %1562, align 8, !tbaa !11
  %1563 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 3
  %1564 = load double, ptr %1563, align 8, !tbaa !11
  %1565 = load ptr, ptr %20, align 8, !tbaa !5
  %1566 = load ptr, ptr %14, align 8, !tbaa !5
  %1567 = load i32, ptr %1566, align 4, !tbaa !9
  %1568 = load i32, ptr %44, align 4, !tbaa !9
  %1569 = add nsw i32 %1567, %1568
  %1570 = sext i32 %1569 to i64
  %1571 = getelementptr inbounds double, ptr %1565, i64 %1570
  store double %1564, ptr %1571, align 8, !tbaa !11
  %1572 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 0
  %1573 = load double, ptr %1572, align 16, !tbaa !11
  %1574 = fcmp oge double %1573, 0.000000e+00
  br i1 %1574, label %1575, label %1578

1575:                                             ; preds = %1541
  %1576 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 0
  %1577 = load double, ptr %1576, align 16, !tbaa !11
  br label %1582

1578:                                             ; preds = %1541
  %1579 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 0
  %1580 = load double, ptr %1579, align 16, !tbaa !11
  %1581 = fneg double %1580
  br label %1582

1582:                                             ; preds = %1578, %1575
  %1583 = phi double [ %1577, %1575 ], [ %1581, %1578 ]
  %1584 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 2
  %1585 = load double, ptr %1584, align 16, !tbaa !11
  %1586 = fcmp oge double %1585, 0.000000e+00
  br i1 %1586, label %1587, label %1590

1587:                                             ; preds = %1582
  %1588 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 2
  %1589 = load double, ptr %1588, align 16, !tbaa !11
  br label %1594

1590:                                             ; preds = %1582
  %1591 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 2
  %1592 = load double, ptr %1591, align 16, !tbaa !11
  %1593 = fneg double %1592
  br label %1594

1594:                                             ; preds = %1590, %1587
  %1595 = phi double [ %1589, %1587 ], [ %1593, %1590 ]
  %1596 = fadd double %1583, %1595
  store double %1596, ptr %27, align 8, !tbaa !11
  %1597 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 1
  %1598 = load double, ptr %1597, align 8, !tbaa !11
  %1599 = fcmp oge double %1598, 0.000000e+00
  br i1 %1599, label %1600, label %1603

1600:                                             ; preds = %1594
  %1601 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 1
  %1602 = load double, ptr %1601, align 8, !tbaa !11
  br label %1607

1603:                                             ; preds = %1594
  %1604 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 1
  %1605 = load double, ptr %1604, align 8, !tbaa !11
  %1606 = fneg double %1605
  br label %1607

1607:                                             ; preds = %1603, %1600
  %1608 = phi double [ %1602, %1600 ], [ %1606, %1603 ]
  %1609 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 3
  %1610 = load double, ptr %1609, align 8, !tbaa !11
  %1611 = fcmp oge double %1610, 0.000000e+00
  br i1 %1611, label %1612, label %1615

1612:                                             ; preds = %1607
  %1613 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 3
  %1614 = load double, ptr %1613, align 8, !tbaa !11
  br label %1619

1615:                                             ; preds = %1607
  %1616 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 3
  %1617 = load double, ptr %1616, align 8, !tbaa !11
  %1618 = fneg double %1617
  br label %1619

1619:                                             ; preds = %1615, %1612
  %1620 = phi double [ %1614, %1612 ], [ %1618, %1615 ]
  %1621 = fadd double %1608, %1620
  store double %1621, ptr %28, align 8, !tbaa !11
  %1622 = load double, ptr %27, align 8, !tbaa !11
  %1623 = load double, ptr %28, align 8, !tbaa !11
  %1624 = fcmp oge double %1622, %1623
  br i1 %1624, label %1625, label %1627

1625:                                             ; preds = %1619
  %1626 = load double, ptr %27, align 8, !tbaa !11
  br label %1629

1627:                                             ; preds = %1619
  %1628 = load double, ptr %28, align 8, !tbaa !11
  br label %1629

1629:                                             ; preds = %1627, %1625
  %1630 = phi double [ %1626, %1625 ], [ %1628, %1627 ]
  store double %1630, ptr %50, align 8, !tbaa !11
  %1631 = load double, ptr %50, align 8, !tbaa !11
  %1632 = fcmp ogt double %1631, 1.000000e+00
  br i1 %1632, label %1633, label %1669

1633:                                             ; preds = %1629
  %1634 = load double, ptr %50, align 8, !tbaa !11
  %1635 = fdiv double 1.000000e+00, %1634
  store double %1635, ptr %56, align 8, !tbaa !11
  %1636 = load ptr, ptr %21, align 8, !tbaa !5
  %1637 = load i32, ptr %43, align 4, !tbaa !9
  %1638 = sext i32 %1637 to i64
  %1639 = getelementptr inbounds double, ptr %1636, i64 %1638
  %1640 = load double, ptr %1639, align 8, !tbaa !11
  store double %1640, ptr %27, align 8, !tbaa !11
  %1641 = load ptr, ptr %21, align 8, !tbaa !5
  %1642 = load i32, ptr %44, align 4, !tbaa !9
  %1643 = sext i32 %1642 to i64
  %1644 = getelementptr inbounds double, ptr %1641, i64 %1643
  %1645 = load double, ptr %1644, align 8, !tbaa !11
  store double %1645, ptr %28, align 8, !tbaa !11
  %1646 = load double, ptr %27, align 8, !tbaa !11
  %1647 = load double, ptr %28, align 8, !tbaa !11
  %1648 = fcmp oge double %1646, %1647
  br i1 %1648, label %1649, label %1651

1649:                                             ; preds = %1633
  %1650 = load double, ptr %27, align 8, !tbaa !11
  br label %1653

1651:                                             ; preds = %1633
  %1652 = load double, ptr %28, align 8, !tbaa !11
  br label %1653

1653:                                             ; preds = %1651, %1649
  %1654 = phi double [ %1650, %1649 ], [ %1652, %1651 ]
  %1655 = load double, ptr %53, align 8, !tbaa !11
  %1656 = load double, ptr %35, align 8, !tbaa !11
  %1657 = fsub double %1655, %1656
  %1658 = load double, ptr %56, align 8, !tbaa !11
  %1659 = fmul double %1657, %1658
  %1660 = fcmp ogt double %1654, %1659
  br i1 %1660, label %1661, label %1668

1661:                                             ; preds = %1653
  %1662 = load ptr, ptr %20, align 8, !tbaa !5
  %1663 = getelementptr inbounds double, ptr %1662, i64 1
  call void @dscal_(ptr noundef %47, ptr noundef %56, ptr noundef %1663, ptr noundef @c__1)
  %1664 = load double, ptr %56, align 8, !tbaa !11
  %1665 = load ptr, ptr %19, align 8, !tbaa !5
  %1666 = load double, ptr %1665, align 8, !tbaa !11
  %1667 = fmul double %1666, %1664
  store double %1667, ptr %1665, align 8, !tbaa !11
  br label %1668

1668:                                             ; preds = %1661, %1653
  br label %1669

1669:                                             ; preds = %1668, %1629
  %1670 = load i32, ptr %43, align 4, !tbaa !9
  %1671 = icmp sgt i32 %1670, 1
  br i1 %1671, label %1672, label %1877

1672:                                             ; preds = %1669
  %1673 = load i32, ptr %43, align 4, !tbaa !9
  %1674 = sub nsw i32 %1673, 1
  store i32 %1674, ptr %25, align 4, !tbaa !9
  %1675 = load ptr, ptr %20, align 8, !tbaa !5
  %1676 = load i32, ptr %43, align 4, !tbaa !9
  %1677 = sext i32 %1676 to i64
  %1678 = getelementptr inbounds double, ptr %1675, i64 %1677
  %1679 = load double, ptr %1678, align 8, !tbaa !11
  %1680 = fneg double %1679
  store double %1680, ptr %27, align 8, !tbaa !11
  %1681 = load ptr, ptr %15, align 8, !tbaa !5
  %1682 = load i32, ptr %43, align 4, !tbaa !9
  %1683 = load i32, ptr %23, align 4, !tbaa !9
  %1684 = mul nsw i32 %1682, %1683
  %1685 = add nsw i32 %1684, 1
  %1686 = sext i32 %1685 to i64
  %1687 = getelementptr inbounds double, ptr %1681, i64 %1686
  %1688 = load ptr, ptr %20, align 8, !tbaa !5
  %1689 = getelementptr inbounds double, ptr %1688, i64 1
  call void @daxpy_(ptr noundef %25, ptr noundef %27, ptr noundef %1687, ptr noundef @c__1, ptr noundef %1689, ptr noundef @c__1)
  %1690 = load i32, ptr %43, align 4, !tbaa !9
  %1691 = sub nsw i32 %1690, 1
  store i32 %1691, ptr %25, align 4, !tbaa !9
  %1692 = load ptr, ptr %20, align 8, !tbaa !5
  %1693 = load i32, ptr %44, align 4, !tbaa !9
  %1694 = sext i32 %1693 to i64
  %1695 = getelementptr inbounds double, ptr %1692, i64 %1694
  %1696 = load double, ptr %1695, align 8, !tbaa !11
  %1697 = fneg double %1696
  store double %1697, ptr %27, align 8, !tbaa !11
  %1698 = load ptr, ptr %15, align 8, !tbaa !5
  %1699 = load i32, ptr %44, align 4, !tbaa !9
  %1700 = load i32, ptr %23, align 4, !tbaa !9
  %1701 = mul nsw i32 %1699, %1700
  %1702 = add nsw i32 %1701, 1
  %1703 = sext i32 %1702 to i64
  %1704 = getelementptr inbounds double, ptr %1698, i64 %1703
  %1705 = load ptr, ptr %20, align 8, !tbaa !5
  %1706 = getelementptr inbounds double, ptr %1705, i64 1
  call void @daxpy_(ptr noundef %25, ptr noundef %27, ptr noundef %1704, ptr noundef @c__1, ptr noundef %1706, ptr noundef @c__1)
  %1707 = load i32, ptr %43, align 4, !tbaa !9
  %1708 = sub nsw i32 %1707, 1
  store i32 %1708, ptr %25, align 4, !tbaa !9
  %1709 = load ptr, ptr %20, align 8, !tbaa !5
  %1710 = load ptr, ptr %14, align 8, !tbaa !5
  %1711 = load i32, ptr %1710, align 4, !tbaa !9
  %1712 = load i32, ptr %43, align 4, !tbaa !9
  %1713 = add nsw i32 %1711, %1712
  %1714 = sext i32 %1713 to i64
  %1715 = getelementptr inbounds double, ptr %1709, i64 %1714
  %1716 = load double, ptr %1715, align 8, !tbaa !11
  %1717 = fneg double %1716
  store double %1717, ptr %27, align 8, !tbaa !11
  %1718 = load ptr, ptr %15, align 8, !tbaa !5
  %1719 = load i32, ptr %43, align 4, !tbaa !9
  %1720 = load i32, ptr %23, align 4, !tbaa !9
  %1721 = mul nsw i32 %1719, %1720
  %1722 = add nsw i32 %1721, 1
  %1723 = sext i32 %1722 to i64
  %1724 = getelementptr inbounds double, ptr %1718, i64 %1723
  %1725 = load ptr, ptr %20, align 8, !tbaa !5
  %1726 = load ptr, ptr %14, align 8, !tbaa !5
  %1727 = load i32, ptr %1726, align 4, !tbaa !9
  %1728 = add nsw i32 %1727, 1
  %1729 = sext i32 %1728 to i64
  %1730 = getelementptr inbounds double, ptr %1725, i64 %1729
  call void @daxpy_(ptr noundef %25, ptr noundef %27, ptr noundef %1724, ptr noundef @c__1, ptr noundef %1730, ptr noundef @c__1)
  %1731 = load i32, ptr %43, align 4, !tbaa !9
  %1732 = sub nsw i32 %1731, 1
  store i32 %1732, ptr %25, align 4, !tbaa !9
  %1733 = load ptr, ptr %20, align 8, !tbaa !5
  %1734 = load ptr, ptr %14, align 8, !tbaa !5
  %1735 = load i32, ptr %1734, align 4, !tbaa !9
  %1736 = load i32, ptr %44, align 4, !tbaa !9
  %1737 = add nsw i32 %1735, %1736
  %1738 = sext i32 %1737 to i64
  %1739 = getelementptr inbounds double, ptr %1733, i64 %1738
  %1740 = load double, ptr %1739, align 8, !tbaa !11
  %1741 = fneg double %1740
  store double %1741, ptr %27, align 8, !tbaa !11
  %1742 = load ptr, ptr %15, align 8, !tbaa !5
  %1743 = load i32, ptr %44, align 4, !tbaa !9
  %1744 = load i32, ptr %23, align 4, !tbaa !9
  %1745 = mul nsw i32 %1743, %1744
  %1746 = add nsw i32 %1745, 1
  %1747 = sext i32 %1746 to i64
  %1748 = getelementptr inbounds double, ptr %1742, i64 %1747
  %1749 = load ptr, ptr %20, align 8, !tbaa !5
  %1750 = load ptr, ptr %14, align 8, !tbaa !5
  %1751 = load i32, ptr %1750, align 4, !tbaa !9
  %1752 = add nsw i32 %1751, 1
  %1753 = sext i32 %1752 to i64
  %1754 = getelementptr inbounds double, ptr %1749, i64 %1753
  call void @daxpy_(ptr noundef %25, ptr noundef %27, ptr noundef %1748, ptr noundef @c__1, ptr noundef %1754, ptr noundef @c__1)
  %1755 = load ptr, ptr %20, align 8, !tbaa !5
  %1756 = getelementptr inbounds double, ptr %1755, i64 1
  %1757 = load double, ptr %1756, align 8, !tbaa !11
  %1758 = load ptr, ptr %17, align 8, !tbaa !5
  %1759 = load i32, ptr %43, align 4, !tbaa !9
  %1760 = sext i32 %1759 to i64
  %1761 = getelementptr inbounds double, ptr %1758, i64 %1760
  %1762 = load double, ptr %1761, align 8, !tbaa !11
  %1763 = load ptr, ptr %20, align 8, !tbaa !5
  %1764 = load ptr, ptr %14, align 8, !tbaa !5
  %1765 = load i32, ptr %1764, align 4, !tbaa !9
  %1766 = load i32, ptr %43, align 4, !tbaa !9
  %1767 = add nsw i32 %1765, %1766
  %1768 = sext i32 %1767 to i64
  %1769 = getelementptr inbounds double, ptr %1763, i64 %1768
  %1770 = load double, ptr %1769, align 8, !tbaa !11
  %1771 = call double @llvm.fmuladd.f64(double %1762, double %1770, double %1757)
  %1772 = load ptr, ptr %17, align 8, !tbaa !5
  %1773 = load i32, ptr %44, align 4, !tbaa !9
  %1774 = sext i32 %1773 to i64
  %1775 = getelementptr inbounds double, ptr %1772, i64 %1774
  %1776 = load double, ptr %1775, align 8, !tbaa !11
  %1777 = load ptr, ptr %20, align 8, !tbaa !5
  %1778 = load ptr, ptr %14, align 8, !tbaa !5
  %1779 = load i32, ptr %1778, align 4, !tbaa !9
  %1780 = load i32, ptr %44, align 4, !tbaa !9
  %1781 = add nsw i32 %1779, %1780
  %1782 = sext i32 %1781 to i64
  %1783 = getelementptr inbounds double, ptr %1777, i64 %1782
  %1784 = load double, ptr %1783, align 8, !tbaa !11
  %1785 = call double @llvm.fmuladd.f64(double %1776, double %1784, double %1771)
  %1786 = load ptr, ptr %20, align 8, !tbaa !5
  %1787 = getelementptr inbounds double, ptr %1786, i64 1
  store double %1785, ptr %1787, align 8, !tbaa !11
  %1788 = load ptr, ptr %20, align 8, !tbaa !5
  %1789 = load ptr, ptr %14, align 8, !tbaa !5
  %1790 = load i32, ptr %1789, align 4, !tbaa !9
  %1791 = add nsw i32 %1790, 1
  %1792 = sext i32 %1791 to i64
  %1793 = getelementptr inbounds double, ptr %1788, i64 %1792
  %1794 = load double, ptr %1793, align 8, !tbaa !11
  %1795 = load ptr, ptr %17, align 8, !tbaa !5
  %1796 = load i32, ptr %43, align 4, !tbaa !9
  %1797 = sext i32 %1796 to i64
  %1798 = getelementptr inbounds double, ptr %1795, i64 %1797
  %1799 = load double, ptr %1798, align 8, !tbaa !11
  %1800 = load ptr, ptr %20, align 8, !tbaa !5
  %1801 = load i32, ptr %43, 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 = fneg double %1799
  %1806 = call double @llvm.fmuladd.f64(double %1805, double %1804, double %1794)
  %1807 = load ptr, ptr %17, align 8, !tbaa !5
  %1808 = load i32, ptr %44, align 4, !tbaa !9
  %1809 = sext i32 %1808 to i64
  %1810 = getelementptr inbounds double, ptr %1807, i64 %1809
  %1811 = load double, ptr %1810, align 8, !tbaa !11
  %1812 = load ptr, ptr %20, align 8, !tbaa !5
  %1813 = load i32, ptr %44, align 4, !tbaa !9
  %1814 = sext i32 %1813 to i64
  %1815 = getelementptr inbounds double, ptr %1812, i64 %1814
  %1816 = load double, ptr %1815, align 8, !tbaa !11
  %1817 = fneg double %1811
  %1818 = call double @llvm.fmuladd.f64(double %1817, double %1816, double %1806)
  %1819 = load ptr, ptr %20, align 8, !tbaa !5
  %1820 = load ptr, ptr %14, align 8, !tbaa !5
  %1821 = load i32, ptr %1820, align 4, !tbaa !9
  %1822 = add nsw i32 %1821, 1
  %1823 = sext i32 %1822 to i64
  %1824 = getelementptr inbounds double, ptr %1819, i64 %1823
  store double %1818, ptr %1824, align 8, !tbaa !11
  store double 0.000000e+00, ptr %35, align 8, !tbaa !11
  %1825 = load i32, ptr %43, align 4, !tbaa !9
  %1826 = sub nsw i32 %1825, 1
  store i32 %1826, ptr %25, align 4, !tbaa !9
  store i32 1, ptr %39, align 4, !tbaa !9
  br label %1827

1827:                                             ; preds = %1873, %1672
  %1828 = load i32, ptr %39, align 4, !tbaa !9
  %1829 = load i32, ptr %25, align 4, !tbaa !9
  %1830 = icmp sle i32 %1828, %1829
  br i1 %1830, label %1831, label %1876

1831:                                             ; preds = %1827
  %1832 = load ptr, ptr %20, align 8, !tbaa !5
  %1833 = load i32, ptr %39, align 4, !tbaa !9
  %1834 = sext i32 %1833 to i64
  %1835 = getelementptr inbounds double, ptr %1832, i64 %1834
  %1836 = load double, ptr %1835, align 8, !tbaa !11
  store double %1836, ptr %27, align 8, !tbaa !11
  %1837 = load double, ptr %27, align 8, !tbaa !11
  %1838 = fcmp oge double %1837, 0.000000e+00
  br i1 %1838, label %1839, label %1841

1839:                                             ; preds = %1831
  %1840 = load double, ptr %27, align 8, !tbaa !11
  br label %1844

1841:                                             ; preds = %1831
  %1842 = load double, ptr %27, align 8, !tbaa !11
  %1843 = fneg double %1842
  br label %1844

1844:                                             ; preds = %1841, %1839
  %1845 = phi double [ %1840, %1839 ], [ %1843, %1841 ]
  %1846 = load ptr, ptr %20, align 8, !tbaa !5
  %1847 = load i32, ptr %39, align 4, !tbaa !9
  %1848 = load ptr, ptr %14, align 8, !tbaa !5
  %1849 = load i32, ptr %1848, align 4, !tbaa !9
  %1850 = add nsw i32 %1847, %1849
  %1851 = sext i32 %1850 to i64
  %1852 = getelementptr inbounds double, ptr %1846, i64 %1851
  %1853 = load double, ptr %1852, align 8, !tbaa !11
  store double %1853, ptr %28, align 8, !tbaa !11
  %1854 = load double, ptr %28, align 8, !tbaa !11
  %1855 = fcmp oge double %1854, 0.000000e+00
  br i1 %1855, label %1856, label %1858

1856:                                             ; preds = %1844
  %1857 = load double, ptr %28, align 8, !tbaa !11
  br label %1861

1858:                                             ; preds = %1844
  %1859 = load double, ptr %28, align 8, !tbaa !11
  %1860 = fneg double %1859
  br label %1861

1861:                                             ; preds = %1858, %1856
  %1862 = phi double [ %1857, %1856 ], [ %1860, %1858 ]
  %1863 = fadd double %1845, %1862
  store double %1863, ptr %29, align 8, !tbaa !11
  %1864 = load double, ptr %29, align 8, !tbaa !11
  %1865 = load double, ptr %35, align 8, !tbaa !11
  %1866 = fcmp oge double %1864, %1865
  br i1 %1866, label %1867, label %1869

1867:                                             ; preds = %1861
  %1868 = load double, ptr %29, align 8, !tbaa !11
  br label %1871

1869:                                             ; preds = %1861
  %1870 = load double, ptr %35, align 8, !tbaa !11
  br label %1871

1871:                                             ; preds = %1869, %1867
  %1872 = phi double [ %1868, %1867 ], [ %1870, %1869 ]
  store double %1872, ptr %35, align 8, !tbaa !11
  br label %1873

1873:                                             ; preds = %1871
  %1874 = load i32, ptr %39, align 4, !tbaa !9
  %1875 = add nsw i32 %1874, 1
  store i32 %1875, ptr %39, align 4, !tbaa !9
  br label %1827, !llvm.loop !19

1876:                                             ; preds = %1827
  br label %1877

1877:                                             ; preds = %1876, %1669
  br label %1878

1878:                                             ; preds = %1877, %1477
  br label %1879

1879:                                             ; preds = %1878, %1239, %1120
  br label %1880

1880:                                             ; preds = %1879
  %1881 = load i32, ptr %38, align 4, !tbaa !9
  %1882 = add nsw i32 %1881, -1
  store i32 %1882, ptr %38, align 4, !tbaa !9
  br label %1113, !llvm.loop !20

1883:                                             ; preds = %1113
  br label %2652

1884:                                             ; preds = %1104
  store i32 1, ptr %42, align 4, !tbaa !9
  %1885 = load ptr, ptr %14, align 8, !tbaa !5
  %1886 = load i32, ptr %1885, align 4, !tbaa !9
  store i32 %1886, ptr %25, align 4, !tbaa !9
  store i32 1, ptr %38, align 4, !tbaa !9
  br label %1887

1887:                                             ; preds = %2648, %1884
  %1888 = load i32, ptr %38, align 4, !tbaa !9
  %1889 = load i32, ptr %25, align 4, !tbaa !9
  %1890 = icmp sle i32 %1888, %1889
  br i1 %1890, label %1891, label %2651

1891:                                             ; preds = %1887
  %1892 = load i32, ptr %38, align 4, !tbaa !9
  %1893 = load i32, ptr %42, align 4, !tbaa !9
  %1894 = icmp slt i32 %1892, %1893
  br i1 %1894, label %1895, label %1896

1895:                                             ; preds = %1891
  br label %2647

1896:                                             ; preds = %1891
  %1897 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %1897, ptr %43, align 4, !tbaa !9
  %1898 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %1898, ptr %44, align 4, !tbaa !9
  %1899 = load i32, ptr %38, align 4, !tbaa !9
  %1900 = add nsw i32 %1899, 1
  store i32 %1900, ptr %42, align 4, !tbaa !9
  %1901 = load i32, ptr %38, align 4, !tbaa !9
  %1902 = load ptr, ptr %14, align 8, !tbaa !5
  %1903 = load i32, ptr %1902, align 4, !tbaa !9
  %1904 = icmp slt i32 %1901, %1903
  br i1 %1904, label %1905, label %1923

1905:                                             ; preds = %1896
  %1906 = load ptr, ptr %15, align 8, !tbaa !5
  %1907 = load i32, ptr %38, align 4, !tbaa !9
  %1908 = add nsw i32 %1907, 1
  %1909 = load i32, ptr %38, align 4, !tbaa !9
  %1910 = load i32, ptr %23, align 4, !tbaa !9
  %1911 = mul nsw i32 %1909, %1910
  %1912 = add nsw i32 %1908, %1911
  %1913 = sext i32 %1912 to i64
  %1914 = getelementptr inbounds double, ptr %1906, i64 %1913
  %1915 = load double, ptr %1914, align 8, !tbaa !11
  %1916 = fcmp une double %1915, 0.000000e+00
  br i1 %1916, label %1917, label %1922

1917:                                             ; preds = %1905
  %1918 = load i32, ptr %38, align 4, !tbaa !9
  %1919 = add nsw i32 %1918, 1
  store i32 %1919, ptr %44, align 4, !tbaa !9
  %1920 = load i32, ptr %38, align 4, !tbaa !9
  %1921 = add nsw i32 %1920, 2
  store i32 %1921, ptr %42, align 4, !tbaa !9
  br label %1922

1922:                                             ; preds = %1917, %1905
  br label %1923

1923:                                             ; preds = %1922, %1896
  %1924 = load i32, ptr %43, align 4, !tbaa !9
  %1925 = load i32, ptr %44, align 4, !tbaa !9
  %1926 = icmp eq i32 %1924, %1925
  br i1 %1926, label %1927, label %2246

1927:                                             ; preds = %1923
  %1928 = load ptr, ptr %20, align 8, !tbaa !5
  %1929 = load i32, ptr %43, align 4, !tbaa !9
  %1930 = sext i32 %1929 to i64
  %1931 = getelementptr inbounds double, ptr %1928, i64 %1930
  %1932 = load double, ptr %1931, align 8, !tbaa !11
  store double %1932, ptr %27, align 8, !tbaa !11
  %1933 = load double, ptr %27, align 8, !tbaa !11
  %1934 = fcmp oge double %1933, 0.000000e+00
  br i1 %1934, label %1935, label %1937

1935:                                             ; preds = %1927
  %1936 = load double, ptr %27, align 8, !tbaa !11
  br label %1940

1937:                                             ; preds = %1927
  %1938 = load double, ptr %27, align 8, !tbaa !11
  %1939 = fneg double %1938
  br label %1940

1940:                                             ; preds = %1937, %1935
  %1941 = phi double [ %1936, %1935 ], [ %1939, %1937 ]
  %1942 = load ptr, ptr %20, align 8, !tbaa !5
  %1943 = load i32, ptr %43, align 4, !tbaa !9
  %1944 = load ptr, ptr %14, align 8, !tbaa !5
  %1945 = load i32, ptr %1944, align 4, !tbaa !9
  %1946 = add nsw i32 %1943, %1945
  %1947 = sext i32 %1946 to i64
  %1948 = getelementptr inbounds double, ptr %1942, i64 %1947
  %1949 = load double, ptr %1948, align 8, !tbaa !11
  store double %1949, ptr %28, align 8, !tbaa !11
  %1950 = load double, ptr %28, align 8, !tbaa !11
  %1951 = fcmp oge double %1950, 0.000000e+00
  br i1 %1951, label %1952, label %1954

1952:                                             ; preds = %1940
  %1953 = load double, ptr %28, align 8, !tbaa !11
  br label %1957

1954:                                             ; preds = %1940
  %1955 = load double, ptr %28, align 8, !tbaa !11
  %1956 = fneg double %1955
  br label %1957

1957:                                             ; preds = %1954, %1952
  %1958 = phi double [ %1953, %1952 ], [ %1956, %1954 ]
  %1959 = fadd double %1941, %1958
  store double %1959, ptr %50, align 8, !tbaa !11
  %1960 = load double, ptr %35, align 8, !tbaa !11
  %1961 = fcmp ogt double %1960, 1.000000e+00
  br i1 %1961, label %1962, label %1987

1962:                                             ; preds = %1957
  %1963 = load double, ptr %35, align 8, !tbaa !11
  %1964 = fdiv double 1.000000e+00, %1963
  store double %1964, ptr %56, align 8, !tbaa !11
  %1965 = load ptr, ptr %21, align 8, !tbaa !5
  %1966 = load i32, ptr %43, align 4, !tbaa !9
  %1967 = sext i32 %1966 to i64
  %1968 = getelementptr inbounds double, ptr %1965, i64 %1967
  %1969 = load double, ptr %1968, align 8, !tbaa !11
  %1970 = load double, ptr %53, align 8, !tbaa !11
  %1971 = load double, ptr %50, align 8, !tbaa !11
  %1972 = fsub double %1970, %1971
  %1973 = load double, ptr %56, align 8, !tbaa !11
  %1974 = fmul double %1972, %1973
  %1975 = fcmp ogt double %1969, %1974
  br i1 %1975, label %1976, label %1986

1976:                                             ; preds = %1962
  %1977 = load ptr, ptr %20, align 8, !tbaa !5
  %1978 = getelementptr inbounds double, ptr %1977, i64 1
  call void @dscal_(ptr noundef %47, ptr noundef %56, ptr noundef %1978, ptr noundef @c__1)
  %1979 = load double, ptr %56, align 8, !tbaa !11
  %1980 = load ptr, ptr %19, align 8, !tbaa !5
  %1981 = load double, ptr %1980, align 8, !tbaa !11
  %1982 = fmul double %1981, %1979
  store double %1982, ptr %1980, align 8, !tbaa !11
  %1983 = load double, ptr %56, align 8, !tbaa !11
  %1984 = load double, ptr %35, align 8, !tbaa !11
  %1985 = fmul double %1984, %1983
  store double %1985, ptr %35, align 8, !tbaa !11
  br label %1986

1986:                                             ; preds = %1976, %1962
  br label %1987

1987:                                             ; preds = %1986, %1957
  %1988 = load i32, ptr %43, align 4, !tbaa !9
  %1989 = sub nsw i32 %1988, 1
  store i32 %1989, ptr %26, align 4, !tbaa !9
  %1990 = load ptr, ptr %15, align 8, !tbaa !5
  %1991 = load i32, ptr %43, align 4, !tbaa !9
  %1992 = load i32, ptr %23, align 4, !tbaa !9
  %1993 = mul nsw i32 %1991, %1992
  %1994 = add nsw i32 %1993, 1
  %1995 = sext i32 %1994 to i64
  %1996 = getelementptr inbounds double, ptr %1990, i64 %1995
  %1997 = load ptr, ptr %20, align 8, !tbaa !5
  %1998 = getelementptr inbounds double, ptr %1997, i64 1
  %1999 = call double @ddot_(ptr noundef %26, ptr noundef %1996, ptr noundef @c__1, ptr noundef %1998, ptr noundef @c__1)
  %2000 = load ptr, ptr %20, align 8, !tbaa !5
  %2001 = load i32, ptr %43, align 4, !tbaa !9
  %2002 = sext i32 %2001 to i64
  %2003 = getelementptr inbounds double, ptr %2000, i64 %2002
  %2004 = load double, ptr %2003, align 8, !tbaa !11
  %2005 = fsub double %2004, %1999
  store double %2005, ptr %2003, align 8, !tbaa !11
  %2006 = load i32, ptr %43, align 4, !tbaa !9
  %2007 = sub nsw i32 %2006, 1
  store i32 %2007, ptr %26, align 4, !tbaa !9
  %2008 = load ptr, ptr %15, align 8, !tbaa !5
  %2009 = load i32, ptr %43, align 4, !tbaa !9
  %2010 = load i32, ptr %23, align 4, !tbaa !9
  %2011 = mul nsw i32 %2009, %2010
  %2012 = add nsw i32 %2011, 1
  %2013 = sext i32 %2012 to i64
  %2014 = getelementptr inbounds double, ptr %2008, i64 %2013
  %2015 = load ptr, ptr %20, align 8, !tbaa !5
  %2016 = load ptr, ptr %14, align 8, !tbaa !5
  %2017 = load i32, ptr %2016, align 4, !tbaa !9
  %2018 = add nsw i32 %2017, 1
  %2019 = sext i32 %2018 to i64
  %2020 = getelementptr inbounds double, ptr %2015, i64 %2019
  %2021 = call double @ddot_(ptr noundef %26, ptr noundef %2014, ptr noundef @c__1, ptr noundef %2020, ptr noundef @c__1)
  %2022 = load ptr, ptr %20, align 8, !tbaa !5
  %2023 = load ptr, ptr %14, align 8, !tbaa !5
  %2024 = load i32, ptr %2023, align 4, !tbaa !9
  %2025 = load i32, ptr %43, align 4, !tbaa !9
  %2026 = add nsw i32 %2024, %2025
  %2027 = sext i32 %2026 to i64
  %2028 = getelementptr inbounds double, ptr %2022, i64 %2027
  %2029 = load double, ptr %2028, align 8, !tbaa !11
  %2030 = fsub double %2029, %2021
  store double %2030, ptr %2028, align 8, !tbaa !11
  %2031 = load i32, ptr %43, align 4, !tbaa !9
  %2032 = icmp sgt i32 %2031, 1
  br i1 %2032, label %2033, label %2070

2033:                                             ; preds = %1987
  %2034 = load ptr, ptr %17, align 8, !tbaa !5
  %2035 = load i32, ptr %43, align 4, !tbaa !9
  %2036 = sext i32 %2035 to i64
  %2037 = getelementptr inbounds double, ptr %2034, i64 %2036
  %2038 = load double, ptr %2037, align 8, !tbaa !11
  %2039 = load ptr, ptr %20, align 8, !tbaa !5
  %2040 = load ptr, ptr %14, align 8, !tbaa !5
  %2041 = load i32, ptr %2040, align 4, !tbaa !9
  %2042 = add nsw i32 %2041, 1
  %2043 = sext i32 %2042 to i64
  %2044 = getelementptr inbounds double, ptr %2039, i64 %2043
  %2045 = load double, ptr %2044, align 8, !tbaa !11
  %2046 = load ptr, ptr %20, align 8, !tbaa !5
  %2047 = load i32, ptr %43, align 4, !tbaa !9
  %2048 = sext i32 %2047 to i64
  %2049 = getelementptr inbounds double, ptr %2046, i64 %2048
  %2050 = load double, ptr %2049, align 8, !tbaa !11
  %2051 = fneg double %2038
  %2052 = call double @llvm.fmuladd.f64(double %2051, double %2045, double %2050)
  store double %2052, ptr %2049, align 8, !tbaa !11
  %2053 = load ptr, ptr %17, align 8, !tbaa !5
  %2054 = load i32, ptr %43, align 4, !tbaa !9
  %2055 = sext i32 %2054 to i64
  %2056 = getelementptr inbounds double, ptr %2053, i64 %2055
  %2057 = load double, ptr %2056, align 8, !tbaa !11
  %2058 = load ptr, ptr %20, align 8, !tbaa !5
  %2059 = getelementptr inbounds double, ptr %2058, i64 1
  %2060 = load double, ptr %2059, align 8, !tbaa !11
  %2061 = load ptr, ptr %20, align 8, !tbaa !5
  %2062 = load ptr, ptr %14, align 8, !tbaa !5
  %2063 = load i32, ptr %2062, align 4, !tbaa !9
  %2064 = load i32, ptr %43, align 4, !tbaa !9
  %2065 = add nsw i32 %2063, %2064
  %2066 = sext i32 %2065 to i64
  %2067 = getelementptr inbounds double, ptr %2061, i64 %2066
  %2068 = load double, ptr %2067, align 8, !tbaa !11
  %2069 = call double @llvm.fmuladd.f64(double %2057, double %2060, double %2068)
  store double %2069, ptr %2067, align 8, !tbaa !11
  br label %2070

2070:                                             ; preds = %2033, %1987
  %2071 = load ptr, ptr %20, align 8, !tbaa !5
  %2072 = load i32, ptr %43, align 4, !tbaa !9
  %2073 = sext i32 %2072 to i64
  %2074 = getelementptr inbounds double, ptr %2071, i64 %2073
  %2075 = load double, ptr %2074, align 8, !tbaa !11
  store double %2075, ptr %27, align 8, !tbaa !11
  %2076 = load double, ptr %27, align 8, !tbaa !11
  %2077 = fcmp oge double %2076, 0.000000e+00
  br i1 %2077, label %2078, label %2080

2078:                                             ; preds = %2070
  %2079 = load double, ptr %27, align 8, !tbaa !11
  br label %2083

2080:                                             ; preds = %2070
  %2081 = load double, ptr %27, align 8, !tbaa !11
  %2082 = fneg double %2081
  br label %2083

2083:                                             ; preds = %2080, %2078
  %2084 = phi double [ %2079, %2078 ], [ %2082, %2080 ]
  %2085 = load ptr, ptr %20, align 8, !tbaa !5
  %2086 = load i32, ptr %43, align 4, !tbaa !9
  %2087 = load ptr, ptr %14, align 8, !tbaa !5
  %2088 = load i32, ptr %2087, align 4, !tbaa !9
  %2089 = add nsw i32 %2086, %2088
  %2090 = sext i32 %2089 to i64
  %2091 = getelementptr inbounds double, ptr %2085, i64 %2090
  %2092 = load double, ptr %2091, align 8, !tbaa !11
  store double %2092, ptr %28, align 8, !tbaa !11
  %2093 = load double, ptr %28, align 8, !tbaa !11
  %2094 = fcmp oge double %2093, 0.000000e+00
  br i1 %2094, label %2095, label %2097

2095:                                             ; preds = %2083
  %2096 = load double, ptr %28, align 8, !tbaa !11
  br label %2100

2097:                                             ; preds = %2083
  %2098 = load double, ptr %28, align 8, !tbaa !11
  %2099 = fneg double %2098
  br label %2100

2100:                                             ; preds = %2097, %2095
  %2101 = phi double [ %2096, %2095 ], [ %2099, %2097 ]
  %2102 = fadd double %2084, %2101
  store double %2102, ptr %50, align 8, !tbaa !11
  %2103 = load ptr, ptr %18, align 8, !tbaa !5
  %2104 = load double, ptr %2103, align 8, !tbaa !11
  store double %2104, ptr %41, align 8, !tbaa !11
  %2105 = load i32, ptr %43, align 4, !tbaa !9
  %2106 = icmp eq i32 %2105, 1
  br i1 %2106, label %2107, label %2111

2107:                                             ; preds = %2100
  %2108 = load ptr, ptr %17, align 8, !tbaa !5
  %2109 = getelementptr inbounds double, ptr %2108, i64 1
  %2110 = load double, ptr %2109, align 8, !tbaa !11
  store double %2110, ptr %41, align 8, !tbaa !11
  br label %2111

2111:                                             ; preds = %2107, %2100
  %2112 = load ptr, ptr %15, align 8, !tbaa !5
  %2113 = load i32, ptr %43, align 4, !tbaa !9
  %2114 = load i32, ptr %43, align 4, !tbaa !9
  %2115 = load i32, ptr %23, align 4, !tbaa !9
  %2116 = mul nsw i32 %2114, %2115
  %2117 = add nsw i32 %2113, %2116
  %2118 = sext i32 %2117 to i64
  %2119 = getelementptr inbounds double, ptr %2112, i64 %2118
  %2120 = load double, ptr %2119, align 8, !tbaa !11
  store double %2120, ptr %27, align 8, !tbaa !11
  %2121 = load double, ptr %27, align 8, !tbaa !11
  %2122 = fcmp oge double %2121, 0.000000e+00
  br i1 %2122, label %2123, label %2125

2123:                                             ; preds = %2111
  %2124 = load double, ptr %27, align 8, !tbaa !11
  br label %2128

2125:                                             ; preds = %2111
  %2126 = load double, ptr %27, align 8, !tbaa !11
  %2127 = fneg double %2126
  br label %2128

2128:                                             ; preds = %2125, %2123
  %2129 = phi double [ %2124, %2123 ], [ %2127, %2125 ]
  %2130 = load double, ptr %41, align 8, !tbaa !11
  %2131 = fcmp oge double %2130, 0.000000e+00
  br i1 %2131, label %2132, label %2134

2132:                                             ; preds = %2128
  %2133 = load double, ptr %41, align 8, !tbaa !11
  br label %2137

2134:                                             ; preds = %2128
  %2135 = load double, ptr %41, align 8, !tbaa !11
  %2136 = fneg double %2135
  br label %2137

2137:                                             ; preds = %2134, %2132
  %2138 = phi double [ %2133, %2132 ], [ %2136, %2134 ]
  %2139 = fadd double %2129, %2138
  store double %2139, ptr %58, align 8, !tbaa !11
  %2140 = load ptr, ptr %15, align 8, !tbaa !5
  %2141 = load i32, ptr %43, align 4, !tbaa !9
  %2142 = load i32, ptr %43, align 4, !tbaa !9
  %2143 = load i32, ptr %23, align 4, !tbaa !9
  %2144 = mul nsw i32 %2142, %2143
  %2145 = add nsw i32 %2141, %2144
  %2146 = sext i32 %2145 to i64
  %2147 = getelementptr inbounds double, ptr %2140, i64 %2146
  %2148 = load double, ptr %2147, align 8, !tbaa !11
  store double %2148, ptr %59, align 8, !tbaa !11
  %2149 = load double, ptr %58, align 8, !tbaa !11
  %2150 = load double, ptr %45, align 8, !tbaa !11
  %2151 = fcmp olt double %2149, %2150
  br i1 %2151, label %2152, label %2156

2152:                                             ; preds = %2137
  %2153 = load double, ptr %45, align 8, !tbaa !11
  store double %2153, ptr %59, align 8, !tbaa !11
  %2154 = load double, ptr %45, align 8, !tbaa !11
  store double %2154, ptr %58, align 8, !tbaa !11
  %2155 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 1, ptr %2155, align 4, !tbaa !9
  br label %2156

2156:                                             ; preds = %2152, %2137
  %2157 = load double, ptr %58, align 8, !tbaa !11
  %2158 = fcmp olt double %2157, 1.000000e+00
  br i1 %2158, label %2159, label %2178

2159:                                             ; preds = %2156
  %2160 = load double, ptr %50, align 8, !tbaa !11
  %2161 = load double, ptr %53, align 8, !tbaa !11
  %2162 = load double, ptr %58, align 8, !tbaa !11
  %2163 = fmul double %2161, %2162
  %2164 = fcmp ogt double %2160, %2163
  br i1 %2164, label %2165, label %2177

2165:                                             ; preds = %2159
  %2166 = load double, ptr %50, align 8, !tbaa !11
  %2167 = fdiv double 1.000000e+00, %2166
  store double %2167, ptr %56, align 8, !tbaa !11
  %2168 = load ptr, ptr %20, align 8, !tbaa !5
  %2169 = getelementptr inbounds double, ptr %2168, i64 1
  call void @dscal_(ptr noundef %47, ptr noundef %56, ptr noundef %2169, ptr noundef @c__1)
  %2170 = load double, ptr %56, align 8, !tbaa !11
  %2171 = load ptr, ptr %19, align 8, !tbaa !5
  %2172 = load double, ptr %2171, align 8, !tbaa !11
  %2173 = fmul double %2172, %2170
  store double %2173, ptr %2171, align 8, !tbaa !11
  %2174 = load double, ptr %56, align 8, !tbaa !11
  %2175 = load double, ptr %35, align 8, !tbaa !11
  %2176 = fmul double %2175, %2174
  store double %2176, ptr %35, align 8, !tbaa !11
  br label %2177

2177:                                             ; preds = %2165, %2159
  br label %2178

2178:                                             ; preds = %2177, %2156
  %2179 = load double, ptr %41, align 8, !tbaa !11
  %2180 = fneg double %2179
  store double %2180, ptr %27, align 8, !tbaa !11
  %2181 = load ptr, ptr %20, align 8, !tbaa !5
  %2182 = load i32, ptr %43, align 4, !tbaa !9
  %2183 = sext i32 %2182 to i64
  %2184 = getelementptr inbounds double, ptr %2181, i64 %2183
  %2185 = load ptr, ptr %20, align 8, !tbaa !5
  %2186 = load ptr, ptr %14, align 8, !tbaa !5
  %2187 = load i32, ptr %2186, align 4, !tbaa !9
  %2188 = load i32, ptr %43, align 4, !tbaa !9
  %2189 = add nsw i32 %2187, %2188
  %2190 = sext i32 %2189 to i64
  %2191 = getelementptr inbounds double, ptr %2185, i64 %2190
  call void @dladiv_(ptr noundef %2184, ptr noundef %2191, ptr noundef %59, ptr noundef %27, ptr noundef %52, ptr noundef %49)
  %2192 = load double, ptr %52, align 8, !tbaa !11
  %2193 = load ptr, ptr %20, align 8, !tbaa !5
  %2194 = load i32, ptr %43, align 4, !tbaa !9
  %2195 = sext i32 %2194 to i64
  %2196 = getelementptr inbounds double, ptr %2193, i64 %2195
  store double %2192, ptr %2196, align 8, !tbaa !11
  %2197 = load double, ptr %49, align 8, !tbaa !11
  %2198 = load ptr, ptr %20, align 8, !tbaa !5
  %2199 = load i32, ptr %43, align 4, !tbaa !9
  %2200 = load ptr, ptr %14, align 8, !tbaa !5
  %2201 = load i32, ptr %2200, align 4, !tbaa !9
  %2202 = add nsw i32 %2199, %2201
  %2203 = sext i32 %2202 to i64
  %2204 = getelementptr inbounds double, ptr %2198, i64 %2203
  store double %2197, ptr %2204, align 8, !tbaa !11
  %2205 = load ptr, ptr %20, align 8, !tbaa !5
  %2206 = load i32, ptr %43, align 4, !tbaa !9
  %2207 = sext i32 %2206 to i64
  %2208 = getelementptr inbounds double, ptr %2205, i64 %2207
  %2209 = load double, ptr %2208, align 8, !tbaa !11
  store double %2209, ptr %27, align 8, !tbaa !11
  %2210 = load double, ptr %27, align 8, !tbaa !11
  %2211 = fcmp oge double %2210, 0.000000e+00
  br i1 %2211, label %2212, label %2214

2212:                                             ; preds = %2178
  %2213 = load double, ptr %27, align 8, !tbaa !11
  br label %2217

2214:                                             ; preds = %2178
  %2215 = load double, ptr %27, align 8, !tbaa !11
  %2216 = fneg double %2215
  br label %2217

2217:                                             ; preds = %2214, %2212
  %2218 = phi double [ %2213, %2212 ], [ %2216, %2214 ]
  %2219 = load ptr, ptr %20, align 8, !tbaa !5
  %2220 = load i32, ptr %43, align 4, !tbaa !9
  %2221 = load ptr, ptr %14, align 8, !tbaa !5
  %2222 = load i32, ptr %2221, align 4, !tbaa !9
  %2223 = add nsw i32 %2220, %2222
  %2224 = sext i32 %2223 to i64
  %2225 = getelementptr inbounds double, ptr %2219, i64 %2224
  %2226 = load double, ptr %2225, align 8, !tbaa !11
  store double %2226, ptr %28, align 8, !tbaa !11
  %2227 = load double, ptr %28, align 8, !tbaa !11
  %2228 = fcmp oge double %2227, 0.000000e+00
  br i1 %2228, label %2229, label %2231

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

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

2234:                                             ; preds = %2231, %2229
  %2235 = phi double [ %2230, %2229 ], [ %2233, %2231 ]
  %2236 = fadd double %2218, %2235
  store double %2236, ptr %29, align 8, !tbaa !11
  %2237 = load double, ptr %29, align 8, !tbaa !11
  %2238 = load double, ptr %35, align 8, !tbaa !11
  %2239 = fcmp oge double %2237, %2238
  br i1 %2239, label %2240, label %2242

2240:                                             ; preds = %2234
  %2241 = load double, ptr %29, align 8, !tbaa !11
  br label %2244

2242:                                             ; preds = %2234
  %2243 = load double, ptr %35, align 8, !tbaa !11
  br label %2244

2244:                                             ; preds = %2242, %2240
  %2245 = phi double [ %2241, %2240 ], [ %2243, %2242 ]
  store double %2245, ptr %35, align 8, !tbaa !11
  br label %2646

2246:                                             ; preds = %1923
  %2247 = load ptr, ptr %20, align 8, !tbaa !5
  %2248 = load i32, ptr %43, align 4, !tbaa !9
  %2249 = sext i32 %2248 to i64
  %2250 = getelementptr inbounds double, ptr %2247, i64 %2249
  %2251 = load double, ptr %2250, align 8, !tbaa !11
  store double %2251, ptr %27, align 8, !tbaa !11
  %2252 = load double, ptr %27, align 8, !tbaa !11
  %2253 = fcmp oge double %2252, 0.000000e+00
  br i1 %2253, label %2254, label %2256

2254:                                             ; preds = %2246
  %2255 = load double, ptr %27, align 8, !tbaa !11
  br label %2259

2256:                                             ; preds = %2246
  %2257 = load double, ptr %27, align 8, !tbaa !11
  %2258 = fneg double %2257
  br label %2259

2259:                                             ; preds = %2256, %2254
  %2260 = phi double [ %2255, %2254 ], [ %2258, %2256 ]
  %2261 = load ptr, ptr %20, align 8, !tbaa !5
  %2262 = load ptr, ptr %14, align 8, !tbaa !5
  %2263 = load i32, ptr %2262, align 4, !tbaa !9
  %2264 = load i32, ptr %43, align 4, !tbaa !9
  %2265 = add nsw i32 %2263, %2264
  %2266 = sext i32 %2265 to i64
  %2267 = getelementptr inbounds double, ptr %2261, i64 %2266
  %2268 = load double, ptr %2267, align 8, !tbaa !11
  store double %2268, ptr %28, align 8, !tbaa !11
  %2269 = load double, ptr %28, align 8, !tbaa !11
  %2270 = fcmp oge double %2269, 0.000000e+00
  br i1 %2270, label %2271, label %2273

2271:                                             ; preds = %2259
  %2272 = load double, ptr %28, align 8, !tbaa !11
  br label %2276

2273:                                             ; preds = %2259
  %2274 = load double, ptr %28, align 8, !tbaa !11
  %2275 = fneg double %2274
  br label %2276

2276:                                             ; preds = %2273, %2271
  %2277 = phi double [ %2272, %2271 ], [ %2275, %2273 ]
  %2278 = fadd double %2260, %2277
  store double %2278, ptr %31, align 8, !tbaa !11
  %2279 = load ptr, ptr %20, align 8, !tbaa !5
  %2280 = load i32, ptr %44, align 4, !tbaa !9
  %2281 = sext i32 %2280 to i64
  %2282 = getelementptr inbounds double, ptr %2279, i64 %2281
  %2283 = load double, ptr %2282, align 8, !tbaa !11
  store double %2283, ptr %29, align 8, !tbaa !11
  %2284 = load double, ptr %29, align 8, !tbaa !11
  %2285 = fcmp oge double %2284, 0.000000e+00
  br i1 %2285, label %2286, label %2288

2286:                                             ; preds = %2276
  %2287 = load double, ptr %29, align 8, !tbaa !11
  br label %2291

2288:                                             ; preds = %2276
  %2289 = load double, ptr %29, align 8, !tbaa !11
  %2290 = fneg double %2289
  br label %2291

2291:                                             ; preds = %2288, %2286
  %2292 = phi double [ %2287, %2286 ], [ %2290, %2288 ]
  %2293 = load ptr, ptr %20, align 8, !tbaa !5
  %2294 = load ptr, ptr %14, align 8, !tbaa !5
  %2295 = load i32, ptr %2294, align 4, !tbaa !9
  %2296 = load i32, ptr %44, align 4, !tbaa !9
  %2297 = add nsw i32 %2295, %2296
  %2298 = sext i32 %2297 to i64
  %2299 = getelementptr inbounds double, ptr %2293, i64 %2298
  %2300 = load double, ptr %2299, align 8, !tbaa !11
  store double %2300, ptr %30, align 8, !tbaa !11
  %2301 = load double, ptr %30, align 8, !tbaa !11
  %2302 = fcmp oge double %2301, 0.000000e+00
  br i1 %2302, label %2303, label %2305

2303:                                             ; preds = %2291
  %2304 = load double, ptr %30, align 8, !tbaa !11
  br label %2308

2305:                                             ; preds = %2291
  %2306 = load double, ptr %30, align 8, !tbaa !11
  %2307 = fneg double %2306
  br label %2308

2308:                                             ; preds = %2305, %2303
  %2309 = phi double [ %2304, %2303 ], [ %2307, %2305 ]
  %2310 = fadd double %2292, %2309
  store double %2310, ptr %32, align 8, !tbaa !11
  %2311 = load double, ptr %31, align 8, !tbaa !11
  %2312 = load double, ptr %32, align 8, !tbaa !11
  %2313 = fcmp oge double %2311, %2312
  br i1 %2313, label %2314, label %2316

2314:                                             ; preds = %2308
  %2315 = load double, ptr %31, align 8, !tbaa !11
  br label %2318

2316:                                             ; preds = %2308
  %2317 = load double, ptr %32, align 8, !tbaa !11
  br label %2318

2318:                                             ; preds = %2316, %2314
  %2319 = phi double [ %2315, %2314 ], [ %2317, %2316 ]
  store double %2319, ptr %50, align 8, !tbaa !11
  %2320 = load double, ptr %35, align 8, !tbaa !11
  %2321 = fcmp ogt double %2320, 1.000000e+00
  br i1 %2321, label %2322, label %2361

2322:                                             ; preds = %2318
  %2323 = load double, ptr %35, align 8, !tbaa !11
  %2324 = fdiv double 1.000000e+00, %2323
  store double %2324, ptr %56, align 8, !tbaa !11
  %2325 = load ptr, ptr %21, align 8, !tbaa !5
  %2326 = load i32, ptr %43, align 4, !tbaa !9
  %2327 = sext i32 %2326 to i64
  %2328 = getelementptr inbounds double, ptr %2325, i64 %2327
  %2329 = load double, ptr %2328, align 8, !tbaa !11
  store double %2329, ptr %27, align 8, !tbaa !11
  %2330 = load ptr, ptr %21, align 8, !tbaa !5
  %2331 = load i32, ptr %44, align 4, !tbaa !9
  %2332 = sext i32 %2331 to i64
  %2333 = getelementptr inbounds double, ptr %2330, i64 %2332
  %2334 = load double, ptr %2333, align 8, !tbaa !11
  store double %2334, ptr %28, align 8, !tbaa !11
  %2335 = load double, ptr %27, align 8, !tbaa !11
  %2336 = load double, ptr %28, align 8, !tbaa !11
  %2337 = fcmp oge double %2335, %2336
  br i1 %2337, label %2338, label %2340

2338:                                             ; preds = %2322
  %2339 = load double, ptr %27, align 8, !tbaa !11
  br label %2342

2340:                                             ; preds = %2322
  %2341 = load double, ptr %28, align 8, !tbaa !11
  br label %2342

2342:                                             ; preds = %2340, %2338
  %2343 = phi double [ %2339, %2338 ], [ %2341, %2340 ]
  %2344 = load double, ptr %53, align 8, !tbaa !11
  %2345 = load double, ptr %50, align 8, !tbaa !11
  %2346 = fsub double %2344, %2345
  %2347 = load double, ptr %35, align 8, !tbaa !11
  %2348 = fdiv double %2346, %2347
  %2349 = fcmp ogt double %2343, %2348
  br i1 %2349, label %2350, label %2360

2350:                                             ; preds = %2342
  %2351 = load ptr, ptr %20, align 8, !tbaa !5
  %2352 = getelementptr inbounds double, ptr %2351, i64 1
  call void @dscal_(ptr noundef %47, ptr noundef %56, ptr noundef %2352, ptr noundef @c__1)
  %2353 = load double, ptr %56, align 8, !tbaa !11
  %2354 = load ptr, ptr %19, align 8, !tbaa !5
  %2355 = load double, ptr %2354, align 8, !tbaa !11
  %2356 = fmul double %2355, %2353
  store double %2356, ptr %2354, align 8, !tbaa !11
  %2357 = load double, ptr %56, align 8, !tbaa !11
  %2358 = load double, ptr %35, align 8, !tbaa !11
  %2359 = fmul double %2358, %2357
  store double %2359, ptr %35, align 8, !tbaa !11
  br label %2360

2360:                                             ; preds = %2350, %2342
  br label %2361

2361:                                             ; preds = %2360, %2318
  %2362 = load i32, ptr %43, align 4, !tbaa !9
  %2363 = sub nsw i32 %2362, 1
  store i32 %2363, ptr %26, align 4, !tbaa !9
  %2364 = load ptr, ptr %20, align 8, !tbaa !5
  %2365 = load i32, ptr %43, align 4, !tbaa !9
  %2366 = sext i32 %2365 to i64
  %2367 = getelementptr inbounds double, ptr %2364, i64 %2366
  %2368 = load double, ptr %2367, align 8, !tbaa !11
  %2369 = load ptr, ptr %15, align 8, !tbaa !5
  %2370 = load i32, ptr %43, align 4, !tbaa !9
  %2371 = load i32, ptr %23, align 4, !tbaa !9
  %2372 = mul nsw i32 %2370, %2371
  %2373 = add nsw i32 %2372, 1
  %2374 = sext i32 %2373 to i64
  %2375 = getelementptr inbounds double, ptr %2369, i64 %2374
  %2376 = load ptr, ptr %20, align 8, !tbaa !5
  %2377 = getelementptr inbounds double, ptr %2376, i64 1
  %2378 = call double @ddot_(ptr noundef %26, ptr noundef %2375, ptr noundef @c__1, ptr noundef %2377, ptr noundef @c__1)
  %2379 = fsub double %2368, %2378
  %2380 = getelementptr inbounds [4 x double], ptr %36, i64 0, i64 0
  store double %2379, ptr %2380, align 16, !tbaa !11
  %2381 = load i32, ptr %43, align 4, !tbaa !9
  %2382 = sub nsw i32 %2381, 1
  store i32 %2382, ptr %26, align 4, !tbaa !9
  %2383 = load ptr, ptr %20, align 8, !tbaa !5
  %2384 = load i32, ptr %44, align 4, !tbaa !9
  %2385 = sext i32 %2384 to i64
  %2386 = getelementptr inbounds double, ptr %2383, i64 %2385
  %2387 = load double, ptr %2386, align 8, !tbaa !11
  %2388 = load ptr, ptr %15, align 8, !tbaa !5
  %2389 = load i32, ptr %44, align 4, !tbaa !9
  %2390 = load i32, ptr %23, align 4, !tbaa !9
  %2391 = mul nsw i32 %2389, %2390
  %2392 = add nsw i32 %2391, 1
  %2393 = sext i32 %2392 to i64
  %2394 = getelementptr inbounds double, ptr %2388, i64 %2393
  %2395 = load ptr, ptr %20, align 8, !tbaa !5
  %2396 = getelementptr inbounds double, ptr %2395, i64 1
  %2397 = call double @ddot_(ptr noundef %26, ptr noundef %2394, ptr noundef @c__1, ptr noundef %2396, ptr noundef @c__1)
  %2398 = fsub double %2387, %2397
  %2399 = getelementptr inbounds [4 x double], ptr %36, i64 0, i64 1
  store double %2398, ptr %2399, align 8, !tbaa !11
  %2400 = load i32, ptr %43, align 4, !tbaa !9
  %2401 = sub nsw i32 %2400, 1
  store i32 %2401, ptr %26, align 4, !tbaa !9
  %2402 = load ptr, ptr %20, align 8, !tbaa !5
  %2403 = load ptr, ptr %14, align 8, !tbaa !5
  %2404 = load i32, ptr %2403, align 4, !tbaa !9
  %2405 = load i32, ptr %43, align 4, !tbaa !9
  %2406 = add nsw i32 %2404, %2405
  %2407 = sext i32 %2406 to i64
  %2408 = getelementptr inbounds double, ptr %2402, i64 %2407
  %2409 = load double, ptr %2408, align 8, !tbaa !11
  %2410 = load ptr, ptr %15, align 8, !tbaa !5
  %2411 = load i32, ptr %43, align 4, !tbaa !9
  %2412 = load i32, ptr %23, align 4, !tbaa !9
  %2413 = mul nsw i32 %2411, %2412
  %2414 = add nsw i32 %2413, 1
  %2415 = sext i32 %2414 to i64
  %2416 = getelementptr inbounds double, ptr %2410, i64 %2415
  %2417 = load ptr, ptr %20, align 8, !tbaa !5
  %2418 = load ptr, ptr %14, align 8, !tbaa !5
  %2419 = load i32, ptr %2418, align 4, !tbaa !9
  %2420 = add nsw i32 %2419, 1
  %2421 = sext i32 %2420 to i64
  %2422 = getelementptr inbounds double, ptr %2417, i64 %2421
  %2423 = call double @ddot_(ptr noundef %26, ptr noundef %2416, ptr noundef @c__1, ptr noundef %2422, ptr noundef @c__1)
  %2424 = fsub double %2409, %2423
  %2425 = getelementptr inbounds [4 x double], ptr %36, i64 0, i64 2
  store double %2424, ptr %2425, align 16, !tbaa !11
  %2426 = load i32, ptr %43, align 4, !tbaa !9
  %2427 = sub nsw i32 %2426, 1
  store i32 %2427, ptr %26, align 4, !tbaa !9
  %2428 = load ptr, ptr %20, align 8, !tbaa !5
  %2429 = load ptr, ptr %14, align 8, !tbaa !5
  %2430 = load i32, ptr %2429, align 4, !tbaa !9
  %2431 = load i32, ptr %44, align 4, !tbaa !9
  %2432 = add nsw i32 %2430, %2431
  %2433 = sext i32 %2432 to i64
  %2434 = getelementptr inbounds double, ptr %2428, i64 %2433
  %2435 = load double, ptr %2434, align 8, !tbaa !11
  %2436 = load ptr, ptr %15, align 8, !tbaa !5
  %2437 = load i32, ptr %44, align 4, !tbaa !9
  %2438 = load i32, ptr %23, align 4, !tbaa !9
  %2439 = mul nsw i32 %2437, %2438
  %2440 = add nsw i32 %2439, 1
  %2441 = sext i32 %2440 to i64
  %2442 = getelementptr inbounds double, ptr %2436, i64 %2441
  %2443 = load ptr, ptr %20, align 8, !tbaa !5
  %2444 = load ptr, ptr %14, align 8, !tbaa !5
  %2445 = load i32, ptr %2444, align 4, !tbaa !9
  %2446 = add nsw i32 %2445, 1
  %2447 = sext i32 %2446 to i64
  %2448 = getelementptr inbounds double, ptr %2443, i64 %2447
  %2449 = call double @ddot_(ptr noundef %26, ptr noundef %2442, ptr noundef @c__1, ptr noundef %2448, ptr noundef @c__1)
  %2450 = fsub double %2435, %2449
  %2451 = getelementptr inbounds [4 x double], ptr %36, i64 0, i64 3
  store double %2450, ptr %2451, align 8, !tbaa !11
  %2452 = load ptr, ptr %17, align 8, !tbaa !5
  %2453 = load i32, ptr %43, align 4, !tbaa !9
  %2454 = sext i32 %2453 to i64
  %2455 = getelementptr inbounds double, ptr %2452, i64 %2454
  %2456 = load double, ptr %2455, align 8, !tbaa !11
  %2457 = load ptr, ptr %20, align 8, !tbaa !5
  %2458 = load ptr, ptr %14, align 8, !tbaa !5
  %2459 = load i32, ptr %2458, align 4, !tbaa !9
  %2460 = add nsw i32 %2459, 1
  %2461 = sext i32 %2460 to i64
  %2462 = getelementptr inbounds double, ptr %2457, i64 %2461
  %2463 = load double, ptr %2462, align 8, !tbaa !11
  %2464 = getelementptr inbounds [4 x double], ptr %36, i64 0, i64 0
  %2465 = load double, ptr %2464, align 16, !tbaa !11
  %2466 = fneg double %2456
  %2467 = call double @llvm.fmuladd.f64(double %2466, double %2463, double %2465)
  store double %2467, ptr %2464, align 16, !tbaa !11
  %2468 = load ptr, ptr %17, align 8, !tbaa !5
  %2469 = load i32, ptr %44, align 4, !tbaa !9
  %2470 = sext i32 %2469 to i64
  %2471 = getelementptr inbounds double, ptr %2468, i64 %2470
  %2472 = load double, ptr %2471, align 8, !tbaa !11
  %2473 = load ptr, ptr %20, align 8, !tbaa !5
  %2474 = load ptr, ptr %14, align 8, !tbaa !5
  %2475 = load i32, ptr %2474, align 4, !tbaa !9
  %2476 = add nsw i32 %2475, 1
  %2477 = sext i32 %2476 to i64
  %2478 = getelementptr inbounds double, ptr %2473, i64 %2477
  %2479 = load double, ptr %2478, align 8, !tbaa !11
  %2480 = getelementptr inbounds [4 x double], ptr %36, i64 0, i64 1
  %2481 = load double, ptr %2480, align 8, !tbaa !11
  %2482 = fneg double %2472
  %2483 = call double @llvm.fmuladd.f64(double %2482, double %2479, double %2481)
  store double %2483, ptr %2480, align 8, !tbaa !11
  %2484 = load ptr, ptr %17, align 8, !tbaa !5
  %2485 = load i32, ptr %43, align 4, !tbaa !9
  %2486 = sext i32 %2485 to i64
  %2487 = getelementptr inbounds double, ptr %2484, i64 %2486
  %2488 = load double, ptr %2487, align 8, !tbaa !11
  %2489 = load ptr, ptr %20, align 8, !tbaa !5
  %2490 = getelementptr inbounds double, ptr %2489, i64 1
  %2491 = load double, ptr %2490, align 8, !tbaa !11
  %2492 = getelementptr inbounds [4 x double], ptr %36, i64 0, i64 2
  %2493 = load double, ptr %2492, align 16, !tbaa !11
  %2494 = call double @llvm.fmuladd.f64(double %2488, double %2491, double %2493)
  store double %2494, ptr %2492, align 16, !tbaa !11
  %2495 = load ptr, ptr %17, align 8, !tbaa !5
  %2496 = load i32, ptr %44, align 4, !tbaa !9
  %2497 = sext i32 %2496 to i64
  %2498 = getelementptr inbounds double, ptr %2495, i64 %2497
  %2499 = load double, ptr %2498, align 8, !tbaa !11
  %2500 = load ptr, ptr %20, align 8, !tbaa !5
  %2501 = getelementptr inbounds double, ptr %2500, i64 1
  %2502 = load double, ptr %2501, align 8, !tbaa !11
  %2503 = getelementptr inbounds [4 x double], ptr %36, i64 0, i64 3
  %2504 = load double, ptr %2503, align 8, !tbaa !11
  %2505 = call double @llvm.fmuladd.f64(double %2499, double %2502, double %2504)
  store double %2505, ptr %2503, align 8, !tbaa !11
  %2506 = load ptr, ptr %15, align 8, !tbaa !5
  %2507 = load i32, ptr %43, align 4, !tbaa !9
  %2508 = load i32, ptr %43, align 4, !tbaa !9
  %2509 = load i32, ptr %23, align 4, !tbaa !9
  %2510 = mul nsw i32 %2508, %2509
  %2511 = add nsw i32 %2507, %2510
  %2512 = sext i32 %2511 to i64
  %2513 = getelementptr inbounds double, ptr %2506, i64 %2512
  %2514 = load ptr, ptr %16, align 8, !tbaa !5
  %2515 = getelementptr inbounds [4 x double], ptr %36, i64 0, i64 0
  %2516 = load ptr, ptr %18, align 8, !tbaa !5
  %2517 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_true, ptr noundef @c__2, ptr noundef @c__2, ptr noundef %45, ptr noundef @c_b21, ptr noundef %2513, ptr noundef %2514, ptr noundef @c_b21, ptr noundef @c_b21, ptr noundef %2515, ptr noundef @c__2, ptr noundef @c_b25, ptr noundef %2516, ptr noundef %2517, ptr noundef @c__2, ptr noundef %51, ptr noundef %48, ptr noundef %33)
  %2518 = load i32, ptr %33, align 4, !tbaa !9
  %2519 = icmp ne i32 %2518, 0
  br i1 %2519, label %2520, label %2522

2520:                                             ; preds = %2361
  %2521 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 2, ptr %2521, align 4, !tbaa !9
  br label %2522

2522:                                             ; preds = %2520, %2361
  %2523 = load double, ptr %51, align 8, !tbaa !11
  %2524 = fcmp une double %2523, 1.000000e+00
  br i1 %2524, label %2525, label %2533

2525:                                             ; preds = %2522
  %2526 = load ptr, ptr %20, align 8, !tbaa !5
  %2527 = getelementptr inbounds double, ptr %2526, i64 1
  call void @dscal_(ptr noundef %47, ptr noundef %51, ptr noundef %2527, ptr noundef @c__1)
  %2528 = load double, ptr %51, align 8, !tbaa !11
  %2529 = load ptr, ptr %19, align 8, !tbaa !5
  %2530 = load double, ptr %2529, align 8, !tbaa !11
  %2531 = fmul double %2528, %2530
  %2532 = load ptr, ptr %19, align 8, !tbaa !5
  store double %2531, ptr %2532, align 8, !tbaa !11
  br label %2533

2533:                                             ; preds = %2525, %2522
  %2534 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 0
  %2535 = load double, ptr %2534, align 16, !tbaa !11
  %2536 = load ptr, ptr %20, align 8, !tbaa !5
  %2537 = load i32, ptr %43, align 4, !tbaa !9
  %2538 = sext i32 %2537 to i64
  %2539 = getelementptr inbounds double, ptr %2536, i64 %2538
  store double %2535, ptr %2539, align 8, !tbaa !11
  %2540 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 1
  %2541 = load double, ptr %2540, align 8, !tbaa !11
  %2542 = load ptr, ptr %20, align 8, !tbaa !5
  %2543 = load i32, ptr %44, align 4, !tbaa !9
  %2544 = sext i32 %2543 to i64
  %2545 = getelementptr inbounds double, ptr %2542, i64 %2544
  store double %2541, ptr %2545, align 8, !tbaa !11
  %2546 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 2
  %2547 = load double, ptr %2546, align 16, !tbaa !11
  %2548 = load ptr, ptr %20, align 8, !tbaa !5
  %2549 = load ptr, ptr %14, align 8, !tbaa !5
  %2550 = load i32, ptr %2549, align 4, !tbaa !9
  %2551 = load i32, ptr %43, align 4, !tbaa !9
  %2552 = add nsw i32 %2550, %2551
  %2553 = sext i32 %2552 to i64
  %2554 = getelementptr inbounds double, ptr %2548, i64 %2553
  store double %2547, ptr %2554, align 8, !tbaa !11
  %2555 = getelementptr inbounds [4 x double], ptr %40, i64 0, i64 3
  %2556 = load double, ptr %2555, align 8, !tbaa !11
  %2557 = load ptr, ptr %20, align 8, !tbaa !5
  %2558 = load ptr, ptr %14, align 8, !tbaa !5
  %2559 = load i32, ptr %2558, align 4, !tbaa !9
  %2560 = load i32, ptr %44, align 4, !tbaa !9
  %2561 = add nsw i32 %2559, %2560
  %2562 = sext i32 %2561 to i64
  %2563 = getelementptr inbounds double, ptr %2557, i64 %2562
  store double %2556, ptr %2563, align 8, !tbaa !11
  %2564 = load ptr, ptr %20, align 8, !tbaa !5
  %2565 = load i32, ptr %43, align 4, !tbaa !9
  %2566 = sext i32 %2565 to i64
  %2567 = getelementptr inbounds double, ptr %2564, i64 %2566
  %2568 = load double, ptr %2567, align 8, !tbaa !11
  store double %2568, ptr %27, align 8, !tbaa !11
  %2569 = load double, ptr %27, align 8, !tbaa !11
  %2570 = fcmp oge double %2569, 0.000000e+00
  br i1 %2570, label %2571, label %2573

2571:                                             ; preds = %2533
  %2572 = load double, ptr %27, align 8, !tbaa !11
  br label %2576

2573:                                             ; preds = %2533
  %2574 = load double, ptr %27, align 8, !tbaa !11
  %2575 = fneg double %2574
  br label %2576

2576:                                             ; preds = %2573, %2571
  %2577 = phi double [ %2572, %2571 ], [ %2575, %2573 ]
  %2578 = load ptr, ptr %20, align 8, !tbaa !5
  %2579 = load ptr, ptr %14, align 8, !tbaa !5
  %2580 = load i32, ptr %2579, align 4, !tbaa !9
  %2581 = load i32, ptr %43, align 4, !tbaa !9
  %2582 = add nsw i32 %2580, %2581
  %2583 = sext i32 %2582 to i64
  %2584 = getelementptr inbounds double, ptr %2578, i64 %2583
  %2585 = load double, ptr %2584, align 8, !tbaa !11
  store double %2585, ptr %28, align 8, !tbaa !11
  %2586 = load double, ptr %28, align 8, !tbaa !11
  %2587 = fcmp oge double %2586, 0.000000e+00
  br i1 %2587, label %2588, label %2590

2588:                                             ; preds = %2576
  %2589 = load double, ptr %28, align 8, !tbaa !11
  br label %2593

2590:                                             ; preds = %2576
  %2591 = load double, ptr %28, align 8, !tbaa !11
  %2592 = fneg double %2591
  br label %2593

2593:                                             ; preds = %2590, %2588
  %2594 = phi double [ %2589, %2588 ], [ %2592, %2590 ]
  %2595 = fadd double %2577, %2594
  store double %2595, ptr %31, align 8, !tbaa !11
  %2596 = load ptr, ptr %20, align 8, !tbaa !5
  %2597 = load i32, ptr %44, align 4, !tbaa !9
  %2598 = sext i32 %2597 to i64
  %2599 = getelementptr inbounds double, ptr %2596, i64 %2598
  %2600 = load double, ptr %2599, align 8, !tbaa !11
  store double %2600, ptr %29, align 8, !tbaa !11
  %2601 = load double, ptr %29, align 8, !tbaa !11
  %2602 = fcmp oge double %2601, 0.000000e+00
  br i1 %2602, label %2603, label %2605

2603:                                             ; preds = %2593
  %2604 = load double, ptr %29, align 8, !tbaa !11
  br label %2608

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

2608:                                             ; preds = %2605, %2603
  %2609 = phi double [ %2604, %2603 ], [ %2607, %2605 ]
  %2610 = load ptr, ptr %20, align 8, !tbaa !5
  %2611 = load ptr, ptr %14, align 8, !tbaa !5
  %2612 = load i32, ptr %2611, align 4, !tbaa !9
  %2613 = load i32, ptr %44, align 4, !tbaa !9
  %2614 = add nsw i32 %2612, %2613
  %2615 = sext i32 %2614 to i64
  %2616 = getelementptr inbounds double, ptr %2610, i64 %2615
  %2617 = load double, ptr %2616, align 8, !tbaa !11
  store double %2617, ptr %30, align 8, !tbaa !11
  %2618 = load double, ptr %30, align 8, !tbaa !11
  %2619 = fcmp oge double %2618, 0.000000e+00
  br i1 %2619, label %2620, label %2622

2620:                                             ; preds = %2608
  %2621 = load double, ptr %30, align 8, !tbaa !11
  br label %2625

2622:                                             ; preds = %2608
  %2623 = load double, ptr %30, align 8, !tbaa !11
  %2624 = fneg double %2623
  br label %2625

2625:                                             ; preds = %2622, %2620
  %2626 = phi double [ %2621, %2620 ], [ %2624, %2622 ]
  %2627 = fadd double %2609, %2626
  store double %2627, ptr %32, align 8, !tbaa !11
  %2628 = load double, ptr %31, align 8, !tbaa !11
  %2629 = load double, ptr %32, align 8, !tbaa !11
  %2630 = fcmp oge double %2628, %2629
  br i1 %2630, label %2631, label %2633

2631:                                             ; preds = %2625
  %2632 = load double, ptr %31, align 8, !tbaa !11
  br label %2635

2633:                                             ; preds = %2625
  %2634 = load double, ptr %32, align 8, !tbaa !11
  br label %2635

2635:                                             ; preds = %2633, %2631
  %2636 = phi double [ %2632, %2631 ], [ %2634, %2633 ]
  store double %2636, ptr %31, align 8, !tbaa !11
  %2637 = load double, ptr %31, align 8, !tbaa !11
  %2638 = load double, ptr %35, align 8, !tbaa !11
  %2639 = fcmp oge double %2637, %2638
  br i1 %2639, label %2640, label %2642

2640:                                             ; preds = %2635
  %2641 = load double, ptr %31, align 8, !tbaa !11
  br label %2644

2642:                                             ; preds = %2635
  %2643 = load double, ptr %35, align 8, !tbaa !11
  br label %2644

2644:                                             ; preds = %2642, %2640
  %2645 = phi double [ %2641, %2640 ], [ %2643, %2642 ]
  store double %2645, ptr %35, align 8, !tbaa !11
  br label %2646

2646:                                             ; preds = %2644, %2244
  br label %2647

2647:                                             ; preds = %2646, %1895
  br label %2648

2648:                                             ; preds = %2647
  %2649 = load i32, ptr %38, align 4, !tbaa !9
  %2650 = add nsw i32 %2649, 1
  store i32 %2650, ptr %38, align 4, !tbaa !9
  br label %1887, !llvm.loop !21

2651:                                             ; preds = %1887
  br label %2652

2652:                                             ; preds = %2651, %1883
  br label %2653

2653:                                             ; preds = %2652, %1081
  store i32 1, ptr %60, align 4
  br label %2654

2654:                                             ; preds = %2653, %86
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  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 double @dlange_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare double @dasum_(ptr noundef, ptr noundef, ptr noundef) #2

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

declare void @dscal_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @daxpy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @dlaln2_(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

declare double @ddot_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @dladiv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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


; 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 [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@c_false = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4
@c_b21 = external hidden global double, align 8
@c_b25 = external hidden global double, align 8
@c_true = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @dlaqtr_(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr nocapture noundef %9, ptr nocapture noundef writeonly %10) local_unnamed_addr #0 {
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca double, align 8
  %15 = alloca i32, align 4
  %16 = alloca double, align 8
  %17 = alloca [4 x double], align 16
  %18 = alloca [4 x double], align 16
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 4, 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 8, ptr nonnull %16) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #5
  %29 = load i32, ptr %4, align 4, !tbaa !5
  %narrow = xor i32 %29, -1
  %30 = sext i32 %narrow to i64
  %31 = getelementptr inbounds double, ptr %3, i64 %30
  %32 = getelementptr inbounds i8, ptr %5, i64 -8
  %33 = getelementptr inbounds i8, ptr %8, i64 -8
  %34 = getelementptr inbounds i8, ptr %9, i64 -8
  %35 = load i32, ptr %0, align 4, !tbaa !5
  %.not = icmp eq i32 %35, 0
  store i32 0, ptr %10, align 4, !tbaa !5
  %36 = load i32, ptr %2, align 4, !tbaa !5
  %37 = icmp eq i32 %36, 0
  br i1 %37, label %.loopexit907, label %38

38:                                               ; preds = %11
  %39 = tail call double @dlamch_(ptr noundef nonnull @.str) #5
  %40 = tail call double @dlamch_(ptr noundef nonnull @.str.1) #5
  %41 = fdiv double %40, %39
  %42 = fdiv double 1.000000e+00, %41
  %43 = call double @dlange_(ptr noundef nonnull @.str.2, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %17) #5
  store double %43, ptr %23, align 8, !tbaa !9
  %44 = load i32, ptr %1, align 4, !tbaa !5
  %.not853 = icmp eq i32 %44, 0
  br i1 %.not853, label %45, label %56

45:                                               ; preds = %38
  %46 = load double, ptr %6, align 8, !tbaa !9
  %47 = fcmp ult double %46, 0.000000e+00
  %48 = fneg double %46
  %49 = select i1 %47, double %48, double %46
  %50 = fcmp oge double %43, %49
  %51 = select i1 %50, double %43, double %49
  store double %51, ptr %14, align 8, !tbaa !9
  %52 = call double @dlange_(ptr noundef nonnull @.str.2, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %5, ptr noundef nonnull %2, ptr noundef nonnull %17) #5
  %53 = load double, ptr %14, align 8
  %54 = fcmp oge double %53, %52
  %55 = select i1 %54, double %53, double %52
  store double %55, ptr %23, align 8, !tbaa !9
  br label %56

56:                                               ; preds = %45, %38
  %57 = phi double [ %55, %45 ], [ %43, %38 ]
  %58 = fmul double %39, %57
  %59 = fcmp oge double %41, %58
  %60 = select i1 %59, double %41, double %58
  store double %60, ptr %16, align 8, !tbaa !9
  store double 0.000000e+00, ptr %9, align 8, !tbaa !9
  %61 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %61, ptr %12, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %31, i64 8
  %.not854911 = icmp slt i32 %61, 2
  br i1 %.not854911, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %56
  %62 = sext i32 %29 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv = phi i64 [ 2, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ]
  %63 = trunc i64 %indvars.iv to i32
  %64 = add i32 %63, -1
  store i32 %64, ptr %13, align 4, !tbaa !5
  %65 = mul nsw i64 %indvars.iv, %62
  %gep = getelementptr double, ptr %invariant.gep, i64 %65
  %66 = call double @dasum_(ptr noundef nonnull %13, ptr noundef %gep, ptr noundef nonnull @c__1) #5
  %67 = getelementptr inbounds double, ptr %34, i64 %indvars.iv
  store double %66, ptr %67, align 8, !tbaa !9
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %68 = load i32, ptr %12, align 4, !tbaa !5
  %69 = sext i32 %68 to i64
  %.not854.not = icmp slt i64 %indvars.iv, %69
  br i1 %.not854.not, label %.lr.ph, label %._crit_edge, !llvm.loop !11

._crit_edge:                                      ; preds = %.lr.ph, %56
  %70 = load i32, ptr %1, align 4, !tbaa !5
  %.not855 = icmp eq i32 %70, 0
  %71 = load i32, ptr %2, align 4, !tbaa !5
  br i1 %.not855, label %73, label %.thread

.thread:                                          ; preds = %._crit_edge
  %72 = shl i32 %71, 1
  br label %119

73:                                               ; preds = %._crit_edge
  store i32 %71, ptr %12, align 4, !tbaa !5
  %.not856913 = icmp slt i32 %71, 2
  br i1 %.not856913, label %._crit_edge917, label %.lr.ph916.preheader

.lr.ph916.preheader:                              ; preds = %73
  %74 = add nuw i32 %71, 1
  %wide.trip.count = zext i32 %74 to i64
  %75 = add nsw i64 %wide.trip.count, -2
  %min.iters.check = icmp ult i64 %75, 6
  br i1 %min.iters.check, label %.lr.ph916.preheader1091, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph916.preheader
  %scevgep = getelementptr i8, ptr %9, i64 8
  %76 = shl nuw nsw i64 %wide.trip.count, 3
  %77 = add nsw i64 %76, -8
  %scevgep1079 = getelementptr i8, ptr %9, i64 %77
  %scevgep1080 = getelementptr i8, ptr %5, i64 8
  %scevgep1081 = getelementptr i8, ptr %5, i64 %77
  %bound0 = icmp ult ptr %scevgep, %scevgep1081
  %bound1 = icmp ult ptr %scevgep1080, %scevgep1079
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %.lr.ph916.preheader1091, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %75, -4
  %ind.end = or disjoint i64 %n.vec, 2
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 2
  %78 = getelementptr inbounds double, ptr %32, i64 %offset.idx
  %79 = getelementptr inbounds i8, ptr %78, i64 16
  %wide.load = load <2 x double>, ptr %78, align 8, !tbaa !9, !alias.scope !13
  %wide.load1082 = load <2 x double>, ptr %79, align 8, !tbaa !9, !alias.scope !13
  %80 = fcmp oge <2 x double> %wide.load, zeroinitializer
  %81 = fcmp oge <2 x double> %wide.load1082, zeroinitializer
  %82 = fneg <2 x double> %wide.load
  %83 = fneg <2 x double> %wide.load1082
  %84 = select <2 x i1> %80, <2 x double> %wide.load, <2 x double> %82
  %85 = select <2 x i1> %81, <2 x double> %wide.load1082, <2 x double> %83
  %86 = getelementptr inbounds double, ptr %34, i64 %offset.idx
  %87 = getelementptr inbounds i8, ptr %86, i64 16
  %wide.load1083 = load <2 x double>, ptr %86, align 8, !tbaa !9, !alias.scope !16, !noalias !13
  %wide.load1084 = load <2 x double>, ptr %87, align 8, !tbaa !9, !alias.scope !16, !noalias !13
  %88 = fadd <2 x double> %wide.load1083, %84
  %89 = fadd <2 x double> %wide.load1084, %85
  store <2 x double> %88, ptr %86, align 8, !tbaa !9, !alias.scope !16, !noalias !13
  store <2 x double> %89, ptr %87, align 8, !tbaa !9, !alias.scope !16, !noalias !13
  %index.next = add nuw i64 %index, 4
  %90 = icmp eq i64 %index.next, %n.vec
  br i1 %90, label %middle.block, label %vector.body, !llvm.loop !18

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %75, %n.vec
  br i1 %cmp.n, label %._crit_edge917, label %.lr.ph916.preheader1091

.lr.ph916.preheader1091:                          ; preds = %middle.block, %vector.memcheck, %.lr.ph916.preheader
  %indvars.iv1006.ph = phi i64 [ 2, %vector.memcheck ], [ 2, %.lr.ph916.preheader ], [ %ind.end, %middle.block ]
  %91 = sub nsw i64 %wide.trip.count, %indvars.iv1006.ph
  %92 = zext nneg i32 %71 to i64
  %xtraiter = and i64 %91, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph916.prol.loopexit, label %.lr.ph916.prol

.lr.ph916.prol:                                   ; preds = %.lr.ph916.preheader1091
  %93 = getelementptr inbounds double, ptr %32, i64 %indvars.iv1006.ph
  %94 = load double, ptr %93, align 8, !tbaa !9
  %95 = fcmp oge double %94, 0.000000e+00
  %96 = fneg double %94
  %97 = select i1 %95, double %94, double %96
  %98 = getelementptr inbounds double, ptr %34, i64 %indvars.iv1006.ph
  %99 = load double, ptr %98, align 8, !tbaa !9
  %100 = fadd double %99, %97
  store double %100, ptr %98, align 8, !tbaa !9
  %indvars.iv.next1007.prol = add nuw nsw i64 %indvars.iv1006.ph, 1
  br label %.lr.ph916.prol.loopexit

.lr.ph916.prol.loopexit:                          ; preds = %.lr.ph916.prol, %.lr.ph916.preheader1091
  %indvars.iv1006.unr = phi i64 [ %indvars.iv1006.ph, %.lr.ph916.preheader1091 ], [ %indvars.iv.next1007.prol, %.lr.ph916.prol ]
  %101 = icmp eq i64 %indvars.iv1006.ph, %92
  br i1 %101, label %._crit_edge917, label %.lr.ph916

.lr.ph916:                                        ; preds = %.lr.ph916.prol.loopexit, %.lr.ph916
  %indvars.iv1006 = phi i64 [ %indvars.iv.next1007.1, %.lr.ph916 ], [ %indvars.iv1006.unr, %.lr.ph916.prol.loopexit ]
  %102 = getelementptr inbounds double, ptr %32, i64 %indvars.iv1006
  %103 = load double, ptr %102, align 8, !tbaa !9
  %104 = fcmp oge double %103, 0.000000e+00
  %105 = fneg double %103
  %106 = select i1 %104, double %103, double %105
  %107 = getelementptr inbounds double, ptr %34, i64 %indvars.iv1006
  %108 = load double, ptr %107, align 8, !tbaa !9
  %109 = fadd double %108, %106
  store double %109, ptr %107, align 8, !tbaa !9
  %110 = getelementptr double, ptr %5, i64 %indvars.iv1006
  %111 = load double, ptr %110, align 8, !tbaa !9
  %112 = fcmp oge double %111, 0.000000e+00
  %113 = fneg double %111
  %114 = select i1 %112, double %111, double %113
  %115 = getelementptr double, ptr %9, i64 %indvars.iv1006
  %116 = load double, ptr %115, align 8, !tbaa !9
  %117 = fadd double %116, %114
  store double %117, ptr %115, align 8, !tbaa !9
  %indvars.iv.next1007.1 = add nuw nsw i64 %indvars.iv1006, 2
  %exitcond.not.1 = icmp eq i64 %indvars.iv.next1007.1, %wide.trip.count
  br i1 %exitcond.not.1, label %._crit_edge917, label %.lr.ph916, !llvm.loop !21

._crit_edge917:                                   ; preds = %.lr.ph916.prol.loopexit, %.lr.ph916, %middle.block, %73
  %118 = shl i32 %71, 1
  br label %119

119:                                              ; preds = %._crit_edge917, %.thread
  %storemerge1072 = phi i32 [ %72, %.thread ], [ %118, %._crit_edge917 ]
  %storemerge = phi i32 [ %71, %.thread ], [ %118, %._crit_edge917 ]
  store i32 %storemerge1072, ptr %22, align 4, !tbaa !5
  store i32 %storemerge, ptr %21, align 4
  %120 = call i32 @idamax_(ptr noundef nonnull %21, ptr noundef %8, ptr noundef nonnull @c__1) #5
  %121 = sext i32 %120 to i64
  %122 = getelementptr inbounds double, ptr %33, i64 %121
  %123 = load double, ptr %122, align 8, !tbaa !9
  store double %123, ptr %14, align 8, !tbaa !9
  %124 = fcmp oge double %123, 0.000000e+00
  %125 = fneg double %123
  %126 = select i1 %124, double %123, double %125
  store double 1.000000e+00, ptr %7, align 8, !tbaa !9
  %127 = fcmp ogt double %126, %42
  br i1 %127, label %128, label %130

128:                                              ; preds = %119
  %129 = fdiv double %42, %126
  store double %129, ptr %7, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %21, ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  br label %130

130:                                              ; preds = %128, %119
  %.0818 = phi double [ %42, %128 ], [ %126, %119 ]
  %131 = load i32, ptr %1, align 4, !tbaa !5
  %.not858 = icmp eq i32 %131, 0
  br i1 %.not858, label %422, label %132

132:                                              ; preds = %130
  %133 = load i32, ptr %2, align 4, !tbaa !5
  br i1 %.not, label %134, label %268

134:                                              ; preds = %132
  %135 = icmp sgt i32 %133, 0
  br i1 %135, label %.lr.ph940, label %.loopexit907

.lr.ph940:                                        ; preds = %134
  %136 = zext nneg i32 %133 to i64
  %137 = sext i32 %29 to i64
  br label %138

138:                                              ; preds = %.lr.ph940, %._crit_edge1047
  %indvars.iv1012 = phi i64 [ %136, %.lr.ph940 ], [ %.pre1052, %._crit_edge1047 ]
  %.0806938 = phi i32 [ %133, %.lr.ph940 ], [ %.2808, %._crit_edge1047 ]
  %.1819936 = phi double [ %.0818, %.lr.ph940 ], [ %.3821, %._crit_edge1047 ]
  %139 = sext i32 %.0806938 to i64
  %140 = icmp sgt i64 %indvars.iv1012, %139
  %.pre1052 = add nsw i64 %indvars.iv1012, -1
  br i1 %140, label %._crit_edge1047, label %141

141:                                              ; preds = %138
  %.not867 = icmp eq i64 %indvars.iv1012, 1
  br i1 %.not867, label %.thread876, label %142

142:                                              ; preds = %141
  %indvars1014 = trunc i64 %indvars.iv1012 to i32
  %143 = add nsw i32 %indvars1014, -1
  %144 = mul nsw i32 %143, %29
  %145 = sext i32 %144 to i64
  %146 = getelementptr double, ptr %31, i64 %indvars.iv1012
  %147 = getelementptr double, ptr %146, i64 %145
  %148 = load double, ptr %147, align 8, !tbaa !9
  %149 = fcmp une double %148, 0.000000e+00
  %150 = trunc nuw nsw i64 %.pre1052 to i32
  br i1 %149, label %.thread881, label %.thread876

.thread881:                                       ; preds = %142
  %151 = getelementptr inbounds double, ptr %33, i64 %.pre1052
  %152 = getelementptr inbounds double, ptr %33, i64 %indvars.iv1012
  %153 = load <2 x double>, ptr %151, align 8, !tbaa !9
  store <2 x double> %153, ptr %17, align 16, !tbaa !9
  %154 = mul nsw i64 %.pre1052, %137
  %155 = getelementptr double, ptr %31, i64 %.pre1052
  %156 = getelementptr double, ptr %155, i64 %145
  call void @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__2, ptr noundef nonnull @c__1, ptr noundef nonnull %16, ptr noundef nonnull @c_b21, ptr noundef %156, ptr noundef nonnull %4, ptr noundef nonnull @c_b21, ptr noundef nonnull @c_b21, ptr noundef nonnull %17, ptr noundef nonnull @c__2, ptr noundef nonnull @c_b25, ptr noundef nonnull @c_b25, ptr noundef nonnull %18, ptr noundef nonnull @c__2, ptr noundef nonnull %25, ptr noundef nonnull %23, ptr noundef nonnull %15) #5
  %157 = load i32, ptr %15, align 4, !tbaa !5
  %.not868 = icmp eq i32 %157, 0
  br i1 %.not868, label %218, label %217

.thread876:                                       ; preds = %141, %142
  %.1807879 = phi i32 [ %150, %142 ], [ 0, %141 ]
  %158 = getelementptr inbounds double, ptr %33, i64 %indvars.iv1012
  %159 = load double, ptr %158, align 8, !tbaa !9
  %160 = fcmp oge double %159, 0.000000e+00
  %161 = fneg double %159
  %162 = select i1 %160, double %159, double %161
  %163 = mul nsw i64 %indvars.iv1012, %137
  %164 = getelementptr double, ptr %31, i64 %163
  %165 = getelementptr double, ptr %164, i64 %indvars.iv1012
  %166 = load double, ptr %165, align 8, !tbaa !9
  store double %166, ptr %14, align 8, !tbaa !9
  %167 = fcmp oge double %166, 0.000000e+00
  %168 = fneg double %166
  %169 = select i1 %167, double %166, double %168
  store double %166, ptr %28, align 8, !tbaa !9
  %170 = load double, ptr %16, align 8, !tbaa !9
  %171 = fcmp olt double %169, %170
  br i1 %171, label %172, label %173

172:                                              ; preds = %.thread876
  store double %170, ptr %28, align 8, !tbaa !9
  store i32 1, ptr %10, align 4, !tbaa !5
  br label %173

173:                                              ; preds = %172, %.thread876
  %174 = phi double [ %170, %172 ], [ %166, %.thread876 ]
  %.0 = phi double [ %170, %172 ], [ %169, %.thread876 ]
  %175 = fcmp oeq double %159, 0.000000e+00
  br i1 %175, label %._crit_edge1047, label %176

176:                                              ; preds = %173
  %177 = fcmp olt double %.0, 1.000000e+00
  %178 = fmul double %42, %.0
  %179 = fcmp ogt double %162, %178
  %or.cond = select i1 %177, i1 %179, i1 false
  br i1 %or.cond, label %180, label %186

180:                                              ; preds = %176
  %181 = fdiv double 1.000000e+00, %162
  store double %181, ptr %27, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %27, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %182 = load double, ptr %27, align 8, !tbaa !9
  %183 = load double, ptr %7, align 8, !tbaa !9
  %184 = fmul double %182, %183
  store double %184, ptr %7, align 8, !tbaa !9
  %185 = fmul double %.1819936, %182
  %.pre1039 = load double, ptr %28, align 8, !tbaa !9
  %.pre1040 = load double, ptr %158, align 8, !tbaa !9
  br label %186

186:                                              ; preds = %180, %176
  %187 = phi double [ %.pre1040, %180 ], [ %159, %176 ]
  %188 = phi double [ %.pre1039, %180 ], [ %174, %176 ]
  %.2820 = phi double [ %185, %180 ], [ %.1819936, %176 ]
  %189 = fdiv double %187, %188
  store double %189, ptr %158, align 8, !tbaa !9
  store double %189, ptr %14, align 8, !tbaa !9
  %190 = fcmp oge double %189, 0.000000e+00
  %191 = fneg double %189
  %192 = select i1 %190, double %189, double %191
  %193 = fcmp ogt double %192, 1.000000e+00
  br i1 %193, label %194, label %205

194:                                              ; preds = %186
  %195 = fdiv double 1.000000e+00, %192
  store double %195, ptr %27, align 8, !tbaa !9
  %196 = getelementptr inbounds double, ptr %34, i64 %indvars.iv1012
  %197 = load double, ptr %196, align 8, !tbaa !9
  %198 = fsub double %42, %.2820
  %199 = fmul double %198, %195
  %200 = fcmp ogt double %197, %199
  br i1 %200, label %201, label %205

201:                                              ; preds = %194
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %27, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %202 = load double, ptr %27, align 8, !tbaa !9
  %203 = load double, ptr %7, align 8, !tbaa !9
  %204 = fmul double %202, %203
  store double %204, ptr %7, align 8, !tbaa !9
  br label %205

205:                                              ; preds = %194, %201, %186
  br i1 %.not867, label %.loopexit907, label %206

206:                                              ; preds = %205
  %207 = trunc nuw nsw i64 %.pre1052 to i32
  store i32 %207, ptr %12, align 4, !tbaa !5
  %208 = load double, ptr %158, align 8, !tbaa !9
  %209 = fneg double %208
  store double %209, ptr %14, align 8, !tbaa !9
  %gep935 = getelementptr double, ptr %invariant.gep, i64 %163
  call void @daxpy_(ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %gep935, ptr noundef nonnull @c__1, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  store i32 %207, ptr %12, align 4, !tbaa !5
  %210 = call i32 @idamax_(ptr noundef nonnull %12, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %211 = sext i32 %210 to i64
  %212 = getelementptr inbounds double, ptr %33, i64 %211
  %213 = load double, ptr %212, align 8, !tbaa !9
  store double %213, ptr %14, align 8, !tbaa !9
  %214 = fcmp oge double %213, 0.000000e+00
  %215 = fneg double %213
  %216 = select i1 %214, double %213, double %215
  br label %._crit_edge1047

217:                                              ; preds = %.thread881
  store i32 2, ptr %10, align 4, !tbaa !5
  br label %218

218:                                              ; preds = %217, %.thread881
  %219 = load double, ptr %25, align 8, !tbaa !9
  %220 = fcmp une double %219, 1.000000e+00
  br i1 %220, label %221, label %225

221:                                              ; preds = %218
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %25, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %222 = load double, ptr %25, align 8, !tbaa !9
  %223 = load double, ptr %7, align 8, !tbaa !9
  %224 = fmul double %222, %223
  store double %224, ptr %7, align 8, !tbaa !9
  br label %225

225:                                              ; preds = %221, %218
  %226 = load <2 x double>, ptr %18, align 16
  store <2 x double> %226, ptr %151, align 8, !tbaa !9
  %227 = fcmp oge <2 x double> %226, zeroinitializer
  %228 = fneg <2 x double> %226
  %229 = select <2 x i1> %227, <2 x double> %226, <2 x double> %228
  %230 = extractelement <2 x double> %229, i64 0
  store double %230, ptr %14, align 8, !tbaa !9
  %231 = extractelement <2 x double> %229, i64 1
  %232 = fcmp oge double %230, %231
  %233 = select i1 %232, double %230, double %231
  %234 = fcmp ogt double %233, 1.000000e+00
  br i1 %234, label %235, label %250

235:                                              ; preds = %225
  %236 = fdiv double 1.000000e+00, %233
  store double %236, ptr %27, align 8, !tbaa !9
  %237 = getelementptr inbounds double, ptr %34, i64 %.pre1052
  %238 = load double, ptr %237, align 8, !tbaa !9
  store double %238, ptr %14, align 8, !tbaa !9
  %239 = getelementptr inbounds double, ptr %34, i64 %indvars.iv1012
  %240 = load double, ptr %239, align 8, !tbaa !9
  %241 = fcmp oge double %238, %240
  %242 = select i1 %241, double %238, double %240
  %243 = fsub double %42, %.1819936
  %244 = fmul double %243, %236
  %245 = fcmp ogt double %242, %244
  br i1 %245, label %246, label %250

246:                                              ; preds = %235
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %27, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %247 = load double, ptr %27, align 8, !tbaa !9
  %248 = load double, ptr %7, align 8, !tbaa !9
  %249 = fmul double %247, %248
  store double %249, ptr %7, align 8, !tbaa !9
  br label %250

250:                                              ; preds = %235, %246, %225
  %251 = icmp ugt i64 %.pre1052, 1
  %252 = trunc i64 %indvars.iv1012 to i32
  %253 = add i32 %252, -2
  br i1 %251, label %254, label %._crit_edge1047

254:                                              ; preds = %250
  store i32 %253, ptr %12, align 4, !tbaa !5
  %255 = load double, ptr %151, align 8, !tbaa !9
  %256 = fneg double %255
  store double %256, ptr %14, align 8, !tbaa !9
  %gep931 = getelementptr double, ptr %invariant.gep, i64 %154
  call void @daxpy_(ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %gep931, ptr noundef nonnull @c__1, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  store i32 %253, ptr %12, align 4, !tbaa !5
  %257 = load double, ptr %152, align 8, !tbaa !9
  %258 = fneg double %257
  store double %258, ptr %14, align 8, !tbaa !9
  %259 = mul nsw i64 %indvars.iv1012, %137
  %gep933 = getelementptr double, ptr %invariant.gep, i64 %259
  call void @daxpy_(ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %gep933, ptr noundef nonnull @c__1, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  store i32 %253, ptr %12, align 4, !tbaa !5
  %260 = call i32 @idamax_(ptr noundef nonnull %12, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %261 = sext i32 %260 to i64
  %262 = getelementptr inbounds double, ptr %33, i64 %261
  %263 = load double, ptr %262, align 8, !tbaa !9
  store double %263, ptr %14, align 8, !tbaa !9
  %264 = fcmp oge double %263, 0.000000e+00
  %265 = fneg double %263
  %266 = select i1 %264, double %263, double %265
  br label %._crit_edge1047

._crit_edge1047:                                  ; preds = %138, %173, %250, %254, %206
  %.3821 = phi double [ %.1819936, %173 ], [ %.1819936, %250 ], [ %266, %254 ], [ %216, %206 ], [ %.1819936, %138 ]
  %.2808 = phi i32 [ %.1807879, %173 ], [ %253, %250 ], [ %253, %254 ], [ %.1807879, %206 ], [ %.0806938, %138 ]
  %267 = icmp sgt i64 %indvars.iv1012, 1
  br i1 %267, label %138, label %.loopexit907, !llvm.loop !22

268:                                              ; preds = %132
  store i32 %133, ptr %12, align 4, !tbaa !5
  %.not865924 = icmp slt i32 %133, 1
  br i1 %.not865924, label %.loopexit907, label %.lr.ph929

.lr.ph929:                                        ; preds = %268
  %269 = getelementptr inbounds i8, ptr %17, i64 8
  %270 = getelementptr inbounds i8, ptr %18, i64 8
  %271 = sext i32 %29 to i64
  br label %272

272:                                              ; preds = %.lr.ph929, %._crit_edge1046
  %indvars.iv1009 = phi i64 [ 1, %.lr.ph929 ], [ %.pre1053, %._crit_edge1046 ]
  %.3809927 = phi i32 [ 1, %.lr.ph929 ], [ %.5, %._crit_edge1046 ]
  %.4822925 = phi double [ %.0818, %.lr.ph929 ], [ %.8826, %._crit_edge1046 ]
  %indvars1011 = trunc i64 %indvars.iv1009 to i32
  %273 = sext i32 %.3809927 to i64
  %274 = icmp slt i64 %indvars.iv1009, %273
  %.pre1053 = add nuw nsw i64 %indvars.iv1009, 1
  br i1 %274, label %._crit_edge1046, label %275

275:                                              ; preds = %272
  %276 = add nuw nsw i32 %indvars1011, 1
  %277 = load i32, ptr %2, align 4, !tbaa !5
  %278 = sext i32 %277 to i64
  %279 = icmp slt i64 %indvars.iv1009, %278
  br i1 %279, label %280, label %289

280:                                              ; preds = %275
  %281 = mul nsw i64 %indvars.iv1009, %271
  %282 = getelementptr double, ptr %31, i64 %.pre1053
  %283 = getelementptr double, ptr %282, i64 %281
  %284 = load double, ptr %283, align 8, !tbaa !9
  %285 = fcmp une double %284, 0.000000e+00
  br i1 %285, label %286, label %289

286:                                              ; preds = %280
  %287 = trunc i64 %indvars.iv1009 to i32
  %288 = add i32 %287, 2
  br label %289

289:                                              ; preds = %280, %286, %275
  %.4 = phi i32 [ %288, %286 ], [ %276, %280 ], [ %276, %275 ]
  %.0802 = phi i32 [ %276, %286 ], [ %indvars1011, %280 ], [ %indvars1011, %275 ]
  %290 = zext i32 %.0802 to i64
  %291 = icmp eq i64 %indvars.iv1009, %290
  %292 = getelementptr inbounds double, ptr %33, i64 %indvars.iv1009
  %293 = load double, ptr %292, align 8, !tbaa !9
  store double %293, ptr %14, align 8, !tbaa !9
  br i1 %291, label %294, label %352

294:                                              ; preds = %289
  %295 = fcmp ogt double %.4822925, 1.000000e+00
  br i1 %295, label %296, label %311

296:                                              ; preds = %294
  %297 = fcmp oge double %293, 0.000000e+00
  %298 = fneg double %293
  %299 = select i1 %297, double %293, double %298
  %300 = fdiv double 1.000000e+00, %.4822925
  store double %300, ptr %27, align 8, !tbaa !9
  %301 = getelementptr inbounds double, ptr %34, i64 %indvars.iv1009
  %302 = load double, ptr %301, align 8, !tbaa !9
  %303 = fsub double %42, %299
  %304 = fmul double %300, %303
  %305 = fcmp ogt double %302, %304
  br i1 %305, label %306, label %311

306:                                              ; preds = %296
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %27, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %307 = load double, ptr %27, align 8, !tbaa !9
  %308 = load double, ptr %7, align 8, !tbaa !9
  %309 = fmul double %307, %308
  store double %309, ptr %7, align 8, !tbaa !9
  %310 = fmul double %.4822925, %307
  br label %311

311:                                              ; preds = %296, %306, %294
  %.5823 = phi double [ %310, %306 ], [ %.4822925, %296 ], [ %.4822925, %294 ]
  %312 = trunc i64 %indvars.iv1009 to i32
  %313 = add i32 %312, -1
  store i32 %313, ptr %13, align 4, !tbaa !5
  %314 = mul nsw i64 %indvars.iv1009, %271
  %315 = mul nsw i32 %29, %indvars1011
  %gep923 = getelementptr double, ptr %invariant.gep, i64 %314
  %316 = call double @ddot_(ptr noundef nonnull %13, ptr noundef %gep923, ptr noundef nonnull @c__1, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %317 = load double, ptr %292, align 8, !tbaa !9
  %318 = fsub double %317, %316
  store double %318, ptr %292, align 8, !tbaa !9
  %319 = fcmp oge double %318, 0.000000e+00
  %320 = fneg double %318
  %321 = select i1 %319, double %318, double %320
  %322 = sext i32 %315 to i64
  %323 = getelementptr double, ptr %31, i64 %indvars.iv1009
  %324 = getelementptr double, ptr %323, i64 %322
  %325 = load double, ptr %324, align 8, !tbaa !9
  store double %325, ptr %14, align 8, !tbaa !9
  %326 = fcmp oge double %325, 0.000000e+00
  %327 = fneg double %325
  %328 = select i1 %326, double %325, double %327
  store double %325, ptr %28, align 8, !tbaa !9
  %329 = load double, ptr %16, align 8, !tbaa !9
  %330 = fcmp olt double %328, %329
  br i1 %330, label %331, label %332

331:                                              ; preds = %311
  store double %329, ptr %28, align 8, !tbaa !9
  store i32 1, ptr %10, align 4, !tbaa !5
  br label %332

332:                                              ; preds = %331, %311
  %333 = phi double [ %329, %331 ], [ %325, %311 ]
  %.1 = phi double [ %329, %331 ], [ %328, %311 ]
  %334 = fcmp olt double %.1, 1.000000e+00
  %335 = fmul double %42, %.1
  %336 = fcmp ogt double %321, %335
  %or.cond871 = select i1 %334, i1 %336, i1 false
  br i1 %or.cond871, label %337, label %343

337:                                              ; preds = %332
  %338 = fdiv double 1.000000e+00, %321
  store double %338, ptr %27, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %27, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %339 = load double, ptr %27, align 8, !tbaa !9
  %340 = load double, ptr %7, align 8, !tbaa !9
  %341 = fmul double %339, %340
  store double %341, ptr %7, align 8, !tbaa !9
  %342 = fmul double %.5823, %339
  %.pre1037 = load double, ptr %28, align 8, !tbaa !9
  %.pre1038 = load double, ptr %292, align 8, !tbaa !9
  br label %343

343:                                              ; preds = %337, %332
  %344 = phi double [ %.pre1038, %337 ], [ %318, %332 ]
  %345 = phi double [ %.pre1037, %337 ], [ %333, %332 ]
  %.6824 = phi double [ %342, %337 ], [ %.5823, %332 ]
  %346 = fdiv double %344, %345
  store double %346, ptr %292, align 8, !tbaa !9
  store double %346, ptr %14, align 8, !tbaa !9
  %347 = fcmp oge double %346, 0.000000e+00
  %348 = fneg double %346
  %349 = select i1 %347, double %346, double %348
  %350 = fcmp oge double %.6824, %349
  %351 = select i1 %350, double %.6824, double %349
  br label %._crit_edge1046

352:                                              ; preds = %289
  %353 = sext i32 %.0802 to i64
  %354 = getelementptr inbounds double, ptr %33, i64 %353
  %355 = fcmp ogt double %.4822925, 1.000000e+00
  br i1 %355, label %356, label %381

356:                                              ; preds = %352
  %357 = fcmp oge double %293, 0.000000e+00
  %358 = fneg double %293
  %359 = select i1 %357, double %293, double %358
  %360 = load double, ptr %354, align 8, !tbaa !9
  %361 = fcmp oge double %360, 0.000000e+00
  %362 = fneg double %360
  %363 = select i1 %361, double %360, double %362
  %364 = fcmp oge double %359, %363
  %365 = select i1 %364, double %359, double %363
  %366 = fdiv double 1.000000e+00, %.4822925
  store double %366, ptr %27, align 8, !tbaa !9
  %367 = getelementptr inbounds double, ptr %34, i64 %353
  %368 = load double, ptr %367, align 8, !tbaa !9
  store double %368, ptr %14, align 8, !tbaa !9
  %369 = getelementptr inbounds double, ptr %34, i64 %indvars.iv1009
  %370 = load double, ptr %369, align 8, !tbaa !9
  %371 = fcmp oge double %368, %370
  %372 = select i1 %371, double %368, double %370
  %373 = fsub double %42, %365
  %374 = fmul double %366, %373
  %375 = fcmp ogt double %372, %374
  br i1 %375, label %376, label %381

376:                                              ; preds = %356
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %27, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %377 = load double, ptr %27, align 8, !tbaa !9
  %378 = load double, ptr %7, align 8, !tbaa !9
  %379 = fmul double %377, %378
  store double %379, ptr %7, align 8, !tbaa !9
  %380 = fmul double %.4822925, %377
  %.pre = load double, ptr %292, align 8, !tbaa !9
  br label %381

381:                                              ; preds = %356, %376, %352
  %382 = phi double [ %.pre, %376 ], [ %293, %356 ], [ %293, %352 ]
  %.7825 = phi double [ %380, %376 ], [ %.4822925, %356 ], [ %.4822925, %352 ]
  %383 = trunc i64 %indvars.iv1009 to i32
  %384 = add i32 %383, -1
  store i32 %384, ptr %13, align 4, !tbaa !5
  %385 = mul nsw i64 %indvars.iv1009, %271
  %386 = mul nsw i32 %29, %indvars1011
  %gep919 = getelementptr double, ptr %invariant.gep, i64 %385
  %387 = call double @ddot_(ptr noundef nonnull %13, ptr noundef %gep919, ptr noundef nonnull @c__1, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %388 = fsub double %382, %387
  store double %388, ptr %17, align 16, !tbaa !9
  store i32 %384, ptr %13, align 4, !tbaa !5
  %389 = load double, ptr %354, align 8, !tbaa !9
  %390 = mul nsw i32 %.0802, %29
  %391 = sext i32 %390 to i64
  %gep921 = getelementptr double, ptr %invariant.gep, i64 %391
  %392 = call double @ddot_(ptr noundef nonnull %13, ptr noundef %gep921, ptr noundef nonnull @c__1, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %393 = fsub double %389, %392
  store double %393, ptr %269, align 8, !tbaa !9
  %394 = sext i32 %386 to i64
  %395 = getelementptr double, ptr %31, i64 %indvars.iv1009
  %396 = getelementptr double, ptr %395, i64 %394
  call void @dlaln2_(ptr noundef nonnull @c_true, ptr noundef nonnull @c__2, ptr noundef nonnull @c__1, ptr noundef nonnull %16, ptr noundef nonnull @c_b21, ptr noundef %396, ptr noundef nonnull %4, ptr noundef nonnull @c_b21, ptr noundef nonnull @c_b21, ptr noundef nonnull %17, ptr noundef nonnull @c__2, ptr noundef nonnull @c_b25, ptr noundef nonnull @c_b25, ptr noundef nonnull %18, ptr noundef nonnull @c__2, ptr noundef nonnull %25, ptr noundef nonnull %23, ptr noundef nonnull %15) #5
  %397 = load i32, ptr %15, align 4, !tbaa !5
  %.not866 = icmp eq i32 %397, 0
  br i1 %.not866, label %399, label %398

398:                                              ; preds = %381
  store i32 2, ptr %10, align 4, !tbaa !5
  br label %399

399:                                              ; preds = %398, %381
  %400 = load double, ptr %25, align 8, !tbaa !9
  %401 = fcmp une double %400, 1.000000e+00
  br i1 %401, label %402, label %406

402:                                              ; preds = %399
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %25, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %403 = load double, ptr %25, align 8, !tbaa !9
  %404 = load double, ptr %7, align 8, !tbaa !9
  %405 = fmul double %403, %404
  store double %405, ptr %7, align 8, !tbaa !9
  br label %406

406:                                              ; preds = %402, %399
  %407 = load double, ptr %18, align 16, !tbaa !9
  store double %407, ptr %292, align 8, !tbaa !9
  %408 = load double, ptr %270, align 8, !tbaa !9
  store double %408, ptr %354, align 8, !tbaa !9
  %409 = load double, ptr %292, align 8, !tbaa !9
  store double %409, ptr %14, align 8, !tbaa !9
  %410 = fcmp oge double %409, 0.000000e+00
  %411 = fneg double %409
  %412 = select i1 %410, double %409, double %411
  %413 = fcmp oge double %408, 0.000000e+00
  %414 = fneg double %408
  %415 = select i1 %413, double %408, double %414
  %416 = fcmp oge double %412, %415
  %417 = select i1 %416, double %412, double %415
  %418 = fcmp oge double %417, %.7825
  %419 = select i1 %418, double %417, double %.7825
  br label %._crit_edge1046

._crit_edge1046:                                  ; preds = %272, %406, %343
  %.8826 = phi double [ %419, %406 ], [ %351, %343 ], [ %.4822925, %272 ]
  %.5 = phi i32 [ %.4, %406 ], [ %.4, %343 ], [ %.3809927, %272 ]
  %420 = load i32, ptr %12, align 4, !tbaa !5
  %421 = sext i32 %420 to i64
  %.not865.not = icmp slt i64 %indvars.iv1009, %421
  br i1 %.not865.not, label %272, label %.loopexit907, !llvm.loop !23

422:                                              ; preds = %130
  %423 = load double, ptr %6, align 8, !tbaa !9
  %424 = fcmp ult double %423, 0.000000e+00
  %425 = fneg double %423
  %426 = select i1 %424, double %425, double %423
  %427 = fmul double %39, %426
  %428 = load double, ptr %16, align 8
  %429 = fcmp oge double %427, %428
  %430 = select i1 %429, double %427, double %428
  store double %430, ptr %20, align 8, !tbaa !9
  %431 = load i32, ptr %2, align 4, !tbaa !5
  br i1 %.not, label %432, label %683

432:                                              ; preds = %422
  %433 = icmp sgt i32 %431, 0
  br i1 %433, label %.lr.ph997, label %.loopexit907

.lr.ph997:                                        ; preds = %432
  %434 = getelementptr inbounds i8, ptr %17, i64 16
  %435 = getelementptr inbounds i8, ptr %18, i64 16
  %436 = add nsw i32 %431, -1
  %437 = zext nneg i32 %436 to i64
  %438 = zext nneg i32 %431 to i64
  %439 = sext i32 %29 to i64
  br label %440

440:                                              ; preds = %.lr.ph997, %.loopexit
  %indvars.iv1032 = phi i64 [ %438, %.lr.ph997 ], [ %.pre1050, %.loopexit ]
  %indvars.iv1030 = phi i64 [ %437, %.lr.ph997 ], [ %indvars.iv.next1031, %.loopexit ]
  %.6995 = phi i32 [ %431, %.lr.ph997 ], [ %.8, %.loopexit ]
  %.9827992 = phi double [ %.0818, %.lr.ph997 ], [ %.13, %.loopexit ]
  %441 = sext i32 %.6995 to i64
  %442 = icmp sgt i64 %indvars.iv1032, %441
  %.pre1050 = add nsw i64 %indvars.iv1032, -1
  br i1 %442, label %.loopexit, label %443

443:                                              ; preds = %440
  %.not861 = icmp eq i64 %indvars.iv1032, 1
  br i1 %.not861, label %466, label %444

444:                                              ; preds = %443
  %indvars1036 = trunc i64 %indvars.iv1032 to i32
  %445 = add nsw i32 %indvars1036, -1
  %446 = mul nsw i32 %445, %29
  %447 = sext i32 %446 to i64
  %448 = getelementptr double, ptr %31, i64 %indvars.iv1032
  %449 = getelementptr double, ptr %448, i64 %447
  %450 = load double, ptr %449, align 8, !tbaa !9
  %451 = fcmp une double %450, 0.000000e+00
  %452 = trunc nuw nsw i64 %.pre1050 to i32
  %.pre1044 = load i32, ptr %2, align 4, !tbaa !5
  br i1 %451, label %.thread891, label %467

.thread891:                                       ; preds = %444
  %453 = getelementptr inbounds double, ptr %33, i64 %.pre1050
  %454 = getelementptr inbounds double, ptr %33, i64 %indvars.iv1032
  %455 = load <2 x double>, ptr %453, align 8, !tbaa !9
  store <2 x double> %455, ptr %17, align 16, !tbaa !9
  %456 = sext i32 %.pre1044 to i64
  %457 = getelementptr double, ptr %33, i64 %.pre1050
  %458 = getelementptr double, ptr %457, i64 %456
  %459 = load <2 x double>, ptr %458, align 8, !tbaa !9
  store <2 x double> %459, ptr %434, align 16, !tbaa !9
  %460 = load double, ptr %6, align 8, !tbaa !9
  %461 = fneg double %460
  store double %461, ptr %14, align 8, !tbaa !9
  %462 = mul nsw i64 %.pre1050, %439
  %463 = getelementptr double, ptr %31, i64 %.pre1050
  %464 = getelementptr double, ptr %463, i64 %447
  call void @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__2, ptr noundef nonnull @c__2, ptr noundef nonnull %20, ptr noundef nonnull @c_b21, ptr noundef %464, ptr noundef nonnull %4, ptr noundef nonnull @c_b21, ptr noundef nonnull @c_b21, ptr noundef nonnull %17, ptr noundef nonnull @c__2, ptr noundef nonnull @c_b25, ptr noundef nonnull %14, ptr noundef nonnull %18, ptr noundef nonnull @c__2, ptr noundef nonnull %25, ptr noundef nonnull %23, ptr noundef nonnull %15) #5
  %465 = load i32, ptr %15, align 4, !tbaa !5
  %.not862 = icmp eq i32 %465, 0
  br i1 %.not862, label %577, label %576

466:                                              ; preds = %443
  %.pre1043 = load i32, ptr %2, align 4, !tbaa !5
  br label %467

467:                                              ; preds = %444, %466
  %468 = phi i32 [ %.pre1043, %466 ], [ %.pre1044, %444 ]
  %storemerge904.in = phi ptr [ %5, %466 ], [ %6, %444 ]
  %.7889901 = phi i32 [ 0, %466 ], [ %452, %444 ]
  %storemerge904 = load double, ptr %storemerge904.in, align 8, !tbaa !9
  store double %storemerge904, ptr %19, align 8, !tbaa !9
  %469 = getelementptr inbounds double, ptr %33, i64 %indvars.iv1032
  %470 = load double, ptr %469, align 8, !tbaa !9
  %471 = fcmp oge double %470, 0.000000e+00
  %472 = fneg double %470
  %473 = select i1 %471, double %470, double %472
  %474 = sext i32 %468 to i64
  %475 = getelementptr double, ptr %33, i64 %indvars.iv1032
  %476 = getelementptr double, ptr %475, i64 %474
  %477 = load double, ptr %476, align 8, !tbaa !9
  %478 = fcmp oge double %477, 0.000000e+00
  %479 = fneg double %477
  %480 = select i1 %478, double %477, double %479
  %481 = fadd double %473, %480
  %482 = mul nsw i64 %indvars.iv1032, %439
  %483 = getelementptr double, ptr %31, i64 %482
  %484 = getelementptr double, ptr %483, i64 %indvars.iv1032
  %485 = load double, ptr %484, align 8, !tbaa !9
  store double %485, ptr %14, align 8, !tbaa !9
  %486 = fcmp oge double %485, 0.000000e+00
  %487 = fneg double %485
  %488 = select i1 %486, double %485, double %487
  %489 = fcmp oge double %storemerge904, 0.000000e+00
  %490 = fneg double %storemerge904
  %491 = select i1 %489, double %storemerge904, double %490
  %492 = fadd double %488, %491
  store double %485, ptr %28, align 8, !tbaa !9
  %493 = load double, ptr %20, align 8, !tbaa !9
  %494 = fcmp olt double %492, %493
  br i1 %494, label %495, label %496

495:                                              ; preds = %467
  store double %493, ptr %28, align 8, !tbaa !9
  store i32 1, ptr %10, align 4, !tbaa !5
  br label %496

496:                                              ; preds = %495, %467
  %.2 = phi double [ %493, %495 ], [ %492, %467 ]
  %497 = fcmp oeq double %481, 0.000000e+00
  br i1 %497, label %.loopexit, label %498

498:                                              ; preds = %496
  %499 = fcmp olt double %.2, 1.000000e+00
  %500 = fmul double %42, %.2
  %501 = fcmp ogt double %481, %500
  %or.cond873 = select i1 %499, i1 %501, i1 false
  br i1 %or.cond873, label %502, label %508

502:                                              ; preds = %498
  %503 = fdiv double 1.000000e+00, %481
  store double %503, ptr %27, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %22, ptr noundef nonnull %27, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %504 = load double, ptr %27, align 8, !tbaa !9
  %505 = load double, ptr %7, align 8, !tbaa !9
  %506 = fmul double %504, %505
  store double %506, ptr %7, align 8, !tbaa !9
  %507 = fmul double %.9827992, %504
  br label %508

508:                                              ; preds = %502, %498
  %.10828 = phi double [ %507, %502 ], [ %.9827992, %498 ]
  %509 = load i32, ptr %2, align 4, !tbaa !5
  %510 = sext i32 %509 to i64
  %511 = getelementptr double, ptr %33, i64 %indvars.iv1032
  %512 = getelementptr double, ptr %511, i64 %510
  call void @dladiv_(ptr noundef nonnull %469, ptr noundef nonnull %512, ptr noundef nonnull %28, ptr noundef nonnull %19, ptr noundef nonnull %26, ptr noundef nonnull %24) #5
  %513 = load double, ptr %26, align 8, !tbaa !9
  store double %513, ptr %469, align 8, !tbaa !9
  %514 = load double, ptr %24, align 8, !tbaa !9
  %515 = load i32, ptr %2, align 4, !tbaa !5
  %516 = sext i32 %515 to i64
  %517 = getelementptr double, ptr %33, i64 %indvars.iv1032
  %518 = getelementptr double, ptr %517, i64 %516
  store double %514, ptr %518, align 8, !tbaa !9
  %519 = load double, ptr %469, align 8, !tbaa !9
  store double %519, ptr %14, align 8, !tbaa !9
  %520 = fcmp oge double %519, 0.000000e+00
  %521 = fneg double %519
  %522 = select i1 %520, double %519, double %521
  %523 = fcmp oge double %514, 0.000000e+00
  %524 = fneg double %514
  %525 = select i1 %523, double %514, double %524
  %526 = fadd double %525, %522
  %527 = fcmp ogt double %526, 1.000000e+00
  br i1 %527, label %528, label %539

528:                                              ; preds = %508
  %529 = fdiv double 1.000000e+00, %526
  store double %529, ptr %27, align 8, !tbaa !9
  %530 = getelementptr inbounds double, ptr %34, i64 %indvars.iv1032
  %531 = load double, ptr %530, align 8, !tbaa !9
  %532 = fsub double %42, %.10828
  %533 = fmul double %532, %529
  %534 = fcmp ogt double %531, %533
  br i1 %534, label %535, label %539

535:                                              ; preds = %528
  call void @dscal_(ptr noundef nonnull %22, ptr noundef nonnull %27, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %536 = load double, ptr %27, align 8, !tbaa !9
  %537 = load double, ptr %7, align 8, !tbaa !9
  %538 = fmul double %536, %537
  store double %538, ptr %7, align 8, !tbaa !9
  br label %539

539:                                              ; preds = %528, %535, %508
  br i1 %.not861, label %.loopexit907, label %540

540:                                              ; preds = %539
  %541 = trunc nuw nsw i64 %.pre1050 to i32
  store i32 %541, ptr %12, align 4, !tbaa !5
  %542 = load double, ptr %469, align 8, !tbaa !9
  %543 = fneg double %542
  store double %543, ptr %14, align 8, !tbaa !9
  %gep987 = getelementptr double, ptr %invariant.gep, i64 %482
  call void @daxpy_(ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %gep987, ptr noundef nonnull @c__1, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  store i32 %541, ptr %12, align 4, !tbaa !5
  %544 = load i32, ptr %2, align 4, !tbaa !5
  %545 = sext i32 %544 to i64
  %546 = getelementptr double, ptr %33, i64 %indvars.iv1032
  %547 = getelementptr double, ptr %546, i64 %545
  %548 = load double, ptr %547, align 8, !tbaa !9
  %549 = fneg double %548
  store double %549, ptr %14, align 8, !tbaa !9
  %gep989 = getelementptr double, ptr %8, i64 %545
  call void @daxpy_(ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %gep987, ptr noundef nonnull @c__1, ptr noundef %gep989, ptr noundef nonnull @c__1) #5
  %550 = getelementptr inbounds double, ptr %32, i64 %indvars.iv1032
  %551 = load double, ptr %550, align 8, !tbaa !9
  %552 = load i32, ptr %2, align 4, !tbaa !5
  %553 = sext i32 %552 to i64
  %554 = getelementptr double, ptr %33, i64 %indvars.iv1032
  %555 = getelementptr double, ptr %554, i64 %553
  %556 = load double, ptr %555, align 8, !tbaa !9
  %557 = load double, ptr %8, align 8, !tbaa !9
  %558 = call double @llvm.fmuladd.f64(double %551, double %556, double %557)
  store double %558, ptr %8, align 8, !tbaa !9
  %559 = load double, ptr %550, align 8, !tbaa !9
  %560 = load double, ptr %469, align 8, !tbaa !9
  %gep991 = getelementptr double, ptr %8, i64 %553
  %561 = load double, ptr %gep991, align 8, !tbaa !9
  %562 = fneg double %559
  %563 = call double @llvm.fmuladd.f64(double %562, double %560, double %561)
  store double %563, ptr %gep991, align 8, !tbaa !9
  store i32 %541, ptr %12, align 4, !tbaa !5
  %.not864.not969 = icmp sgt i64 %indvars.iv1032, 1
  br i1 %.not864.not969, label %.lr.ph973.preheader, label %.loopexit907

.lr.ph973.preheader:                              ; preds = %540
  %invariant.gep1070 = getelementptr double, ptr %33, i64 %553
  br label %.lr.ph973

.lr.ph973:                                        ; preds = %.lr.ph973.preheader, %.lr.ph973
  %indvars.iv1025 = phi i64 [ 1, %.lr.ph973.preheader ], [ %indvars.iv.next1026, %.lr.ph973 ]
  %.11829970 = phi double [ 0.000000e+00, %.lr.ph973.preheader ], [ %575, %.lr.ph973 ]
  %564 = getelementptr inbounds double, ptr %33, i64 %indvars.iv1025
  %565 = load double, ptr %564, align 8, !tbaa !9
  %566 = fcmp oge double %565, 0.000000e+00
  %567 = fneg double %565
  %568 = select i1 %566, double %565, double %567
  %gep1071 = getelementptr double, ptr %invariant.gep1070, i64 %indvars.iv1025
  %569 = load double, ptr %gep1071, align 8, !tbaa !9
  %570 = fcmp oge double %569, 0.000000e+00
  %571 = fneg double %569
  %572 = select i1 %570, double %569, double %571
  %573 = fadd double %568, %572
  %574 = fcmp oge double %.11829970, %573
  %575 = select i1 %574, double %.11829970, double %573
  %indvars.iv.next1026 = add nuw nsw i64 %indvars.iv1025, 1
  %exitcond1029.not = icmp eq i64 %indvars.iv.next1026, %indvars.iv1032
  br i1 %exitcond1029.not, label %..loopexit_crit_edge, label %.lr.ph973, !llvm.loop !24

576:                                              ; preds = %.thread891
  store i32 2, ptr %10, align 4, !tbaa !5
  br label %577

577:                                              ; preds = %576, %.thread891
  %578 = load double, ptr %25, align 8, !tbaa !9
  %579 = fcmp une double %578, 1.000000e+00
  br i1 %579, label %580, label %586

580:                                              ; preds = %577
  %581 = load i32, ptr %2, align 4, !tbaa !5
  %582 = shl i32 %581, 1
  store i32 %582, ptr %12, align 4, !tbaa !5
  call void @dscal_(ptr noundef nonnull %12, ptr noundef nonnull %25, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %583 = load double, ptr %25, align 8, !tbaa !9
  %584 = load double, ptr %7, align 8, !tbaa !9
  %585 = fmul double %583, %584
  store double %585, ptr %7, align 8, !tbaa !9
  br label %586

586:                                              ; preds = %580, %577
  %587 = load <2 x double>, ptr %18, align 16
  store <2 x double> %587, ptr %453, align 8, !tbaa !9
  %588 = load i32, ptr %2, align 4, !tbaa !5
  %589 = sext i32 %588 to i64
  %590 = getelementptr double, ptr %33, i64 %.pre1050
  %591 = getelementptr double, ptr %590, i64 %589
  %592 = load <2 x double>, ptr %435, align 16
  store <2 x double> %592, ptr %591, align 8, !tbaa !9
  %593 = shufflevector <2 x double> %587, <2 x double> %592, <2 x i32> <i32 0, i32 2>
  %594 = fcmp oge <2 x double> %593, zeroinitializer
  %595 = fneg <2 x double> %593
  %596 = select <2 x i1> %594, <2 x double> %593, <2 x double> %595
  %597 = shufflevector <2 x double> %587, <2 x double> %592, <2 x i32> <i32 1, i32 3>
  %598 = fcmp oge <2 x double> %597, zeroinitializer
  %599 = fneg <2 x double> %597
  %600 = select <2 x i1> %598, <2 x double> %597, <2 x double> %599
  %601 = shufflevector <2 x double> %596, <2 x double> %600, <2 x i32> <i32 0, i32 2>
  %602 = shufflevector <2 x double> %596, <2 x double> %600, <2 x i32> <i32 1, i32 3>
  %603 = fadd <2 x double> %601, %602
  %604 = extractelement <2 x double> %603, i64 0
  store double %604, ptr %14, align 8, !tbaa !9
  %605 = extractelement <2 x double> %603, i64 1
  %606 = fcmp oge double %604, %605
  %607 = select i1 %606, double %604, double %605
  %608 = fcmp ogt double %607, 1.000000e+00
  br i1 %608, label %609, label %624

609:                                              ; preds = %586
  %610 = fdiv double 1.000000e+00, %607
  store double %610, ptr %27, align 8, !tbaa !9
  %611 = getelementptr inbounds double, ptr %34, i64 %.pre1050
  %612 = load double, ptr %611, align 8, !tbaa !9
  store double %612, ptr %14, align 8, !tbaa !9
  %613 = getelementptr inbounds double, ptr %34, i64 %indvars.iv1032
  %614 = load double, ptr %613, align 8, !tbaa !9
  %615 = fcmp oge double %612, %614
  %616 = select i1 %615, double %612, double %614
  %617 = fsub double %42, %.9827992
  %618 = fmul double %617, %610
  %619 = fcmp ogt double %616, %618
  br i1 %619, label %620, label %624

620:                                              ; preds = %609
  call void @dscal_(ptr noundef nonnull %22, ptr noundef nonnull %27, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %621 = load double, ptr %27, align 8, !tbaa !9
  %622 = load double, ptr %7, align 8, !tbaa !9
  %623 = fmul double %621, %622
  store double %623, ptr %7, align 8, !tbaa !9
  br label %624

624:                                              ; preds = %609, %620, %586
  %625 = icmp ugt i64 %.pre1050, 1
  %626 = trunc i64 %indvars.iv1032 to i32
  %627 = add i32 %626, -2
  br i1 %625, label %628, label %.loopexit

628:                                              ; preds = %624
  store i32 %627, ptr %12, align 4, !tbaa !5
  %629 = load double, ptr %453, align 8, !tbaa !9
  %630 = fneg double %629
  store double %630, ptr %14, align 8, !tbaa !9
  %gep977 = getelementptr double, ptr %invariant.gep, i64 %462
  call void @daxpy_(ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %gep977, ptr noundef nonnull @c__1, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  store i32 %627, ptr %12, align 4, !tbaa !5
  %631 = load double, ptr %454, align 8, !tbaa !9
  %632 = fneg double %631
  store double %632, ptr %14, align 8, !tbaa !9
  %633 = mul nsw i64 %indvars.iv1032, %439
  %gep979 = getelementptr double, ptr %invariant.gep, i64 %633
  call void @daxpy_(ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %gep979, ptr noundef nonnull @c__1, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  store i32 %627, ptr %12, align 4, !tbaa !5
  %634 = load i32, ptr %2, align 4, !tbaa !5
  %635 = sext i32 %634 to i64
  %636 = getelementptr double, ptr %33, i64 %.pre1050
  %637 = getelementptr double, ptr %636, i64 %635
  %638 = load double, ptr %637, align 8, !tbaa !9
  %639 = fneg double %638
  store double %639, ptr %14, align 8, !tbaa !9
  %gep981 = getelementptr double, ptr %8, i64 %635
  call void @daxpy_(ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %gep977, ptr noundef nonnull @c__1, ptr noundef %gep981, ptr noundef nonnull @c__1) #5
  store i32 %627, ptr %12, align 4, !tbaa !5
  %640 = load i32, ptr %2, align 4, !tbaa !5
  %641 = sext i32 %640 to i64
  %642 = getelementptr double, ptr %33, i64 %indvars.iv1032
  %643 = getelementptr double, ptr %642, i64 %641
  %644 = load double, ptr %643, align 8, !tbaa !9
  %645 = fneg double %644
  store double %645, ptr %14, align 8, !tbaa !9
  %gep983 = getelementptr double, ptr %8, i64 %641
  call void @daxpy_(ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %gep979, ptr noundef nonnull @c__1, ptr noundef %gep983, ptr noundef nonnull @c__1) #5
  %646 = load double, ptr %8, align 8, !tbaa !9
  %647 = getelementptr inbounds double, ptr %32, i64 %.pre1050
  %648 = load double, ptr %647, align 8, !tbaa !9
  %649 = load i32, ptr %2, align 4, !tbaa !5
  %650 = sext i32 %649 to i64
  %651 = getelementptr double, ptr %33, i64 %.pre1050
  %652 = getelementptr double, ptr %651, i64 %650
  %653 = load double, ptr %652, align 8, !tbaa !9
  %654 = call double @llvm.fmuladd.f64(double %648, double %653, double %646)
  %655 = getelementptr inbounds double, ptr %32, i64 %indvars.iv1032
  %656 = load double, ptr %655, align 8, !tbaa !9
  %657 = getelementptr double, ptr %33, i64 %indvars.iv1032
  %658 = getelementptr double, ptr %657, i64 %650
  %659 = load double, ptr %658, align 8, !tbaa !9
  %660 = call double @llvm.fmuladd.f64(double %656, double %659, double %654)
  store double %660, ptr %8, align 8, !tbaa !9
  %gep985 = getelementptr double, ptr %8, i64 %650
  %661 = load double, ptr %gep985, align 8, !tbaa !9
  %662 = load double, ptr %647, align 8, !tbaa !9
  %663 = load double, ptr %453, align 8, !tbaa !9
  %664 = fneg double %662
  %665 = call double @llvm.fmuladd.f64(double %664, double %663, double %661)
  %666 = load double, ptr %655, align 8, !tbaa !9
  %667 = load double, ptr %454, align 8, !tbaa !9
  %668 = fneg double %666
  %669 = call double @llvm.fmuladd.f64(double %668, double %667, double %665)
  store double %669, ptr %gep985, align 8, !tbaa !9
  store i32 %627, ptr %12, align 4, !tbaa !5
  %.not863963 = icmp slt i64 %indvars.iv1032, 3
  br i1 %.not863963, label %.loopexit, label %.lr.ph967.preheader

.lr.ph967.preheader:                              ; preds = %628
  %invariant.gep1068 = getelementptr double, ptr %33, i64 %650
  br label %.lr.ph967

.lr.ph967:                                        ; preds = %.lr.ph967.preheader, %.lr.ph967
  %indvars.iv1018 = phi i64 [ 1, %.lr.ph967.preheader ], [ %indvars.iv.next1019, %.lr.ph967 ]
  %.12964 = phi double [ 0.000000e+00, %.lr.ph967.preheader ], [ %681, %.lr.ph967 ]
  %670 = getelementptr inbounds double, ptr %33, i64 %indvars.iv1018
  %671 = load double, ptr %670, align 8, !tbaa !9
  %672 = fcmp oge double %671, 0.000000e+00
  %673 = fneg double %671
  %674 = select i1 %672, double %671, double %673
  %gep1069 = getelementptr double, ptr %invariant.gep1068, i64 %indvars.iv1018
  %675 = load double, ptr %gep1069, align 8, !tbaa !9
  %676 = fcmp oge double %675, 0.000000e+00
  %677 = fneg double %675
  %678 = select i1 %676, double %675, double %677
  %679 = fadd double %674, %678
  %680 = fcmp oge double %679, %.12964
  %681 = select i1 %680, double %679, double %.12964
  %indvars.iv.next1019 = add nuw nsw i64 %indvars.iv1018, 1
  %exitcond1024.not = icmp eq i64 %indvars.iv.next1019, %indvars.iv1030
  br i1 %exitcond1024.not, label %..loopexit906_crit_edge, label %.lr.ph967, !llvm.loop !25

..loopexit_crit_edge:                             ; preds = %.lr.ph973
  store double %565, ptr %14, align 8, !tbaa !9
  br label %.loopexit

..loopexit906_crit_edge:                          ; preds = %.lr.ph967
  store double %671, ptr %14, align 8, !tbaa !9
  br label %.loopexit

.loopexit:                                        ; preds = %440, %628, %..loopexit906_crit_edge, %..loopexit_crit_edge, %496, %624
  %.13 = phi double [ 0.000000e+00, %628 ], [ %681, %..loopexit906_crit_edge ], [ %575, %..loopexit_crit_edge ], [ %.9827992, %496 ], [ %.9827992, %624 ], [ %.9827992, %440 ]
  %.8 = phi i32 [ %627, %628 ], [ %627, %..loopexit906_crit_edge ], [ %.7889901, %..loopexit_crit_edge ], [ %.7889901, %496 ], [ %627, %624 ], [ %.6995, %440 ]
  %682 = icmp sgt i64 %indvars.iv1032, 1
  %indvars.iv.next1031 = add nsw i64 %indvars.iv1030, -1
  br i1 %682, label %440, label %.loopexit907, !llvm.loop !26

683:                                              ; preds = %422
  store i32 %431, ptr %12, align 4, !tbaa !5
  %.not859957 = icmp slt i32 %431, 1
  br i1 %.not859957, label %.loopexit907, label %.lr.ph962

.lr.ph962:                                        ; preds = %683
  %684 = getelementptr inbounds i8, ptr %17, i64 8
  %685 = getelementptr inbounds i8, ptr %17, i64 16
  %686 = getelementptr inbounds i8, ptr %18, i64 8
  %687 = getelementptr inbounds i8, ptr %18, i64 16
  %688 = getelementptr inbounds i8, ptr %18, i64 24
  %689 = sext i32 %29 to i64
  br label %690

690:                                              ; preds = %.lr.ph962, %._crit_edge1048
  %691 = phi i32 [ %431, %.lr.ph962 ], [ %961, %._crit_edge1048 ]
  %indvars.iv1015 = phi i64 [ 1, %.lr.ph962 ], [ %.pre1051, %._crit_edge1048 ]
  %.9960 = phi i32 [ 1, %.lr.ph962 ], [ %.11, %._crit_edge1048 ]
  %.14958 = phi double [ %.0818, %.lr.ph962 ], [ %.18, %._crit_edge1048 ]
  %indvars1017 = trunc i64 %indvars.iv1015 to i32
  %692 = sext i32 %.9960 to i64
  %693 = icmp slt i64 %indvars.iv1015, %692
  %.pre1051 = add nuw nsw i64 %indvars.iv1015, 1
  br i1 %693, label %._crit_edge1048, label %694

694:                                              ; preds = %690
  %695 = add nuw nsw i32 %indvars1017, 1
  %696 = sext i32 %691 to i64
  %697 = icmp slt i64 %indvars.iv1015, %696
  br i1 %697, label %698, label %707

698:                                              ; preds = %694
  %699 = mul nsw i64 %indvars.iv1015, %689
  %700 = getelementptr double, ptr %31, i64 %.pre1051
  %701 = getelementptr double, ptr %700, i64 %699
  %702 = load double, ptr %701, align 8, !tbaa !9
  %703 = fcmp une double %702, 0.000000e+00
  br i1 %703, label %704, label %707

704:                                              ; preds = %698
  %705 = trunc i64 %indvars.iv1015 to i32
  %706 = add i32 %705, 2
  br label %707

707:                                              ; preds = %698, %704, %694
  %.10 = phi i32 [ %706, %704 ], [ %695, %698 ], [ %695, %694 ]
  %.1803 = phi i32 [ %695, %704 ], [ %indvars1017, %698 ], [ %indvars1017, %694 ]
  %708 = zext i32 %.1803 to i64
  %709 = icmp eq i64 %indvars.iv1015, %708
  %710 = getelementptr inbounds double, ptr %33, i64 %indvars.iv1015
  %711 = load double, ptr %710, align 8, !tbaa !9
  store double %711, ptr %14, align 8, !tbaa !9
  br i1 %709, label %712, label %826

712:                                              ; preds = %707
  %713 = fcmp ogt double %.14958, 1.000000e+00
  br i1 %713, label %714, label %736

714:                                              ; preds = %712
  %715 = fcmp oge double %711, 0.000000e+00
  %716 = fneg double %711
  %717 = select i1 %715, double %711, double %716
  %718 = getelementptr double, ptr %33, i64 %indvars.iv1015
  %719 = getelementptr double, ptr %718, i64 %696
  %720 = load double, ptr %719, align 8, !tbaa !9
  %721 = fcmp oge double %720, 0.000000e+00
  %722 = fneg double %720
  %723 = select i1 %721, double %720, double %722
  %724 = fadd double %717, %723
  %725 = fdiv double 1.000000e+00, %.14958
  store double %725, ptr %27, align 8, !tbaa !9
  %726 = getelementptr inbounds double, ptr %34, i64 %indvars.iv1015
  %727 = load double, ptr %726, align 8, !tbaa !9
  %728 = fsub double %42, %724
  %729 = fmul double %725, %728
  %730 = fcmp ogt double %727, %729
  br i1 %730, label %731, label %736

731:                                              ; preds = %714
  call void @dscal_(ptr noundef nonnull %22, ptr noundef nonnull %27, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %732 = load double, ptr %27, align 8, !tbaa !9
  %733 = load double, ptr %7, align 8, !tbaa !9
  %734 = fmul double %732, %733
  store double %734, ptr %7, align 8, !tbaa !9
  %735 = fmul double %.14958, %732
  br label %736

736:                                              ; preds = %714, %731, %712
  %.15 = phi double [ %735, %731 ], [ %.14958, %714 ], [ %.14958, %712 ]
  %737 = trunc i64 %indvars.iv1015 to i32
  %738 = add i32 %737, -1
  store i32 %738, ptr %13, align 4, !tbaa !5
  %739 = mul nsw i64 %indvars.iv1015, %689
  %740 = mul nsw i32 %29, %indvars1017
  %gep952 = getelementptr double, ptr %invariant.gep, i64 %739
  %741 = call double @ddot_(ptr noundef nonnull %13, ptr noundef %gep952, ptr noundef nonnull @c__1, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %742 = load double, ptr %710, align 8, !tbaa !9
  %743 = fsub double %742, %741
  store double %743, ptr %710, align 8, !tbaa !9
  store i32 %738, ptr %13, align 4, !tbaa !5
  %744 = load i32, ptr %2, align 4, !tbaa !5
  %745 = sext i32 %744 to i64
  %gep954 = getelementptr double, ptr %8, i64 %745
  %746 = call double @ddot_(ptr noundef nonnull %13, ptr noundef %gep952, ptr noundef nonnull @c__1, ptr noundef %gep954, ptr noundef nonnull @c__1) #5
  %747 = load i32, ptr %2, align 4, !tbaa !5
  %748 = sext i32 %747 to i64
  %749 = getelementptr double, ptr %33, i64 %indvars.iv1015
  %750 = getelementptr double, ptr %749, i64 %748
  %751 = load double, ptr %750, align 8, !tbaa !9
  %752 = fsub double %751, %746
  store double %752, ptr %750, align 8, !tbaa !9
  %753 = icmp ugt i64 %indvars.iv1015, 1
  br i1 %753, label %754, label %765

754:                                              ; preds = %736
  %755 = getelementptr inbounds double, ptr %32, i64 %indvars.iv1015
  %756 = load double, ptr %755, align 8, !tbaa !9
  %gep956 = getelementptr double, ptr %8, i64 %748
  %757 = load double, ptr %gep956, align 8, !tbaa !9
  %758 = load double, ptr %710, align 8, !tbaa !9
  %759 = fneg double %756
  %760 = call double @llvm.fmuladd.f64(double %759, double %757, double %758)
  store double %760, ptr %710, align 8, !tbaa !9
  %761 = load double, ptr %755, align 8, !tbaa !9
  %762 = load double, ptr %8, align 8, !tbaa !9
  %763 = load double, ptr %750, align 8, !tbaa !9
  %764 = call double @llvm.fmuladd.f64(double %761, double %762, double %763)
  store double %764, ptr %750, align 8, !tbaa !9
  br label %765

765:                                              ; preds = %754, %736
  %766 = phi double [ %764, %754 ], [ %752, %736 ]
  %767 = load double, ptr %710, align 8, !tbaa !9
  %768 = fcmp oge double %767, 0.000000e+00
  %769 = fneg double %767
  %770 = select i1 %768, double %767, double %769
  %771 = fcmp oge double %766, 0.000000e+00
  %772 = fneg double %766
  %773 = select i1 %771, double %766, double %772
  %774 = fadd double %770, %773
  %775 = load double, ptr %6, align 8, !tbaa !9
  store double %775, ptr %19, align 8, !tbaa !9
  %776 = icmp eq i64 %indvars.iv1015, 1
  br i1 %776, label %777, label %779

777:                                              ; preds = %765
  %778 = load double, ptr %5, align 8, !tbaa !9
  store double %778, ptr %19, align 8, !tbaa !9
  br label %779

779:                                              ; preds = %777, %765
  %780 = phi double [ %778, %777 ], [ %775, %765 ]
  %781 = sext i32 %740 to i64
  %782 = getelementptr double, ptr %31, i64 %indvars.iv1015
  %783 = getelementptr double, ptr %782, i64 %781
  %784 = load double, ptr %783, align 8, !tbaa !9
  store double %784, ptr %14, align 8, !tbaa !9
  %785 = fcmp oge double %784, 0.000000e+00
  %786 = fneg double %784
  %787 = select i1 %785, double %784, double %786
  %788 = fcmp oge double %780, 0.000000e+00
  %789 = fneg double %780
  %790 = select i1 %788, double %780, double %789
  %791 = fadd double %787, %790
  store double %784, ptr %28, align 8, !tbaa !9
  %792 = load double, ptr %20, align 8, !tbaa !9
  %793 = fcmp olt double %791, %792
  br i1 %793, label %794, label %795

794:                                              ; preds = %779
  store double %792, ptr %28, align 8, !tbaa !9
  store i32 1, ptr %10, align 4, !tbaa !5
  br label %795

795:                                              ; preds = %794, %779
  %.3 = phi double [ %792, %794 ], [ %791, %779 ]
  %796 = fcmp olt double %.3, 1.000000e+00
  %797 = fmul double %42, %.3
  %798 = fcmp ogt double %774, %797
  %or.cond875 = select i1 %796, i1 %798, i1 false
  br i1 %or.cond875, label %799, label %805

799:                                              ; preds = %795
  %800 = fdiv double 1.000000e+00, %774
  store double %800, ptr %27, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %22, ptr noundef nonnull %27, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %801 = load double, ptr %27, align 8, !tbaa !9
  %802 = load double, ptr %7, align 8, !tbaa !9
  %803 = fmul double %801, %802
  store double %803, ptr %7, align 8, !tbaa !9
  %804 = fmul double %.15, %801
  %.pre1042 = load double, ptr %19, align 8, !tbaa !9
  %.pre1045 = fneg double %.pre1042
  br label %805

805:                                              ; preds = %799, %795
  %.pre-phi = phi double [ %.pre1045, %799 ], [ %789, %795 ]
  %.16 = phi double [ %804, %799 ], [ %.15, %795 ]
  store double %.pre-phi, ptr %14, align 8, !tbaa !9
  %806 = load i32, ptr %2, align 4, !tbaa !5
  %807 = sext i32 %806 to i64
  %808 = getelementptr double, ptr %33, i64 %indvars.iv1015
  %809 = getelementptr double, ptr %808, i64 %807
  call void @dladiv_(ptr noundef nonnull %710, ptr noundef nonnull %809, ptr noundef nonnull %28, ptr noundef nonnull %14, ptr noundef nonnull %26, ptr noundef nonnull %24) #5
  %810 = load double, ptr %26, align 8, !tbaa !9
  store double %810, ptr %710, align 8, !tbaa !9
  %811 = load double, ptr %24, align 8, !tbaa !9
  %812 = load i32, ptr %2, align 4, !tbaa !5
  %813 = sext i32 %812 to i64
  %814 = getelementptr double, ptr %33, i64 %indvars.iv1015
  %815 = getelementptr double, ptr %814, i64 %813
  store double %811, ptr %815, align 8, !tbaa !9
  %816 = load double, ptr %710, align 8, !tbaa !9
  store double %816, ptr %14, align 8, !tbaa !9
  %817 = fcmp oge double %816, 0.000000e+00
  %818 = fneg double %816
  %819 = select i1 %817, double %816, double %818
  %820 = fcmp oge double %811, 0.000000e+00
  %821 = fneg double %811
  %822 = select i1 %820, double %811, double %821
  %823 = fadd double %822, %819
  %824 = fcmp oge double %823, %.16
  %825 = select i1 %824, double %823, double %.16
  br label %._crit_edge1048

826:                                              ; preds = %707
  %827 = sext i32 %.1803 to i64
  %828 = getelementptr inbounds double, ptr %33, i64 %827
  %829 = fcmp ogt double %.14958, 1.000000e+00
  br i1 %829, label %830, label %869

830:                                              ; preds = %826
  %831 = getelementptr double, ptr %33, i64 %indvars.iv1015
  %832 = getelementptr double, ptr %831, i64 %696
  %833 = load double, ptr %832, align 8, !tbaa !9
  %834 = load double, ptr %828, align 8, !tbaa !9
  %835 = add nsw i32 %.1803, %691
  %836 = sext i32 %835 to i64
  %837 = getelementptr inbounds double, ptr %33, i64 %836
  %838 = load double, ptr %837, align 8, !tbaa !9
  %839 = insertelement <2 x double> poison, double %711, i64 0
  %840 = insertelement <2 x double> %839, double %834, i64 1
  %841 = fcmp oge <2 x double> %840, zeroinitializer
  %842 = fneg <2 x double> %840
  %843 = select <2 x i1> %841, <2 x double> %840, <2 x double> %842
  %844 = insertelement <2 x double> poison, double %833, i64 0
  %845 = insertelement <2 x double> %844, double %838, i64 1
  %846 = fcmp oge <2 x double> %845, zeroinitializer
  %847 = fneg <2 x double> %845
  %848 = select <2 x i1> %846, <2 x double> %845, <2 x double> %847
  %849 = fadd <2 x double> %843, %848
  %850 = extractelement <2 x double> %849, i64 0
  %851 = extractelement <2 x double> %849, i64 1
  %852 = fcmp oge double %850, %851
  %853 = select i1 %852, double %850, double %851
  %854 = fdiv double 1.000000e+00, %.14958
  store double %854, ptr %27, align 8, !tbaa !9
  %855 = getelementptr inbounds double, ptr %34, i64 %indvars.iv1015
  %856 = load double, ptr %855, align 8, !tbaa !9
  store double %856, ptr %14, align 8, !tbaa !9
  %857 = getelementptr inbounds double, ptr %34, i64 %827
  %858 = load double, ptr %857, align 8, !tbaa !9
  %859 = fcmp oge double %856, %858
  %860 = select i1 %859, double %856, double %858
  %861 = fsub double %42, %853
  %862 = fdiv double %861, %.14958
  %863 = fcmp ogt double %860, %862
  br i1 %863, label %864, label %869

864:                                              ; preds = %830
  call void @dscal_(ptr noundef nonnull %22, ptr noundef nonnull %27, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %865 = load double, ptr %27, align 8, !tbaa !9
  %866 = load double, ptr %7, align 8, !tbaa !9
  %867 = fmul double %865, %866
  store double %867, ptr %7, align 8, !tbaa !9
  %868 = fmul double %.14958, %865
  %.pre1041 = load double, ptr %710, align 8, !tbaa !9
  br label %869

869:                                              ; preds = %830, %864, %826
  %870 = phi double [ %.pre1041, %864 ], [ %711, %830 ], [ %711, %826 ]
  %.17 = phi double [ %868, %864 ], [ %.14958, %830 ], [ %.14958, %826 ]
  %871 = trunc i64 %indvars.iv1015 to i32
  %872 = add i32 %871, -1
  store i32 %872, ptr %13, align 4, !tbaa !5
  %873 = mul nsw i64 %indvars.iv1015, %689
  %874 = mul nsw i32 %29, %indvars1017
  %gep942 = getelementptr double, ptr %invariant.gep, i64 %873
  %875 = call double @ddot_(ptr noundef nonnull %13, ptr noundef %gep942, ptr noundef nonnull @c__1, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %876 = fsub double %870, %875
  store double %876, ptr %17, align 16, !tbaa !9
  store i32 %872, ptr %13, align 4, !tbaa !5
  %877 = load double, ptr %828, align 8, !tbaa !9
  %878 = mul nsw i32 %.1803, %29
  %879 = sext i32 %878 to i64
  %gep944 = getelementptr double, ptr %invariant.gep, i64 %879
  %880 = call double @ddot_(ptr noundef nonnull %13, ptr noundef %gep944, ptr noundef nonnull @c__1, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %881 = fsub double %877, %880
  store double %881, ptr %684, align 8, !tbaa !9
  store i32 %872, ptr %13, align 4, !tbaa !5
  %882 = load i32, ptr %2, align 4, !tbaa !5
  %883 = sext i32 %882 to i64
  %884 = getelementptr double, ptr %33, i64 %indvars.iv1015
  %885 = getelementptr double, ptr %884, i64 %883
  %886 = load double, ptr %885, align 8, !tbaa !9
  %gep946 = getelementptr double, ptr %8, i64 %883
  %887 = call double @ddot_(ptr noundef nonnull %13, ptr noundef %gep942, ptr noundef nonnull @c__1, ptr noundef %gep946, ptr noundef nonnull @c__1) #5
  %888 = fsub double %886, %887
  store double %888, ptr %685, align 16, !tbaa !9
  store i32 %872, ptr %13, align 4, !tbaa !5
  %889 = load i32, ptr %2, align 4, !tbaa !5
  %890 = add nsw i32 %889, %.1803
  %891 = sext i32 %890 to i64
  %892 = getelementptr inbounds double, ptr %33, i64 %891
  %893 = load double, ptr %892, align 8, !tbaa !9
  %894 = sext i32 %889 to i64
  %gep948 = getelementptr double, ptr %8, i64 %894
  %895 = call double @ddot_(ptr noundef nonnull %13, ptr noundef %gep944, ptr noundef nonnull @c__1, ptr noundef %gep948, ptr noundef nonnull @c__1) #5
  %896 = fsub double %893, %895
  %897 = getelementptr inbounds double, ptr %32, i64 %indvars.iv1015
  %898 = load double, ptr %897, align 8, !tbaa !9
  %899 = load i32, ptr %2, align 4, !tbaa !5
  %900 = sext i32 %899 to i64
  %gep950 = getelementptr double, ptr %8, i64 %900
  %901 = load double, ptr %gep950, align 8, !tbaa !9
  %902 = getelementptr inbounds double, ptr %32, i64 %827
  %903 = load double, ptr %902, align 8, !tbaa !9
  %904 = load <2 x double>, ptr %17, align 16, !tbaa !9
  %905 = insertelement <2 x double> poison, double %898, i64 0
  %906 = insertelement <2 x double> %905, double %903, i64 1
  %907 = fneg <2 x double> %906
  %908 = insertelement <2 x double> poison, double %901, i64 0
  %909 = shufflevector <2 x double> %908, <2 x double> poison, <2 x i32> zeroinitializer
  %910 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %907, <2 x double> %909, <2 x double> %904)
  store <2 x double> %910, ptr %17, align 16, !tbaa !9
  %911 = load double, ptr %8, align 8, !tbaa !9
  %912 = load <2 x double>, ptr %685, align 16
  %913 = insertelement <2 x double> poison, double %911, i64 0
  %914 = shufflevector <2 x double> %913, <2 x double> poison, <2 x i32> zeroinitializer
  %915 = insertelement <2 x double> %912, double %896, i64 1
  %916 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %906, <2 x double> %914, <2 x double> %915)
  store <2 x double> %916, ptr %685, align 16, !tbaa !9
  %917 = sext i32 %874 to i64
  %918 = getelementptr double, ptr %31, i64 %indvars.iv1015
  %919 = getelementptr double, ptr %918, i64 %917
  call void @dlaln2_(ptr noundef nonnull @c_true, ptr noundef nonnull @c__2, ptr noundef nonnull @c__2, ptr noundef nonnull %20, ptr noundef nonnull @c_b21, ptr noundef %919, ptr noundef nonnull %4, ptr noundef nonnull @c_b21, ptr noundef nonnull @c_b21, ptr noundef nonnull %17, ptr noundef nonnull @c__2, ptr noundef nonnull @c_b25, ptr noundef nonnull %6, ptr noundef nonnull %18, ptr noundef nonnull @c__2, ptr noundef nonnull %25, ptr noundef nonnull %23, ptr noundef nonnull %15) #5
  %920 = load i32, ptr %15, align 4, !tbaa !5
  %.not860 = icmp eq i32 %920, 0
  br i1 %.not860, label %922, label %921

921:                                              ; preds = %869
  store i32 2, ptr %10, align 4, !tbaa !5
  br label %922

922:                                              ; preds = %921, %869
  %923 = load double, ptr %25, align 8, !tbaa !9
  %924 = fcmp une double %923, 1.000000e+00
  br i1 %924, label %925, label %929

925:                                              ; preds = %922
  call void @dscal_(ptr noundef nonnull %22, ptr noundef nonnull %25, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %926 = load double, ptr %25, align 8, !tbaa !9
  %927 = load double, ptr %7, align 8, !tbaa !9
  %928 = fmul double %926, %927
  store double %928, ptr %7, align 8, !tbaa !9
  br label %929

929:                                              ; preds = %925, %922
  %930 = load double, ptr %18, align 16, !tbaa !9
  store double %930, ptr %710, align 8, !tbaa !9
  %931 = load double, ptr %686, align 8, !tbaa !9
  store double %931, ptr %828, align 8, !tbaa !9
  %932 = load double, ptr %687, align 16, !tbaa !9
  %933 = load i32, ptr %2, align 4, !tbaa !5
  %934 = sext i32 %933 to i64
  %935 = getelementptr double, ptr %33, i64 %indvars.iv1015
  %936 = getelementptr double, ptr %935, i64 %934
  store double %932, ptr %936, align 8, !tbaa !9
  %937 = load double, ptr %688, align 8, !tbaa !9
  %938 = add nsw i32 %933, %.1803
  %939 = sext i32 %938 to i64
  %940 = getelementptr inbounds double, ptr %33, i64 %939
  store double %937, ptr %940, align 8, !tbaa !9
  %941 = load double, ptr %710, align 8, !tbaa !9
  store double %941, ptr %14, align 8, !tbaa !9
  %942 = load double, ptr %936, align 8, !tbaa !9
  %943 = load double, ptr %828, align 8, !tbaa !9
  %944 = insertelement <2 x double> poison, double %942, i64 0
  %945 = insertelement <2 x double> %944, double %943, i64 1
  %946 = fcmp oge <2 x double> %945, zeroinitializer
  %947 = fneg <2 x double> %945
  %948 = select <2 x i1> %946, <2 x double> %945, <2 x double> %947
  %949 = insertelement <2 x double> poison, double %941, i64 0
  %950 = insertelement <2 x double> %949, double %937, i64 1
  %951 = fcmp oge <2 x double> %950, zeroinitializer
  %952 = fneg <2 x double> %950
  %953 = select <2 x i1> %951, <2 x double> %950, <2 x double> %952
  %954 = fadd <2 x double> %953, %948
  %955 = extractelement <2 x double> %954, i64 0
  %956 = extractelement <2 x double> %954, i64 1
  %957 = fcmp oge double %955, %956
  %958 = select i1 %957, double %955, double %956
  %959 = fcmp oge double %958, %.17
  %960 = select i1 %959, double %958, double %.17
  br label %._crit_edge1048

._crit_edge1048:                                  ; preds = %690, %929, %805
  %961 = phi i32 [ %933, %929 ], [ %812, %805 ], [ %691, %690 ]
  %.18 = phi double [ %960, %929 ], [ %825, %805 ], [ %.14958, %690 ]
  %.11 = phi i32 [ %.10, %929 ], [ %.10, %805 ], [ %.9960, %690 ]
  %962 = load i32, ptr %12, align 4, !tbaa !5
  %963 = sext i32 %962 to i64
  %.not859.not = icmp slt i64 %indvars.iv1015, %963
  br i1 %.not859.not, label %690, label %.loopexit907, !llvm.loop !27

.loopexit907:                                     ; preds = %._crit_edge1046, %205, %._crit_edge1047, %._crit_edge1048, %539, %540, %.loopexit, %268, %134, %683, %432, %11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 8, 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 4, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #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 double @dlange_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare double @dasum_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare void @dscal_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @daxpy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @dlaln2_(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

declare double @ddot_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @dladiv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #4

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 nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = !{!"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 = !{!14}
!14 = distinct !{!14, !15}
!15 = distinct !{!15, !"LVerDomain"}
!16 = !{!17}
!17 = distinct !{!17, !15}
!18 = distinct !{!18, !12, !19, !20}
!19 = !{!"llvm.loop.isvectorized", i32 1}
!20 = !{!"llvm.loop.unroll.runtime.disable"}
!21 = distinct !{!21, !12, !19}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12}
!27 = distinct !{!27, !12}


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