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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @dpbsvx_(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, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20) #0 {
  %22 = alloca i32, align 4
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca i64, align 8
  %45 = alloca i64, align 8
  %46 = alloca i64, align 8
  %47 = alloca i64, align 8
  %48 = alloca i64, align 8
  %49 = alloca i64, align 8
  %50 = alloca i64, align 8
  %51 = alloca i64, align 8
  %52 = alloca i64, align 8
  %53 = alloca i64, align 8
  %54 = alloca double, align 8
  %55 = alloca double, align 8
  %56 = alloca i64, align 8
  %57 = alloca i64, align 8
  %58 = alloca i64, align 8
  %59 = alloca i64, align 8
  %60 = alloca double, align 8
  %61 = alloca double, align 8
  %62 = alloca double, align 8
  %63 = alloca double, align 8
  %64 = alloca double, align 8
  %65 = alloca i64, align 8
  %66 = alloca i64, align 8
  %67 = alloca i64, align 8
  %68 = alloca i64, align 8
  %69 = alloca double, align 8
  %70 = alloca i64, align 8
  %71 = alloca double, align 8
  %72 = alloca i32, align 4
  store ptr %0, ptr %23, align 8, !tbaa !5
  store ptr %1, ptr %24, align 8, !tbaa !5
  store ptr %2, ptr %25, align 8, !tbaa !5
  store ptr %3, ptr %26, align 8, !tbaa !5
  store ptr %4, ptr %27, align 8, !tbaa !5
  store ptr %5, ptr %28, align 8, !tbaa !5
  store ptr %6, ptr %29, align 8, !tbaa !5
  store ptr %7, ptr %30, align 8, !tbaa !5
  store ptr %8, ptr %31, align 8, !tbaa !5
  store ptr %9, ptr %32, align 8, !tbaa !5
  store ptr %10, ptr %33, align 8, !tbaa !5
  store ptr %11, ptr %34, align 8, !tbaa !5
  store ptr %12, ptr %35, align 8, !tbaa !5
  store ptr %13, ptr %36, align 8, !tbaa !5
  store ptr %14, ptr %37, align 8, !tbaa !5
  store ptr %15, ptr %38, align 8, !tbaa !5
  store ptr %16, ptr %39, align 8, !tbaa !5
  store ptr %17, ptr %40, align 8, !tbaa !5
  store ptr %18, ptr %41, align 8, !tbaa !5
  store ptr %19, ptr %42, align 8, !tbaa !5
  store ptr %20, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #3
  %73 = load ptr, ptr %29, align 8, !tbaa !5
  %74 = load i64, ptr %73, align 8, !tbaa !9
  store i64 %74, ptr %44, align 8, !tbaa !9
  %75 = load i64, ptr %44, align 8, !tbaa !9
  %76 = add nsw i64 1, %75
  store i64 %76, ptr %45, align 8, !tbaa !9
  %77 = load i64, ptr %45, align 8, !tbaa !9
  %78 = load ptr, ptr %28, align 8, !tbaa !5
  %79 = sub i64 0, %77
  %80 = getelementptr inbounds double, ptr %78, i64 %79
  store ptr %80, ptr %28, align 8, !tbaa !5
  %81 = load ptr, ptr %31, align 8, !tbaa !5
  %82 = load i64, ptr %81, align 8, !tbaa !9
  store i64 %82, ptr %46, align 8, !tbaa !9
  %83 = load i64, ptr %46, align 8, !tbaa !9
  %84 = add nsw i64 1, %83
  store i64 %84, ptr %47, align 8, !tbaa !9
  %85 = load i64, ptr %47, align 8, !tbaa !9
  %86 = load ptr, ptr %30, align 8, !tbaa !5
  %87 = sub i64 0, %85
  %88 = getelementptr inbounds double, ptr %86, i64 %87
  store ptr %88, ptr %30, align 8, !tbaa !5
  %89 = load ptr, ptr %33, align 8, !tbaa !5
  %90 = getelementptr inbounds double, ptr %89, i32 -1
  store ptr %90, ptr %33, align 8, !tbaa !5
  %91 = load ptr, ptr %35, align 8, !tbaa !5
  %92 = load i64, ptr %91, align 8, !tbaa !9
  store i64 %92, ptr %48, align 8, !tbaa !9
  %93 = load i64, ptr %48, align 8, !tbaa !9
  %94 = add nsw i64 1, %93
  store i64 %94, ptr %49, align 8, !tbaa !9
  %95 = load i64, ptr %49, align 8, !tbaa !9
  %96 = load ptr, ptr %34, align 8, !tbaa !5
  %97 = sub i64 0, %95
  %98 = getelementptr inbounds double, ptr %96, i64 %97
  store ptr %98, ptr %34, align 8, !tbaa !5
  %99 = load ptr, ptr %37, align 8, !tbaa !5
  %100 = load i64, ptr %99, align 8, !tbaa !9
  store i64 %100, ptr %50, align 8, !tbaa !9
  %101 = load i64, ptr %50, align 8, !tbaa !9
  %102 = add nsw i64 1, %101
  store i64 %102, ptr %51, align 8, !tbaa !9
  %103 = load i64, ptr %51, align 8, !tbaa !9
  %104 = load ptr, ptr %36, align 8, !tbaa !5
  %105 = sub i64 0, %103
  %106 = getelementptr inbounds double, ptr %104, i64 %105
  store ptr %106, ptr %36, align 8, !tbaa !5
  %107 = load ptr, ptr %39, align 8, !tbaa !5
  %108 = getelementptr inbounds double, ptr %107, i32 -1
  store ptr %108, ptr %39, align 8, !tbaa !5
  %109 = load ptr, ptr %40, align 8, !tbaa !5
  %110 = getelementptr inbounds double, ptr %109, i32 -1
  store ptr %110, ptr %40, align 8, !tbaa !5
  %111 = load ptr, ptr %41, align 8, !tbaa !5
  %112 = getelementptr inbounds double, ptr %111, i32 -1
  store ptr %112, ptr %41, align 8, !tbaa !5
  %113 = load ptr, ptr %42, align 8, !tbaa !5
  %114 = getelementptr inbounds i64, ptr %113, i32 -1
  store ptr %114, ptr %42, align 8, !tbaa !5
  %115 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 0, ptr %115, align 8, !tbaa !9
  %116 = load ptr, ptr %23, align 8, !tbaa !5
  %117 = call i64 @lsame_(ptr noundef %116, ptr noundef @.str)
  store i64 %117, ptr %68, align 8, !tbaa !9
  %118 = load ptr, ptr %23, align 8, !tbaa !5
  %119 = call i64 @lsame_(ptr noundef %118, ptr noundef @.str.1)
  store i64 %119, ptr %65, align 8, !tbaa !9
  %120 = load ptr, ptr %24, align 8, !tbaa !5
  %121 = call i64 @lsame_(ptr noundef %120, ptr noundef @.str.2)
  store i64 %121, ptr %67, align 8, !tbaa !9
  %122 = load i64, ptr %68, align 8, !tbaa !9
  %123 = icmp ne i64 %122, 0
  br i1 %123, label %127, label %124

124:                                              ; preds = %21
  %125 = load i64, ptr %65, align 8, !tbaa !9
  %126 = icmp ne i64 %125, 0
  br i1 %126, label %127, label %129

127:                                              ; preds = %124, %21
  %128 = load ptr, ptr %32, align 8, !tbaa !5
  store i8 78, ptr %128, align 1, !tbaa !11
  store i64 0, ptr %66, align 8, !tbaa !9
  br label %135

129:                                              ; preds = %124
  %130 = load ptr, ptr %32, align 8, !tbaa !5
  %131 = call i64 @lsame_(ptr noundef %130, ptr noundef @.str.3)
  store i64 %131, ptr %66, align 8, !tbaa !9
  %132 = call double @dlamch_(ptr noundef @.str.4)
  store double %132, ptr %71, align 8, !tbaa !12
  %133 = load double, ptr %71, align 8, !tbaa !12
  %134 = fdiv double 1.000000e+00, %133
  store double %134, ptr %69, align 8, !tbaa !12
  br label %135

135:                                              ; preds = %129, %127
  %136 = load i64, ptr %68, align 8, !tbaa !9
  %137 = icmp ne i64 %136, 0
  br i1 %137, label %147, label %138

138:                                              ; preds = %135
  %139 = load i64, ptr %65, align 8, !tbaa !9
  %140 = icmp ne i64 %139, 0
  br i1 %140, label %147, label %141

141:                                              ; preds = %138
  %142 = load ptr, ptr %23, align 8, !tbaa !5
  %143 = call i64 @lsame_(ptr noundef %142, ptr noundef @.str.5)
  %144 = icmp ne i64 %143, 0
  br i1 %144, label %147, label %145

145:                                              ; preds = %141
  %146 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -1, ptr %146, align 8, !tbaa !9
  br label %324

147:                                              ; preds = %141, %138, %135
  %148 = load i64, ptr %67, align 8, !tbaa !9
  %149 = icmp ne i64 %148, 0
  br i1 %149, label %156, label %150

150:                                              ; preds = %147
  %151 = load ptr, ptr %24, align 8, !tbaa !5
  %152 = call i64 @lsame_(ptr noundef %151, ptr noundef @.str.6)
  %153 = icmp ne i64 %152, 0
  br i1 %153, label %156, label %154

154:                                              ; preds = %150
  %155 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -2, ptr %155, align 8, !tbaa !9
  br label %323

156:                                              ; preds = %150, %147
  %157 = load ptr, ptr %25, align 8, !tbaa !5
  %158 = load i64, ptr %157, align 8, !tbaa !9
  %159 = icmp slt i64 %158, 0
  br i1 %159, label %160, label %162

160:                                              ; preds = %156
  %161 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -3, ptr %161, align 8, !tbaa !9
  br label %322

162:                                              ; preds = %156
  %163 = load ptr, ptr %26, align 8, !tbaa !5
  %164 = load i64, ptr %163, align 8, !tbaa !9
  %165 = icmp slt i64 %164, 0
  br i1 %165, label %166, label %168

166:                                              ; preds = %162
  %167 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -4, ptr %167, align 8, !tbaa !9
  br label %321

168:                                              ; preds = %162
  %169 = load ptr, ptr %27, align 8, !tbaa !5
  %170 = load i64, ptr %169, align 8, !tbaa !9
  %171 = icmp slt i64 %170, 0
  br i1 %171, label %172, label %174

172:                                              ; preds = %168
  %173 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -5, ptr %173, align 8, !tbaa !9
  br label %320

174:                                              ; preds = %168
  %175 = load ptr, ptr %29, align 8, !tbaa !5
  %176 = load i64, ptr %175, align 8, !tbaa !9
  %177 = load ptr, ptr %26, align 8, !tbaa !5
  %178 = load i64, ptr %177, align 8, !tbaa !9
  %179 = add nsw i64 %178, 1
  %180 = icmp slt i64 %176, %179
  br i1 %180, label %181, label %183

181:                                              ; preds = %174
  %182 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -7, ptr %182, align 8, !tbaa !9
  br label %319

183:                                              ; preds = %174
  %184 = load ptr, ptr %31, align 8, !tbaa !5
  %185 = load i64, ptr %184, align 8, !tbaa !9
  %186 = load ptr, ptr %26, align 8, !tbaa !5
  %187 = load i64, ptr %186, align 8, !tbaa !9
  %188 = add nsw i64 %187, 1
  %189 = icmp slt i64 %185, %188
  br i1 %189, label %190, label %192

190:                                              ; preds = %183
  %191 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -9, ptr %191, align 8, !tbaa !9
  br label %318

192:                                              ; preds = %183
  %193 = load ptr, ptr %23, align 8, !tbaa !5
  %194 = call i64 @lsame_(ptr noundef %193, ptr noundef @.str.5)
  %195 = icmp ne i64 %194, 0
  br i1 %195, label %196, label %205

196:                                              ; preds = %192
  %197 = load i64, ptr %66, align 8, !tbaa !9
  %198 = icmp ne i64 %197, 0
  br i1 %198, label %205, label %199

199:                                              ; preds = %196
  %200 = load ptr, ptr %32, align 8, !tbaa !5
  %201 = call i64 @lsame_(ptr noundef %200, ptr noundef @.str)
  %202 = icmp ne i64 %201, 0
  br i1 %202, label %205, label %203

203:                                              ; preds = %199
  %204 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -10, ptr %204, align 8, !tbaa !9
  br label %317

205:                                              ; preds = %199, %196, %192
  %206 = load i64, ptr %66, align 8, !tbaa !9
  %207 = icmp ne i64 %206, 0
  br i1 %207, label %208, label %280

208:                                              ; preds = %205
  %209 = load double, ptr %69, align 8, !tbaa !12
  store double %209, ptr %61, align 8, !tbaa !12
  store double 0.000000e+00, ptr %62, align 8, !tbaa !12
  %210 = load ptr, ptr %25, align 8, !tbaa !5
  %211 = load i64, ptr %210, align 8, !tbaa !9
  store i64 %211, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %57, align 8, !tbaa !9
  br label %212

212:                                              ; preds = %245, %208
  %213 = load i64, ptr %57, align 8, !tbaa !9
  %214 = load i64, ptr %52, align 8, !tbaa !9
  %215 = icmp sle i64 %213, %214
  br i1 %215, label %216, label %248

216:                                              ; preds = %212
  %217 = load double, ptr %61, align 8, !tbaa !12
  store double %217, ptr %54, align 8, !tbaa !12
  %218 = load ptr, ptr %33, align 8, !tbaa !5
  %219 = load i64, ptr %57, align 8, !tbaa !9
  %220 = getelementptr inbounds double, ptr %218, i64 %219
  %221 = load double, ptr %220, align 8, !tbaa !12
  store double %221, ptr %55, align 8, !tbaa !12
  %222 = load double, ptr %54, align 8, !tbaa !12
  %223 = load double, ptr %55, align 8, !tbaa !12
  %224 = fcmp ole double %222, %223
  br i1 %224, label %225, label %227

225:                                              ; preds = %216
  %226 = load double, ptr %54, align 8, !tbaa !12
  br label %229

227:                                              ; preds = %216
  %228 = load double, ptr %55, align 8, !tbaa !12
  br label %229

229:                                              ; preds = %227, %225
  %230 = phi double [ %226, %225 ], [ %228, %227 ]
  store double %230, ptr %61, align 8, !tbaa !12
  %231 = load double, ptr %62, align 8, !tbaa !12
  store double %231, ptr %54, align 8, !tbaa !12
  %232 = load ptr, ptr %33, align 8, !tbaa !5
  %233 = load i64, ptr %57, align 8, !tbaa !9
  %234 = getelementptr inbounds double, ptr %232, i64 %233
  %235 = load double, ptr %234, align 8, !tbaa !12
  store double %235, ptr %55, align 8, !tbaa !12
  %236 = load double, ptr %54, align 8, !tbaa !12
  %237 = load double, ptr %55, align 8, !tbaa !12
  %238 = fcmp oge double %236, %237
  br i1 %238, label %239, label %241

239:                                              ; preds = %229
  %240 = load double, ptr %54, align 8, !tbaa !12
  br label %243

241:                                              ; preds = %229
  %242 = load double, ptr %55, align 8, !tbaa !12
  br label %243

243:                                              ; preds = %241, %239
  %244 = phi double [ %240, %239 ], [ %242, %241 ]
  store double %244, ptr %62, align 8, !tbaa !12
  br label %245

245:                                              ; preds = %243
  %246 = load i64, ptr %57, align 8, !tbaa !9
  %247 = add nsw i64 %246, 1
  store i64 %247, ptr %57, align 8, !tbaa !9
  br label %212, !llvm.loop !14

248:                                              ; preds = %212
  %249 = load double, ptr %61, align 8, !tbaa !12
  %250 = fcmp ole double %249, 0.000000e+00
  br i1 %250, label %251, label %253

251:                                              ; preds = %248
  %252 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -11, ptr %252, align 8, !tbaa !9
  br label %279

253:                                              ; preds = %248
  %254 = load ptr, ptr %25, align 8, !tbaa !5
  %255 = load i64, ptr %254, align 8, !tbaa !9
  %256 = icmp sgt i64 %255, 0
  br i1 %256, label %257, label %277

257:                                              ; preds = %253
  %258 = load double, ptr %61, align 8, !tbaa !12
  %259 = load double, ptr %71, align 8, !tbaa !12
  %260 = fcmp oge double %258, %259
  br i1 %260, label %261, label %263

261:                                              ; preds = %257
  %262 = load double, ptr %61, align 8, !tbaa !12
  br label %265

263:                                              ; preds = %257
  %264 = load double, ptr %71, align 8, !tbaa !12
  br label %265

265:                                              ; preds = %263, %261
  %266 = phi double [ %262, %261 ], [ %264, %263 ]
  %267 = load double, ptr %62, align 8, !tbaa !12
  %268 = load double, ptr %69, align 8, !tbaa !12
  %269 = fcmp ole double %267, %268
  br i1 %269, label %270, label %272

270:                                              ; preds = %265
  %271 = load double, ptr %62, align 8, !tbaa !12
  br label %274

272:                                              ; preds = %265
  %273 = load double, ptr %69, align 8, !tbaa !12
  br label %274

274:                                              ; preds = %272, %270
  %275 = phi double [ %271, %270 ], [ %273, %272 ]
  %276 = fdiv double %266, %275
  store double %276, ptr %63, align 8, !tbaa !12
  br label %278

277:                                              ; preds = %253
  store double 1.000000e+00, ptr %63, align 8, !tbaa !12
  br label %278

278:                                              ; preds = %277, %274
  br label %279

279:                                              ; preds = %278, %251
  br label %280

280:                                              ; preds = %279, %205
  %281 = load ptr, ptr %43, align 8, !tbaa !5
  %282 = load i64, ptr %281, align 8, !tbaa !9
  %283 = icmp eq i64 %282, 0
  br i1 %283, label %284, label %316

284:                                              ; preds = %280
  %285 = load ptr, ptr %35, align 8, !tbaa !5
  %286 = load i64, ptr %285, align 8, !tbaa !9
  %287 = load ptr, ptr %25, align 8, !tbaa !5
  %288 = load i64, ptr %287, align 8, !tbaa !9
  %289 = icmp sge i64 1, %288
  br i1 %289, label %290, label %291

290:                                              ; preds = %284
  br label %294

291:                                              ; preds = %284
  %292 = load ptr, ptr %25, align 8, !tbaa !5
  %293 = load i64, ptr %292, align 8, !tbaa !9
  br label %294

294:                                              ; preds = %291, %290
  %295 = phi i64 [ 1, %290 ], [ %293, %291 ]
  %296 = icmp slt i64 %286, %295
  br i1 %296, label %297, label %299

297:                                              ; preds = %294
  %298 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -13, ptr %298, align 8, !tbaa !9
  br label %315

299:                                              ; preds = %294
  %300 = load ptr, ptr %37, align 8, !tbaa !5
  %301 = load i64, ptr %300, align 8, !tbaa !9
  %302 = load ptr, ptr %25, align 8, !tbaa !5
  %303 = load i64, ptr %302, align 8, !tbaa !9
  %304 = icmp sge i64 1, %303
  br i1 %304, label %305, label %306

305:                                              ; preds = %299
  br label %309

306:                                              ; preds = %299
  %307 = load ptr, ptr %25, align 8, !tbaa !5
  %308 = load i64, ptr %307, align 8, !tbaa !9
  br label %309

309:                                              ; preds = %306, %305
  %310 = phi i64 [ 1, %305 ], [ %308, %306 ]
  %311 = icmp slt i64 %301, %310
  br i1 %311, label %312, label %314

312:                                              ; preds = %309
  %313 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -15, ptr %313, align 8, !tbaa !9
  br label %314

314:                                              ; preds = %312, %309
  br label %315

315:                                              ; preds = %314, %297
  br label %316

316:                                              ; preds = %315, %280
  br label %317

317:                                              ; preds = %316, %203
  br label %318

318:                                              ; preds = %317, %190
  br label %319

319:                                              ; preds = %318, %181
  br label %320

320:                                              ; preds = %319, %172
  br label %321

321:                                              ; preds = %320, %166
  br label %322

322:                                              ; preds = %321, %160
  br label %323

323:                                              ; preds = %322, %154
  br label %324

324:                                              ; preds = %323, %145
  %325 = load ptr, ptr %43, align 8, !tbaa !5
  %326 = load i64, ptr %325, align 8, !tbaa !9
  %327 = icmp ne i64 %326, 0
  br i1 %327, label %328, label %333

328:                                              ; preds = %324
  %329 = load ptr, ptr %43, align 8, !tbaa !5
  %330 = load i64, ptr %329, align 8, !tbaa !9
  %331 = sub nsw i64 0, %330
  store i64 %331, ptr %52, align 8, !tbaa !9
  %332 = call i32 @xerbla_(ptr noundef @.str.7, ptr noundef %52)
  store i32 0, ptr %22, align 4
  store i32 1, ptr %72, align 4
  br label %686

333:                                              ; preds = %324
  %334 = load i64, ptr %65, align 8, !tbaa !9
  %335 = icmp ne i64 %334, 0
  br i1 %335, label %336, label %364

336:                                              ; preds = %333
  %337 = load ptr, ptr %24, align 8, !tbaa !5
  %338 = load ptr, ptr %25, align 8, !tbaa !5
  %339 = load ptr, ptr %26, align 8, !tbaa !5
  %340 = load ptr, ptr %28, align 8, !tbaa !5
  %341 = load i64, ptr %45, align 8, !tbaa !9
  %342 = getelementptr inbounds double, ptr %340, i64 %341
  %343 = load ptr, ptr %29, align 8, !tbaa !5
  %344 = load ptr, ptr %33, align 8, !tbaa !5
  %345 = getelementptr inbounds double, ptr %344, i64 1
  %346 = call i32 @dpbequ_(ptr noundef %337, ptr noundef %338, ptr noundef %339, ptr noundef %342, ptr noundef %343, ptr noundef %345, ptr noundef %63, ptr noundef %60, ptr noundef %70)
  %347 = load i64, ptr %70, align 8, !tbaa !9
  %348 = icmp eq i64 %347, 0
  br i1 %348, label %349, label %363

349:                                              ; preds = %336
  %350 = load ptr, ptr %24, align 8, !tbaa !5
  %351 = load ptr, ptr %25, align 8, !tbaa !5
  %352 = load ptr, ptr %26, align 8, !tbaa !5
  %353 = load ptr, ptr %28, align 8, !tbaa !5
  %354 = load i64, ptr %45, align 8, !tbaa !9
  %355 = getelementptr inbounds double, ptr %353, i64 %354
  %356 = load ptr, ptr %29, align 8, !tbaa !5
  %357 = load ptr, ptr %33, align 8, !tbaa !5
  %358 = getelementptr inbounds double, ptr %357, i64 1
  %359 = load ptr, ptr %32, align 8, !tbaa !5
  %360 = call i32 @dlaqsb_(ptr noundef %350, ptr noundef %351, ptr noundef %352, ptr noundef %355, ptr noundef %356, ptr noundef %358, ptr noundef %63, ptr noundef %60, ptr noundef %359)
  %361 = load ptr, ptr %32, align 8, !tbaa !5
  %362 = call i64 @lsame_(ptr noundef %361, ptr noundef @.str.3)
  store i64 %362, ptr %66, align 8, !tbaa !9
  br label %363

363:                                              ; preds = %349, %336
  br label %364

364:                                              ; preds = %363, %333
  %365 = load i64, ptr %66, align 8, !tbaa !9
  %366 = icmp ne i64 %365, 0
  br i1 %366, label %367, label %410

367:                                              ; preds = %364
  %368 = load ptr, ptr %27, align 8, !tbaa !5
  %369 = load i64, ptr %368, align 8, !tbaa !9
  store i64 %369, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %57, align 8, !tbaa !9
  br label %370

370:                                              ; preds = %406, %367
  %371 = load i64, ptr %57, align 8, !tbaa !9
  %372 = load i64, ptr %52, align 8, !tbaa !9
  %373 = icmp sle i64 %371, %372
  br i1 %373, label %374, label %409

374:                                              ; preds = %370
  %375 = load ptr, ptr %25, align 8, !tbaa !5
  %376 = load i64, ptr %375, align 8, !tbaa !9
  store i64 %376, ptr %53, align 8, !tbaa !9
  store i64 1, ptr %56, align 8, !tbaa !9
  br label %377

377:                                              ; preds = %402, %374
  %378 = load i64, ptr %56, align 8, !tbaa !9
  %379 = load i64, ptr %53, align 8, !tbaa !9
  %380 = icmp sle i64 %378, %379
  br i1 %380, label %381, label %405

381:                                              ; preds = %377
  %382 = load ptr, ptr %33, align 8, !tbaa !5
  %383 = load i64, ptr %56, align 8, !tbaa !9
  %384 = getelementptr inbounds double, ptr %382, i64 %383
  %385 = load double, ptr %384, align 8, !tbaa !12
  %386 = load ptr, ptr %34, align 8, !tbaa !5
  %387 = load i64, ptr %56, align 8, !tbaa !9
  %388 = load i64, ptr %57, align 8, !tbaa !9
  %389 = load i64, ptr %48, align 8, !tbaa !9
  %390 = mul nsw i64 %388, %389
  %391 = add nsw i64 %387, %390
  %392 = getelementptr inbounds double, ptr %386, i64 %391
  %393 = load double, ptr %392, align 8, !tbaa !12
  %394 = fmul double %385, %393
  %395 = load ptr, ptr %34, align 8, !tbaa !5
  %396 = load i64, ptr %56, align 8, !tbaa !9
  %397 = load i64, ptr %57, align 8, !tbaa !9
  %398 = load i64, ptr %48, align 8, !tbaa !9
  %399 = mul nsw i64 %397, %398
  %400 = add nsw i64 %396, %399
  %401 = getelementptr inbounds double, ptr %395, i64 %400
  store double %394, ptr %401, align 8, !tbaa !12
  br label %402

402:                                              ; preds = %381
  %403 = load i64, ptr %56, align 8, !tbaa !9
  %404 = add nsw i64 %403, 1
  store i64 %404, ptr %56, align 8, !tbaa !9
  br label %377, !llvm.loop !16

405:                                              ; preds = %377
  br label %406

406:                                              ; preds = %405
  %407 = load i64, ptr %57, align 8, !tbaa !9
  %408 = add nsw i64 %407, 1
  store i64 %408, ptr %57, align 8, !tbaa !9
  br label %370, !llvm.loop !17

409:                                              ; preds = %370
  br label %410

410:                                              ; preds = %409, %364
  %411 = load i64, ptr %68, align 8, !tbaa !9
  %412 = icmp ne i64 %411, 0
  br i1 %412, label %416, label %413

413:                                              ; preds = %410
  %414 = load i64, ptr %65, align 8, !tbaa !9
  %415 = icmp ne i64 %414, 0
  br i1 %415, label %416, label %533

416:                                              ; preds = %413, %410
  %417 = load i64, ptr %67, align 8, !tbaa !9
  %418 = icmp ne i64 %417, 0
  br i1 %418, label %419, label %473

419:                                              ; preds = %416
  %420 = load ptr, ptr %25, align 8, !tbaa !5
  %421 = load i64, ptr %420, align 8, !tbaa !9
  store i64 %421, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %57, align 8, !tbaa !9
  br label %422

422:                                              ; preds = %469, %419
  %423 = load i64, ptr %57, align 8, !tbaa !9
  %424 = load i64, ptr %52, align 8, !tbaa !9
  %425 = icmp sle i64 %423, %424
  br i1 %425, label %426, label %472

426:                                              ; preds = %422
  %427 = load i64, ptr %57, align 8, !tbaa !9
  %428 = load ptr, ptr %26, align 8, !tbaa !5
  %429 = load i64, ptr %428, align 8, !tbaa !9
  %430 = sub nsw i64 %427, %429
  store i64 %430, ptr %53, align 8, !tbaa !9
  %431 = load i64, ptr %53, align 8, !tbaa !9
  %432 = icmp sge i64 %431, 1
  br i1 %432, label %433, label %435

433:                                              ; preds = %426
  %434 = load i64, ptr %53, align 8, !tbaa !9
  br label %436

435:                                              ; preds = %426
  br label %436

436:                                              ; preds = %435, %433
  %437 = phi i64 [ %434, %433 ], [ 1, %435 ]
  store i64 %437, ptr %58, align 8, !tbaa !9
  %438 = load i64, ptr %57, align 8, !tbaa !9
  %439 = load i64, ptr %58, align 8, !tbaa !9
  %440 = sub nsw i64 %438, %439
  %441 = add nsw i64 %440, 1
  store i64 %441, ptr %53, align 8, !tbaa !9
  %442 = load ptr, ptr %28, align 8, !tbaa !5
  %443 = load ptr, ptr %26, align 8, !tbaa !5
  %444 = load i64, ptr %443, align 8, !tbaa !9
  %445 = add nsw i64 %444, 1
  %446 = load i64, ptr %57, align 8, !tbaa !9
  %447 = sub nsw i64 %445, %446
  %448 = load i64, ptr %58, align 8, !tbaa !9
  %449 = add nsw i64 %447, %448
  %450 = load i64, ptr %57, align 8, !tbaa !9
  %451 = load i64, ptr %44, align 8, !tbaa !9
  %452 = mul nsw i64 %450, %451
  %453 = add nsw i64 %449, %452
  %454 = getelementptr inbounds double, ptr %442, i64 %453
  %455 = load ptr, ptr %30, align 8, !tbaa !5
  %456 = load ptr, ptr %26, align 8, !tbaa !5
  %457 = load i64, ptr %456, align 8, !tbaa !9
  %458 = add nsw i64 %457, 1
  %459 = load i64, ptr %57, align 8, !tbaa !9
  %460 = sub nsw i64 %458, %459
  %461 = load i64, ptr %58, align 8, !tbaa !9
  %462 = add nsw i64 %460, %461
  %463 = load i64, ptr %57, align 8, !tbaa !9
  %464 = load i64, ptr %46, align 8, !tbaa !9
  %465 = mul nsw i64 %463, %464
  %466 = add nsw i64 %462, %465
  %467 = getelementptr inbounds double, ptr %455, i64 %466
  %468 = call i32 @f2c_dcopy(ptr noundef %53, ptr noundef %454, ptr noundef @c__1, ptr noundef %467, ptr noundef @c__1)
  br label %469

469:                                              ; preds = %436
  %470 = load i64, ptr %57, align 8, !tbaa !9
  %471 = add nsw i64 %470, 1
  store i64 %471, ptr %57, align 8, !tbaa !9
  br label %422, !llvm.loop !18

472:                                              ; preds = %422
  br label %517

473:                                              ; preds = %416
  %474 = load ptr, ptr %25, align 8, !tbaa !5
  %475 = load i64, ptr %474, align 8, !tbaa !9
  store i64 %475, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %57, align 8, !tbaa !9
  br label %476

476:                                              ; preds = %513, %473
  %477 = load i64, ptr %57, align 8, !tbaa !9
  %478 = load i64, ptr %52, align 8, !tbaa !9
  %479 = icmp sle i64 %477, %478
  br i1 %479, label %480, label %516

480:                                              ; preds = %476
  %481 = load i64, ptr %57, align 8, !tbaa !9
  %482 = load ptr, ptr %26, align 8, !tbaa !5
  %483 = load i64, ptr %482, align 8, !tbaa !9
  %484 = add nsw i64 %481, %483
  store i64 %484, ptr %53, align 8, !tbaa !9
  %485 = load i64, ptr %53, align 8, !tbaa !9
  %486 = load ptr, ptr %25, align 8, !tbaa !5
  %487 = load i64, ptr %486, align 8, !tbaa !9
  %488 = icmp sle i64 %485, %487
  br i1 %488, label %489, label %491

489:                                              ; preds = %480
  %490 = load i64, ptr %53, align 8, !tbaa !9
  br label %494

491:                                              ; preds = %480
  %492 = load ptr, ptr %25, align 8, !tbaa !5
  %493 = load i64, ptr %492, align 8, !tbaa !9
  br label %494

494:                                              ; preds = %491, %489
  %495 = phi i64 [ %490, %489 ], [ %493, %491 ]
  store i64 %495, ptr %59, align 8, !tbaa !9
  %496 = load i64, ptr %59, align 8, !tbaa !9
  %497 = load i64, ptr %57, align 8, !tbaa !9
  %498 = sub nsw i64 %496, %497
  %499 = add nsw i64 %498, 1
  store i64 %499, ptr %53, align 8, !tbaa !9
  %500 = load ptr, ptr %28, align 8, !tbaa !5
  %501 = load i64, ptr %57, align 8, !tbaa !9
  %502 = load i64, ptr %44, align 8, !tbaa !9
  %503 = mul nsw i64 %501, %502
  %504 = add nsw i64 %503, 1
  %505 = getelementptr inbounds double, ptr %500, i64 %504
  %506 = load ptr, ptr %30, align 8, !tbaa !5
  %507 = load i64, ptr %57, align 8, !tbaa !9
  %508 = load i64, ptr %46, align 8, !tbaa !9
  %509 = mul nsw i64 %507, %508
  %510 = add nsw i64 %509, 1
  %511 = getelementptr inbounds double, ptr %506, i64 %510
  %512 = call i32 @f2c_dcopy(ptr noundef %53, ptr noundef %505, ptr noundef @c__1, ptr noundef %511, ptr noundef @c__1)
  br label %513

513:                                              ; preds = %494
  %514 = load i64, ptr %57, align 8, !tbaa !9
  %515 = add nsw i64 %514, 1
  store i64 %515, ptr %57, align 8, !tbaa !9
  br label %476, !llvm.loop !19

516:                                              ; preds = %476
  br label %517

517:                                              ; preds = %516, %472
  %518 = load ptr, ptr %24, align 8, !tbaa !5
  %519 = load ptr, ptr %25, align 8, !tbaa !5
  %520 = load ptr, ptr %26, align 8, !tbaa !5
  %521 = load ptr, ptr %30, align 8, !tbaa !5
  %522 = load i64, ptr %47, align 8, !tbaa !9
  %523 = getelementptr inbounds double, ptr %521, i64 %522
  %524 = load ptr, ptr %31, align 8, !tbaa !5
  %525 = load ptr, ptr %43, align 8, !tbaa !5
  %526 = call i32 @dpbtrf_(ptr noundef %518, ptr noundef %519, ptr noundef %520, ptr noundef %523, ptr noundef %524, ptr noundef %525)
  %527 = load ptr, ptr %43, align 8, !tbaa !5
  %528 = load i64, ptr %527, align 8, !tbaa !9
  %529 = icmp sgt i64 %528, 0
  br i1 %529, label %530, label %532

530:                                              ; preds = %517
  %531 = load ptr, ptr %38, align 8, !tbaa !5
  store double 0.000000e+00, ptr %531, align 8, !tbaa !12
  store i32 0, ptr %22, align 4
  store i32 1, ptr %72, align 4
  br label %686

532:                                              ; preds = %517
  br label %533

533:                                              ; preds = %532, %413
  %534 = load ptr, ptr %24, align 8, !tbaa !5
  %535 = load ptr, ptr %25, align 8, !tbaa !5
  %536 = load ptr, ptr %26, align 8, !tbaa !5
  %537 = load ptr, ptr %28, align 8, !tbaa !5
  %538 = load i64, ptr %45, align 8, !tbaa !9
  %539 = getelementptr inbounds double, ptr %537, i64 %538
  %540 = load ptr, ptr %29, align 8, !tbaa !5
  %541 = load ptr, ptr %41, align 8, !tbaa !5
  %542 = getelementptr inbounds double, ptr %541, i64 1
  %543 = call double @dlansb_(ptr noundef @.str.8, ptr noundef %534, ptr noundef %535, ptr noundef %536, ptr noundef %539, ptr noundef %540, ptr noundef %542)
  store double %543, ptr %64, align 8, !tbaa !12
  %544 = load ptr, ptr %24, align 8, !tbaa !5
  %545 = load ptr, ptr %25, align 8, !tbaa !5
  %546 = load ptr, ptr %26, align 8, !tbaa !5
  %547 = load ptr, ptr %30, align 8, !tbaa !5
  %548 = load i64, ptr %47, align 8, !tbaa !9
  %549 = getelementptr inbounds double, ptr %547, i64 %548
  %550 = load ptr, ptr %31, align 8, !tbaa !5
  %551 = load ptr, ptr %38, align 8, !tbaa !5
  %552 = load ptr, ptr %41, align 8, !tbaa !5
  %553 = getelementptr inbounds double, ptr %552, i64 1
  %554 = load ptr, ptr %42, align 8, !tbaa !5
  %555 = getelementptr inbounds i64, ptr %554, i64 1
  %556 = load ptr, ptr %43, align 8, !tbaa !5
  %557 = call i32 @dpbcon_(ptr noundef %544, ptr noundef %545, ptr noundef %546, ptr noundef %549, ptr noundef %550, ptr noundef %64, ptr noundef %551, ptr noundef %553, ptr noundef %555, ptr noundef %556)
  %558 = load ptr, ptr %25, align 8, !tbaa !5
  %559 = load ptr, ptr %27, align 8, !tbaa !5
  %560 = load ptr, ptr %34, align 8, !tbaa !5
  %561 = load i64, ptr %49, align 8, !tbaa !9
  %562 = getelementptr inbounds double, ptr %560, i64 %561
  %563 = load ptr, ptr %35, align 8, !tbaa !5
  %564 = load ptr, ptr %36, align 8, !tbaa !5
  %565 = load i64, ptr %51, align 8, !tbaa !9
  %566 = getelementptr inbounds double, ptr %564, i64 %565
  %567 = load ptr, ptr %37, align 8, !tbaa !5
  %568 = call i32 @dlacpy_(ptr noundef @.str.9, ptr noundef %558, ptr noundef %559, ptr noundef %562, ptr noundef %563, ptr noundef %566, ptr noundef %567)
  %569 = load ptr, ptr %24, align 8, !tbaa !5
  %570 = load ptr, ptr %25, align 8, !tbaa !5
  %571 = load ptr, ptr %26, align 8, !tbaa !5
  %572 = load ptr, ptr %27, align 8, !tbaa !5
  %573 = load ptr, ptr %30, align 8, !tbaa !5
  %574 = load i64, ptr %47, align 8, !tbaa !9
  %575 = getelementptr inbounds double, ptr %573, i64 %574
  %576 = load ptr, ptr %31, align 8, !tbaa !5
  %577 = load ptr, ptr %36, align 8, !tbaa !5
  %578 = load i64, ptr %51, align 8, !tbaa !9
  %579 = getelementptr inbounds double, ptr %577, i64 %578
  %580 = load ptr, ptr %37, align 8, !tbaa !5
  %581 = load ptr, ptr %43, align 8, !tbaa !5
  %582 = call i32 @dpbtrs_(ptr noundef %569, ptr noundef %570, ptr noundef %571, ptr noundef %572, ptr noundef %575, ptr noundef %576, ptr noundef %579, ptr noundef %580, ptr noundef %581)
  %583 = load ptr, ptr %24, align 8, !tbaa !5
  %584 = load ptr, ptr %25, align 8, !tbaa !5
  %585 = load ptr, ptr %26, align 8, !tbaa !5
  %586 = load ptr, ptr %27, align 8, !tbaa !5
  %587 = load ptr, ptr %28, align 8, !tbaa !5
  %588 = load i64, ptr %45, align 8, !tbaa !9
  %589 = getelementptr inbounds double, ptr %587, i64 %588
  %590 = load ptr, ptr %29, align 8, !tbaa !5
  %591 = load ptr, ptr %30, align 8, !tbaa !5
  %592 = load i64, ptr %47, align 8, !tbaa !9
  %593 = getelementptr inbounds double, ptr %591, i64 %592
  %594 = load ptr, ptr %31, align 8, !tbaa !5
  %595 = load ptr, ptr %34, align 8, !tbaa !5
  %596 = load i64, ptr %49, align 8, !tbaa !9
  %597 = getelementptr inbounds double, ptr %595, i64 %596
  %598 = load ptr, ptr %35, align 8, !tbaa !5
  %599 = load ptr, ptr %36, align 8, !tbaa !5
  %600 = load i64, ptr %51, align 8, !tbaa !9
  %601 = getelementptr inbounds double, ptr %599, i64 %600
  %602 = load ptr, ptr %37, align 8, !tbaa !5
  %603 = load ptr, ptr %39, align 8, !tbaa !5
  %604 = getelementptr inbounds double, ptr %603, i64 1
  %605 = load ptr, ptr %40, align 8, !tbaa !5
  %606 = getelementptr inbounds double, ptr %605, i64 1
  %607 = load ptr, ptr %41, align 8, !tbaa !5
  %608 = getelementptr inbounds double, ptr %607, i64 1
  %609 = load ptr, ptr %42, align 8, !tbaa !5
  %610 = getelementptr inbounds i64, ptr %609, i64 1
  %611 = load ptr, ptr %43, align 8, !tbaa !5
  %612 = call i32 @dpbrfs_(ptr noundef %583, ptr noundef %584, ptr noundef %585, ptr noundef %586, ptr noundef %589, ptr noundef %590, ptr noundef %593, ptr noundef %594, ptr noundef %597, ptr noundef %598, ptr noundef %601, ptr noundef %602, ptr noundef %604, ptr noundef %606, ptr noundef %608, ptr noundef %610, ptr noundef %611)
  %613 = load i64, ptr %66, align 8, !tbaa !9
  %614 = icmp ne i64 %613, 0
  br i1 %614, label %615, label %675

615:                                              ; preds = %533
  %616 = load ptr, ptr %27, align 8, !tbaa !5
  %617 = load i64, ptr %616, align 8, !tbaa !9
  store i64 %617, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %57, align 8, !tbaa !9
  br label %618

618:                                              ; preds = %654, %615
  %619 = load i64, ptr %57, align 8, !tbaa !9
  %620 = load i64, ptr %52, align 8, !tbaa !9
  %621 = icmp sle i64 %619, %620
  br i1 %621, label %622, label %657

622:                                              ; preds = %618
  %623 = load ptr, ptr %25, align 8, !tbaa !5
  %624 = load i64, ptr %623, align 8, !tbaa !9
  store i64 %624, ptr %53, align 8, !tbaa !9
  store i64 1, ptr %56, align 8, !tbaa !9
  br label %625

625:                                              ; preds = %650, %622
  %626 = load i64, ptr %56, align 8, !tbaa !9
  %627 = load i64, ptr %53, align 8, !tbaa !9
  %628 = icmp sle i64 %626, %627
  br i1 %628, label %629, label %653

629:                                              ; preds = %625
  %630 = load ptr, ptr %33, align 8, !tbaa !5
  %631 = load i64, ptr %56, align 8, !tbaa !9
  %632 = getelementptr inbounds double, ptr %630, i64 %631
  %633 = load double, ptr %632, align 8, !tbaa !12
  %634 = load ptr, ptr %36, align 8, !tbaa !5
  %635 = load i64, ptr %56, align 8, !tbaa !9
  %636 = load i64, ptr %57, align 8, !tbaa !9
  %637 = load i64, ptr %50, align 8, !tbaa !9
  %638 = mul nsw i64 %636, %637
  %639 = add nsw i64 %635, %638
  %640 = getelementptr inbounds double, ptr %634, i64 %639
  %641 = load double, ptr %640, align 8, !tbaa !12
  %642 = fmul double %633, %641
  %643 = load ptr, ptr %36, align 8, !tbaa !5
  %644 = load i64, ptr %56, align 8, !tbaa !9
  %645 = load i64, ptr %57, align 8, !tbaa !9
  %646 = load i64, ptr %50, align 8, !tbaa !9
  %647 = mul nsw i64 %645, %646
  %648 = add nsw i64 %644, %647
  %649 = getelementptr inbounds double, ptr %643, i64 %648
  store double %642, ptr %649, align 8, !tbaa !12
  br label %650

650:                                              ; preds = %629
  %651 = load i64, ptr %56, align 8, !tbaa !9
  %652 = add nsw i64 %651, 1
  store i64 %652, ptr %56, align 8, !tbaa !9
  br label %625, !llvm.loop !20

653:                                              ; preds = %625
  br label %654

654:                                              ; preds = %653
  %655 = load i64, ptr %57, align 8, !tbaa !9
  %656 = add nsw i64 %655, 1
  store i64 %656, ptr %57, align 8, !tbaa !9
  br label %618, !llvm.loop !21

657:                                              ; preds = %618
  %658 = load ptr, ptr %27, align 8, !tbaa !5
  %659 = load i64, ptr %658, align 8, !tbaa !9
  store i64 %659, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %57, align 8, !tbaa !9
  br label %660

660:                                              ; preds = %671, %657
  %661 = load i64, ptr %57, align 8, !tbaa !9
  %662 = load i64, ptr %52, align 8, !tbaa !9
  %663 = icmp sle i64 %661, %662
  br i1 %663, label %664, label %674

664:                                              ; preds = %660
  %665 = load double, ptr %63, align 8, !tbaa !12
  %666 = load ptr, ptr %39, align 8, !tbaa !5
  %667 = load i64, ptr %57, align 8, !tbaa !9
  %668 = getelementptr inbounds double, ptr %666, i64 %667
  %669 = load double, ptr %668, align 8, !tbaa !12
  %670 = fdiv double %669, %665
  store double %670, ptr %668, align 8, !tbaa !12
  br label %671

671:                                              ; preds = %664
  %672 = load i64, ptr %57, align 8, !tbaa !9
  %673 = add nsw i64 %672, 1
  store i64 %673, ptr %57, align 8, !tbaa !9
  br label %660, !llvm.loop !22

674:                                              ; preds = %660
  br label %675

675:                                              ; preds = %674, %533
  %676 = load ptr, ptr %38, align 8, !tbaa !5
  %677 = load double, ptr %676, align 8, !tbaa !12
  %678 = call double @dlamch_(ptr noundef @.str.10)
  %679 = fcmp olt double %677, %678
  br i1 %679, label %680, label %685

680:                                              ; preds = %675
  %681 = load ptr, ptr %25, align 8, !tbaa !5
  %682 = load i64, ptr %681, align 8, !tbaa !9
  %683 = add nsw i64 %682, 1
  %684 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 %683, ptr %684, align 8, !tbaa !9
  br label %685

685:                                              ; preds = %680, %675
  store i32 0, ptr %22, align 4
  store i32 1, ptr %72, align 4
  br label %686

686:                                              ; preds = %685, %530, %328
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  %687 = load i32, ptr %22, align 4
  ret i32 %687
}

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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

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

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"double", !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = distinct !{!17, !15}
!18 = distinct !{!18, !15}
!19 = distinct !{!19, !15}
!20 = distinct !{!20, !15}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15}


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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dpbsvx_(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, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20) local_unnamed_addr #0 {
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #4
  %28 = load i64, ptr %6, align 8, !tbaa !5
  %29 = xor i64 %28, -1
  %30 = getelementptr inbounds double, ptr %5, i64 %29
  %31 = load i64, ptr %8, align 8, !tbaa !5
  %32 = xor i64 %31, -1
  %33 = getelementptr inbounds double, ptr %7, i64 %32
  %34 = getelementptr inbounds i8, ptr %10, i64 -8
  %35 = load i64, ptr %12, align 8, !tbaa !5
  %36 = xor i64 %35, -1
  %37 = getelementptr inbounds double, ptr %11, i64 %36
  %38 = load i64, ptr %14, align 8, !tbaa !5
  %39 = xor i64 %38, -1
  %40 = getelementptr inbounds double, ptr %13, i64 %39
  %41 = getelementptr inbounds i8, ptr %16, i64 -8
  store i64 0, ptr %20, align 8, !tbaa !5
  %42 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %43 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %44 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #4
  %45 = icmp ne i64 %42, 0
  %46 = icmp ne i64 %43, 0
  %or.cond = select i1 %45, i1 true, i1 %46
  br i1 %or.cond, label %.thread, label %47

.thread:                                          ; preds = %21
  store i8 78, ptr %9, align 1, !tbaa !9
  br label %52

47:                                               ; preds = %21
  %48 = tail call i64 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.3) #4
  %49 = tail call double @dlamch_(ptr noundef nonnull @.str.4) #4
  %50 = fdiv double 1.000000e+00, %49
  %51 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.5) #4
  %.not = icmp eq i64 %51, 0
  br i1 %.not, label %.thread308.sink.split, label %52

52:                                               ; preds = %.thread, %47
  %.0303 = phi double [ undef, %.thread ], [ %49, %47 ]
  %.0263302 = phi double [ undef, %.thread ], [ %50, %47 ]
  %.0265301 = phi i64 [ 0, %.thread ], [ %48, %47 ]
  %.not279 = icmp eq i64 %44, 0
  br i1 %.not279, label %53, label %55

53:                                               ; preds = %52
  %54 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.6) #4
  %.not280 = icmp eq i64 %54, 0
  br i1 %.not280, label %.thread308.sink.split, label %55

55:                                               ; preds = %53, %52
  %56 = load i64, ptr %2, align 8, !tbaa !5
  %57 = icmp slt i64 %56, 0
  br i1 %57, label %.thread308.sink.split, label %58

58:                                               ; preds = %55
  %59 = load i64, ptr %3, align 8, !tbaa !5
  %60 = icmp slt i64 %59, 0
  br i1 %60, label %.thread308.sink.split, label %61

61:                                               ; preds = %58
  %62 = load i64, ptr %4, align 8, !tbaa !5
  %63 = icmp slt i64 %62, 0
  br i1 %63, label %.thread308.sink.split, label %64

64:                                               ; preds = %61
  %65 = load i64, ptr %6, align 8, !tbaa !5
  %.not281 = icmp sgt i64 %65, %59
  br i1 %.not281, label %66, label %.thread308.sink.split

66:                                               ; preds = %64
  %67 = load i64, ptr %8, align 8, !tbaa !5
  %.not282 = icmp sgt i64 %67, %59
  br i1 %.not282, label %68, label %.thread308.sink.split

68:                                               ; preds = %66
  %69 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.5) #4
  %70 = icmp eq i64 %69, 0
  %71 = icmp ne i64 %.0265301, 0
  %or.cond5 = select i1 %70, i1 true, i1 %71
  br i1 %or.cond5, label %74, label %72

72:                                               ; preds = %68
  %73 = tail call i64 @lsame_(ptr noundef %9, ptr noundef nonnull @.str) #4
  %.not283 = icmp eq i64 %73, 0
  br i1 %.not283, label %.thread308.sink.split, label %.thread304

74:                                               ; preds = %68
  br i1 %71, label %75, label %.thread304

75:                                               ; preds = %74
  %76 = load i64, ptr %2, align 8, !tbaa !5
  %.not284314 = icmp slt i64 %76, 1
  br i1 %.not284314, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %75
  %xtraiter = and i64 %76, 1
  %77 = icmp eq i64 %76, 1
  br i1 %77, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.preheader
  %unroll_iter = and i64 %76, 9223372036854775806
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %.0266317 = phi double [ 0.000000e+00, %.lr.ph.preheader.new ], [ %89, %.lr.ph ]
  %.0267316 = phi double [ %.0263302, %.lr.ph.preheader.new ], [ %87, %.lr.ph ]
  %.0268315 = phi i64 [ 1, %.lr.ph.preheader.new ], [ %90, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %78 = getelementptr inbounds double, ptr %34, i64 %.0268315
  %79 = load double, ptr %78, align 8, !tbaa !10
  %80 = fcmp ole double %.0267316, %79
  %81 = select i1 %80, double %.0267316, double %79
  %82 = fcmp oge double %.0266317, %79
  %83 = select i1 %82, double %.0266317, double %79
  %84 = getelementptr double, ptr %10, i64 %.0268315
  %85 = load double, ptr %84, align 8, !tbaa !10
  %86 = fcmp ole double %81, %85
  %87 = select i1 %86, double %81, double %85
  %88 = fcmp oge double %83, %85
  %89 = select i1 %88, double %83, double %85
  %90 = add nuw i64 %.0268315, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph, !llvm.loop !12

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph, %.lr.ph.preheader
  %.lcssa421.ph = phi double [ poison, %.lr.ph.preheader ], [ %87, %.lr.ph ]
  %.lcssa420.ph = phi double [ poison, %.lr.ph.preheader ], [ %89, %.lr.ph ]
  %.0266317.unr = phi double [ 0.000000e+00, %.lr.ph.preheader ], [ %89, %.lr.ph ]
  %.0267316.unr = phi double [ %.0263302, %.lr.ph.preheader ], [ %87, %.lr.ph ]
  %.0268315.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %90, %.lr.ph ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %._crit_edge.loopexit.unr-lcssa
  %91 = getelementptr inbounds double, ptr %34, i64 %.0268315.unr
  %92 = load double, ptr %91, align 8, !tbaa !10
  %93 = fcmp ole double %.0267316.unr, %92
  %94 = select i1 %93, double %.0267316.unr, double %92
  %95 = fcmp oge double %.0266317.unr, %92
  %96 = select i1 %95, double %.0266317.unr, double %92
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %75
  %.0267.lcssa = phi double [ %.0263302, %75 ], [ %.lcssa421.ph, %._crit_edge.loopexit.unr-lcssa ], [ %94, %.lr.ph.epil ]
  %.0266.lcssa = phi double [ 0.000000e+00, %75 ], [ %.lcssa420.ph, %._crit_edge.loopexit.unr-lcssa ], [ %96, %.lr.ph.epil ]
  %97 = fcmp ugt double %.0267.lcssa, 0.000000e+00
  br i1 %97, label %98, label %.thread308.sink.split

98:                                               ; preds = %._crit_edge
  %99 = icmp sgt i64 %76, 0
  br i1 %99, label %100, label %106

100:                                              ; preds = %98
  %101 = fcmp oge double %.0267.lcssa, %.0303
  %102 = select i1 %101, double %.0267.lcssa, double %.0303
  %103 = fcmp ole double %.0266.lcssa, %.0263302
  %104 = select i1 %103, double %.0266.lcssa, double %.0263302
  %105 = fdiv double %102, %104
  store double %105, ptr %25, align 8, !tbaa !10
  br label %.thread304

106:                                              ; preds = %98
  store double 1.000000e+00, ptr %25, align 8, !tbaa !10
  br label %.thread304

.thread304:                                       ; preds = %72, %106, %100, %74
  %.pr = load i64, ptr %20, align 8, !tbaa !5
  %107 = icmp eq i64 %.pr, 0
  br i1 %107, label %108, label %.thread308

108:                                              ; preds = %.thread304
  %109 = load i64, ptr %12, align 8, !tbaa !5
  %110 = load i64, ptr %2, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.smax.i64(i64 %110, i64 1)
  %111 = icmp slt i64 %109, %spec.select
  br i1 %111, label %.thread308.sink.split, label %112

112:                                              ; preds = %108
  %113 = load i64, ptr %14, align 8, !tbaa !5
  %114 = icmp slt i64 %113, %spec.select
  br i1 %114, label %.thread308.sink.split, label %118

.thread308.sink.split:                            ; preds = %112, %108, %._crit_edge, %72, %66, %64, %61, %58, %55, %53, %47
  %.sink = phi i64 [ -1, %47 ], [ -2, %53 ], [ -3, %55 ], [ -4, %58 ], [ -5, %61 ], [ -7, %64 ], [ -9, %66 ], [ -10, %72 ], [ -11, %._crit_edge ], [ -13, %108 ], [ -15, %112 ]
  store i64 %.sink, ptr %20, align 8, !tbaa !5
  br label %.thread308

.thread308:                                       ; preds = %.thread308.sink.split, %.thread304
  %115 = phi i64 [ %.pr, %.thread304 ], [ %.sink, %.thread308.sink.split ]
  %116 = sub nsw i64 0, %115
  store i64 %116, ptr %22, align 8, !tbaa !5
  %117 = call i32 @xerbla_(ptr noundef nonnull @.str.7, ptr noundef nonnull %22) #4
  br label %271

118:                                              ; preds = %112
  br i1 %46, label %119, label %126

119:                                              ; preds = %118
  %120 = call i32 @dpbequ_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %10, ptr noundef nonnull %25, ptr noundef nonnull %24, ptr noundef nonnull %27) #4
  %121 = load i64, ptr %27, align 8, !tbaa !5
  %122 = icmp eq i64 %121, 0
  br i1 %122, label %123, label %126

123:                                              ; preds = %119
  %124 = call i32 @dlaqsb_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %10, ptr noundef nonnull %25, ptr noundef nonnull %24, ptr noundef %9) #4
  %125 = call i64 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.3) #4
  br label %126

126:                                              ; preds = %119, %123, %118
  %.1 = phi i64 [ %125, %123 ], [ %.0265301, %119 ], [ %.0265301, %118 ]
  %.not286 = icmp eq i64 %.1, 0
  br i1 %.not286, label %173, label %127

127:                                              ; preds = %126
  %128 = load i64, ptr %4, align 8, !tbaa !5
  %.not287324 = icmp slt i64 %128, 1
  br i1 %.not287324, label %.loopexit313, label %.lr.ph327

.lr.ph327:                                        ; preds = %127
  %129 = load i64, ptr %2, align 8, !tbaa !5
  %.not295319 = icmp slt i64 %129, 1
  br i1 %.not295319, label %.loopexit313, label %.lr.ph322.preheader

.lr.ph322.preheader:                              ; preds = %.lr.ph327
  %130 = add nuw i64 %128, 2305843009213693951
  %131 = mul i64 %35, %130
  %132 = shl i64 %129, 3
  %133 = add i64 %131, %129
  %134 = shl i64 %133, 3
  %scevgep = getelementptr i8, ptr %11, i64 %134
  %scevgep376 = getelementptr i8, ptr %10, i64 %132
  %135 = add nuw i64 %129, 1
  %min.iters.check = icmp ult i64 %129, 4
  %bound0 = icmp ugt ptr %scevgep376, %11
  %bound1 = icmp ugt ptr %scevgep, %10
  %found.conflict = and i1 %bound0, %bound1
  %.mask = and i64 %35, 1152921504606846976
  %stride.check = icmp ne i64 %.mask, 0
  %136 = or i1 %found.conflict, %stride.check
  %n.vec = and i64 %129, 9223372036854775804
  %ind.end = or disjoint i64 %n.vec, 1
  %cmp.n = icmp eq i64 %129, %n.vec
  br label %.lr.ph322

.lr.ph322:                                        ; preds = %.lr.ph322.preheader, %._crit_edge323
  %.1269325 = phi i64 [ %172, %._crit_edge323 ], [ 1, %.lr.ph322.preheader ]
  %137 = mul nsw i64 %.1269325, %35
  %invariant.gep = getelementptr double, ptr %37, i64 %137
  %brmerge = select i1 %min.iters.check, i1 true, i1 %136
  br i1 %brmerge, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %.lr.ph322, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph322 ]
  %offset.idx = or disjoint i64 %index, 1
  %138 = getelementptr double, ptr %10, i64 %index
  %139 = getelementptr inbounds i8, ptr %138, i64 16
  %wide.load = load <2 x double>, ptr %138, align 8, !tbaa !10, !alias.scope !14
  %wide.load377 = load <2 x double>, ptr %139, align 8, !tbaa !10, !alias.scope !14
  %140 = getelementptr double, ptr %invariant.gep, i64 %offset.idx
  %141 = getelementptr i8, ptr %140, i64 16
  %wide.load378 = load <2 x double>, ptr %140, align 8, !tbaa !10, !alias.scope !17, !noalias !14
  %wide.load379 = load <2 x double>, ptr %141, align 8, !tbaa !10, !alias.scope !17, !noalias !14
  %142 = fmul <2 x double> %wide.load, %wide.load378
  %143 = fmul <2 x double> %wide.load377, %wide.load379
  store <2 x double> %142, ptr %140, align 8, !tbaa !10, !alias.scope !17, !noalias !14
  store <2 x double> %143, ptr %141, align 8, !tbaa !10, !alias.scope !17, !noalias !14
  %index.next = add nuw i64 %index, 4
  %144 = icmp eq i64 %index.next, %n.vec
  br i1 %144, label %middle.block, label %vector.body, !llvm.loop !19

middle.block:                                     ; preds = %vector.body
  br i1 %cmp.n, label %._crit_edge323, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %.lr.ph322, %middle.block
  %.0270320.ph = phi i64 [ 1, %.lr.ph322 ], [ %ind.end, %middle.block ]
  %145 = sub i64 %135, %.0270320.ph
  %146 = sub i64 %129, %.0270320.ph
  %xtraiter424 = and i64 %145, 3
  %lcmp.mod425.not = icmp eq i64 %xtraiter424, 0
  br i1 %lcmp.mod425.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %.0270320.prol = phi i64 [ %151, %scalar.ph.prol ], [ %.0270320.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %147 = getelementptr inbounds double, ptr %34, i64 %.0270320.prol
  %148 = load double, ptr %147, align 8, !tbaa !10
  %gep.prol = getelementptr double, ptr %invariant.gep, i64 %.0270320.prol
  %149 = load double, ptr %gep.prol, align 8, !tbaa !10
  %150 = fmul double %148, %149
  store double %150, ptr %gep.prol, align 8, !tbaa !10
  %151 = add nuw i64 %.0270320.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter424
  br i1 %prol.iter.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !22

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.0270320.unr = phi i64 [ %.0270320.ph, %scalar.ph.preheader ], [ %151, %scalar.ph.prol ]
  %152 = icmp ult i64 %146, 3
  br i1 %152, label %._crit_edge323, label %scalar.ph.preheader.new

scalar.ph.preheader.new:                          ; preds = %scalar.ph.prol.loopexit
  %invariant.gep434 = getelementptr i8, ptr %invariant.gep, i64 8
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %.0270320 = phi i64 [ %.0270320.unr, %scalar.ph.preheader.new ], [ %171, %scalar.ph ]
  %153 = getelementptr inbounds double, ptr %34, i64 %.0270320
  %154 = load double, ptr %153, align 8, !tbaa !10
  %gep = getelementptr double, ptr %invariant.gep, i64 %.0270320
  %155 = load double, ptr %gep, align 8, !tbaa !10
  %156 = fmul double %154, %155
  store double %156, ptr %gep, align 8, !tbaa !10
  %157 = getelementptr double, ptr %10, i64 %.0270320
  %158 = load double, ptr %157, align 8, !tbaa !10
  %gep435 = getelementptr double, ptr %invariant.gep434, i64 %.0270320
  %159 = load double, ptr %gep435, align 8, !tbaa !10
  %160 = fmul double %158, %159
  store double %160, ptr %gep435, align 8, !tbaa !10
  %161 = add nuw i64 %.0270320, 2
  %162 = getelementptr inbounds double, ptr %34, i64 %161
  %163 = load double, ptr %162, align 8, !tbaa !10
  %gep.2 = getelementptr double, ptr %invariant.gep, i64 %161
  %164 = load double, ptr %gep.2, align 8, !tbaa !10
  %165 = fmul double %163, %164
  store double %165, ptr %gep.2, align 8, !tbaa !10
  %166 = add nuw i64 %.0270320, 3
  %167 = getelementptr inbounds double, ptr %34, i64 %166
  %168 = load double, ptr %167, align 8, !tbaa !10
  %gep.3 = getelementptr double, ptr %invariant.gep, i64 %166
  %169 = load double, ptr %gep.3, align 8, !tbaa !10
  %170 = fmul double %168, %169
  store double %170, ptr %gep.3, align 8, !tbaa !10
  %171 = add nuw i64 %.0270320, 4
  %exitcond363.not.3 = icmp eq i64 %166, %129
  br i1 %exitcond363.not.3, label %._crit_edge323, label %scalar.ph, !llvm.loop !24

._crit_edge323:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %172 = add nuw i64 %.1269325, 1
  %exitcond364.not = icmp eq i64 %.1269325, %128
  br i1 %exitcond364.not, label %.loopexit313, label %.lr.ph322, !llvm.loop !25

.loopexit313:                                     ; preds = %._crit_edge323, %.lr.ph327, %127
  %.lcssa = phi i64 [ undef, %127 ], [ %129, %.lr.ph327 ], [ %129, %._crit_edge323 ]
  store i64 %.lcssa, ptr %23, align 8, !tbaa !5
  br label %173

173:                                              ; preds = %.loopexit313, %126
  br i1 %or.cond, label %174, label %204

174:                                              ; preds = %173
  %175 = load i64, ptr %2, align 8, !tbaa !5
  br i1 %.not279, label %191, label %176

176:                                              ; preds = %174
  %.not291329 = icmp slt i64 %175, 1
  br i1 %.not291329, label %.loopexit311, label %.lr.ph332

.lr.ph332:                                        ; preds = %176, %.lr.ph332
  %.2330 = phi i64 [ %180, %.lr.ph332 ], [ 1, %176 ]
  %177 = load i64, ptr %3, align 8, !tbaa !5
  %178 = sub nsw i64 %.2330, %177
  %179 = call i64 @llvm.smax.i64(i64 %178, i64 1)
  %180 = add nuw i64 %.2330, 1
  %181 = sub i64 %180, %179
  store i64 %181, ptr %23, align 8, !tbaa !5
  %reass.sub = sub i64 %177, %.2330
  %182 = add i64 %reass.sub, 1
  %183 = add nsw i64 %182, %179
  %184 = mul nsw i64 %.2330, %28
  %185 = getelementptr double, ptr %30, i64 %183
  %186 = getelementptr double, ptr %185, i64 %184
  %187 = mul nsw i64 %.2330, %31
  %188 = getelementptr double, ptr %33, i64 %183
  %189 = getelementptr double, ptr %188, i64 %187
  %190 = call i32 @f2c_dcopy(ptr noundef nonnull %23, ptr noundef %186, ptr noundef nonnull @c__1, ptr noundef %189, ptr noundef nonnull @c__1) #4
  %.not291.not = icmp slt i64 %.2330, %175
  br i1 %.not291.not, label %.lr.ph332, label %.loopexit311, !llvm.loop !26

191:                                              ; preds = %174
  %invariant.gep333 = getelementptr i8, ptr %30, i64 8
  %invariant.gep335 = getelementptr i8, ptr %33, i64 8
  %.not289337 = icmp slt i64 %175, 1
  br i1 %.not289337, label %.loopexit311, label %.lr.ph340

.lr.ph340:                                        ; preds = %191, %.lr.ph340
  %.3338 = phi i64 [ %199, %.lr.ph340 ], [ 1, %191 ]
  %192 = load i64, ptr %3, align 8, !tbaa !5
  %193 = add nsw i64 %192, %.3338
  %194 = load i64, ptr %2, align 8, !tbaa !5
  %. = call i64 @llvm.smin.i64(i64 %193, i64 %194)
  %reass.sub357 = sub i64 %., %.3338
  %195 = add i64 %reass.sub357, 1
  store i64 %195, ptr %23, align 8, !tbaa !5
  %196 = mul nsw i64 %.3338, %28
  %gep334 = getelementptr double, ptr %invariant.gep333, i64 %196
  %197 = mul nsw i64 %.3338, %31
  %gep336 = getelementptr double, ptr %invariant.gep335, i64 %197
  %198 = call i32 @f2c_dcopy(ptr noundef nonnull %23, ptr noundef %gep334, ptr noundef nonnull @c__1, ptr noundef %gep336, ptr noundef nonnull @c__1) #4
  %199 = add nuw nsw i64 %.3338, 1
  %.not289.not = icmp slt i64 %.3338, %175
  br i1 %.not289.not, label %.lr.ph340, label %.loopexit311, !llvm.loop !27

.loopexit311:                                     ; preds = %.lr.ph332, %.lr.ph340, %176, %191
  %200 = call i32 @dpbtrf_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %20) #4
  %201 = load i64, ptr %20, align 8, !tbaa !5
  %202 = icmp sgt i64 %201, 0
  br i1 %202, label %203, label %204

203:                                              ; preds = %.loopexit311
  store double 0.000000e+00, ptr %15, align 8, !tbaa !10
  br label %271

204:                                              ; preds = %.loopexit311, %173
  %205 = call double @dlansb_(ptr noundef nonnull @.str.8, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %18) #4
  store double %205, ptr %26, align 8, !tbaa !10
  %206 = call i32 @dpbcon_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %26, ptr noundef %15, ptr noundef %18, ptr noundef %19, ptr noundef nonnull %20) #4
  %207 = call i32 @dlacpy_(ptr noundef nonnull @.str.9, ptr noundef nonnull %2, ptr noundef nonnull %4, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %14) #4
  %208 = call i32 @dpbtrs_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %20) #4
  %209 = call i32 @dpbrfs_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef nonnull %20) #4
  br i1 %.not286, label %.loopexit, label %210

210:                                              ; preds = %204
  %211 = load i64, ptr %4, align 8, !tbaa !5
  %.not292348 = icmp slt i64 %211, 1
  br i1 %.not292348, label %.loopexit, label %.lr.ph351

.lr.ph351:                                        ; preds = %210
  %212 = load i64, ptr %2, align 8, !tbaa !5
  %.not294341 = icmp slt i64 %212, 1
  br i1 %.not294341, label %.thread369, label %.lr.ph344.preheader

.lr.ph344.preheader:                              ; preds = %.lr.ph351
  %213 = add nuw i64 %211, 2305843009213693951
  %214 = mul i64 %38, %213
  %215 = shl i64 %212, 3
  %216 = add i64 %214, %212
  %217 = shl i64 %216, 3
  %scevgep381 = getelementptr i8, ptr %13, i64 %217
  %scevgep382 = getelementptr i8, ptr %10, i64 %215
  %218 = add nuw i64 %212, 1
  %min.iters.check389 = icmp ult i64 %212, 4
  %bound0383 = icmp ugt ptr %scevgep382, %13
  %bound1384 = icmp ugt ptr %scevgep381, %10
  %found.conflict385 = and i1 %bound0383, %bound1384
  %.mask418 = and i64 %38, 1152921504606846976
  %stride.check386 = icmp ne i64 %.mask418, 0
  %219 = or i1 %found.conflict385, %stride.check386
  %n.vec392 = and i64 %212, 9223372036854775804
  %ind.end393 = or disjoint i64 %n.vec392, 1
  %cmp.n403 = icmp eq i64 %212, %n.vec392
  br label %.lr.ph344

.thread369:                                       ; preds = %.lr.ph351
  store i64 %212, ptr %23, align 8, !tbaa !5
  br label %.lr.ph356

.lr.ph344:                                        ; preds = %.lr.ph344.preheader, %._crit_edge345
  %.4349 = phi i64 [ %255, %._crit_edge345 ], [ 1, %.lr.ph344.preheader ]
  %220 = mul nsw i64 %.4349, %38
  %invariant.gep346 = getelementptr double, ptr %40, i64 %220
  %brmerge438 = select i1 %min.iters.check389, i1 true, i1 %219
  br i1 %brmerge438, label %scalar.ph388.preheader, label %vector.body395

vector.body395:                                   ; preds = %.lr.ph344, %vector.body395
  %index396 = phi i64 [ %index.next402, %vector.body395 ], [ 0, %.lr.ph344 ]
  %offset.idx397 = or disjoint i64 %index396, 1
  %221 = getelementptr double, ptr %10, i64 %index396
  %222 = getelementptr inbounds i8, ptr %221, i64 16
  %wide.load398 = load <2 x double>, ptr %221, align 8, !tbaa !10, !alias.scope !28
  %wide.load399 = load <2 x double>, ptr %222, align 8, !tbaa !10, !alias.scope !28
  %223 = getelementptr double, ptr %invariant.gep346, i64 %offset.idx397
  %224 = getelementptr i8, ptr %223, i64 16
  %wide.load400 = load <2 x double>, ptr %223, align 8, !tbaa !10, !alias.scope !31, !noalias !28
  %wide.load401 = load <2 x double>, ptr %224, align 8, !tbaa !10, !alias.scope !31, !noalias !28
  %225 = fmul <2 x double> %wide.load398, %wide.load400
  %226 = fmul <2 x double> %wide.load399, %wide.load401
  store <2 x double> %225, ptr %223, align 8, !tbaa !10, !alias.scope !31, !noalias !28
  store <2 x double> %226, ptr %224, align 8, !tbaa !10, !alias.scope !31, !noalias !28
  %index.next402 = add nuw i64 %index396, 4
  %227 = icmp eq i64 %index.next402, %n.vec392
  br i1 %227, label %middle.block387, label %vector.body395, !llvm.loop !33

middle.block387:                                  ; preds = %vector.body395
  br i1 %cmp.n403, label %._crit_edge345, label %scalar.ph388.preheader

scalar.ph388.preheader:                           ; preds = %.lr.ph344, %middle.block387
  %.1271342.ph = phi i64 [ 1, %.lr.ph344 ], [ %ind.end393, %middle.block387 ]
  %228 = sub i64 %218, %.1271342.ph
  %229 = sub i64 %212, %.1271342.ph
  %xtraiter426 = and i64 %228, 3
  %lcmp.mod427.not = icmp eq i64 %xtraiter426, 0
  br i1 %lcmp.mod427.not, label %scalar.ph388.prol.loopexit, label %scalar.ph388.prol

scalar.ph388.prol:                                ; preds = %scalar.ph388.preheader, %scalar.ph388.prol
  %.1271342.prol = phi i64 [ %234, %scalar.ph388.prol ], [ %.1271342.ph, %scalar.ph388.preheader ]
  %prol.iter428 = phi i64 [ %prol.iter428.next, %scalar.ph388.prol ], [ 0, %scalar.ph388.preheader ]
  %230 = getelementptr inbounds double, ptr %34, i64 %.1271342.prol
  %231 = load double, ptr %230, align 8, !tbaa !10
  %gep347.prol = getelementptr double, ptr %invariant.gep346, i64 %.1271342.prol
  %232 = load double, ptr %gep347.prol, align 8, !tbaa !10
  %233 = fmul double %231, %232
  store double %233, ptr %gep347.prol, align 8, !tbaa !10
  %234 = add nuw i64 %.1271342.prol, 1
  %prol.iter428.next = add i64 %prol.iter428, 1
  %prol.iter428.cmp.not = icmp eq i64 %prol.iter428.next, %xtraiter426
  br i1 %prol.iter428.cmp.not, label %scalar.ph388.prol.loopexit, label %scalar.ph388.prol, !llvm.loop !34

scalar.ph388.prol.loopexit:                       ; preds = %scalar.ph388.prol, %scalar.ph388.preheader
  %.1271342.unr = phi i64 [ %.1271342.ph, %scalar.ph388.preheader ], [ %234, %scalar.ph388.prol ]
  %235 = icmp ult i64 %229, 3
  br i1 %235, label %._crit_edge345, label %scalar.ph388.preheader.new

scalar.ph388.preheader.new:                       ; preds = %scalar.ph388.prol.loopexit
  %invariant.gep436 = getelementptr i8, ptr %invariant.gep346, i64 8
  br label %scalar.ph388

scalar.ph388:                                     ; preds = %scalar.ph388, %scalar.ph388.preheader.new
  %.1271342 = phi i64 [ %.1271342.unr, %scalar.ph388.preheader.new ], [ %254, %scalar.ph388 ]
  %236 = getelementptr inbounds double, ptr %34, i64 %.1271342
  %237 = load double, ptr %236, align 8, !tbaa !10
  %gep347 = getelementptr double, ptr %invariant.gep346, i64 %.1271342
  %238 = load double, ptr %gep347, align 8, !tbaa !10
  %239 = fmul double %237, %238
  store double %239, ptr %gep347, align 8, !tbaa !10
  %240 = getelementptr double, ptr %10, i64 %.1271342
  %241 = load double, ptr %240, align 8, !tbaa !10
  %gep437 = getelementptr double, ptr %invariant.gep436, i64 %.1271342
  %242 = load double, ptr %gep437, align 8, !tbaa !10
  %243 = fmul double %241, %242
  store double %243, ptr %gep437, align 8, !tbaa !10
  %244 = add nuw i64 %.1271342, 2
  %245 = getelementptr inbounds double, ptr %34, i64 %244
  %246 = load double, ptr %245, align 8, !tbaa !10
  %gep347.2 = getelementptr double, ptr %invariant.gep346, i64 %244
  %247 = load double, ptr %gep347.2, align 8, !tbaa !10
  %248 = fmul double %246, %247
  store double %248, ptr %gep347.2, align 8, !tbaa !10
  %249 = add nuw i64 %.1271342, 3
  %250 = getelementptr inbounds double, ptr %34, i64 %249
  %251 = load double, ptr %250, align 8, !tbaa !10
  %gep347.3 = getelementptr double, ptr %invariant.gep346, i64 %249
  %252 = load double, ptr %gep347.3, align 8, !tbaa !10
  %253 = fmul double %251, %252
  store double %253, ptr %gep347.3, align 8, !tbaa !10
  %254 = add nuw i64 %.1271342, 4
  %exitcond365.not.3 = icmp eq i64 %249, %212
  br i1 %exitcond365.not.3, label %._crit_edge345, label %scalar.ph388, !llvm.loop !35

._crit_edge345:                                   ; preds = %scalar.ph388.prol.loopexit, %scalar.ph388, %middle.block387
  %255 = add nuw i64 %.4349, 1
  %exitcond366.not = icmp eq i64 %.4349, %211
  br i1 %exitcond366.not, label %256, label %.lr.ph344, !llvm.loop !36

256:                                              ; preds = %._crit_edge345
  store i64 %212, ptr %23, align 8, !tbaa !5
  br i1 %.not292348, label %.loopexit, label %.lr.ph356

.lr.ph356:                                        ; preds = %.thread369, %256
  %257 = load double, ptr %25, align 8, !tbaa !10
  %min.iters.check406 = icmp eq i64 %211, 1
  br i1 %min.iters.check406, label %scalar.ph405.preheader, label %vector.ph407

vector.ph407:                                     ; preds = %.lr.ph356
  %n.vec409 = and i64 %211, 9223372036854775806
  %ind.end410 = or i64 %211, 1
  %broadcast.splatinsert = insertelement <2 x double> poison, double %257, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body412

vector.body412:                                   ; preds = %vector.body412, %vector.ph407
  %index413 = phi i64 [ 0, %vector.ph407 ], [ %index.next416, %vector.body412 ]
  %258 = getelementptr double, ptr %16, i64 %index413
  %wide.load415 = load <2 x double>, ptr %258, align 8, !tbaa !10
  %259 = fdiv <2 x double> %wide.load415, %broadcast.splat
  store <2 x double> %259, ptr %258, align 8, !tbaa !10
  %index.next416 = add nuw i64 %index413, 2
  %260 = icmp eq i64 %index.next416, %n.vec409
  br i1 %260, label %middle.block404, label %vector.body412, !llvm.loop !37

middle.block404:                                  ; preds = %vector.body412
  %cmp.n417 = icmp eq i64 %211, %n.vec409
  br i1 %cmp.n417, label %.loopexit, label %scalar.ph405.preheader

scalar.ph405.preheader:                           ; preds = %middle.block404, %.lr.ph356
  %.5354.ph = phi i64 [ 1, %.lr.ph356 ], [ %ind.end410, %middle.block404 ]
  br label %scalar.ph405

scalar.ph405:                                     ; preds = %scalar.ph405.preheader, %scalar.ph405
  %.5354 = phi i64 [ %264, %scalar.ph405 ], [ %.5354.ph, %scalar.ph405.preheader ]
  %261 = getelementptr inbounds double, ptr %41, i64 %.5354
  %262 = load double, ptr %261, align 8, !tbaa !10
  %263 = fdiv double %262, %257
  store double %263, ptr %261, align 8, !tbaa !10
  %264 = add nuw i64 %.5354, 1
  %exitcond367.not = icmp eq i64 %.5354, %211
  br i1 %exitcond367.not, label %.loopexit, label %scalar.ph405, !llvm.loop !38

.loopexit:                                        ; preds = %scalar.ph405, %middle.block404, %210, %256, %204
  %265 = load double, ptr %15, align 8, !tbaa !10
  %266 = call double @dlamch_(ptr noundef nonnull @.str.10) #4
  %267 = fcmp olt double %265, %266
  br i1 %267, label %268, label %271

268:                                              ; preds = %.loopexit
  %269 = load i64, ptr %2, align 8, !tbaa !5
  %270 = add nsw i64 %269, 1
  store i64 %270, ptr %20, align 8, !tbaa !5
  br label %271

271:                                              ; preds = %.loopexit, %268, %203, %.thread308
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #4
  ret i32 0
}

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

declare i32 @dpbcon_(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 i32 @dlacpy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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 = { 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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"double", !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = !{!15}
!15 = distinct !{!15, !16}
!16 = distinct !{!16, !"LVerDomain"}
!17 = !{!18}
!18 = distinct !{!18, !16}
!19 = distinct !{!19, !13, !20, !21}
!20 = !{!"llvm.loop.isvectorized", i32 1}
!21 = !{!"llvm.loop.unroll.runtime.disable"}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.unroll.disable"}
!24 = distinct !{!24, !13, !20}
!25 = distinct !{!25, !13}
!26 = distinct !{!26, !13}
!27 = distinct !{!27, !13}
!28 = !{!29}
!29 = distinct !{!29, !30}
!30 = distinct !{!30, !"LVerDomain"}
!31 = !{!32}
!32 = distinct !{!32, !30}
!33 = distinct !{!33, !13, !20, !21}
!34 = distinct !{!34, !23}
!35 = distinct !{!35, !13, !20}
!36 = distinct !{!36, !13}
!37 = distinct !{!37, !13, !20, !21}
!38 = distinct !{!38, !13, !21, !20}


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