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

131:                                              ; preds = %21
  %132 = load i32, ptr %62, align 4, !tbaa !9
  %133 = icmp ne i32 %132, 0
  br i1 %133, label %134, label %136

134:                                              ; preds = %131, %21
  %135 = load ptr, ptr %31, align 8, !tbaa !5
  store i8 78, ptr %135, align 1, !tbaa !11
  store i32 0, ptr %63, align 4, !tbaa !9
  br label %142

136:                                              ; preds = %131
  %137 = load ptr, ptr %31, align 8, !tbaa !5
  %138 = call i32 @lsame_(ptr noundef %137, ptr noundef @.str.3)
  store i32 %138, ptr %63, align 4, !tbaa !9
  %139 = call double @dlamch_(ptr noundef @.str.4)
  store double %139, ptr %70, align 8, !tbaa !12
  %140 = load double, ptr %70, align 8, !tbaa !12
  %141 = fdiv double 1.000000e+00, %140
  store double %141, ptr %68, align 8, !tbaa !12
  br label %142

142:                                              ; preds = %136, %134
  %143 = load i32, ptr %67, align 4, !tbaa !9
  %144 = icmp ne i32 %143, 0
  br i1 %144, label %154, label %145

145:                                              ; preds = %142
  %146 = load i32, ptr %62, align 4, !tbaa !9
  %147 = icmp ne i32 %146, 0
  br i1 %147, label %154, label %148

148:                                              ; preds = %145
  %149 = load ptr, ptr %22, align 8, !tbaa !5
  %150 = call i32 @lsame_(ptr noundef %149, ptr noundef @.str.5)
  %151 = icmp ne i32 %150, 0
  br i1 %151, label %154, label %152

152:                                              ; preds = %148
  %153 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -1, ptr %153, align 4, !tbaa !9
  br label %333

154:                                              ; preds = %148, %145, %142
  %155 = load i32, ptr %64, align 4, !tbaa !9
  %156 = icmp ne i32 %155, 0
  br i1 %156, label %163, label %157

157:                                              ; preds = %154
  %158 = load ptr, ptr %23, align 8, !tbaa !5
  %159 = call i32 @lsame_(ptr noundef %158, ptr noundef @.str.6)
  %160 = icmp ne i32 %159, 0
  br i1 %160, label %163, label %161

161:                                              ; preds = %157
  %162 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -2, ptr %162, align 4, !tbaa !9
  br label %332

163:                                              ; preds = %157, %154
  %164 = load ptr, ptr %24, align 8, !tbaa !5
  %165 = load i32, ptr %164, align 4, !tbaa !9
  %166 = icmp slt i32 %165, 0
  br i1 %166, label %167, label %169

167:                                              ; preds = %163
  %168 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -3, ptr %168, align 4, !tbaa !9
  br label %331

169:                                              ; preds = %163
  %170 = load ptr, ptr %25, align 8, !tbaa !5
  %171 = load i32, ptr %170, align 4, !tbaa !9
  %172 = icmp slt i32 %171, 0
  br i1 %172, label %173, label %175

173:                                              ; preds = %169
  %174 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -4, ptr %174, align 4, !tbaa !9
  br label %330

175:                                              ; preds = %169
  %176 = load ptr, ptr %26, align 8, !tbaa !5
  %177 = load i32, ptr %176, align 4, !tbaa !9
  %178 = icmp slt i32 %177, 0
  br i1 %178, label %179, label %181

179:                                              ; preds = %175
  %180 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -5, ptr %180, align 4, !tbaa !9
  br label %329

181:                                              ; preds = %175
  %182 = load ptr, ptr %28, align 8, !tbaa !5
  %183 = load i32, ptr %182, align 4, !tbaa !9
  %184 = load ptr, ptr %25, align 8, !tbaa !5
  %185 = load i32, ptr %184, align 4, !tbaa !9
  %186 = add nsw i32 %185, 1
  %187 = icmp slt i32 %183, %186
  br i1 %187, label %188, label %190

188:                                              ; preds = %181
  %189 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -7, ptr %189, align 4, !tbaa !9
  br label %328

190:                                              ; preds = %181
  %191 = load ptr, ptr %30, align 8, !tbaa !5
  %192 = load i32, ptr %191, align 4, !tbaa !9
  %193 = load ptr, ptr %25, align 8, !tbaa !5
  %194 = load i32, ptr %193, align 4, !tbaa !9
  %195 = add nsw i32 %194, 1
  %196 = icmp slt i32 %192, %195
  br i1 %196, label %197, label %199

197:                                              ; preds = %190
  %198 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -9, ptr %198, align 4, !tbaa !9
  br label %327

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

203:                                              ; preds = %199
  %204 = load i32, ptr %63, align 4, !tbaa !9
  %205 = icmp ne i32 %204, 0
  br i1 %205, label %212, label %206

206:                                              ; preds = %203
  %207 = load ptr, ptr %31, align 8, !tbaa !5
  %208 = call i32 @lsame_(ptr noundef %207, ptr noundef @.str)
  %209 = icmp ne i32 %208, 0
  br i1 %209, label %212, label %210

210:                                              ; preds = %206
  %211 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -10, ptr %211, align 4, !tbaa !9
  br label %326

212:                                              ; preds = %206, %203, %199
  %213 = load i32, ptr %63, align 4, !tbaa !9
  %214 = icmp ne i32 %213, 0
  br i1 %214, label %215, label %289

215:                                              ; preds = %212
  %216 = load double, ptr %68, align 8, !tbaa !12
  store double %216, ptr %56, align 8, !tbaa !12
  store double 0.000000e+00, ptr %57, align 8, !tbaa !12
  %217 = load ptr, ptr %24, align 8, !tbaa !5
  %218 = load i32, ptr %217, align 4, !tbaa !9
  store i32 %218, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %219

219:                                              ; preds = %254, %215
  %220 = load i32, ptr %59, align 4, !tbaa !9
  %221 = load i32, ptr %51, align 4, !tbaa !9
  %222 = icmp sle i32 %220, %221
  br i1 %222, label %223, label %257

223:                                              ; preds = %219
  %224 = load double, ptr %56, align 8, !tbaa !12
  store double %224, ptr %53, align 8, !tbaa !12
  %225 = load ptr, ptr %32, align 8, !tbaa !5
  %226 = load i32, ptr %59, align 4, !tbaa !9
  %227 = sext i32 %226 to i64
  %228 = getelementptr inbounds double, ptr %225, i64 %227
  %229 = load double, ptr %228, align 8, !tbaa !12
  store double %229, ptr %54, align 8, !tbaa !12
  %230 = load double, ptr %53, align 8, !tbaa !12
  %231 = load double, ptr %54, align 8, !tbaa !12
  %232 = fcmp ole double %230, %231
  br i1 %232, label %233, label %235

233:                                              ; preds = %223
  %234 = load double, ptr %53, align 8, !tbaa !12
  br label %237

235:                                              ; preds = %223
  %236 = load double, ptr %54, align 8, !tbaa !12
  br label %237

237:                                              ; preds = %235, %233
  %238 = phi double [ %234, %233 ], [ %236, %235 ]
  store double %238, ptr %56, align 8, !tbaa !12
  %239 = load double, ptr %57, align 8, !tbaa !12
  store double %239, ptr %53, align 8, !tbaa !12
  %240 = load ptr, ptr %32, align 8, !tbaa !5
  %241 = load i32, ptr %59, align 4, !tbaa !9
  %242 = sext i32 %241 to i64
  %243 = getelementptr inbounds double, ptr %240, i64 %242
  %244 = load double, ptr %243, align 8, !tbaa !12
  store double %244, ptr %54, align 8, !tbaa !12
  %245 = load double, ptr %53, align 8, !tbaa !12
  %246 = load double, ptr %54, align 8, !tbaa !12
  %247 = fcmp oge double %245, %246
  br i1 %247, label %248, label %250

248:                                              ; preds = %237
  %249 = load double, ptr %53, align 8, !tbaa !12
  br label %252

250:                                              ; preds = %237
  %251 = load double, ptr %54, align 8, !tbaa !12
  br label %252

252:                                              ; preds = %250, %248
  %253 = phi double [ %249, %248 ], [ %251, %250 ]
  store double %253, ptr %57, align 8, !tbaa !12
  br label %254

254:                                              ; preds = %252
  %255 = load i32, ptr %59, align 4, !tbaa !9
  %256 = add nsw i32 %255, 1
  store i32 %256, ptr %59, align 4, !tbaa !9
  br label %219, !llvm.loop !14

257:                                              ; preds = %219
  %258 = load double, ptr %56, align 8, !tbaa !12
  %259 = fcmp ole double %258, 0.000000e+00
  br i1 %259, label %260, label %262

260:                                              ; preds = %257
  %261 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -11, ptr %261, align 4, !tbaa !9
  br label %288

262:                                              ; preds = %257
  %263 = load ptr, ptr %24, align 8, !tbaa !5
  %264 = load i32, ptr %263, align 4, !tbaa !9
  %265 = icmp sgt i32 %264, 0
  br i1 %265, label %266, label %286

266:                                              ; preds = %262
  %267 = load double, ptr %56, align 8, !tbaa !12
  %268 = load double, ptr %70, align 8, !tbaa !12
  %269 = fcmp oge double %267, %268
  br i1 %269, label %270, label %272

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

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

274:                                              ; preds = %272, %270
  %275 = phi double [ %271, %270 ], [ %273, %272 ]
  %276 = load double, ptr %57, align 8, !tbaa !12
  %277 = load double, ptr %68, align 8, !tbaa !12
  %278 = fcmp ole double %276, %277
  br i1 %278, label %279, label %281

279:                                              ; preds = %274
  %280 = load double, ptr %57, align 8, !tbaa !12
  br label %283

281:                                              ; preds = %274
  %282 = load double, ptr %68, align 8, !tbaa !12
  br label %283

283:                                              ; preds = %281, %279
  %284 = phi double [ %280, %279 ], [ %282, %281 ]
  %285 = fdiv double %275, %284
  store double %285, ptr %60, align 8, !tbaa !12
  br label %287

286:                                              ; preds = %262
  store double 1.000000e+00, ptr %60, align 8, !tbaa !12
  br label %287

287:                                              ; preds = %286, %283
  br label %288

288:                                              ; preds = %287, %260
  br label %289

289:                                              ; preds = %288, %212
  %290 = load ptr, ptr %42, align 8, !tbaa !5
  %291 = load i32, ptr %290, align 4, !tbaa !9
  %292 = icmp eq i32 %291, 0
  br i1 %292, label %293, label %325

293:                                              ; preds = %289
  %294 = load ptr, ptr %34, align 8, !tbaa !5
  %295 = load i32, ptr %294, align 4, !tbaa !9
  %296 = load ptr, ptr %24, align 8, !tbaa !5
  %297 = load i32, ptr %296, align 4, !tbaa !9
  %298 = icmp sge i32 1, %297
  br i1 %298, label %299, label %300

299:                                              ; preds = %293
  br label %303

300:                                              ; preds = %293
  %301 = load ptr, ptr %24, align 8, !tbaa !5
  %302 = load i32, ptr %301, align 4, !tbaa !9
  br label %303

303:                                              ; preds = %300, %299
  %304 = phi i32 [ 1, %299 ], [ %302, %300 ]
  %305 = icmp slt i32 %295, %304
  br i1 %305, label %306, label %308

306:                                              ; preds = %303
  %307 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -13, ptr %307, align 4, !tbaa !9
  br label %324

308:                                              ; preds = %303
  %309 = load ptr, ptr %36, align 8, !tbaa !5
  %310 = load i32, ptr %309, align 4, !tbaa !9
  %311 = load ptr, ptr %24, align 8, !tbaa !5
  %312 = load i32, ptr %311, align 4, !tbaa !9
  %313 = icmp sge i32 1, %312
  br i1 %313, label %314, label %315

314:                                              ; preds = %308
  br label %318

315:                                              ; preds = %308
  %316 = load ptr, ptr %24, align 8, !tbaa !5
  %317 = load i32, ptr %316, align 4, !tbaa !9
  br label %318

318:                                              ; preds = %315, %314
  %319 = phi i32 [ 1, %314 ], [ %317, %315 ]
  %320 = icmp slt i32 %310, %319
  br i1 %320, label %321, label %323

321:                                              ; preds = %318
  %322 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -15, ptr %322, align 4, !tbaa !9
  br label %323

323:                                              ; preds = %321, %318
  br label %324

324:                                              ; preds = %323, %306
  br label %325

325:                                              ; preds = %324, %289
  br label %326

326:                                              ; preds = %325, %210
  br label %327

327:                                              ; preds = %326, %197
  br label %328

328:                                              ; preds = %327, %188
  br label %329

329:                                              ; preds = %328, %179
  br label %330

330:                                              ; preds = %329, %173
  br label %331

331:                                              ; preds = %330, %167
  br label %332

332:                                              ; preds = %331, %161
  br label %333

333:                                              ; preds = %332, %152
  %334 = load ptr, ptr %42, align 8, !tbaa !5
  %335 = load i32, ptr %334, align 4, !tbaa !9
  %336 = icmp ne i32 %335, 0
  br i1 %336, label %337, label %342

337:                                              ; preds = %333
  %338 = load ptr, ptr %42, align 8, !tbaa !5
  %339 = load i32, ptr %338, align 4, !tbaa !9
  %340 = sub nsw i32 0, %339
  store i32 %340, ptr %51, align 4, !tbaa !9
  %341 = call i32 @xerbla_(ptr noundef @.str.7, ptr noundef %51, i32 noundef 6)
  store i32 1, ptr %71, align 4
  br label %710

342:                                              ; preds = %333
  %343 = load i32, ptr %62, align 4, !tbaa !9
  %344 = icmp ne i32 %343, 0
  br i1 %344, label %345, label %373

345:                                              ; preds = %342
  %346 = load ptr, ptr %23, align 8, !tbaa !5
  %347 = load ptr, ptr %24, align 8, !tbaa !5
  %348 = load ptr, ptr %25, align 8, !tbaa !5
  %349 = load ptr, ptr %27, align 8, !tbaa !5
  %350 = load i32, ptr %44, align 4, !tbaa !9
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds double, ptr %349, i64 %351
  %353 = load ptr, ptr %28, align 8, !tbaa !5
  %354 = load ptr, ptr %32, align 8, !tbaa !5
  %355 = getelementptr inbounds double, ptr %354, i64 1
  call void @dpbequ_(ptr noundef %346, ptr noundef %347, ptr noundef %348, ptr noundef %352, ptr noundef %353, ptr noundef %355, ptr noundef %60, ptr noundef %55, ptr noundef %69)
  %356 = load i32, ptr %69, align 4, !tbaa !9
  %357 = icmp eq i32 %356, 0
  br i1 %357, label %358, label %372

358:                                              ; preds = %345
  %359 = load ptr, ptr %23, align 8, !tbaa !5
  %360 = load ptr, ptr %24, align 8, !tbaa !5
  %361 = load ptr, ptr %25, align 8, !tbaa !5
  %362 = load ptr, ptr %27, align 8, !tbaa !5
  %363 = load i32, ptr %44, align 4, !tbaa !9
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds double, ptr %362, i64 %364
  %366 = load ptr, ptr %28, align 8, !tbaa !5
  %367 = load ptr, ptr %32, align 8, !tbaa !5
  %368 = getelementptr inbounds double, ptr %367, i64 1
  %369 = load ptr, ptr %31, align 8, !tbaa !5
  call void @dlaqsb_(ptr noundef %359, ptr noundef %360, ptr noundef %361, ptr noundef %365, ptr noundef %366, ptr noundef %368, ptr noundef %60, ptr noundef %55, ptr noundef %369)
  %370 = load ptr, ptr %31, align 8, !tbaa !5
  %371 = call i32 @lsame_(ptr noundef %370, ptr noundef @.str.3)
  store i32 %371, ptr %63, align 4, !tbaa !9
  br label %372

372:                                              ; preds = %358, %345
  br label %373

373:                                              ; preds = %372, %342
  %374 = load i32, ptr %63, align 4, !tbaa !9
  %375 = icmp ne i32 %374, 0
  br i1 %375, label %376, label %422

376:                                              ; preds = %373
  %377 = load ptr, ptr %26, align 8, !tbaa !5
  %378 = load i32, ptr %377, align 4, !tbaa !9
  store i32 %378, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %379

379:                                              ; preds = %418, %376
  %380 = load i32, ptr %59, align 4, !tbaa !9
  %381 = load i32, ptr %51, align 4, !tbaa !9
  %382 = icmp sle i32 %380, %381
  br i1 %382, label %383, label %421

383:                                              ; preds = %379
  %384 = load ptr, ptr %24, align 8, !tbaa !5
  %385 = load i32, ptr %384, align 4, !tbaa !9
  store i32 %385, ptr %52, align 4, !tbaa !9
  store i32 1, ptr %58, align 4, !tbaa !9
  br label %386

386:                                              ; preds = %414, %383
  %387 = load i32, ptr %58, align 4, !tbaa !9
  %388 = load i32, ptr %52, align 4, !tbaa !9
  %389 = icmp sle i32 %387, %388
  br i1 %389, label %390, label %417

390:                                              ; preds = %386
  %391 = load ptr, ptr %32, align 8, !tbaa !5
  %392 = load i32, ptr %58, align 4, !tbaa !9
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds double, ptr %391, i64 %393
  %395 = load double, ptr %394, align 8, !tbaa !12
  %396 = load ptr, ptr %33, align 8, !tbaa !5
  %397 = load i32, ptr %58, align 4, !tbaa !9
  %398 = load i32, ptr %59, align 4, !tbaa !9
  %399 = load i32, ptr %47, align 4, !tbaa !9
  %400 = mul nsw i32 %398, %399
  %401 = add nsw i32 %397, %400
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds double, ptr %396, i64 %402
  %404 = load double, ptr %403, align 8, !tbaa !12
  %405 = fmul double %395, %404
  %406 = load ptr, ptr %33, align 8, !tbaa !5
  %407 = load i32, ptr %58, align 4, !tbaa !9
  %408 = load i32, ptr %59, align 4, !tbaa !9
  %409 = load i32, ptr %47, align 4, !tbaa !9
  %410 = mul nsw i32 %408, %409
  %411 = add nsw i32 %407, %410
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds double, ptr %406, i64 %412
  store double %405, ptr %413, align 8, !tbaa !12
  br label %414

414:                                              ; preds = %390
  %415 = load i32, ptr %58, align 4, !tbaa !9
  %416 = add nsw i32 %415, 1
  store i32 %416, ptr %58, align 4, !tbaa !9
  br label %386, !llvm.loop !16

417:                                              ; preds = %386
  br label %418

418:                                              ; preds = %417
  %419 = load i32, ptr %59, align 4, !tbaa !9
  %420 = add nsw i32 %419, 1
  store i32 %420, ptr %59, align 4, !tbaa !9
  br label %379, !llvm.loop !17

421:                                              ; preds = %379
  br label %422

422:                                              ; preds = %421, %373
  %423 = load i32, ptr %67, align 4, !tbaa !9
  %424 = icmp ne i32 %423, 0
  br i1 %424, label %428, label %425

425:                                              ; preds = %422
  %426 = load i32, ptr %62, align 4, !tbaa !9
  %427 = icmp ne i32 %426, 0
  br i1 %427, label %428, label %547

428:                                              ; preds = %425, %422
  %429 = load i32, ptr %64, align 4, !tbaa !9
  %430 = icmp ne i32 %429, 0
  br i1 %430, label %431, label %486

431:                                              ; preds = %428
  %432 = load ptr, ptr %24, align 8, !tbaa !5
  %433 = load i32, ptr %432, align 4, !tbaa !9
  store i32 %433, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %434

434:                                              ; preds = %482, %431
  %435 = load i32, ptr %59, align 4, !tbaa !9
  %436 = load i32, ptr %51, align 4, !tbaa !9
  %437 = icmp sle i32 %435, %436
  br i1 %437, label %438, label %485

438:                                              ; preds = %434
  %439 = load i32, ptr %59, align 4, !tbaa !9
  %440 = load ptr, ptr %25, align 8, !tbaa !5
  %441 = load i32, ptr %440, align 4, !tbaa !9
  %442 = sub nsw i32 %439, %441
  store i32 %442, ptr %52, align 4, !tbaa !9
  %443 = load i32, ptr %52, align 4, !tbaa !9
  %444 = icmp sge i32 %443, 1
  br i1 %444, label %445, label %447

445:                                              ; preds = %438
  %446 = load i32, ptr %52, align 4, !tbaa !9
  br label %448

447:                                              ; preds = %438
  br label %448

448:                                              ; preds = %447, %445
  %449 = phi i32 [ %446, %445 ], [ 1, %447 ]
  store i32 %449, ptr %65, align 4, !tbaa !9
  %450 = load i32, ptr %59, align 4, !tbaa !9
  %451 = load i32, ptr %65, align 4, !tbaa !9
  %452 = sub nsw i32 %450, %451
  %453 = add nsw i32 %452, 1
  store i32 %453, ptr %52, align 4, !tbaa !9
  %454 = load ptr, ptr %27, align 8, !tbaa !5
  %455 = load ptr, ptr %25, align 8, !tbaa !5
  %456 = load i32, ptr %455, align 4, !tbaa !9
  %457 = add nsw i32 %456, 1
  %458 = load i32, ptr %59, align 4, !tbaa !9
  %459 = sub nsw i32 %457, %458
  %460 = load i32, ptr %65, align 4, !tbaa !9
  %461 = add nsw i32 %459, %460
  %462 = load i32, ptr %59, align 4, !tbaa !9
  %463 = load i32, ptr %43, align 4, !tbaa !9
  %464 = mul nsw i32 %462, %463
  %465 = add nsw i32 %461, %464
  %466 = sext i32 %465 to i64
  %467 = getelementptr inbounds double, ptr %454, i64 %466
  %468 = load ptr, ptr %29, align 8, !tbaa !5
  %469 = load ptr, ptr %25, align 8, !tbaa !5
  %470 = load i32, ptr %469, align 4, !tbaa !9
  %471 = add nsw i32 %470, 1
  %472 = load i32, ptr %59, align 4, !tbaa !9
  %473 = sub nsw i32 %471, %472
  %474 = load i32, ptr %65, align 4, !tbaa !9
  %475 = add nsw i32 %473, %474
  %476 = load i32, ptr %59, align 4, !tbaa !9
  %477 = load i32, ptr %45, align 4, !tbaa !9
  %478 = mul nsw i32 %476, %477
  %479 = add nsw i32 %475, %478
  %480 = sext i32 %479 to i64
  %481 = getelementptr inbounds double, ptr %468, i64 %480
  call void @dcopy_(ptr noundef %52, ptr noundef %467, ptr noundef @c__1, ptr noundef %481, ptr noundef @c__1)
  br label %482

482:                                              ; preds = %448
  %483 = load i32, ptr %59, align 4, !tbaa !9
  %484 = add nsw i32 %483, 1
  store i32 %484, ptr %59, align 4, !tbaa !9
  br label %434, !llvm.loop !18

485:                                              ; preds = %434
  br label %531

486:                                              ; preds = %428
  %487 = load ptr, ptr %24, align 8, !tbaa !5
  %488 = load i32, ptr %487, align 4, !tbaa !9
  store i32 %488, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %489

489:                                              ; preds = %527, %486
  %490 = load i32, ptr %59, align 4, !tbaa !9
  %491 = load i32, ptr %51, align 4, !tbaa !9
  %492 = icmp sle i32 %490, %491
  br i1 %492, label %493, label %530

493:                                              ; preds = %489
  %494 = load i32, ptr %59, align 4, !tbaa !9
  %495 = load ptr, ptr %25, align 8, !tbaa !5
  %496 = load i32, ptr %495, align 4, !tbaa !9
  %497 = add nsw i32 %494, %496
  store i32 %497, ptr %52, align 4, !tbaa !9
  %498 = load i32, ptr %52, align 4, !tbaa !9
  %499 = load ptr, ptr %24, align 8, !tbaa !5
  %500 = load i32, ptr %499, align 4, !tbaa !9
  %501 = icmp sle i32 %498, %500
  br i1 %501, label %502, label %504

502:                                              ; preds = %493
  %503 = load i32, ptr %52, align 4, !tbaa !9
  br label %507

504:                                              ; preds = %493
  %505 = load ptr, ptr %24, align 8, !tbaa !5
  %506 = load i32, ptr %505, align 4, !tbaa !9
  br label %507

507:                                              ; preds = %504, %502
  %508 = phi i32 [ %503, %502 ], [ %506, %504 ]
  store i32 %508, ptr %66, align 4, !tbaa !9
  %509 = load i32, ptr %66, align 4, !tbaa !9
  %510 = load i32, ptr %59, align 4, !tbaa !9
  %511 = sub nsw i32 %509, %510
  %512 = add nsw i32 %511, 1
  store i32 %512, ptr %52, align 4, !tbaa !9
  %513 = load ptr, ptr %27, align 8, !tbaa !5
  %514 = load i32, ptr %59, align 4, !tbaa !9
  %515 = load i32, ptr %43, align 4, !tbaa !9
  %516 = mul nsw i32 %514, %515
  %517 = add nsw i32 %516, 1
  %518 = sext i32 %517 to i64
  %519 = getelementptr inbounds double, ptr %513, i64 %518
  %520 = load ptr, ptr %29, align 8, !tbaa !5
  %521 = load i32, ptr %59, align 4, !tbaa !9
  %522 = load i32, ptr %45, align 4, !tbaa !9
  %523 = mul nsw i32 %521, %522
  %524 = add nsw i32 %523, 1
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds double, ptr %520, i64 %525
  call void @dcopy_(ptr noundef %52, ptr noundef %519, ptr noundef @c__1, ptr noundef %526, ptr noundef @c__1)
  br label %527

527:                                              ; preds = %507
  %528 = load i32, ptr %59, align 4, !tbaa !9
  %529 = add nsw i32 %528, 1
  store i32 %529, ptr %59, align 4, !tbaa !9
  br label %489, !llvm.loop !19

530:                                              ; preds = %489
  br label %531

531:                                              ; preds = %530, %485
  %532 = load ptr, ptr %23, align 8, !tbaa !5
  %533 = load ptr, ptr %24, align 8, !tbaa !5
  %534 = load ptr, ptr %25, align 8, !tbaa !5
  %535 = load ptr, ptr %29, align 8, !tbaa !5
  %536 = load i32, ptr %46, align 4, !tbaa !9
  %537 = sext i32 %536 to i64
  %538 = getelementptr inbounds double, ptr %535, i64 %537
  %539 = load ptr, ptr %30, align 8, !tbaa !5
  %540 = load ptr, ptr %42, align 8, !tbaa !5
  call void @dpbtrf_(ptr noundef %532, ptr noundef %533, ptr noundef %534, ptr noundef %538, ptr noundef %539, ptr noundef %540)
  %541 = load ptr, ptr %42, align 8, !tbaa !5
  %542 = load i32, ptr %541, align 4, !tbaa !9
  %543 = icmp sgt i32 %542, 0
  br i1 %543, label %544, label %546

544:                                              ; preds = %531
  %545 = load ptr, ptr %37, align 8, !tbaa !5
  store double 0.000000e+00, ptr %545, align 8, !tbaa !12
  store i32 1, ptr %71, align 4
  br label %710

546:                                              ; preds = %531
  br label %547

547:                                              ; preds = %546, %425
  %548 = load ptr, ptr %23, align 8, !tbaa !5
  %549 = load ptr, ptr %24, align 8, !tbaa !5
  %550 = load ptr, ptr %25, align 8, !tbaa !5
  %551 = load ptr, ptr %27, align 8, !tbaa !5
  %552 = load i32, ptr %44, align 4, !tbaa !9
  %553 = sext i32 %552 to i64
  %554 = getelementptr inbounds double, ptr %551, i64 %553
  %555 = load ptr, ptr %28, align 8, !tbaa !5
  %556 = load ptr, ptr %40, align 8, !tbaa !5
  %557 = getelementptr inbounds double, ptr %556, i64 1
  %558 = call double @dlansb_(ptr noundef @.str.8, ptr noundef %548, ptr noundef %549, ptr noundef %550, ptr noundef %554, ptr noundef %555, ptr noundef %557)
  store double %558, ptr %61, align 8, !tbaa !12
  %559 = load ptr, ptr %23, align 8, !tbaa !5
  %560 = load ptr, ptr %24, align 8, !tbaa !5
  %561 = load ptr, ptr %25, align 8, !tbaa !5
  %562 = load ptr, ptr %29, align 8, !tbaa !5
  %563 = load i32, ptr %46, align 4, !tbaa !9
  %564 = sext i32 %563 to i64
  %565 = getelementptr inbounds double, ptr %562, i64 %564
  %566 = load ptr, ptr %30, align 8, !tbaa !5
  %567 = load ptr, ptr %37, align 8, !tbaa !5
  %568 = load ptr, ptr %40, align 8, !tbaa !5
  %569 = getelementptr inbounds double, ptr %568, i64 1
  %570 = load ptr, ptr %41, align 8, !tbaa !5
  %571 = getelementptr inbounds i32, ptr %570, i64 1
  %572 = load ptr, ptr %42, align 8, !tbaa !5
  call void @dpbcon_(ptr noundef %559, ptr noundef %560, ptr noundef %561, ptr noundef %565, ptr noundef %566, ptr noundef %61, ptr noundef %567, ptr noundef %569, ptr noundef %571, ptr noundef %572)
  %573 = load ptr, ptr %24, align 8, !tbaa !5
  %574 = load ptr, ptr %26, align 8, !tbaa !5
  %575 = load ptr, ptr %33, align 8, !tbaa !5
  %576 = load i32, ptr %48, align 4, !tbaa !9
  %577 = sext i32 %576 to i64
  %578 = getelementptr inbounds double, ptr %575, i64 %577
  %579 = load ptr, ptr %34, align 8, !tbaa !5
  %580 = load ptr, ptr %35, align 8, !tbaa !5
  %581 = load i32, ptr %50, align 4, !tbaa !9
  %582 = sext i32 %581 to i64
  %583 = getelementptr inbounds double, ptr %580, i64 %582
  %584 = load ptr, ptr %36, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.9, ptr noundef %573, ptr noundef %574, ptr noundef %578, ptr noundef %579, ptr noundef %583, ptr noundef %584)
  %585 = load ptr, ptr %23, align 8, !tbaa !5
  %586 = load ptr, ptr %24, align 8, !tbaa !5
  %587 = load ptr, ptr %25, align 8, !tbaa !5
  %588 = load ptr, ptr %26, align 8, !tbaa !5
  %589 = load ptr, ptr %29, align 8, !tbaa !5
  %590 = load i32, ptr %46, align 4, !tbaa !9
  %591 = sext i32 %590 to i64
  %592 = getelementptr inbounds double, ptr %589, i64 %591
  %593 = load ptr, ptr %30, align 8, !tbaa !5
  %594 = load ptr, ptr %35, align 8, !tbaa !5
  %595 = load i32, ptr %50, align 4, !tbaa !9
  %596 = sext i32 %595 to i64
  %597 = getelementptr inbounds double, ptr %594, i64 %596
  %598 = load ptr, ptr %36, align 8, !tbaa !5
  %599 = load ptr, ptr %42, align 8, !tbaa !5
  call void @dpbtrs_(ptr noundef %585, ptr noundef %586, ptr noundef %587, ptr noundef %588, ptr noundef %592, ptr noundef %593, ptr noundef %597, ptr noundef %598, ptr noundef %599)
  %600 = load ptr, ptr %23, align 8, !tbaa !5
  %601 = load ptr, ptr %24, align 8, !tbaa !5
  %602 = load ptr, ptr %25, align 8, !tbaa !5
  %603 = load ptr, ptr %26, align 8, !tbaa !5
  %604 = load ptr, ptr %27, align 8, !tbaa !5
  %605 = load i32, ptr %44, align 4, !tbaa !9
  %606 = sext i32 %605 to i64
  %607 = getelementptr inbounds double, ptr %604, i64 %606
  %608 = load ptr, ptr %28, align 8, !tbaa !5
  %609 = load ptr, ptr %29, align 8, !tbaa !5
  %610 = load i32, ptr %46, align 4, !tbaa !9
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds double, ptr %609, i64 %611
  %613 = load ptr, ptr %30, align 8, !tbaa !5
  %614 = load ptr, ptr %33, align 8, !tbaa !5
  %615 = load i32, ptr %48, align 4, !tbaa !9
  %616 = sext i32 %615 to i64
  %617 = getelementptr inbounds double, ptr %614, i64 %616
  %618 = load ptr, ptr %34, align 8, !tbaa !5
  %619 = load ptr, ptr %35, align 8, !tbaa !5
  %620 = load i32, ptr %50, align 4, !tbaa !9
  %621 = sext i32 %620 to i64
  %622 = getelementptr inbounds double, ptr %619, i64 %621
  %623 = load ptr, ptr %36, align 8, !tbaa !5
  %624 = load ptr, ptr %38, align 8, !tbaa !5
  %625 = getelementptr inbounds double, ptr %624, i64 1
  %626 = load ptr, ptr %39, align 8, !tbaa !5
  %627 = getelementptr inbounds double, ptr %626, i64 1
  %628 = load ptr, ptr %40, align 8, !tbaa !5
  %629 = getelementptr inbounds double, ptr %628, i64 1
  %630 = load ptr, ptr %41, align 8, !tbaa !5
  %631 = getelementptr inbounds i32, ptr %630, i64 1
  %632 = load ptr, ptr %42, align 8, !tbaa !5
  call void @dpbrfs_(ptr noundef %600, ptr noundef %601, ptr noundef %602, ptr noundef %603, ptr noundef %607, ptr noundef %608, ptr noundef %612, ptr noundef %613, ptr noundef %617, ptr noundef %618, ptr noundef %622, ptr noundef %623, ptr noundef %625, ptr noundef %627, ptr noundef %629, ptr noundef %631, ptr noundef %632)
  %633 = load i32, ptr %63, align 4, !tbaa !9
  %634 = icmp ne i32 %633, 0
  br i1 %634, label %635, label %699

635:                                              ; preds = %547
  %636 = load ptr, ptr %26, align 8, !tbaa !5
  %637 = load i32, ptr %636, align 4, !tbaa !9
  store i32 %637, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %638

638:                                              ; preds = %677, %635
  %639 = load i32, ptr %59, align 4, !tbaa !9
  %640 = load i32, ptr %51, align 4, !tbaa !9
  %641 = icmp sle i32 %639, %640
  br i1 %641, label %642, label %680

642:                                              ; preds = %638
  %643 = load ptr, ptr %24, align 8, !tbaa !5
  %644 = load i32, ptr %643, align 4, !tbaa !9
  store i32 %644, ptr %52, align 4, !tbaa !9
  store i32 1, ptr %58, align 4, !tbaa !9
  br label %645

645:                                              ; preds = %673, %642
  %646 = load i32, ptr %58, align 4, !tbaa !9
  %647 = load i32, ptr %52, align 4, !tbaa !9
  %648 = icmp sle i32 %646, %647
  br i1 %648, label %649, label %676

649:                                              ; preds = %645
  %650 = load ptr, ptr %32, align 8, !tbaa !5
  %651 = load i32, ptr %58, align 4, !tbaa !9
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds double, ptr %650, i64 %652
  %654 = load double, ptr %653, align 8, !tbaa !12
  %655 = load ptr, ptr %35, align 8, !tbaa !5
  %656 = load i32, ptr %58, align 4, !tbaa !9
  %657 = load i32, ptr %59, align 4, !tbaa !9
  %658 = load i32, ptr %49, align 4, !tbaa !9
  %659 = mul nsw i32 %657, %658
  %660 = add nsw i32 %656, %659
  %661 = sext i32 %660 to i64
  %662 = getelementptr inbounds double, ptr %655, i64 %661
  %663 = load double, ptr %662, align 8, !tbaa !12
  %664 = fmul double %654, %663
  %665 = load ptr, ptr %35, align 8, !tbaa !5
  %666 = load i32, ptr %58, align 4, !tbaa !9
  %667 = load i32, ptr %59, align 4, !tbaa !9
  %668 = load i32, ptr %49, align 4, !tbaa !9
  %669 = mul nsw i32 %667, %668
  %670 = add nsw i32 %666, %669
  %671 = sext i32 %670 to i64
  %672 = getelementptr inbounds double, ptr %665, i64 %671
  store double %664, ptr %672, align 8, !tbaa !12
  br label %673

673:                                              ; preds = %649
  %674 = load i32, ptr %58, align 4, !tbaa !9
  %675 = add nsw i32 %674, 1
  store i32 %675, ptr %58, align 4, !tbaa !9
  br label %645, !llvm.loop !20

676:                                              ; preds = %645
  br label %677

677:                                              ; preds = %676
  %678 = load i32, ptr %59, align 4, !tbaa !9
  %679 = add nsw i32 %678, 1
  store i32 %679, ptr %59, align 4, !tbaa !9
  br label %638, !llvm.loop !21

680:                                              ; preds = %638
  %681 = load ptr, ptr %26, align 8, !tbaa !5
  %682 = load i32, ptr %681, align 4, !tbaa !9
  store i32 %682, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %683

683:                                              ; preds = %695, %680
  %684 = load i32, ptr %59, align 4, !tbaa !9
  %685 = load i32, ptr %51, align 4, !tbaa !9
  %686 = icmp sle i32 %684, %685
  br i1 %686, label %687, label %698

687:                                              ; preds = %683
  %688 = load double, ptr %60, align 8, !tbaa !12
  %689 = load ptr, ptr %38, align 8, !tbaa !5
  %690 = load i32, ptr %59, align 4, !tbaa !9
  %691 = sext i32 %690 to i64
  %692 = getelementptr inbounds double, ptr %689, i64 %691
  %693 = load double, ptr %692, align 8, !tbaa !12
  %694 = fdiv double %693, %688
  store double %694, ptr %692, align 8, !tbaa !12
  br label %695

695:                                              ; preds = %687
  %696 = load i32, ptr %59, align 4, !tbaa !9
  %697 = add nsw i32 %696, 1
  store i32 %697, ptr %59, align 4, !tbaa !9
  br label %683, !llvm.loop !22

698:                                              ; preds = %683
  br label %699

699:                                              ; preds = %698, %547
  %700 = load ptr, ptr %37, align 8, !tbaa !5
  %701 = load double, ptr %700, align 8, !tbaa !12
  %702 = call double @dlamch_(ptr noundef @.str.10)
  %703 = fcmp olt double %701, %702
  br i1 %703, label %704, label %709

704:                                              ; preds = %699
  %705 = load ptr, ptr %24, align 8, !tbaa !5
  %706 = load i32, ptr %705, align 4, !tbaa !9
  %707 = add nsw i32 %706, 1
  %708 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %707, ptr %708, align 4, !tbaa !9
  br label %709

709:                                              ; preds = %704, %699
  store i32 1, ptr %71, align 4
  br label %710

710:                                              ; preds = %709, %544, %337
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  ret void
}

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

declare void @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 = !{!"int", !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 i32, align 4
@.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 void @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 i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #4
  call void @llvm.lifetime.start.p0(i64 4, 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 4, ptr nonnull %27) #4
  %28 = load i32, ptr %6, align 4, !tbaa !5
  %narrow = xor i32 %28, -1
  %29 = sext i32 %narrow to i64
  %30 = getelementptr inbounds double, ptr %5, i64 %29
  %31 = load i32, ptr %8, align 4, !tbaa !5
  %narrow290 = xor i32 %31, -1
  %32 = sext i32 %narrow290 to i64
  %33 = getelementptr inbounds double, ptr %7, i64 %32
  %34 = getelementptr inbounds i8, ptr %10, i64 -8
  %35 = load i32, ptr %12, align 4, !tbaa !5
  %narrow291 = xor i32 %35, -1
  %36 = sext i32 %narrow291 to i64
  %37 = getelementptr inbounds double, ptr %11, i64 %36
  %38 = load i32, ptr %14, align 4, !tbaa !5
  %narrow292 = xor i32 %38, -1
  %39 = sext i32 %narrow292 to i64
  %40 = getelementptr inbounds double, ptr %13, i64 %39
  %41 = getelementptr inbounds i8, ptr %16, i64 -8
  store i32 0, ptr %20, align 4, !tbaa !5
  %42 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %43 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %44 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #4
  %45 = icmp ne i32 %42, 0
  %46 = icmp ne i32 %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 i32 @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 i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.5) #4
  %.not = icmp eq i32 %51, 0
  br i1 %.not, label %.thread309.sink.split, label %52

52:                                               ; preds = %.thread, %47
  %.0304 = phi double [ undef, %.thread ], [ %49, %47 ]
  %.0262303 = phi double [ undef, %.thread ], [ %50, %47 ]
  %.0263302 = phi i32 [ 0, %.thread ], [ %48, %47 ]
  %.not277 = icmp eq i32 %44, 0
  br i1 %.not277, label %53, label %55

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

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

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

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

64:                                               ; preds = %61
  %65 = load i32, ptr %6, align 4, !tbaa !5
  %.not279 = icmp sgt i32 %65, %59
  br i1 %.not279, label %66, label %.thread309.sink.split

66:                                               ; preds = %64
  %67 = load i32, ptr %8, align 4, !tbaa !5
  %.not280 = icmp sgt i32 %67, %59
  br i1 %.not280, label %68, label %.thread309.sink.split

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

72:                                               ; preds = %68
  %73 = tail call i32 @lsame_(ptr noundef %9, ptr noundef nonnull @.str) #4
  %.not281 = icmp eq i32 %73, 0
  br i1 %.not281, label %.thread309.sink.split, label %.thread305

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

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

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

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

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader.new ], [ %indvars.iv.next.1, %.lr.ph ]
  %.0268317 = phi double [ 0.000000e+00, %.lr.ph.preheader.new ], [ %90, %.lr.ph ]
  %.0269316 = phi double [ %.0262303, %.lr.ph.preheader.new ], [ %88, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %79 = getelementptr inbounds double, ptr %34, i64 %indvars.iv
  %80 = load double, ptr %79, align 8, !tbaa !10
  %81 = fcmp ole double %.0269316, %80
  %82 = select i1 %81, double %.0269316, double %80
  %83 = fcmp oge double %.0268317, %80
  %84 = select i1 %83, double %.0268317, double %80
  %85 = getelementptr double, ptr %10, i64 %indvars.iv
  %86 = load double, ptr %85, align 8, !tbaa !10
  %87 = fcmp ole double %82, %86
  %88 = select i1 %87, double %82, double %86
  %89 = fcmp oge double %84, %86
  %90 = select i1 %89, double %84, double %86
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 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
  %.lcssa447.ph = phi double [ poison, %.lr.ph.preheader ], [ %88, %.lr.ph ]
  %.lcssa446.ph = phi double [ poison, %.lr.ph.preheader ], [ %90, %.lr.ph ]
  %indvars.iv.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next.1, %.lr.ph ]
  %.0268317.unr = phi double [ 0.000000e+00, %.lr.ph.preheader ], [ %90, %.lr.ph ]
  %.0269316.unr = phi double [ %.0262303, %.lr.ph.preheader ], [ %88, %.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 %indvars.iv.unr
  %92 = load double, ptr %91, align 8, !tbaa !10
  %93 = fcmp ole double %.0269316.unr, %92
  %94 = select i1 %93, double %.0269316.unr, double %92
  %95 = fcmp oge double %.0268317.unr, %92
  %96 = select i1 %95, double %.0268317.unr, double %92
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %75
  %.0269.lcssa = phi double [ %.0262303, %75 ], [ %.lcssa447.ph, %._crit_edge.loopexit.unr-lcssa ], [ %94, %.lr.ph.epil ]
  %.0268.lcssa = phi double [ 0.000000e+00, %75 ], [ %.lcssa446.ph, %._crit_edge.loopexit.unr-lcssa ], [ %96, %.lr.ph.epil ]
  %97 = fcmp ugt double %.0269.lcssa, 0.000000e+00
  br i1 %97, label %98, label %.thread309.sink.split

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

100:                                              ; preds = %98
  %101 = fcmp oge double %.0269.lcssa, %.0304
  %102 = select i1 %101, double %.0269.lcssa, double %.0304
  %103 = fcmp ole double %.0268.lcssa, %.0262303
  %104 = select i1 %103, double %.0268.lcssa, double %.0262303
  %105 = fdiv double %102, %104
  store double %105, ptr %25, align 8, !tbaa !10
  br label %.thread305

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

.thread305:                                       ; preds = %72, %106, %100, %74
  %.pr = load i32, ptr %20, align 4, !tbaa !5
  %107 = icmp eq i32 %.pr, 0
  br i1 %107, label %108, label %.thread309

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

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

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

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

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

119:                                              ; preds = %118
  call void @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
  %120 = load i32, ptr %27, align 4, !tbaa !5
  %121 = icmp eq i32 %120, 0
  br i1 %121, label %122, label %124

122:                                              ; preds = %119
  call void @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
  %123 = call i32 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.3) #4
  br label %124

124:                                              ; preds = %119, %122, %118
  %.1 = phi i32 [ %123, %122 ], [ %.0263302, %119 ], [ %.0263302, %118 ]
  %.not284 = icmp eq i32 %.1, 0
  br i1 %.not284, label %176, label %125

125:                                              ; preds = %124
  %126 = load i32, ptr %4, align 4, !tbaa !5
  %.not285325 = icmp slt i32 %126, 1
  br i1 %.not285325, label %.loopexit314, label %.lr.ph328

.lr.ph328:                                        ; preds = %125
  %127 = load i32, ptr %2, align 4, !tbaa !5
  %.not296320 = icmp slt i32 %127, 1
  br i1 %.not296320, label %.loopexit314, label %.lr.ph323.preheader

.lr.ph323.preheader:                              ; preds = %.lr.ph328
  %128 = add nuw i32 %127, 1
  %129 = sext i32 %35 to i64
  %130 = add nuw i32 %126, 1
  %wide.trip.count369 = zext i32 %130 to i64
  %wide.trip.count364 = zext i32 %128 to i64
  %131 = shl nsw i64 %129, 3
  %132 = shl nsw i64 %36, 3
  %133 = getelementptr i8, ptr %11, i64 %131
  %134 = getelementptr i8, ptr %133, i64 %132
  %scevgep = getelementptr i8, ptr %134, i64 8
  %135 = shl nuw nsw i64 %wide.trip.count369, 3
  %136 = add nsw i64 %135, -8
  %137 = mul i64 %136, %129
  %138 = shl nuw nsw i64 %wide.trip.count364, 3
  %139 = getelementptr i8, ptr %11, i64 %137
  %140 = getelementptr i8, ptr %139, i64 %132
  %scevgep401 = getelementptr i8, ptr %140, i64 %138
  %141 = getelementptr i8, ptr %10, i64 %138
  %scevgep402 = getelementptr i8, ptr %141, i64 -8
  %142 = zext nneg i32 %127 to i64
  %143 = zext nneg i32 %127 to i64
  %min.iters.check = icmp ult i32 %127, 4
  %bound0 = icmp ult ptr %scevgep, %scevgep402
  %bound1 = icmp ugt ptr %scevgep401, %10
  %found.conflict = and i1 %bound0, %bound1
  %stride.check = icmp slt i32 %35, 0
  %144 = or i1 %found.conflict, %stride.check
  %n.vec = and i64 %142, 2147483644
  %ind.end = or disjoint i64 %n.vec, 1
  %cmp.n = icmp eq i64 %n.vec, %142
  br label %.lr.ph323

.lr.ph323:                                        ; preds = %.lr.ph323.preheader, %._crit_edge324
  %indvars.iv366 = phi i64 [ 1, %.lr.ph323.preheader ], [ %indvars.iv.next367, %._crit_edge324 ]
  %145 = mul nsw i64 %indvars.iv366, %129
  %invariant.gep394 = getelementptr double, ptr %37, i64 %145
  %brmerge = select i1 %min.iters.check, i1 true, i1 %144
  br i1 %brmerge, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %.lr.ph323, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph323 ]
  %offset.idx = or disjoint i64 %index, 1
  %146 = getelementptr double, ptr %10, i64 %index
  %147 = getelementptr inbounds i8, ptr %146, i64 16
  %wide.load = load <2 x double>, ptr %146, align 8, !tbaa !10, !alias.scope !14
  %wide.load403 = load <2 x double>, ptr %147, align 8, !tbaa !10, !alias.scope !14
  %148 = getelementptr double, ptr %invariant.gep394, i64 %offset.idx
  %149 = getelementptr i8, ptr %148, i64 16
  %wide.load404 = load <2 x double>, ptr %148, align 8, !tbaa !10, !alias.scope !17, !noalias !14
  %wide.load405 = load <2 x double>, ptr %149, align 8, !tbaa !10, !alias.scope !17, !noalias !14
  %150 = fmul <2 x double> %wide.load, %wide.load404
  %151 = fmul <2 x double> %wide.load403, %wide.load405
  store <2 x double> %150, ptr %148, align 8, !tbaa !10, !alias.scope !17, !noalias !14
  store <2 x double> %151, ptr %149, align 8, !tbaa !10, !alias.scope !17, !noalias !14
  %index.next = add nuw i64 %index, 4
  %152 = icmp eq i64 %index.next, %n.vec
  br i1 %152, label %middle.block, label %vector.body, !llvm.loop !19

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

scalar.ph.preheader:                              ; preds = %.lr.ph323, %middle.block
  %indvars.iv361.ph = phi i64 [ 1, %.lr.ph323 ], [ %ind.end, %middle.block ]
  %153 = sub nsw i64 %wide.trip.count364, %indvars.iv361.ph
  %154 = sub nsw i64 %143, %indvars.iv361.ph
  %xtraiter450 = and i64 %153, 3
  %lcmp.mod451.not = icmp eq i64 %xtraiter450, 0
  br i1 %lcmp.mod451.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %indvars.iv361.prol = phi i64 [ %indvars.iv.next362.prol, %scalar.ph.prol ], [ %indvars.iv361.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %155 = getelementptr inbounds double, ptr %34, i64 %indvars.iv361.prol
  %156 = load double, ptr %155, align 8, !tbaa !10
  %gep395.prol = getelementptr double, ptr %invariant.gep394, i64 %indvars.iv361.prol
  %157 = load double, ptr %gep395.prol, align 8, !tbaa !10
  %158 = fmul double %156, %157
  store double %158, ptr %gep395.prol, align 8, !tbaa !10
  %indvars.iv.next362.prol = add nuw nsw i64 %indvars.iv361.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter450
  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
  %indvars.iv361.unr = phi i64 [ %indvars.iv361.ph, %scalar.ph.preheader ], [ %indvars.iv.next362.prol, %scalar.ph.prol ]
  %159 = icmp ult i64 %154, 3
  br i1 %159, label %._crit_edge324, label %scalar.ph.preheader.new

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

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %indvars.iv361 = phi i64 [ %indvars.iv361.unr, %scalar.ph.preheader.new ], [ %indvars.iv.next362.3, %scalar.ph ]
  %160 = getelementptr inbounds double, ptr %34, i64 %indvars.iv361
  %161 = load double, ptr %160, align 8, !tbaa !10
  %gep395 = getelementptr double, ptr %invariant.gep394, i64 %indvars.iv361
  %162 = load double, ptr %gep395, align 8, !tbaa !10
  %163 = fmul double %161, %162
  store double %163, ptr %gep395, align 8, !tbaa !10
  %164 = getelementptr double, ptr %10, i64 %indvars.iv361
  %165 = load double, ptr %164, align 8, !tbaa !10
  %gep458 = getelementptr double, ptr %invariant.gep457, i64 %indvars.iv361
  %166 = load double, ptr %gep458, align 8, !tbaa !10
  %167 = fmul double %165, %166
  store double %167, ptr %gep458, align 8, !tbaa !10
  %indvars.iv.next362.1 = add nuw nsw i64 %indvars.iv361, 2
  %168 = getelementptr inbounds double, ptr %34, i64 %indvars.iv.next362.1
  %169 = load double, ptr %168, align 8, !tbaa !10
  %gep395.2 = getelementptr double, ptr %invariant.gep394, i64 %indvars.iv.next362.1
  %170 = load double, ptr %gep395.2, align 8, !tbaa !10
  %171 = fmul double %169, %170
  store double %171, ptr %gep395.2, align 8, !tbaa !10
  %indvars.iv.next362.2 = add nuw nsw i64 %indvars.iv361, 3
  %172 = getelementptr inbounds double, ptr %34, i64 %indvars.iv.next362.2
  %173 = load double, ptr %172, align 8, !tbaa !10
  %gep395.3 = getelementptr double, ptr %invariant.gep394, i64 %indvars.iv.next362.2
  %174 = load double, ptr %gep395.3, align 8, !tbaa !10
  %175 = fmul double %173, %174
  store double %175, ptr %gep395.3, align 8, !tbaa !10
  %indvars.iv.next362.3 = add nuw nsw i64 %indvars.iv361, 4
  %exitcond365.not.3 = icmp eq i64 %indvars.iv.next362.3, %wide.trip.count364
  br i1 %exitcond365.not.3, label %._crit_edge324, label %scalar.ph, !llvm.loop !24

._crit_edge324:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %indvars.iv.next367 = add nuw nsw i64 %indvars.iv366, 1
  %exitcond370.not = icmp eq i64 %indvars.iv.next367, %wide.trip.count369
  br i1 %exitcond370.not, label %.loopexit314, label %.lr.ph323, !llvm.loop !25

.loopexit314:                                     ; preds = %._crit_edge324, %.lr.ph328, %125
  %.lcssa = phi i32 [ undef, %125 ], [ %127, %.lr.ph328 ], [ %127, %._crit_edge324 ]
  store i32 %.lcssa, ptr %23, align 4, !tbaa !5
  br label %176

176:                                              ; preds = %.loopexit314, %124
  br i1 %or.cond, label %177, label %209

177:                                              ; preds = %176
  %178 = load i32, ptr %2, align 4, !tbaa !5
  br i1 %.not277, label %195, label %179

179:                                              ; preds = %177
  %.not289330 = icmp slt i32 %178, 1
  br i1 %.not289330, label %.loopexit312, label %.lr.ph333

.lr.ph333:                                        ; preds = %179, %.lr.ph333
  %.2331 = phi i32 [ %183, %.lr.ph333 ], [ 1, %179 ]
  %180 = load i32, ptr %3, align 4, !tbaa !5
  %181 = sub nsw i32 %.2331, %180
  %182 = call i32 @llvm.smax.i32(i32 %181, i32 1)
  %183 = add nuw i32 %.2331, 1
  %184 = sub i32 %183, %182
  store i32 %184, ptr %23, align 4, !tbaa !5
  %reass.sub = sub i32 %180, %.2331
  %185 = add i32 %reass.sub, 1
  %186 = add nsw i32 %185, %182
  %187 = mul nsw i32 %.2331, %28
  %188 = add nsw i32 %186, %187
  %189 = sext i32 %188 to i64
  %190 = getelementptr inbounds double, ptr %30, i64 %189
  %191 = mul nsw i32 %.2331, %31
  %192 = add nsw i32 %186, %191
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds double, ptr %33, i64 %193
  call void @dcopy_(ptr noundef nonnull %23, ptr noundef %190, ptr noundef nonnull @c__1, ptr noundef %194, ptr noundef nonnull @c__1) #4
  %.not289.not = icmp slt i32 %.2331, %178
  br i1 %.not289.not, label %.lr.ph333, label %.loopexit312, !llvm.loop !26

195:                                              ; preds = %177
  %invariant.gep = getelementptr i8, ptr %30, i64 8
  %invariant.gep334 = getelementptr i8, ptr %33, i64 8
  %.not287336 = icmp slt i32 %178, 1
  br i1 %.not287336, label %.loopexit312, label %.lr.ph339.preheader

.lr.ph339.preheader:                              ; preds = %195
  %196 = sext i32 %28 to i64
  %197 = sext i32 %31 to i64
  %198 = zext nneg i32 %178 to i64
  br label %.lr.ph339

.lr.ph339:                                        ; preds = %.lr.ph339.preheader, %.lr.ph339
  %indvars.iv371 = phi i64 [ 1, %.lr.ph339.preheader ], [ %indvars.iv.next372, %.lr.ph339 ]
  %199 = load i32, ptr %3, align 4, !tbaa !5
  %200 = trunc nuw nsw i64 %indvars.iv371 to i32
  %201 = add nsw i32 %199, %200
  %202 = load i32, ptr %2, align 4, !tbaa !5
  %. = call i32 @llvm.smin.i32(i32 %201, i32 %202)
  %reass.sub354 = sub i32 %., %200
  %203 = add i32 %reass.sub354, 1
  store i32 %203, ptr %23, align 4, !tbaa !5
  %204 = mul nsw i64 %indvars.iv371, %196
  %gep = getelementptr double, ptr %invariant.gep, i64 %204
  %205 = mul nsw i64 %indvars.iv371, %197
  %gep335 = getelementptr double, ptr %invariant.gep334, i64 %205
  call void @dcopy_(ptr noundef nonnull %23, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep335, ptr noundef nonnull @c__1) #4
  %indvars.iv.next372 = add nuw nsw i64 %indvars.iv371, 1
  %.not287.not = icmp ult i64 %indvars.iv371, %198
  br i1 %.not287.not, label %.lr.ph339, label %.loopexit312, !llvm.loop !27

.loopexit312:                                     ; preds = %.lr.ph333, %.lr.ph339, %179, %195
  call void @dpbtrf_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %20) #4
  %206 = load i32, ptr %20, align 4, !tbaa !5
  %207 = icmp sgt i32 %206, 0
  br i1 %207, label %208, label %209

208:                                              ; preds = %.loopexit312
  store double 0.000000e+00, ptr %15, align 8, !tbaa !10
  br label %278

209:                                              ; preds = %.loopexit312, %176
  %210 = 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 %210, ptr %26, align 8, !tbaa !10
  call void @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
  call void @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
  call void @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
  call void @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 %.not284, label %.loopexit, label %211

211:                                              ; preds = %209
  %212 = load i32, ptr %4, align 4, !tbaa !5
  %.not293345 = icmp slt i32 %212, 1
  br i1 %.not293345, label %.loopexit, label %.lr.ph348

.lr.ph348:                                        ; preds = %211
  %213 = load i32, ptr %2, align 4, !tbaa !5
  %.not295340 = icmp slt i32 %213, 1
  br i1 %.not295340, label %.thread390, label %.lr.ph343.preheader

.thread390:                                       ; preds = %.lr.ph348
  store i32 %213, ptr %23, align 4, !tbaa !5
  br label %.lr.ph353

.lr.ph343.preheader:                              ; preds = %.lr.ph348
  %214 = add nuw i32 %213, 1
  %215 = sext i32 %38 to i64
  %216 = add nuw i32 %212, 1
  %wide.trip.count382 = zext i32 %216 to i64
  %wide.trip.count377 = zext i32 %214 to i64
  %217 = shl nsw i64 %215, 3
  %218 = shl nsw i64 %39, 3
  %219 = getelementptr i8, ptr %13, i64 %217
  %220 = getelementptr i8, ptr %219, i64 %218
  %scevgep407 = getelementptr i8, ptr %220, i64 8
  %221 = shl nuw nsw i64 %wide.trip.count382, 3
  %222 = add nsw i64 %221, -8
  %223 = mul i64 %222, %215
  %224 = shl nuw nsw i64 %wide.trip.count377, 3
  %225 = getelementptr i8, ptr %13, i64 %223
  %226 = getelementptr i8, ptr %225, i64 %218
  %scevgep408 = getelementptr i8, ptr %226, i64 %224
  %227 = getelementptr i8, ptr %10, i64 %224
  %scevgep409 = getelementptr i8, ptr %227, i64 -8
  %228 = zext nneg i32 %213 to i64
  %229 = zext nneg i32 %213 to i64
  %min.iters.check416 = icmp ult i32 %213, 4
  %bound0410 = icmp ult ptr %scevgep407, %scevgep409
  %bound1411 = icmp ugt ptr %scevgep408, %10
  %found.conflict412 = and i1 %bound0410, %bound1411
  %stride.check413 = icmp slt i32 %38, 0
  %230 = or i1 %found.conflict412, %stride.check413
  %n.vec419 = and i64 %228, 2147483644
  %ind.end420 = or disjoint i64 %n.vec419, 1
  %cmp.n430 = icmp eq i64 %n.vec419, %228
  br label %.lr.ph343

.lr.ph343:                                        ; preds = %.lr.ph343.preheader, %._crit_edge344
  %indvars.iv379 = phi i64 [ 1, %.lr.ph343.preheader ], [ %indvars.iv.next380, %._crit_edge344 ]
  %231 = mul nsw i64 %indvars.iv379, %215
  %invariant.gep396 = getelementptr double, ptr %40, i64 %231
  %brmerge461 = select i1 %min.iters.check416, i1 true, i1 %230
  br i1 %brmerge461, label %scalar.ph415.preheader, label %vector.body422

vector.body422:                                   ; preds = %.lr.ph343, %vector.body422
  %index423 = phi i64 [ %index.next429, %vector.body422 ], [ 0, %.lr.ph343 ]
  %offset.idx424 = or disjoint i64 %index423, 1
  %232 = getelementptr double, ptr %10, i64 %index423
  %233 = getelementptr inbounds i8, ptr %232, i64 16
  %wide.load425 = load <2 x double>, ptr %232, align 8, !tbaa !10, !alias.scope !28
  %wide.load426 = load <2 x double>, ptr %233, align 8, !tbaa !10, !alias.scope !28
  %234 = getelementptr double, ptr %invariant.gep396, i64 %offset.idx424
  %235 = getelementptr i8, ptr %234, i64 16
  %wide.load427 = load <2 x double>, ptr %234, align 8, !tbaa !10, !alias.scope !31, !noalias !28
  %wide.load428 = load <2 x double>, ptr %235, align 8, !tbaa !10, !alias.scope !31, !noalias !28
  %236 = fmul <2 x double> %wide.load425, %wide.load427
  %237 = fmul <2 x double> %wide.load426, %wide.load428
  store <2 x double> %236, ptr %234, align 8, !tbaa !10, !alias.scope !31, !noalias !28
  store <2 x double> %237, ptr %235, align 8, !tbaa !10, !alias.scope !31, !noalias !28
  %index.next429 = add nuw i64 %index423, 4
  %238 = icmp eq i64 %index.next429, %n.vec419
  br i1 %238, label %middle.block414, label %vector.body422, !llvm.loop !33

middle.block414:                                  ; preds = %vector.body422
  br i1 %cmp.n430, label %._crit_edge344, label %scalar.ph415.preheader

scalar.ph415.preheader:                           ; preds = %.lr.ph343, %middle.block414
  %indvars.iv374.ph = phi i64 [ 1, %.lr.ph343 ], [ %ind.end420, %middle.block414 ]
  %239 = sub nsw i64 %wide.trip.count377, %indvars.iv374.ph
  %240 = sub nsw i64 %229, %indvars.iv374.ph
  %xtraiter452 = and i64 %239, 3
  %lcmp.mod453.not = icmp eq i64 %xtraiter452, 0
  br i1 %lcmp.mod453.not, label %scalar.ph415.prol.loopexit, label %scalar.ph415.prol

scalar.ph415.prol:                                ; preds = %scalar.ph415.preheader, %scalar.ph415.prol
  %indvars.iv374.prol = phi i64 [ %indvars.iv.next375.prol, %scalar.ph415.prol ], [ %indvars.iv374.ph, %scalar.ph415.preheader ]
  %prol.iter454 = phi i64 [ %prol.iter454.next, %scalar.ph415.prol ], [ 0, %scalar.ph415.preheader ]
  %241 = getelementptr inbounds double, ptr %34, i64 %indvars.iv374.prol
  %242 = load double, ptr %241, align 8, !tbaa !10
  %gep397.prol = getelementptr double, ptr %invariant.gep396, i64 %indvars.iv374.prol
  %243 = load double, ptr %gep397.prol, align 8, !tbaa !10
  %244 = fmul double %242, %243
  store double %244, ptr %gep397.prol, align 8, !tbaa !10
  %indvars.iv.next375.prol = add nuw nsw i64 %indvars.iv374.prol, 1
  %prol.iter454.next = add i64 %prol.iter454, 1
  %prol.iter454.cmp.not = icmp eq i64 %prol.iter454.next, %xtraiter452
  br i1 %prol.iter454.cmp.not, label %scalar.ph415.prol.loopexit, label %scalar.ph415.prol, !llvm.loop !34

scalar.ph415.prol.loopexit:                       ; preds = %scalar.ph415.prol, %scalar.ph415.preheader
  %indvars.iv374.unr = phi i64 [ %indvars.iv374.ph, %scalar.ph415.preheader ], [ %indvars.iv.next375.prol, %scalar.ph415.prol ]
  %245 = icmp ult i64 %240, 3
  br i1 %245, label %._crit_edge344, label %scalar.ph415.preheader.new

scalar.ph415.preheader.new:                       ; preds = %scalar.ph415.prol.loopexit
  %invariant.gep459 = getelementptr i8, ptr %invariant.gep396, i64 8
  br label %scalar.ph415

scalar.ph415:                                     ; preds = %scalar.ph415, %scalar.ph415.preheader.new
  %indvars.iv374 = phi i64 [ %indvars.iv374.unr, %scalar.ph415.preheader.new ], [ %indvars.iv.next375.3, %scalar.ph415 ]
  %246 = getelementptr inbounds double, ptr %34, i64 %indvars.iv374
  %247 = load double, ptr %246, align 8, !tbaa !10
  %gep397 = getelementptr double, ptr %invariant.gep396, i64 %indvars.iv374
  %248 = load double, ptr %gep397, align 8, !tbaa !10
  %249 = fmul double %247, %248
  store double %249, ptr %gep397, align 8, !tbaa !10
  %250 = getelementptr double, ptr %10, i64 %indvars.iv374
  %251 = load double, ptr %250, align 8, !tbaa !10
  %gep460 = getelementptr double, ptr %invariant.gep459, i64 %indvars.iv374
  %252 = load double, ptr %gep460, align 8, !tbaa !10
  %253 = fmul double %251, %252
  store double %253, ptr %gep460, align 8, !tbaa !10
  %indvars.iv.next375.1 = add nuw nsw i64 %indvars.iv374, 2
  %254 = getelementptr inbounds double, ptr %34, i64 %indvars.iv.next375.1
  %255 = load double, ptr %254, align 8, !tbaa !10
  %gep397.2 = getelementptr double, ptr %invariant.gep396, i64 %indvars.iv.next375.1
  %256 = load double, ptr %gep397.2, align 8, !tbaa !10
  %257 = fmul double %255, %256
  store double %257, ptr %gep397.2, align 8, !tbaa !10
  %indvars.iv.next375.2 = add nuw nsw i64 %indvars.iv374, 3
  %258 = getelementptr inbounds double, ptr %34, i64 %indvars.iv.next375.2
  %259 = load double, ptr %258, align 8, !tbaa !10
  %gep397.3 = getelementptr double, ptr %invariant.gep396, i64 %indvars.iv.next375.2
  %260 = load double, ptr %gep397.3, align 8, !tbaa !10
  %261 = fmul double %259, %260
  store double %261, ptr %gep397.3, align 8, !tbaa !10
  %indvars.iv.next375.3 = add nuw nsw i64 %indvars.iv374, 4
  %exitcond378.not.3 = icmp eq i64 %indvars.iv.next375.3, %wide.trip.count377
  br i1 %exitcond378.not.3, label %._crit_edge344, label %scalar.ph415, !llvm.loop !35

._crit_edge344:                                   ; preds = %scalar.ph415.prol.loopexit, %scalar.ph415, %middle.block414
  %indvars.iv.next380 = add nuw nsw i64 %indvars.iv379, 1
  %exitcond383.not = icmp eq i64 %indvars.iv.next380, %wide.trip.count382
  br i1 %exitcond383.not, label %262, label %.lr.ph343, !llvm.loop !36

262:                                              ; preds = %._crit_edge344
  store i32 %213, ptr %23, align 4, !tbaa !5
  br i1 %.not293345, label %.loopexit, label %.lr.ph353

.lr.ph353:                                        ; preds = %.thread390, %262
  %263 = load double, ptr %25, align 8, !tbaa !10
  %264 = add nuw i32 %212, 1
  %wide.trip.count387 = zext i32 %264 to i64
  %265 = zext nneg i32 %212 to i64
  %min.iters.check433 = icmp eq i32 %212, 1
  br i1 %min.iters.check433, label %scalar.ph432.preheader, label %vector.ph434

vector.ph434:                                     ; preds = %.lr.ph353
  %n.vec436 = and i64 %265, 2147483646
  %ind.end437 = or i64 %265, 1
  %broadcast.splatinsert = insertelement <2 x double> poison, double %263, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body439

vector.body439:                                   ; preds = %vector.body439, %vector.ph434
  %index440 = phi i64 [ 0, %vector.ph434 ], [ %index.next443, %vector.body439 ]
  %266 = getelementptr double, ptr %16, i64 %index440
  %wide.load442 = load <2 x double>, ptr %266, align 8, !tbaa !10
  %267 = fdiv <2 x double> %wide.load442, %broadcast.splat
  store <2 x double> %267, ptr %266, align 8, !tbaa !10
  %index.next443 = add nuw i64 %index440, 2
  %268 = icmp eq i64 %index.next443, %n.vec436
  br i1 %268, label %middle.block431, label %vector.body439, !llvm.loop !37

middle.block431:                                  ; preds = %vector.body439
  %cmp.n444 = icmp eq i64 %n.vec436, %265
  br i1 %cmp.n444, label %.loopexit, label %scalar.ph432.preheader

scalar.ph432.preheader:                           ; preds = %middle.block431, %.lr.ph353
  %indvars.iv384.ph = phi i64 [ 1, %.lr.ph353 ], [ %ind.end437, %middle.block431 ]
  br label %scalar.ph432

scalar.ph432:                                     ; preds = %scalar.ph432.preheader, %scalar.ph432
  %indvars.iv384 = phi i64 [ %indvars.iv.next385, %scalar.ph432 ], [ %indvars.iv384.ph, %scalar.ph432.preheader ]
  %269 = getelementptr inbounds double, ptr %41, i64 %indvars.iv384
  %270 = load double, ptr %269, align 8, !tbaa !10
  %271 = fdiv double %270, %263
  store double %271, ptr %269, align 8, !tbaa !10
  %indvars.iv.next385 = add nuw nsw i64 %indvars.iv384, 1
  %exitcond388.not = icmp eq i64 %indvars.iv.next385, %wide.trip.count387
  br i1 %exitcond388.not, label %.loopexit, label %scalar.ph432, !llvm.loop !38

.loopexit:                                        ; preds = %scalar.ph432, %middle.block431, %211, %262, %209
  %272 = load double, ptr %15, align 8, !tbaa !10
  %273 = call double @dlamch_(ptr noundef nonnull @.str.10) #4
  %274 = fcmp olt double %272, %273
  br i1 %274, label %275, label %278

275:                                              ; preds = %.loopexit
  %276 = load i32, ptr %2, align 4, !tbaa !5
  %277 = add nsw i32 %276, 1
  store i32 %277, ptr %20, align 4, !tbaa !5
  br label %278

278:                                              ; preds = %.loopexit, %275, %208, %.thread309
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #4
  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 i32 @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, i32 noundef) local_unnamed_addr #2

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

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

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

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

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

declare void @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 i32 @llvm.smax.i32(i32, i32) #3

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smin.i32(i32, i32) #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 = !{!"int", !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,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass