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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

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

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

142:                                              ; preds = %24
  %143 = load i64, ptr %75, align 8, !tbaa !9
  %144 = icmp ne i64 %143, 0
  br i1 %144, label %145, label %147

145:                                              ; preds = %142, %24
  %146 = load ptr, ptr %37, align 8, !tbaa !5
  store i8 78, ptr %146, align 1, !tbaa !11
  store i64 0, ptr %84, align 8, !tbaa !9
  store i64 0, ptr %80, align 8, !tbaa !9
  br label %173

147:                                              ; preds = %142
  %148 = load ptr, ptr %37, align 8, !tbaa !5
  %149 = call i64 @lsame_(ptr noundef %148, ptr noundef @.str.2)
  %150 = icmp ne i64 %149, 0
  br i1 %150, label %155, label %151

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

155:                                              ; preds = %151, %147
  %156 = phi i1 [ true, %147 ], [ %154, %151 ]
  %157 = zext i1 %156 to i32
  %158 = sext i32 %157 to i64
  store i64 %158, ptr %84, align 8, !tbaa !9
  %159 = load ptr, ptr %37, align 8, !tbaa !5
  %160 = call i64 @lsame_(ptr noundef %159, ptr noundef @.str.4)
  %161 = icmp ne i64 %160, 0
  br i1 %161, label %166, label %162

162:                                              ; preds = %155
  %163 = load ptr, ptr %37, align 8, !tbaa !5
  %164 = call i64 @lsame_(ptr noundef %163, ptr noundef @.str.3)
  %165 = icmp ne i64 %164, 0
  br label %166

166:                                              ; preds = %162, %155
  %167 = phi i1 [ true, %155 ], [ %165, %162 ]
  %168 = zext i1 %167 to i32
  %169 = sext i32 %168 to i64
  store i64 %169, ptr %80, align 8, !tbaa !9
  %170 = call double @dlamch_(ptr noundef @.str.5)
  store double %170, ptr %83, align 8, !tbaa !12
  %171 = load double, ptr %83, align 8, !tbaa !12
  %172 = fdiv double 1.000000e+00, %171
  store double %172, ptr %78, align 8, !tbaa !12
  br label %173

173:                                              ; preds = %166, %145
  %174 = load i64, ptr %77, align 8, !tbaa !9
  %175 = icmp ne i64 %174, 0
  br i1 %175, label %185, label %176

176:                                              ; preds = %173
  %177 = load i64, ptr %75, align 8, !tbaa !9
  %178 = icmp ne i64 %177, 0
  br i1 %178, label %185, label %179

179:                                              ; preds = %176
  %180 = load ptr, ptr %26, align 8, !tbaa !5
  %181 = call i64 @lsame_(ptr noundef %180, ptr noundef @.str.6)
  %182 = icmp ne i64 %181, 0
  br i1 %182, label %185, label %183

183:                                              ; preds = %179
  %184 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -1, ptr %184, align 8, !tbaa !9
  br label %462

185:                                              ; preds = %179, %176, %173
  %186 = load i64, ptr %82, align 8, !tbaa !9
  %187 = icmp ne i64 %186, 0
  br i1 %187, label %198, label %188

188:                                              ; preds = %185
  %189 = load ptr, ptr %27, align 8, !tbaa !5
  %190 = call i64 @lsame_(ptr noundef %189, ptr noundef @.str.7)
  %191 = icmp ne i64 %190, 0
  br i1 %191, label %198, label %192

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

196:                                              ; preds = %192
  %197 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -2, ptr %197, align 8, !tbaa !9
  br label %461

198:                                              ; preds = %192, %188, %185
  %199 = load ptr, ptr %28, align 8, !tbaa !5
  %200 = load i64, ptr %199, align 8, !tbaa !9
  %201 = icmp slt i64 %200, 0
  br i1 %201, label %202, label %204

202:                                              ; preds = %198
  %203 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -3, ptr %203, align 8, !tbaa !9
  br label %460

204:                                              ; preds = %198
  %205 = load ptr, ptr %29, align 8, !tbaa !5
  %206 = load i64, ptr %205, align 8, !tbaa !9
  %207 = icmp slt i64 %206, 0
  br i1 %207, label %208, label %210

208:                                              ; preds = %204
  %209 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -4, ptr %209, align 8, !tbaa !9
  br label %459

210:                                              ; preds = %204
  %211 = load ptr, ptr %30, align 8, !tbaa !5
  %212 = load i64, ptr %211, align 8, !tbaa !9
  %213 = icmp slt i64 %212, 0
  br i1 %213, label %214, label %216

214:                                              ; preds = %210
  %215 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -5, ptr %215, align 8, !tbaa !9
  br label %458

216:                                              ; preds = %210
  %217 = load ptr, ptr %31, align 8, !tbaa !5
  %218 = load i64, ptr %217, align 8, !tbaa !9
  %219 = icmp slt i64 %218, 0
  br i1 %219, label %220, label %222

220:                                              ; preds = %216
  %221 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -6, ptr %221, align 8, !tbaa !9
  br label %457

222:                                              ; preds = %216
  %223 = load ptr, ptr %33, align 8, !tbaa !5
  %224 = load i64, ptr %223, align 8, !tbaa !9
  %225 = load ptr, ptr %29, align 8, !tbaa !5
  %226 = load i64, ptr %225, align 8, !tbaa !9
  %227 = load ptr, ptr %30, align 8, !tbaa !5
  %228 = load i64, ptr %227, align 8, !tbaa !9
  %229 = add nsw i64 %226, %228
  %230 = add nsw i64 %229, 1
  %231 = icmp slt i64 %224, %230
  br i1 %231, label %232, label %234

232:                                              ; preds = %222
  %233 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -8, ptr %233, align 8, !tbaa !9
  br label %456

234:                                              ; preds = %222
  %235 = load ptr, ptr %35, align 8, !tbaa !5
  %236 = load i64, ptr %235, align 8, !tbaa !9
  %237 = load ptr, ptr %29, align 8, !tbaa !5
  %238 = load i64, ptr %237, align 8, !tbaa !9
  %239 = shl i64 %238, 1
  %240 = load ptr, ptr %30, align 8, !tbaa !5
  %241 = load i64, ptr %240, align 8, !tbaa !9
  %242 = add nsw i64 %239, %241
  %243 = add nsw i64 %242, 1
  %244 = icmp slt i64 %236, %243
  br i1 %244, label %245, label %247

245:                                              ; preds = %234
  %246 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -10, ptr %246, align 8, !tbaa !9
  br label %455

247:                                              ; preds = %234
  %248 = load ptr, ptr %26, align 8, !tbaa !5
  %249 = call i64 @lsame_(ptr noundef %248, ptr noundef @.str.6)
  %250 = icmp ne i64 %249, 0
  br i1 %250, label %251, label %263

251:                                              ; preds = %247
  %252 = load i64, ptr %84, align 8, !tbaa !9
  %253 = icmp ne i64 %252, 0
  br i1 %253, label %263, label %254

254:                                              ; preds = %251
  %255 = load i64, ptr %80, align 8, !tbaa !9
  %256 = icmp ne i64 %255, 0
  br i1 %256, label %263, label %257

257:                                              ; preds = %254
  %258 = load ptr, ptr %37, align 8, !tbaa !5
  %259 = call i64 @lsame_(ptr noundef %258, ptr noundef @.str)
  %260 = icmp ne i64 %259, 0
  br i1 %260, label %263, label %261

261:                                              ; preds = %257
  %262 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -12, ptr %262, align 8, !tbaa !9
  br label %454

263:                                              ; preds = %257, %254, %251, %247
  %264 = load i64, ptr %84, align 8, !tbaa !9
  %265 = icmp ne i64 %264, 0
  br i1 %265, label %266, label %338

266:                                              ; preds = %263
  %267 = load double, ptr %78, align 8, !tbaa !12
  store double %267, ptr %72, align 8, !tbaa !12
  store double 0.000000e+00, ptr %73, align 8, !tbaa !12
  %268 = load ptr, ptr %28, align 8, !tbaa !5
  %269 = load i64, ptr %268, align 8, !tbaa !9
  store i64 %269, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %270

270:                                              ; preds = %303, %266
  %271 = load i64, ptr %67, align 8, !tbaa !9
  %272 = load i64, ptr %58, align 8, !tbaa !9
  %273 = icmp sle i64 %271, %272
  br i1 %273, label %274, label %306

274:                                              ; preds = %270
  %275 = load double, ptr %72, align 8, !tbaa !12
  store double %275, ptr %63, align 8, !tbaa !12
  %276 = load ptr, ptr %38, align 8, !tbaa !5
  %277 = load i64, ptr %67, align 8, !tbaa !9
  %278 = getelementptr inbounds double, ptr %276, i64 %277
  %279 = load double, ptr %278, align 8, !tbaa !12
  store double %279, ptr %64, align 8, !tbaa !12
  %280 = load double, ptr %63, align 8, !tbaa !12
  %281 = load double, ptr %64, align 8, !tbaa !12
  %282 = fcmp ole double %280, %281
  br i1 %282, label %283, label %285

283:                                              ; preds = %274
  %284 = load double, ptr %63, align 8, !tbaa !12
  br label %287

285:                                              ; preds = %274
  %286 = load double, ptr %64, align 8, !tbaa !12
  br label %287

287:                                              ; preds = %285, %283
  %288 = phi double [ %284, %283 ], [ %286, %285 ]
  store double %288, ptr %72, align 8, !tbaa !12
  %289 = load double, ptr %73, align 8, !tbaa !12
  store double %289, ptr %63, align 8, !tbaa !12
  %290 = load ptr, ptr %38, align 8, !tbaa !5
  %291 = load i64, ptr %67, align 8, !tbaa !9
  %292 = getelementptr inbounds double, ptr %290, i64 %291
  %293 = load double, ptr %292, align 8, !tbaa !12
  store double %293, ptr %64, align 8, !tbaa !12
  %294 = load double, ptr %63, align 8, !tbaa !12
  %295 = load double, ptr %64, align 8, !tbaa !12
  %296 = fcmp oge double %294, %295
  br i1 %296, label %297, label %299

297:                                              ; preds = %287
  %298 = load double, ptr %63, align 8, !tbaa !12
  br label %301

299:                                              ; preds = %287
  %300 = load double, ptr %64, align 8, !tbaa !12
  br label %301

301:                                              ; preds = %299, %297
  %302 = phi double [ %298, %297 ], [ %300, %299 ]
  store double %302, ptr %73, align 8, !tbaa !12
  br label %303

303:                                              ; preds = %301
  %304 = load i64, ptr %67, align 8, !tbaa !9
  %305 = add nsw i64 %304, 1
  store i64 %305, ptr %67, align 8, !tbaa !9
  br label %270, !llvm.loop !14

306:                                              ; preds = %270
  %307 = load double, ptr %72, align 8, !tbaa !12
  %308 = fcmp ole double %307, 0.000000e+00
  br i1 %308, label %309, label %311

309:                                              ; preds = %306
  %310 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -13, ptr %310, align 8, !tbaa !9
  br label %337

311:                                              ; preds = %306
  %312 = load ptr, ptr %28, align 8, !tbaa !5
  %313 = load i64, ptr %312, align 8, !tbaa !9
  %314 = icmp sgt i64 %313, 0
  br i1 %314, label %315, label %335

315:                                              ; preds = %311
  %316 = load double, ptr %72, align 8, !tbaa !12
  %317 = load double, ptr %83, align 8, !tbaa !12
  %318 = fcmp oge double %316, %317
  br i1 %318, label %319, label %321

319:                                              ; preds = %315
  %320 = load double, ptr %72, align 8, !tbaa !12
  br label %323

321:                                              ; preds = %315
  %322 = load double, ptr %83, align 8, !tbaa !12
  br label %323

323:                                              ; preds = %321, %319
  %324 = phi double [ %320, %319 ], [ %322, %321 ]
  %325 = load double, ptr %73, align 8, !tbaa !12
  %326 = load double, ptr %78, align 8, !tbaa !12
  %327 = fcmp ole double %325, %326
  br i1 %327, label %328, label %330

328:                                              ; preds = %323
  %329 = load double, ptr %73, align 8, !tbaa !12
  br label %332

330:                                              ; preds = %323
  %331 = load double, ptr %78, align 8, !tbaa !12
  br label %332

332:                                              ; preds = %330, %328
  %333 = phi double [ %329, %328 ], [ %331, %330 ]
  %334 = fdiv double %324, %333
  store double %334, ptr %81, align 8, !tbaa !12
  br label %336

335:                                              ; preds = %311
  store double 1.000000e+00, ptr %81, align 8, !tbaa !12
  br label %336

336:                                              ; preds = %335, %332
  br label %337

337:                                              ; preds = %336, %309
  br label %338

338:                                              ; preds = %337, %263
  %339 = load i64, ptr %80, align 8, !tbaa !9
  %340 = icmp ne i64 %339, 0
  br i1 %340, label %341, label %417

341:                                              ; preds = %338
  %342 = load ptr, ptr %49, align 8, !tbaa !5
  %343 = load i64, ptr %342, align 8, !tbaa !9
  %344 = icmp eq i64 %343, 0
  br i1 %344, label %345, label %417

345:                                              ; preds = %341
  %346 = load double, ptr %78, align 8, !tbaa !12
  store double %346, ptr %72, align 8, !tbaa !12
  store double 0.000000e+00, ptr %73, align 8, !tbaa !12
  %347 = load ptr, ptr %28, align 8, !tbaa !5
  %348 = load i64, ptr %347, align 8, !tbaa !9
  store i64 %348, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %349

349:                                              ; preds = %382, %345
  %350 = load i64, ptr %67, align 8, !tbaa !9
  %351 = load i64, ptr %58, align 8, !tbaa !9
  %352 = icmp sle i64 %350, %351
  br i1 %352, label %353, label %385

353:                                              ; preds = %349
  %354 = load double, ptr %72, align 8, !tbaa !12
  store double %354, ptr %63, align 8, !tbaa !12
  %355 = load ptr, ptr %39, align 8, !tbaa !5
  %356 = load i64, ptr %67, align 8, !tbaa !9
  %357 = getelementptr inbounds double, ptr %355, i64 %356
  %358 = load double, ptr %357, align 8, !tbaa !12
  store double %358, ptr %64, align 8, !tbaa !12
  %359 = load double, ptr %63, align 8, !tbaa !12
  %360 = load double, ptr %64, align 8, !tbaa !12
  %361 = fcmp ole double %359, %360
  br i1 %361, label %362, label %364

362:                                              ; preds = %353
  %363 = load double, ptr %63, align 8, !tbaa !12
  br label %366

364:                                              ; preds = %353
  %365 = load double, ptr %64, align 8, !tbaa !12
  br label %366

366:                                              ; preds = %364, %362
  %367 = phi double [ %363, %362 ], [ %365, %364 ]
  store double %367, ptr %72, align 8, !tbaa !12
  %368 = load double, ptr %73, align 8, !tbaa !12
  store double %368, ptr %63, align 8, !tbaa !12
  %369 = load ptr, ptr %39, align 8, !tbaa !5
  %370 = load i64, ptr %67, align 8, !tbaa !9
  %371 = getelementptr inbounds double, ptr %369, i64 %370
  %372 = load double, ptr %371, align 8, !tbaa !12
  store double %372, ptr %64, align 8, !tbaa !12
  %373 = load double, ptr %63, align 8, !tbaa !12
  %374 = load double, ptr %64, align 8, !tbaa !12
  %375 = fcmp oge double %373, %374
  br i1 %375, label %376, label %378

376:                                              ; preds = %366
  %377 = load double, ptr %63, align 8, !tbaa !12
  br label %380

378:                                              ; preds = %366
  %379 = load double, ptr %64, align 8, !tbaa !12
  br label %380

380:                                              ; preds = %378, %376
  %381 = phi double [ %377, %376 ], [ %379, %378 ]
  store double %381, ptr %73, align 8, !tbaa !12
  br label %382

382:                                              ; preds = %380
  %383 = load i64, ptr %67, align 8, !tbaa !9
  %384 = add nsw i64 %383, 1
  store i64 %384, ptr %67, align 8, !tbaa !9
  br label %349, !llvm.loop !16

385:                                              ; preds = %349
  %386 = load double, ptr %72, align 8, !tbaa !12
  %387 = fcmp ole double %386, 0.000000e+00
  br i1 %387, label %388, label %390

388:                                              ; preds = %385
  %389 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -14, ptr %389, align 8, !tbaa !9
  br label %416

390:                                              ; preds = %385
  %391 = load ptr, ptr %28, align 8, !tbaa !5
  %392 = load i64, ptr %391, align 8, !tbaa !9
  %393 = icmp sgt i64 %392, 0
  br i1 %393, label %394, label %414

394:                                              ; preds = %390
  %395 = load double, ptr %72, align 8, !tbaa !12
  %396 = load double, ptr %83, align 8, !tbaa !12
  %397 = fcmp oge double %395, %396
  br i1 %397, label %398, label %400

398:                                              ; preds = %394
  %399 = load double, ptr %72, align 8, !tbaa !12
  br label %402

400:                                              ; preds = %394
  %401 = load double, ptr %83, align 8, !tbaa !12
  br label %402

402:                                              ; preds = %400, %398
  %403 = phi double [ %399, %398 ], [ %401, %400 ]
  %404 = load double, ptr %73, align 8, !tbaa !12
  %405 = load double, ptr %78, align 8, !tbaa !12
  %406 = fcmp ole double %404, %405
  br i1 %406, label %407, label %409

407:                                              ; preds = %402
  %408 = load double, ptr %73, align 8, !tbaa !12
  br label %411

409:                                              ; preds = %402
  %410 = load double, ptr %78, align 8, !tbaa !12
  br label %411

411:                                              ; preds = %409, %407
  %412 = phi double [ %408, %407 ], [ %410, %409 ]
  %413 = fdiv double %403, %412
  store double %413, ptr %76, align 8, !tbaa !12
  br label %415

414:                                              ; preds = %390
  store double 1.000000e+00, ptr %76, align 8, !tbaa !12
  br label %415

415:                                              ; preds = %414, %411
  br label %416

416:                                              ; preds = %415, %388
  br label %417

417:                                              ; preds = %416, %341, %338
  %418 = load ptr, ptr %49, align 8, !tbaa !5
  %419 = load i64, ptr %418, align 8, !tbaa !9
  %420 = icmp eq i64 %419, 0
  br i1 %420, label %421, label %453

421:                                              ; preds = %417
  %422 = load ptr, ptr %41, align 8, !tbaa !5
  %423 = load i64, ptr %422, align 8, !tbaa !9
  %424 = load ptr, ptr %28, align 8, !tbaa !5
  %425 = load i64, ptr %424, align 8, !tbaa !9
  %426 = icmp sge i64 1, %425
  br i1 %426, label %427, label %428

427:                                              ; preds = %421
  br label %431

428:                                              ; preds = %421
  %429 = load ptr, ptr %28, align 8, !tbaa !5
  %430 = load i64, ptr %429, align 8, !tbaa !9
  br label %431

431:                                              ; preds = %428, %427
  %432 = phi i64 [ 1, %427 ], [ %430, %428 ]
  %433 = icmp slt i64 %423, %432
  br i1 %433, label %434, label %436

434:                                              ; preds = %431
  %435 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -16, ptr %435, align 8, !tbaa !9
  br label %452

436:                                              ; preds = %431
  %437 = load ptr, ptr %43, align 8, !tbaa !5
  %438 = load i64, ptr %437, align 8, !tbaa !9
  %439 = load ptr, ptr %28, align 8, !tbaa !5
  %440 = load i64, ptr %439, align 8, !tbaa !9
  %441 = icmp sge i64 1, %440
  br i1 %441, label %442, label %443

442:                                              ; preds = %436
  br label %446

443:                                              ; preds = %436
  %444 = load ptr, ptr %28, align 8, !tbaa !5
  %445 = load i64, ptr %444, align 8, !tbaa !9
  br label %446

446:                                              ; preds = %443, %442
  %447 = phi i64 [ 1, %442 ], [ %445, %443 ]
  %448 = icmp slt i64 %438, %447
  br i1 %448, label %449, label %451

449:                                              ; preds = %446
  %450 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -18, ptr %450, align 8, !tbaa !9
  br label %451

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

452:                                              ; preds = %451, %434
  br label %453

453:                                              ; preds = %452, %417
  br label %454

454:                                              ; preds = %453, %261
  br label %455

455:                                              ; preds = %454, %245
  br label %456

456:                                              ; preds = %455, %232
  br label %457

457:                                              ; preds = %456, %220
  br label %458

458:                                              ; preds = %457, %214
  br label %459

459:                                              ; preds = %458, %208
  br label %460

460:                                              ; preds = %459, %202
  br label %461

461:                                              ; preds = %460, %196
  br label %462

462:                                              ; preds = %461, %183
  %463 = load ptr, ptr %49, align 8, !tbaa !5
  %464 = load i64, ptr %463, align 8, !tbaa !9
  %465 = icmp ne i64 %464, 0
  br i1 %465, label %466, label %471

466:                                              ; preds = %462
  %467 = load ptr, ptr %49, align 8, !tbaa !5
  %468 = load i64, ptr %467, align 8, !tbaa !9
  %469 = sub nsw i64 0, %468
  store i64 %469, ptr %58, align 8, !tbaa !9
  %470 = call i32 @xerbla_(ptr noundef @.str.8, ptr noundef %58)
  store i32 0, ptr %25, align 4
  store i32 1, ptr %86, align 4
  br label %1129

471:                                              ; preds = %462
  %472 = load i64, ptr %75, align 8, !tbaa !9
  %473 = icmp ne i64 %472, 0
  br i1 %473, label %474, label %528

474:                                              ; preds = %471
  %475 = load ptr, ptr %28, align 8, !tbaa !5
  %476 = load ptr, ptr %28, align 8, !tbaa !5
  %477 = load ptr, ptr %29, align 8, !tbaa !5
  %478 = load ptr, ptr %30, align 8, !tbaa !5
  %479 = load ptr, ptr %32, align 8, !tbaa !5
  %480 = load i64, ptr %51, align 8, !tbaa !9
  %481 = getelementptr inbounds double, ptr %479, i64 %480
  %482 = load ptr, ptr %33, align 8, !tbaa !5
  %483 = load ptr, ptr %38, align 8, !tbaa !5
  %484 = getelementptr inbounds double, ptr %483, i64 1
  %485 = load ptr, ptr %39, align 8, !tbaa !5
  %486 = getelementptr inbounds double, ptr %485, i64 1
  %487 = call i32 @dgbequ_(ptr noundef %475, ptr noundef %476, ptr noundef %477, ptr noundef %478, ptr noundef %481, ptr noundef %482, ptr noundef %484, ptr noundef %486, ptr noundef %81, ptr noundef %76, ptr noundef %70, ptr noundef %79)
  %488 = load i64, ptr %79, align 8, !tbaa !9
  %489 = icmp eq i64 %488, 0
  br i1 %489, label %490, label %527

490:                                              ; preds = %474
  %491 = load ptr, ptr %28, align 8, !tbaa !5
  %492 = load ptr, ptr %28, align 8, !tbaa !5
  %493 = load ptr, ptr %29, align 8, !tbaa !5
  %494 = load ptr, ptr %30, align 8, !tbaa !5
  %495 = load ptr, ptr %32, align 8, !tbaa !5
  %496 = load i64, ptr %51, align 8, !tbaa !9
  %497 = getelementptr inbounds double, ptr %495, i64 %496
  %498 = load ptr, ptr %33, align 8, !tbaa !5
  %499 = load ptr, ptr %38, align 8, !tbaa !5
  %500 = getelementptr inbounds double, ptr %499, i64 1
  %501 = load ptr, ptr %39, align 8, !tbaa !5
  %502 = getelementptr inbounds double, ptr %501, i64 1
  %503 = load ptr, ptr %37, align 8, !tbaa !5
  %504 = call i32 @dlaqgb_(ptr noundef %491, ptr noundef %492, ptr noundef %493, ptr noundef %494, ptr noundef %497, ptr noundef %498, ptr noundef %500, ptr noundef %502, ptr noundef %81, ptr noundef %76, ptr noundef %70, ptr noundef %503)
  %505 = load ptr, ptr %37, align 8, !tbaa !5
  %506 = call i64 @lsame_(ptr noundef %505, ptr noundef @.str.2)
  %507 = icmp ne i64 %506, 0
  br i1 %507, label %512, label %508

508:                                              ; preds = %490
  %509 = load ptr, ptr %37, align 8, !tbaa !5
  %510 = call i64 @lsame_(ptr noundef %509, ptr noundef @.str.3)
  %511 = icmp ne i64 %510, 0
  br label %512

512:                                              ; preds = %508, %490
  %513 = phi i1 [ true, %490 ], [ %511, %508 ]
  %514 = zext i1 %513 to i32
  %515 = sext i32 %514 to i64
  store i64 %515, ptr %84, align 8, !tbaa !9
  %516 = load ptr, ptr %37, align 8, !tbaa !5
  %517 = call i64 @lsame_(ptr noundef %516, ptr noundef @.str.4)
  %518 = icmp ne i64 %517, 0
  br i1 %518, label %523, label %519

519:                                              ; preds = %512
  %520 = load ptr, ptr %37, align 8, !tbaa !5
  %521 = call i64 @lsame_(ptr noundef %520, ptr noundef @.str.3)
  %522 = icmp ne i64 %521, 0
  br label %523

523:                                              ; preds = %519, %512
  %524 = phi i1 [ true, %512 ], [ %522, %519 ]
  %525 = zext i1 %524 to i32
  %526 = sext i32 %525 to i64
  store i64 %526, ptr %80, align 8, !tbaa !9
  br label %527

527:                                              ; preds = %523, %474
  br label %528

528:                                              ; preds = %527, %471
  %529 = load i64, ptr %82, align 8, !tbaa !9
  %530 = icmp ne i64 %529, 0
  br i1 %530, label %531, label %578

531:                                              ; preds = %528
  %532 = load i64, ptr %84, align 8, !tbaa !9
  %533 = icmp ne i64 %532, 0
  br i1 %533, label %534, label %577

534:                                              ; preds = %531
  %535 = load ptr, ptr %31, align 8, !tbaa !5
  %536 = load i64, ptr %535, align 8, !tbaa !9
  store i64 %536, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %537

537:                                              ; preds = %573, %534
  %538 = load i64, ptr %67, align 8, !tbaa !9
  %539 = load i64, ptr %58, align 8, !tbaa !9
  %540 = icmp sle i64 %538, %539
  br i1 %540, label %541, label %576

541:                                              ; preds = %537
  %542 = load ptr, ptr %28, align 8, !tbaa !5
  %543 = load i64, ptr %542, align 8, !tbaa !9
  store i64 %543, ptr %59, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %544

544:                                              ; preds = %569, %541
  %545 = load i64, ptr %66, align 8, !tbaa !9
  %546 = load i64, ptr %59, align 8, !tbaa !9
  %547 = icmp sle i64 %545, %546
  br i1 %547, label %548, label %572

548:                                              ; preds = %544
  %549 = load ptr, ptr %38, align 8, !tbaa !5
  %550 = load i64, ptr %66, align 8, !tbaa !9
  %551 = getelementptr inbounds double, ptr %549, i64 %550
  %552 = load double, ptr %551, align 8, !tbaa !12
  %553 = load ptr, ptr %40, align 8, !tbaa !5
  %554 = load i64, ptr %66, align 8, !tbaa !9
  %555 = load i64, ptr %67, align 8, !tbaa !9
  %556 = load i64, ptr %54, align 8, !tbaa !9
  %557 = mul nsw i64 %555, %556
  %558 = add nsw i64 %554, %557
  %559 = getelementptr inbounds double, ptr %553, i64 %558
  %560 = load double, ptr %559, align 8, !tbaa !12
  %561 = fmul double %552, %560
  %562 = load ptr, ptr %40, align 8, !tbaa !5
  %563 = load i64, ptr %66, align 8, !tbaa !9
  %564 = load i64, ptr %67, align 8, !tbaa !9
  %565 = load i64, ptr %54, align 8, !tbaa !9
  %566 = mul nsw i64 %564, %565
  %567 = add nsw i64 %563, %566
  %568 = getelementptr inbounds double, ptr %562, i64 %567
  store double %561, ptr %568, align 8, !tbaa !12
  br label %569

569:                                              ; preds = %548
  %570 = load i64, ptr %66, align 8, !tbaa !9
  %571 = add nsw i64 %570, 1
  store i64 %571, ptr %66, align 8, !tbaa !9
  br label %544, !llvm.loop !17

572:                                              ; preds = %544
  br label %573

573:                                              ; preds = %572
  %574 = load i64, ptr %67, align 8, !tbaa !9
  %575 = add nsw i64 %574, 1
  store i64 %575, ptr %67, align 8, !tbaa !9
  br label %537, !llvm.loop !18

576:                                              ; preds = %537
  br label %577

577:                                              ; preds = %576, %531
  br label %625

578:                                              ; preds = %528
  %579 = load i64, ptr %80, align 8, !tbaa !9
  %580 = icmp ne i64 %579, 0
  br i1 %580, label %581, label %624

581:                                              ; preds = %578
  %582 = load ptr, ptr %31, align 8, !tbaa !5
  %583 = load i64, ptr %582, align 8, !tbaa !9
  store i64 %583, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %584

584:                                              ; preds = %620, %581
  %585 = load i64, ptr %67, align 8, !tbaa !9
  %586 = load i64, ptr %58, align 8, !tbaa !9
  %587 = icmp sle i64 %585, %586
  br i1 %587, label %588, label %623

588:                                              ; preds = %584
  %589 = load ptr, ptr %28, align 8, !tbaa !5
  %590 = load i64, ptr %589, align 8, !tbaa !9
  store i64 %590, ptr %59, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %591

591:                                              ; preds = %616, %588
  %592 = load i64, ptr %66, align 8, !tbaa !9
  %593 = load i64, ptr %59, align 8, !tbaa !9
  %594 = icmp sle i64 %592, %593
  br i1 %594, label %595, label %619

595:                                              ; preds = %591
  %596 = load ptr, ptr %39, align 8, !tbaa !5
  %597 = load i64, ptr %66, align 8, !tbaa !9
  %598 = getelementptr inbounds double, ptr %596, i64 %597
  %599 = load double, ptr %598, align 8, !tbaa !12
  %600 = load ptr, ptr %40, align 8, !tbaa !5
  %601 = load i64, ptr %66, align 8, !tbaa !9
  %602 = load i64, ptr %67, align 8, !tbaa !9
  %603 = load i64, ptr %54, align 8, !tbaa !9
  %604 = mul nsw i64 %602, %603
  %605 = add nsw i64 %601, %604
  %606 = getelementptr inbounds double, ptr %600, i64 %605
  %607 = load double, ptr %606, align 8, !tbaa !12
  %608 = fmul double %599, %607
  %609 = load ptr, ptr %40, align 8, !tbaa !5
  %610 = load i64, ptr %66, align 8, !tbaa !9
  %611 = load i64, ptr %67, align 8, !tbaa !9
  %612 = load i64, ptr %54, align 8, !tbaa !9
  %613 = mul nsw i64 %611, %612
  %614 = add nsw i64 %610, %613
  %615 = getelementptr inbounds double, ptr %609, i64 %614
  store double %608, ptr %615, align 8, !tbaa !12
  br label %616

616:                                              ; preds = %595
  %617 = load i64, ptr %66, align 8, !tbaa !9
  %618 = add nsw i64 %617, 1
  store i64 %618, ptr %66, align 8, !tbaa !9
  br label %591, !llvm.loop !19

619:                                              ; preds = %591
  br label %620

620:                                              ; preds = %619
  %621 = load i64, ptr %67, align 8, !tbaa !9
  %622 = add nsw i64 %621, 1
  store i64 %622, ptr %67, align 8, !tbaa !9
  br label %584, !llvm.loop !20

623:                                              ; preds = %584
  br label %624

624:                                              ; preds = %623, %578
  br label %625

625:                                              ; preds = %624, %577
  %626 = load i64, ptr %77, align 8, !tbaa !9
  %627 = icmp ne i64 %626, 0
  br i1 %627, label %631, label %628

628:                                              ; preds = %625
  %629 = load i64, ptr %75, align 8, !tbaa !9
  %630 = icmp ne i64 %629, 0
  br i1 %630, label %631, label %858

631:                                              ; preds = %628, %625
  %632 = load ptr, ptr %28, align 8, !tbaa !5
  %633 = load i64, ptr %632, align 8, !tbaa !9
  store i64 %633, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %634

634:                                              ; preds = %699, %631
  %635 = load i64, ptr %67, align 8, !tbaa !9
  %636 = load i64, ptr %58, align 8, !tbaa !9
  %637 = icmp sle i64 %635, %636
  br i1 %637, label %638, label %702

638:                                              ; preds = %634
  %639 = load i64, ptr %67, align 8, !tbaa !9
  %640 = load ptr, ptr %30, align 8, !tbaa !5
  %641 = load i64, ptr %640, align 8, !tbaa !9
  %642 = sub nsw i64 %639, %641
  store i64 %642, ptr %59, align 8, !tbaa !9
  %643 = load i64, ptr %59, align 8, !tbaa !9
  %644 = icmp sge i64 %643, 1
  br i1 %644, label %645, label %647

645:                                              ; preds = %638
  %646 = load i64, ptr %59, align 8, !tbaa !9
  br label %648

647:                                              ; preds = %638
  br label %648

648:                                              ; preds = %647, %645
  %649 = phi i64 [ %646, %645 ], [ 1, %647 ]
  store i64 %649, ptr %68, align 8, !tbaa !9
  %650 = load i64, ptr %67, align 8, !tbaa !9
  %651 = load ptr, ptr %29, align 8, !tbaa !5
  %652 = load i64, ptr %651, align 8, !tbaa !9
  %653 = add nsw i64 %650, %652
  store i64 %653, ptr %59, align 8, !tbaa !9
  %654 = load i64, ptr %59, align 8, !tbaa !9
  %655 = load ptr, ptr %28, align 8, !tbaa !5
  %656 = load i64, ptr %655, align 8, !tbaa !9
  %657 = icmp sle i64 %654, %656
  br i1 %657, label %658, label %660

658:                                              ; preds = %648
  %659 = load i64, ptr %59, align 8, !tbaa !9
  br label %663

660:                                              ; preds = %648
  %661 = load ptr, ptr %28, align 8, !tbaa !5
  %662 = load i64, ptr %661, align 8, !tbaa !9
  br label %663

663:                                              ; preds = %660, %658
  %664 = phi i64 [ %659, %658 ], [ %662, %660 ]
  store i64 %664, ptr %69, align 8, !tbaa !9
  %665 = load i64, ptr %69, align 8, !tbaa !9
  %666 = load i64, ptr %68, align 8, !tbaa !9
  %667 = sub nsw i64 %665, %666
  %668 = add nsw i64 %667, 1
  store i64 %668, ptr %59, align 8, !tbaa !9
  %669 = load ptr, ptr %32, align 8, !tbaa !5
  %670 = load ptr, ptr %30, align 8, !tbaa !5
  %671 = load i64, ptr %670, align 8, !tbaa !9
  %672 = add nsw i64 %671, 1
  %673 = load i64, ptr %67, align 8, !tbaa !9
  %674 = sub nsw i64 %672, %673
  %675 = load i64, ptr %68, align 8, !tbaa !9
  %676 = add nsw i64 %674, %675
  %677 = load i64, ptr %67, align 8, !tbaa !9
  %678 = load i64, ptr %50, align 8, !tbaa !9
  %679 = mul nsw i64 %677, %678
  %680 = add nsw i64 %676, %679
  %681 = getelementptr inbounds double, ptr %669, i64 %680
  %682 = load ptr, ptr %34, align 8, !tbaa !5
  %683 = load ptr, ptr %29, align 8, !tbaa !5
  %684 = load i64, ptr %683, align 8, !tbaa !9
  %685 = load ptr, ptr %30, align 8, !tbaa !5
  %686 = load i64, ptr %685, align 8, !tbaa !9
  %687 = add nsw i64 %684, %686
  %688 = add nsw i64 %687, 1
  %689 = load i64, ptr %67, align 8, !tbaa !9
  %690 = sub nsw i64 %688, %689
  %691 = load i64, ptr %68, align 8, !tbaa !9
  %692 = add nsw i64 %690, %691
  %693 = load i64, ptr %67, align 8, !tbaa !9
  %694 = load i64, ptr %52, align 8, !tbaa !9
  %695 = mul nsw i64 %693, %694
  %696 = add nsw i64 %692, %695
  %697 = getelementptr inbounds double, ptr %682, i64 %696
  %698 = call i32 @f2c_dcopy(ptr noundef %59, ptr noundef %681, ptr noundef @c__1, ptr noundef %697, ptr noundef @c__1)
  br label %699

699:                                              ; preds = %663
  %700 = load i64, ptr %67, align 8, !tbaa !9
  %701 = add nsw i64 %700, 1
  store i64 %701, ptr %67, align 8, !tbaa !9
  br label %634, !llvm.loop !21

702:                                              ; preds = %634
  %703 = load ptr, ptr %28, align 8, !tbaa !5
  %704 = load ptr, ptr %28, align 8, !tbaa !5
  %705 = load ptr, ptr %29, align 8, !tbaa !5
  %706 = load ptr, ptr %30, align 8, !tbaa !5
  %707 = load ptr, ptr %34, align 8, !tbaa !5
  %708 = load i64, ptr %53, align 8, !tbaa !9
  %709 = getelementptr inbounds double, ptr %707, i64 %708
  %710 = load ptr, ptr %35, align 8, !tbaa !5
  %711 = load ptr, ptr %36, align 8, !tbaa !5
  %712 = getelementptr inbounds i64, ptr %711, i64 1
  %713 = load ptr, ptr %49, align 8, !tbaa !5
  %714 = call i32 @dgbtrf_(ptr noundef %703, ptr noundef %704, ptr noundef %705, ptr noundef %706, ptr noundef %709, ptr noundef %710, ptr noundef %712, ptr noundef %713)
  %715 = load ptr, ptr %49, align 8, !tbaa !5
  %716 = load i64, ptr %715, align 8, !tbaa !9
  %717 = icmp sgt i64 %716, 0
  br i1 %717, label %718, label %857

718:                                              ; preds = %702
  store double 0.000000e+00, ptr %74, align 8, !tbaa !12
  %719 = load ptr, ptr %49, align 8, !tbaa !5
  %720 = load i64, ptr %719, align 8, !tbaa !9
  store i64 %720, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %721

721:                                              ; preds = %797, %718
  %722 = load i64, ptr %67, align 8, !tbaa !9
  %723 = load i64, ptr %58, align 8, !tbaa !9
  %724 = icmp sle i64 %722, %723
  br i1 %724, label %725, label %800

725:                                              ; preds = %721
  %726 = load ptr, ptr %30, align 8, !tbaa !5
  %727 = load i64, ptr %726, align 8, !tbaa !9
  %728 = add nsw i64 %727, 2
  %729 = load i64, ptr %67, align 8, !tbaa !9
  %730 = sub nsw i64 %728, %729
  store i64 %730, ptr %59, align 8, !tbaa !9
  %731 = load ptr, ptr %28, align 8, !tbaa !5
  %732 = load i64, ptr %731, align 8, !tbaa !9
  %733 = load ptr, ptr %30, align 8, !tbaa !5
  %734 = load i64, ptr %733, align 8, !tbaa !9
  %735 = add nsw i64 %732, %734
  %736 = add nsw i64 %735, 1
  %737 = load i64, ptr %67, align 8, !tbaa !9
  %738 = sub nsw i64 %736, %737
  store i64 %738, ptr %61, align 8, !tbaa !9
  %739 = load ptr, ptr %29, align 8, !tbaa !5
  %740 = load i64, ptr %739, align 8, !tbaa !9
  %741 = load ptr, ptr %30, align 8, !tbaa !5
  %742 = load i64, ptr %741, align 8, !tbaa !9
  %743 = add nsw i64 %740, %742
  %744 = add nsw i64 %743, 1
  store i64 %744, ptr %62, align 8, !tbaa !9
  %745 = load i64, ptr %61, align 8, !tbaa !9
  %746 = load i64, ptr %62, align 8, !tbaa !9
  %747 = icmp sle i64 %745, %746
  br i1 %747, label %748, label %750

748:                                              ; preds = %725
  %749 = load i64, ptr %61, align 8, !tbaa !9
  br label %752

750:                                              ; preds = %725
  %751 = load i64, ptr %62, align 8, !tbaa !9
  br label %752

752:                                              ; preds = %750, %748
  %753 = phi i64 [ %749, %748 ], [ %751, %750 ]
  store i64 %753, ptr %60, align 8, !tbaa !9
  %754 = load i64, ptr %59, align 8, !tbaa !9
  %755 = icmp sge i64 %754, 1
  br i1 %755, label %756, label %758

756:                                              ; preds = %752
  %757 = load i64, ptr %59, align 8, !tbaa !9
  br label %759

758:                                              ; preds = %752
  br label %759

759:                                              ; preds = %758, %756
  %760 = phi i64 [ %757, %756 ], [ 1, %758 ]
  store i64 %760, ptr %66, align 8, !tbaa !9
  br label %761

761:                                              ; preds = %793, %759
  %762 = load i64, ptr %66, align 8, !tbaa !9
  %763 = load i64, ptr %60, align 8, !tbaa !9
  %764 = icmp sle i64 %762, %763
  br i1 %764, label %765, label %796

765:                                              ; preds = %761
  %766 = load double, ptr %74, align 8, !tbaa !12
  store double %766, ptr %64, align 8, !tbaa !12
  %767 = load ptr, ptr %32, align 8, !tbaa !5
  %768 = load i64, ptr %66, align 8, !tbaa !9
  %769 = load i64, ptr %67, align 8, !tbaa !9
  %770 = load i64, ptr %50, align 8, !tbaa !9
  %771 = mul nsw i64 %769, %770
  %772 = add nsw i64 %768, %771
  %773 = getelementptr inbounds double, ptr %767, i64 %772
  %774 = load double, ptr %773, align 8, !tbaa !12
  store double %774, ptr %63, align 8, !tbaa !12
  %775 = load double, ptr %63, align 8, !tbaa !12
  %776 = fcmp oge double %775, 0.000000e+00
  br i1 %776, label %777, label %779

777:                                              ; preds = %765
  %778 = load double, ptr %63, align 8, !tbaa !12
  br label %782

779:                                              ; preds = %765
  %780 = load double, ptr %63, align 8, !tbaa !12
  %781 = fneg double %780
  br label %782

782:                                              ; preds = %779, %777
  %783 = phi double [ %778, %777 ], [ %781, %779 ]
  store double %783, ptr %65, align 8, !tbaa !12
  %784 = load double, ptr %64, align 8, !tbaa !12
  %785 = load double, ptr %65, align 8, !tbaa !12
  %786 = fcmp oge double %784, %785
  br i1 %786, label %787, label %789

787:                                              ; preds = %782
  %788 = load double, ptr %64, align 8, !tbaa !12
  br label %791

789:                                              ; preds = %782
  %790 = load double, ptr %65, align 8, !tbaa !12
  br label %791

791:                                              ; preds = %789, %787
  %792 = phi double [ %788, %787 ], [ %790, %789 ]
  store double %792, ptr %74, align 8, !tbaa !12
  br label %793

793:                                              ; preds = %791
  %794 = load i64, ptr %66, align 8, !tbaa !9
  %795 = add nsw i64 %794, 1
  store i64 %795, ptr %66, align 8, !tbaa !9
  br label %761, !llvm.loop !22

796:                                              ; preds = %761
  br label %797

797:                                              ; preds = %796
  %798 = load i64, ptr %67, align 8, !tbaa !9
  %799 = add nsw i64 %798, 1
  store i64 %799, ptr %67, align 8, !tbaa !9
  br label %721, !llvm.loop !23

800:                                              ; preds = %721
  %801 = load ptr, ptr %49, align 8, !tbaa !5
  %802 = load i64, ptr %801, align 8, !tbaa !9
  %803 = sub nsw i64 %802, 1
  store i64 %803, ptr %60, align 8, !tbaa !9
  %804 = load ptr, ptr %29, align 8, !tbaa !5
  %805 = load i64, ptr %804, align 8, !tbaa !9
  %806 = load ptr, ptr %30, align 8, !tbaa !5
  %807 = load i64, ptr %806, align 8, !tbaa !9
  %808 = add nsw i64 %805, %807
  store i64 %808, ptr %59, align 8, !tbaa !9
  %809 = load i64, ptr %60, align 8, !tbaa !9
  %810 = load i64, ptr %59, align 8, !tbaa !9
  %811 = icmp sle i64 %809, %810
  br i1 %811, label %812, label %814

812:                                              ; preds = %800
  %813 = load i64, ptr %60, align 8, !tbaa !9
  br label %816

814:                                              ; preds = %800
  %815 = load i64, ptr %59, align 8, !tbaa !9
  br label %816

816:                                              ; preds = %814, %812
  %817 = phi i64 [ %813, %812 ], [ %815, %814 ]
  store i64 %817, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  %818 = load ptr, ptr %29, align 8, !tbaa !5
  %819 = load i64, ptr %818, align 8, !tbaa !9
  %820 = load ptr, ptr %30, align 8, !tbaa !5
  %821 = load i64, ptr %820, align 8, !tbaa !9
  %822 = add nsw i64 %819, %821
  %823 = add nsw i64 %822, 2
  %824 = load ptr, ptr %49, align 8, !tbaa !5
  %825 = load i64, ptr %824, align 8, !tbaa !9
  %826 = sub nsw i64 %823, %825
  store i64 %826, ptr %62, align 8, !tbaa !9
  %827 = load ptr, ptr %49, align 8, !tbaa !5
  %828 = load ptr, ptr %34, align 8, !tbaa !5
  %829 = load i64, ptr %61, align 8, !tbaa !9
  %830 = load i64, ptr %62, align 8, !tbaa !9
  %831 = icmp sge i64 %829, %830
  br i1 %831, label %832, label %834

832:                                              ; preds = %816
  %833 = load i64, ptr %61, align 8, !tbaa !9
  br label %836

834:                                              ; preds = %816
  %835 = load i64, ptr %62, align 8, !tbaa !9
  br label %836

836:                                              ; preds = %834, %832
  %837 = phi i64 [ %833, %832 ], [ %835, %834 ]
  %838 = load i64, ptr %52, align 8, !tbaa !9
  %839 = add nsw i64 %837, %838
  %840 = getelementptr inbounds double, ptr %828, i64 %839
  %841 = load ptr, ptr %35, align 8, !tbaa !5
  %842 = load ptr, ptr %47, align 8, !tbaa !5
  %843 = getelementptr inbounds double, ptr %842, i64 1
  %844 = call double @dlantb_(ptr noundef @.str.9, ptr noundef @.str.10, ptr noundef @.str, ptr noundef %827, ptr noundef %58, ptr noundef %840, ptr noundef %841, ptr noundef %843)
  store double %844, ptr %85, align 8, !tbaa !12
  %845 = load double, ptr %85, align 8, !tbaa !12
  %846 = fcmp oeq double %845, 0.000000e+00
  br i1 %846, label %847, label %848

847:                                              ; preds = %836
  store double 1.000000e+00, ptr %85, align 8, !tbaa !12
  br label %852

848:                                              ; preds = %836
  %849 = load double, ptr %74, align 8, !tbaa !12
  %850 = load double, ptr %85, align 8, !tbaa !12
  %851 = fdiv double %849, %850
  store double %851, ptr %85, align 8, !tbaa !12
  br label %852

852:                                              ; preds = %848, %847
  %853 = load double, ptr %85, align 8, !tbaa !12
  %854 = load ptr, ptr %47, align 8, !tbaa !5
  %855 = getelementptr inbounds double, ptr %854, i64 1
  store double %853, ptr %855, align 8, !tbaa !12
  %856 = load ptr, ptr %44, align 8, !tbaa !5
  store double 0.000000e+00, ptr %856, align 8, !tbaa !12
  store i32 0, ptr %25, align 4
  store i32 1, ptr %86, align 4
  br label %1129

857:                                              ; preds = %702
  br label %858

858:                                              ; preds = %857, %628
  %859 = load i64, ptr %82, align 8, !tbaa !9
  %860 = icmp ne i64 %859, 0
  br i1 %860, label %861, label %863

861:                                              ; preds = %858
  %862 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  store i8 49, ptr %862, align 1, !tbaa !11
  br label %865

863:                                              ; preds = %858
  %864 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  store i8 73, ptr %864, align 1, !tbaa !11
  br label %865

865:                                              ; preds = %863, %861
  %866 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  %867 = load ptr, ptr %28, align 8, !tbaa !5
  %868 = load ptr, ptr %29, align 8, !tbaa !5
  %869 = load ptr, ptr %30, align 8, !tbaa !5
  %870 = load ptr, ptr %32, align 8, !tbaa !5
  %871 = load i64, ptr %51, align 8, !tbaa !9
  %872 = getelementptr inbounds double, ptr %870, i64 %871
  %873 = load ptr, ptr %33, align 8, !tbaa !5
  %874 = load ptr, ptr %47, align 8, !tbaa !5
  %875 = getelementptr inbounds double, ptr %874, i64 1
  %876 = call double @dlangb_(ptr noundef %866, ptr noundef %867, ptr noundef %868, ptr noundef %869, ptr noundef %872, ptr noundef %873, ptr noundef %875)
  store double %876, ptr %74, align 8, !tbaa !12
  %877 = load ptr, ptr %29, align 8, !tbaa !5
  %878 = load i64, ptr %877, align 8, !tbaa !9
  %879 = load ptr, ptr %30, align 8, !tbaa !5
  %880 = load i64, ptr %879, align 8, !tbaa !9
  %881 = add nsw i64 %878, %880
  store i64 %881, ptr %58, align 8, !tbaa !9
  %882 = load ptr, ptr %28, align 8, !tbaa !5
  %883 = load ptr, ptr %34, align 8, !tbaa !5
  %884 = load i64, ptr %53, align 8, !tbaa !9
  %885 = getelementptr inbounds double, ptr %883, i64 %884
  %886 = load ptr, ptr %35, align 8, !tbaa !5
  %887 = load ptr, ptr %47, align 8, !tbaa !5
  %888 = getelementptr inbounds double, ptr %887, i64 1
  %889 = call double @dlantb_(ptr noundef @.str.9, ptr noundef @.str.10, ptr noundef @.str, ptr noundef %882, ptr noundef %58, ptr noundef %885, ptr noundef %886, ptr noundef %888)
  store double %889, ptr %85, align 8, !tbaa !12
  %890 = load double, ptr %85, align 8, !tbaa !12
  %891 = fcmp oeq double %890, 0.000000e+00
  br i1 %891, label %892, label %893

892:                                              ; preds = %865
  store double 1.000000e+00, ptr %85, align 8, !tbaa !12
  br label %906

893:                                              ; preds = %865
  %894 = load ptr, ptr %28, align 8, !tbaa !5
  %895 = load ptr, ptr %29, align 8, !tbaa !5
  %896 = load ptr, ptr %30, align 8, !tbaa !5
  %897 = load ptr, ptr %32, align 8, !tbaa !5
  %898 = load i64, ptr %51, align 8, !tbaa !9
  %899 = getelementptr inbounds double, ptr %897, i64 %898
  %900 = load ptr, ptr %33, align 8, !tbaa !5
  %901 = load ptr, ptr %47, align 8, !tbaa !5
  %902 = getelementptr inbounds double, ptr %901, i64 1
  %903 = call double @dlangb_(ptr noundef @.str.9, ptr noundef %894, ptr noundef %895, ptr noundef %896, ptr noundef %899, ptr noundef %900, ptr noundef %902)
  %904 = load double, ptr %85, align 8, !tbaa !12
  %905 = fdiv double %903, %904
  store double %905, ptr %85, align 8, !tbaa !12
  br label %906

906:                                              ; preds = %893, %892
  %907 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  %908 = load ptr, ptr %28, align 8, !tbaa !5
  %909 = load ptr, ptr %29, align 8, !tbaa !5
  %910 = load ptr, ptr %30, align 8, !tbaa !5
  %911 = load ptr, ptr %34, align 8, !tbaa !5
  %912 = load i64, ptr %53, align 8, !tbaa !9
  %913 = getelementptr inbounds double, ptr %911, i64 %912
  %914 = load ptr, ptr %35, align 8, !tbaa !5
  %915 = load ptr, ptr %36, align 8, !tbaa !5
  %916 = getelementptr inbounds i64, ptr %915, i64 1
  %917 = load ptr, ptr %44, align 8, !tbaa !5
  %918 = load ptr, ptr %47, align 8, !tbaa !5
  %919 = getelementptr inbounds double, ptr %918, i64 1
  %920 = load ptr, ptr %48, align 8, !tbaa !5
  %921 = getelementptr inbounds i64, ptr %920, i64 1
  %922 = load ptr, ptr %49, align 8, !tbaa !5
  %923 = call i32 @dgbcon_(ptr noundef %907, ptr noundef %908, ptr noundef %909, ptr noundef %910, ptr noundef %913, ptr noundef %914, ptr noundef %916, ptr noundef %74, ptr noundef %917, ptr noundef %919, ptr noundef %921, ptr noundef %922)
  %924 = load ptr, ptr %28, align 8, !tbaa !5
  %925 = load ptr, ptr %31, align 8, !tbaa !5
  %926 = load ptr, ptr %40, align 8, !tbaa !5
  %927 = load i64, ptr %55, align 8, !tbaa !9
  %928 = getelementptr inbounds double, ptr %926, i64 %927
  %929 = load ptr, ptr %41, align 8, !tbaa !5
  %930 = load ptr, ptr %42, align 8, !tbaa !5
  %931 = load i64, ptr %57, align 8, !tbaa !9
  %932 = getelementptr inbounds double, ptr %930, i64 %931
  %933 = load ptr, ptr %43, align 8, !tbaa !5
  %934 = call i32 @dlacpy_(ptr noundef @.str.11, ptr noundef %924, ptr noundef %925, ptr noundef %928, ptr noundef %929, ptr noundef %932, ptr noundef %933)
  %935 = load ptr, ptr %27, align 8, !tbaa !5
  %936 = load ptr, ptr %28, align 8, !tbaa !5
  %937 = load ptr, ptr %29, align 8, !tbaa !5
  %938 = load ptr, ptr %30, align 8, !tbaa !5
  %939 = load ptr, ptr %31, align 8, !tbaa !5
  %940 = load ptr, ptr %34, align 8, !tbaa !5
  %941 = load i64, ptr %53, align 8, !tbaa !9
  %942 = getelementptr inbounds double, ptr %940, i64 %941
  %943 = load ptr, ptr %35, align 8, !tbaa !5
  %944 = load ptr, ptr %36, align 8, !tbaa !5
  %945 = getelementptr inbounds i64, ptr %944, i64 1
  %946 = load ptr, ptr %42, align 8, !tbaa !5
  %947 = load i64, ptr %57, align 8, !tbaa !9
  %948 = getelementptr inbounds double, ptr %946, i64 %947
  %949 = load ptr, ptr %43, align 8, !tbaa !5
  %950 = load ptr, ptr %49, align 8, !tbaa !5
  %951 = call i32 @dgbtrs_(ptr noundef %935, ptr noundef %936, ptr noundef %937, ptr noundef %938, ptr noundef %939, ptr noundef %942, ptr noundef %943, ptr noundef %945, ptr noundef %948, ptr noundef %949, ptr noundef %950)
  %952 = load ptr, ptr %27, align 8, !tbaa !5
  %953 = load ptr, ptr %28, align 8, !tbaa !5
  %954 = load ptr, ptr %29, align 8, !tbaa !5
  %955 = load ptr, ptr %30, align 8, !tbaa !5
  %956 = load ptr, ptr %31, align 8, !tbaa !5
  %957 = load ptr, ptr %32, align 8, !tbaa !5
  %958 = load i64, ptr %51, align 8, !tbaa !9
  %959 = getelementptr inbounds double, ptr %957, i64 %958
  %960 = load ptr, ptr %33, align 8, !tbaa !5
  %961 = load ptr, ptr %34, align 8, !tbaa !5
  %962 = load i64, ptr %53, align 8, !tbaa !9
  %963 = getelementptr inbounds double, ptr %961, i64 %962
  %964 = load ptr, ptr %35, align 8, !tbaa !5
  %965 = load ptr, ptr %36, align 8, !tbaa !5
  %966 = getelementptr inbounds i64, ptr %965, i64 1
  %967 = load ptr, ptr %40, align 8, !tbaa !5
  %968 = load i64, ptr %55, align 8, !tbaa !9
  %969 = getelementptr inbounds double, ptr %967, i64 %968
  %970 = load ptr, ptr %41, align 8, !tbaa !5
  %971 = load ptr, ptr %42, align 8, !tbaa !5
  %972 = load i64, ptr %57, align 8, !tbaa !9
  %973 = getelementptr inbounds double, ptr %971, i64 %972
  %974 = load ptr, ptr %43, align 8, !tbaa !5
  %975 = load ptr, ptr %45, align 8, !tbaa !5
  %976 = getelementptr inbounds double, ptr %975, i64 1
  %977 = load ptr, ptr %46, align 8, !tbaa !5
  %978 = getelementptr inbounds double, ptr %977, i64 1
  %979 = load ptr, ptr %47, align 8, !tbaa !5
  %980 = getelementptr inbounds double, ptr %979, i64 1
  %981 = load ptr, ptr %48, align 8, !tbaa !5
  %982 = getelementptr inbounds i64, ptr %981, i64 1
  %983 = load ptr, ptr %49, align 8, !tbaa !5
  %984 = call i32 @dgbrfs_(ptr noundef %952, ptr noundef %953, ptr noundef %954, ptr noundef %955, ptr noundef %956, ptr noundef %959, ptr noundef %960, ptr noundef %963, ptr noundef %964, ptr noundef %966, ptr noundef %969, ptr noundef %970, ptr noundef %973, ptr noundef %974, ptr noundef %976, ptr noundef %978, ptr noundef %980, ptr noundef %982, ptr noundef %983)
  %985 = load i64, ptr %82, align 8, !tbaa !9
  %986 = icmp ne i64 %985, 0
  br i1 %986, label %987, label %1051

987:                                              ; preds = %906
  %988 = load i64, ptr %80, align 8, !tbaa !9
  %989 = icmp ne i64 %988, 0
  br i1 %989, label %990, label %1050

990:                                              ; preds = %987
  %991 = load ptr, ptr %31, align 8, !tbaa !5
  %992 = load i64, ptr %991, align 8, !tbaa !9
  store i64 %992, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %993

993:                                              ; preds = %1029, %990
  %994 = load i64, ptr %67, align 8, !tbaa !9
  %995 = load i64, ptr %58, align 8, !tbaa !9
  %996 = icmp sle i64 %994, %995
  br i1 %996, label %997, label %1032

997:                                              ; preds = %993
  %998 = load ptr, ptr %28, align 8, !tbaa !5
  %999 = load i64, ptr %998, align 8, !tbaa !9
  store i64 %999, ptr %60, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %1000

1000:                                             ; preds = %1025, %997
  %1001 = load i64, ptr %66, align 8, !tbaa !9
  %1002 = load i64, ptr %60, align 8, !tbaa !9
  %1003 = icmp sle i64 %1001, %1002
  br i1 %1003, label %1004, label %1028

1004:                                             ; preds = %1000
  %1005 = load ptr, ptr %39, align 8, !tbaa !5
  %1006 = load i64, ptr %66, align 8, !tbaa !9
  %1007 = getelementptr inbounds double, ptr %1005, i64 %1006
  %1008 = load double, ptr %1007, align 8, !tbaa !12
  %1009 = load ptr, ptr %42, align 8, !tbaa !5
  %1010 = load i64, ptr %66, align 8, !tbaa !9
  %1011 = load i64, ptr %67, align 8, !tbaa !9
  %1012 = load i64, ptr %56, align 8, !tbaa !9
  %1013 = mul nsw i64 %1011, %1012
  %1014 = add nsw i64 %1010, %1013
  %1015 = getelementptr inbounds double, ptr %1009, i64 %1014
  %1016 = load double, ptr %1015, align 8, !tbaa !12
  %1017 = fmul double %1008, %1016
  %1018 = load ptr, ptr %42, align 8, !tbaa !5
  %1019 = load i64, ptr %66, align 8, !tbaa !9
  %1020 = load i64, ptr %67, align 8, !tbaa !9
  %1021 = load i64, ptr %56, align 8, !tbaa !9
  %1022 = mul nsw i64 %1020, %1021
  %1023 = add nsw i64 %1019, %1022
  %1024 = getelementptr inbounds double, ptr %1018, i64 %1023
  store double %1017, ptr %1024, align 8, !tbaa !12
  br label %1025

1025:                                             ; preds = %1004
  %1026 = load i64, ptr %66, align 8, !tbaa !9
  %1027 = add nsw i64 %1026, 1
  store i64 %1027, ptr %66, align 8, !tbaa !9
  br label %1000, !llvm.loop !24

1028:                                             ; preds = %1000
  br label %1029

1029:                                             ; preds = %1028
  %1030 = load i64, ptr %67, align 8, !tbaa !9
  %1031 = add nsw i64 %1030, 1
  store i64 %1031, ptr %67, align 8, !tbaa !9
  br label %993, !llvm.loop !25

1032:                                             ; preds = %993
  %1033 = load ptr, ptr %31, align 8, !tbaa !5
  %1034 = load i64, ptr %1033, align 8, !tbaa !9
  store i64 %1034, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %1035

1035:                                             ; preds = %1046, %1032
  %1036 = load i64, ptr %67, align 8, !tbaa !9
  %1037 = load i64, ptr %58, align 8, !tbaa !9
  %1038 = icmp sle i64 %1036, %1037
  br i1 %1038, label %1039, label %1049

1039:                                             ; preds = %1035
  %1040 = load double, ptr %76, align 8, !tbaa !12
  %1041 = load ptr, ptr %45, align 8, !tbaa !5
  %1042 = load i64, ptr %67, align 8, !tbaa !9
  %1043 = getelementptr inbounds double, ptr %1041, i64 %1042
  %1044 = load double, ptr %1043, align 8, !tbaa !12
  %1045 = fdiv double %1044, %1040
  store double %1045, ptr %1043, align 8, !tbaa !12
  br label %1046

1046:                                             ; preds = %1039
  %1047 = load i64, ptr %67, align 8, !tbaa !9
  %1048 = add nsw i64 %1047, 1
  store i64 %1048, ptr %67, align 8, !tbaa !9
  br label %1035, !llvm.loop !26

1049:                                             ; preds = %1035
  br label %1050

1050:                                             ; preds = %1049, %987
  br label %1115

1051:                                             ; preds = %906
  %1052 = load i64, ptr %84, align 8, !tbaa !9
  %1053 = icmp ne i64 %1052, 0
  br i1 %1053, label %1054, label %1114

1054:                                             ; preds = %1051
  %1055 = load ptr, ptr %31, align 8, !tbaa !5
  %1056 = load i64, ptr %1055, align 8, !tbaa !9
  store i64 %1056, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %1057

1057:                                             ; preds = %1093, %1054
  %1058 = load i64, ptr %67, align 8, !tbaa !9
  %1059 = load i64, ptr %58, align 8, !tbaa !9
  %1060 = icmp sle i64 %1058, %1059
  br i1 %1060, label %1061, label %1096

1061:                                             ; preds = %1057
  %1062 = load ptr, ptr %28, align 8, !tbaa !5
  %1063 = load i64, ptr %1062, align 8, !tbaa !9
  store i64 %1063, ptr %60, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %1064

1064:                                             ; preds = %1089, %1061
  %1065 = load i64, ptr %66, align 8, !tbaa !9
  %1066 = load i64, ptr %60, align 8, !tbaa !9
  %1067 = icmp sle i64 %1065, %1066
  br i1 %1067, label %1068, label %1092

1068:                                             ; preds = %1064
  %1069 = load ptr, ptr %38, align 8, !tbaa !5
  %1070 = load i64, ptr %66, align 8, !tbaa !9
  %1071 = getelementptr inbounds double, ptr %1069, i64 %1070
  %1072 = load double, ptr %1071, align 8, !tbaa !12
  %1073 = load ptr, ptr %42, align 8, !tbaa !5
  %1074 = load i64, ptr %66, align 8, !tbaa !9
  %1075 = load i64, ptr %67, align 8, !tbaa !9
  %1076 = load i64, ptr %56, align 8, !tbaa !9
  %1077 = mul nsw i64 %1075, %1076
  %1078 = add nsw i64 %1074, %1077
  %1079 = getelementptr inbounds double, ptr %1073, i64 %1078
  %1080 = load double, ptr %1079, align 8, !tbaa !12
  %1081 = fmul double %1072, %1080
  %1082 = load ptr, ptr %42, align 8, !tbaa !5
  %1083 = load i64, ptr %66, align 8, !tbaa !9
  %1084 = load i64, ptr %67, align 8, !tbaa !9
  %1085 = load i64, ptr %56, align 8, !tbaa !9
  %1086 = mul nsw i64 %1084, %1085
  %1087 = add nsw i64 %1083, %1086
  %1088 = getelementptr inbounds double, ptr %1082, i64 %1087
  store double %1081, ptr %1088, align 8, !tbaa !12
  br label %1089

1089:                                             ; preds = %1068
  %1090 = load i64, ptr %66, align 8, !tbaa !9
  %1091 = add nsw i64 %1090, 1
  store i64 %1091, ptr %66, align 8, !tbaa !9
  br label %1064, !llvm.loop !27

1092:                                             ; preds = %1064
  br label %1093

1093:                                             ; preds = %1092
  %1094 = load i64, ptr %67, align 8, !tbaa !9
  %1095 = add nsw i64 %1094, 1
  store i64 %1095, ptr %67, align 8, !tbaa !9
  br label %1057, !llvm.loop !28

1096:                                             ; preds = %1057
  %1097 = load ptr, ptr %31, align 8, !tbaa !5
  %1098 = load i64, ptr %1097, align 8, !tbaa !9
  store i64 %1098, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %1099

1099:                                             ; preds = %1110, %1096
  %1100 = load i64, ptr %67, align 8, !tbaa !9
  %1101 = load i64, ptr %58, align 8, !tbaa !9
  %1102 = icmp sle i64 %1100, %1101
  br i1 %1102, label %1103, label %1113

1103:                                             ; preds = %1099
  %1104 = load double, ptr %81, align 8, !tbaa !12
  %1105 = load ptr, ptr %45, align 8, !tbaa !5
  %1106 = load i64, ptr %67, align 8, !tbaa !9
  %1107 = getelementptr inbounds double, ptr %1105, i64 %1106
  %1108 = load double, ptr %1107, align 8, !tbaa !12
  %1109 = fdiv double %1108, %1104
  store double %1109, ptr %1107, align 8, !tbaa !12
  br label %1110

1110:                                             ; preds = %1103
  %1111 = load i64, ptr %67, align 8, !tbaa !9
  %1112 = add nsw i64 %1111, 1
  store i64 %1112, ptr %67, align 8, !tbaa !9
  br label %1099, !llvm.loop !29

1113:                                             ; preds = %1099
  br label %1114

1114:                                             ; preds = %1113, %1051
  br label %1115

1115:                                             ; preds = %1114, %1050
  %1116 = load ptr, ptr %44, align 8, !tbaa !5
  %1117 = load double, ptr %1116, align 8, !tbaa !12
  %1118 = call double @dlamch_(ptr noundef @.str.12)
  %1119 = fcmp olt double %1117, %1118
  br i1 %1119, label %1120, label %1125

1120:                                             ; preds = %1115
  %1121 = load ptr, ptr %28, align 8, !tbaa !5
  %1122 = load i64, ptr %1121, align 8, !tbaa !9
  %1123 = add nsw i64 %1122, 1
  %1124 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 %1123, ptr %1124, align 8, !tbaa !9
  br label %1125

1125:                                             ; preds = %1120, %1115
  %1126 = load double, ptr %85, align 8, !tbaa !12
  %1127 = load ptr, ptr %47, align 8, !tbaa !5
  %1128 = getelementptr inbounds double, ptr %1127, i64 1
  store double %1126, ptr %1128, align 8, !tbaa !12
  store i32 0, ptr %25, align 4
  store i32 1, ptr %86, align 4
  br label %1129

1129:                                             ; preds = %1125, %852, %466
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  %1130 = load i32, ptr %25, align 4
  ret i32 %1130
}

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

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

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

.thread:                                          ; preds = %24
  store i8 78, ptr %11, align 1, !tbaa !9
  br label %71

53:                                               ; preds = %24
  %54 = tail call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.2) #4
  %.not = icmp eq i64 %54, 0
  br i1 %.not, label %55, label %58

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

58:                                               ; preds = %55, %53
  %59 = phi i1 [ true, %53 ], [ %57, %55 ]
  %60 = zext i1 %59 to i64
  %61 = tail call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.4) #4
  %.not448 = icmp eq i64 %61, 0
  br i1 %.not448, label %62, label %65

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

65:                                               ; preds = %62, %58
  %66 = phi i1 [ true, %58 ], [ %64, %62 ]
  %67 = zext i1 %66 to i64
  %68 = tail call double @dlamch_(ptr noundef nonnull @.str.5) #4
  %69 = fdiv double 1.000000e+00, %68
  %70 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.6) #4
  %.not449 = icmp eq i64 %70, 0
  br i1 %.not449, label %.thread500.sink.split, label %71

71:                                               ; preds = %.thread, %65
  %.0421493 = phi i64 [ 0, %.thread ], [ %60, %65 ]
  %.0423491 = phi double [ undef, %.thread ], [ %68, %65 ]
  %.0425490 = phi i64 [ 0, %.thread ], [ %67, %65 ]
  %.0427488 = phi double [ undef, %.thread ], [ %69, %65 ]
  %.not450 = icmp eq i64 %50, 0
  br i1 %.not450, label %72, label %76

72:                                               ; preds = %71
  %73 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.7) #4
  %.not451 = icmp eq i64 %73, 0
  br i1 %.not451, label %74, label %76

74:                                               ; preds = %72
  %75 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #4
  %.not452 = icmp eq i64 %75, 0
  br i1 %.not452, label %.thread500.sink.split, label %76

76:                                               ; preds = %74, %72, %71
  %77 = load i64, ptr %2, align 8, !tbaa !5
  %78 = icmp slt i64 %77, 0
  br i1 %78, label %.thread500.sink.split, label %79

79:                                               ; preds = %76
  %80 = load i64, ptr %3, align 8, !tbaa !5
  %81 = icmp slt i64 %80, 0
  br i1 %81, label %.thread500.sink.split, label %82

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

85:                                               ; preds = %82
  %86 = load i64, ptr %5, align 8, !tbaa !5
  %87 = icmp slt i64 %86, 0
  br i1 %87, label %.thread500.sink.split, label %88

88:                                               ; preds = %85
  %89 = load i64, ptr %7, align 8, !tbaa !5
  %90 = add nuw nsw i64 %83, %80
  %.not453 = icmp sgt i64 %89, %90
  br i1 %.not453, label %91, label %.thread500.sink.split

91:                                               ; preds = %88
  %92 = load i64, ptr %9, align 8, !tbaa !5
  %93 = shl nuw i64 %80, 1
  %94 = add nsw i64 %83, %93
  %.not454 = icmp sgt i64 %92, %94
  br i1 %.not454, label %95, label %.thread500.sink.split

95:                                               ; preds = %91
  %96 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.6) #4
  %97 = icmp eq i64 %96, 0
  %98 = icmp ne i64 %.0421493, 0
  %or.cond5 = select i1 %97, i1 true, i1 %98
  %99 = icmp ne i64 %.0425490, 0
  %or.cond7 = select i1 %or.cond5, i1 true, i1 %99
  br i1 %or.cond7, label %102, label %100

100:                                              ; preds = %95
  %101 = tail call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str) #4
  %.not455 = icmp eq i64 %101, 0
  br i1 %.not455, label %.thread500.sink.split, label %..thread495_crit_edge

..thread495_crit_edge:                            ; preds = %100
  %.pr.pre = load i64, ptr %23, align 8, !tbaa !5
  br label %.thread495

102:                                              ; preds = %95
  br i1 %98, label %103, label %135

103:                                              ; preds = %102
  %104 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %104, ptr %25, align 8, !tbaa !5
  %.not456510 = icmp slt i64 %104, 1
  br i1 %.not456510, label %._crit_edge, label %.lr.ph.preheader

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

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

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %.0428513 = phi double [ 0.000000e+00, %.lr.ph.preheader.new ], [ %117, %.lr.ph ]
  %.0430512 = phi double [ %.0427488, %.lr.ph.preheader.new ], [ %115, %.lr.ph ]
  %.0432511 = phi i64 [ 1, %.lr.ph.preheader.new ], [ %118, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %106 = getelementptr inbounds double, ptr %39, i64 %.0432511
  %107 = load double, ptr %106, align 8, !tbaa !10
  %108 = fcmp ole double %.0430512, %107
  %109 = select i1 %108, double %.0430512, double %107
  %110 = fcmp oge double %.0428513, %107
  %111 = select i1 %110, double %.0428513, double %107
  %112 = getelementptr double, ptr %12, i64 %.0432511
  %113 = load double, ptr %112, align 8, !tbaa !10
  %114 = fcmp ole double %109, %113
  %115 = select i1 %114, double %109, double %113
  %116 = fcmp oge double %111, %113
  %117 = select i1 %116, double %111, double %113
  %118 = add nuw i64 %.0432511, 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
  %.lcssa761.ph = phi double [ poison, %.lr.ph.preheader ], [ %115, %.lr.ph ]
  %.lcssa760.ph = phi double [ poison, %.lr.ph.preheader ], [ %117, %.lr.ph ]
  %.0428513.unr = phi double [ 0.000000e+00, %.lr.ph.preheader ], [ %117, %.lr.ph ]
  %.0430512.unr = phi double [ %.0427488, %.lr.ph.preheader ], [ %115, %.lr.ph ]
  %.0432511.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %118, %.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
  %119 = getelementptr inbounds double, ptr %39, i64 %.0432511.unr
  %120 = load double, ptr %119, align 8, !tbaa !10
  %121 = fcmp ole double %.0430512.unr, %120
  %122 = select i1 %121, double %.0430512.unr, double %120
  %123 = fcmp oge double %.0428513.unr, %120
  %124 = select i1 %123, double %.0428513.unr, double %120
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %103
  %.0430.lcssa = phi double [ %.0427488, %103 ], [ %.lcssa761.ph, %._crit_edge.loopexit.unr-lcssa ], [ %122, %.lr.ph.epil ]
  %.0428.lcssa = phi double [ 0.000000e+00, %103 ], [ %.lcssa760.ph, %._crit_edge.loopexit.unr-lcssa ], [ %124, %.lr.ph.epil ]
  %125 = fcmp ugt double %.0430.lcssa, 0.000000e+00
  br i1 %125, label %126, label %.thread500.sink.split

126:                                              ; preds = %._crit_edge
  %127 = icmp sgt i64 %104, 0
  br i1 %127, label %128, label %134

128:                                              ; preds = %126
  %129 = fcmp oge double %.0430.lcssa, %.0423491
  %130 = select i1 %129, double %.0430.lcssa, double %.0423491
  %131 = fcmp ole double %.0428.lcssa, %.0427488
  %132 = select i1 %131, double %.0428.lcssa, double %.0427488
  %133 = fdiv double %130, %132
  store double %133, ptr %32, align 8, !tbaa !10
  br label %135

134:                                              ; preds = %126
  store double 1.000000e+00, ptr %32, align 8, !tbaa !10
  br label %135

135:                                              ; preds = %134, %128, %102
  %.pr.pre619.pr = load i64, ptr %23, align 8, !tbaa !5
  br i1 %99, label %136, label %.thread495

136:                                              ; preds = %135
  %137 = icmp eq i64 %.pr.pre619.pr, 0
  br i1 %137, label %138, label %.thread500

138:                                              ; preds = %136
  %139 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %139, ptr %25, align 8, !tbaa !5
  %.not457515 = icmp slt i64 %139, 1
  br i1 %.not457515, label %._crit_edge521, label %.lr.ph520.preheader

.lr.ph520.preheader:                              ; preds = %138
  %xtraiter764 = and i64 %139, 1
  %140 = icmp eq i64 %139, 1
  br i1 %140, label %._crit_edge521.loopexit.unr-lcssa, label %.lr.ph520.preheader.new

.lr.ph520.preheader.new:                          ; preds = %.lr.ph520.preheader
  %unroll_iter768 = and i64 %139, 9223372036854775806
  br label %.lr.ph520

.lr.ph520:                                        ; preds = %.lr.ph520, %.lr.ph520.preheader.new
  %.1429518 = phi double [ 0.000000e+00, %.lr.ph520.preheader.new ], [ %152, %.lr.ph520 ]
  %.1431517 = phi double [ %.0427488, %.lr.ph520.preheader.new ], [ %150, %.lr.ph520 ]
  %.1433516 = phi i64 [ 1, %.lr.ph520.preheader.new ], [ %153, %.lr.ph520 ]
  %niter769 = phi i64 [ 0, %.lr.ph520.preheader.new ], [ %niter769.next.1, %.lr.ph520 ]
  %141 = getelementptr inbounds double, ptr %40, i64 %.1433516
  %142 = load double, ptr %141, align 8, !tbaa !10
  %143 = fcmp ole double %.1431517, %142
  %144 = select i1 %143, double %.1431517, double %142
  %145 = fcmp oge double %.1429518, %142
  %146 = select i1 %145, double %.1429518, double %142
  %147 = getelementptr double, ptr %13, i64 %.1433516
  %148 = load double, ptr %147, align 8, !tbaa !10
  %149 = fcmp ole double %144, %148
  %150 = select i1 %149, double %144, double %148
  %151 = fcmp oge double %146, %148
  %152 = select i1 %151, double %146, double %148
  %153 = add nuw i64 %.1433516, 2
  %niter769.next.1 = add i64 %niter769, 2
  %niter769.ncmp.1 = icmp eq i64 %niter769.next.1, %unroll_iter768
  br i1 %niter769.ncmp.1, label %._crit_edge521.loopexit.unr-lcssa, label %.lr.ph520, !llvm.loop !14

._crit_edge521.loopexit.unr-lcssa:                ; preds = %.lr.ph520, %.lr.ph520.preheader
  %.lcssa759.ph = phi double [ poison, %.lr.ph520.preheader ], [ %150, %.lr.ph520 ]
  %.lcssa758.ph = phi double [ poison, %.lr.ph520.preheader ], [ %152, %.lr.ph520 ]
  %.1429518.unr = phi double [ 0.000000e+00, %.lr.ph520.preheader ], [ %152, %.lr.ph520 ]
  %.1431517.unr = phi double [ %.0427488, %.lr.ph520.preheader ], [ %150, %.lr.ph520 ]
  %.1433516.unr = phi i64 [ 1, %.lr.ph520.preheader ], [ %153, %.lr.ph520 ]
  %lcmp.mod765.not = icmp eq i64 %xtraiter764, 0
  br i1 %lcmp.mod765.not, label %._crit_edge521, label %.lr.ph520.epil

.lr.ph520.epil:                                   ; preds = %._crit_edge521.loopexit.unr-lcssa
  %154 = getelementptr inbounds double, ptr %40, i64 %.1433516.unr
  %155 = load double, ptr %154, align 8, !tbaa !10
  %156 = fcmp ole double %.1431517.unr, %155
  %157 = select i1 %156, double %.1431517.unr, double %155
  %158 = fcmp oge double %.1429518.unr, %155
  %159 = select i1 %158, double %.1429518.unr, double %155
  br label %._crit_edge521

._crit_edge521:                                   ; preds = %.lr.ph520.epil, %._crit_edge521.loopexit.unr-lcssa, %138
  %.1431.lcssa = phi double [ %.0427488, %138 ], [ %.lcssa759.ph, %._crit_edge521.loopexit.unr-lcssa ], [ %157, %.lr.ph520.epil ]
  %.1429.lcssa = phi double [ 0.000000e+00, %138 ], [ %.lcssa758.ph, %._crit_edge521.loopexit.unr-lcssa ], [ %159, %.lr.ph520.epil ]
  %160 = fcmp ugt double %.1431.lcssa, 0.000000e+00
  br i1 %160, label %161, label %.thread500.sink.split

161:                                              ; preds = %._crit_edge521
  %162 = icmp sgt i64 %139, 0
  br i1 %162, label %163, label %169

163:                                              ; preds = %161
  %164 = fcmp oge double %.1431.lcssa, %.0423491
  %165 = select i1 %164, double %.1431.lcssa, double %.0423491
  %166 = fcmp ole double %.1429.lcssa, %.0427488
  %167 = select i1 %166, double %.1429.lcssa, double %.0427488
  %168 = fdiv double %165, %167
  store double %168, ptr %30, align 8, !tbaa !10
  br label %.thread495.thread

169:                                              ; preds = %161
  store double 1.000000e+00, ptr %30, align 8, !tbaa !10
  br label %.thread495.thread

.thread495:                                       ; preds = %..thread495_crit_edge, %135
  %.pr498.pr = phi i64 [ %.pr.pre, %..thread495_crit_edge ], [ %.pr.pre619.pr, %135 ]
  %170 = icmp eq i64 %.pr498.pr, 0
  br i1 %170, label %.thread495.thread, label %.thread500

.thread495.thread:                                ; preds = %163, %169, %.thread495
  %171 = load i64, ptr %15, align 8, !tbaa !5
  %172 = load i64, ptr %2, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.smax.i64(i64 %172, i64 1)
  %173 = icmp slt i64 %171, %spec.select
  br i1 %173, label %.thread500.sink.split, label %174

174:                                              ; preds = %.thread495.thread
  %175 = load i64, ptr %17, align 8, !tbaa !5
  %176 = icmp slt i64 %175, %spec.select
  br i1 %176, label %.thread500.sink.split, label %.thread496

.thread500.sink.split:                            ; preds = %174, %.thread495.thread, %._crit_edge521, %._crit_edge, %100, %91, %88, %85, %82, %79, %76, %74, %65
  %.sink = phi i64 [ -1, %65 ], [ -2, %74 ], [ -3, %76 ], [ -4, %79 ], [ -5, %82 ], [ -6, %85 ], [ -8, %88 ], [ -10, %91 ], [ -12, %100 ], [ -13, %._crit_edge ], [ -14, %._crit_edge521 ], [ -16, %.thread495.thread ], [ -18, %174 ]
  store i64 %.sink, ptr %23, align 8, !tbaa !5
  br label %.thread500

.thread500:                                       ; preds = %.thread500.sink.split, %136, %.thread495
  %177 = phi i64 [ %.pr498.pr, %.thread495 ], [ %.pr.pre619.pr, %136 ], [ %.sink, %.thread500.sink.split ]
  %178 = sub nsw i64 0, %177
  store i64 %178, ptr %25, align 8, !tbaa !5
  %179 = call i32 @xerbla_(ptr noundef nonnull @.str.8, ptr noundef nonnull %25) #4
  br label %507

.thread496:                                       ; preds = %174
  br i1 %52, label %180, label %200

180:                                              ; preds = %.thread496
  %181 = call i32 @dgbequ_(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 %32, ptr noundef nonnull %30, ptr noundef nonnull %27, ptr noundef nonnull %31) #4
  %182 = load i64, ptr %31, align 8, !tbaa !5
  %183 = icmp eq i64 %182, 0
  br i1 %183, label %184, label %200

184:                                              ; preds = %180
  %185 = call i32 @dlaqgb_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %32, ptr noundef nonnull %30, ptr noundef nonnull %27, ptr noundef %11) #4
  %186 = call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.2) #4
  %.not459 = icmp eq i64 %186, 0
  br i1 %.not459, label %187, label %190

187:                                              ; preds = %184
  %188 = call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.3) #4
  %189 = icmp ne i64 %188, 0
  br label %190

190:                                              ; preds = %187, %184
  %191 = phi i1 [ true, %184 ], [ %189, %187 ]
  %192 = zext i1 %191 to i64
  %193 = call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.4) #4
  %.not460 = icmp eq i64 %193, 0
  br i1 %.not460, label %194, label %197

194:                                              ; preds = %190
  %195 = call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.3) #4
  %196 = icmp ne i64 %195, 0
  br label %197

197:                                              ; preds = %194, %190
  %198 = phi i1 [ true, %190 ], [ %196, %194 ]
  %199 = zext i1 %198 to i64
  br label %200

200:                                              ; preds = %180, %197, %.thread496
  %.1426 = phi i64 [ %199, %197 ], [ %.0425490, %180 ], [ %.0425490, %.thread496 ]
  %.1422 = phi i64 [ %192, %197 ], [ %.0421493, %180 ], [ %.0421493, %.thread496 ]
  br i1 %.not450, label %248, label %201

201:                                              ; preds = %200
  %.not465 = icmp eq i64 %.1422, 0
  br i1 %.not465, label %.loopexit508, label %202

202:                                              ; preds = %201
  %203 = load i64, ptr %5, align 8, !tbaa !5
  store i64 %203, ptr %25, align 8, !tbaa !5
  %.not466529 = icmp slt i64 %203, 1
  br i1 %.not466529, label %.loopexit508, label %.lr.ph532

.lr.ph532:                                        ; preds = %202
  %204 = load i64, ptr %2, align 8, !tbaa !5
  %.not481524 = icmp slt i64 %204, 1
  br i1 %.not481524, label %..loopexit509_crit_edge, label %.lr.ph527.preheader

.lr.ph527.preheader:                              ; preds = %.lr.ph532
  %205 = add nuw i64 %203, 2305843009213693951
  %206 = mul i64 %41, %205
  %207 = shl i64 %204, 3
  %208 = add i64 %206, %204
  %209 = shl i64 %208, 3
  %scevgep = getelementptr i8, ptr %14, i64 %209
  %scevgep647 = getelementptr i8, ptr %12, i64 %207
  %210 = add nuw i64 %204, 1
  %min.iters.check = icmp ult i64 %204, 4
  %bound0 = icmp ugt ptr %scevgep647, %14
  %bound1 = icmp ugt ptr %scevgep, %12
  %found.conflict = and i1 %bound0, %bound1
  %.mask = and i64 %41, 1152921504606846976
  %stride.check = icmp ne i64 %.mask, 0
  %211 = or i1 %found.conflict, %stride.check
  %n.vec = and i64 %204, 9223372036854775804
  %ind.end = or disjoint i64 %n.vec, 1
  %cmp.n = icmp eq i64 %204, %n.vec
  br label %.lr.ph527

.lr.ph527:                                        ; preds = %.lr.ph527.preheader, %._crit_edge528
  %.2530 = phi i64 [ %247, %._crit_edge528 ], [ 1, %.lr.ph527.preheader ]
  %212 = mul nsw i64 %.2530, %41
  %invariant.gep = getelementptr double, ptr %43, i64 %212
  %brmerge = select i1 %min.iters.check, i1 true, i1 %211
  br i1 %brmerge, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %.lr.ph527, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph527 ]
  %offset.idx = or disjoint i64 %index, 1
  %213 = getelementptr double, ptr %12, i64 %index
  %214 = getelementptr inbounds i8, ptr %213, i64 16
  %wide.load = load <2 x double>, ptr %213, align 8, !tbaa !10, !alias.scope !15
  %wide.load648 = load <2 x double>, ptr %214, align 8, !tbaa !10, !alias.scope !15
  %215 = getelementptr double, ptr %invariant.gep, i64 %offset.idx
  %216 = getelementptr i8, ptr %215, i64 16
  %wide.load649 = load <2 x double>, ptr %215, align 8, !tbaa !10, !alias.scope !18, !noalias !15
  %wide.load650 = load <2 x double>, ptr %216, align 8, !tbaa !10, !alias.scope !18, !noalias !15
  %217 = fmul <2 x double> %wide.load, %wide.load649
  %218 = fmul <2 x double> %wide.load648, %wide.load650
  store <2 x double> %217, ptr %215, align 8, !tbaa !10, !alias.scope !18, !noalias !15
  store <2 x double> %218, ptr %216, align 8, !tbaa !10, !alias.scope !18, !noalias !15
  %index.next = add nuw i64 %index, 4
  %219 = icmp eq i64 %index.next, %n.vec
  br i1 %219, label %middle.block, label %vector.body, !llvm.loop !20

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

scalar.ph.preheader:                              ; preds = %.lr.ph527, %middle.block
  %.0434525.ph = phi i64 [ 1, %.lr.ph527 ], [ %ind.end, %middle.block ]
  %220 = sub i64 %210, %.0434525.ph
  %221 = sub i64 %204, %.0434525.ph
  %xtraiter770 = and i64 %220, 3
  %lcmp.mod771.not = icmp eq i64 %xtraiter770, 0
  br i1 %lcmp.mod771.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %.0434525.prol = phi i64 [ %226, %scalar.ph.prol ], [ %.0434525.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %222 = getelementptr inbounds double, ptr %39, i64 %.0434525.prol
  %223 = load double, ptr %222, align 8, !tbaa !10
  %gep.prol = getelementptr double, ptr %invariant.gep, i64 %.0434525.prol
  %224 = load double, ptr %gep.prol, align 8, !tbaa !10
  %225 = fmul double %223, %224
  store double %225, ptr %gep.prol, align 8, !tbaa !10
  %226 = add nuw i64 %.0434525.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter770
  br i1 %prol.iter.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !23

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.0434525.unr = phi i64 [ %.0434525.ph, %scalar.ph.preheader ], [ %226, %scalar.ph.prol ]
  %227 = icmp ult i64 %221, 3
  br i1 %227, label %._crit_edge528, label %scalar.ph.preheader.new

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

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %.0434525 = phi i64 [ %.0434525.unr, %scalar.ph.preheader.new ], [ %246, %scalar.ph ]
  %228 = getelementptr inbounds double, ptr %39, i64 %.0434525
  %229 = load double, ptr %228, align 8, !tbaa !10
  %gep = getelementptr double, ptr %invariant.gep, i64 %.0434525
  %230 = load double, ptr %gep, align 8, !tbaa !10
  %231 = fmul double %229, %230
  store double %231, ptr %gep, align 8, !tbaa !10
  %232 = getelementptr double, ptr %12, i64 %.0434525
  %233 = load double, ptr %232, align 8, !tbaa !10
  %gep797 = getelementptr double, ptr %invariant.gep796, i64 %.0434525
  %234 = load double, ptr %gep797, align 8, !tbaa !10
  %235 = fmul double %233, %234
  store double %235, ptr %gep797, align 8, !tbaa !10
  %236 = add nuw i64 %.0434525, 2
  %237 = getelementptr inbounds double, ptr %39, i64 %236
  %238 = load double, ptr %237, align 8, !tbaa !10
  %gep.2 = getelementptr double, ptr %invariant.gep, i64 %236
  %239 = load double, ptr %gep.2, align 8, !tbaa !10
  %240 = fmul double %238, %239
  store double %240, ptr %gep.2, align 8, !tbaa !10
  %241 = add nuw i64 %.0434525, 3
  %242 = getelementptr inbounds double, ptr %39, i64 %241
  %243 = load double, ptr %242, align 8, !tbaa !10
  %gep.3 = getelementptr double, ptr %invariant.gep, i64 %241
  %244 = load double, ptr %gep.3, align 8, !tbaa !10
  %245 = fmul double %243, %244
  store double %245, ptr %gep.3, align 8, !tbaa !10
  %246 = add nuw i64 %.0434525, 4
  %exitcond608.not.3 = icmp eq i64 %241, %204
  br i1 %exitcond608.not.3, label %._crit_edge528, label %scalar.ph, !llvm.loop !25

._crit_edge528:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %247 = add nuw i64 %.2530, 1
  %exitcond609.not = icmp eq i64 %.2530, %203
  br i1 %exitcond609.not, label %..loopexit509_crit_edge, label %.lr.ph527, !llvm.loop !26

248:                                              ; preds = %200
  %.not462 = icmp eq i64 %.1426, 0
  br i1 %.not462, label %.loopexit508, label %249

249:                                              ; preds = %248
  %250 = load i64, ptr %5, align 8, !tbaa !5
  store i64 %250, ptr %25, align 8, !tbaa !5
  %.not463540 = icmp slt i64 %250, 1
  br i1 %.not463540, label %.loopexit508, label %.lr.ph543

.lr.ph543:                                        ; preds = %249
  %251 = load i64, ptr %2, align 8, !tbaa !5
  %.not464533 = icmp slt i64 %251, 1
  br i1 %.not464533, label %..loopexit508_crit_edge, label %.lr.ph536.preheader

.lr.ph536.preheader:                              ; preds = %.lr.ph543
  %252 = add nuw i64 %250, 2305843009213693951
  %253 = mul i64 %41, %252
  %254 = shl i64 %251, 3
  %255 = add i64 %253, %251
  %256 = shl i64 %255, 3
  %scevgep652 = getelementptr i8, ptr %14, i64 %256
  %scevgep653 = getelementptr i8, ptr %13, i64 %254
  %257 = add nuw i64 %251, 1
  %min.iters.check660 = icmp ult i64 %251, 4
  %bound0654 = icmp ugt ptr %scevgep653, %14
  %bound1655 = icmp ugt ptr %scevgep652, %13
  %found.conflict656 = and i1 %bound0654, %bound1655
  %.mask753 = and i64 %41, 1152921504606846976
  %stride.check657 = icmp ne i64 %.mask753, 0
  %258 = or i1 %found.conflict656, %stride.check657
  %n.vec663 = and i64 %251, 9223372036854775804
  %ind.end664 = or disjoint i64 %n.vec663, 1
  %cmp.n674 = icmp eq i64 %251, %n.vec663
  br label %.lr.ph536

.lr.ph536:                                        ; preds = %.lr.ph536.preheader, %._crit_edge537
  %.3541 = phi i64 [ %294, %._crit_edge537 ], [ 1, %.lr.ph536.preheader ]
  %259 = mul nsw i64 %.3541, %41
  %invariant.gep538 = getelementptr double, ptr %43, i64 %259
  %brmerge804 = select i1 %min.iters.check660, i1 true, i1 %258
  br i1 %brmerge804, label %scalar.ph659.preheader, label %vector.body666

vector.body666:                                   ; preds = %.lr.ph536, %vector.body666
  %index667 = phi i64 [ %index.next673, %vector.body666 ], [ 0, %.lr.ph536 ]
  %offset.idx668 = or disjoint i64 %index667, 1
  %260 = getelementptr double, ptr %13, i64 %index667
  %261 = getelementptr inbounds i8, ptr %260, i64 16
  %wide.load669 = load <2 x double>, ptr %260, align 8, !tbaa !10, !alias.scope !27
  %wide.load670 = load <2 x double>, ptr %261, align 8, !tbaa !10, !alias.scope !27
  %262 = getelementptr double, ptr %invariant.gep538, i64 %offset.idx668
  %263 = getelementptr i8, ptr %262, i64 16
  %wide.load671 = load <2 x double>, ptr %262, align 8, !tbaa !10, !alias.scope !30, !noalias !27
  %wide.load672 = load <2 x double>, ptr %263, align 8, !tbaa !10, !alias.scope !30, !noalias !27
  %264 = fmul <2 x double> %wide.load669, %wide.load671
  %265 = fmul <2 x double> %wide.load670, %wide.load672
  store <2 x double> %264, ptr %262, align 8, !tbaa !10, !alias.scope !30, !noalias !27
  store <2 x double> %265, ptr %263, align 8, !tbaa !10, !alias.scope !30, !noalias !27
  %index.next673 = add nuw i64 %index667, 4
  %266 = icmp eq i64 %index.next673, %n.vec663
  br i1 %266, label %middle.block658, label %vector.body666, !llvm.loop !32

middle.block658:                                  ; preds = %vector.body666
  br i1 %cmp.n674, label %._crit_edge537, label %scalar.ph659.preheader

scalar.ph659.preheader:                           ; preds = %.lr.ph536, %middle.block658
  %.1435534.ph = phi i64 [ 1, %.lr.ph536 ], [ %ind.end664, %middle.block658 ]
  %267 = sub i64 %257, %.1435534.ph
  %268 = sub i64 %251, %.1435534.ph
  %xtraiter772 = and i64 %267, 3
  %lcmp.mod773.not = icmp eq i64 %xtraiter772, 0
  br i1 %lcmp.mod773.not, label %scalar.ph659.prol.loopexit, label %scalar.ph659.prol

scalar.ph659.prol:                                ; preds = %scalar.ph659.preheader, %scalar.ph659.prol
  %.1435534.prol = phi i64 [ %273, %scalar.ph659.prol ], [ %.1435534.ph, %scalar.ph659.preheader ]
  %prol.iter774 = phi i64 [ %prol.iter774.next, %scalar.ph659.prol ], [ 0, %scalar.ph659.preheader ]
  %269 = getelementptr inbounds double, ptr %40, i64 %.1435534.prol
  %270 = load double, ptr %269, align 8, !tbaa !10
  %gep539.prol = getelementptr double, ptr %invariant.gep538, i64 %.1435534.prol
  %271 = load double, ptr %gep539.prol, align 8, !tbaa !10
  %272 = fmul double %270, %271
  store double %272, ptr %gep539.prol, align 8, !tbaa !10
  %273 = add nuw i64 %.1435534.prol, 1
  %prol.iter774.next = add i64 %prol.iter774, 1
  %prol.iter774.cmp.not = icmp eq i64 %prol.iter774.next, %xtraiter772
  br i1 %prol.iter774.cmp.not, label %scalar.ph659.prol.loopexit, label %scalar.ph659.prol, !llvm.loop !33

scalar.ph659.prol.loopexit:                       ; preds = %scalar.ph659.prol, %scalar.ph659.preheader
  %.1435534.unr = phi i64 [ %.1435534.ph, %scalar.ph659.preheader ], [ %273, %scalar.ph659.prol ]
  %274 = icmp ult i64 %268, 3
  br i1 %274, label %._crit_edge537, label %scalar.ph659.preheader.new

scalar.ph659.preheader.new:                       ; preds = %scalar.ph659.prol.loopexit
  %invariant.gep798 = getelementptr i8, ptr %invariant.gep538, i64 8
  br label %scalar.ph659

scalar.ph659:                                     ; preds = %scalar.ph659, %scalar.ph659.preheader.new
  %.1435534 = phi i64 [ %.1435534.unr, %scalar.ph659.preheader.new ], [ %293, %scalar.ph659 ]
  %275 = getelementptr inbounds double, ptr %40, i64 %.1435534
  %276 = load double, ptr %275, align 8, !tbaa !10
  %gep539 = getelementptr double, ptr %invariant.gep538, i64 %.1435534
  %277 = load double, ptr %gep539, align 8, !tbaa !10
  %278 = fmul double %276, %277
  store double %278, ptr %gep539, align 8, !tbaa !10
  %279 = getelementptr double, ptr %13, i64 %.1435534
  %280 = load double, ptr %279, align 8, !tbaa !10
  %gep799 = getelementptr double, ptr %invariant.gep798, i64 %.1435534
  %281 = load double, ptr %gep799, align 8, !tbaa !10
  %282 = fmul double %280, %281
  store double %282, ptr %gep799, align 8, !tbaa !10
  %283 = add nuw i64 %.1435534, 2
  %284 = getelementptr inbounds double, ptr %40, i64 %283
  %285 = load double, ptr %284, align 8, !tbaa !10
  %gep539.2 = getelementptr double, ptr %invariant.gep538, i64 %283
  %286 = load double, ptr %gep539.2, align 8, !tbaa !10
  %287 = fmul double %285, %286
  store double %287, ptr %gep539.2, align 8, !tbaa !10
  %288 = add nuw i64 %.1435534, 3
  %289 = getelementptr inbounds double, ptr %40, i64 %288
  %290 = load double, ptr %289, align 8, !tbaa !10
  %gep539.3 = getelementptr double, ptr %invariant.gep538, i64 %288
  %291 = load double, ptr %gep539.3, align 8, !tbaa !10
  %292 = fmul double %290, %291
  store double %292, ptr %gep539.3, align 8, !tbaa !10
  %293 = add nuw i64 %.1435534, 4
  %exitcond610.not.3 = icmp eq i64 %288, %251
  br i1 %exitcond610.not.3, label %._crit_edge537, label %scalar.ph659, !llvm.loop !34

._crit_edge537:                                   ; preds = %scalar.ph659.prol.loopexit, %scalar.ph659, %middle.block658
  %294 = add nuw i64 %.3541, 1
  %exitcond611.not = icmp eq i64 %.3541, %250
  br i1 %exitcond611.not, label %..loopexit508_crit_edge, label %.lr.ph536, !llvm.loop !35

..loopexit508_crit_edge:                          ; preds = %._crit_edge537, %.lr.ph543
  store i64 %251, ptr %26, align 8, !tbaa !5
  br label %.loopexit508

..loopexit509_crit_edge:                          ; preds = %._crit_edge528, %.lr.ph532
  store i64 %204, ptr %26, align 8, !tbaa !5
  br label %.loopexit508

.loopexit508:                                     ; preds = %202, %..loopexit509_crit_edge, %249, %..loopexit508_crit_edge, %248, %201
  br i1 %or.cond, label %295, label %375

295:                                              ; preds = %.loopexit508
  %296 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %296, ptr %25, align 8, !tbaa !5
  %.not467544 = icmp slt i64 %296, 1
  br i1 %.not467544, label %._crit_edge549, label %.lr.ph548.preheader

.lr.ph548.preheader:                              ; preds = %295
  %invariant.gep637 = getelementptr i8, ptr %35, i64 8
  %invariant.gep639 = getelementptr i8, ptr %38, i64 8
  br label %.lr.ph548

.lr.ph548:                                        ; preds = %.lr.ph548.preheader, %.lr.ph548
  %.4.neg546 = phi i64 [ %.4.neg, %.lr.ph548 ], [ -1, %.lr.ph548.preheader ]
  %.4545 = phi i64 [ %314, %.lr.ph548 ], [ 1, %.lr.ph548.preheader ]
  %297 = load i64, ptr %4, align 8, !tbaa !5
  %298 = sub nsw i64 %.4545, %297
  %299 = call i64 @llvm.smax.i64(i64 %298, i64 1)
  %300 = load i64, ptr %3, align 8, !tbaa !5
  %301 = add nsw i64 %300, %.4545
  %302 = load i64, ptr %2, align 8, !tbaa !5
  %. = call i64 @llvm.smin.i64(i64 %301, i64 %302)
  %reass.sub = sub i64 %., %299
  %303 = add i64 %reass.sub, 1
  store i64 %303, ptr %26, align 8, !tbaa !5
  %304 = mul nsw i64 %.4545, %33
  %gep638 = getelementptr double, ptr %invariant.gep637, i64 %297
  %305 = getelementptr double, ptr %gep638, i64 %.4.neg546
  %306 = getelementptr double, ptr %305, i64 %299
  %307 = getelementptr double, ptr %306, i64 %304
  %308 = mul nsw i64 %.4545, %36
  %gep640 = getelementptr double, ptr %invariant.gep639, i64 %.4.neg546
  %309 = getelementptr double, ptr %gep640, i64 %297
  %310 = getelementptr double, ptr %309, i64 %300
  %311 = getelementptr double, ptr %310, i64 %299
  %312 = getelementptr double, ptr %311, i64 %308
  %313 = call i32 @f2c_dcopy(ptr noundef nonnull %26, ptr noundef %307, ptr noundef nonnull @c__1, ptr noundef %312, ptr noundef nonnull @c__1) #4
  %314 = add nuw nsw i64 %.4545, 1
  %.4.neg = xor i64 %.4545, -1
  %315 = load i64, ptr %25, align 8, !tbaa !5
  %.not467.not = icmp slt i64 %.4545, %315
  br i1 %.not467.not, label %.lr.ph548, label %._crit_edge549, !llvm.loop !36

._crit_edge549:                                   ; preds = %.lr.ph548, %295
  %316 = call i32 @dgbtrf_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %23) #4
  %317 = load i64, ptr %23, align 8, !tbaa !5
  %318 = icmp sgt i64 %317, 0
  br i1 %318, label %319, label %375

319:                                              ; preds = %._crit_edge549
  %320 = load i64, ptr %4, align 8, !tbaa !5
  %321 = load i64, ptr %2, align 8, !tbaa !5
  %322 = load i64, ptr %3, align 8, !tbaa !5
  %323 = add i64 %320, 1
  %324 = add i64 %323, %322
  %325 = add i64 %320, %321
  br label %326

326:                                              ; preds = %319, %._crit_edge586
  %indvar = phi i64 [ 0, %319 ], [ %indvar.next, %._crit_edge586 ]
  %.5.neg594 = phi i64 [ -1, %319 ], [ %.5.neg, %._crit_edge586 ]
  %.5593 = phi i64 [ 1, %319 ], [ %363, %._crit_edge586 ]
  %.lcssa591592 = phi double [ 0.000000e+00, %319 ], [ %362, %._crit_edge586 ]
  %327 = sub i64 %325, %indvar
  %smin = call i64 @llvm.smin.i64(i64 %327, i64 %324)
  %328 = sub i64 %323, %indvar
  %smax = call i64 @llvm.smax.i64(i64 %328, i64 1)
  %329 = add nsw i64 %.5.neg594, 2
  %330 = add i64 %329, %320
  %331 = add nsw i64 %.5.neg594, 1
  %332 = add i64 %331, %320
  %333 = add i64 %332, %321
  %334 = call i64 @llvm.smin.i64(i64 %333, i64 %324)
  %335 = call i64 @llvm.smax.i64(i64 %330, i64 1)
  %.not479582 = icmp sgt i64 %335, %334
  br i1 %.not479582, label %._crit_edge586, label %.lr.ph585

.lr.ph585:                                        ; preds = %326
  %336 = mul nsw i64 %.5593, %33
  %invariant.gep587 = getelementptr double, ptr %35, i64 %336
  %337 = add i64 %smin, %smax
  %338 = and i64 %337, 1
  %lcmp.mod782.not.not = icmp eq i64 %338, 0
  br i1 %lcmp.mod782.not.not, label %.prol.loopexit.unr-lcssa, label %.prol.loopexit

.prol.loopexit.unr-lcssa:                         ; preds = %.lr.ph585
  %gep588.prol = getelementptr double, ptr %invariant.gep587, i64 %335
  %339 = load double, ptr %gep588.prol, align 8, !tbaa !10
  %340 = fcmp oge double %339, 0.000000e+00
  %341 = fneg double %339
  %342 = select i1 %340, double %339, double %341
  %343 = fcmp oge double %.lcssa591592, %342
  %344 = select i1 %343, double %.lcssa591592, double %342
  %345 = add nuw nsw i64 %335, 1
  br label %.prol.loopexit

.prol.loopexit:                                   ; preds = %.prol.loopexit.unr-lcssa, %.lr.ph585
  %.2436583.unr = phi i64 [ %335, %.lr.ph585 ], [ %345, %.prol.loopexit.unr-lcssa ]
  %.unr = phi double [ %.lcssa591592, %.lr.ph585 ], [ %344, %.prol.loopexit.unr-lcssa ]
  %.lcssa.unr = phi double [ poison, %.lr.ph585 ], [ %344, %.prol.loopexit.unr-lcssa ]
  %346 = icmp eq i64 %smin, %smax
  br i1 %346, label %._crit_edge586, label %.lr.ph585.new

.lr.ph585.new:                                    ; preds = %.prol.loopexit, %.lr.ph585.new
  %.2436583 = phi i64 [ %361, %.lr.ph585.new ], [ %.2436583.unr, %.prol.loopexit ]
  %347 = phi double [ %360, %.lr.ph585.new ], [ %.unr, %.prol.loopexit ]
  %gep588 = getelementptr double, ptr %invariant.gep587, i64 %.2436583
  %348 = load double, ptr %gep588, align 8, !tbaa !10
  %349 = fcmp oge double %348, 0.000000e+00
  %350 = fneg double %348
  %351 = select i1 %349, double %348, double %350
  %352 = fcmp oge double %347, %351
  %353 = select i1 %352, double %347, double %351
  %354 = add nuw nsw i64 %.2436583, 1
  %gep588.1 = getelementptr double, ptr %invariant.gep587, i64 %354
  %355 = load double, ptr %gep588.1, align 8, !tbaa !10
  %356 = fcmp oge double %355, 0.000000e+00
  %357 = fneg double %355
  %358 = select i1 %356, double %355, double %357
  %359 = fcmp oge double %353, %358
  %360 = select i1 %359, double %353, double %358
  %361 = add nuw nsw i64 %.2436583, 2
  %.not479.not.1 = icmp slt i64 %354, %334
  br i1 %.not479.not.1, label %.lr.ph585.new, label %._crit_edge586, !llvm.loop !37

._crit_edge586:                                   ; preds = %.prol.loopexit, %.lr.ph585.new, %326
  %362 = phi double [ %.lcssa591592, %326 ], [ %.lcssa.unr, %.prol.loopexit ], [ %360, %.lr.ph585.new ]
  %363 = add nuw i64 %.5593, 1
  %.5.neg = xor i64 %.5593, -1
  %exitcond618.not = icmp eq i64 %.5593, %317
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond618.not, label %364, label %326, !llvm.loop !38

364:                                              ; preds = %._crit_edge586
  %365 = add nsw i64 %317, -1
  %366 = add nsw i64 %320, %322
  store i64 %366, ptr %26, align 8, !tbaa !5
  %367 = call i64 @llvm.smin.i64(i64 %365, i64 %366)
  store i64 %367, ptr %25, align 8, !tbaa !5
  %reass.sub596 = sub i64 %366, %317
  %368 = add i64 %reass.sub596, 2
  %369 = call i64 @llvm.smax.i64(i64 %368, i64 1)
  %370 = getelementptr double, ptr %38, i64 %369
  %371 = getelementptr double, ptr %370, i64 %36
  %372 = call double @dlantb_(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str, ptr noundef nonnull %23, ptr noundef nonnull %25, ptr noundef %371, ptr noundef nonnull %9, ptr noundef %21) #4
  %373 = fcmp oeq double %372, 0.000000e+00
  %374 = fdiv double %362, %372
  %.0 = select i1 %373, double 1.000000e+00, double %374
  store double %.0, ptr %21, align 8, !tbaa !10
  store double 0.000000e+00, ptr %18, align 8, !tbaa !10
  br label %507

375:                                              ; preds = %._crit_edge549, %.loopexit508
  %.483 = select i1 %.not450, i8 73, i8 49
  store i8 %.483, ptr %28, align 1, !tbaa !9
  %376 = call double @dlangb_(ptr noundef nonnull %28, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %21) #4
  store double %376, ptr %29, align 8, !tbaa !10
  %377 = load i64, ptr %3, align 8, !tbaa !5
  %378 = load i64, ptr %4, align 8, !tbaa !5
  %379 = add nsw i64 %378, %377
  store i64 %379, ptr %25, align 8, !tbaa !5
  %380 = call double @dlantb_(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str, ptr noundef nonnull %2, ptr noundef nonnull %25, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %21) #4
  %381 = fcmp oeq double %380, 0.000000e+00
  br i1 %381, label %385, label %382

382:                                              ; preds = %375
  %383 = call double @dlangb_(ptr noundef nonnull @.str.9, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %21) #4
  %384 = fdiv double %383, %380
  br label %385

385:                                              ; preds = %375, %382
  %.1 = phi double [ %384, %382 ], [ 1.000000e+00, %375 ]
  %386 = call i32 @dgbcon_(ptr noundef nonnull %28, 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 %29, ptr noundef %18, ptr noundef %21, ptr noundef %22, ptr noundef nonnull %23) #4
  %387 = call i32 @dlacpy_(ptr noundef nonnull @.str.11, ptr noundef nonnull %2, ptr noundef nonnull %5, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %16, ptr noundef nonnull %17) #4
  %388 = call i32 @dgbtrs_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %23) #4
  %389 = call i32 @dgbrfs_(ptr noundef %1, 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 %14, ptr noundef nonnull %15, ptr noundef %16, ptr noundef nonnull %17, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef nonnull %23) #4
  br i1 %.not450, label %445, label %390

390:                                              ; preds = %385
  %.not472 = icmp eq i64 %.1426, 0
  br i1 %.not472, label %.loopexit, label %391

391:                                              ; preds = %390
  %392 = load i64, ptr %5, align 8, !tbaa !5
  %.not473557 = icmp slt i64 %392, 1
  br i1 %.not473557, label %._crit_edge561.thread, label %.lr.ph560

._crit_edge561.thread:                            ; preds = %391
  store i64 %392, ptr %25, align 8, !tbaa !5
  br label %.loopexit

.lr.ph560:                                        ; preds = %391
  %393 = load i64, ptr %2, align 8, !tbaa !5
  %.not475550 = icmp slt i64 %393, 1
  br i1 %.not475550, label %._crit_edge561.thread629, label %.lr.ph553.preheader

.lr.ph553.preheader:                              ; preds = %.lr.ph560
  %394 = add nuw i64 %392, 2305843009213693951
  %395 = mul i64 %44, %394
  %396 = shl i64 %393, 3
  %397 = add i64 %395, %393
  %398 = shl i64 %397, 3
  %scevgep676 = getelementptr i8, ptr %16, i64 %398
  %scevgep677 = getelementptr i8, ptr %13, i64 %396
  %399 = add nuw i64 %393, 1
  %min.iters.check684 = icmp ult i64 %393, 4
  %bound0678 = icmp ugt ptr %scevgep677, %16
  %bound1679 = icmp ugt ptr %scevgep676, %13
  %found.conflict680 = and i1 %bound0678, %bound1679
  %.mask754 = and i64 %44, 1152921504606846976
  %stride.check681 = icmp ne i64 %.mask754, 0
  %400 = or i1 %found.conflict680, %stride.check681
  %n.vec687 = and i64 %393, 9223372036854775804
  %ind.end688 = or disjoint i64 %n.vec687, 1
  %cmp.n698 = icmp eq i64 %393, %n.vec687
  br label %.lr.ph553

._crit_edge561.thread629:                         ; preds = %.lr.ph560
  store i64 %392, ptr %25, align 8, !tbaa !5
  br label %.lr.ph565

.lr.ph553:                                        ; preds = %.lr.ph553.preheader, %._crit_edge554
  %.6558 = phi i64 [ %436, %._crit_edge554 ], [ 1, %.lr.ph553.preheader ]
  %401 = mul nsw i64 %.6558, %44
  %invariant.gep555 = getelementptr double, ptr %46, i64 %401
  %brmerge805 = select i1 %min.iters.check684, i1 true, i1 %400
  br i1 %brmerge805, label %scalar.ph683.preheader, label %vector.body690

vector.body690:                                   ; preds = %.lr.ph553, %vector.body690
  %index691 = phi i64 [ %index.next697, %vector.body690 ], [ 0, %.lr.ph553 ]
  %offset.idx692 = or disjoint i64 %index691, 1
  %402 = getelementptr double, ptr %13, i64 %index691
  %403 = getelementptr inbounds i8, ptr %402, i64 16
  %wide.load693 = load <2 x double>, ptr %402, align 8, !tbaa !10, !alias.scope !39
  %wide.load694 = load <2 x double>, ptr %403, align 8, !tbaa !10, !alias.scope !39
  %404 = getelementptr double, ptr %invariant.gep555, i64 %offset.idx692
  %405 = getelementptr i8, ptr %404, i64 16
  %wide.load695 = load <2 x double>, ptr %404, align 8, !tbaa !10, !alias.scope !42, !noalias !39
  %wide.load696 = load <2 x double>, ptr %405, align 8, !tbaa !10, !alias.scope !42, !noalias !39
  %406 = fmul <2 x double> %wide.load693, %wide.load695
  %407 = fmul <2 x double> %wide.load694, %wide.load696
  store <2 x double> %406, ptr %404, align 8, !tbaa !10, !alias.scope !42, !noalias !39
  store <2 x double> %407, ptr %405, align 8, !tbaa !10, !alias.scope !42, !noalias !39
  %index.next697 = add nuw i64 %index691, 4
  %408 = icmp eq i64 %index.next697, %n.vec687
  br i1 %408, label %middle.block682, label %vector.body690, !llvm.loop !44

middle.block682:                                  ; preds = %vector.body690
  br i1 %cmp.n698, label %._crit_edge554, label %scalar.ph683.preheader

scalar.ph683.preheader:                           ; preds = %.lr.ph553, %middle.block682
  %.3437551.ph = phi i64 [ 1, %.lr.ph553 ], [ %ind.end688, %middle.block682 ]
  %409 = sub i64 %399, %.3437551.ph
  %410 = sub i64 %393, %.3437551.ph
  %xtraiter775 = and i64 %409, 3
  %lcmp.mod776.not = icmp eq i64 %xtraiter775, 0
  br i1 %lcmp.mod776.not, label %scalar.ph683.prol.loopexit, label %scalar.ph683.prol

scalar.ph683.prol:                                ; preds = %scalar.ph683.preheader, %scalar.ph683.prol
  %.3437551.prol = phi i64 [ %415, %scalar.ph683.prol ], [ %.3437551.ph, %scalar.ph683.preheader ]
  %prol.iter777 = phi i64 [ %prol.iter777.next, %scalar.ph683.prol ], [ 0, %scalar.ph683.preheader ]
  %411 = getelementptr inbounds double, ptr %40, i64 %.3437551.prol
  %412 = load double, ptr %411, align 8, !tbaa !10
  %gep556.prol = getelementptr double, ptr %invariant.gep555, i64 %.3437551.prol
  %413 = load double, ptr %gep556.prol, align 8, !tbaa !10
  %414 = fmul double %412, %413
  store double %414, ptr %gep556.prol, align 8, !tbaa !10
  %415 = add nuw i64 %.3437551.prol, 1
  %prol.iter777.next = add i64 %prol.iter777, 1
  %prol.iter777.cmp.not = icmp eq i64 %prol.iter777.next, %xtraiter775
  br i1 %prol.iter777.cmp.not, label %scalar.ph683.prol.loopexit, label %scalar.ph683.prol, !llvm.loop !45

scalar.ph683.prol.loopexit:                       ; preds = %scalar.ph683.prol, %scalar.ph683.preheader
  %.3437551.unr = phi i64 [ %.3437551.ph, %scalar.ph683.preheader ], [ %415, %scalar.ph683.prol ]
  %416 = icmp ult i64 %410, 3
  br i1 %416, label %._crit_edge554, label %scalar.ph683.preheader.new

scalar.ph683.preheader.new:                       ; preds = %scalar.ph683.prol.loopexit
  %invariant.gep800 = getelementptr i8, ptr %invariant.gep555, i64 8
  br label %scalar.ph683

scalar.ph683:                                     ; preds = %scalar.ph683, %scalar.ph683.preheader.new
  %.3437551 = phi i64 [ %.3437551.unr, %scalar.ph683.preheader.new ], [ %435, %scalar.ph683 ]
  %417 = getelementptr inbounds double, ptr %40, i64 %.3437551
  %418 = load double, ptr %417, align 8, !tbaa !10
  %gep556 = getelementptr double, ptr %invariant.gep555, i64 %.3437551
  %419 = load double, ptr %gep556, align 8, !tbaa !10
  %420 = fmul double %418, %419
  store double %420, ptr %gep556, align 8, !tbaa !10
  %421 = getelementptr double, ptr %13, i64 %.3437551
  %422 = load double, ptr %421, align 8, !tbaa !10
  %gep801 = getelementptr double, ptr %invariant.gep800, i64 %.3437551
  %423 = load double, ptr %gep801, align 8, !tbaa !10
  %424 = fmul double %422, %423
  store double %424, ptr %gep801, align 8, !tbaa !10
  %425 = add nuw i64 %.3437551, 2
  %426 = getelementptr inbounds double, ptr %40, i64 %425
  %427 = load double, ptr %426, align 8, !tbaa !10
  %gep556.2 = getelementptr double, ptr %invariant.gep555, i64 %425
  %428 = load double, ptr %gep556.2, align 8, !tbaa !10
  %429 = fmul double %427, %428
  store double %429, ptr %gep556.2, align 8, !tbaa !10
  %430 = add nuw i64 %.3437551, 3
  %431 = getelementptr inbounds double, ptr %40, i64 %430
  %432 = load double, ptr %431, align 8, !tbaa !10
  %gep556.3 = getelementptr double, ptr %invariant.gep555, i64 %430
  %433 = load double, ptr %gep556.3, align 8, !tbaa !10
  %434 = fmul double %432, %433
  store double %434, ptr %gep556.3, align 8, !tbaa !10
  %435 = add nuw i64 %.3437551, 4
  %exitcond612.not.3 = icmp eq i64 %430, %393
  br i1 %exitcond612.not.3, label %._crit_edge554, label %scalar.ph683, !llvm.loop !46

._crit_edge554:                                   ; preds = %scalar.ph683.prol.loopexit, %scalar.ph683, %middle.block682
  %436 = add nuw i64 %.6558, 1
  %exitcond613.not = icmp eq i64 %.6558, %392
  br i1 %exitcond613.not, label %._crit_edge561, label %.lr.ph553, !llvm.loop !47

._crit_edge561:                                   ; preds = %._crit_edge554
  store i64 %392, ptr %25, align 8, !tbaa !5
  br i1 %.not473557, label %.loopexit, label %.lr.ph565

.lr.ph565:                                        ; preds = %._crit_edge561.thread629, %._crit_edge561
  %437 = load double, ptr %30, align 8, !tbaa !10
  %min.iters.check701 = icmp eq i64 %392, 1
  br i1 %min.iters.check701, label %scalar.ph700.preheader, label %vector.ph702

vector.ph702:                                     ; preds = %.lr.ph565
  %n.vec704 = and i64 %392, 9223372036854775806
  %ind.end705 = or i64 %392, 1
  %broadcast.splatinsert = insertelement <2 x double> poison, double %437, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body707

vector.body707:                                   ; preds = %vector.body707, %vector.ph702
  %index708 = phi i64 [ 0, %vector.ph702 ], [ %index.next711, %vector.body707 ]
  %438 = getelementptr double, ptr %19, i64 %index708
  %wide.load710 = load <2 x double>, ptr %438, align 8, !tbaa !10
  %439 = fdiv <2 x double> %wide.load710, %broadcast.splat
  store <2 x double> %439, ptr %438, align 8, !tbaa !10
  %index.next711 = add nuw i64 %index708, 2
  %440 = icmp eq i64 %index.next711, %n.vec704
  br i1 %440, label %middle.block699, label %vector.body707, !llvm.loop !48

middle.block699:                                  ; preds = %vector.body707
  %cmp.n712 = icmp eq i64 %392, %n.vec704
  br i1 %cmp.n712, label %.loopexit, label %scalar.ph700.preheader

scalar.ph700.preheader:                           ; preds = %middle.block699, %.lr.ph565
  %.7563.ph = phi i64 [ 1, %.lr.ph565 ], [ %ind.end705, %middle.block699 ]
  br label %scalar.ph700

scalar.ph700:                                     ; preds = %scalar.ph700.preheader, %scalar.ph700
  %.7563 = phi i64 [ %444, %scalar.ph700 ], [ %.7563.ph, %scalar.ph700.preheader ]
  %441 = getelementptr inbounds double, ptr %47, i64 %.7563
  %442 = load double, ptr %441, align 8, !tbaa !10
  %443 = fdiv double %442, %437
  store double %443, ptr %441, align 8, !tbaa !10
  %444 = add nuw i64 %.7563, 1
  %exitcond614.not = icmp eq i64 %.7563, %392
  br i1 %exitcond614.not, label %.loopexit, label %scalar.ph700, !llvm.loop !49

445:                                              ; preds = %385
  %.not468 = icmp eq i64 %.1422, 0
  br i1 %.not468, label %.loopexit, label %446

446:                                              ; preds = %445
  %447 = load i64, ptr %5, align 8, !tbaa !5
  %.not469573 = icmp slt i64 %447, 1
  br i1 %.not469573, label %._crit_edge577.thread, label %.lr.ph576

._crit_edge577.thread:                            ; preds = %446
  store i64 %447, ptr %25, align 8, !tbaa !5
  br label %.loopexit

.lr.ph576:                                        ; preds = %446
  %448 = load i64, ptr %2, align 8, !tbaa !5
  %.not471566 = icmp slt i64 %448, 1
  br i1 %.not471566, label %._crit_edge577.thread630, label %.lr.ph569.preheader

.lr.ph569.preheader:                              ; preds = %.lr.ph576
  %449 = add nuw i64 %447, 2305843009213693951
  %450 = mul i64 %44, %449
  %451 = shl i64 %448, 3
  %452 = add i64 %450, %448
  %453 = shl i64 %452, 3
  %scevgep714 = getelementptr i8, ptr %16, i64 %453
  %scevgep715 = getelementptr i8, ptr %12, i64 %451
  %454 = add nuw i64 %448, 1
  %min.iters.check722 = icmp ult i64 %448, 4
  %bound0716 = icmp ugt ptr %scevgep715, %16
  %bound1717 = icmp ugt ptr %scevgep714, %12
  %found.conflict718 = and i1 %bound0716, %bound1717
  %.mask755 = and i64 %44, 1152921504606846976
  %stride.check719 = icmp ne i64 %.mask755, 0
  %455 = or i1 %found.conflict718, %stride.check719
  %n.vec725 = and i64 %448, 9223372036854775804
  %ind.end726 = or disjoint i64 %n.vec725, 1
  %cmp.n736 = icmp eq i64 %448, %n.vec725
  br label %.lr.ph569

._crit_edge577.thread630:                         ; preds = %.lr.ph576
  store i64 %447, ptr %25, align 8, !tbaa !5
  br label %.lr.ph581

.lr.ph569:                                        ; preds = %.lr.ph569.preheader, %._crit_edge570
  %.8574 = phi i64 [ %491, %._crit_edge570 ], [ 1, %.lr.ph569.preheader ]
  %456 = mul nsw i64 %.8574, %44
  %invariant.gep571 = getelementptr double, ptr %46, i64 %456
  %brmerge806 = select i1 %min.iters.check722, i1 true, i1 %455
  br i1 %brmerge806, label %scalar.ph721.preheader, label %vector.body728

vector.body728:                                   ; preds = %.lr.ph569, %vector.body728
  %index729 = phi i64 [ %index.next735, %vector.body728 ], [ 0, %.lr.ph569 ]
  %offset.idx730 = or disjoint i64 %index729, 1
  %457 = getelementptr double, ptr %12, i64 %index729
  %458 = getelementptr inbounds i8, ptr %457, i64 16
  %wide.load731 = load <2 x double>, ptr %457, align 8, !tbaa !10, !alias.scope !50
  %wide.load732 = load <2 x double>, ptr %458, align 8, !tbaa !10, !alias.scope !50
  %459 = getelementptr double, ptr %invariant.gep571, i64 %offset.idx730
  %460 = getelementptr i8, ptr %459, i64 16
  %wide.load733 = load <2 x double>, ptr %459, align 8, !tbaa !10, !alias.scope !53, !noalias !50
  %wide.load734 = load <2 x double>, ptr %460, align 8, !tbaa !10, !alias.scope !53, !noalias !50
  %461 = fmul <2 x double> %wide.load731, %wide.load733
  %462 = fmul <2 x double> %wide.load732, %wide.load734
  store <2 x double> %461, ptr %459, align 8, !tbaa !10, !alias.scope !53, !noalias !50
  store <2 x double> %462, ptr %460, align 8, !tbaa !10, !alias.scope !53, !noalias !50
  %index.next735 = add nuw i64 %index729, 4
  %463 = icmp eq i64 %index.next735, %n.vec725
  br i1 %463, label %middle.block720, label %vector.body728, !llvm.loop !55

middle.block720:                                  ; preds = %vector.body728
  br i1 %cmp.n736, label %._crit_edge570, label %scalar.ph721.preheader

scalar.ph721.preheader:                           ; preds = %.lr.ph569, %middle.block720
  %.4438567.ph = phi i64 [ 1, %.lr.ph569 ], [ %ind.end726, %middle.block720 ]
  %464 = sub i64 %454, %.4438567.ph
  %465 = sub i64 %448, %.4438567.ph
  %xtraiter778 = and i64 %464, 3
  %lcmp.mod779.not = icmp eq i64 %xtraiter778, 0
  br i1 %lcmp.mod779.not, label %scalar.ph721.prol.loopexit, label %scalar.ph721.prol

scalar.ph721.prol:                                ; preds = %scalar.ph721.preheader, %scalar.ph721.prol
  %.4438567.prol = phi i64 [ %470, %scalar.ph721.prol ], [ %.4438567.ph, %scalar.ph721.preheader ]
  %prol.iter780 = phi i64 [ %prol.iter780.next, %scalar.ph721.prol ], [ 0, %scalar.ph721.preheader ]
  %466 = getelementptr inbounds double, ptr %39, i64 %.4438567.prol
  %467 = load double, ptr %466, align 8, !tbaa !10
  %gep572.prol = getelementptr double, ptr %invariant.gep571, i64 %.4438567.prol
  %468 = load double, ptr %gep572.prol, align 8, !tbaa !10
  %469 = fmul double %467, %468
  store double %469, ptr %gep572.prol, align 8, !tbaa !10
  %470 = add nuw i64 %.4438567.prol, 1
  %prol.iter780.next = add i64 %prol.iter780, 1
  %prol.iter780.cmp.not = icmp eq i64 %prol.iter780.next, %xtraiter778
  br i1 %prol.iter780.cmp.not, label %scalar.ph721.prol.loopexit, label %scalar.ph721.prol, !llvm.loop !56

scalar.ph721.prol.loopexit:                       ; preds = %scalar.ph721.prol, %scalar.ph721.preheader
  %.4438567.unr = phi i64 [ %.4438567.ph, %scalar.ph721.preheader ], [ %470, %scalar.ph721.prol ]
  %471 = icmp ult i64 %465, 3
  br i1 %471, label %._crit_edge570, label %scalar.ph721.preheader.new

scalar.ph721.preheader.new:                       ; preds = %scalar.ph721.prol.loopexit
  %invariant.gep802 = getelementptr i8, ptr %invariant.gep571, i64 8
  br label %scalar.ph721

scalar.ph721:                                     ; preds = %scalar.ph721, %scalar.ph721.preheader.new
  %.4438567 = phi i64 [ %.4438567.unr, %scalar.ph721.preheader.new ], [ %490, %scalar.ph721 ]
  %472 = getelementptr inbounds double, ptr %39, i64 %.4438567
  %473 = load double, ptr %472, align 8, !tbaa !10
  %gep572 = getelementptr double, ptr %invariant.gep571, i64 %.4438567
  %474 = load double, ptr %gep572, align 8, !tbaa !10
  %475 = fmul double %473, %474
  store double %475, ptr %gep572, align 8, !tbaa !10
  %476 = getelementptr double, ptr %12, i64 %.4438567
  %477 = load double, ptr %476, align 8, !tbaa !10
  %gep803 = getelementptr double, ptr %invariant.gep802, i64 %.4438567
  %478 = load double, ptr %gep803, align 8, !tbaa !10
  %479 = fmul double %477, %478
  store double %479, ptr %gep803, align 8, !tbaa !10
  %480 = add nuw i64 %.4438567, 2
  %481 = getelementptr inbounds double, ptr %39, i64 %480
  %482 = load double, ptr %481, align 8, !tbaa !10
  %gep572.2 = getelementptr double, ptr %invariant.gep571, i64 %480
  %483 = load double, ptr %gep572.2, align 8, !tbaa !10
  %484 = fmul double %482, %483
  store double %484, ptr %gep572.2, align 8, !tbaa !10
  %485 = add nuw i64 %.4438567, 3
  %486 = getelementptr inbounds double, ptr %39, i64 %485
  %487 = load double, ptr %486, align 8, !tbaa !10
  %gep572.3 = getelementptr double, ptr %invariant.gep571, i64 %485
  %488 = load double, ptr %gep572.3, align 8, !tbaa !10
  %489 = fmul double %487, %488
  store double %489, ptr %gep572.3, align 8, !tbaa !10
  %490 = add nuw i64 %.4438567, 4
  %exitcond615.not.3 = icmp eq i64 %485, %448
  br i1 %exitcond615.not.3, label %._crit_edge570, label %scalar.ph721, !llvm.loop !57

._crit_edge570:                                   ; preds = %scalar.ph721.prol.loopexit, %scalar.ph721, %middle.block720
  %491 = add nuw i64 %.8574, 1
  %exitcond616.not = icmp eq i64 %.8574, %447
  br i1 %exitcond616.not, label %._crit_edge577, label %.lr.ph569, !llvm.loop !58

._crit_edge577:                                   ; preds = %._crit_edge570
  store i64 %447, ptr %25, align 8, !tbaa !5
  br i1 %.not469573, label %.loopexit, label %.lr.ph581

.lr.ph581:                                        ; preds = %._crit_edge577.thread630, %._crit_edge577
  %492 = load double, ptr %32, align 8, !tbaa !10
  %min.iters.check739 = icmp eq i64 %447, 1
  br i1 %min.iters.check739, label %scalar.ph738.preheader, label %vector.ph740

vector.ph740:                                     ; preds = %.lr.ph581
  %n.vec742 = and i64 %447, 9223372036854775806
  %ind.end743 = or i64 %447, 1
  %broadcast.splatinsert749 = insertelement <2 x double> poison, double %492, i64 0
  %broadcast.splat750 = shufflevector <2 x double> %broadcast.splatinsert749, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body745

vector.body745:                                   ; preds = %vector.body745, %vector.ph740
  %index746 = phi i64 [ 0, %vector.ph740 ], [ %index.next751, %vector.body745 ]
  %493 = getelementptr double, ptr %19, i64 %index746
  %wide.load748 = load <2 x double>, ptr %493, align 8, !tbaa !10
  %494 = fdiv <2 x double> %wide.load748, %broadcast.splat750
  store <2 x double> %494, ptr %493, align 8, !tbaa !10
  %index.next751 = add nuw i64 %index746, 2
  %495 = icmp eq i64 %index.next751, %n.vec742
  br i1 %495, label %middle.block737, label %vector.body745, !llvm.loop !59

middle.block737:                                  ; preds = %vector.body745
  %cmp.n752 = icmp eq i64 %447, %n.vec742
  br i1 %cmp.n752, label %.loopexit, label %scalar.ph738.preheader

scalar.ph738.preheader:                           ; preds = %middle.block737, %.lr.ph581
  %.9579.ph = phi i64 [ 1, %.lr.ph581 ], [ %ind.end743, %middle.block737 ]
  br label %scalar.ph738

scalar.ph738:                                     ; preds = %scalar.ph738.preheader, %scalar.ph738
  %.9579 = phi i64 [ %499, %scalar.ph738 ], [ %.9579.ph, %scalar.ph738.preheader ]
  %496 = getelementptr inbounds double, ptr %47, i64 %.9579
  %497 = load double, ptr %496, align 8, !tbaa !10
  %498 = fdiv double %497, %492
  store double %498, ptr %496, align 8, !tbaa !10
  %499 = add nuw i64 %.9579, 1
  %exitcond617.not = icmp eq i64 %.9579, %447
  br i1 %exitcond617.not, label %.loopexit, label %scalar.ph738, !llvm.loop !60

.loopexit:                                        ; preds = %scalar.ph700, %scalar.ph738, %middle.block699, %middle.block737, %._crit_edge577.thread, %._crit_edge561.thread, %._crit_edge561, %._crit_edge577, %445, %390
  %500 = load double, ptr %18, align 8, !tbaa !10
  %501 = call double @dlamch_(ptr noundef nonnull @.str.12) #4
  %502 = fcmp olt double %500, %501
  br i1 %502, label %503, label %506

503:                                              ; preds = %.loopexit
  %504 = load i64, ptr %2, align 8, !tbaa !5
  %505 = add nsw i64 %504, 1
  store i64 %505, ptr %23, align 8, !tbaa !5
  br label %506

506:                                              ; preds = %503, %.loopexit
  store double %.1, ptr %21, align 8, !tbaa !10
  br label %507

507:                                              ; preds = %506, %364, %.thread500
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #4
  ret i32 0
}

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"double", !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = !{!16}
!16 = distinct !{!16, !17}
!17 = distinct !{!17, !"LVerDomain"}
!18 = !{!19}
!19 = distinct !{!19, !17}
!20 = distinct !{!20, !13, !21, !22}
!21 = !{!"llvm.loop.isvectorized", i32 1}
!22 = !{!"llvm.loop.unroll.runtime.disable"}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.unroll.disable"}
!25 = distinct !{!25, !13, !21}
!26 = distinct !{!26, !13}
!27 = !{!28}
!28 = distinct !{!28, !29}
!29 = distinct !{!29, !"LVerDomain"}
!30 = !{!31}
!31 = distinct !{!31, !29}
!32 = distinct !{!32, !13, !21, !22}
!33 = distinct !{!33, !24}
!34 = distinct !{!34, !13, !21}
!35 = distinct !{!35, !13}
!36 = distinct !{!36, !13}
!37 = distinct !{!37, !13}
!38 = distinct !{!38, !13}
!39 = !{!40}
!40 = distinct !{!40, !41}
!41 = distinct !{!41, !"LVerDomain"}
!42 = !{!43}
!43 = distinct !{!43, !41}
!44 = distinct !{!44, !13, !21, !22}
!45 = distinct !{!45, !24}
!46 = distinct !{!46, !13, !21}
!47 = distinct !{!47, !13}
!48 = distinct !{!48, !13, !21, !22}
!49 = distinct !{!49, !13, !22, !21}
!50 = !{!51}
!51 = distinct !{!51, !52}
!52 = distinct !{!52, !"LVerDomain"}
!53 = !{!54}
!54 = distinct !{!54, !52}
!55 = distinct !{!55, !13, !21, !22}
!56 = distinct !{!56, !24}
!57 = distinct !{!57, !13, !21}
!58 = distinct !{!58, !13}
!59 = distinct !{!59, !13, !21, !22}
!60 = distinct !{!60, !13, !22, !21}


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