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

177:                                              ; preds = %29
  %178 = load i32, ptr %80, align 4, !tbaa !9
  %179 = icmp ne i32 %178, 0
  br i1 %179, label %180, label %182

180:                                              ; preds = %177, %29
  %181 = load ptr, ptr %41, align 8, !tbaa !5
  store i8 78, ptr %181, align 1, !tbaa !13
  store i32 0, ptr %89, align 4, !tbaa !9
  store i32 0, ptr %85, align 4, !tbaa !9
  br label %203

182:                                              ; preds = %177
  %183 = load ptr, ptr %41, align 8, !tbaa !5
  %184 = call i32 @lsame_(ptr noundef %183, ptr noundef @.str.3)
  %185 = icmp ne i32 %184, 0
  br i1 %185, label %190, label %186

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

190:                                              ; preds = %186, %182
  %191 = phi i1 [ true, %182 ], [ %189, %186 ]
  %192 = zext i1 %191 to i32
  store i32 %192, ptr %89, align 4, !tbaa !9
  %193 = load ptr, ptr %41, align 8, !tbaa !5
  %194 = call i32 @lsame_(ptr noundef %193, ptr noundef @.str.5)
  %195 = icmp ne i32 %194, 0
  br i1 %195, label %200, label %196

196:                                              ; preds = %190
  %197 = load ptr, ptr %41, align 8, !tbaa !5
  %198 = call i32 @lsame_(ptr noundef %197, ptr noundef @.str.4)
  %199 = icmp ne i32 %198, 0
  br label %200

200:                                              ; preds = %196, %190
  %201 = phi i1 [ true, %190 ], [ %199, %196 ]
  %202 = zext i1 %201 to i32
  store i32 %202, ptr %85, align 4, !tbaa !9
  br label %203

203:                                              ; preds = %200, %180
  %204 = load ptr, ptr %49, align 8, !tbaa !5
  store double 0.000000e+00, ptr %204, align 8, !tbaa !11
  %205 = load i32, ptr %82, align 4, !tbaa !9
  %206 = icmp ne i32 %205, 0
  br i1 %206, label %216, label %207

207:                                              ; preds = %203
  %208 = load i32, ptr %80, align 4, !tbaa !9
  %209 = icmp ne i32 %208, 0
  br i1 %209, label %216, label %210

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

214:                                              ; preds = %210
  %215 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -1, ptr %215, align 4, !tbaa !9
  br label %497

216:                                              ; preds = %210, %207, %203
  %217 = load i32, ptr %87, align 4, !tbaa !9
  %218 = icmp ne i32 %217, 0
  br i1 %218, label %229, label %219

219:                                              ; preds = %216
  %220 = load ptr, ptr %31, align 8, !tbaa !5
  %221 = call i32 @lsame_(ptr noundef %220, ptr noundef @.str.7)
  %222 = icmp ne i32 %221, 0
  br i1 %222, label %229, label %223

223:                                              ; preds = %219
  %224 = load ptr, ptr %31, align 8, !tbaa !5
  %225 = call i32 @lsame_(ptr noundef %224, ptr noundef @.str.5)
  %226 = icmp ne i32 %225, 0
  br i1 %226, label %229, label %227

227:                                              ; preds = %223
  %228 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -2, ptr %228, align 4, !tbaa !9
  br label %496

229:                                              ; preds = %223, %219, %216
  %230 = load ptr, ptr %32, align 8, !tbaa !5
  %231 = load i32, ptr %230, align 4, !tbaa !9
  %232 = icmp slt i32 %231, 0
  br i1 %232, label %233, label %235

233:                                              ; preds = %229
  %234 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -3, ptr %234, align 4, !tbaa !9
  br label %495

235:                                              ; preds = %229
  %236 = load ptr, ptr %33, align 8, !tbaa !5
  %237 = load i32, ptr %236, align 4, !tbaa !9
  %238 = icmp slt i32 %237, 0
  br i1 %238, label %239, label %241

239:                                              ; preds = %235
  %240 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -4, ptr %240, align 4, !tbaa !9
  br label %494

241:                                              ; preds = %235
  %242 = load ptr, ptr %34, align 8, !tbaa !5
  %243 = load i32, ptr %242, align 4, !tbaa !9
  %244 = icmp slt i32 %243, 0
  br i1 %244, label %245, label %247

245:                                              ; preds = %241
  %246 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -5, ptr %246, align 4, !tbaa !9
  br label %493

247:                                              ; preds = %241
  %248 = load ptr, ptr %35, align 8, !tbaa !5
  %249 = load i32, ptr %248, align 4, !tbaa !9
  %250 = icmp slt i32 %249, 0
  br i1 %250, label %251, label %253

251:                                              ; preds = %247
  %252 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -6, ptr %252, align 4, !tbaa !9
  br label %492

253:                                              ; preds = %247
  %254 = load ptr, ptr %37, align 8, !tbaa !5
  %255 = load i32, ptr %254, align 4, !tbaa !9
  %256 = load ptr, ptr %33, align 8, !tbaa !5
  %257 = load i32, ptr %256, align 4, !tbaa !9
  %258 = load ptr, ptr %34, align 8, !tbaa !5
  %259 = load i32, ptr %258, align 4, !tbaa !9
  %260 = add nsw i32 %257, %259
  %261 = add nsw i32 %260, 1
  %262 = icmp slt i32 %255, %261
  br i1 %262, label %263, label %265

263:                                              ; preds = %253
  %264 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -8, ptr %264, align 4, !tbaa !9
  br label %491

265:                                              ; preds = %253
  %266 = load ptr, ptr %39, align 8, !tbaa !5
  %267 = load i32, ptr %266, align 4, !tbaa !9
  %268 = load ptr, ptr %33, align 8, !tbaa !5
  %269 = load i32, ptr %268, align 4, !tbaa !9
  %270 = shl i32 %269, 1
  %271 = load ptr, ptr %34, align 8, !tbaa !5
  %272 = load i32, ptr %271, align 4, !tbaa !9
  %273 = add nsw i32 %270, %272
  %274 = add nsw i32 %273, 1
  %275 = icmp slt i32 %267, %274
  br i1 %275, label %276, label %278

276:                                              ; preds = %265
  %277 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -10, ptr %277, align 4, !tbaa !9
  br label %490

278:                                              ; preds = %265
  %279 = load ptr, ptr %30, align 8, !tbaa !5
  %280 = call i32 @lsame_(ptr noundef %279, ptr noundef @.str.6)
  %281 = icmp ne i32 %280, 0
  br i1 %281, label %282, label %294

282:                                              ; preds = %278
  %283 = load i32, ptr %89, align 4, !tbaa !9
  %284 = icmp ne i32 %283, 0
  br i1 %284, label %294, label %285

285:                                              ; preds = %282
  %286 = load i32, ptr %85, align 4, !tbaa !9
  %287 = icmp ne i32 %286, 0
  br i1 %287, label %294, label %288

288:                                              ; preds = %285
  %289 = load ptr, ptr %41, align 8, !tbaa !5
  %290 = call i32 @lsame_(ptr noundef %289, ptr noundef @.str)
  %291 = icmp ne i32 %290, 0
  br i1 %291, label %294, label %292

292:                                              ; preds = %288
  %293 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -12, ptr %293, align 4, !tbaa !9
  br label %489

294:                                              ; preds = %288, %285, %282, %278
  %295 = load i32, ptr %89, align 4, !tbaa !9
  %296 = icmp ne i32 %295, 0
  br i1 %296, label %297, label %371

297:                                              ; preds = %294
  %298 = load double, ptr %83, align 8, !tbaa !11
  store double %298, ptr %78, align 8, !tbaa !11
  store double 0.000000e+00, ptr %79, align 8, !tbaa !11
  %299 = load ptr, ptr %32, align 8, !tbaa !5
  %300 = load i32, ptr %299, align 4, !tbaa !9
  store i32 %300, ptr %71, align 4, !tbaa !9
  store i32 1, ptr %77, align 4, !tbaa !9
  br label %301

301:                                              ; preds = %336, %297
  %302 = load i32, ptr %77, align 4, !tbaa !9
  %303 = load i32, ptr %71, align 4, !tbaa !9
  %304 = icmp sle i32 %302, %303
  br i1 %304, label %305, label %339

305:                                              ; preds = %301
  %306 = load double, ptr %78, align 8, !tbaa !11
  store double %306, ptr %73, align 8, !tbaa !11
  %307 = load ptr, ptr %42, align 8, !tbaa !5
  %308 = load i32, ptr %77, align 4, !tbaa !9
  %309 = sext i32 %308 to i64
  %310 = getelementptr inbounds double, ptr %307, i64 %309
  %311 = load double, ptr %310, align 8, !tbaa !11
  store double %311, ptr %74, align 8, !tbaa !11
  %312 = load double, ptr %73, align 8, !tbaa !11
  %313 = load double, ptr %74, align 8, !tbaa !11
  %314 = fcmp ole double %312, %313
  br i1 %314, label %315, label %317

315:                                              ; preds = %305
  %316 = load double, ptr %73, align 8, !tbaa !11
  br label %319

317:                                              ; preds = %305
  %318 = load double, ptr %74, align 8, !tbaa !11
  br label %319

319:                                              ; preds = %317, %315
  %320 = phi double [ %316, %315 ], [ %318, %317 ]
  store double %320, ptr %78, align 8, !tbaa !11
  %321 = load double, ptr %79, align 8, !tbaa !11
  store double %321, ptr %73, align 8, !tbaa !11
  %322 = load ptr, ptr %42, align 8, !tbaa !5
  %323 = load i32, ptr %77, align 4, !tbaa !9
  %324 = sext i32 %323 to i64
  %325 = getelementptr inbounds double, ptr %322, i64 %324
  %326 = load double, ptr %325, align 8, !tbaa !11
  store double %326, ptr %74, align 8, !tbaa !11
  %327 = load double, ptr %73, align 8, !tbaa !11
  %328 = load double, ptr %74, align 8, !tbaa !11
  %329 = fcmp oge double %327, %328
  br i1 %329, label %330, label %332

330:                                              ; preds = %319
  %331 = load double, ptr %73, align 8, !tbaa !11
  br label %334

332:                                              ; preds = %319
  %333 = load double, ptr %74, align 8, !tbaa !11
  br label %334

334:                                              ; preds = %332, %330
  %335 = phi double [ %331, %330 ], [ %333, %332 ]
  store double %335, ptr %79, align 8, !tbaa !11
  br label %336

336:                                              ; preds = %334
  %337 = load i32, ptr %77, align 4, !tbaa !9
  %338 = add nsw i32 %337, 1
  store i32 %338, ptr %77, align 4, !tbaa !9
  br label %301, !llvm.loop !14

339:                                              ; preds = %301
  %340 = load double, ptr %78, align 8, !tbaa !11
  %341 = fcmp ole double %340, 0.000000e+00
  br i1 %341, label %342, label %344

342:                                              ; preds = %339
  %343 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -13, ptr %343, align 4, !tbaa !9
  br label %370

344:                                              ; preds = %339
  %345 = load ptr, ptr %32, align 8, !tbaa !5
  %346 = load i32, ptr %345, align 4, !tbaa !9
  %347 = icmp sgt i32 %346, 0
  br i1 %347, label %348, label %368

348:                                              ; preds = %344
  %349 = load double, ptr %78, align 8, !tbaa !11
  %350 = load double, ptr %88, align 8, !tbaa !11
  %351 = fcmp oge double %349, %350
  br i1 %351, label %352, label %354

352:                                              ; preds = %348
  %353 = load double, ptr %78, align 8, !tbaa !11
  br label %356

354:                                              ; preds = %348
  %355 = load double, ptr %88, align 8, !tbaa !11
  br label %356

356:                                              ; preds = %354, %352
  %357 = phi double [ %353, %352 ], [ %355, %354 ]
  %358 = load double, ptr %79, align 8, !tbaa !11
  %359 = load double, ptr %83, align 8, !tbaa !11
  %360 = fcmp ole double %358, %359
  br i1 %360, label %361, label %363

361:                                              ; preds = %356
  %362 = load double, ptr %79, align 8, !tbaa !11
  br label %365

363:                                              ; preds = %356
  %364 = load double, ptr %83, align 8, !tbaa !11
  br label %365

365:                                              ; preds = %363, %361
  %366 = phi double [ %362, %361 ], [ %364, %363 ]
  %367 = fdiv double %357, %366
  store double %367, ptr %86, align 8, !tbaa !11
  br label %369

368:                                              ; preds = %344
  store double 1.000000e+00, ptr %86, align 8, !tbaa !11
  br label %369

369:                                              ; preds = %368, %365
  br label %370

370:                                              ; preds = %369, %342
  br label %371

371:                                              ; preds = %370, %294
  %372 = load i32, ptr %85, align 4, !tbaa !9
  %373 = icmp ne i32 %372, 0
  br i1 %373, label %374, label %452

374:                                              ; preds = %371
  %375 = load ptr, ptr %58, align 8, !tbaa !5
  %376 = load i32, ptr %375, align 4, !tbaa !9
  %377 = icmp eq i32 %376, 0
  br i1 %377, label %378, label %452

378:                                              ; preds = %374
  %379 = load double, ptr %83, align 8, !tbaa !11
  store double %379, ptr %78, align 8, !tbaa !11
  store double 0.000000e+00, ptr %79, align 8, !tbaa !11
  %380 = load ptr, ptr %32, align 8, !tbaa !5
  %381 = load i32, ptr %380, align 4, !tbaa !9
  store i32 %381, ptr %71, align 4, !tbaa !9
  store i32 1, ptr %77, align 4, !tbaa !9
  br label %382

382:                                              ; preds = %417, %378
  %383 = load i32, ptr %77, align 4, !tbaa !9
  %384 = load i32, ptr %71, align 4, !tbaa !9
  %385 = icmp sle i32 %383, %384
  br i1 %385, label %386, label %420

386:                                              ; preds = %382
  %387 = load double, ptr %78, align 8, !tbaa !11
  store double %387, ptr %73, align 8, !tbaa !11
  %388 = load ptr, ptr %43, align 8, !tbaa !5
  %389 = load i32, ptr %77, align 4, !tbaa !9
  %390 = sext i32 %389 to i64
  %391 = getelementptr inbounds double, ptr %388, i64 %390
  %392 = load double, ptr %391, align 8, !tbaa !11
  store double %392, ptr %74, align 8, !tbaa !11
  %393 = load double, ptr %73, align 8, !tbaa !11
  %394 = load double, ptr %74, align 8, !tbaa !11
  %395 = fcmp ole double %393, %394
  br i1 %395, label %396, label %398

396:                                              ; preds = %386
  %397 = load double, ptr %73, align 8, !tbaa !11
  br label %400

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

400:                                              ; preds = %398, %396
  %401 = phi double [ %397, %396 ], [ %399, %398 ]
  store double %401, ptr %78, align 8, !tbaa !11
  %402 = load double, ptr %79, align 8, !tbaa !11
  store double %402, ptr %73, align 8, !tbaa !11
  %403 = load ptr, ptr %43, align 8, !tbaa !5
  %404 = load i32, ptr %77, align 4, !tbaa !9
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds double, ptr %403, i64 %405
  %407 = load double, ptr %406, align 8, !tbaa !11
  store double %407, ptr %74, align 8, !tbaa !11
  %408 = load double, ptr %73, align 8, !tbaa !11
  %409 = load double, ptr %74, align 8, !tbaa !11
  %410 = fcmp oge double %408, %409
  br i1 %410, label %411, label %413

411:                                              ; preds = %400
  %412 = load double, ptr %73, align 8, !tbaa !11
  br label %415

413:                                              ; preds = %400
  %414 = load double, ptr %74, align 8, !tbaa !11
  br label %415

415:                                              ; preds = %413, %411
  %416 = phi double [ %412, %411 ], [ %414, %413 ]
  store double %416, ptr %79, align 8, !tbaa !11
  br label %417

417:                                              ; preds = %415
  %418 = load i32, ptr %77, align 4, !tbaa !9
  %419 = add nsw i32 %418, 1
  store i32 %419, ptr %77, align 4, !tbaa !9
  br label %382, !llvm.loop !16

420:                                              ; preds = %382
  %421 = load double, ptr %78, align 8, !tbaa !11
  %422 = fcmp ole double %421, 0.000000e+00
  br i1 %422, label %423, label %425

423:                                              ; preds = %420
  %424 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -14, ptr %424, align 4, !tbaa !9
  br label %451

425:                                              ; preds = %420
  %426 = load ptr, ptr %32, align 8, !tbaa !5
  %427 = load i32, ptr %426, align 4, !tbaa !9
  %428 = icmp sgt i32 %427, 0
  br i1 %428, label %429, label %449

429:                                              ; preds = %425
  %430 = load double, ptr %78, align 8, !tbaa !11
  %431 = load double, ptr %88, align 8, !tbaa !11
  %432 = fcmp oge double %430, %431
  br i1 %432, label %433, label %435

433:                                              ; preds = %429
  %434 = load double, ptr %78, align 8, !tbaa !11
  br label %437

435:                                              ; preds = %429
  %436 = load double, ptr %88, align 8, !tbaa !11
  br label %437

437:                                              ; preds = %435, %433
  %438 = phi double [ %434, %433 ], [ %436, %435 ]
  %439 = load double, ptr %79, align 8, !tbaa !11
  %440 = load double, ptr %83, align 8, !tbaa !11
  %441 = fcmp ole double %439, %440
  br i1 %441, label %442, label %444

442:                                              ; preds = %437
  %443 = load double, ptr %79, align 8, !tbaa !11
  br label %446

444:                                              ; preds = %437
  %445 = load double, ptr %83, align 8, !tbaa !11
  br label %446

446:                                              ; preds = %444, %442
  %447 = phi double [ %443, %442 ], [ %445, %444 ]
  %448 = fdiv double %438, %447
  store double %448, ptr %81, align 8, !tbaa !11
  br label %450

449:                                              ; preds = %425
  store double 1.000000e+00, ptr %81, align 8, !tbaa !11
  br label %450

450:                                              ; preds = %449, %446
  br label %451

451:                                              ; preds = %450, %423
  br label %452

452:                                              ; preds = %451, %374, %371
  %453 = load ptr, ptr %58, align 8, !tbaa !5
  %454 = load i32, ptr %453, align 4, !tbaa !9
  %455 = icmp eq i32 %454, 0
  br i1 %455, label %456, label %488

456:                                              ; preds = %452
  %457 = load ptr, ptr %45, align 8, !tbaa !5
  %458 = load i32, ptr %457, align 4, !tbaa !9
  %459 = load ptr, ptr %32, align 8, !tbaa !5
  %460 = load i32, ptr %459, align 4, !tbaa !9
  %461 = icmp sge i32 1, %460
  br i1 %461, label %462, label %463

462:                                              ; preds = %456
  br label %466

463:                                              ; preds = %456
  %464 = load ptr, ptr %32, align 8, !tbaa !5
  %465 = load i32, ptr %464, align 4, !tbaa !9
  br label %466

466:                                              ; preds = %463, %462
  %467 = phi i32 [ 1, %462 ], [ %465, %463 ]
  %468 = icmp slt i32 %458, %467
  br i1 %468, label %469, label %471

469:                                              ; preds = %466
  %470 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -15, ptr %470, align 4, !tbaa !9
  br label %487

471:                                              ; preds = %466
  %472 = load ptr, ptr %47, align 8, !tbaa !5
  %473 = load i32, ptr %472, align 4, !tbaa !9
  %474 = load ptr, ptr %32, align 8, !tbaa !5
  %475 = load i32, ptr %474, align 4, !tbaa !9
  %476 = icmp sge i32 1, %475
  br i1 %476, label %477, label %478

477:                                              ; preds = %471
  br label %481

478:                                              ; preds = %471
  %479 = load ptr, ptr %32, align 8, !tbaa !5
  %480 = load i32, ptr %479, align 4, !tbaa !9
  br label %481

481:                                              ; preds = %478, %477
  %482 = phi i32 [ 1, %477 ], [ %480, %478 ]
  %483 = icmp slt i32 %473, %482
  br i1 %483, label %484, label %486

484:                                              ; preds = %481
  %485 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -16, ptr %485, align 4, !tbaa !9
  br label %486

486:                                              ; preds = %484, %481
  br label %487

487:                                              ; preds = %486, %469
  br label %488

488:                                              ; preds = %487, %452
  br label %489

489:                                              ; preds = %488, %292
  br label %490

490:                                              ; preds = %489, %276
  br label %491

491:                                              ; preds = %490, %263
  br label %492

492:                                              ; preds = %491, %251
  br label %493

493:                                              ; preds = %492, %245
  br label %494

494:                                              ; preds = %493, %239
  br label %495

495:                                              ; preds = %494, %233
  br label %496

496:                                              ; preds = %495, %227
  br label %497

497:                                              ; preds = %496, %214
  %498 = load ptr, ptr %58, align 8, !tbaa !5
  %499 = load i32, ptr %498, align 4, !tbaa !9
  %500 = icmp ne i32 %499, 0
  br i1 %500, label %501, label %506

501:                                              ; preds = %497
  %502 = load ptr, ptr %58, align 8, !tbaa !5
  %503 = load i32, ptr %502, align 4, !tbaa !9
  %504 = sub nsw i32 0, %503
  store i32 %504, ptr %71, align 4, !tbaa !9
  %505 = call i32 @xerbla_(ptr noundef @.str.8, ptr noundef %71, i32 noundef 7)
  store i32 1, ptr %90, align 4
  br label %852

506:                                              ; preds = %497
  %507 = load i32, ptr %80, align 4, !tbaa !9
  %508 = icmp ne i32 %507, 0
  br i1 %508, label %509, label %599

509:                                              ; preds = %506
  %510 = load ptr, ptr %32, align 8, !tbaa !5
  %511 = load ptr, ptr %32, align 8, !tbaa !5
  %512 = load ptr, ptr %33, align 8, !tbaa !5
  %513 = load ptr, ptr %34, align 8, !tbaa !5
  %514 = load ptr, ptr %36, align 8, !tbaa !5
  %515 = load i32, ptr %60, align 4, !tbaa !9
  %516 = sext i32 %515 to i64
  %517 = getelementptr inbounds double, ptr %514, i64 %516
  %518 = load ptr, ptr %37, align 8, !tbaa !5
  %519 = load ptr, ptr %42, align 8, !tbaa !5
  %520 = getelementptr inbounds double, ptr %519, i64 1
  %521 = load ptr, ptr %43, align 8, !tbaa !5
  %522 = getelementptr inbounds double, ptr %521, i64 1
  call void @dgbequb_(ptr noundef %510, ptr noundef %511, ptr noundef %512, ptr noundef %513, ptr noundef %517, ptr noundef %518, ptr noundef %520, ptr noundef %522, ptr noundef %86, ptr noundef %81, ptr noundef %75, ptr noundef %84)
  %523 = load i32, ptr %84, align 4, !tbaa !9
  %524 = icmp eq i32 %523, 0
  br i1 %524, label %525, label %560

525:                                              ; preds = %509
  %526 = load ptr, ptr %32, align 8, !tbaa !5
  %527 = load ptr, ptr %32, align 8, !tbaa !5
  %528 = load ptr, ptr %33, align 8, !tbaa !5
  %529 = load ptr, ptr %34, align 8, !tbaa !5
  %530 = load ptr, ptr %36, align 8, !tbaa !5
  %531 = load i32, ptr %60, align 4, !tbaa !9
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds double, ptr %530, i64 %532
  %534 = load ptr, ptr %37, align 8, !tbaa !5
  %535 = load ptr, ptr %42, align 8, !tbaa !5
  %536 = getelementptr inbounds double, ptr %535, i64 1
  %537 = load ptr, ptr %43, align 8, !tbaa !5
  %538 = getelementptr inbounds double, ptr %537, i64 1
  %539 = load ptr, ptr %41, align 8, !tbaa !5
  call void @dlaqgb_(ptr noundef %526, ptr noundef %527, ptr noundef %528, ptr noundef %529, ptr noundef %533, ptr noundef %534, ptr noundef %536, ptr noundef %538, ptr noundef %86, ptr noundef %81, ptr noundef %75, ptr noundef %539)
  %540 = load ptr, ptr %41, align 8, !tbaa !5
  %541 = call i32 @lsame_(ptr noundef %540, ptr noundef @.str.3)
  %542 = icmp ne i32 %541, 0
  br i1 %542, label %547, label %543

543:                                              ; preds = %525
  %544 = load ptr, ptr %41, align 8, !tbaa !5
  %545 = call i32 @lsame_(ptr noundef %544, ptr noundef @.str.4)
  %546 = icmp ne i32 %545, 0
  br label %547

547:                                              ; preds = %543, %525
  %548 = phi i1 [ true, %525 ], [ %546, %543 ]
  %549 = zext i1 %548 to i32
  store i32 %549, ptr %89, align 4, !tbaa !9
  %550 = load ptr, ptr %41, align 8, !tbaa !5
  %551 = call i32 @lsame_(ptr noundef %550, ptr noundef @.str.5)
  %552 = icmp ne i32 %551, 0
  br i1 %552, label %557, label %553

553:                                              ; preds = %547
  %554 = load ptr, ptr %41, align 8, !tbaa !5
  %555 = call i32 @lsame_(ptr noundef %554, ptr noundef @.str.4)
  %556 = icmp ne i32 %555, 0
  br label %557

557:                                              ; preds = %553, %547
  %558 = phi i1 [ true, %547 ], [ %556, %553 ]
  %559 = zext i1 %558 to i32
  store i32 %559, ptr %85, align 4, !tbaa !9
  br label %560

560:                                              ; preds = %557, %509
  %561 = load i32, ptr %89, align 4, !tbaa !9
  %562 = icmp ne i32 %561, 0
  br i1 %562, label %579, label %563

563:                                              ; preds = %560
  %564 = load ptr, ptr %32, align 8, !tbaa !5
  %565 = load i32, ptr %564, align 4, !tbaa !9
  store i32 %565, ptr %71, align 4, !tbaa !9
  store i32 1, ptr %77, align 4, !tbaa !9
  br label %566

566:                                              ; preds = %575, %563
  %567 = load i32, ptr %77, align 4, !tbaa !9
  %568 = load i32, ptr %71, align 4, !tbaa !9
  %569 = icmp sle i32 %567, %568
  br i1 %569, label %570, label %578

570:                                              ; preds = %566
  %571 = load ptr, ptr %42, align 8, !tbaa !5
  %572 = load i32, ptr %77, align 4, !tbaa !9
  %573 = sext i32 %572 to i64
  %574 = getelementptr inbounds double, ptr %571, i64 %573
  store double 1.000000e+00, ptr %574, align 8, !tbaa !11
  br label %575

575:                                              ; preds = %570
  %576 = load i32, ptr %77, align 4, !tbaa !9
  %577 = add nsw i32 %576, 1
  store i32 %577, ptr %77, align 4, !tbaa !9
  br label %566, !llvm.loop !17

578:                                              ; preds = %566
  br label %579

579:                                              ; preds = %578, %560
  %580 = load i32, ptr %85, align 4, !tbaa !9
  %581 = icmp ne i32 %580, 0
  br i1 %581, label %598, label %582

582:                                              ; preds = %579
  %583 = load ptr, ptr %32, align 8, !tbaa !5
  %584 = load i32, ptr %583, align 4, !tbaa !9
  store i32 %584, ptr %71, align 4, !tbaa !9
  store i32 1, ptr %77, align 4, !tbaa !9
  br label %585

585:                                              ; preds = %594, %582
  %586 = load i32, ptr %77, align 4, !tbaa !9
  %587 = load i32, ptr %71, align 4, !tbaa !9
  %588 = icmp sle i32 %586, %587
  br i1 %588, label %589, label %597

589:                                              ; preds = %585
  %590 = load ptr, ptr %43, align 8, !tbaa !5
  %591 = load i32, ptr %77, align 4, !tbaa !9
  %592 = sext i32 %591 to i64
  %593 = getelementptr inbounds double, ptr %590, i64 %592
  store double 1.000000e+00, ptr %593, align 8, !tbaa !11
  br label %594

594:                                              ; preds = %589
  %595 = load i32, ptr %77, align 4, !tbaa !9
  %596 = add nsw i32 %595, 1
  store i32 %596, ptr %77, align 4, !tbaa !9
  br label %585, !llvm.loop !18

597:                                              ; preds = %585
  br label %598

598:                                              ; preds = %597, %579
  br label %599

599:                                              ; preds = %598, %506
  %600 = load i32, ptr %87, align 4, !tbaa !9
  %601 = icmp ne i32 %600, 0
  br i1 %601, label %602, label %616

602:                                              ; preds = %599
  %603 = load i32, ptr %89, align 4, !tbaa !9
  %604 = icmp ne i32 %603, 0
  br i1 %604, label %605, label %615

605:                                              ; preds = %602
  %606 = load ptr, ptr %32, align 8, !tbaa !5
  %607 = load ptr, ptr %35, align 8, !tbaa !5
  %608 = load ptr, ptr %42, align 8, !tbaa !5
  %609 = getelementptr inbounds double, ptr %608, i64 1
  %610 = load ptr, ptr %44, align 8, !tbaa !5
  %611 = load i32, ptr %64, align 4, !tbaa !9
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds double, ptr %610, i64 %612
  %614 = load ptr, ptr %45, align 8, !tbaa !5
  call void @dlascl2_(ptr noundef %606, ptr noundef %607, ptr noundef %609, ptr noundef %613, ptr noundef %614)
  br label %615

615:                                              ; preds = %605, %602
  br label %630

616:                                              ; preds = %599
  %617 = load i32, ptr %85, align 4, !tbaa !9
  %618 = icmp ne i32 %617, 0
  br i1 %618, label %619, label %629

619:                                              ; preds = %616
  %620 = load ptr, ptr %32, align 8, !tbaa !5
  %621 = load ptr, ptr %35, align 8, !tbaa !5
  %622 = load ptr, ptr %43, align 8, !tbaa !5
  %623 = getelementptr inbounds double, ptr %622, i64 1
  %624 = load ptr, ptr %44, align 8, !tbaa !5
  %625 = load i32, ptr %64, align 4, !tbaa !9
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds double, ptr %624, i64 %626
  %628 = load ptr, ptr %45, align 8, !tbaa !5
  call void @dlascl2_(ptr noundef %620, ptr noundef %621, ptr noundef %623, ptr noundef %627, ptr noundef %628)
  br label %629

629:                                              ; preds = %619, %616
  br label %630

630:                                              ; preds = %629, %615
  %631 = load i32, ptr %82, align 4, !tbaa !9
  %632 = icmp ne i32 %631, 0
  br i1 %632, label %636, label %633

633:                                              ; preds = %630
  %634 = load i32, ptr %80, align 4, !tbaa !9
  %635 = icmp ne i32 %634, 0
  br i1 %635, label %636, label %720

636:                                              ; preds = %633, %630
  %637 = load ptr, ptr %32, align 8, !tbaa !5
  %638 = load i32, ptr %637, align 4, !tbaa !9
  store i32 %638, ptr %71, align 4, !tbaa !9
  store i32 1, ptr %77, align 4, !tbaa !9
  br label %639

639:                                              ; preds = %683, %636
  %640 = load i32, ptr %77, align 4, !tbaa !9
  %641 = load i32, ptr %71, align 4, !tbaa !9
  %642 = icmp sle i32 %640, %641
  br i1 %642, label %643, label %686

643:                                              ; preds = %639
  %644 = load ptr, ptr %33, align 8, !tbaa !5
  %645 = load i32, ptr %644, align 4, !tbaa !9
  %646 = shl i32 %645, 1
  %647 = load ptr, ptr %34, align 8, !tbaa !5
  %648 = load i32, ptr %647, align 4, !tbaa !9
  %649 = add nsw i32 %646, %648
  %650 = add nsw i32 %649, 1
  store i32 %650, ptr %72, align 4, !tbaa !9
  %651 = load ptr, ptr %33, align 8, !tbaa !5
  %652 = load i32, ptr %651, align 4, !tbaa !9
  %653 = add nsw i32 %652, 1
  store i32 %653, ptr %76, align 4, !tbaa !9
  br label %654

654:                                              ; preds = %679, %643
  %655 = load i32, ptr %76, align 4, !tbaa !9
  %656 = load i32, ptr %72, align 4, !tbaa !9
  %657 = icmp sle i32 %655, %656
  br i1 %657, label %658, label %682

658:                                              ; preds = %654
  %659 = load ptr, ptr %36, align 8, !tbaa !5
  %660 = load i32, ptr %76, align 4, !tbaa !9
  %661 = load ptr, ptr %33, align 8, !tbaa !5
  %662 = load i32, ptr %661, align 4, !tbaa !9
  %663 = sub nsw i32 %660, %662
  %664 = load i32, ptr %77, align 4, !tbaa !9
  %665 = load i32, ptr %59, align 4, !tbaa !9
  %666 = mul nsw i32 %664, %665
  %667 = add nsw i32 %663, %666
  %668 = sext i32 %667 to i64
  %669 = getelementptr inbounds double, ptr %659, i64 %668
  %670 = load double, ptr %669, align 8, !tbaa !11
  %671 = load ptr, ptr %38, align 8, !tbaa !5
  %672 = load i32, ptr %76, align 4, !tbaa !9
  %673 = load i32, ptr %77, align 4, !tbaa !9
  %674 = load i32, ptr %61, align 4, !tbaa !9
  %675 = mul nsw i32 %673, %674
  %676 = add nsw i32 %672, %675
  %677 = sext i32 %676 to i64
  %678 = getelementptr inbounds double, ptr %671, i64 %677
  store double %670, ptr %678, align 8, !tbaa !11
  br label %679

679:                                              ; preds = %658
  %680 = load i32, ptr %76, align 4, !tbaa !9
  %681 = add nsw i32 %680, 1
  store i32 %681, ptr %76, align 4, !tbaa !9
  br label %654, !llvm.loop !19

682:                                              ; preds = %654
  br label %683

683:                                              ; preds = %682
  %684 = load i32, ptr %77, align 4, !tbaa !9
  %685 = add nsw i32 %684, 1
  store i32 %685, ptr %77, align 4, !tbaa !9
  br label %639, !llvm.loop !20

686:                                              ; preds = %639
  %687 = load ptr, ptr %32, align 8, !tbaa !5
  %688 = load ptr, ptr %32, align 8, !tbaa !5
  %689 = load ptr, ptr %33, align 8, !tbaa !5
  %690 = load ptr, ptr %34, align 8, !tbaa !5
  %691 = load ptr, ptr %38, align 8, !tbaa !5
  %692 = load i32, ptr %62, align 4, !tbaa !9
  %693 = sext i32 %692 to i64
  %694 = getelementptr inbounds double, ptr %691, i64 %693
  %695 = load ptr, ptr %39, align 8, !tbaa !5
  %696 = load ptr, ptr %40, align 8, !tbaa !5
  %697 = getelementptr inbounds i32, ptr %696, i64 1
  %698 = load ptr, ptr %58, align 8, !tbaa !5
  call void @dgbtrf_(ptr noundef %687, ptr noundef %688, ptr noundef %689, ptr noundef %690, ptr noundef %694, ptr noundef %695, ptr noundef %697, ptr noundef %698)
  %699 = load ptr, ptr %58, align 8, !tbaa !5
  %700 = load i32, ptr %699, align 4, !tbaa !9
  %701 = icmp sgt i32 %700, 0
  br i1 %701, label %702, label %719

702:                                              ; preds = %686
  %703 = load ptr, ptr %32, align 8, !tbaa !5
  %704 = load ptr, ptr %33, align 8, !tbaa !5
  %705 = load ptr, ptr %34, align 8, !tbaa !5
  %706 = load ptr, ptr %58, align 8, !tbaa !5
  %707 = load ptr, ptr %36, align 8, !tbaa !5
  %708 = load i32, ptr %60, align 4, !tbaa !9
  %709 = sext i32 %708 to i64
  %710 = getelementptr inbounds double, ptr %707, i64 %709
  %711 = load ptr, ptr %37, align 8, !tbaa !5
  %712 = load ptr, ptr %38, align 8, !tbaa !5
  %713 = load i32, ptr %62, align 4, !tbaa !9
  %714 = sext i32 %713 to i64
  %715 = getelementptr inbounds double, ptr %712, i64 %714
  %716 = load ptr, ptr %39, align 8, !tbaa !5
  %717 = call double @dla_gbrpvgrw_(ptr noundef %703, ptr noundef %704, ptr noundef %705, ptr noundef %706, ptr noundef %710, ptr noundef %711, ptr noundef %715, ptr noundef %716)
  %718 = load ptr, ptr %49, align 8, !tbaa !5
  store double %717, ptr %718, align 8, !tbaa !11
  store i32 1, ptr %90, align 4
  br label %852

719:                                              ; preds = %686
  br label %720

720:                                              ; preds = %719, %633
  %721 = load ptr, ptr %32, align 8, !tbaa !5
  %722 = load ptr, ptr %33, align 8, !tbaa !5
  %723 = load ptr, ptr %34, align 8, !tbaa !5
  %724 = load ptr, ptr %32, align 8, !tbaa !5
  %725 = load ptr, ptr %36, align 8, !tbaa !5
  %726 = load i32, ptr %60, align 4, !tbaa !9
  %727 = sext i32 %726 to i64
  %728 = getelementptr inbounds double, ptr %725, i64 %727
  %729 = load ptr, ptr %37, align 8, !tbaa !5
  %730 = load ptr, ptr %38, align 8, !tbaa !5
  %731 = load i32, ptr %62, align 4, !tbaa !9
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds double, ptr %730, i64 %732
  %734 = load ptr, ptr %39, align 8, !tbaa !5
  %735 = call double @dla_gbrpvgrw_(ptr noundef %721, ptr noundef %722, ptr noundef %723, ptr noundef %724, ptr noundef %728, ptr noundef %729, ptr noundef %733, ptr noundef %734)
  %736 = load ptr, ptr %49, align 8, !tbaa !5
  store double %735, ptr %736, align 8, !tbaa !11
  %737 = load ptr, ptr %32, align 8, !tbaa !5
  %738 = load ptr, ptr %35, align 8, !tbaa !5
  %739 = load ptr, ptr %44, align 8, !tbaa !5
  %740 = load i32, ptr %64, align 4, !tbaa !9
  %741 = sext i32 %740 to i64
  %742 = getelementptr inbounds double, ptr %739, i64 %741
  %743 = load ptr, ptr %45, align 8, !tbaa !5
  %744 = load ptr, ptr %46, align 8, !tbaa !5
  %745 = load i32, ptr %66, align 4, !tbaa !9
  %746 = sext i32 %745 to i64
  %747 = getelementptr inbounds double, ptr %744, i64 %746
  %748 = load ptr, ptr %47, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.9, ptr noundef %737, ptr noundef %738, ptr noundef %742, ptr noundef %743, ptr noundef %747, ptr noundef %748)
  %749 = load ptr, ptr %31, align 8, !tbaa !5
  %750 = load ptr, ptr %32, align 8, !tbaa !5
  %751 = load ptr, ptr %33, align 8, !tbaa !5
  %752 = load ptr, ptr %34, align 8, !tbaa !5
  %753 = load ptr, ptr %35, align 8, !tbaa !5
  %754 = load ptr, ptr %38, align 8, !tbaa !5
  %755 = load i32, ptr %62, align 4, !tbaa !9
  %756 = sext i32 %755 to i64
  %757 = getelementptr inbounds double, ptr %754, i64 %756
  %758 = load ptr, ptr %39, align 8, !tbaa !5
  %759 = load ptr, ptr %40, align 8, !tbaa !5
  %760 = getelementptr inbounds i32, ptr %759, i64 1
  %761 = load ptr, ptr %46, align 8, !tbaa !5
  %762 = load i32, ptr %66, align 4, !tbaa !9
  %763 = sext i32 %762 to i64
  %764 = getelementptr inbounds double, ptr %761, i64 %763
  %765 = load ptr, ptr %47, align 8, !tbaa !5
  %766 = load ptr, ptr %58, align 8, !tbaa !5
  call void @dgbtrs_(ptr noundef %749, ptr noundef %750, ptr noundef %751, ptr noundef %752, ptr noundef %753, ptr noundef %757, ptr noundef %758, ptr noundef %760, ptr noundef %764, ptr noundef %765, ptr noundef %766)
  %767 = load ptr, ptr %31, align 8, !tbaa !5
  %768 = load ptr, ptr %41, align 8, !tbaa !5
  %769 = load ptr, ptr %32, align 8, !tbaa !5
  %770 = load ptr, ptr %33, align 8, !tbaa !5
  %771 = load ptr, ptr %34, align 8, !tbaa !5
  %772 = load ptr, ptr %35, align 8, !tbaa !5
  %773 = load ptr, ptr %36, align 8, !tbaa !5
  %774 = load i32, ptr %60, align 4, !tbaa !9
  %775 = sext i32 %774 to i64
  %776 = getelementptr inbounds double, ptr %773, i64 %775
  %777 = load ptr, ptr %37, align 8, !tbaa !5
  %778 = load ptr, ptr %38, align 8, !tbaa !5
  %779 = load i32, ptr %62, align 4, !tbaa !9
  %780 = sext i32 %779 to i64
  %781 = getelementptr inbounds double, ptr %778, i64 %780
  %782 = load ptr, ptr %39, align 8, !tbaa !5
  %783 = load ptr, ptr %40, align 8, !tbaa !5
  %784 = getelementptr inbounds i32, ptr %783, i64 1
  %785 = load ptr, ptr %42, align 8, !tbaa !5
  %786 = getelementptr inbounds double, ptr %785, i64 1
  %787 = load ptr, ptr %43, align 8, !tbaa !5
  %788 = getelementptr inbounds double, ptr %787, i64 1
  %789 = load ptr, ptr %44, align 8, !tbaa !5
  %790 = load i32, ptr %64, align 4, !tbaa !9
  %791 = sext i32 %790 to i64
  %792 = getelementptr inbounds double, ptr %789, i64 %791
  %793 = load ptr, ptr %45, align 8, !tbaa !5
  %794 = load ptr, ptr %46, align 8, !tbaa !5
  %795 = load i32, ptr %66, align 4, !tbaa !9
  %796 = sext i32 %795 to i64
  %797 = getelementptr inbounds double, ptr %794, i64 %796
  %798 = load ptr, ptr %47, align 8, !tbaa !5
  %799 = load ptr, ptr %48, align 8, !tbaa !5
  %800 = load ptr, ptr %50, align 8, !tbaa !5
  %801 = getelementptr inbounds double, ptr %800, i64 1
  %802 = load ptr, ptr %51, align 8, !tbaa !5
  %803 = load ptr, ptr %52, align 8, !tbaa !5
  %804 = load i32, ptr %68, align 4, !tbaa !9
  %805 = sext i32 %804 to i64
  %806 = getelementptr inbounds double, ptr %803, i64 %805
  %807 = load ptr, ptr %53, align 8, !tbaa !5
  %808 = load i32, ptr %70, align 4, !tbaa !9
  %809 = sext i32 %808 to i64
  %810 = getelementptr inbounds double, ptr %807, i64 %809
  %811 = load ptr, ptr %54, align 8, !tbaa !5
  %812 = load ptr, ptr %55, align 8, !tbaa !5
  %813 = getelementptr inbounds double, ptr %812, i64 1
  %814 = load ptr, ptr %56, align 8, !tbaa !5
  %815 = getelementptr inbounds double, ptr %814, i64 1
  %816 = load ptr, ptr %57, align 8, !tbaa !5
  %817 = getelementptr inbounds i32, ptr %816, i64 1
  %818 = load ptr, ptr %58, align 8, !tbaa !5
  call void @dgbrfsx_(ptr noundef %767, ptr noundef %768, ptr noundef %769, ptr noundef %770, ptr noundef %771, ptr noundef %772, ptr noundef %776, ptr noundef %777, ptr noundef %781, ptr noundef %782, ptr noundef %784, ptr noundef %786, ptr noundef %788, ptr noundef %792, ptr noundef %793, ptr noundef %797, ptr noundef %798, ptr noundef %799, ptr noundef %801, ptr noundef %802, ptr noundef %806, ptr noundef %810, ptr noundef %811, ptr noundef %813, ptr noundef %815, ptr noundef %817, ptr noundef %818)
  %819 = load i32, ptr %85, align 4, !tbaa !9
  %820 = icmp ne i32 %819, 0
  br i1 %820, label %821, label %834

821:                                              ; preds = %720
  %822 = load i32, ptr %87, align 4, !tbaa !9
  %823 = icmp ne i32 %822, 0
  br i1 %823, label %824, label %834

824:                                              ; preds = %821
  %825 = load ptr, ptr %32, align 8, !tbaa !5
  %826 = load ptr, ptr %35, align 8, !tbaa !5
  %827 = load ptr, ptr %43, align 8, !tbaa !5
  %828 = getelementptr inbounds double, ptr %827, i64 1
  %829 = load ptr, ptr %46, align 8, !tbaa !5
  %830 = load i32, ptr %66, align 4, !tbaa !9
  %831 = sext i32 %830 to i64
  %832 = getelementptr inbounds double, ptr %829, i64 %831
  %833 = load ptr, ptr %47, align 8, !tbaa !5
  call void @dlascl2_(ptr noundef %825, ptr noundef %826, ptr noundef %828, ptr noundef %832, ptr noundef %833)
  br label %851

834:                                              ; preds = %821, %720
  %835 = load i32, ptr %89, align 4, !tbaa !9
  %836 = icmp ne i32 %835, 0
  br i1 %836, label %837, label %850

837:                                              ; preds = %834
  %838 = load i32, ptr %87, align 4, !tbaa !9
  %839 = icmp ne i32 %838, 0
  br i1 %839, label %850, label %840

840:                                              ; preds = %837
  %841 = load ptr, ptr %32, align 8, !tbaa !5
  %842 = load ptr, ptr %35, align 8, !tbaa !5
  %843 = load ptr, ptr %42, align 8, !tbaa !5
  %844 = getelementptr inbounds double, ptr %843, i64 1
  %845 = load ptr, ptr %46, align 8, !tbaa !5
  %846 = load i32, ptr %66, align 4, !tbaa !9
  %847 = sext i32 %846 to i64
  %848 = getelementptr inbounds double, ptr %845, i64 %847
  %849 = load ptr, ptr %47, align 8, !tbaa !5
  call void @dlascl2_(ptr noundef %841, ptr noundef %842, ptr noundef %844, ptr noundef %848, ptr noundef %849)
  br label %850

850:                                              ; preds = %840, %837, %834
  br label %851

851:                                              ; preds = %850, %824
  store i32 1, ptr %90, align 4
  br label %852

852:                                              ; preds = %851, %702, %501
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #3
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %77) #3
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #3
  ret void
}

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

declare void @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 void @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 = !{!"int", !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 void @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 = ptrtoint ptr %6 to i64
  %31 = ptrtoint ptr %8 to i64
  %32 = alloca i32, align 4
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca i32, align 4
  %36 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 4, 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
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #4
  %37 = load i32, ptr %7, align 4, !tbaa !5
  %narrow366 = xor i32 %37, -1
  %38 = sext i32 %narrow366 to i64
  %39 = getelementptr inbounds double, ptr %6, i64 %38
  %40 = load i32, ptr %9, align 4, !tbaa !5
  %narrow = xor i32 %40, -1
  %41 = sext i32 %narrow to i64
  %42 = getelementptr inbounds double, ptr %8, i64 %41
  %43 = getelementptr inbounds i8, ptr %12, i64 -8
  %44 = getelementptr inbounds i8, ptr %13, i64 -8
  store i32 0, ptr %28, align 4, !tbaa !5
  %45 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %46 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %47 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #4
  %48 = tail call double @dlamch_(ptr noundef nonnull @.str.2) #4
  %49 = fdiv double 1.000000e+00, %48
  %50 = icmp ne i32 %45, 0
  %51 = icmp ne i32 %46, 0
  %or.cond = select i1 %50, i1 true, i1 %51
  br i1 %or.cond, label %.thread, label %52

.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 %68

52:                                               ; preds = %29
  %53 = tail call i32 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.3) #4
  %.not = icmp eq i32 %53, 0
  br i1 %.not, label %54, label %57

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

57:                                               ; preds = %54, %52
  %58 = phi i1 [ true, %52 ], [ %56, %54 ]
  %59 = zext i1 %58 to i32
  %60 = tail call i32 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.5) #4
  %.not346 = icmp eq i32 %60, 0
  br i1 %.not346, label %61, label %64

61:                                               ; preds = %57
  %62 = tail call i32 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.4) #4
  %63 = icmp ne i32 %62, 0
  br label %64

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

68:                                               ; preds = %.thread, %64
  %.0374 = phi i32 [ 0, %.thread ], [ %59, %64 ]
  %.0330372 = phi i32 [ 0, %.thread ], [ %66, %64 ]
  %.not348 = icmp eq i32 %47, 0
  br i1 %.not348, label %69, label %73

69:                                               ; preds = %68
  %70 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.7) #4
  %.not349 = icmp eq i32 %70, 0
  br i1 %.not349, label %71, label %73

71:                                               ; preds = %69
  %72 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.5) #4
  %.not350 = icmp eq i32 %72, 0
  br i1 %.not350, label %.thread381.sink.split, label %73

73:                                               ; preds = %71, %69, %68
  %74 = load i32, ptr %2, align 4, !tbaa !5
  %75 = icmp slt i32 %74, 0
  br i1 %75, label %.thread381.sink.split, label %76

76:                                               ; preds = %73
  %77 = load i32, ptr %3, align 4, !tbaa !5
  %78 = icmp slt i32 %77, 0
  br i1 %78, label %.thread381.sink.split, label %79

79:                                               ; preds = %76
  %80 = load i32, ptr %4, align 4, !tbaa !5
  %81 = icmp slt i32 %80, 0
  br i1 %81, label %.thread381.sink.split, label %82

82:                                               ; preds = %79
  %83 = load i32, ptr %5, align 4, !tbaa !5
  %84 = icmp slt i32 %83, 0
  br i1 %84, label %.thread381.sink.split, label %85

85:                                               ; preds = %82
  %86 = load i32, ptr %7, align 4, !tbaa !5
  %87 = add nuw nsw i32 %80, %77
  %.not351 = icmp sgt i32 %86, %87
  br i1 %.not351, label %88, label %.thread381.sink.split

88:                                               ; preds = %85
  %89 = load i32, ptr %9, align 4, !tbaa !5
  %90 = shl nuw i32 %77, 1
  %91 = add nsw i32 %80, %90
  %.not352 = icmp sgt i32 %89, %91
  br i1 %.not352, label %92, label %.thread381.sink.split

92:                                               ; preds = %88
  %93 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.6) #4
  %94 = icmp eq i32 %93, 0
  %95 = icmp ne i32 %.0374, 0
  %or.cond5 = select i1 %94, i1 true, i1 %95
  %96 = icmp ne i32 %.0330372, 0
  %or.cond7 = select i1 %or.cond5, i1 true, i1 %96
  br i1 %or.cond7, label %99, label %97

97:                                               ; preds = %92
  %98 = tail call i32 @lsame_(ptr noundef %11, ptr noundef nonnull @.str) #4
  %.not353 = icmp eq i32 %98, 0
  br i1 %.not353, label %.thread381.sink.split, label %..thread376_crit_edge

..thread376_crit_edge:                            ; preds = %97
  %.pr.pre = load i32, ptr %28, align 4, !tbaa !5
  br label %.thread376

99:                                               ; preds = %92
  br i1 %95, label %100, label %132

100:                                              ; preds = %99
  %101 = load i32, ptr %2, align 4, !tbaa !5
  %.not354405 = icmp slt i32 %101, 1
  br i1 %.not354405, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %100
  %102 = zext nneg i32 %101 to i64
  %xtraiter = and i64 %102, 1
  %103 = icmp eq i32 %101, 1
  br i1 %103, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.preheader.new

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

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader.new ], [ %indvars.iv.next.1, %.lr.ph ]
  %.0333408 = phi double [ 0.000000e+00, %.lr.ph.preheader.new ], [ %115, %.lr.ph ]
  %.0335407 = phi double [ %49, %.lr.ph.preheader.new ], [ %113, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %104 = getelementptr inbounds double, ptr %43, i64 %indvars.iv
  %105 = load double, ptr %104, align 8, !tbaa !10
  %106 = fcmp ole double %.0335407, %105
  %107 = select i1 %106, double %.0335407, double %105
  %108 = fcmp oge double %.0333408, %105
  %109 = select i1 %108, double %.0333408, double %105
  %110 = getelementptr double, ptr %12, i64 %indvars.iv
  %111 = load double, ptr %110, align 8, !tbaa !10
  %112 = fcmp ole double %107, %111
  %113 = select i1 %112, double %107, double %111
  %114 = fcmp oge double %109, %111
  %115 = select i1 %114, double %109, double %111
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph, !llvm.loop !12

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph, %.lr.ph.preheader
  %.lcssa518.ph = phi double [ poison, %.lr.ph.preheader ], [ %113, %.lr.ph ]
  %.lcssa517.ph = phi double [ poison, %.lr.ph.preheader ], [ %115, %.lr.ph ]
  %indvars.iv.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next.1, %.lr.ph ]
  %.0333408.unr = phi double [ 0.000000e+00, %.lr.ph.preheader ], [ %115, %.lr.ph ]
  %.0335407.unr = phi double [ %49, %.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
  %116 = getelementptr inbounds double, ptr %43, i64 %indvars.iv.unr
  %117 = load double, ptr %116, align 8, !tbaa !10
  %118 = fcmp ole double %.0335407.unr, %117
  %119 = select i1 %118, double %.0335407.unr, double %117
  %120 = fcmp oge double %.0333408.unr, %117
  %121 = select i1 %120, double %.0333408.unr, double %117
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %100
  %.0335.lcssa = phi double [ %49, %100 ], [ %.lcssa518.ph, %._crit_edge.loopexit.unr-lcssa ], [ %119, %.lr.ph.epil ]
  %.0333.lcssa = phi double [ 0.000000e+00, %100 ], [ %.lcssa517.ph, %._crit_edge.loopexit.unr-lcssa ], [ %121, %.lr.ph.epil ]
  %122 = fcmp ugt double %.0335.lcssa, 0.000000e+00
  br i1 %122, label %123, label %.thread381.sink.split

123:                                              ; preds = %._crit_edge
  %124 = icmp sgt i32 %101, 0
  br i1 %124, label %125, label %131

125:                                              ; preds = %123
  %126 = fcmp oge double %.0335.lcssa, %48
  %127 = select i1 %126, double %.0335.lcssa, double %48
  %128 = fcmp ole double %.0333.lcssa, %49
  %129 = select i1 %128, double %.0333.lcssa, double %49
  %130 = fdiv double %127, %129
  store double %130, ptr %36, align 8, !tbaa !10
  br label %132

131:                                              ; preds = %123
  store double 1.000000e+00, ptr %36, align 8, !tbaa !10
  br label %132

132:                                              ; preds = %131, %125, %99
  %.pr.pre466.pr = load i32, ptr %28, align 4, !tbaa !5
  br i1 %96, label %133, label %.thread376

133:                                              ; preds = %132
  %134 = icmp eq i32 %.pr.pre466.pr, 0
  br i1 %134, label %135, label %.thread381

135:                                              ; preds = %133
  %136 = load i32, ptr %2, align 4, !tbaa !5
  %.not355410 = icmp slt i32 %136, 1
  br i1 %.not355410, label %._crit_edge416, label %.lr.ph415.preheader

.lr.ph415.preheader:                              ; preds = %135
  %137 = zext nneg i32 %136 to i64
  %xtraiter521 = and i64 %137, 1
  %138 = icmp eq i32 %136, 1
  br i1 %138, label %._crit_edge416.loopexit.unr-lcssa, label %.lr.ph415.preheader.new

.lr.ph415.preheader.new:                          ; preds = %.lr.ph415.preheader
  %unroll_iter525 = and i64 %137, 2147483646
  br label %.lr.ph415

.lr.ph415:                                        ; preds = %.lr.ph415, %.lr.ph415.preheader.new
  %indvars.iv442 = phi i64 [ 1, %.lr.ph415.preheader.new ], [ %indvars.iv.next443.1, %.lr.ph415 ]
  %.1334413 = phi double [ 0.000000e+00, %.lr.ph415.preheader.new ], [ %150, %.lr.ph415 ]
  %.1336412 = phi double [ %49, %.lr.ph415.preheader.new ], [ %148, %.lr.ph415 ]
  %niter526 = phi i64 [ 0, %.lr.ph415.preheader.new ], [ %niter526.next.1, %.lr.ph415 ]
  %139 = getelementptr inbounds double, ptr %44, i64 %indvars.iv442
  %140 = load double, ptr %139, align 8, !tbaa !10
  %141 = fcmp ole double %.1336412, %140
  %142 = select i1 %141, double %.1336412, double %140
  %143 = fcmp oge double %.1334413, %140
  %144 = select i1 %143, double %.1334413, double %140
  %145 = getelementptr double, ptr %13, i64 %indvars.iv442
  %146 = load double, ptr %145, align 8, !tbaa !10
  %147 = fcmp ole double %142, %146
  %148 = select i1 %147, double %142, double %146
  %149 = fcmp oge double %144, %146
  %150 = select i1 %149, double %144, double %146
  %indvars.iv.next443.1 = add nuw nsw i64 %indvars.iv442, 2
  %niter526.next.1 = add i64 %niter526, 2
  %niter526.ncmp.1 = icmp eq i64 %niter526.next.1, %unroll_iter525
  br i1 %niter526.ncmp.1, label %._crit_edge416.loopexit.unr-lcssa, label %.lr.ph415, !llvm.loop !14

._crit_edge416.loopexit.unr-lcssa:                ; preds = %.lr.ph415, %.lr.ph415.preheader
  %.lcssa516.ph = phi double [ poison, %.lr.ph415.preheader ], [ %148, %.lr.ph415 ]
  %.lcssa.ph = phi double [ poison, %.lr.ph415.preheader ], [ %150, %.lr.ph415 ]
  %indvars.iv442.unr = phi i64 [ 1, %.lr.ph415.preheader ], [ %indvars.iv.next443.1, %.lr.ph415 ]
  %.1334413.unr = phi double [ 0.000000e+00, %.lr.ph415.preheader ], [ %150, %.lr.ph415 ]
  %.1336412.unr = phi double [ %49, %.lr.ph415.preheader ], [ %148, %.lr.ph415 ]
  %lcmp.mod522.not = icmp eq i64 %xtraiter521, 0
  br i1 %lcmp.mod522.not, label %._crit_edge416, label %.lr.ph415.epil

.lr.ph415.epil:                                   ; preds = %._crit_edge416.loopexit.unr-lcssa
  %151 = getelementptr inbounds double, ptr %44, i64 %indvars.iv442.unr
  %152 = load double, ptr %151, align 8, !tbaa !10
  %153 = fcmp ole double %.1336412.unr, %152
  %154 = select i1 %153, double %.1336412.unr, double %152
  %155 = fcmp oge double %.1334413.unr, %152
  %156 = select i1 %155, double %.1334413.unr, double %152
  br label %._crit_edge416

._crit_edge416:                                   ; preds = %.lr.ph415.epil, %._crit_edge416.loopexit.unr-lcssa, %135
  %.1336.lcssa = phi double [ %49, %135 ], [ %.lcssa516.ph, %._crit_edge416.loopexit.unr-lcssa ], [ %154, %.lr.ph415.epil ]
  %.1334.lcssa = phi double [ 0.000000e+00, %135 ], [ %.lcssa.ph, %._crit_edge416.loopexit.unr-lcssa ], [ %156, %.lr.ph415.epil ]
  %157 = fcmp ugt double %.1336.lcssa, 0.000000e+00
  br i1 %157, label %158, label %.thread381.sink.split

158:                                              ; preds = %._crit_edge416
  %159 = icmp sgt i32 %136, 0
  br i1 %159, label %160, label %166

160:                                              ; preds = %158
  %161 = fcmp oge double %.1336.lcssa, %48
  %162 = select i1 %161, double %.1336.lcssa, double %48
  %163 = fcmp ole double %.1334.lcssa, %49
  %164 = select i1 %163, double %.1334.lcssa, double %49
  %165 = fdiv double %162, %164
  store double %165, ptr %34, align 8, !tbaa !10
  br label %.thread376.thread

166:                                              ; preds = %158
  store double 1.000000e+00, ptr %34, align 8, !tbaa !10
  br label %.thread376.thread

.thread376:                                       ; preds = %..thread376_crit_edge, %132
  %.pr379.pr = phi i32 [ %.pr.pre, %..thread376_crit_edge ], [ %.pr.pre466.pr, %132 ]
  %167 = icmp eq i32 %.pr379.pr, 0
  br i1 %167, label %.thread376.thread, label %.thread381

.thread376.thread:                                ; preds = %160, %166, %.thread376
  %168 = load i32, ptr %15, align 4, !tbaa !5
  %169 = load i32, ptr %2, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.smax.i32(i32 %169, i32 1)
  %170 = icmp slt i32 %168, %spec.select
  br i1 %170, label %.thread381.sink.split, label %171

171:                                              ; preds = %.thread376.thread
  %172 = load i32, ptr %17, align 4, !tbaa !5
  %173 = icmp slt i32 %172, %spec.select
  br i1 %173, label %.thread381.sink.split, label %.thread377

.thread381.sink.split:                            ; preds = %171, %.thread376.thread, %._crit_edge416, %._crit_edge, %97, %88, %85, %82, %79, %76, %73, %71, %64
  %.sink = phi i32 [ -1, %64 ], [ -2, %71 ], [ -3, %73 ], [ -4, %76 ], [ -5, %79 ], [ -6, %82 ], [ -8, %85 ], [ -10, %88 ], [ -12, %97 ], [ -13, %._crit_edge ], [ -14, %._crit_edge416 ], [ -15, %.thread376.thread ], [ -16, %171 ]
  store i32 %.sink, ptr %28, align 4, !tbaa !5
  br label %.thread381

.thread381:                                       ; preds = %.thread381.sink.split, %133, %.thread376
  %174 = phi i32 [ %.pr379.pr, %.thread376 ], [ %.pr.pre466.pr, %133 ], [ %.sink, %.thread381.sink.split ]
  %175 = sub nsw i32 0, %174
  store i32 %175, ptr %32, align 4, !tbaa !5
  %176 = call i32 @xerbla_(ptr noundef nonnull @.str.8, ptr noundef nonnull %32, i32 noundef 7) #4
  br label %306

.thread377:                                       ; preds = %171
  br i1 %51, label %177, label %.loopexit

177:                                              ; preds = %.thread377
  call void @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 %36, ptr noundef nonnull %34, ptr noundef nonnull %33, ptr noundef nonnull %35) #4
  %178 = load i32, ptr %35, align 4, !tbaa !5
  %179 = icmp eq i32 %178, 0
  br i1 %179, label %180, label %193

180:                                              ; preds = %177
  call void @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 %36, ptr noundef nonnull %34, ptr noundef nonnull %33, ptr noundef %11) #4
  %181 = call i32 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.3) #4
  %.not357 = icmp eq i32 %181, 0
  br i1 %.not357, label %182, label %186

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

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

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

193:                                              ; preds = %186, %189, %177
  %.1331 = phi i32 [ %.0330372, %177 ], [ 1, %186 ], [ %192, %189 ]
  %.1 = phi i32 [ %.0374, %177 ], [ %187, %186 ], [ %187, %189 ]
  %.not359 = icmp eq i32 %.1, 0
  br i1 %.not359, label %194, label %.loopexit404

194:                                              ; preds = %193
  %195 = load i32, ptr %2, align 4, !tbaa !5
  %.not360419 = icmp slt i32 %195, 1
  br i1 %.not360419, label %.loopexit404, label %.lr.ph422.preheader

.lr.ph422.preheader:                              ; preds = %194
  %196 = add nuw i32 %195, 1
  %wide.trip.count450 = zext i32 %196 to i64
  %197 = zext nneg i32 %195 to i64
  %min.iters.check = icmp ult i32 %195, 4
  br i1 %min.iters.check, label %.lr.ph422.preheader515, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph422.preheader
  %n.vec = and i64 %197, 2147483644
  %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 ]
  %198 = getelementptr double, ptr %12, i64 %index
  %199 = getelementptr inbounds i8, ptr %198, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %198, align 8, !tbaa !10
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %199, align 8, !tbaa !10
  %index.next = add nuw i64 %index, 4
  %200 = icmp eq i64 %index.next, %n.vec
  br i1 %200, label %middle.block, label %vector.body, !llvm.loop !15

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %197
  br i1 %cmp.n, label %.loopexit404, label %.lr.ph422.preheader515

.lr.ph422.preheader515:                           ; preds = %middle.block, %.lr.ph422.preheader
  %indvars.iv447.ph = phi i64 [ 1, %.lr.ph422.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph422

.lr.ph422:                                        ; preds = %.lr.ph422.preheader515, %.lr.ph422
  %indvars.iv447 = phi i64 [ %indvars.iv.next448, %.lr.ph422 ], [ %indvars.iv447.ph, %.lr.ph422.preheader515 ]
  %201 = getelementptr inbounds double, ptr %43, i64 %indvars.iv447
  store double 1.000000e+00, ptr %201, align 8, !tbaa !10
  %indvars.iv.next448 = add nuw nsw i64 %indvars.iv447, 1
  %exitcond451.not = icmp eq i64 %indvars.iv.next448, %wide.trip.count450
  br i1 %exitcond451.not, label %.loopexit404, label %.lr.ph422, !llvm.loop !18

.loopexit404:                                     ; preds = %.lr.ph422, %middle.block, %194, %193
  %.not361 = icmp eq i32 %.1331, 0
  br i1 %.not361, label %202, label %.thread385

202:                                              ; preds = %.loopexit404
  %203 = load i32, ptr %2, align 4, !tbaa !5
  %.not362423 = icmp slt i32 %203, 1
  br i1 %.not362423, label %.loopexit, label %.lr.ph426.preheader

.lr.ph426.preheader:                              ; preds = %202
  %204 = add nuw i32 %203, 1
  %wide.trip.count455 = zext i32 %204 to i64
  %205 = zext nneg i32 %203 to i64
  %min.iters.check486 = icmp ult i32 %203, 4
  br i1 %min.iters.check486, label %.lr.ph426.preheader514, label %vector.ph487

vector.ph487:                                     ; preds = %.lr.ph426.preheader
  %n.vec489 = and i64 %205, 2147483644
  %ind.end490 = or disjoint i64 %n.vec489, 1
  br label %vector.body492

vector.body492:                                   ; preds = %vector.body492, %vector.ph487
  %index493 = phi i64 [ 0, %vector.ph487 ], [ %index.next495, %vector.body492 ]
  %206 = getelementptr double, ptr %13, i64 %index493
  %207 = getelementptr inbounds i8, ptr %206, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %206, align 8, !tbaa !10
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %207, align 8, !tbaa !10
  %index.next495 = add nuw i64 %index493, 4
  %208 = icmp eq i64 %index.next495, %n.vec489
  br i1 %208, label %middle.block484, label %vector.body492, !llvm.loop !19

middle.block484:                                  ; preds = %vector.body492
  %cmp.n496 = icmp eq i64 %n.vec489, %205
  br i1 %cmp.n496, label %.loopexit, label %.lr.ph426.preheader514

.lr.ph426.preheader514:                           ; preds = %middle.block484, %.lr.ph426.preheader
  %indvars.iv452.ph = phi i64 [ 1, %.lr.ph426.preheader ], [ %ind.end490, %middle.block484 ]
  br label %.lr.ph426

.lr.ph426:                                        ; preds = %.lr.ph426.preheader514, %.lr.ph426
  %indvars.iv452 = phi i64 [ %indvars.iv.next453, %.lr.ph426 ], [ %indvars.iv452.ph, %.lr.ph426.preheader514 ]
  %209 = getelementptr inbounds double, ptr %44, i64 %indvars.iv452
  store double 1.000000e+00, ptr %209, align 8, !tbaa !10
  %indvars.iv.next453 = add nuw nsw i64 %indvars.iv452, 1
  %exitcond456.not = icmp eq i64 %indvars.iv.next453, %wide.trip.count455
  br i1 %exitcond456.not, label %.loopexit, label %.lr.ph426, !llvm.loop !20

.loopexit:                                        ; preds = %.lr.ph426, %middle.block484, %202, %.thread377
  %.2332 = phi i32 [ %.0330372, %.thread377 ], [ 0, %202 ], [ 0, %middle.block484 ], [ 0, %.lr.ph426 ]
  %.2 = phi i32 [ %.0374, %.thread377 ], [ %.1, %202 ], [ %.1, %middle.block484 ], [ %.1, %.lr.ph426 ]
  br i1 %.not348, label %211, label %210

.thread385:                                       ; preds = %.loopexit404
  br i1 %.not348, label %.sink.split, label %210

210:                                              ; preds = %.thread385, %.loopexit
  %.2391 = phi i32 [ %.1, %.thread385 ], [ %.2, %.loopexit ]
  %.2332390 = phi i32 [ 1, %.thread385 ], [ %.2332, %.loopexit ]
  %.not364 = icmp eq i32 %.2391, 0
  br i1 %.not364, label %212, label %.sink.split

211:                                              ; preds = %.loopexit
  %.not363 = icmp eq i32 %.2332, 0
  br i1 %.not363, label %212, label %.sink.split

.sink.split:                                      ; preds = %211, %.thread385, %210
  %.sink480 = phi ptr [ %12, %210 ], [ %13, %.thread385 ], [ %13, %211 ]
  %.ph479 = phi i1 [ true, %210 ], [ false, %.thread385 ], [ false, %211 ]
  %.2392.ph = phi i32 [ 1, %210 ], [ %.1, %.thread385 ], [ %.2, %211 ]
  %.2332388.ph = phi i32 [ %.2332390, %210 ], [ 1, %.thread385 ], [ 1, %211 ]
  call void @dlascl2_(ptr noundef nonnull %2, ptr noundef nonnull %5, ptr noundef %.sink480, ptr noundef %14, ptr noundef nonnull %15) #4
  br label %212

212:                                              ; preds = %.sink.split, %211, %210
  %213 = phi i1 [ false, %211 ], [ true, %210 ], [ %.ph479, %.sink.split ]
  %.2392 = phi i32 [ %.2, %211 ], [ 0, %210 ], [ %.2392.ph, %.sink.split ]
  %.2332388 = phi i32 [ 0, %211 ], [ %.2332390, %210 ], [ %.2332388.ph, %.sink.split ]
  br i1 %or.cond, label %214, label %299

214:                                              ; preds = %212
  %215 = load i32, ptr %2, align 4, !tbaa !5
  %.not365432 = icmp slt i32 %215, 1
  br i1 %.not365432, label %._crit_edge436, label %.lr.ph435

.lr.ph435:                                        ; preds = %214
  %216 = load i32, ptr %3, align 4, !tbaa !5
  %217 = shl i32 %216, 1
  %218 = load i32, ptr %4, align 4, !tbaa !5
  %219 = add i32 %217, %218
  %.not367427 = icmp sgt i32 %216, %219
  br i1 %.not367427, label %._crit_edge436, label %.lr.ph430.preheader

.lr.ph430.preheader:                              ; preds = %.lr.ph435
  %220 = sext i32 %216 to i64
  %221 = add i32 %219, 1
  %222 = sext i32 %40 to i64
  %223 = add nuw i32 %215, 1
  %wide.trip.count464 = zext i32 %223 to i64
  %224 = add i32 %218, %216
  %225 = add i32 %37, 1
  %226 = add nsw i64 %222, %220
  %227 = add nsw i64 %226, %41
  %228 = shl nsw i64 %227, 3
  %229 = add i64 %228, %31
  %230 = add i64 %229, 8
  %231 = shl nsw i64 %222, 3
  %232 = add i32 %37, 1
  %233 = add i32 %218, %216
  %234 = zext i32 %233 to i64
  %235 = add nuw nsw i64 %234, 1
  %236 = add i32 %218, %217
  %237 = add i32 %236, 1
  %238 = add i32 %218, %217
  %min.iters.check501 = icmp ult i32 %233, 5
  %n.vec504 = and i64 %235, 8589934588
  %ind.end505 = add nsw i64 %n.vec504, %220
  %cmp.n512 = icmp eq i64 %235, %n.vec504
  br label %.lr.ph430

.lr.ph430:                                        ; preds = %.lr.ph430.preheader, %._crit_edge431
  %indvar497 = phi i64 [ 0, %.lr.ph430.preheader ], [ %indvar.next498, %._crit_edge431 ]
  %indvar = phi i32 [ 0, %.lr.ph430.preheader ], [ %indvar.next, %._crit_edge431 ]
  %indvars.iv461 = phi i64 [ 1, %.lr.ph430.preheader ], [ %indvars.iv.next462, %._crit_edge431 ]
  %239 = trunc i64 %indvars.iv461 to i32
  %240 = mul i32 %37, %239
  %241 = sub i32 %240, %216
  %242 = mul nsw i64 %indvars.iv461, %222
  %invariant.gep = getelementptr double, ptr %42, i64 %242
  br i1 %min.iters.check501, label %scalar.ph500.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph430
  %243 = mul i64 %231, %indvar497
  %244 = add i64 %230, %243
  %245 = trunc i64 %indvar497 to i32
  %246 = mul i32 %37, %245
  %247 = add i32 %246, %232
  %248 = sext i32 %247 to i64
  %249 = add nsw i64 %38, %248
  %250 = shl nsw i64 %249, 3
  %251 = add i64 %250, %30
  %252 = sub i64 %244, %251
  %253 = mul i32 %37, %indvar
  %254 = add i32 %225, %253
  %255 = add i32 %254, %224
  %256 = icmp slt i32 %255, %254
  %diff.check = icmp ult i64 %252, 32
  %or.cond513 = select i1 %256, i1 true, i1 %diff.check
  br i1 %or.cond513, label %scalar.ph500.preheader, label %vector.body507

vector.body507:                                   ; preds = %vector.scevcheck, %vector.body507
  %index508 = phi i64 [ %index.next511, %vector.body507 ], [ 0, %vector.scevcheck ]
  %offset.idx509 = add i64 %index508, %220
  %257 = add nsw i64 %offset.idx509, 1
  %258 = trunc i64 %257 to i32
  %259 = add i32 %241, %258
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds double, ptr %39, i64 %260
  %262 = getelementptr inbounds i8, ptr %261, i64 16
  %wide.load = load <2 x double>, ptr %261, align 8, !tbaa !10
  %wide.load510 = load <2 x double>, ptr %262, align 8, !tbaa !10
  %263 = getelementptr double, ptr %invariant.gep, i64 %257
  %264 = getelementptr i8, ptr %263, i64 16
  store <2 x double> %wide.load, ptr %263, align 8, !tbaa !10
  store <2 x double> %wide.load510, ptr %264, align 8, !tbaa !10
  %index.next511 = add nuw i64 %index508, 4
  %265 = icmp eq i64 %index.next511, %n.vec504
  br i1 %265, label %middle.block499, label %vector.body507, !llvm.loop !21

middle.block499:                                  ; preds = %vector.body507
  br i1 %cmp.n512, label %._crit_edge431, label %scalar.ph500.preheader

scalar.ph500.preheader:                           ; preds = %middle.block499, %vector.scevcheck, %.lr.ph430
  %indvars.iv457.ph = phi i64 [ %220, %vector.scevcheck ], [ %220, %.lr.ph430 ], [ %ind.end505, %middle.block499 ]
  %266 = trunc i64 %indvars.iv457.ph to i32
  %267 = sub i32 %237, %266
  %268 = sub i32 %238, %266
  %xtraiter527 = and i32 %267, 3
  %lcmp.mod528.not = icmp eq i32 %xtraiter527, 0
  br i1 %lcmp.mod528.not, label %scalar.ph500.prol.loopexit, label %scalar.ph500.prol

scalar.ph500.prol:                                ; preds = %scalar.ph500.preheader, %scalar.ph500.prol
  %indvars.iv457.prol = phi i64 [ %indvars.iv.next458.prol, %scalar.ph500.prol ], [ %indvars.iv457.ph, %scalar.ph500.preheader ]
  %prol.iter = phi i32 [ %prol.iter.next, %scalar.ph500.prol ], [ 0, %scalar.ph500.preheader ]
  %indvars.iv.next458.prol = add nsw i64 %indvars.iv457.prol, 1
  %269 = trunc i64 %indvars.iv.next458.prol to i32
  %270 = add i32 %241, %269
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds double, ptr %39, i64 %271
  %273 = load double, ptr %272, align 8, !tbaa !10
  %gep.prol = getelementptr double, ptr %invariant.gep, i64 %indvars.iv.next458.prol
  store double %273, ptr %gep.prol, align 8, !tbaa !10
  %prol.iter.next = add i32 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i32 %prol.iter.next, %xtraiter527
  br i1 %prol.iter.cmp.not, label %scalar.ph500.prol.loopexit, label %scalar.ph500.prol, !llvm.loop !22

scalar.ph500.prol.loopexit:                       ; preds = %scalar.ph500.prol, %scalar.ph500.preheader
  %indvars.iv457.unr = phi i64 [ %indvars.iv457.ph, %scalar.ph500.preheader ], [ %indvars.iv.next458.prol, %scalar.ph500.prol ]
  %274 = icmp ult i32 %268, 3
  br i1 %274, label %._crit_edge431, label %scalar.ph500

scalar.ph500:                                     ; preds = %scalar.ph500.prol.loopexit, %scalar.ph500
  %indvars.iv457 = phi i64 [ %indvars.iv.next458.3, %scalar.ph500 ], [ %indvars.iv457.unr, %scalar.ph500.prol.loopexit ]
  %indvars.iv.next458 = add nsw i64 %indvars.iv457, 1
  %275 = trunc i64 %indvars.iv.next458 to i32
  %276 = add i32 %241, %275
  %277 = sext i32 %276 to i64
  %278 = getelementptr inbounds double, ptr %39, i64 %277
  %279 = load double, ptr %278, align 8, !tbaa !10
  %gep = getelementptr double, ptr %invariant.gep, i64 %indvars.iv.next458
  store double %279, ptr %gep, align 8, !tbaa !10
  %indvars.iv.next458.1 = add nsw i64 %indvars.iv457, 2
  %280 = trunc i64 %indvars.iv.next458.1 to i32
  %281 = add i32 %241, %280
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds double, ptr %39, i64 %282
  %284 = load double, ptr %283, align 8, !tbaa !10
  %gep.1 = getelementptr double, ptr %invariant.gep, i64 %indvars.iv.next458.1
  store double %284, ptr %gep.1, align 8, !tbaa !10
  %indvars.iv.next458.2 = add nsw i64 %indvars.iv457, 3
  %285 = trunc i64 %indvars.iv.next458.2 to i32
  %286 = add i32 %241, %285
  %287 = sext i32 %286 to i64
  %288 = getelementptr inbounds double, ptr %39, i64 %287
  %289 = load double, ptr %288, align 8, !tbaa !10
  %gep.2 = getelementptr double, ptr %invariant.gep, i64 %indvars.iv.next458.2
  store double %289, ptr %gep.2, align 8, !tbaa !10
  %indvars.iv.next458.3 = add nsw i64 %indvars.iv457, 4
  %290 = trunc i64 %indvars.iv.next458.3 to i32
  %291 = add i32 %241, %290
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds double, ptr %39, i64 %292
  %294 = load double, ptr %293, align 8, !tbaa !10
  %gep.3 = getelementptr double, ptr %invariant.gep, i64 %indvars.iv.next458.3
  store double %294, ptr %gep.3, align 8, !tbaa !10
  %exitcond460.not.3 = icmp eq i32 %221, %290
  br i1 %exitcond460.not.3, label %._crit_edge431, label %scalar.ph500, !llvm.loop !24

._crit_edge431:                                   ; preds = %scalar.ph500.prol.loopexit, %scalar.ph500, %middle.block499
  %indvars.iv.next462 = add nuw nsw i64 %indvars.iv461, 1
  %exitcond465.not = icmp eq i64 %indvars.iv.next462, %wide.trip.count464
  %indvar.next = add i32 %indvar, 1
  %indvar.next498 = add i64 %indvar497, 1
  br i1 %exitcond465.not, label %._crit_edge436, label %.lr.ph430, !llvm.loop !25

._crit_edge436:                                   ; preds = %._crit_edge431, %.lr.ph435, %214
  call void @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
  %295 = load i32, ptr %28, align 4, !tbaa !5
  %296 = icmp sgt i32 %295, 0
  br i1 %296, label %297, label %299

297:                                              ; preds = %._crit_edge436
  %298 = 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 %298, ptr %19, align 8, !tbaa !10
  br label %306

299:                                              ; preds = %._crit_edge436, %212
  %300 = 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 %300, ptr %19, align 8, !tbaa !10
  call void @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
  call void @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
  call void @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
  %301 = icmp ne i32 %.2332388, 0
  %or.cond11 = and i1 %213, %301
  br i1 %or.cond11, label %302, label %303

302:                                              ; preds = %299
  call void @dlascl2_(ptr noundef nonnull %2, ptr noundef nonnull %5, ptr noundef %13, ptr noundef %16, ptr noundef nonnull %17) #4
  br label %306

303:                                              ; preds = %299
  %304 = icmp eq i32 %.2392, 0
  %or.cond13 = or i1 %213, %304
  br i1 %or.cond13, label %306, label %305

305:                                              ; preds = %303
  call void @dlascl2_(ptr noundef nonnull %2, ptr noundef nonnull %5, ptr noundef %12, ptr noundef %16, ptr noundef nonnull %17) #4
  br label %306

306:                                              ; preds = %302, %305, %303, %297, %.thread381
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #4
  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 4, ptr nonnull %32) #4
  ret void
}

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"double", !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = 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 = distinct !{!21, !13, !16, !17}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.unroll.disable"}
!24 = distinct !{!24, !13, !16}
!25 = distinct !{!25, !13}


; Effective O3 passes: ADCEPass,BDCEPass,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