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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @dgbsvxx_(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, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24, ptr noundef %25, ptr noundef %26, ptr noundef %27, ptr noundef %28) #0 {
  %30 = alloca i32, align 4
  %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 ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca ptr, align 8
  %52 = alloca ptr, align 8
  %53 = alloca ptr, align 8
  %54 = alloca ptr, align 8
  %55 = alloca ptr, align 8
  %56 = alloca ptr, align 8
  %57 = alloca ptr, align 8
  %58 = alloca ptr, align 8
  %59 = alloca ptr, align 8
  %60 = alloca i64, align 8
  %61 = alloca i64, align 8
  %62 = alloca i64, align 8
  %63 = alloca i64, align 8
  %64 = alloca i64, align 8
  %65 = alloca i64, align 8
  %66 = alloca i64, align 8
  %67 = alloca i64, align 8
  %68 = alloca i64, align 8
  %69 = alloca i64, align 8
  %70 = alloca i64, align 8
  %71 = alloca i64, align 8
  %72 = alloca i64, align 8
  %73 = alloca i64, align 8
  %74 = alloca double, align 8
  %75 = alloca double, align 8
  %76 = alloca i64, align 8
  %77 = alloca i64, align 8
  %78 = alloca double, align 8
  %79 = alloca double, align 8
  %80 = alloca double, align 8
  %81 = alloca i64, align 8
  %82 = alloca double, align 8
  %83 = alloca i64, align 8
  %84 = alloca double, align 8
  %85 = alloca i64, align 8
  %86 = alloca i64, align 8
  %87 = alloca double, align 8
  %88 = alloca i64, align 8
  %89 = alloca double, align 8
  %90 = alloca i64, align 8
  %91 = alloca i32, align 4
  store ptr %0, ptr %31, align 8, !tbaa !5
  store ptr %1, ptr %32, align 8, !tbaa !5
  store ptr %2, ptr %33, align 8, !tbaa !5
  store ptr %3, ptr %34, align 8, !tbaa !5
  store ptr %4, ptr %35, align 8, !tbaa !5
  store ptr %5, ptr %36, align 8, !tbaa !5
  store ptr %6, ptr %37, align 8, !tbaa !5
  store ptr %7, ptr %38, align 8, !tbaa !5
  store ptr %8, ptr %39, align 8, !tbaa !5
  store ptr %9, ptr %40, align 8, !tbaa !5
  store ptr %10, ptr %41, align 8, !tbaa !5
  store ptr %11, ptr %42, align 8, !tbaa !5
  store ptr %12, ptr %43, align 8, !tbaa !5
  store ptr %13, ptr %44, align 8, !tbaa !5
  store ptr %14, ptr %45, align 8, !tbaa !5
  store ptr %15, ptr %46, align 8, !tbaa !5
  store ptr %16, ptr %47, align 8, !tbaa !5
  store ptr %17, ptr %48, align 8, !tbaa !5
  store ptr %18, ptr %49, align 8, !tbaa !5
  store ptr %19, ptr %50, align 8, !tbaa !5
  store ptr %20, ptr %51, align 8, !tbaa !5
  store ptr %21, ptr %52, align 8, !tbaa !5
  store ptr %22, ptr %53, align 8, !tbaa !5
  store ptr %23, ptr %54, align 8, !tbaa !5
  store ptr %24, ptr %55, align 8, !tbaa !5
  store ptr %25, ptr %56, align 8, !tbaa !5
  store ptr %26, ptr %57, align 8, !tbaa !5
  store ptr %27, ptr %58, align 8, !tbaa !5
  store ptr %28, ptr %59, align 8, !tbaa !5
  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
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #3
  %92 = load ptr, ptr %36, align 8, !tbaa !5
  %93 = load i64, ptr %92, align 8, !tbaa !9
  store i64 %93, ptr %70, align 8, !tbaa !9
  %94 = load i64, ptr %70, align 8, !tbaa !9
  %95 = add nsw i64 1, %94
  store i64 %95, ptr %71, align 8, !tbaa !9
  %96 = load i64, ptr %71, align 8, !tbaa !9
  %97 = load ptr, ptr %54, align 8, !tbaa !5
  %98 = sub i64 0, %96
  %99 = getelementptr inbounds double, ptr %97, i64 %98
  store ptr %99, ptr %54, align 8, !tbaa !5
  %100 = load ptr, ptr %36, align 8, !tbaa !5
  %101 = load i64, ptr %100, align 8, !tbaa !9
  store i64 %101, ptr %68, align 8, !tbaa !9
  %102 = load i64, ptr %68, align 8, !tbaa !9
  %103 = add nsw i64 1, %102
  store i64 %103, ptr %69, align 8, !tbaa !9
  %104 = load i64, ptr %69, align 8, !tbaa !9
  %105 = load ptr, ptr %53, align 8, !tbaa !5
  %106 = sub i64 0, %104
  %107 = getelementptr inbounds double, ptr %105, i64 %106
  store ptr %107, ptr %53, align 8, !tbaa !5
  %108 = load ptr, ptr %38, align 8, !tbaa !5
  %109 = load i64, ptr %108, align 8, !tbaa !9
  store i64 %109, ptr %60, align 8, !tbaa !9
  %110 = load i64, ptr %60, align 8, !tbaa !9
  %111 = add nsw i64 1, %110
  store i64 %111, ptr %61, align 8, !tbaa !9
  %112 = load i64, ptr %61, align 8, !tbaa !9
  %113 = load ptr, ptr %37, align 8, !tbaa !5
  %114 = sub i64 0, %112
  %115 = getelementptr inbounds double, ptr %113, i64 %114
  store ptr %115, ptr %37, align 8, !tbaa !5
  %116 = load ptr, ptr %40, align 8, !tbaa !5
  %117 = load i64, ptr %116, align 8, !tbaa !9
  store i64 %117, ptr %62, align 8, !tbaa !9
  %118 = load i64, ptr %62, align 8, !tbaa !9
  %119 = add nsw i64 1, %118
  store i64 %119, ptr %63, align 8, !tbaa !9
  %120 = load i64, ptr %63, align 8, !tbaa !9
  %121 = load ptr, ptr %39, align 8, !tbaa !5
  %122 = sub i64 0, %120
  %123 = getelementptr inbounds double, ptr %121, i64 %122
  store ptr %123, ptr %39, align 8, !tbaa !5
  %124 = load ptr, ptr %41, align 8, !tbaa !5
  %125 = getelementptr inbounds i64, ptr %124, i32 -1
  store ptr %125, ptr %41, align 8, !tbaa !5
  %126 = load ptr, ptr %43, align 8, !tbaa !5
  %127 = getelementptr inbounds double, ptr %126, i32 -1
  store ptr %127, ptr %43, align 8, !tbaa !5
  %128 = load ptr, ptr %44, align 8, !tbaa !5
  %129 = getelementptr inbounds double, ptr %128, i32 -1
  store ptr %129, ptr %44, align 8, !tbaa !5
  %130 = load ptr, ptr %46, align 8, !tbaa !5
  %131 = load i64, ptr %130, align 8, !tbaa !9
  store i64 %131, ptr %64, align 8, !tbaa !9
  %132 = load i64, ptr %64, align 8, !tbaa !9
  %133 = add nsw i64 1, %132
  store i64 %133, ptr %65, align 8, !tbaa !9
  %134 = load i64, ptr %65, align 8, !tbaa !9
  %135 = load ptr, ptr %45, align 8, !tbaa !5
  %136 = sub i64 0, %134
  %137 = getelementptr inbounds double, ptr %135, i64 %136
  store ptr %137, ptr %45, align 8, !tbaa !5
  %138 = load ptr, ptr %48, align 8, !tbaa !5
  %139 = load i64, ptr %138, align 8, !tbaa !9
  store i64 %139, ptr %66, align 8, !tbaa !9
  %140 = load i64, ptr %66, align 8, !tbaa !9
  %141 = add nsw i64 1, %140
  store i64 %141, ptr %67, align 8, !tbaa !9
  %142 = load i64, ptr %67, align 8, !tbaa !9
  %143 = load ptr, ptr %47, align 8, !tbaa !5
  %144 = sub i64 0, %142
  %145 = getelementptr inbounds double, ptr %143, i64 %144
  store ptr %145, ptr %47, align 8, !tbaa !5
  %146 = load ptr, ptr %51, align 8, !tbaa !5
  %147 = getelementptr inbounds double, ptr %146, i32 -1
  store ptr %147, ptr %51, align 8, !tbaa !5
  %148 = load ptr, ptr %56, align 8, !tbaa !5
  %149 = getelementptr inbounds double, ptr %148, i32 -1
  store ptr %149, ptr %56, align 8, !tbaa !5
  %150 = load ptr, ptr %57, align 8, !tbaa !5
  %151 = getelementptr inbounds double, ptr %150, i32 -1
  store ptr %151, ptr %57, align 8, !tbaa !5
  %152 = load ptr, ptr %58, align 8, !tbaa !5
  %153 = getelementptr inbounds i64, ptr %152, i32 -1
  store ptr %153, ptr %58, align 8, !tbaa !5
  %154 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 0, ptr %154, align 8, !tbaa !9
  %155 = load ptr, ptr %31, align 8, !tbaa !5
  %156 = call i64 @lsame_(ptr noundef %155, ptr noundef @.str)
  store i64 %156, ptr %83, align 8, !tbaa !9
  %157 = load ptr, ptr %31, align 8, !tbaa !5
  %158 = call i64 @lsame_(ptr noundef %157, ptr noundef @.str.1)
  store i64 %158, ptr %81, align 8, !tbaa !9
  %159 = load ptr, ptr %32, align 8, !tbaa !5
  %160 = call i64 @lsame_(ptr noundef %159, ptr noundef @.str)
  store i64 %160, ptr %88, align 8, !tbaa !9
  %161 = call double @dlamch_(ptr noundef @.str.2)
  store double %161, ptr %89, align 8, !tbaa !11
  %162 = load double, ptr %89, align 8, !tbaa !11
  %163 = fdiv double 1.000000e+00, %162
  store double %163, ptr %84, align 8, !tbaa !11
  %164 = load i64, ptr %83, align 8, !tbaa !9
  %165 = icmp ne i64 %164, 0
  br i1 %165, label %169, label %166

166:                                              ; preds = %29
  %167 = load i64, ptr %81, align 8, !tbaa !9
  %168 = icmp ne i64 %167, 0
  br i1 %168, label %169, label %171

169:                                              ; preds = %166, %29
  %170 = load ptr, ptr %42, align 8, !tbaa !5
  store i8 78, ptr %170, align 1, !tbaa !13
  store i64 0, ptr %90, align 8, !tbaa !9
  store i64 0, ptr %86, align 8, !tbaa !9
  br label %194

171:                                              ; preds = %166
  %172 = load ptr, ptr %42, align 8, !tbaa !5
  %173 = call i64 @lsame_(ptr noundef %172, ptr noundef @.str.3)
  %174 = icmp ne i64 %173, 0
  br i1 %174, label %179, label %175

175:                                              ; preds = %171
  %176 = load ptr, ptr %42, align 8, !tbaa !5
  %177 = call i64 @lsame_(ptr noundef %176, ptr noundef @.str.4)
  %178 = icmp ne i64 %177, 0
  br label %179

179:                                              ; preds = %175, %171
  %180 = phi i1 [ true, %171 ], [ %178, %175 ]
  %181 = zext i1 %180 to i32
  %182 = sext i32 %181 to i64
  store i64 %182, ptr %90, align 8, !tbaa !9
  %183 = load ptr, ptr %42, align 8, !tbaa !5
  %184 = call i64 @lsame_(ptr noundef %183, ptr noundef @.str.5)
  %185 = icmp ne i64 %184, 0
  br i1 %185, label %190, label %186

186:                                              ; preds = %179
  %187 = load ptr, ptr %42, align 8, !tbaa !5
  %188 = call i64 @lsame_(ptr noundef %187, ptr noundef @.str.4)
  %189 = icmp ne i64 %188, 0
  br label %190

190:                                              ; preds = %186, %179
  %191 = phi i1 [ true, %179 ], [ %189, %186 ]
  %192 = zext i1 %191 to i32
  %193 = sext i32 %192 to i64
  store i64 %193, ptr %86, align 8, !tbaa !9
  br label %194

194:                                              ; preds = %190, %169
  %195 = load ptr, ptr %50, align 8, !tbaa !5
  store double 0.000000e+00, ptr %195, align 8, !tbaa !11
  %196 = load i64, ptr %83, align 8, !tbaa !9
  %197 = icmp ne i64 %196, 0
  br i1 %197, label %207, label %198

198:                                              ; preds = %194
  %199 = load i64, ptr %81, align 8, !tbaa !9
  %200 = icmp ne i64 %199, 0
  br i1 %200, label %207, label %201

201:                                              ; preds = %198
  %202 = load ptr, ptr %31, align 8, !tbaa !5
  %203 = call i64 @lsame_(ptr noundef %202, ptr noundef @.str.6)
  %204 = icmp ne i64 %203, 0
  br i1 %204, label %207, label %205

205:                                              ; preds = %201
  %206 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -1, ptr %206, align 8, !tbaa !9
  br label %484

207:                                              ; preds = %201, %198, %194
  %208 = load i64, ptr %88, align 8, !tbaa !9
  %209 = icmp ne i64 %208, 0
  br i1 %209, label %220, label %210

210:                                              ; preds = %207
  %211 = load ptr, ptr %32, align 8, !tbaa !5
  %212 = call i64 @lsame_(ptr noundef %211, ptr noundef @.str.7)
  %213 = icmp ne i64 %212, 0
  br i1 %213, label %220, label %214

214:                                              ; preds = %210
  %215 = load ptr, ptr %32, align 8, !tbaa !5
  %216 = call i64 @lsame_(ptr noundef %215, ptr noundef @.str.5)
  %217 = icmp ne i64 %216, 0
  br i1 %217, label %220, label %218

218:                                              ; preds = %214
  %219 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -2, ptr %219, align 8, !tbaa !9
  br label %483

220:                                              ; preds = %214, %210, %207
  %221 = load ptr, ptr %33, align 8, !tbaa !5
  %222 = load i64, ptr %221, align 8, !tbaa !9
  %223 = icmp slt i64 %222, 0
  br i1 %223, label %224, label %226

224:                                              ; preds = %220
  %225 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -3, ptr %225, align 8, !tbaa !9
  br label %482

226:                                              ; preds = %220
  %227 = load ptr, ptr %34, align 8, !tbaa !5
  %228 = load i64, ptr %227, align 8, !tbaa !9
  %229 = icmp slt i64 %228, 0
  br i1 %229, label %230, label %232

230:                                              ; preds = %226
  %231 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -4, ptr %231, align 8, !tbaa !9
  br label %481

232:                                              ; preds = %226
  %233 = load ptr, ptr %35, align 8, !tbaa !5
  %234 = load i64, ptr %233, align 8, !tbaa !9
  %235 = icmp slt i64 %234, 0
  br i1 %235, label %236, label %238

236:                                              ; preds = %232
  %237 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -5, ptr %237, align 8, !tbaa !9
  br label %480

238:                                              ; preds = %232
  %239 = load ptr, ptr %36, align 8, !tbaa !5
  %240 = load i64, ptr %239, align 8, !tbaa !9
  %241 = icmp slt i64 %240, 0
  br i1 %241, label %242, label %244

242:                                              ; preds = %238
  %243 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -6, ptr %243, align 8, !tbaa !9
  br label %479

244:                                              ; preds = %238
  %245 = load ptr, ptr %38, align 8, !tbaa !5
  %246 = load i64, ptr %245, align 8, !tbaa !9
  %247 = load ptr, ptr %34, align 8, !tbaa !5
  %248 = load i64, ptr %247, align 8, !tbaa !9
  %249 = load ptr, ptr %35, align 8, !tbaa !5
  %250 = load i64, ptr %249, align 8, !tbaa !9
  %251 = add nsw i64 %248, %250
  %252 = add nsw i64 %251, 1
  %253 = icmp slt i64 %246, %252
  br i1 %253, label %254, label %256

254:                                              ; preds = %244
  %255 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -8, ptr %255, align 8, !tbaa !9
  br label %478

256:                                              ; preds = %244
  %257 = load ptr, ptr %40, align 8, !tbaa !5
  %258 = load i64, ptr %257, align 8, !tbaa !9
  %259 = load ptr, ptr %34, align 8, !tbaa !5
  %260 = load i64, ptr %259, align 8, !tbaa !9
  %261 = shl i64 %260, 1
  %262 = load ptr, ptr %35, align 8, !tbaa !5
  %263 = load i64, ptr %262, align 8, !tbaa !9
  %264 = add nsw i64 %261, %263
  %265 = add nsw i64 %264, 1
  %266 = icmp slt i64 %258, %265
  br i1 %266, label %267, label %269

267:                                              ; preds = %256
  %268 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -10, ptr %268, align 8, !tbaa !9
  br label %477

269:                                              ; preds = %256
  %270 = load ptr, ptr %31, align 8, !tbaa !5
  %271 = call i64 @lsame_(ptr noundef %270, ptr noundef @.str.6)
  %272 = icmp ne i64 %271, 0
  br i1 %272, label %273, label %285

273:                                              ; preds = %269
  %274 = load i64, ptr %90, align 8, !tbaa !9
  %275 = icmp ne i64 %274, 0
  br i1 %275, label %285, label %276

276:                                              ; preds = %273
  %277 = load i64, ptr %86, align 8, !tbaa !9
  %278 = icmp ne i64 %277, 0
  br i1 %278, label %285, label %279

279:                                              ; preds = %276
  %280 = load ptr, ptr %42, align 8, !tbaa !5
  %281 = call i64 @lsame_(ptr noundef %280, ptr noundef @.str)
  %282 = icmp ne i64 %281, 0
  br i1 %282, label %285, label %283

283:                                              ; preds = %279
  %284 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -12, ptr %284, align 8, !tbaa !9
  br label %476

285:                                              ; preds = %279, %276, %273, %269
  %286 = load i64, ptr %90, align 8, !tbaa !9
  %287 = icmp ne i64 %286, 0
  br i1 %287, label %288, label %360

288:                                              ; preds = %285
  %289 = load double, ptr %84, align 8, !tbaa !11
  store double %289, ptr %79, align 8, !tbaa !11
  store double 0.000000e+00, ptr %80, align 8, !tbaa !11
  %290 = load ptr, ptr %33, align 8, !tbaa !5
  %291 = load i64, ptr %290, align 8, !tbaa !9
  store i64 %291, ptr %72, align 8, !tbaa !9
  store i64 1, ptr %77, align 8, !tbaa !9
  br label %292

292:                                              ; preds = %325, %288
  %293 = load i64, ptr %77, align 8, !tbaa !9
  %294 = load i64, ptr %72, align 8, !tbaa !9
  %295 = icmp sle i64 %293, %294
  br i1 %295, label %296, label %328

296:                                              ; preds = %292
  %297 = load double, ptr %79, align 8, !tbaa !11
  store double %297, ptr %74, align 8, !tbaa !11
  %298 = load ptr, ptr %43, align 8, !tbaa !5
  %299 = load i64, ptr %77, align 8, !tbaa !9
  %300 = getelementptr inbounds double, ptr %298, i64 %299
  %301 = load double, ptr %300, align 8, !tbaa !11
  store double %301, ptr %75, align 8, !tbaa !11
  %302 = load double, ptr %74, align 8, !tbaa !11
  %303 = load double, ptr %75, align 8, !tbaa !11
  %304 = fcmp ole double %302, %303
  br i1 %304, label %305, label %307

305:                                              ; preds = %296
  %306 = load double, ptr %74, align 8, !tbaa !11
  br label %309

307:                                              ; preds = %296
  %308 = load double, ptr %75, align 8, !tbaa !11
  br label %309

309:                                              ; preds = %307, %305
  %310 = phi double [ %306, %305 ], [ %308, %307 ]
  store double %310, ptr %79, align 8, !tbaa !11
  %311 = load double, ptr %80, align 8, !tbaa !11
  store double %311, ptr %74, align 8, !tbaa !11
  %312 = load ptr, ptr %43, align 8, !tbaa !5
  %313 = load i64, ptr %77, align 8, !tbaa !9
  %314 = getelementptr inbounds double, ptr %312, i64 %313
  %315 = load double, ptr %314, align 8, !tbaa !11
  store double %315, ptr %75, align 8, !tbaa !11
  %316 = load double, ptr %74, align 8, !tbaa !11
  %317 = load double, ptr %75, align 8, !tbaa !11
  %318 = fcmp oge double %316, %317
  br i1 %318, label %319, label %321

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

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

323:                                              ; preds = %321, %319
  %324 = phi double [ %320, %319 ], [ %322, %321 ]
  store double %324, ptr %80, align 8, !tbaa !11
  br label %325

325:                                              ; preds = %323
  %326 = load i64, ptr %77, align 8, !tbaa !9
  %327 = add nsw i64 %326, 1
  store i64 %327, ptr %77, align 8, !tbaa !9
  br label %292, !llvm.loop !14

328:                                              ; preds = %292
  %329 = load double, ptr %79, align 8, !tbaa !11
  %330 = fcmp ole double %329, 0.000000e+00
  br i1 %330, label %331, label %333

331:                                              ; preds = %328
  %332 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -13, ptr %332, align 8, !tbaa !9
  br label %359

333:                                              ; preds = %328
  %334 = load ptr, ptr %33, align 8, !tbaa !5
  %335 = load i64, ptr %334, align 8, !tbaa !9
  %336 = icmp sgt i64 %335, 0
  br i1 %336, label %337, label %357

337:                                              ; preds = %333
  %338 = load double, ptr %79, align 8, !tbaa !11
  %339 = load double, ptr %89, align 8, !tbaa !11
  %340 = fcmp oge double %338, %339
  br i1 %340, label %341, label %343

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

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

345:                                              ; preds = %343, %341
  %346 = phi double [ %342, %341 ], [ %344, %343 ]
  %347 = load double, ptr %80, align 8, !tbaa !11
  %348 = load double, ptr %84, align 8, !tbaa !11
  %349 = fcmp ole double %347, %348
  br i1 %349, label %350, label %352

350:                                              ; preds = %345
  %351 = load double, ptr %80, align 8, !tbaa !11
  br label %354

352:                                              ; preds = %345
  %353 = load double, ptr %84, align 8, !tbaa !11
  br label %354

354:                                              ; preds = %352, %350
  %355 = phi double [ %351, %350 ], [ %353, %352 ]
  %356 = fdiv double %346, %355
  store double %356, ptr %87, align 8, !tbaa !11
  br label %358

357:                                              ; preds = %333
  store double 1.000000e+00, ptr %87, align 8, !tbaa !11
  br label %358

358:                                              ; preds = %357, %354
  br label %359

359:                                              ; preds = %358, %331
  br label %360

360:                                              ; preds = %359, %285
  %361 = load i64, ptr %86, align 8, !tbaa !9
  %362 = icmp ne i64 %361, 0
  br i1 %362, label %363, label %439

363:                                              ; preds = %360
  %364 = load ptr, ptr %59, align 8, !tbaa !5
  %365 = load i64, ptr %364, align 8, !tbaa !9
  %366 = icmp eq i64 %365, 0
  br i1 %366, label %367, label %439

367:                                              ; preds = %363
  %368 = load double, ptr %84, align 8, !tbaa !11
  store double %368, ptr %79, align 8, !tbaa !11
  store double 0.000000e+00, ptr %80, align 8, !tbaa !11
  %369 = load ptr, ptr %33, align 8, !tbaa !5
  %370 = load i64, ptr %369, align 8, !tbaa !9
  store i64 %370, ptr %72, align 8, !tbaa !9
  store i64 1, ptr %77, align 8, !tbaa !9
  br label %371

371:                                              ; preds = %404, %367
  %372 = load i64, ptr %77, align 8, !tbaa !9
  %373 = load i64, ptr %72, align 8, !tbaa !9
  %374 = icmp sle i64 %372, %373
  br i1 %374, label %375, label %407

375:                                              ; preds = %371
  %376 = load double, ptr %79, align 8, !tbaa !11
  store double %376, ptr %74, align 8, !tbaa !11
  %377 = load ptr, ptr %44, align 8, !tbaa !5
  %378 = load i64, ptr %77, align 8, !tbaa !9
  %379 = getelementptr inbounds double, ptr %377, i64 %378
  %380 = load double, ptr %379, align 8, !tbaa !11
  store double %380, ptr %75, align 8, !tbaa !11
  %381 = load double, ptr %74, align 8, !tbaa !11
  %382 = load double, ptr %75, align 8, !tbaa !11
  %383 = fcmp ole double %381, %382
  br i1 %383, label %384, label %386

384:                                              ; preds = %375
  %385 = load double, ptr %74, align 8, !tbaa !11
  br label %388

386:                                              ; preds = %375
  %387 = load double, ptr %75, align 8, !tbaa !11
  br label %388

388:                                              ; preds = %386, %384
  %389 = phi double [ %385, %384 ], [ %387, %386 ]
  store double %389, ptr %79, align 8, !tbaa !11
  %390 = load double, ptr %80, align 8, !tbaa !11
  store double %390, ptr %74, align 8, !tbaa !11
  %391 = load ptr, ptr %44, align 8, !tbaa !5
  %392 = load i64, ptr %77, align 8, !tbaa !9
  %393 = getelementptr inbounds double, ptr %391, i64 %392
  %394 = load double, ptr %393, align 8, !tbaa !11
  store double %394, ptr %75, align 8, !tbaa !11
  %395 = load double, ptr %74, align 8, !tbaa !11
  %396 = load double, ptr %75, align 8, !tbaa !11
  %397 = fcmp oge double %395, %396
  br i1 %397, label %398, label %400

398:                                              ; preds = %388
  %399 = load double, ptr %74, align 8, !tbaa !11
  br label %402

400:                                              ; preds = %388
  %401 = load double, ptr %75, align 8, !tbaa !11
  br label %402

402:                                              ; preds = %400, %398
  %403 = phi double [ %399, %398 ], [ %401, %400 ]
  store double %403, ptr %80, align 8, !tbaa !11
  br label %404

404:                                              ; preds = %402
  %405 = load i64, ptr %77, align 8, !tbaa !9
  %406 = add nsw i64 %405, 1
  store i64 %406, ptr %77, align 8, !tbaa !9
  br label %371, !llvm.loop !16

407:                                              ; preds = %371
  %408 = load double, ptr %79, align 8, !tbaa !11
  %409 = fcmp ole double %408, 0.000000e+00
  br i1 %409, label %410, label %412

410:                                              ; preds = %407
  %411 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -14, ptr %411, align 8, !tbaa !9
  br label %438

412:                                              ; preds = %407
  %413 = load ptr, ptr %33, align 8, !tbaa !5
  %414 = load i64, ptr %413, align 8, !tbaa !9
  %415 = icmp sgt i64 %414, 0
  br i1 %415, label %416, label %436

416:                                              ; preds = %412
  %417 = load double, ptr %79, align 8, !tbaa !11
  %418 = load double, ptr %89, align 8, !tbaa !11
  %419 = fcmp oge double %417, %418
  br i1 %419, label %420, label %422

420:                                              ; preds = %416
  %421 = load double, ptr %79, align 8, !tbaa !11
  br label %424

422:                                              ; preds = %416
  %423 = load double, ptr %89, align 8, !tbaa !11
  br label %424

424:                                              ; preds = %422, %420
  %425 = phi double [ %421, %420 ], [ %423, %422 ]
  %426 = load double, ptr %80, align 8, !tbaa !11
  %427 = load double, ptr %84, align 8, !tbaa !11
  %428 = fcmp ole double %426, %427
  br i1 %428, label %429, label %431

429:                                              ; preds = %424
  %430 = load double, ptr %80, align 8, !tbaa !11
  br label %433

431:                                              ; preds = %424
  %432 = load double, ptr %84, align 8, !tbaa !11
  br label %433

433:                                              ; preds = %431, %429
  %434 = phi double [ %430, %429 ], [ %432, %431 ]
  %435 = fdiv double %425, %434
  store double %435, ptr %82, align 8, !tbaa !11
  br label %437

436:                                              ; preds = %412
  store double 1.000000e+00, ptr %82, align 8, !tbaa !11
  br label %437

437:                                              ; preds = %436, %433
  br label %438

438:                                              ; preds = %437, %410
  br label %439

439:                                              ; preds = %438, %363, %360
  %440 = load ptr, ptr %59, align 8, !tbaa !5
  %441 = load i64, ptr %440, align 8, !tbaa !9
  %442 = icmp eq i64 %441, 0
  br i1 %442, label %443, label %475

443:                                              ; preds = %439
  %444 = load ptr, ptr %46, align 8, !tbaa !5
  %445 = load i64, ptr %444, align 8, !tbaa !9
  %446 = load ptr, ptr %33, align 8, !tbaa !5
  %447 = load i64, ptr %446, align 8, !tbaa !9
  %448 = icmp sge i64 1, %447
  br i1 %448, label %449, label %450

449:                                              ; preds = %443
  br label %453

450:                                              ; preds = %443
  %451 = load ptr, ptr %33, align 8, !tbaa !5
  %452 = load i64, ptr %451, align 8, !tbaa !9
  br label %453

453:                                              ; preds = %450, %449
  %454 = phi i64 [ 1, %449 ], [ %452, %450 ]
  %455 = icmp slt i64 %445, %454
  br i1 %455, label %456, label %458

456:                                              ; preds = %453
  %457 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -15, ptr %457, align 8, !tbaa !9
  br label %474

458:                                              ; preds = %453
  %459 = load ptr, ptr %48, align 8, !tbaa !5
  %460 = load i64, ptr %459, align 8, !tbaa !9
  %461 = load ptr, ptr %33, align 8, !tbaa !5
  %462 = load i64, ptr %461, align 8, !tbaa !9
  %463 = icmp sge i64 1, %462
  br i1 %463, label %464, label %465

464:                                              ; preds = %458
  br label %468

465:                                              ; preds = %458
  %466 = load ptr, ptr %33, align 8, !tbaa !5
  %467 = load i64, ptr %466, align 8, !tbaa !9
  br label %468

468:                                              ; preds = %465, %464
  %469 = phi i64 [ 1, %464 ], [ %467, %465 ]
  %470 = icmp slt i64 %460, %469
  br i1 %470, label %471, label %473

471:                                              ; preds = %468
  %472 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -16, ptr %472, align 8, !tbaa !9
  br label %473

473:                                              ; preds = %471, %468
  br label %474

474:                                              ; preds = %473, %456
  br label %475

475:                                              ; preds = %474, %439
  br label %476

476:                                              ; preds = %475, %283
  br label %477

477:                                              ; preds = %476, %267
  br label %478

478:                                              ; preds = %477, %254
  br label %479

479:                                              ; preds = %478, %242
  br label %480

480:                                              ; preds = %479, %236
  br label %481

481:                                              ; preds = %480, %230
  br label %482

482:                                              ; preds = %481, %224
  br label %483

483:                                              ; preds = %482, %218
  br label %484

484:                                              ; preds = %483, %205
  %485 = load ptr, ptr %59, align 8, !tbaa !5
  %486 = load i64, ptr %485, align 8, !tbaa !9
  %487 = icmp ne i64 %486, 0
  br i1 %487, label %488, label %493

488:                                              ; preds = %484
  %489 = load ptr, ptr %59, align 8, !tbaa !5
  %490 = load i64, ptr %489, align 8, !tbaa !9
  %491 = sub nsw i64 0, %490
  store i64 %491, ptr %72, align 8, !tbaa !9
  %492 = call i32 @xerbla_(ptr noundef @.str.8, ptr noundef %72)
  store i32 0, ptr %30, align 4
  store i32 1, ptr %91, align 4
  br label %826

493:                                              ; preds = %484
  %494 = load i64, ptr %81, align 8, !tbaa !9
  %495 = icmp ne i64 %494, 0
  br i1 %495, label %496, label %586

496:                                              ; preds = %493
  %497 = load ptr, ptr %33, align 8, !tbaa !5
  %498 = load ptr, ptr %33, align 8, !tbaa !5
  %499 = load ptr, ptr %34, align 8, !tbaa !5
  %500 = load ptr, ptr %35, align 8, !tbaa !5
  %501 = load ptr, ptr %37, align 8, !tbaa !5
  %502 = load i64, ptr %61, align 8, !tbaa !9
  %503 = getelementptr inbounds double, ptr %501, i64 %502
  %504 = load ptr, ptr %38, align 8, !tbaa !5
  %505 = load ptr, ptr %43, align 8, !tbaa !5
  %506 = getelementptr inbounds double, ptr %505, i64 1
  %507 = load ptr, ptr %44, align 8, !tbaa !5
  %508 = getelementptr inbounds double, ptr %507, i64 1
  %509 = call i32 @dgbequb_(ptr noundef %497, ptr noundef %498, ptr noundef %499, ptr noundef %500, ptr noundef %503, ptr noundef %504, ptr noundef %506, ptr noundef %508, ptr noundef %87, ptr noundef %82, ptr noundef %78, ptr noundef %85)
  %510 = load i64, ptr %85, align 8, !tbaa !9
  %511 = icmp eq i64 %510, 0
  br i1 %511, label %512, label %549

512:                                              ; preds = %496
  %513 = load ptr, ptr %33, align 8, !tbaa !5
  %514 = load ptr, ptr %33, align 8, !tbaa !5
  %515 = load ptr, ptr %34, align 8, !tbaa !5
  %516 = load ptr, ptr %35, align 8, !tbaa !5
  %517 = load ptr, ptr %37, align 8, !tbaa !5
  %518 = load i64, ptr %61, align 8, !tbaa !9
  %519 = getelementptr inbounds double, ptr %517, i64 %518
  %520 = load ptr, ptr %38, align 8, !tbaa !5
  %521 = load ptr, ptr %43, align 8, !tbaa !5
  %522 = getelementptr inbounds double, ptr %521, i64 1
  %523 = load ptr, ptr %44, align 8, !tbaa !5
  %524 = getelementptr inbounds double, ptr %523, i64 1
  %525 = load ptr, ptr %42, align 8, !tbaa !5
  %526 = call i32 @dlaqgb_(ptr noundef %513, ptr noundef %514, ptr noundef %515, ptr noundef %516, ptr noundef %519, ptr noundef %520, ptr noundef %522, ptr noundef %524, ptr noundef %87, ptr noundef %82, ptr noundef %78, ptr noundef %525)
  %527 = load ptr, ptr %42, align 8, !tbaa !5
  %528 = call i64 @lsame_(ptr noundef %527, ptr noundef @.str.3)
  %529 = icmp ne i64 %528, 0
  br i1 %529, label %534, label %530

530:                                              ; preds = %512
  %531 = load ptr, ptr %42, align 8, !tbaa !5
  %532 = call i64 @lsame_(ptr noundef %531, ptr noundef @.str.4)
  %533 = icmp ne i64 %532, 0
  br label %534

534:                                              ; preds = %530, %512
  %535 = phi i1 [ true, %512 ], [ %533, %530 ]
  %536 = zext i1 %535 to i32
  %537 = sext i32 %536 to i64
  store i64 %537, ptr %90, align 8, !tbaa !9
  %538 = load ptr, ptr %42, align 8, !tbaa !5
  %539 = call i64 @lsame_(ptr noundef %538, ptr noundef @.str.5)
  %540 = icmp ne i64 %539, 0
  br i1 %540, label %545, label %541

541:                                              ; preds = %534
  %542 = load ptr, ptr %42, align 8, !tbaa !5
  %543 = call i64 @lsame_(ptr noundef %542, ptr noundef @.str.4)
  %544 = icmp ne i64 %543, 0
  br label %545

545:                                              ; preds = %541, %534
  %546 = phi i1 [ true, %534 ], [ %544, %541 ]
  %547 = zext i1 %546 to i32
  %548 = sext i32 %547 to i64
  store i64 %548, ptr %86, align 8, !tbaa !9
  br label %549

549:                                              ; preds = %545, %496
  %550 = load i64, ptr %90, align 8, !tbaa !9
  %551 = icmp ne i64 %550, 0
  br i1 %551, label %567, label %552

552:                                              ; preds = %549
  %553 = load ptr, ptr %33, align 8, !tbaa !5
  %554 = load i64, ptr %553, align 8, !tbaa !9
  store i64 %554, ptr %72, align 8, !tbaa !9
  store i64 1, ptr %77, align 8, !tbaa !9
  br label %555

555:                                              ; preds = %563, %552
  %556 = load i64, ptr %77, align 8, !tbaa !9
  %557 = load i64, ptr %72, align 8, !tbaa !9
  %558 = icmp sle i64 %556, %557
  br i1 %558, label %559, label %566

559:                                              ; preds = %555
  %560 = load ptr, ptr %43, align 8, !tbaa !5
  %561 = load i64, ptr %77, align 8, !tbaa !9
  %562 = getelementptr inbounds double, ptr %560, i64 %561
  store double 1.000000e+00, ptr %562, align 8, !tbaa !11
  br label %563

563:                                              ; preds = %559
  %564 = load i64, ptr %77, align 8, !tbaa !9
  %565 = add nsw i64 %564, 1
  store i64 %565, ptr %77, align 8, !tbaa !9
  br label %555, !llvm.loop !17

566:                                              ; preds = %555
  br label %567

567:                                              ; preds = %566, %549
  %568 = load i64, ptr %86, align 8, !tbaa !9
  %569 = icmp ne i64 %568, 0
  br i1 %569, label %585, label %570

570:                                              ; preds = %567
  %571 = load ptr, ptr %33, align 8, !tbaa !5
  %572 = load i64, ptr %571, align 8, !tbaa !9
  store i64 %572, ptr %72, align 8, !tbaa !9
  store i64 1, ptr %77, align 8, !tbaa !9
  br label %573

573:                                              ; preds = %581, %570
  %574 = load i64, ptr %77, align 8, !tbaa !9
  %575 = load i64, ptr %72, align 8, !tbaa !9
  %576 = icmp sle i64 %574, %575
  br i1 %576, label %577, label %584

577:                                              ; preds = %573
  %578 = load ptr, ptr %44, align 8, !tbaa !5
  %579 = load i64, ptr %77, align 8, !tbaa !9
  %580 = getelementptr inbounds double, ptr %578, i64 %579
  store double 1.000000e+00, ptr %580, align 8, !tbaa !11
  br label %581

581:                                              ; preds = %577
  %582 = load i64, ptr %77, align 8, !tbaa !9
  %583 = add nsw i64 %582, 1
  store i64 %583, ptr %77, align 8, !tbaa !9
  br label %573, !llvm.loop !18

584:                                              ; preds = %573
  br label %585

585:                                              ; preds = %584, %567
  br label %586

586:                                              ; preds = %585, %493
  %587 = load i64, ptr %88, align 8, !tbaa !9
  %588 = icmp ne i64 %587, 0
  br i1 %588, label %589, label %603

589:                                              ; preds = %586
  %590 = load i64, ptr %90, align 8, !tbaa !9
  %591 = icmp ne i64 %590, 0
  br i1 %591, label %592, label %602

592:                                              ; preds = %589
  %593 = load ptr, ptr %33, align 8, !tbaa !5
  %594 = load ptr, ptr %36, align 8, !tbaa !5
  %595 = load ptr, ptr %43, align 8, !tbaa !5
  %596 = getelementptr inbounds double, ptr %595, i64 1
  %597 = load ptr, ptr %45, align 8, !tbaa !5
  %598 = load i64, ptr %65, align 8, !tbaa !9
  %599 = getelementptr inbounds double, ptr %597, i64 %598
  %600 = load ptr, ptr %46, align 8, !tbaa !5
  %601 = call i32 @dlascl2_(ptr noundef %593, ptr noundef %594, ptr noundef %596, ptr noundef %599, ptr noundef %600)
  br label %602

602:                                              ; preds = %592, %589
  br label %617

603:                                              ; preds = %586
  %604 = load i64, ptr %86, align 8, !tbaa !9
  %605 = icmp ne i64 %604, 0
  br i1 %605, label %606, label %616

606:                                              ; preds = %603
  %607 = load ptr, ptr %33, align 8, !tbaa !5
  %608 = load ptr, ptr %36, align 8, !tbaa !5
  %609 = load ptr, ptr %44, align 8, !tbaa !5
  %610 = getelementptr inbounds double, ptr %609, i64 1
  %611 = load ptr, ptr %45, align 8, !tbaa !5
  %612 = load i64, ptr %65, align 8, !tbaa !9
  %613 = getelementptr inbounds double, ptr %611, i64 %612
  %614 = load ptr, ptr %46, align 8, !tbaa !5
  %615 = call i32 @dlascl2_(ptr noundef %607, ptr noundef %608, ptr noundef %610, ptr noundef %613, ptr noundef %614)
  br label %616

616:                                              ; preds = %606, %603
  br label %617

617:                                              ; preds = %616, %602
  %618 = load i64, ptr %83, align 8, !tbaa !9
  %619 = icmp ne i64 %618, 0
  br i1 %619, label %623, label %620

620:                                              ; preds = %617
  %621 = load i64, ptr %81, align 8, !tbaa !9
  %622 = icmp ne i64 %621, 0
  br i1 %622, label %623, label %703

623:                                              ; preds = %620, %617
  %624 = load ptr, ptr %33, align 8, !tbaa !5
  %625 = load i64, ptr %624, align 8, !tbaa !9
  store i64 %625, ptr %72, align 8, !tbaa !9
  store i64 1, ptr %77, align 8, !tbaa !9
  br label %626

626:                                              ; preds = %668, %623
  %627 = load i64, ptr %77, align 8, !tbaa !9
  %628 = load i64, ptr %72, align 8, !tbaa !9
  %629 = icmp sle i64 %627, %628
  br i1 %629, label %630, label %671

630:                                              ; preds = %626
  %631 = load ptr, ptr %34, align 8, !tbaa !5
  %632 = load i64, ptr %631, align 8, !tbaa !9
  %633 = shl i64 %632, 1
  %634 = load ptr, ptr %35, align 8, !tbaa !5
  %635 = load i64, ptr %634, align 8, !tbaa !9
  %636 = add nsw i64 %633, %635
  %637 = add nsw i64 %636, 1
  store i64 %637, ptr %73, align 8, !tbaa !9
  %638 = load ptr, ptr %34, align 8, !tbaa !5
  %639 = load i64, ptr %638, align 8, !tbaa !9
  %640 = add nsw i64 %639, 1
  store i64 %640, ptr %76, align 8, !tbaa !9
  br label %641

641:                                              ; preds = %664, %630
  %642 = load i64, ptr %76, align 8, !tbaa !9
  %643 = load i64, ptr %73, align 8, !tbaa !9
  %644 = icmp sle i64 %642, %643
  br i1 %644, label %645, label %667

645:                                              ; preds = %641
  %646 = load ptr, ptr %37, align 8, !tbaa !5
  %647 = load i64, ptr %76, align 8, !tbaa !9
  %648 = load ptr, ptr %34, align 8, !tbaa !5
  %649 = load i64, ptr %648, align 8, !tbaa !9
  %650 = sub nsw i64 %647, %649
  %651 = load i64, ptr %77, align 8, !tbaa !9
  %652 = load i64, ptr %60, align 8, !tbaa !9
  %653 = mul nsw i64 %651, %652
  %654 = add nsw i64 %650, %653
  %655 = getelementptr inbounds double, ptr %646, i64 %654
  %656 = load double, ptr %655, align 8, !tbaa !11
  %657 = load ptr, ptr %39, align 8, !tbaa !5
  %658 = load i64, ptr %76, align 8, !tbaa !9
  %659 = load i64, ptr %77, align 8, !tbaa !9
  %660 = load i64, ptr %62, align 8, !tbaa !9
  %661 = mul nsw i64 %659, %660
  %662 = add nsw i64 %658, %661
  %663 = getelementptr inbounds double, ptr %657, i64 %662
  store double %656, ptr %663, align 8, !tbaa !11
  br label %664

664:                                              ; preds = %645
  %665 = load i64, ptr %76, align 8, !tbaa !9
  %666 = add nsw i64 %665, 1
  store i64 %666, ptr %76, align 8, !tbaa !9
  br label %641, !llvm.loop !19

667:                                              ; preds = %641
  br label %668

668:                                              ; preds = %667
  %669 = load i64, ptr %77, align 8, !tbaa !9
  %670 = add nsw i64 %669, 1
  store i64 %670, ptr %77, align 8, !tbaa !9
  br label %626, !llvm.loop !20

671:                                              ; preds = %626
  %672 = load ptr, ptr %33, align 8, !tbaa !5
  %673 = load ptr, ptr %33, align 8, !tbaa !5
  %674 = load ptr, ptr %34, align 8, !tbaa !5
  %675 = load ptr, ptr %35, align 8, !tbaa !5
  %676 = load ptr, ptr %39, align 8, !tbaa !5
  %677 = load i64, ptr %63, align 8, !tbaa !9
  %678 = getelementptr inbounds double, ptr %676, i64 %677
  %679 = load ptr, ptr %40, align 8, !tbaa !5
  %680 = load ptr, ptr %41, align 8, !tbaa !5
  %681 = getelementptr inbounds i64, ptr %680, i64 1
  %682 = load ptr, ptr %59, align 8, !tbaa !5
  %683 = call i32 @dgbtrf_(ptr noundef %672, ptr noundef %673, ptr noundef %674, ptr noundef %675, ptr noundef %678, ptr noundef %679, ptr noundef %681, ptr noundef %682)
  %684 = load ptr, ptr %59, align 8, !tbaa !5
  %685 = load i64, ptr %684, align 8, !tbaa !9
  %686 = icmp sgt i64 %685, 0
  br i1 %686, label %687, label %702

687:                                              ; preds = %671
  %688 = load ptr, ptr %33, align 8, !tbaa !5
  %689 = load ptr, ptr %34, align 8, !tbaa !5
  %690 = load ptr, ptr %35, align 8, !tbaa !5
  %691 = load ptr, ptr %59, align 8, !tbaa !5
  %692 = load ptr, ptr %37, align 8, !tbaa !5
  %693 = load i64, ptr %61, align 8, !tbaa !9
  %694 = getelementptr inbounds double, ptr %692, i64 %693
  %695 = load ptr, ptr %38, align 8, !tbaa !5
  %696 = load ptr, ptr %39, align 8, !tbaa !5
  %697 = load i64, ptr %63, align 8, !tbaa !9
  %698 = getelementptr inbounds double, ptr %696, i64 %697
  %699 = load ptr, ptr %40, align 8, !tbaa !5
  %700 = call double @dla_gbrpvgrw__(ptr noundef %688, ptr noundef %689, ptr noundef %690, ptr noundef %691, ptr noundef %694, ptr noundef %695, ptr noundef %698, ptr noundef %699)
  %701 = load ptr, ptr %50, align 8, !tbaa !5
  store double %700, ptr %701, align 8, !tbaa !11
  store i32 0, ptr %30, align 4
  store i32 1, ptr %91, align 4
  br label %826

702:                                              ; preds = %671
  br label %703

703:                                              ; preds = %702, %620
  %704 = load ptr, ptr %33, align 8, !tbaa !5
  %705 = load ptr, ptr %34, align 8, !tbaa !5
  %706 = load ptr, ptr %35, align 8, !tbaa !5
  %707 = load ptr, ptr %33, align 8, !tbaa !5
  %708 = load ptr, ptr %37, align 8, !tbaa !5
  %709 = load i64, ptr %61, align 8, !tbaa !9
  %710 = getelementptr inbounds double, ptr %708, i64 %709
  %711 = load ptr, ptr %38, align 8, !tbaa !5
  %712 = load ptr, ptr %39, align 8, !tbaa !5
  %713 = load i64, ptr %63, align 8, !tbaa !9
  %714 = getelementptr inbounds double, ptr %712, i64 %713
  %715 = load ptr, ptr %40, align 8, !tbaa !5
  %716 = call double @dla_gbrpvgrw__(ptr noundef %704, ptr noundef %705, ptr noundef %706, ptr noundef %707, ptr noundef %710, ptr noundef %711, ptr noundef %714, ptr noundef %715)
  %717 = load ptr, ptr %50, align 8, !tbaa !5
  store double %716, ptr %717, align 8, !tbaa !11
  %718 = load ptr, ptr %33, align 8, !tbaa !5
  %719 = load ptr, ptr %36, align 8, !tbaa !5
  %720 = load ptr, ptr %45, align 8, !tbaa !5
  %721 = load i64, ptr %65, align 8, !tbaa !9
  %722 = getelementptr inbounds double, ptr %720, i64 %721
  %723 = load ptr, ptr %46, align 8, !tbaa !5
  %724 = load ptr, ptr %47, align 8, !tbaa !5
  %725 = load i64, ptr %67, align 8, !tbaa !9
  %726 = getelementptr inbounds double, ptr %724, i64 %725
  %727 = load ptr, ptr %48, align 8, !tbaa !5
  %728 = call i32 @dlacpy_(ptr noundef @.str.9, ptr noundef %718, ptr noundef %719, ptr noundef %722, ptr noundef %723, ptr noundef %726, ptr noundef %727)
  %729 = load ptr, ptr %32, align 8, !tbaa !5
  %730 = load ptr, ptr %33, align 8, !tbaa !5
  %731 = load ptr, ptr %34, align 8, !tbaa !5
  %732 = load ptr, ptr %35, align 8, !tbaa !5
  %733 = load ptr, ptr %36, align 8, !tbaa !5
  %734 = load ptr, ptr %39, align 8, !tbaa !5
  %735 = load i64, ptr %63, align 8, !tbaa !9
  %736 = getelementptr inbounds double, ptr %734, i64 %735
  %737 = load ptr, ptr %40, align 8, !tbaa !5
  %738 = load ptr, ptr %41, align 8, !tbaa !5
  %739 = getelementptr inbounds i64, ptr %738, i64 1
  %740 = load ptr, ptr %47, align 8, !tbaa !5
  %741 = load i64, ptr %67, align 8, !tbaa !9
  %742 = getelementptr inbounds double, ptr %740, i64 %741
  %743 = load ptr, ptr %48, align 8, !tbaa !5
  %744 = load ptr, ptr %59, align 8, !tbaa !5
  %745 = call i32 @dgbtrs_(ptr noundef %729, ptr noundef %730, ptr noundef %731, ptr noundef %732, ptr noundef %733, ptr noundef %736, ptr noundef %737, ptr noundef %739, ptr noundef %742, ptr noundef %743, ptr noundef %744)
  %746 = load ptr, ptr %32, align 8, !tbaa !5
  %747 = load ptr, ptr %42, align 8, !tbaa !5
  %748 = load ptr, ptr %33, align 8, !tbaa !5
  %749 = load ptr, ptr %34, align 8, !tbaa !5
  %750 = load ptr, ptr %35, align 8, !tbaa !5
  %751 = load ptr, ptr %36, align 8, !tbaa !5
  %752 = load ptr, ptr %37, align 8, !tbaa !5
  %753 = load i64, ptr %61, align 8, !tbaa !9
  %754 = getelementptr inbounds double, ptr %752, i64 %753
  %755 = load ptr, ptr %38, align 8, !tbaa !5
  %756 = load ptr, ptr %39, align 8, !tbaa !5
  %757 = load i64, ptr %63, align 8, !tbaa !9
  %758 = getelementptr inbounds double, ptr %756, i64 %757
  %759 = load ptr, ptr %40, align 8, !tbaa !5
  %760 = load ptr, ptr %41, align 8, !tbaa !5
  %761 = getelementptr inbounds i64, ptr %760, i64 1
  %762 = load ptr, ptr %43, align 8, !tbaa !5
  %763 = getelementptr inbounds double, ptr %762, i64 1
  %764 = load ptr, ptr %44, align 8, !tbaa !5
  %765 = getelementptr inbounds double, ptr %764, i64 1
  %766 = load ptr, ptr %45, align 8, !tbaa !5
  %767 = load i64, ptr %65, align 8, !tbaa !9
  %768 = getelementptr inbounds double, ptr %766, i64 %767
  %769 = load ptr, ptr %46, align 8, !tbaa !5
  %770 = load ptr, ptr %47, align 8, !tbaa !5
  %771 = load i64, ptr %67, align 8, !tbaa !9
  %772 = getelementptr inbounds double, ptr %770, i64 %771
  %773 = load ptr, ptr %48, align 8, !tbaa !5
  %774 = load ptr, ptr %49, align 8, !tbaa !5
  %775 = load ptr, ptr %51, align 8, !tbaa !5
  %776 = getelementptr inbounds double, ptr %775, i64 1
  %777 = load ptr, ptr %52, align 8, !tbaa !5
  %778 = load ptr, ptr %53, align 8, !tbaa !5
  %779 = load i64, ptr %69, align 8, !tbaa !9
  %780 = getelementptr inbounds double, ptr %778, i64 %779
  %781 = load ptr, ptr %54, align 8, !tbaa !5
  %782 = load i64, ptr %71, align 8, !tbaa !9
  %783 = getelementptr inbounds double, ptr %781, i64 %782
  %784 = load ptr, ptr %55, align 8, !tbaa !5
  %785 = load ptr, ptr %56, align 8, !tbaa !5
  %786 = getelementptr inbounds double, ptr %785, i64 1
  %787 = load ptr, ptr %57, align 8, !tbaa !5
  %788 = getelementptr inbounds double, ptr %787, i64 1
  %789 = load ptr, ptr %58, align 8, !tbaa !5
  %790 = getelementptr inbounds i64, ptr %789, i64 1
  %791 = load ptr, ptr %59, align 8, !tbaa !5
  %792 = call i32 @dgbrfsx_(ptr noundef %746, ptr noundef %747, ptr noundef %748, ptr noundef %749, ptr noundef %750, ptr noundef %751, ptr noundef %754, ptr noundef %755, ptr noundef %758, ptr noundef %759, ptr noundef %761, ptr noundef %763, ptr noundef %765, ptr noundef %768, ptr noundef %769, ptr noundef %772, ptr noundef %773, ptr noundef %774, ptr noundef %776, ptr noundef %777, ptr noundef %780, ptr noundef %783, ptr noundef %784, ptr noundef %786, ptr noundef %788, ptr noundef %790, ptr noundef %791)
  %793 = load i64, ptr %86, align 8, !tbaa !9
  %794 = icmp ne i64 %793, 0
  br i1 %794, label %795, label %808

795:                                              ; preds = %703
  %796 = load i64, ptr %88, align 8, !tbaa !9
  %797 = icmp ne i64 %796, 0
  br i1 %797, label %798, label %808

798:                                              ; preds = %795
  %799 = load ptr, ptr %33, align 8, !tbaa !5
  %800 = load ptr, ptr %36, align 8, !tbaa !5
  %801 = load ptr, ptr %44, align 8, !tbaa !5
  %802 = getelementptr inbounds double, ptr %801, i64 1
  %803 = load ptr, ptr %47, align 8, !tbaa !5
  %804 = load i64, ptr %67, align 8, !tbaa !9
  %805 = getelementptr inbounds double, ptr %803, i64 %804
  %806 = load ptr, ptr %48, align 8, !tbaa !5
  %807 = call i32 @dlascl2_(ptr noundef %799, ptr noundef %800, ptr noundef %802, ptr noundef %805, ptr noundef %806)
  br label %825

808:                                              ; preds = %795, %703
  %809 = load i64, ptr %90, align 8, !tbaa !9
  %810 = icmp ne i64 %809, 0
  br i1 %810, label %811, label %824

811:                                              ; preds = %808
  %812 = load i64, ptr %88, align 8, !tbaa !9
  %813 = icmp ne i64 %812, 0
  br i1 %813, label %824, label %814

814:                                              ; preds = %811
  %815 = load ptr, ptr %33, align 8, !tbaa !5
  %816 = load ptr, ptr %36, align 8, !tbaa !5
  %817 = load ptr, ptr %43, align 8, !tbaa !5
  %818 = getelementptr inbounds double, ptr %817, i64 1
  %819 = load ptr, ptr %47, align 8, !tbaa !5
  %820 = load i64, ptr %67, align 8, !tbaa !9
  %821 = getelementptr inbounds double, ptr %819, i64 %820
  %822 = load ptr, ptr %48, align 8, !tbaa !5
  %823 = call i32 @dlascl2_(ptr noundef %815, ptr noundef %816, ptr noundef %818, ptr noundef %821, ptr noundef %822)
  br label %824

824:                                              ; preds = %814, %811, %808
  br label %825

825:                                              ; preds = %824, %798
  store i32 0, ptr %30, align 4
  store i32 1, ptr %91, align 4
  br label %826

826:                                              ; preds = %825, %687, %488
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #3
  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
  %827 = load i32, ptr %30, align 4
  ret i32 %827
}

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

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

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

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

declare double @dla_gbrpvgrw__(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 @dgbtrs_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare i32 @dgbrfsx_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!7, !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}


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

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

.thread:                                          ; preds = %29
  store i8 78, ptr %11, align 1, !tbaa !9
  store double 0.000000e+00, ptr %19, align 8, !tbaa !10
  br label %66

50:                                               ; preds = %29
  %51 = tail call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.3) #4
  %.not = icmp eq i64 %51, 0
  br i1 %.not, label %52, label %55

52:                                               ; preds = %50
  %53 = tail call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.4) #4
  %54 = icmp ne i64 %53, 0
  br label %55

55:                                               ; preds = %52, %50
  %56 = phi i1 [ true, %50 ], [ %54, %52 ]
  %57 = zext i1 %56 to i64
  %58 = tail call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.5) #4
  %.not348 = icmp eq i64 %58, 0
  br i1 %.not348, label %59, label %62

59:                                               ; preds = %55
  %60 = tail call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.4) #4
  %61 = icmp ne i64 %60, 0
  br label %62

62:                                               ; preds = %59, %55
  %63 = phi i1 [ true, %55 ], [ %61, %59 ]
  %64 = zext i1 %63 to i64
  store double 0.000000e+00, ptr %19, align 8, !tbaa !10
  %65 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.6) #4
  %.not349 = icmp eq i64 %65, 0
  br i1 %.not349, label %.thread382.sink.split, label %66

66:                                               ; preds = %.thread, %62
  %.0375 = phi i64 [ 0, %.thread ], [ %57, %62 ]
  %.0332373 = phi i64 [ 0, %.thread ], [ %64, %62 ]
  %.not350 = icmp eq i64 %45, 0
  br i1 %.not350, label %67, label %71

67:                                               ; preds = %66
  %68 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.7) #4
  %.not351 = icmp eq i64 %68, 0
  br i1 %.not351, label %69, label %71

69:                                               ; preds = %67
  %70 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.5) #4
  %.not352 = icmp eq i64 %70, 0
  br i1 %.not352, label %.thread382.sink.split, label %71

71:                                               ; preds = %69, %67, %66
  %72 = load i64, ptr %2, align 8, !tbaa !5
  %73 = icmp slt i64 %72, 0
  br i1 %73, label %.thread382.sink.split, label %74

74:                                               ; preds = %71
  %75 = load i64, ptr %3, align 8, !tbaa !5
  %76 = icmp slt i64 %75, 0
  br i1 %76, label %.thread382.sink.split, label %77

77:                                               ; preds = %74
  %78 = load i64, ptr %4, align 8, !tbaa !5
  %79 = icmp slt i64 %78, 0
  br i1 %79, label %.thread382.sink.split, label %80

80:                                               ; preds = %77
  %81 = load i64, ptr %5, align 8, !tbaa !5
  %82 = icmp slt i64 %81, 0
  br i1 %82, label %.thread382.sink.split, label %83

83:                                               ; preds = %80
  %84 = load i64, ptr %7, align 8, !tbaa !5
  %85 = add nuw nsw i64 %78, %75
  %.not353 = icmp sgt i64 %84, %85
  br i1 %.not353, label %86, label %.thread382.sink.split

86:                                               ; preds = %83
  %87 = load i64, ptr %9, align 8, !tbaa !5
  %88 = shl nuw i64 %75, 1
  %89 = add nsw i64 %78, %88
  %.not354 = icmp sgt i64 %87, %89
  br i1 %.not354, label %90, label %.thread382.sink.split

90:                                               ; preds = %86
  %91 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.6) #4
  %92 = icmp eq i64 %91, 0
  %93 = icmp ne i64 %.0375, 0
  %or.cond5 = select i1 %92, i1 true, i1 %93
  %94 = icmp ne i64 %.0332373, 0
  %or.cond7 = select i1 %or.cond5, i1 true, i1 %94
  br i1 %or.cond7, label %97, label %95

95:                                               ; preds = %90
  %96 = tail call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str) #4
  %.not355 = icmp eq i64 %96, 0
  br i1 %.not355, label %.thread382.sink.split, label %..thread377_crit_edge

..thread377_crit_edge:                            ; preds = %95
  %.pr.pre = load i64, ptr %28, align 8, !tbaa !5
  br label %.thread377

97:                                               ; preds = %90
  br i1 %93, label %98, label %130

98:                                               ; preds = %97
  %99 = load i64, ptr %2, align 8, !tbaa !5
  %.not356406 = icmp slt i64 %99, 1
  br i1 %.not356406, label %._crit_edge, label %.lr.ph.preheader

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

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

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %.0335409 = phi double [ 0.000000e+00, %.lr.ph.preheader.new ], [ %112, %.lr.ph ]
  %.0337408 = phi double [ %47, %.lr.ph.preheader.new ], [ %110, %.lr.ph ]
  %.0339407 = phi i64 [ 1, %.lr.ph.preheader.new ], [ %113, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %101 = getelementptr inbounds double, ptr %41, i64 %.0339407
  %102 = load double, ptr %101, align 8, !tbaa !10
  %103 = fcmp ole double %.0337408, %102
  %104 = select i1 %103, double %.0337408, double %102
  %105 = fcmp oge double %.0335409, %102
  %106 = select i1 %105, double %.0335409, double %102
  %107 = getelementptr double, ptr %12, i64 %.0339407
  %108 = load double, ptr %107, align 8, !tbaa !10
  %109 = fcmp ole double %104, %108
  %110 = select i1 %109, double %104, double %108
  %111 = fcmp oge double %106, %108
  %112 = select i1 %111, double %106, double %108
  %113 = add nuw i64 %.0339407, 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
  %.lcssa503.ph = phi double [ poison, %.lr.ph.preheader ], [ %110, %.lr.ph ]
  %.lcssa502.ph = phi double [ poison, %.lr.ph.preheader ], [ %112, %.lr.ph ]
  %.0335409.unr = phi double [ 0.000000e+00, %.lr.ph.preheader ], [ %112, %.lr.ph ]
  %.0337408.unr = phi double [ %47, %.lr.ph.preheader ], [ %110, %.lr.ph ]
  %.0339407.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %113, %.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
  %114 = getelementptr inbounds double, ptr %41, i64 %.0339407.unr
  %115 = load double, ptr %114, align 8, !tbaa !10
  %116 = fcmp ole double %.0337408.unr, %115
  %117 = select i1 %116, double %.0337408.unr, double %115
  %118 = fcmp oge double %.0335409.unr, %115
  %119 = select i1 %118, double %.0335409.unr, double %115
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %98
  %.0337.lcssa = phi double [ %47, %98 ], [ %.lcssa503.ph, %._crit_edge.loopexit.unr-lcssa ], [ %117, %.lr.ph.epil ]
  %.0335.lcssa = phi double [ 0.000000e+00, %98 ], [ %.lcssa502.ph, %._crit_edge.loopexit.unr-lcssa ], [ %119, %.lr.ph.epil ]
  %120 = fcmp ugt double %.0337.lcssa, 0.000000e+00
  br i1 %120, label %121, label %.thread382.sink.split

121:                                              ; preds = %._crit_edge
  %122 = icmp sgt i64 %99, 0
  br i1 %122, label %123, label %129

123:                                              ; preds = %121
  %124 = fcmp oge double %.0337.lcssa, %46
  %125 = select i1 %124, double %.0337.lcssa, double %46
  %126 = fcmp ole double %.0335.lcssa, %47
  %127 = select i1 %126, double %.0335.lcssa, double %47
  %128 = fdiv double %125, %127
  store double %128, ptr %34, align 8, !tbaa !10
  br label %130

129:                                              ; preds = %121
  store double 1.000000e+00, ptr %34, align 8, !tbaa !10
  br label %130

130:                                              ; preds = %129, %123, %97
  %.pr.pre450.pr = load i64, ptr %28, align 8, !tbaa !5
  br i1 %94, label %131, label %.thread377

131:                                              ; preds = %130
  %132 = icmp eq i64 %.pr.pre450.pr, 0
  br i1 %132, label %133, label %.thread382

133:                                              ; preds = %131
  %134 = load i64, ptr %2, align 8, !tbaa !5
  %.not357411 = icmp slt i64 %134, 1
  br i1 %.not357411, label %._crit_edge417, label %.lr.ph416.preheader

.lr.ph416.preheader:                              ; preds = %133
  %xtraiter506 = and i64 %134, 1
  %135 = icmp eq i64 %134, 1
  br i1 %135, label %._crit_edge417.loopexit.unr-lcssa, label %.lr.ph416.preheader.new

.lr.ph416.preheader.new:                          ; preds = %.lr.ph416.preheader
  %unroll_iter510 = and i64 %134, 9223372036854775806
  br label %.lr.ph416

.lr.ph416:                                        ; preds = %.lr.ph416, %.lr.ph416.preheader.new
  %.1336414 = phi double [ 0.000000e+00, %.lr.ph416.preheader.new ], [ %147, %.lr.ph416 ]
  %.1338413 = phi double [ %47, %.lr.ph416.preheader.new ], [ %145, %.lr.ph416 ]
  %.1340412 = phi i64 [ 1, %.lr.ph416.preheader.new ], [ %148, %.lr.ph416 ]
  %niter511 = phi i64 [ 0, %.lr.ph416.preheader.new ], [ %niter511.next.1, %.lr.ph416 ]
  %136 = getelementptr inbounds double, ptr %42, i64 %.1340412
  %137 = load double, ptr %136, align 8, !tbaa !10
  %138 = fcmp ole double %.1338413, %137
  %139 = select i1 %138, double %.1338413, double %137
  %140 = fcmp oge double %.1336414, %137
  %141 = select i1 %140, double %.1336414, double %137
  %142 = getelementptr double, ptr %13, i64 %.1340412
  %143 = load double, ptr %142, align 8, !tbaa !10
  %144 = fcmp ole double %139, %143
  %145 = select i1 %144, double %139, double %143
  %146 = fcmp oge double %141, %143
  %147 = select i1 %146, double %141, double %143
  %148 = add nuw i64 %.1340412, 2
  %niter511.next.1 = add i64 %niter511, 2
  %niter511.ncmp.1 = icmp eq i64 %niter511.next.1, %unroll_iter510
  br i1 %niter511.ncmp.1, label %._crit_edge417.loopexit.unr-lcssa, label %.lr.ph416, !llvm.loop !14

._crit_edge417.loopexit.unr-lcssa:                ; preds = %.lr.ph416, %.lr.ph416.preheader
  %.lcssa501.ph = phi double [ poison, %.lr.ph416.preheader ], [ %145, %.lr.ph416 ]
  %.lcssa.ph = phi double [ poison, %.lr.ph416.preheader ], [ %147, %.lr.ph416 ]
  %.1336414.unr = phi double [ 0.000000e+00, %.lr.ph416.preheader ], [ %147, %.lr.ph416 ]
  %.1338413.unr = phi double [ %47, %.lr.ph416.preheader ], [ %145, %.lr.ph416 ]
  %.1340412.unr = phi i64 [ 1, %.lr.ph416.preheader ], [ %148, %.lr.ph416 ]
  %lcmp.mod507.not = icmp eq i64 %xtraiter506, 0
  br i1 %lcmp.mod507.not, label %._crit_edge417, label %.lr.ph416.epil

.lr.ph416.epil:                                   ; preds = %._crit_edge417.loopexit.unr-lcssa
  %149 = getelementptr inbounds double, ptr %42, i64 %.1340412.unr
  %150 = load double, ptr %149, align 8, !tbaa !10
  %151 = fcmp ole double %.1338413.unr, %150
  %152 = select i1 %151, double %.1338413.unr, double %150
  %153 = fcmp oge double %.1336414.unr, %150
  %154 = select i1 %153, double %.1336414.unr, double %150
  br label %._crit_edge417

._crit_edge417:                                   ; preds = %.lr.ph416.epil, %._crit_edge417.loopexit.unr-lcssa, %133
  %.1338.lcssa = phi double [ %47, %133 ], [ %.lcssa501.ph, %._crit_edge417.loopexit.unr-lcssa ], [ %152, %.lr.ph416.epil ]
  %.1336.lcssa = phi double [ 0.000000e+00, %133 ], [ %.lcssa.ph, %._crit_edge417.loopexit.unr-lcssa ], [ %154, %.lr.ph416.epil ]
  %155 = fcmp ugt double %.1338.lcssa, 0.000000e+00
  br i1 %155, label %156, label %.thread382.sink.split

156:                                              ; preds = %._crit_edge417
  %157 = icmp sgt i64 %134, 0
  br i1 %157, label %158, label %164

158:                                              ; preds = %156
  %159 = fcmp oge double %.1338.lcssa, %46
  %160 = select i1 %159, double %.1338.lcssa, double %46
  %161 = fcmp ole double %.1336.lcssa, %47
  %162 = select i1 %161, double %.1336.lcssa, double %47
  %163 = fdiv double %160, %162
  store double %163, ptr %32, align 8, !tbaa !10
  br label %.thread377.thread

164:                                              ; preds = %156
  store double 1.000000e+00, ptr %32, align 8, !tbaa !10
  br label %.thread377.thread

.thread377:                                       ; preds = %..thread377_crit_edge, %130
  %.pr380.pr = phi i64 [ %.pr.pre, %..thread377_crit_edge ], [ %.pr.pre450.pr, %130 ]
  %165 = icmp eq i64 %.pr380.pr, 0
  br i1 %165, label %.thread377.thread, label %.thread382

.thread377.thread:                                ; preds = %158, %164, %.thread377
  %166 = load i64, ptr %15, align 8, !tbaa !5
  %167 = load i64, ptr %2, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.smax.i64(i64 %167, i64 1)
  %168 = icmp slt i64 %166, %spec.select
  br i1 %168, label %.thread382.sink.split, label %169

169:                                              ; preds = %.thread377.thread
  %170 = load i64, ptr %17, align 8, !tbaa !5
  %171 = icmp slt i64 %170, %spec.select
  br i1 %171, label %.thread382.sink.split, label %.thread378

.thread382.sink.split:                            ; preds = %169, %.thread377.thread, %._crit_edge417, %._crit_edge, %95, %86, %83, %80, %77, %74, %71, %69, %62
  %.sink = phi i64 [ -1, %62 ], [ -2, %69 ], [ -3, %71 ], [ -4, %74 ], [ -5, %77 ], [ -6, %80 ], [ -8, %83 ], [ -10, %86 ], [ -12, %95 ], [ -13, %._crit_edge ], [ -14, %._crit_edge417 ], [ -15, %.thread377.thread ], [ -16, %169 ]
  store i64 %.sink, ptr %28, align 8, !tbaa !5
  br label %.thread382

.thread382:                                       ; preds = %.thread382.sink.split, %131, %.thread377
  %172 = phi i64 [ %.pr380.pr, %.thread377 ], [ %.pr.pre450.pr, %131 ], [ %.sink, %.thread382.sink.split ]
  %173 = sub nsw i64 0, %172
  store i64 %173, ptr %30, align 8, !tbaa !5
  %174 = call i32 @xerbla_(ptr noundef nonnull @.str.8, ptr noundef nonnull %30) #4
  br label %266

.thread378:                                       ; preds = %169
  br i1 %49, label %175, label %.loopexit

175:                                              ; preds = %.thread378
  %176 = call i32 @dgbequb_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %34, ptr noundef nonnull %32, ptr noundef nonnull %31, ptr noundef nonnull %33) #4
  %177 = load i64, ptr %33, align 8, !tbaa !5
  %178 = icmp eq i64 %177, 0
  br i1 %178, label %179, label %193

179:                                              ; preds = %175
  %180 = call i32 @dlaqgb_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %34, ptr noundef nonnull %32, ptr noundef nonnull %31, ptr noundef %11) #4
  %181 = call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.3) #4
  %.not359 = icmp eq i64 %181, 0
  br i1 %.not359, label %182, label %186

182:                                              ; preds = %179
  %183 = call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.4) #4
  %184 = icmp ne i64 %183, 0
  %185 = zext i1 %184 to i64
  br label %186

186:                                              ; preds = %182, %179
  %187 = phi i64 [ 1, %179 ], [ %185, %182 ]
  %188 = call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.5) #4
  %.not360 = icmp eq i64 %188, 0
  br i1 %.not360, label %189, label %193

189:                                              ; preds = %186
  %190 = call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.4) #4
  %191 = icmp ne i64 %190, 0
  %192 = zext i1 %191 to i64
  br label %193

193:                                              ; preds = %186, %189, %175
  %.1333 = phi i64 [ %.0332373, %175 ], [ 1, %186 ], [ %192, %189 ]
  %.1 = phi i64 [ %.0375, %175 ], [ %187, %186 ], [ %187, %189 ]
  %.not361 = icmp eq i64 %.1, 0
  br i1 %.not361, label %194, label %.loopexit405

194:                                              ; preds = %193
  %195 = load i64, ptr %2, align 8, !tbaa !5
  %.not362420 = icmp slt i64 %195, 1
  br i1 %.not362420, label %.loopexit405, label %.lr.ph423.preheader

.lr.ph423.preheader:                              ; preds = %194
  %min.iters.check = icmp ult i64 %195, 4
  br i1 %min.iters.check, label %.lr.ph423.preheader500, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph423.preheader
  %n.vec = and i64 %195, 9223372036854775804
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %196 = getelementptr double, ptr %12, i64 %index
  %197 = getelementptr inbounds i8, ptr %196, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %196, align 8, !tbaa !10
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %197, align 8, !tbaa !10
  %index.next = add nuw i64 %index, 4
  %198 = icmp eq i64 %index.next, %n.vec
  br i1 %198, label %middle.block, label %vector.body, !llvm.loop !15

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %195, %n.vec
  br i1 %cmp.n, label %.loopexit405, label %.lr.ph423.preheader500

.lr.ph423.preheader500:                           ; preds = %middle.block, %.lr.ph423.preheader
  %.2341421.ph = phi i64 [ 1, %.lr.ph423.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph423

.lr.ph423:                                        ; preds = %.lr.ph423.preheader500, %.lr.ph423
  %.2341421 = phi i64 [ %200, %.lr.ph423 ], [ %.2341421.ph, %.lr.ph423.preheader500 ]
  %199 = getelementptr inbounds double, ptr %41, i64 %.2341421
  store double 1.000000e+00, ptr %199, align 8, !tbaa !10
  %200 = add nuw i64 %.2341421, 1
  %exitcond445.not = icmp eq i64 %.2341421, %195
  br i1 %exitcond445.not, label %.loopexit405, label %.lr.ph423, !llvm.loop !18

.loopexit405:                                     ; preds = %.lr.ph423, %middle.block, %194, %193
  %.not363 = icmp eq i64 %.1333, 0
  br i1 %.not363, label %201, label %.thread386

201:                                              ; preds = %.loopexit405
  %202 = load i64, ptr %2, align 8, !tbaa !5
  %.not364424 = icmp slt i64 %202, 1
  br i1 %.not364424, label %.loopexit, label %.lr.ph427.preheader

.lr.ph427.preheader:                              ; preds = %201
  %min.iters.check470 = icmp ult i64 %202, 4
  br i1 %min.iters.check470, label %.lr.ph427.preheader499, label %vector.ph471

vector.ph471:                                     ; preds = %.lr.ph427.preheader
  %n.vec473 = and i64 %202, 9223372036854775804
  %ind.end474 = or disjoint i64 %n.vec473, 1
  br label %vector.body476

vector.body476:                                   ; preds = %vector.body476, %vector.ph471
  %index477 = phi i64 [ 0, %vector.ph471 ], [ %index.next479, %vector.body476 ]
  %203 = getelementptr double, ptr %13, i64 %index477
  %204 = getelementptr inbounds i8, ptr %203, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %203, align 8, !tbaa !10
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %204, align 8, !tbaa !10
  %index.next479 = add nuw i64 %index477, 4
  %205 = icmp eq i64 %index.next479, %n.vec473
  br i1 %205, label %middle.block468, label %vector.body476, !llvm.loop !19

middle.block468:                                  ; preds = %vector.body476
  %cmp.n480 = icmp eq i64 %202, %n.vec473
  br i1 %cmp.n480, label %.loopexit, label %.lr.ph427.preheader499

.lr.ph427.preheader499:                           ; preds = %middle.block468, %.lr.ph427.preheader
  %.3425.ph = phi i64 [ 1, %.lr.ph427.preheader ], [ %ind.end474, %middle.block468 ]
  br label %.lr.ph427

.lr.ph427:                                        ; preds = %.lr.ph427.preheader499, %.lr.ph427
  %.3425 = phi i64 [ %207, %.lr.ph427 ], [ %.3425.ph, %.lr.ph427.preheader499 ]
  %206 = getelementptr inbounds double, ptr %42, i64 %.3425
  store double 1.000000e+00, ptr %206, align 8, !tbaa !10
  %207 = add nuw i64 %.3425, 1
  %exitcond446.not = icmp eq i64 %.3425, %202
  br i1 %exitcond446.not, label %.loopexit, label %.lr.ph427, !llvm.loop !20

.loopexit:                                        ; preds = %.lr.ph427, %middle.block468, %201, %.thread378
  %.2334 = phi i64 [ %.0332373, %.thread378 ], [ 0, %201 ], [ 0, %middle.block468 ], [ 0, %.lr.ph427 ]
  %.2 = phi i64 [ %.0375, %.thread378 ], [ %.1, %201 ], [ %.1, %middle.block468 ], [ %.1, %.lr.ph427 ]
  br i1 %.not350, label %209, label %208

.thread386:                                       ; preds = %.loopexit405
  br i1 %.not350, label %.sink.split, label %208

208:                                              ; preds = %.thread386, %.loopexit
  %.2392 = phi i64 [ %.1, %.thread386 ], [ %.2, %.loopexit ]
  %.2334391 = phi i64 [ 1, %.thread386 ], [ %.2334, %.loopexit ]
  %.not366 = icmp eq i64 %.2392, 0
  br i1 %.not366, label %211, label %.sink.split

209:                                              ; preds = %.loopexit
  %.not365 = icmp eq i64 %.2334, 0
  br i1 %.not365, label %211, label %.sink.split

.sink.split:                                      ; preds = %209, %.thread386, %208
  %.sink464 = phi ptr [ %12, %208 ], [ %13, %.thread386 ], [ %13, %209 ]
  %.ph463 = phi i1 [ true, %208 ], [ false, %.thread386 ], [ false, %209 ]
  %.2393.ph = phi i64 [ 1, %208 ], [ %.1, %.thread386 ], [ %.2, %209 ]
  %.2334389.ph = phi i64 [ %.2334391, %208 ], [ 1, %.thread386 ], [ 1, %209 ]
  %210 = call i32 @dlascl2_(ptr noundef nonnull %2, ptr noundef nonnull %5, ptr noundef %.sink464, ptr noundef %14, ptr noundef nonnull %15) #4
  br label %211

211:                                              ; preds = %.sink.split, %209, %208
  %212 = phi i1 [ false, %209 ], [ true, %208 ], [ %.ph463, %.sink.split ]
  %.2393 = phi i64 [ %.2, %209 ], [ 0, %208 ], [ %.2393.ph, %.sink.split ]
  %.2334389 = phi i64 [ 0, %209 ], [ %.2334391, %208 ], [ %.2334389.ph, %.sink.split ]
  br i1 %or.cond, label %213, label %254

213:                                              ; preds = %211
  %214 = load i64, ptr %2, align 8, !tbaa !5
  %.not367435 = icmp slt i64 %214, 1
  br i1 %.not367435, label %._crit_edge439, label %.lr.ph438

.lr.ph438:                                        ; preds = %213
  %215 = load i64, ptr %3, align 8, !tbaa !5
  %216 = shl i64 %215, 1
  %217 = load i64, ptr %4, align 8, !tbaa !5
  %218 = add i64 %216, %217
  %.not368428 = icmp sgt i64 %215, %218
  br i1 %.not368428, label %._crit_edge439, label %.lr.ph431.preheader

.lr.ph431.preheader:                              ; preds = %.lr.ph438
  %219 = shl i64 %215, 3
  %scevgep = getelementptr i8, ptr %8, i64 %219
  %220 = add nsw i64 %214, -1
  %221 = mul i64 %38, %220
  %222 = shl i64 %215, 4
  %223 = add i64 %221, %217
  %224 = shl i64 %223, 3
  %225 = getelementptr i8, ptr %8, i64 %224
  %226 = getelementptr i8, ptr %225, i64 %222
  %scevgep481 = getelementptr i8, ptr %226, i64 8
  %227 = mul i64 %35, %220
  %228 = add i64 %217, %215
  %229 = add i64 %227, %228
  %230 = shl i64 %229, 3
  %231 = getelementptr i8, ptr %6, i64 %230
  %scevgep482 = getelementptr i8, ptr %231, i64 8
  %232 = add i64 %228, 1
  %min.iters.check486 = icmp ult i64 %232, 6
  %bound0 = icmp ult ptr %scevgep, %scevgep482
  %bound1 = icmp ugt ptr %scevgep481, %6
  %found.conflict = and i1 %bound0, %bound1
  %233 = or i64 %38, %35
  %234 = and i64 %233, 1152921504606846976
  %235 = icmp ne i64 %234, 0
  %236 = or i1 %found.conflict, %235
  %n.vec489 = and i64 %232, -4
  %ind.end490 = add i64 %215, %n.vec489
  %cmp.n497 = icmp eq i64 %232, %n.vec489
  br label %.lr.ph431

.lr.ph431:                                        ; preds = %.lr.ph431.preheader, %._crit_edge432
  %.4436 = phi i64 [ %248, %._crit_edge432 ], [ 1, %.lr.ph431.preheader ]
  %237 = mul nsw i64 %.4436, %35
  %invariant.gep = getelementptr double, ptr %37, i64 %237
  %238 = mul nsw i64 %.4436, %38
  %invariant.gep433 = getelementptr double, ptr %40, i64 %238
  %brmerge = select i1 %min.iters.check486, i1 true, i1 %236
  br i1 %brmerge, label %scalar.ph485.preheader, label %vector.body492

vector.body492:                                   ; preds = %.lr.ph431, %vector.body492
  %index493 = phi i64 [ %index.next496, %vector.body492 ], [ 0, %.lr.ph431 ]
  %offset.idx494 = add i64 %215, %index493
  %239 = add nsw i64 %offset.idx494, 1
  %240 = sub nsw i64 %239, %215
  %241 = getelementptr double, ptr %invariant.gep, i64 %240
  %242 = getelementptr i8, ptr %241, i64 16
  %wide.load = load <2 x double>, ptr %241, align 8, !tbaa !10, !alias.scope !21
  %wide.load495 = load <2 x double>, ptr %242, align 8, !tbaa !10, !alias.scope !21
  %243 = getelementptr double, ptr %invariant.gep433, i64 %239
  %244 = getelementptr i8, ptr %243, i64 16
  store <2 x double> %wide.load, ptr %243, align 8, !tbaa !10, !alias.scope !24, !noalias !21
  store <2 x double> %wide.load495, ptr %244, align 8, !tbaa !10, !alias.scope !24, !noalias !21
  %index.next496 = add nuw i64 %index493, 4
  %245 = icmp eq i64 %index.next496, %n.vec489
  br i1 %245, label %middle.block484, label %vector.body492, !llvm.loop !26

middle.block484:                                  ; preds = %vector.body492
  br i1 %cmp.n497, label %._crit_edge432, label %scalar.ph485.preheader

scalar.ph485.preheader:                           ; preds = %.lr.ph431, %middle.block484
  %.0342.in429.ph = phi i64 [ %215, %.lr.ph431 ], [ %ind.end490, %middle.block484 ]
  br label %scalar.ph485

scalar.ph485:                                     ; preds = %scalar.ph485.preheader, %scalar.ph485
  %.0342.in429 = phi i64 [ %.0342, %scalar.ph485 ], [ %.0342.in429.ph, %scalar.ph485.preheader ]
  %.0342 = add nsw i64 %.0342.in429, 1
  %246 = sub nsw i64 %.0342, %215
  %gep = getelementptr double, ptr %invariant.gep, i64 %246
  %247 = load double, ptr %gep, align 8, !tbaa !10
  %gep434 = getelementptr double, ptr %invariant.gep433, i64 %.0342
  store double %247, ptr %gep434, align 8, !tbaa !10
  %exitcond448.not = icmp eq i64 %.0342.in429, %218
  br i1 %exitcond448.not, label %._crit_edge432, label %scalar.ph485, !llvm.loop !27

._crit_edge432:                                   ; preds = %scalar.ph485, %middle.block484
  %248 = add nuw i64 %.4436, 1
  %exitcond449.not = icmp eq i64 %.4436, %214
  br i1 %exitcond449.not, label %._crit_edge439, label %.lr.ph431, !llvm.loop !28

._crit_edge439:                                   ; preds = %._crit_edge432, %.lr.ph438, %213
  %249 = call i32 @dgbtrf_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %28) #4
  %250 = load i64, ptr %28, align 8, !tbaa !5
  %251 = icmp sgt i64 %250, 0
  br i1 %251, label %252, label %254

252:                                              ; preds = %._crit_edge439
  %253 = call double @dla_gbrpvgrw__(ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %28, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9) #4
  store double %253, ptr %19, align 8, !tbaa !10
  br label %266

254:                                              ; preds = %._crit_edge439, %211
  %255 = call double @dla_gbrpvgrw__(ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9) #4
  store double %255, ptr %19, align 8, !tbaa !10
  %256 = call i32 @dlacpy_(ptr noundef nonnull @.str.9, ptr noundef nonnull %2, ptr noundef nonnull %5, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %16, ptr noundef nonnull %17) #4
  %257 = call i32 @dgbtrs_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %28) #4
  %258 = call i32 @dgbrfsx_(ptr noundef %1, ptr noundef %11, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %16, ptr noundef nonnull %17, ptr noundef %18, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24, ptr noundef %25, ptr noundef %26, ptr noundef %27, ptr noundef nonnull %28) #4
  %259 = icmp ne i64 %.2334389, 0
  %or.cond11 = and i1 %212, %259
  br i1 %or.cond11, label %260, label %262

260:                                              ; preds = %254
  %261 = call i32 @dlascl2_(ptr noundef nonnull %2, ptr noundef nonnull %5, ptr noundef %13, ptr noundef %16, ptr noundef nonnull %17) #4
  br label %266

262:                                              ; preds = %254
  %263 = icmp eq i64 %.2393, 0
  %or.cond13 = or i1 %212, %263
  br i1 %or.cond13, label %266, label %264

264:                                              ; preds = %262
  %265 = call i32 @dlascl2_(ptr noundef nonnull %2, ptr noundef nonnull %5, ptr noundef %12, ptr noundef %16, ptr noundef nonnull %17) #4
  br label %266

266:                                              ; preds = %260, %264, %262, %252, %.thread382
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #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 @dgbequb_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

declare double @dla_gbrpvgrw__(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 @dgbtrs_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @dgbrfsx_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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

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 = distinct !{!14, !13}
!15 = distinct !{!15, !13, !16, !17}
!16 = !{!"llvm.loop.isvectorized", i32 1}
!17 = !{!"llvm.loop.unroll.runtime.disable"}
!18 = distinct !{!18, !13, !17, !16}
!19 = distinct !{!19, !13, !16, !17}
!20 = distinct !{!20, !13, !17, !16}
!21 = !{!22}
!22 = distinct !{!22, !23}
!23 = distinct !{!23, !"LVerDomain"}
!24 = !{!25}
!25 = distinct !{!25, !23}
!26 = distinct !{!26, !13, !16, !17}
!27 = distinct !{!27, !13, !16}
!28 = distinct !{!28, !13}


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