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

149:                                              ; preds = %24
  %150 = load i32, ptr %72, align 4, !tbaa !9
  %151 = icmp ne i32 %150, 0
  br i1 %151, label %152, label %154

152:                                              ; preds = %149, %24
  %153 = load ptr, ptr %36, align 8, !tbaa !5
  store i8 78, ptr %153, align 1, !tbaa !11
  store i32 0, ptr %83, align 4, !tbaa !9
  store i32 0, ptr %79, align 4, !tbaa !9
  br label %178

154:                                              ; preds = %149
  %155 = load ptr, ptr %36, align 8, !tbaa !5
  %156 = call i32 @lsame_(ptr noundef %155, ptr noundef @.str.2)
  %157 = icmp ne i32 %156, 0
  br i1 %157, label %162, label %158

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

162:                                              ; preds = %158, %154
  %163 = phi i1 [ true, %154 ], [ %161, %158 ]
  %164 = zext i1 %163 to i32
  store i32 %164, ptr %83, align 4, !tbaa !9
  %165 = load ptr, ptr %36, align 8, !tbaa !5
  %166 = call i32 @lsame_(ptr noundef %165, ptr noundef @.str.4)
  %167 = icmp ne i32 %166, 0
  br i1 %167, label %172, label %168

168:                                              ; preds = %162
  %169 = load ptr, ptr %36, align 8, !tbaa !5
  %170 = call i32 @lsame_(ptr noundef %169, ptr noundef @.str.3)
  %171 = icmp ne i32 %170, 0
  br label %172

172:                                              ; preds = %168, %162
  %173 = phi i1 [ true, %162 ], [ %171, %168 ]
  %174 = zext i1 %173 to i32
  store i32 %174, ptr %79, align 4, !tbaa !9
  %175 = call double @dlamch_(ptr noundef @.str.5)
  store double %175, ptr %82, align 8, !tbaa !12
  %176 = load double, ptr %82, align 8, !tbaa !12
  %177 = fdiv double 1.000000e+00, %176
  store double %177, ptr %77, align 8, !tbaa !12
  br label %178

178:                                              ; preds = %172, %152
  %179 = load i32, ptr %76, align 4, !tbaa !9
  %180 = icmp ne i32 %179, 0
  br i1 %180, label %190, label %181

181:                                              ; preds = %178
  %182 = load i32, ptr %72, align 4, !tbaa !9
  %183 = icmp ne i32 %182, 0
  br i1 %183, label %190, label %184

184:                                              ; preds = %181
  %185 = load ptr, ptr %25, align 8, !tbaa !5
  %186 = call i32 @lsame_(ptr noundef %185, ptr noundef @.str.6)
  %187 = icmp ne i32 %186, 0
  br i1 %187, label %190, label %188

188:                                              ; preds = %184
  %189 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -1, ptr %189, align 4, !tbaa !9
  br label %471

190:                                              ; preds = %184, %181, %178
  %191 = load i32, ptr %81, align 4, !tbaa !9
  %192 = icmp ne i32 %191, 0
  br i1 %192, label %203, label %193

193:                                              ; preds = %190
  %194 = load ptr, ptr %26, align 8, !tbaa !5
  %195 = call i32 @lsame_(ptr noundef %194, ptr noundef @.str.7)
  %196 = icmp ne i32 %195, 0
  br i1 %196, label %203, label %197

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

201:                                              ; preds = %197
  %202 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -2, ptr %202, align 4, !tbaa !9
  br label %470

203:                                              ; preds = %197, %193, %190
  %204 = load ptr, ptr %27, align 8, !tbaa !5
  %205 = load i32, ptr %204, align 4, !tbaa !9
  %206 = icmp slt i32 %205, 0
  br i1 %206, label %207, label %209

207:                                              ; preds = %203
  %208 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -3, ptr %208, align 4, !tbaa !9
  br label %469

209:                                              ; preds = %203
  %210 = load ptr, ptr %28, align 8, !tbaa !5
  %211 = load i32, ptr %210, align 4, !tbaa !9
  %212 = icmp slt i32 %211, 0
  br i1 %212, label %213, label %215

213:                                              ; preds = %209
  %214 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -4, ptr %214, align 4, !tbaa !9
  br label %468

215:                                              ; preds = %209
  %216 = load ptr, ptr %29, align 8, !tbaa !5
  %217 = load i32, ptr %216, align 4, !tbaa !9
  %218 = icmp slt i32 %217, 0
  br i1 %218, label %219, label %221

219:                                              ; preds = %215
  %220 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -5, ptr %220, align 4, !tbaa !9
  br label %467

221:                                              ; preds = %215
  %222 = load ptr, ptr %30, align 8, !tbaa !5
  %223 = load i32, ptr %222, align 4, !tbaa !9
  %224 = icmp slt i32 %223, 0
  br i1 %224, label %225, label %227

225:                                              ; preds = %221
  %226 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -6, ptr %226, align 4, !tbaa !9
  br label %466

227:                                              ; preds = %221
  %228 = load ptr, ptr %32, align 8, !tbaa !5
  %229 = load i32, ptr %228, align 4, !tbaa !9
  %230 = load ptr, ptr %28, align 8, !tbaa !5
  %231 = load i32, ptr %230, align 4, !tbaa !9
  %232 = load ptr, ptr %29, align 8, !tbaa !5
  %233 = load i32, ptr %232, align 4, !tbaa !9
  %234 = add nsw i32 %231, %233
  %235 = add nsw i32 %234, 1
  %236 = icmp slt i32 %229, %235
  br i1 %236, label %237, label %239

237:                                              ; preds = %227
  %238 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -8, ptr %238, align 4, !tbaa !9
  br label %465

239:                                              ; preds = %227
  %240 = load ptr, ptr %34, align 8, !tbaa !5
  %241 = load i32, ptr %240, align 4, !tbaa !9
  %242 = load ptr, ptr %28, align 8, !tbaa !5
  %243 = load i32, ptr %242, align 4, !tbaa !9
  %244 = shl i32 %243, 1
  %245 = load ptr, ptr %29, align 8, !tbaa !5
  %246 = load i32, ptr %245, align 4, !tbaa !9
  %247 = add nsw i32 %244, %246
  %248 = add nsw i32 %247, 1
  %249 = icmp slt i32 %241, %248
  br i1 %249, label %250, label %252

250:                                              ; preds = %239
  %251 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -10, ptr %251, align 4, !tbaa !9
  br label %464

252:                                              ; preds = %239
  %253 = load ptr, ptr %25, align 8, !tbaa !5
  %254 = call i32 @lsame_(ptr noundef %253, ptr noundef @.str.6)
  %255 = icmp ne i32 %254, 0
  br i1 %255, label %256, label %268

256:                                              ; preds = %252
  %257 = load i32, ptr %83, align 4, !tbaa !9
  %258 = icmp ne i32 %257, 0
  br i1 %258, label %268, label %259

259:                                              ; preds = %256
  %260 = load i32, ptr %79, align 4, !tbaa !9
  %261 = icmp ne i32 %260, 0
  br i1 %261, label %268, label %262

262:                                              ; preds = %259
  %263 = load ptr, ptr %36, align 8, !tbaa !5
  %264 = call i32 @lsame_(ptr noundef %263, ptr noundef @.str)
  %265 = icmp ne i32 %264, 0
  br i1 %265, label %268, label %266

266:                                              ; preds = %262
  %267 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -12, ptr %267, align 4, !tbaa !9
  br label %463

268:                                              ; preds = %262, %259, %256, %252
  %269 = load i32, ptr %83, align 4, !tbaa !9
  %270 = icmp ne i32 %269, 0
  br i1 %270, label %271, label %345

271:                                              ; preds = %268
  %272 = load double, ptr %77, align 8, !tbaa !12
  store double %272, ptr %69, align 8, !tbaa !12
  store double 0.000000e+00, ptr %70, align 8, !tbaa !12
  %273 = load ptr, ptr %27, align 8, !tbaa !5
  %274 = load i32, ptr %273, align 4, !tbaa !9
  store i32 %274, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %275

275:                                              ; preds = %310, %271
  %276 = load i32, ptr %68, align 4, !tbaa !9
  %277 = load i32, ptr %57, align 4, !tbaa !9
  %278 = icmp sle i32 %276, %277
  br i1 %278, label %279, label %313

279:                                              ; preds = %275
  %280 = load double, ptr %69, align 8, !tbaa !12
  store double %280, ptr %62, align 8, !tbaa !12
  %281 = load ptr, ptr %37, align 8, !tbaa !5
  %282 = load i32, ptr %68, align 4, !tbaa !9
  %283 = sext i32 %282 to i64
  %284 = getelementptr inbounds double, ptr %281, i64 %283
  %285 = load double, ptr %284, align 8, !tbaa !12
  store double %285, ptr %63, align 8, !tbaa !12
  %286 = load double, ptr %62, align 8, !tbaa !12
  %287 = load double, ptr %63, align 8, !tbaa !12
  %288 = fcmp ole double %286, %287
  br i1 %288, label %289, label %291

289:                                              ; preds = %279
  %290 = load double, ptr %62, align 8, !tbaa !12
  br label %293

291:                                              ; preds = %279
  %292 = load double, ptr %63, align 8, !tbaa !12
  br label %293

293:                                              ; preds = %291, %289
  %294 = phi double [ %290, %289 ], [ %292, %291 ]
  store double %294, ptr %69, align 8, !tbaa !12
  %295 = load double, ptr %70, align 8, !tbaa !12
  store double %295, ptr %62, align 8, !tbaa !12
  %296 = load ptr, ptr %37, align 8, !tbaa !5
  %297 = load i32, ptr %68, align 4, !tbaa !9
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds double, ptr %296, i64 %298
  %300 = load double, ptr %299, align 8, !tbaa !12
  store double %300, ptr %63, align 8, !tbaa !12
  %301 = load double, ptr %62, align 8, !tbaa !12
  %302 = load double, ptr %63, align 8, !tbaa !12
  %303 = fcmp oge double %301, %302
  br i1 %303, label %304, label %306

304:                                              ; preds = %293
  %305 = load double, ptr %62, align 8, !tbaa !12
  br label %308

306:                                              ; preds = %293
  %307 = load double, ptr %63, align 8, !tbaa !12
  br label %308

308:                                              ; preds = %306, %304
  %309 = phi double [ %305, %304 ], [ %307, %306 ]
  store double %309, ptr %70, align 8, !tbaa !12
  br label %310

310:                                              ; preds = %308
  %311 = load i32, ptr %68, align 4, !tbaa !9
  %312 = add nsw i32 %311, 1
  store i32 %312, ptr %68, align 4, !tbaa !9
  br label %275, !llvm.loop !14

313:                                              ; preds = %275
  %314 = load double, ptr %69, align 8, !tbaa !12
  %315 = fcmp ole double %314, 0.000000e+00
  br i1 %315, label %316, label %318

316:                                              ; preds = %313
  %317 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -13, ptr %317, align 4, !tbaa !9
  br label %344

318:                                              ; preds = %313
  %319 = load ptr, ptr %27, align 8, !tbaa !5
  %320 = load i32, ptr %319, align 4, !tbaa !9
  %321 = icmp sgt i32 %320, 0
  br i1 %321, label %322, label %342

322:                                              ; preds = %318
  %323 = load double, ptr %69, align 8, !tbaa !12
  %324 = load double, ptr %82, align 8, !tbaa !12
  %325 = fcmp oge double %323, %324
  br i1 %325, label %326, label %328

326:                                              ; preds = %322
  %327 = load double, ptr %69, align 8, !tbaa !12
  br label %330

328:                                              ; preds = %322
  %329 = load double, ptr %82, align 8, !tbaa !12
  br label %330

330:                                              ; preds = %328, %326
  %331 = phi double [ %327, %326 ], [ %329, %328 ]
  %332 = load double, ptr %70, align 8, !tbaa !12
  %333 = load double, ptr %77, align 8, !tbaa !12
  %334 = fcmp ole double %332, %333
  br i1 %334, label %335, label %337

335:                                              ; preds = %330
  %336 = load double, ptr %70, align 8, !tbaa !12
  br label %339

337:                                              ; preds = %330
  %338 = load double, ptr %77, align 8, !tbaa !12
  br label %339

339:                                              ; preds = %337, %335
  %340 = phi double [ %336, %335 ], [ %338, %337 ]
  %341 = fdiv double %331, %340
  store double %341, ptr %80, align 8, !tbaa !12
  br label %343

342:                                              ; preds = %318
  store double 1.000000e+00, ptr %80, align 8, !tbaa !12
  br label %343

343:                                              ; preds = %342, %339
  br label %344

344:                                              ; preds = %343, %316
  br label %345

345:                                              ; preds = %344, %268
  %346 = load i32, ptr %79, align 4, !tbaa !9
  %347 = icmp ne i32 %346, 0
  br i1 %347, label %348, label %426

348:                                              ; preds = %345
  %349 = load ptr, ptr %48, align 8, !tbaa !5
  %350 = load i32, ptr %349, align 4, !tbaa !9
  %351 = icmp eq i32 %350, 0
  br i1 %351, label %352, label %426

352:                                              ; preds = %348
  %353 = load double, ptr %77, align 8, !tbaa !12
  store double %353, ptr %69, align 8, !tbaa !12
  store double 0.000000e+00, ptr %70, align 8, !tbaa !12
  %354 = load ptr, ptr %27, align 8, !tbaa !5
  %355 = load i32, ptr %354, align 4, !tbaa !9
  store i32 %355, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %356

356:                                              ; preds = %391, %352
  %357 = load i32, ptr %68, align 4, !tbaa !9
  %358 = load i32, ptr %57, align 4, !tbaa !9
  %359 = icmp sle i32 %357, %358
  br i1 %359, label %360, label %394

360:                                              ; preds = %356
  %361 = load double, ptr %69, align 8, !tbaa !12
  store double %361, ptr %62, align 8, !tbaa !12
  %362 = load ptr, ptr %38, align 8, !tbaa !5
  %363 = load i32, ptr %68, align 4, !tbaa !9
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds double, ptr %362, i64 %364
  %366 = load double, ptr %365, align 8, !tbaa !12
  store double %366, ptr %63, align 8, !tbaa !12
  %367 = load double, ptr %62, align 8, !tbaa !12
  %368 = load double, ptr %63, align 8, !tbaa !12
  %369 = fcmp ole double %367, %368
  br i1 %369, label %370, label %372

370:                                              ; preds = %360
  %371 = load double, ptr %62, align 8, !tbaa !12
  br label %374

372:                                              ; preds = %360
  %373 = load double, ptr %63, align 8, !tbaa !12
  br label %374

374:                                              ; preds = %372, %370
  %375 = phi double [ %371, %370 ], [ %373, %372 ]
  store double %375, ptr %69, align 8, !tbaa !12
  %376 = load double, ptr %70, align 8, !tbaa !12
  store double %376, ptr %62, align 8, !tbaa !12
  %377 = load ptr, ptr %38, align 8, !tbaa !5
  %378 = load i32, ptr %68, align 4, !tbaa !9
  %379 = sext i32 %378 to i64
  %380 = getelementptr inbounds double, ptr %377, i64 %379
  %381 = load double, ptr %380, align 8, !tbaa !12
  store double %381, ptr %63, align 8, !tbaa !12
  %382 = load double, ptr %62, align 8, !tbaa !12
  %383 = load double, ptr %63, align 8, !tbaa !12
  %384 = fcmp oge double %382, %383
  br i1 %384, label %385, label %387

385:                                              ; preds = %374
  %386 = load double, ptr %62, align 8, !tbaa !12
  br label %389

387:                                              ; preds = %374
  %388 = load double, ptr %63, align 8, !tbaa !12
  br label %389

389:                                              ; preds = %387, %385
  %390 = phi double [ %386, %385 ], [ %388, %387 ]
  store double %390, ptr %70, align 8, !tbaa !12
  br label %391

391:                                              ; preds = %389
  %392 = load i32, ptr %68, align 4, !tbaa !9
  %393 = add nsw i32 %392, 1
  store i32 %393, ptr %68, align 4, !tbaa !9
  br label %356, !llvm.loop !16

394:                                              ; preds = %356
  %395 = load double, ptr %69, align 8, !tbaa !12
  %396 = fcmp ole double %395, 0.000000e+00
  br i1 %396, label %397, label %399

397:                                              ; preds = %394
  %398 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -14, ptr %398, align 4, !tbaa !9
  br label %425

399:                                              ; preds = %394
  %400 = load ptr, ptr %27, align 8, !tbaa !5
  %401 = load i32, ptr %400, align 4, !tbaa !9
  %402 = icmp sgt i32 %401, 0
  br i1 %402, label %403, label %423

403:                                              ; preds = %399
  %404 = load double, ptr %69, align 8, !tbaa !12
  %405 = load double, ptr %82, align 8, !tbaa !12
  %406 = fcmp oge double %404, %405
  br i1 %406, label %407, label %409

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

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

411:                                              ; preds = %409, %407
  %412 = phi double [ %408, %407 ], [ %410, %409 ]
  %413 = load double, ptr %70, align 8, !tbaa !12
  %414 = load double, ptr %77, align 8, !tbaa !12
  %415 = fcmp ole double %413, %414
  br i1 %415, label %416, label %418

416:                                              ; preds = %411
  %417 = load double, ptr %70, align 8, !tbaa !12
  br label %420

418:                                              ; preds = %411
  %419 = load double, ptr %77, align 8, !tbaa !12
  br label %420

420:                                              ; preds = %418, %416
  %421 = phi double [ %417, %416 ], [ %419, %418 ]
  %422 = fdiv double %412, %421
  store double %422, ptr %75, align 8, !tbaa !12
  br label %424

423:                                              ; preds = %399
  store double 1.000000e+00, ptr %75, align 8, !tbaa !12
  br label %424

424:                                              ; preds = %423, %420
  br label %425

425:                                              ; preds = %424, %397
  br label %426

426:                                              ; preds = %425, %348, %345
  %427 = load ptr, ptr %48, align 8, !tbaa !5
  %428 = load i32, ptr %427, align 4, !tbaa !9
  %429 = icmp eq i32 %428, 0
  br i1 %429, label %430, label %462

430:                                              ; preds = %426
  %431 = load ptr, ptr %40, align 8, !tbaa !5
  %432 = load i32, ptr %431, align 4, !tbaa !9
  %433 = load ptr, ptr %27, align 8, !tbaa !5
  %434 = load i32, ptr %433, align 4, !tbaa !9
  %435 = icmp sge i32 1, %434
  br i1 %435, label %436, label %437

436:                                              ; preds = %430
  br label %440

437:                                              ; preds = %430
  %438 = load ptr, ptr %27, align 8, !tbaa !5
  %439 = load i32, ptr %438, align 4, !tbaa !9
  br label %440

440:                                              ; preds = %437, %436
  %441 = phi i32 [ 1, %436 ], [ %439, %437 ]
  %442 = icmp slt i32 %432, %441
  br i1 %442, label %443, label %445

443:                                              ; preds = %440
  %444 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -16, ptr %444, align 4, !tbaa !9
  br label %461

445:                                              ; preds = %440
  %446 = load ptr, ptr %42, align 8, !tbaa !5
  %447 = load i32, ptr %446, align 4, !tbaa !9
  %448 = load ptr, ptr %27, align 8, !tbaa !5
  %449 = load i32, ptr %448, align 4, !tbaa !9
  %450 = icmp sge i32 1, %449
  br i1 %450, label %451, label %452

451:                                              ; preds = %445
  br label %455

452:                                              ; preds = %445
  %453 = load ptr, ptr %27, align 8, !tbaa !5
  %454 = load i32, ptr %453, align 4, !tbaa !9
  br label %455

455:                                              ; preds = %452, %451
  %456 = phi i32 [ 1, %451 ], [ %454, %452 ]
  %457 = icmp slt i32 %447, %456
  br i1 %457, label %458, label %460

458:                                              ; preds = %455
  %459 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -18, ptr %459, align 4, !tbaa !9
  br label %460

460:                                              ; preds = %458, %455
  br label %461

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

462:                                              ; preds = %461, %426
  br label %463

463:                                              ; preds = %462, %266
  br label %464

464:                                              ; preds = %463, %250
  br label %465

465:                                              ; preds = %464, %237
  br label %466

466:                                              ; preds = %465, %225
  br label %467

467:                                              ; preds = %466, %219
  br label %468

468:                                              ; preds = %467, %213
  br label %469

469:                                              ; preds = %468, %207
  br label %470

470:                                              ; preds = %469, %201
  br label %471

471:                                              ; preds = %470, %188
  %472 = load ptr, ptr %48, align 8, !tbaa !5
  %473 = load i32, ptr %472, align 4, !tbaa !9
  %474 = icmp ne i32 %473, 0
  br i1 %474, label %475, label %480

475:                                              ; preds = %471
  %476 = load ptr, ptr %48, align 8, !tbaa !5
  %477 = load i32, ptr %476, align 4, !tbaa !9
  %478 = sub nsw i32 0, %477
  store i32 %478, ptr %57, align 4, !tbaa !9
  %479 = call i32 @xerbla_(ptr noundef @.str.8, ptr noundef %57, i32 noundef 6)
  store i32 1, ptr %85, align 4
  br label %1161

480:                                              ; preds = %471
  %481 = load i32, ptr %72, align 4, !tbaa !9
  %482 = icmp ne i32 %481, 0
  br i1 %482, label %483, label %535

483:                                              ; preds = %480
  %484 = load ptr, ptr %27, align 8, !tbaa !5
  %485 = load ptr, ptr %27, align 8, !tbaa !5
  %486 = load ptr, ptr %28, align 8, !tbaa !5
  %487 = load ptr, ptr %29, align 8, !tbaa !5
  %488 = load ptr, ptr %31, align 8, !tbaa !5
  %489 = load i32, ptr %50, align 4, !tbaa !9
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds double, ptr %488, i64 %490
  %492 = load ptr, ptr %32, align 8, !tbaa !5
  %493 = load ptr, ptr %37, align 8, !tbaa !5
  %494 = getelementptr inbounds double, ptr %493, i64 1
  %495 = load ptr, ptr %38, align 8, !tbaa !5
  %496 = getelementptr inbounds double, ptr %495, i64 1
  call void @dgbequ_(ptr noundef %484, ptr noundef %485, ptr noundef %486, ptr noundef %487, ptr noundef %491, ptr noundef %492, ptr noundef %494, ptr noundef %496, ptr noundef %80, ptr noundef %75, ptr noundef %65, ptr noundef %78)
  %497 = load i32, ptr %78, align 4, !tbaa !9
  %498 = icmp eq i32 %497, 0
  br i1 %498, label %499, label %534

499:                                              ; preds = %483
  %500 = load ptr, ptr %27, align 8, !tbaa !5
  %501 = load ptr, ptr %27, align 8, !tbaa !5
  %502 = load ptr, ptr %28, align 8, !tbaa !5
  %503 = load ptr, ptr %29, align 8, !tbaa !5
  %504 = load ptr, ptr %31, align 8, !tbaa !5
  %505 = load i32, ptr %50, align 4, !tbaa !9
  %506 = sext i32 %505 to i64
  %507 = getelementptr inbounds double, ptr %504, i64 %506
  %508 = load ptr, ptr %32, align 8, !tbaa !5
  %509 = load ptr, ptr %37, align 8, !tbaa !5
  %510 = getelementptr inbounds double, ptr %509, i64 1
  %511 = load ptr, ptr %38, align 8, !tbaa !5
  %512 = getelementptr inbounds double, ptr %511, i64 1
  %513 = load ptr, ptr %36, align 8, !tbaa !5
  call void @dlaqgb_(ptr noundef %500, ptr noundef %501, ptr noundef %502, ptr noundef %503, ptr noundef %507, ptr noundef %508, ptr noundef %510, ptr noundef %512, ptr noundef %80, ptr noundef %75, ptr noundef %65, ptr noundef %513)
  %514 = load ptr, ptr %36, align 8, !tbaa !5
  %515 = call i32 @lsame_(ptr noundef %514, ptr noundef @.str.2)
  %516 = icmp ne i32 %515, 0
  br i1 %516, label %521, label %517

517:                                              ; preds = %499
  %518 = load ptr, ptr %36, align 8, !tbaa !5
  %519 = call i32 @lsame_(ptr noundef %518, ptr noundef @.str.3)
  %520 = icmp ne i32 %519, 0
  br label %521

521:                                              ; preds = %517, %499
  %522 = phi i1 [ true, %499 ], [ %520, %517 ]
  %523 = zext i1 %522 to i32
  store i32 %523, ptr %83, align 4, !tbaa !9
  %524 = load ptr, ptr %36, align 8, !tbaa !5
  %525 = call i32 @lsame_(ptr noundef %524, ptr noundef @.str.4)
  %526 = icmp ne i32 %525, 0
  br i1 %526, label %531, label %527

527:                                              ; preds = %521
  %528 = load ptr, ptr %36, align 8, !tbaa !5
  %529 = call i32 @lsame_(ptr noundef %528, ptr noundef @.str.3)
  %530 = icmp ne i32 %529, 0
  br label %531

531:                                              ; preds = %527, %521
  %532 = phi i1 [ true, %521 ], [ %530, %527 ]
  %533 = zext i1 %532 to i32
  store i32 %533, ptr %79, align 4, !tbaa !9
  br label %534

534:                                              ; preds = %531, %483
  br label %535

535:                                              ; preds = %534, %480
  %536 = load i32, ptr %81, align 4, !tbaa !9
  %537 = icmp ne i32 %536, 0
  br i1 %537, label %538, label %588

538:                                              ; preds = %535
  %539 = load i32, ptr %83, align 4, !tbaa !9
  %540 = icmp ne i32 %539, 0
  br i1 %540, label %541, label %587

541:                                              ; preds = %538
  %542 = load ptr, ptr %30, align 8, !tbaa !5
  %543 = load i32, ptr %542, align 4, !tbaa !9
  store i32 %543, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %544

544:                                              ; preds = %583, %541
  %545 = load i32, ptr %68, align 4, !tbaa !9
  %546 = load i32, ptr %57, align 4, !tbaa !9
  %547 = icmp sle i32 %545, %546
  br i1 %547, label %548, label %586

548:                                              ; preds = %544
  %549 = load ptr, ptr %27, align 8, !tbaa !5
  %550 = load i32, ptr %549, align 4, !tbaa !9
  store i32 %550, ptr %58, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %551

551:                                              ; preds = %579, %548
  %552 = load i32, ptr %67, align 4, !tbaa !9
  %553 = load i32, ptr %58, align 4, !tbaa !9
  %554 = icmp sle i32 %552, %553
  br i1 %554, label %555, label %582

555:                                              ; preds = %551
  %556 = load ptr, ptr %37, align 8, !tbaa !5
  %557 = load i32, ptr %67, align 4, !tbaa !9
  %558 = sext i32 %557 to i64
  %559 = getelementptr inbounds double, ptr %556, i64 %558
  %560 = load double, ptr %559, align 8, !tbaa !12
  %561 = load ptr, ptr %39, align 8, !tbaa !5
  %562 = load i32, ptr %67, align 4, !tbaa !9
  %563 = load i32, ptr %68, align 4, !tbaa !9
  %564 = load i32, ptr %53, align 4, !tbaa !9
  %565 = mul nsw i32 %563, %564
  %566 = add nsw i32 %562, %565
  %567 = sext i32 %566 to i64
  %568 = getelementptr inbounds double, ptr %561, i64 %567
  %569 = load double, ptr %568, align 8, !tbaa !12
  %570 = fmul double %560, %569
  %571 = load ptr, ptr %39, align 8, !tbaa !5
  %572 = load i32, ptr %67, align 4, !tbaa !9
  %573 = load i32, ptr %68, align 4, !tbaa !9
  %574 = load i32, ptr %53, align 4, !tbaa !9
  %575 = mul nsw i32 %573, %574
  %576 = add nsw i32 %572, %575
  %577 = sext i32 %576 to i64
  %578 = getelementptr inbounds double, ptr %571, i64 %577
  store double %570, ptr %578, align 8, !tbaa !12
  br label %579

579:                                              ; preds = %555
  %580 = load i32, ptr %67, align 4, !tbaa !9
  %581 = add nsw i32 %580, 1
  store i32 %581, ptr %67, align 4, !tbaa !9
  br label %551, !llvm.loop !17

582:                                              ; preds = %551
  br label %583

583:                                              ; preds = %582
  %584 = load i32, ptr %68, align 4, !tbaa !9
  %585 = add nsw i32 %584, 1
  store i32 %585, ptr %68, align 4, !tbaa !9
  br label %544, !llvm.loop !18

586:                                              ; preds = %544
  br label %587

587:                                              ; preds = %586, %538
  br label %638

588:                                              ; preds = %535
  %589 = load i32, ptr %79, align 4, !tbaa !9
  %590 = icmp ne i32 %589, 0
  br i1 %590, label %591, label %637

591:                                              ; preds = %588
  %592 = load ptr, ptr %30, align 8, !tbaa !5
  %593 = load i32, ptr %592, align 4, !tbaa !9
  store i32 %593, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %594

594:                                              ; preds = %633, %591
  %595 = load i32, ptr %68, align 4, !tbaa !9
  %596 = load i32, ptr %57, align 4, !tbaa !9
  %597 = icmp sle i32 %595, %596
  br i1 %597, label %598, label %636

598:                                              ; preds = %594
  %599 = load ptr, ptr %27, align 8, !tbaa !5
  %600 = load i32, ptr %599, align 4, !tbaa !9
  store i32 %600, ptr %58, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %601

601:                                              ; preds = %629, %598
  %602 = load i32, ptr %67, align 4, !tbaa !9
  %603 = load i32, ptr %58, align 4, !tbaa !9
  %604 = icmp sle i32 %602, %603
  br i1 %604, label %605, label %632

605:                                              ; preds = %601
  %606 = load ptr, ptr %38, align 8, !tbaa !5
  %607 = load i32, ptr %67, align 4, !tbaa !9
  %608 = sext i32 %607 to i64
  %609 = getelementptr inbounds double, ptr %606, i64 %608
  %610 = load double, ptr %609, align 8, !tbaa !12
  %611 = load ptr, ptr %39, align 8, !tbaa !5
  %612 = load i32, ptr %67, align 4, !tbaa !9
  %613 = load i32, ptr %68, align 4, !tbaa !9
  %614 = load i32, ptr %53, align 4, !tbaa !9
  %615 = mul nsw i32 %613, %614
  %616 = add nsw i32 %612, %615
  %617 = sext i32 %616 to i64
  %618 = getelementptr inbounds double, ptr %611, i64 %617
  %619 = load double, ptr %618, align 8, !tbaa !12
  %620 = fmul double %610, %619
  %621 = load ptr, ptr %39, align 8, !tbaa !5
  %622 = load i32, ptr %67, align 4, !tbaa !9
  %623 = load i32, ptr %68, align 4, !tbaa !9
  %624 = load i32, ptr %53, align 4, !tbaa !9
  %625 = mul nsw i32 %623, %624
  %626 = add nsw i32 %622, %625
  %627 = sext i32 %626 to i64
  %628 = getelementptr inbounds double, ptr %621, i64 %627
  store double %620, ptr %628, align 8, !tbaa !12
  br label %629

629:                                              ; preds = %605
  %630 = load i32, ptr %67, align 4, !tbaa !9
  %631 = add nsw i32 %630, 1
  store i32 %631, ptr %67, align 4, !tbaa !9
  br label %601, !llvm.loop !19

632:                                              ; preds = %601
  br label %633

633:                                              ; preds = %632
  %634 = load i32, ptr %68, align 4, !tbaa !9
  %635 = add nsw i32 %634, 1
  store i32 %635, ptr %68, align 4, !tbaa !9
  br label %594, !llvm.loop !20

636:                                              ; preds = %594
  br label %637

637:                                              ; preds = %636, %588
  br label %638

638:                                              ; preds = %637, %587
  %639 = load i32, ptr %76, align 4, !tbaa !9
  %640 = icmp ne i32 %639, 0
  br i1 %640, label %644, label %641

641:                                              ; preds = %638
  %642 = load i32, ptr %72, align 4, !tbaa !9
  %643 = icmp ne i32 %642, 0
  br i1 %643, label %644, label %874

644:                                              ; preds = %641, %638
  %645 = load ptr, ptr %27, align 8, !tbaa !5
  %646 = load i32, ptr %645, align 4, !tbaa !9
  store i32 %646, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %647

647:                                              ; preds = %713, %644
  %648 = load i32, ptr %68, align 4, !tbaa !9
  %649 = load i32, ptr %57, align 4, !tbaa !9
  %650 = icmp sle i32 %648, %649
  br i1 %650, label %651, label %716

651:                                              ; preds = %647
  %652 = load i32, ptr %68, align 4, !tbaa !9
  %653 = load ptr, ptr %29, align 8, !tbaa !5
  %654 = load i32, ptr %653, align 4, !tbaa !9
  %655 = sub nsw i32 %652, %654
  store i32 %655, ptr %58, align 4, !tbaa !9
  %656 = load i32, ptr %58, align 4, !tbaa !9
  %657 = icmp sge i32 %656, 1
  br i1 %657, label %658, label %660

658:                                              ; preds = %651
  %659 = load i32, ptr %58, align 4, !tbaa !9
  br label %661

660:                                              ; preds = %651
  br label %661

661:                                              ; preds = %660, %658
  %662 = phi i32 [ %659, %658 ], [ 1, %660 ]
  store i32 %662, ptr %73, align 4, !tbaa !9
  %663 = load i32, ptr %68, align 4, !tbaa !9
  %664 = load ptr, ptr %28, align 8, !tbaa !5
  %665 = load i32, ptr %664, align 4, !tbaa !9
  %666 = add nsw i32 %663, %665
  store i32 %666, ptr %58, align 4, !tbaa !9
  %667 = load i32, ptr %58, align 4, !tbaa !9
  %668 = load ptr, ptr %27, align 8, !tbaa !5
  %669 = load i32, ptr %668, align 4, !tbaa !9
  %670 = icmp sle i32 %667, %669
  br i1 %670, label %671, label %673

671:                                              ; preds = %661
  %672 = load i32, ptr %58, align 4, !tbaa !9
  br label %676

673:                                              ; preds = %661
  %674 = load ptr, ptr %27, align 8, !tbaa !5
  %675 = load i32, ptr %674, align 4, !tbaa !9
  br label %676

676:                                              ; preds = %673, %671
  %677 = phi i32 [ %672, %671 ], [ %675, %673 ]
  store i32 %677, ptr %74, align 4, !tbaa !9
  %678 = load i32, ptr %74, align 4, !tbaa !9
  %679 = load i32, ptr %73, align 4, !tbaa !9
  %680 = sub nsw i32 %678, %679
  %681 = add nsw i32 %680, 1
  store i32 %681, ptr %58, align 4, !tbaa !9
  %682 = load ptr, ptr %31, align 8, !tbaa !5
  %683 = load ptr, ptr %29, align 8, !tbaa !5
  %684 = load i32, ptr %683, align 4, !tbaa !9
  %685 = add nsw i32 %684, 1
  %686 = load i32, ptr %68, align 4, !tbaa !9
  %687 = sub nsw i32 %685, %686
  %688 = load i32, ptr %73, align 4, !tbaa !9
  %689 = add nsw i32 %687, %688
  %690 = load i32, ptr %68, align 4, !tbaa !9
  %691 = load i32, ptr %49, align 4, !tbaa !9
  %692 = mul nsw i32 %690, %691
  %693 = add nsw i32 %689, %692
  %694 = sext i32 %693 to i64
  %695 = getelementptr inbounds double, ptr %682, i64 %694
  %696 = load ptr, ptr %33, align 8, !tbaa !5
  %697 = load ptr, ptr %28, align 8, !tbaa !5
  %698 = load i32, ptr %697, align 4, !tbaa !9
  %699 = load ptr, ptr %29, align 8, !tbaa !5
  %700 = load i32, ptr %699, align 4, !tbaa !9
  %701 = add nsw i32 %698, %700
  %702 = add nsw i32 %701, 1
  %703 = load i32, ptr %68, align 4, !tbaa !9
  %704 = sub nsw i32 %702, %703
  %705 = load i32, ptr %73, align 4, !tbaa !9
  %706 = add nsw i32 %704, %705
  %707 = load i32, ptr %68, align 4, !tbaa !9
  %708 = load i32, ptr %51, align 4, !tbaa !9
  %709 = mul nsw i32 %707, %708
  %710 = add nsw i32 %706, %709
  %711 = sext i32 %710 to i64
  %712 = getelementptr inbounds double, ptr %696, i64 %711
  call void @dcopy_(ptr noundef %58, ptr noundef %695, ptr noundef @c__1, ptr noundef %712, ptr noundef @c__1)
  br label %713

713:                                              ; preds = %676
  %714 = load i32, ptr %68, align 4, !tbaa !9
  %715 = add nsw i32 %714, 1
  store i32 %715, ptr %68, align 4, !tbaa !9
  br label %647, !llvm.loop !21

716:                                              ; preds = %647
  %717 = load ptr, ptr %27, align 8, !tbaa !5
  %718 = load ptr, ptr %27, align 8, !tbaa !5
  %719 = load ptr, ptr %28, align 8, !tbaa !5
  %720 = load ptr, ptr %29, align 8, !tbaa !5
  %721 = load ptr, ptr %33, align 8, !tbaa !5
  %722 = load i32, ptr %52, align 4, !tbaa !9
  %723 = sext i32 %722 to i64
  %724 = getelementptr inbounds double, ptr %721, i64 %723
  %725 = load ptr, ptr %34, align 8, !tbaa !5
  %726 = load ptr, ptr %35, align 8, !tbaa !5
  %727 = getelementptr inbounds i32, ptr %726, i64 1
  %728 = load ptr, ptr %48, align 8, !tbaa !5
  call void @dgbtrf_(ptr noundef %717, ptr noundef %718, ptr noundef %719, ptr noundef %720, ptr noundef %724, ptr noundef %725, ptr noundef %727, ptr noundef %728)
  %729 = load ptr, ptr %48, align 8, !tbaa !5
  %730 = load i32, ptr %729, align 4, !tbaa !9
  %731 = icmp sgt i32 %730, 0
  br i1 %731, label %732, label %873

732:                                              ; preds = %716
  store double 0.000000e+00, ptr %71, align 8, !tbaa !12
  %733 = load ptr, ptr %48, align 8, !tbaa !5
  %734 = load i32, ptr %733, align 4, !tbaa !9
  store i32 %734, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %735

735:                                              ; preds = %812, %732
  %736 = load i32, ptr %68, align 4, !tbaa !9
  %737 = load i32, ptr %57, align 4, !tbaa !9
  %738 = icmp sle i32 %736, %737
  br i1 %738, label %739, label %815

739:                                              ; preds = %735
  %740 = load ptr, ptr %29, align 8, !tbaa !5
  %741 = load i32, ptr %740, align 4, !tbaa !9
  %742 = add nsw i32 %741, 2
  %743 = load i32, ptr %68, align 4, !tbaa !9
  %744 = sub nsw i32 %742, %743
  store i32 %744, ptr %58, align 4, !tbaa !9
  %745 = load ptr, ptr %27, align 8, !tbaa !5
  %746 = load i32, ptr %745, align 4, !tbaa !9
  %747 = load ptr, ptr %29, align 8, !tbaa !5
  %748 = load i32, ptr %747, align 4, !tbaa !9
  %749 = add nsw i32 %746, %748
  %750 = add nsw i32 %749, 1
  %751 = load i32, ptr %68, align 4, !tbaa !9
  %752 = sub nsw i32 %750, %751
  store i32 %752, ptr %60, align 4, !tbaa !9
  %753 = load ptr, ptr %28, align 8, !tbaa !5
  %754 = load i32, ptr %753, align 4, !tbaa !9
  %755 = load ptr, ptr %29, align 8, !tbaa !5
  %756 = load i32, ptr %755, align 4, !tbaa !9
  %757 = add nsw i32 %754, %756
  %758 = add nsw i32 %757, 1
  store i32 %758, ptr %61, align 4, !tbaa !9
  %759 = load i32, ptr %60, align 4, !tbaa !9
  %760 = load i32, ptr %61, align 4, !tbaa !9
  %761 = icmp sle i32 %759, %760
  br i1 %761, label %762, label %764

762:                                              ; preds = %739
  %763 = load i32, ptr %60, align 4, !tbaa !9
  br label %766

764:                                              ; preds = %739
  %765 = load i32, ptr %61, align 4, !tbaa !9
  br label %766

766:                                              ; preds = %764, %762
  %767 = phi i32 [ %763, %762 ], [ %765, %764 ]
  store i32 %767, ptr %59, align 4, !tbaa !9
  %768 = load i32, ptr %58, align 4, !tbaa !9
  %769 = icmp sge i32 %768, 1
  br i1 %769, label %770, label %772

770:                                              ; preds = %766
  %771 = load i32, ptr %58, align 4, !tbaa !9
  br label %773

772:                                              ; preds = %766
  br label %773

773:                                              ; preds = %772, %770
  %774 = phi i32 [ %771, %770 ], [ 1, %772 ]
  store i32 %774, ptr %67, align 4, !tbaa !9
  br label %775

775:                                              ; preds = %808, %773
  %776 = load i32, ptr %67, align 4, !tbaa !9
  %777 = load i32, ptr %59, align 4, !tbaa !9
  %778 = icmp sle i32 %776, %777
  br i1 %778, label %779, label %811

779:                                              ; preds = %775
  %780 = load double, ptr %71, align 8, !tbaa !12
  store double %780, ptr %63, align 8, !tbaa !12
  %781 = load ptr, ptr %31, align 8, !tbaa !5
  %782 = load i32, ptr %67, align 4, !tbaa !9
  %783 = load i32, ptr %68, align 4, !tbaa !9
  %784 = load i32, ptr %49, align 4, !tbaa !9
  %785 = mul nsw i32 %783, %784
  %786 = add nsw i32 %782, %785
  %787 = sext i32 %786 to i64
  %788 = getelementptr inbounds double, ptr %781, i64 %787
  %789 = load double, ptr %788, align 8, !tbaa !12
  store double %789, ptr %62, align 8, !tbaa !12
  %790 = load double, ptr %62, align 8, !tbaa !12
  %791 = fcmp oge double %790, 0.000000e+00
  br i1 %791, label %792, label %794

792:                                              ; preds = %779
  %793 = load double, ptr %62, align 8, !tbaa !12
  br label %797

794:                                              ; preds = %779
  %795 = load double, ptr %62, align 8, !tbaa !12
  %796 = fneg double %795
  br label %797

797:                                              ; preds = %794, %792
  %798 = phi double [ %793, %792 ], [ %796, %794 ]
  store double %798, ptr %64, align 8, !tbaa !12
  %799 = load double, ptr %63, align 8, !tbaa !12
  %800 = load double, ptr %64, align 8, !tbaa !12
  %801 = fcmp oge double %799, %800
  br i1 %801, label %802, label %804

802:                                              ; preds = %797
  %803 = load double, ptr %63, align 8, !tbaa !12
  br label %806

804:                                              ; preds = %797
  %805 = load double, ptr %64, align 8, !tbaa !12
  br label %806

806:                                              ; preds = %804, %802
  %807 = phi double [ %803, %802 ], [ %805, %804 ]
  store double %807, ptr %71, align 8, !tbaa !12
  br label %808

808:                                              ; preds = %806
  %809 = load i32, ptr %67, align 4, !tbaa !9
  %810 = add nsw i32 %809, 1
  store i32 %810, ptr %67, align 4, !tbaa !9
  br label %775, !llvm.loop !22

811:                                              ; preds = %775
  br label %812

812:                                              ; preds = %811
  %813 = load i32, ptr %68, align 4, !tbaa !9
  %814 = add nsw i32 %813, 1
  store i32 %814, ptr %68, align 4, !tbaa !9
  br label %735, !llvm.loop !23

815:                                              ; preds = %735
  %816 = load ptr, ptr %48, align 8, !tbaa !5
  %817 = load i32, ptr %816, align 4, !tbaa !9
  %818 = sub nsw i32 %817, 1
  store i32 %818, ptr %59, align 4, !tbaa !9
  %819 = load ptr, ptr %28, align 8, !tbaa !5
  %820 = load i32, ptr %819, align 4, !tbaa !9
  %821 = load ptr, ptr %29, align 8, !tbaa !5
  %822 = load i32, ptr %821, align 4, !tbaa !9
  %823 = add nsw i32 %820, %822
  store i32 %823, ptr %58, align 4, !tbaa !9
  %824 = load i32, ptr %59, align 4, !tbaa !9
  %825 = load i32, ptr %58, align 4, !tbaa !9
  %826 = icmp sle i32 %824, %825
  br i1 %826, label %827, label %829

827:                                              ; preds = %815
  %828 = load i32, ptr %59, align 4, !tbaa !9
  br label %831

829:                                              ; preds = %815
  %830 = load i32, ptr %58, align 4, !tbaa !9
  br label %831

831:                                              ; preds = %829, %827
  %832 = phi i32 [ %828, %827 ], [ %830, %829 ]
  store i32 %832, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  %833 = load ptr, ptr %28, align 8, !tbaa !5
  %834 = load i32, ptr %833, align 4, !tbaa !9
  %835 = load ptr, ptr %29, align 8, !tbaa !5
  %836 = load i32, ptr %835, align 4, !tbaa !9
  %837 = add nsw i32 %834, %836
  %838 = add nsw i32 %837, 2
  %839 = load ptr, ptr %48, align 8, !tbaa !5
  %840 = load i32, ptr %839, align 4, !tbaa !9
  %841 = sub nsw i32 %838, %840
  store i32 %841, ptr %61, align 4, !tbaa !9
  %842 = load ptr, ptr %48, align 8, !tbaa !5
  %843 = load ptr, ptr %33, align 8, !tbaa !5
  %844 = load i32, ptr %60, align 4, !tbaa !9
  %845 = load i32, ptr %61, align 4, !tbaa !9
  %846 = icmp sge i32 %844, %845
  br i1 %846, label %847, label %849

847:                                              ; preds = %831
  %848 = load i32, ptr %60, align 4, !tbaa !9
  br label %851

849:                                              ; preds = %831
  %850 = load i32, ptr %61, align 4, !tbaa !9
  br label %851

851:                                              ; preds = %849, %847
  %852 = phi i32 [ %848, %847 ], [ %850, %849 ]
  %853 = load i32, ptr %51, align 4, !tbaa !9
  %854 = add nsw i32 %852, %853
  %855 = sext i32 %854 to i64
  %856 = getelementptr inbounds double, ptr %843, i64 %855
  %857 = load ptr, ptr %34, align 8, !tbaa !5
  %858 = load ptr, ptr %46, align 8, !tbaa !5
  %859 = getelementptr inbounds double, ptr %858, i64 1
  %860 = call double @dlantb_(ptr noundef @.str.9, ptr noundef @.str.10, ptr noundef @.str, ptr noundef %842, ptr noundef %57, ptr noundef %856, ptr noundef %857, ptr noundef %859)
  store double %860, ptr %84, align 8, !tbaa !12
  %861 = load double, ptr %84, align 8, !tbaa !12
  %862 = fcmp oeq double %861, 0.000000e+00
  br i1 %862, label %863, label %864

863:                                              ; preds = %851
  store double 1.000000e+00, ptr %84, align 8, !tbaa !12
  br label %868

864:                                              ; preds = %851
  %865 = load double, ptr %71, align 8, !tbaa !12
  %866 = load double, ptr %84, align 8, !tbaa !12
  %867 = fdiv double %865, %866
  store double %867, ptr %84, align 8, !tbaa !12
  br label %868

868:                                              ; preds = %864, %863
  %869 = load double, ptr %84, align 8, !tbaa !12
  %870 = load ptr, ptr %46, align 8, !tbaa !5
  %871 = getelementptr inbounds double, ptr %870, i64 1
  store double %869, ptr %871, align 8, !tbaa !12
  %872 = load ptr, ptr %43, align 8, !tbaa !5
  store double 0.000000e+00, ptr %872, align 8, !tbaa !12
  store i32 1, ptr %85, align 4
  br label %1161

873:                                              ; preds = %716
  br label %874

874:                                              ; preds = %873, %641
  %875 = load i32, ptr %81, align 4, !tbaa !9
  %876 = icmp ne i32 %875, 0
  br i1 %876, label %877, label %879

877:                                              ; preds = %874
  %878 = getelementptr inbounds [1 x i8], ptr %66, i64 0, i64 0
  store i8 49, ptr %878, align 1, !tbaa !11
  br label %881

879:                                              ; preds = %874
  %880 = getelementptr inbounds [1 x i8], ptr %66, i64 0, i64 0
  store i8 73, ptr %880, align 1, !tbaa !11
  br label %881

881:                                              ; preds = %879, %877
  %882 = getelementptr inbounds [1 x i8], ptr %66, i64 0, i64 0
  %883 = load ptr, ptr %27, align 8, !tbaa !5
  %884 = load ptr, ptr %28, align 8, !tbaa !5
  %885 = load ptr, ptr %29, align 8, !tbaa !5
  %886 = load ptr, ptr %31, align 8, !tbaa !5
  %887 = load i32, ptr %50, align 4, !tbaa !9
  %888 = sext i32 %887 to i64
  %889 = getelementptr inbounds double, ptr %886, i64 %888
  %890 = load ptr, ptr %32, align 8, !tbaa !5
  %891 = load ptr, ptr %46, align 8, !tbaa !5
  %892 = getelementptr inbounds double, ptr %891, i64 1
  %893 = call double @dlangb_(ptr noundef %882, ptr noundef %883, ptr noundef %884, ptr noundef %885, ptr noundef %889, ptr noundef %890, ptr noundef %892)
  store double %893, ptr %71, align 8, !tbaa !12
  %894 = load ptr, ptr %28, align 8, !tbaa !5
  %895 = load i32, ptr %894, align 4, !tbaa !9
  %896 = load ptr, ptr %29, align 8, !tbaa !5
  %897 = load i32, ptr %896, align 4, !tbaa !9
  %898 = add nsw i32 %895, %897
  store i32 %898, ptr %57, align 4, !tbaa !9
  %899 = load ptr, ptr %27, align 8, !tbaa !5
  %900 = load ptr, ptr %33, align 8, !tbaa !5
  %901 = load i32, ptr %52, align 4, !tbaa !9
  %902 = sext i32 %901 to i64
  %903 = getelementptr inbounds double, ptr %900, i64 %902
  %904 = load ptr, ptr %34, align 8, !tbaa !5
  %905 = load ptr, ptr %46, align 8, !tbaa !5
  %906 = getelementptr inbounds double, ptr %905, i64 1
  %907 = call double @dlantb_(ptr noundef @.str.9, ptr noundef @.str.10, ptr noundef @.str, ptr noundef %899, ptr noundef %57, ptr noundef %903, ptr noundef %904, ptr noundef %906)
  store double %907, ptr %84, align 8, !tbaa !12
  %908 = load double, ptr %84, align 8, !tbaa !12
  %909 = fcmp oeq double %908, 0.000000e+00
  br i1 %909, label %910, label %911

910:                                              ; preds = %881
  store double 1.000000e+00, ptr %84, align 8, !tbaa !12
  br label %925

911:                                              ; preds = %881
  %912 = load ptr, ptr %27, align 8, !tbaa !5
  %913 = load ptr, ptr %28, align 8, !tbaa !5
  %914 = load ptr, ptr %29, align 8, !tbaa !5
  %915 = load ptr, ptr %31, align 8, !tbaa !5
  %916 = load i32, ptr %50, align 4, !tbaa !9
  %917 = sext i32 %916 to i64
  %918 = getelementptr inbounds double, ptr %915, i64 %917
  %919 = load ptr, ptr %32, align 8, !tbaa !5
  %920 = load ptr, ptr %46, align 8, !tbaa !5
  %921 = getelementptr inbounds double, ptr %920, i64 1
  %922 = call double @dlangb_(ptr noundef @.str.9, ptr noundef %912, ptr noundef %913, ptr noundef %914, ptr noundef %918, ptr noundef %919, ptr noundef %921)
  %923 = load double, ptr %84, align 8, !tbaa !12
  %924 = fdiv double %922, %923
  store double %924, ptr %84, align 8, !tbaa !12
  br label %925

925:                                              ; preds = %911, %910
  %926 = getelementptr inbounds [1 x i8], ptr %66, i64 0, i64 0
  %927 = load ptr, ptr %27, align 8, !tbaa !5
  %928 = load ptr, ptr %28, align 8, !tbaa !5
  %929 = load ptr, ptr %29, align 8, !tbaa !5
  %930 = load ptr, ptr %33, align 8, !tbaa !5
  %931 = load i32, ptr %52, align 4, !tbaa !9
  %932 = sext i32 %931 to i64
  %933 = getelementptr inbounds double, ptr %930, i64 %932
  %934 = load ptr, ptr %34, align 8, !tbaa !5
  %935 = load ptr, ptr %35, align 8, !tbaa !5
  %936 = getelementptr inbounds i32, ptr %935, i64 1
  %937 = load ptr, ptr %43, align 8, !tbaa !5
  %938 = load ptr, ptr %46, align 8, !tbaa !5
  %939 = getelementptr inbounds double, ptr %938, i64 1
  %940 = load ptr, ptr %47, align 8, !tbaa !5
  %941 = getelementptr inbounds i32, ptr %940, i64 1
  %942 = load ptr, ptr %48, align 8, !tbaa !5
  call void @dgbcon_(ptr noundef %926, ptr noundef %927, ptr noundef %928, ptr noundef %929, ptr noundef %933, ptr noundef %934, ptr noundef %936, ptr noundef %71, ptr noundef %937, ptr noundef %939, ptr noundef %941, ptr noundef %942)
  %943 = load ptr, ptr %27, align 8, !tbaa !5
  %944 = load ptr, ptr %30, align 8, !tbaa !5
  %945 = load ptr, ptr %39, align 8, !tbaa !5
  %946 = load i32, ptr %54, align 4, !tbaa !9
  %947 = sext i32 %946 to i64
  %948 = getelementptr inbounds double, ptr %945, i64 %947
  %949 = load ptr, ptr %40, align 8, !tbaa !5
  %950 = load ptr, ptr %41, align 8, !tbaa !5
  %951 = load i32, ptr %56, align 4, !tbaa !9
  %952 = sext i32 %951 to i64
  %953 = getelementptr inbounds double, ptr %950, i64 %952
  %954 = load ptr, ptr %42, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.11, ptr noundef %943, ptr noundef %944, ptr noundef %948, ptr noundef %949, ptr noundef %953, ptr noundef %954)
  %955 = load ptr, ptr %26, align 8, !tbaa !5
  %956 = load ptr, ptr %27, align 8, !tbaa !5
  %957 = load ptr, ptr %28, align 8, !tbaa !5
  %958 = load ptr, ptr %29, align 8, !tbaa !5
  %959 = load ptr, ptr %30, align 8, !tbaa !5
  %960 = load ptr, ptr %33, align 8, !tbaa !5
  %961 = load i32, ptr %52, align 4, !tbaa !9
  %962 = sext i32 %961 to i64
  %963 = getelementptr inbounds double, ptr %960, i64 %962
  %964 = load ptr, ptr %34, align 8, !tbaa !5
  %965 = load ptr, ptr %35, align 8, !tbaa !5
  %966 = getelementptr inbounds i32, ptr %965, i64 1
  %967 = load ptr, ptr %41, align 8, !tbaa !5
  %968 = load i32, ptr %56, align 4, !tbaa !9
  %969 = sext i32 %968 to i64
  %970 = getelementptr inbounds double, ptr %967, i64 %969
  %971 = load ptr, ptr %42, align 8, !tbaa !5
  %972 = load ptr, ptr %48, align 8, !tbaa !5
  call void @dgbtrs_(ptr noundef %955, ptr noundef %956, ptr noundef %957, ptr noundef %958, ptr noundef %959, ptr noundef %963, ptr noundef %964, ptr noundef %966, ptr noundef %970, ptr noundef %971, ptr noundef %972)
  %973 = load ptr, ptr %26, align 8, !tbaa !5
  %974 = load ptr, ptr %27, align 8, !tbaa !5
  %975 = load ptr, ptr %28, align 8, !tbaa !5
  %976 = load ptr, ptr %29, align 8, !tbaa !5
  %977 = load ptr, ptr %30, align 8, !tbaa !5
  %978 = load ptr, ptr %31, align 8, !tbaa !5
  %979 = load i32, ptr %50, align 4, !tbaa !9
  %980 = sext i32 %979 to i64
  %981 = getelementptr inbounds double, ptr %978, i64 %980
  %982 = load ptr, ptr %32, align 8, !tbaa !5
  %983 = load ptr, ptr %33, align 8, !tbaa !5
  %984 = load i32, ptr %52, align 4, !tbaa !9
  %985 = sext i32 %984 to i64
  %986 = getelementptr inbounds double, ptr %983, i64 %985
  %987 = load ptr, ptr %34, align 8, !tbaa !5
  %988 = load ptr, ptr %35, align 8, !tbaa !5
  %989 = getelementptr inbounds i32, ptr %988, i64 1
  %990 = load ptr, ptr %39, align 8, !tbaa !5
  %991 = load i32, ptr %54, align 4, !tbaa !9
  %992 = sext i32 %991 to i64
  %993 = getelementptr inbounds double, ptr %990, i64 %992
  %994 = load ptr, ptr %40, align 8, !tbaa !5
  %995 = load ptr, ptr %41, align 8, !tbaa !5
  %996 = load i32, ptr %56, align 4, !tbaa !9
  %997 = sext i32 %996 to i64
  %998 = getelementptr inbounds double, ptr %995, i64 %997
  %999 = load ptr, ptr %42, align 8, !tbaa !5
  %1000 = load ptr, ptr %44, align 8, !tbaa !5
  %1001 = getelementptr inbounds double, ptr %1000, i64 1
  %1002 = load ptr, ptr %45, align 8, !tbaa !5
  %1003 = getelementptr inbounds double, ptr %1002, i64 1
  %1004 = load ptr, ptr %46, align 8, !tbaa !5
  %1005 = getelementptr inbounds double, ptr %1004, i64 1
  %1006 = load ptr, ptr %47, align 8, !tbaa !5
  %1007 = getelementptr inbounds i32, ptr %1006, i64 1
  %1008 = load ptr, ptr %48, align 8, !tbaa !5
  call void @dgbrfs_(ptr noundef %973, ptr noundef %974, ptr noundef %975, ptr noundef %976, ptr noundef %977, ptr noundef %981, ptr noundef %982, ptr noundef %986, ptr noundef %987, ptr noundef %989, ptr noundef %993, ptr noundef %994, ptr noundef %998, ptr noundef %999, ptr noundef %1001, ptr noundef %1003, ptr noundef %1005, ptr noundef %1007, ptr noundef %1008)
  %1009 = load i32, ptr %81, align 4, !tbaa !9
  %1010 = icmp ne i32 %1009, 0
  br i1 %1010, label %1011, label %1079

1011:                                             ; preds = %925
  %1012 = load i32, ptr %79, align 4, !tbaa !9
  %1013 = icmp ne i32 %1012, 0
  br i1 %1013, label %1014, label %1078

1014:                                             ; preds = %1011
  %1015 = load ptr, ptr %30, align 8, !tbaa !5
  %1016 = load i32, ptr %1015, align 4, !tbaa !9
  store i32 %1016, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %1017

1017:                                             ; preds = %1056, %1014
  %1018 = load i32, ptr %68, align 4, !tbaa !9
  %1019 = load i32, ptr %57, align 4, !tbaa !9
  %1020 = icmp sle i32 %1018, %1019
  br i1 %1020, label %1021, label %1059

1021:                                             ; preds = %1017
  %1022 = load ptr, ptr %27, align 8, !tbaa !5
  %1023 = load i32, ptr %1022, align 4, !tbaa !9
  store i32 %1023, ptr %59, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %1024

1024:                                             ; preds = %1052, %1021
  %1025 = load i32, ptr %67, align 4, !tbaa !9
  %1026 = load i32, ptr %59, align 4, !tbaa !9
  %1027 = icmp sle i32 %1025, %1026
  br i1 %1027, label %1028, label %1055

1028:                                             ; preds = %1024
  %1029 = load ptr, ptr %38, align 8, !tbaa !5
  %1030 = load i32, ptr %67, align 4, !tbaa !9
  %1031 = sext i32 %1030 to i64
  %1032 = getelementptr inbounds double, ptr %1029, i64 %1031
  %1033 = load double, ptr %1032, align 8, !tbaa !12
  %1034 = load ptr, ptr %41, align 8, !tbaa !5
  %1035 = load i32, ptr %67, align 4, !tbaa !9
  %1036 = load i32, ptr %68, align 4, !tbaa !9
  %1037 = load i32, ptr %55, align 4, !tbaa !9
  %1038 = mul nsw i32 %1036, %1037
  %1039 = add nsw i32 %1035, %1038
  %1040 = sext i32 %1039 to i64
  %1041 = getelementptr inbounds double, ptr %1034, i64 %1040
  %1042 = load double, ptr %1041, align 8, !tbaa !12
  %1043 = fmul double %1033, %1042
  %1044 = load ptr, ptr %41, align 8, !tbaa !5
  %1045 = load i32, ptr %67, align 4, !tbaa !9
  %1046 = load i32, ptr %68, align 4, !tbaa !9
  %1047 = load i32, ptr %55, align 4, !tbaa !9
  %1048 = mul nsw i32 %1046, %1047
  %1049 = add nsw i32 %1045, %1048
  %1050 = sext i32 %1049 to i64
  %1051 = getelementptr inbounds double, ptr %1044, i64 %1050
  store double %1043, ptr %1051, align 8, !tbaa !12
  br label %1052

1052:                                             ; preds = %1028
  %1053 = load i32, ptr %67, align 4, !tbaa !9
  %1054 = add nsw i32 %1053, 1
  store i32 %1054, ptr %67, align 4, !tbaa !9
  br label %1024, !llvm.loop !24

1055:                                             ; preds = %1024
  br label %1056

1056:                                             ; preds = %1055
  %1057 = load i32, ptr %68, align 4, !tbaa !9
  %1058 = add nsw i32 %1057, 1
  store i32 %1058, ptr %68, align 4, !tbaa !9
  br label %1017, !llvm.loop !25

1059:                                             ; preds = %1017
  %1060 = load ptr, ptr %30, align 8, !tbaa !5
  %1061 = load i32, ptr %1060, align 4, !tbaa !9
  store i32 %1061, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %1062

1062:                                             ; preds = %1074, %1059
  %1063 = load i32, ptr %68, align 4, !tbaa !9
  %1064 = load i32, ptr %57, align 4, !tbaa !9
  %1065 = icmp sle i32 %1063, %1064
  br i1 %1065, label %1066, label %1077

1066:                                             ; preds = %1062
  %1067 = load double, ptr %75, align 8, !tbaa !12
  %1068 = load ptr, ptr %44, align 8, !tbaa !5
  %1069 = load i32, ptr %68, align 4, !tbaa !9
  %1070 = sext i32 %1069 to i64
  %1071 = getelementptr inbounds double, ptr %1068, i64 %1070
  %1072 = load double, ptr %1071, align 8, !tbaa !12
  %1073 = fdiv double %1072, %1067
  store double %1073, ptr %1071, align 8, !tbaa !12
  br label %1074

1074:                                             ; preds = %1066
  %1075 = load i32, ptr %68, align 4, !tbaa !9
  %1076 = add nsw i32 %1075, 1
  store i32 %1076, ptr %68, align 4, !tbaa !9
  br label %1062, !llvm.loop !26

1077:                                             ; preds = %1062
  br label %1078

1078:                                             ; preds = %1077, %1011
  br label %1147

1079:                                             ; preds = %925
  %1080 = load i32, ptr %83, align 4, !tbaa !9
  %1081 = icmp ne i32 %1080, 0
  br i1 %1081, label %1082, label %1146

1082:                                             ; preds = %1079
  %1083 = load ptr, ptr %30, align 8, !tbaa !5
  %1084 = load i32, ptr %1083, align 4, !tbaa !9
  store i32 %1084, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %1085

1085:                                             ; preds = %1124, %1082
  %1086 = load i32, ptr %68, align 4, !tbaa !9
  %1087 = load i32, ptr %57, align 4, !tbaa !9
  %1088 = icmp sle i32 %1086, %1087
  br i1 %1088, label %1089, label %1127

1089:                                             ; preds = %1085
  %1090 = load ptr, ptr %27, align 8, !tbaa !5
  %1091 = load i32, ptr %1090, align 4, !tbaa !9
  store i32 %1091, ptr %59, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %1092

1092:                                             ; preds = %1120, %1089
  %1093 = load i32, ptr %67, align 4, !tbaa !9
  %1094 = load i32, ptr %59, align 4, !tbaa !9
  %1095 = icmp sle i32 %1093, %1094
  br i1 %1095, label %1096, label %1123

1096:                                             ; preds = %1092
  %1097 = load ptr, ptr %37, align 8, !tbaa !5
  %1098 = load i32, ptr %67, align 4, !tbaa !9
  %1099 = sext i32 %1098 to i64
  %1100 = getelementptr inbounds double, ptr %1097, i64 %1099
  %1101 = load double, ptr %1100, align 8, !tbaa !12
  %1102 = load ptr, ptr %41, align 8, !tbaa !5
  %1103 = load i32, ptr %67, align 4, !tbaa !9
  %1104 = load i32, ptr %68, align 4, !tbaa !9
  %1105 = load i32, ptr %55, align 4, !tbaa !9
  %1106 = mul nsw i32 %1104, %1105
  %1107 = add nsw i32 %1103, %1106
  %1108 = sext i32 %1107 to i64
  %1109 = getelementptr inbounds double, ptr %1102, i64 %1108
  %1110 = load double, ptr %1109, align 8, !tbaa !12
  %1111 = fmul double %1101, %1110
  %1112 = load ptr, ptr %41, align 8, !tbaa !5
  %1113 = load i32, ptr %67, align 4, !tbaa !9
  %1114 = load i32, ptr %68, align 4, !tbaa !9
  %1115 = load i32, ptr %55, align 4, !tbaa !9
  %1116 = mul nsw i32 %1114, %1115
  %1117 = add nsw i32 %1113, %1116
  %1118 = sext i32 %1117 to i64
  %1119 = getelementptr inbounds double, ptr %1112, i64 %1118
  store double %1111, ptr %1119, align 8, !tbaa !12
  br label %1120

1120:                                             ; preds = %1096
  %1121 = load i32, ptr %67, align 4, !tbaa !9
  %1122 = add nsw i32 %1121, 1
  store i32 %1122, ptr %67, align 4, !tbaa !9
  br label %1092, !llvm.loop !27

1123:                                             ; preds = %1092
  br label %1124

1124:                                             ; preds = %1123
  %1125 = load i32, ptr %68, align 4, !tbaa !9
  %1126 = add nsw i32 %1125, 1
  store i32 %1126, ptr %68, align 4, !tbaa !9
  br label %1085, !llvm.loop !28

1127:                                             ; preds = %1085
  %1128 = load ptr, ptr %30, align 8, !tbaa !5
  %1129 = load i32, ptr %1128, align 4, !tbaa !9
  store i32 %1129, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %1130

1130:                                             ; preds = %1142, %1127
  %1131 = load i32, ptr %68, align 4, !tbaa !9
  %1132 = load i32, ptr %57, align 4, !tbaa !9
  %1133 = icmp sle i32 %1131, %1132
  br i1 %1133, label %1134, label %1145

1134:                                             ; preds = %1130
  %1135 = load double, ptr %80, align 8, !tbaa !12
  %1136 = load ptr, ptr %44, align 8, !tbaa !5
  %1137 = load i32, ptr %68, align 4, !tbaa !9
  %1138 = sext i32 %1137 to i64
  %1139 = getelementptr inbounds double, ptr %1136, i64 %1138
  %1140 = load double, ptr %1139, align 8, !tbaa !12
  %1141 = fdiv double %1140, %1135
  store double %1141, ptr %1139, align 8, !tbaa !12
  br label %1142

1142:                                             ; preds = %1134
  %1143 = load i32, ptr %68, align 4, !tbaa !9
  %1144 = add nsw i32 %1143, 1
  store i32 %1144, ptr %68, align 4, !tbaa !9
  br label %1130, !llvm.loop !29

1145:                                             ; preds = %1130
  br label %1146

1146:                                             ; preds = %1145, %1079
  br label %1147

1147:                                             ; preds = %1146, %1078
  %1148 = load ptr, ptr %43, align 8, !tbaa !5
  %1149 = load double, ptr %1148, align 8, !tbaa !12
  %1150 = call double @dlamch_(ptr noundef @.str.12)
  %1151 = fcmp olt double %1149, %1150
  br i1 %1151, label %1152, label %1157

1152:                                             ; preds = %1147
  %1153 = load ptr, ptr %27, align 8, !tbaa !5
  %1154 = load i32, ptr %1153, align 4, !tbaa !9
  %1155 = add nsw i32 %1154, 1
  %1156 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 %1155, ptr %1156, align 4, !tbaa !9
  br label %1157

1157:                                             ; preds = %1152, %1147
  %1158 = load double, ptr %84, align 8, !tbaa !12
  %1159 = load ptr, ptr %46, align 8, !tbaa !5
  %1160 = getelementptr inbounds double, ptr %1159, i64 1
  store double %1158, ptr %1160, align 8, !tbaa !12
  store i32 1, ptr %85, align 4
  br label %1161

1161:                                             ; preds = %1157, %868, %475
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 1, 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 4, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #3
  ret void
}

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

declare void @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 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"double", !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = distinct !{!17, !15}
!18 = distinct !{!18, !15}
!19 = distinct !{!19, !15}
!20 = distinct !{!20, !15}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15}
!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 i32, align 4
@.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 void @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 i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca double, align 8
  %28 = alloca [1 x i8], align 1
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca i32, align 4
  %32 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #4
  call void @llvm.lifetime.start.p0(i64 4, 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 4, ptr nonnull %31) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #4
  %33 = load i32, ptr %7, align 4, !tbaa !5
  %narrow = xor i32 %33, -1
  %34 = sext i32 %narrow to i64
  %35 = getelementptr inbounds double, ptr %6, i64 %34
  %36 = load i32, ptr %9, align 4, !tbaa !5
  %narrow466 = xor i32 %36, -1
  %37 = sext i32 %narrow466 to i64
  %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 i32, ptr %15, align 4, !tbaa !5
  %narrow467 = xor i32 %41, -1
  %42 = sext i32 %narrow467 to i64
  %43 = getelementptr inbounds double, ptr %14, i64 %42
  %44 = load i32, ptr %17, align 4, !tbaa !5
  %narrow468 = xor i32 %44, -1
  %45 = sext i32 %narrow468 to i64
  %46 = getelementptr inbounds double, ptr %16, i64 %45
  %47 = getelementptr inbounds i8, ptr %19, i64 -8
  store i32 0, ptr %23, align 4, !tbaa !5
  %48 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %49 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %50 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #4
  %51 = icmp ne i32 %48, 0
  %52 = icmp ne i32 %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 i32 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.2) #4
  %.not = icmp eq i32 %54, 0
  br i1 %.not, label %55, label %58

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

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

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

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

71:                                               ; preds = %.thread, %65
  %.0420494 = phi i32 [ 0, %.thread ], [ %60, %65 ]
  %.0422492 = phi double [ undef, %.thread ], [ %68, %65 ]
  %.0423491 = phi i32 [ 0, %.thread ], [ %67, %65 ]
  %.0425489 = phi double [ undef, %.thread ], [ %69, %65 ]
  %.not448 = icmp eq i32 %50, 0
  br i1 %.not448, label %72, label %76

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

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

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

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

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

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

88:                                               ; preds = %85
  %89 = load i32, ptr %7, align 4, !tbaa !5
  %90 = add nuw nsw i32 %83, %80
  %.not451 = icmp sgt i32 %89, %90
  br i1 %.not451, label %91, label %.thread501.sink.split

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

95:                                               ; preds = %91
  %96 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.6) #4
  %97 = icmp eq i32 %96, 0
  %98 = icmp ne i32 %.0420494, 0
  %or.cond5 = select i1 %97, i1 true, i1 %98
  %99 = icmp ne i32 %.0423491, 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 i32 @lsame_(ptr noundef %11, ptr noundef nonnull @.str) #4
  %.not453 = icmp eq i32 %101, 0
  br i1 %.not453, label %.thread501.sink.split, label %..thread496_crit_edge

..thread496_crit_edge:                            ; preds = %100
  %.pr.pre = load i32, ptr %23, align 4, !tbaa !5
  br label %.thread496

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

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

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

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

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

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph, %.lr.ph.preheader
  %.lcssa814.ph = phi double [ poison, %.lr.ph.preheader ], [ %116, %.lr.ph ]
  %.lcssa813.ph = phi double [ poison, %.lr.ph.preheader ], [ %118, %.lr.ph ]
  %indvars.iv.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next.1, %.lr.ph ]
  %.0426514.unr = phi double [ 0.000000e+00, %.lr.ph.preheader ], [ %118, %.lr.ph ]
  %.0428513.unr = phi double [ %.0425489, %.lr.ph.preheader ], [ %116, %.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 %indvars.iv.unr
  %120 = load double, ptr %119, align 8, !tbaa !10
  %121 = fcmp ole double %.0428513.unr, %120
  %122 = select i1 %121, double %.0428513.unr, double %120
  %123 = fcmp oge double %.0426514.unr, %120
  %124 = select i1 %123, double %.0426514.unr, double %120
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %103
  %.0428.lcssa = phi double [ %.0425489, %103 ], [ %.lcssa814.ph, %._crit_edge.loopexit.unr-lcssa ], [ %122, %.lr.ph.epil ]
  %.0426.lcssa = phi double [ 0.000000e+00, %103 ], [ %.lcssa813.ph, %._crit_edge.loopexit.unr-lcssa ], [ %124, %.lr.ph.epil ]
  %125 = fcmp ugt double %.0428.lcssa, 0.000000e+00
  br i1 %125, label %126, label %.thread501.sink.split

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

128:                                              ; preds = %126
  %129 = fcmp oge double %.0428.lcssa, %.0422492
  %130 = select i1 %129, double %.0428.lcssa, double %.0422492
  %131 = fcmp ole double %.0426.lcssa, %.0425489
  %132 = select i1 %131, double %.0426.lcssa, double %.0425489
  %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.pre667.pr = load i32, ptr %23, align 4, !tbaa !5
  br i1 %99, label %136, label %.thread496

136:                                              ; preds = %135
  %137 = icmp eq i32 %.pr.pre667.pr, 0
  br i1 %137, label %138, label %.thread501

138:                                              ; preds = %136
  %139 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %139, ptr %25, align 4, !tbaa !5
  %.not455516 = icmp slt i32 %139, 1
  br i1 %.not455516, label %._crit_edge522, label %.lr.ph521.preheader

.lr.ph521.preheader:                              ; preds = %138
  %140 = zext nneg i32 %139 to i64
  %xtraiter817 = and i64 %140, 1
  %141 = icmp eq i32 %139, 1
  br i1 %141, label %._crit_edge522.loopexit.unr-lcssa, label %.lr.ph521.preheader.new

.lr.ph521.preheader.new:                          ; preds = %.lr.ph521.preheader
  %unroll_iter821 = and i64 %140, 2147483646
  br label %.lr.ph521

.lr.ph521:                                        ; preds = %.lr.ph521, %.lr.ph521.preheader.new
  %indvars.iv601 = phi i64 [ 1, %.lr.ph521.preheader.new ], [ %indvars.iv.next602.1, %.lr.ph521 ]
  %.1427519 = phi double [ 0.000000e+00, %.lr.ph521.preheader.new ], [ %153, %.lr.ph521 ]
  %.1429518 = phi double [ %.0425489, %.lr.ph521.preheader.new ], [ %151, %.lr.ph521 ]
  %niter822 = phi i64 [ 0, %.lr.ph521.preheader.new ], [ %niter822.next.1, %.lr.ph521 ]
  %142 = getelementptr inbounds double, ptr %40, i64 %indvars.iv601
  %143 = load double, ptr %142, align 8, !tbaa !10
  %144 = fcmp ole double %.1429518, %143
  %145 = select i1 %144, double %.1429518, double %143
  %146 = fcmp oge double %.1427519, %143
  %147 = select i1 %146, double %.1427519, double %143
  %148 = getelementptr double, ptr %13, i64 %indvars.iv601
  %149 = load double, ptr %148, align 8, !tbaa !10
  %150 = fcmp ole double %145, %149
  %151 = select i1 %150, double %145, double %149
  %152 = fcmp oge double %147, %149
  %153 = select i1 %152, double %147, double %149
  %indvars.iv.next602.1 = add nuw nsw i64 %indvars.iv601, 2
  %niter822.next.1 = add i64 %niter822, 2
  %niter822.ncmp.1 = icmp eq i64 %niter822.next.1, %unroll_iter821
  br i1 %niter822.ncmp.1, label %._crit_edge522.loopexit.unr-lcssa, label %.lr.ph521, !llvm.loop !14

._crit_edge522.loopexit.unr-lcssa:                ; preds = %.lr.ph521, %.lr.ph521.preheader
  %.lcssa812.ph = phi double [ poison, %.lr.ph521.preheader ], [ %151, %.lr.ph521 ]
  %.lcssa811.ph = phi double [ poison, %.lr.ph521.preheader ], [ %153, %.lr.ph521 ]
  %indvars.iv601.unr = phi i64 [ 1, %.lr.ph521.preheader ], [ %indvars.iv.next602.1, %.lr.ph521 ]
  %.1427519.unr = phi double [ 0.000000e+00, %.lr.ph521.preheader ], [ %153, %.lr.ph521 ]
  %.1429518.unr = phi double [ %.0425489, %.lr.ph521.preheader ], [ %151, %.lr.ph521 ]
  %lcmp.mod818.not = icmp eq i64 %xtraiter817, 0
  br i1 %lcmp.mod818.not, label %._crit_edge522, label %.lr.ph521.epil

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

._crit_edge522:                                   ; preds = %.lr.ph521.epil, %._crit_edge522.loopexit.unr-lcssa, %138
  %.1429.lcssa = phi double [ %.0425489, %138 ], [ %.lcssa812.ph, %._crit_edge522.loopexit.unr-lcssa ], [ %157, %.lr.ph521.epil ]
  %.1427.lcssa = phi double [ 0.000000e+00, %138 ], [ %.lcssa811.ph, %._crit_edge522.loopexit.unr-lcssa ], [ %159, %.lr.ph521.epil ]
  %160 = fcmp ugt double %.1429.lcssa, 0.000000e+00
  br i1 %160, label %161, label %.thread501.sink.split

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

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

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

.thread496:                                       ; preds = %..thread496_crit_edge, %135
  %.pr499.pr = phi i32 [ %.pr.pre, %..thread496_crit_edge ], [ %.pr.pre667.pr, %135 ]
  %170 = icmp eq i32 %.pr499.pr, 0
  br i1 %170, label %.thread496.thread, label %.thread501

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

174:                                              ; preds = %.thread496.thread
  %175 = load i32, ptr %17, align 4, !tbaa !5
  %176 = icmp slt i32 %175, %spec.select
  br i1 %176, label %.thread501.sink.split, label %.thread497

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

.thread501:                                       ; preds = %.thread501.sink.split, %136, %.thread496
  %177 = phi i32 [ %.pr499.pr, %.thread496 ], [ %.pr.pre667.pr, %136 ], [ %.sink, %.thread501.sink.split ]
  %178 = sub nsw i32 0, %177
  store i32 %178, ptr %25, align 4, !tbaa !5
  %179 = call i32 @xerbla_(ptr noundef nonnull @.str.8, ptr noundef nonnull %25, i32 noundef 6) #4
  br label %512

.thread497:                                       ; preds = %174
  br i1 %52, label %180, label %198

180:                                              ; preds = %.thread497
  call void @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
  %181 = load i32, ptr %31, align 4, !tbaa !5
  %182 = icmp eq i32 %181, 0
  br i1 %182, label %183, label %198

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

185:                                              ; preds = %183
  %186 = call i32 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.3) #4
  %187 = icmp ne i32 %186, 0
  br label %188

188:                                              ; preds = %185, %183
  %189 = phi i1 [ true, %183 ], [ %187, %185 ]
  %190 = zext i1 %189 to i32
  %191 = call i32 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.4) #4
  %.not458 = icmp eq i32 %191, 0
  br i1 %.not458, label %192, label %195

192:                                              ; preds = %188
  %193 = call i32 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.3) #4
  %194 = icmp ne i32 %193, 0
  br label %195

195:                                              ; preds = %192, %188
  %196 = phi i1 [ true, %188 ], [ %194, %192 ]
  %197 = zext i1 %196 to i32
  br label %198

198:                                              ; preds = %180, %195, %.thread497
  %.1424 = phi i32 [ %197, %195 ], [ %.0423491, %180 ], [ %.0423491, %.thread497 ]
  %.1421 = phi i32 [ %190, %195 ], [ %.0420494, %180 ], [ %.0420494, %.thread497 ]
  br i1 %.not448, label %251, label %199

199:                                              ; preds = %198
  %.not463 = icmp eq i32 %.1421, 0
  br i1 %.not463, label %.loopexit509, label %200

200:                                              ; preds = %199
  %201 = load i32, ptr %5, align 4, !tbaa !5
  store i32 %201, ptr %25, align 4, !tbaa !5
  %.not464530 = icmp slt i32 %201, 1
  br i1 %.not464530, label %.loopexit509, label %.lr.ph533

.lr.ph533:                                        ; preds = %200
  %202 = load i32, ptr %2, align 4, !tbaa !5
  %.not482525 = icmp slt i32 %202, 1
  br i1 %.not482525, label %..loopexit510_crit_edge, label %.lr.ph528.preheader

.lr.ph528.preheader:                              ; preds = %.lr.ph533
  %203 = add nuw i32 %202, 1
  %204 = sext i32 %41 to i64
  %205 = add nuw i32 %201, 1
  %wide.trip.count614 = zext i32 %205 to i64
  %wide.trip.count609 = zext i32 %203 to i64
  %206 = shl nsw i64 %204, 3
  %207 = shl nsw i64 %42, 3
  %208 = getelementptr i8, ptr %14, i64 %206
  %209 = getelementptr i8, ptr %208, i64 %207
  %scevgep = getelementptr i8, ptr %209, i64 8
  %210 = shl nuw nsw i64 %wide.trip.count614, 3
  %211 = add nsw i64 %210, -8
  %212 = mul i64 %211, %204
  %213 = shl nuw nsw i64 %wide.trip.count609, 3
  %214 = getelementptr i8, ptr %14, i64 %212
  %215 = getelementptr i8, ptr %214, i64 %207
  %scevgep699 = getelementptr i8, ptr %215, i64 %213
  %216 = getelementptr i8, ptr %12, i64 %213
  %scevgep700 = getelementptr i8, ptr %216, i64 -8
  %217 = zext nneg i32 %202 to i64
  %218 = zext nneg i32 %202 to i64
  %min.iters.check = icmp ult i32 %202, 4
  %bound0 = icmp ult ptr %scevgep, %scevgep700
  %bound1 = icmp ugt ptr %scevgep699, %12
  %found.conflict = and i1 %bound0, %bound1
  %stride.check = icmp slt i32 %41, 0
  %219 = or i1 %found.conflict, %stride.check
  %n.vec = and i64 %217, 2147483644
  %ind.end = or disjoint i64 %n.vec, 1
  %cmp.n = icmp eq i64 %n.vec, %217
  br label %.lr.ph528

.lr.ph528:                                        ; preds = %.lr.ph528.preheader, %._crit_edge529
  %indvars.iv611 = phi i64 [ 1, %.lr.ph528.preheader ], [ %indvars.iv.next612, %._crit_edge529 ]
  %220 = mul nsw i64 %indvars.iv611, %204
  %invariant.gep = getelementptr double, ptr %43, i64 %220
  %brmerge = select i1 %min.iters.check, i1 true, i1 %219
  br i1 %brmerge, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %.lr.ph528, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph528 ]
  %offset.idx = or disjoint i64 %index, 1
  %221 = getelementptr double, ptr %12, i64 %index
  %222 = getelementptr inbounds i8, ptr %221, i64 16
  %wide.load = load <2 x double>, ptr %221, align 8, !tbaa !10, !alias.scope !15
  %wide.load701 = load <2 x double>, ptr %222, align 8, !tbaa !10, !alias.scope !15
  %223 = getelementptr double, ptr %invariant.gep, i64 %offset.idx
  %224 = getelementptr i8, ptr %223, i64 16
  %wide.load702 = load <2 x double>, ptr %223, align 8, !tbaa !10, !alias.scope !18, !noalias !15
  %wide.load703 = load <2 x double>, ptr %224, align 8, !tbaa !10, !alias.scope !18, !noalias !15
  %225 = fmul <2 x double> %wide.load, %wide.load702
  %226 = fmul <2 x double> %wide.load701, %wide.load703
  store <2 x double> %225, ptr %223, align 8, !tbaa !10, !alias.scope !18, !noalias !15
  store <2 x double> %226, ptr %224, align 8, !tbaa !10, !alias.scope !18, !noalias !15
  %index.next = add nuw i64 %index, 4
  %227 = icmp eq i64 %index.next, %n.vec
  br i1 %227, label %middle.block, label %vector.body, !llvm.loop !20

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

scalar.ph.preheader:                              ; preds = %.lr.ph528, %middle.block
  %indvars.iv606.ph = phi i64 [ 1, %.lr.ph528 ], [ %ind.end, %middle.block ]
  %228 = sub nsw i64 %wide.trip.count609, %indvars.iv606.ph
  %229 = sub nsw i64 %218, %indvars.iv606.ph
  %xtraiter823 = and i64 %228, 3
  %lcmp.mod824.not = icmp eq i64 %xtraiter823, 0
  br i1 %lcmp.mod824.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %indvars.iv606.prol = phi i64 [ %indvars.iv.next607.prol, %scalar.ph.prol ], [ %indvars.iv606.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %230 = getelementptr inbounds double, ptr %39, i64 %indvars.iv606.prol
  %231 = load double, ptr %230, align 8, !tbaa !10
  %gep.prol = getelementptr double, ptr %invariant.gep, i64 %indvars.iv606.prol
  %232 = load double, ptr %gep.prol, align 8, !tbaa !10
  %233 = fmul double %231, %232
  store double %233, ptr %gep.prol, align 8, !tbaa !10
  %indvars.iv.next607.prol = add nuw nsw i64 %indvars.iv606.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter823
  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
  %indvars.iv606.unr = phi i64 [ %indvars.iv606.ph, %scalar.ph.preheader ], [ %indvars.iv.next607.prol, %scalar.ph.prol ]
  %234 = icmp ult i64 %229, 3
  br i1 %234, label %._crit_edge529, label %scalar.ph.preheader.new

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

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %indvars.iv606 = phi i64 [ %indvars.iv606.unr, %scalar.ph.preheader.new ], [ %indvars.iv.next607.3, %scalar.ph ]
  %235 = getelementptr inbounds double, ptr %39, i64 %indvars.iv606
  %236 = load double, ptr %235, align 8, !tbaa !10
  %gep = getelementptr double, ptr %invariant.gep, i64 %indvars.iv606
  %237 = load double, ptr %gep, align 8, !tbaa !10
  %238 = fmul double %236, %237
  store double %238, ptr %gep, align 8, !tbaa !10
  %239 = getelementptr double, ptr %12, i64 %indvars.iv606
  %240 = load double, ptr %239, align 8, !tbaa !10
  %gep840 = getelementptr double, ptr %invariant.gep839, i64 %indvars.iv606
  %241 = load double, ptr %gep840, align 8, !tbaa !10
  %242 = fmul double %240, %241
  store double %242, ptr %gep840, align 8, !tbaa !10
  %indvars.iv.next607.1 = add nuw nsw i64 %indvars.iv606, 2
  %243 = getelementptr inbounds double, ptr %39, i64 %indvars.iv.next607.1
  %244 = load double, ptr %243, align 8, !tbaa !10
  %gep.2 = getelementptr double, ptr %invariant.gep, i64 %indvars.iv.next607.1
  %245 = load double, ptr %gep.2, align 8, !tbaa !10
  %246 = fmul double %244, %245
  store double %246, ptr %gep.2, align 8, !tbaa !10
  %indvars.iv.next607.2 = add nuw nsw i64 %indvars.iv606, 3
  %247 = getelementptr inbounds double, ptr %39, i64 %indvars.iv.next607.2
  %248 = load double, ptr %247, align 8, !tbaa !10
  %gep.3 = getelementptr double, ptr %invariant.gep, i64 %indvars.iv.next607.2
  %249 = load double, ptr %gep.3, align 8, !tbaa !10
  %250 = fmul double %248, %249
  store double %250, ptr %gep.3, align 8, !tbaa !10
  %indvars.iv.next607.3 = add nuw nsw i64 %indvars.iv606, 4
  %exitcond610.not.3 = icmp eq i64 %indvars.iv.next607.3, %wide.trip.count609
  br i1 %exitcond610.not.3, label %._crit_edge529, label %scalar.ph, !llvm.loop !25

._crit_edge529:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %indvars.iv.next612 = add nuw nsw i64 %indvars.iv611, 1
  %exitcond615.not = icmp eq i64 %indvars.iv.next612, %wide.trip.count614
  br i1 %exitcond615.not, label %..loopexit510_crit_edge, label %.lr.ph528, !llvm.loop !26

251:                                              ; preds = %198
  %.not460 = icmp eq i32 %.1424, 0
  br i1 %.not460, label %.loopexit509, label %252

252:                                              ; preds = %251
  %253 = load i32, ptr %5, align 4, !tbaa !5
  store i32 %253, ptr %25, align 4, !tbaa !5
  %.not461539 = icmp slt i32 %253, 1
  br i1 %.not461539, label %.loopexit509, label %.lr.ph542

.lr.ph542:                                        ; preds = %252
  %254 = load i32, ptr %2, align 4, !tbaa !5
  %.not462534 = icmp slt i32 %254, 1
  br i1 %.not462534, label %..loopexit509_crit_edge, label %.lr.ph537.preheader

.lr.ph537.preheader:                              ; preds = %.lr.ph542
  %255 = add nuw i32 %254, 1
  %256 = sext i32 %41 to i64
  %257 = add nuw i32 %253, 1
  %wide.trip.count624 = zext i32 %257 to i64
  %wide.trip.count619 = zext i32 %255 to i64
  %258 = shl nsw i64 %256, 3
  %259 = shl nsw i64 %42, 3
  %260 = getelementptr i8, ptr %14, i64 %258
  %261 = getelementptr i8, ptr %260, i64 %259
  %scevgep705 = getelementptr i8, ptr %261, i64 8
  %262 = shl nuw nsw i64 %wide.trip.count624, 3
  %263 = add nsw i64 %262, -8
  %264 = mul i64 %263, %256
  %265 = shl nuw nsw i64 %wide.trip.count619, 3
  %266 = getelementptr i8, ptr %14, i64 %264
  %267 = getelementptr i8, ptr %266, i64 %259
  %scevgep706 = getelementptr i8, ptr %267, i64 %265
  %268 = getelementptr i8, ptr %13, i64 %265
  %scevgep707 = getelementptr i8, ptr %268, i64 -8
  %269 = zext nneg i32 %254 to i64
  %270 = zext nneg i32 %254 to i64
  %min.iters.check714 = icmp ult i32 %254, 4
  %bound0708 = icmp ult ptr %scevgep705, %scevgep707
  %bound1709 = icmp ugt ptr %scevgep706, %13
  %found.conflict710 = and i1 %bound0708, %bound1709
  %stride.check711 = icmp slt i32 %41, 0
  %271 = or i1 %found.conflict710, %stride.check711
  %n.vec717 = and i64 %269, 2147483644
  %ind.end718 = or disjoint i64 %n.vec717, 1
  %cmp.n728 = icmp eq i64 %n.vec717, %269
  br label %.lr.ph537

.lr.ph537:                                        ; preds = %.lr.ph537.preheader, %._crit_edge538
  %indvars.iv621 = phi i64 [ 1, %.lr.ph537.preheader ], [ %indvars.iv.next622, %._crit_edge538 ]
  %272 = mul nsw i64 %indvars.iv621, %256
  %invariant.gep685 = getelementptr double, ptr %43, i64 %272
  %brmerge847 = select i1 %min.iters.check714, i1 true, i1 %271
  br i1 %brmerge847, label %scalar.ph713.preheader, label %vector.body720

vector.body720:                                   ; preds = %.lr.ph537, %vector.body720
  %index721 = phi i64 [ %index.next727, %vector.body720 ], [ 0, %.lr.ph537 ]
  %offset.idx722 = or disjoint i64 %index721, 1
  %273 = getelementptr double, ptr %13, i64 %index721
  %274 = getelementptr inbounds i8, ptr %273, i64 16
  %wide.load723 = load <2 x double>, ptr %273, align 8, !tbaa !10, !alias.scope !27
  %wide.load724 = load <2 x double>, ptr %274, align 8, !tbaa !10, !alias.scope !27
  %275 = getelementptr double, ptr %invariant.gep685, i64 %offset.idx722
  %276 = getelementptr i8, ptr %275, i64 16
  %wide.load725 = load <2 x double>, ptr %275, align 8, !tbaa !10, !alias.scope !30, !noalias !27
  %wide.load726 = load <2 x double>, ptr %276, align 8, !tbaa !10, !alias.scope !30, !noalias !27
  %277 = fmul <2 x double> %wide.load723, %wide.load725
  %278 = fmul <2 x double> %wide.load724, %wide.load726
  store <2 x double> %277, ptr %275, align 8, !tbaa !10, !alias.scope !30, !noalias !27
  store <2 x double> %278, ptr %276, align 8, !tbaa !10, !alias.scope !30, !noalias !27
  %index.next727 = add nuw i64 %index721, 4
  %279 = icmp eq i64 %index.next727, %n.vec717
  br i1 %279, label %middle.block712, label %vector.body720, !llvm.loop !32

middle.block712:                                  ; preds = %vector.body720
  br i1 %cmp.n728, label %._crit_edge538, label %scalar.ph713.preheader

scalar.ph713.preheader:                           ; preds = %.lr.ph537, %middle.block712
  %indvars.iv616.ph = phi i64 [ 1, %.lr.ph537 ], [ %ind.end718, %middle.block712 ]
  %280 = sub nsw i64 %wide.trip.count619, %indvars.iv616.ph
  %281 = sub nsw i64 %270, %indvars.iv616.ph
  %xtraiter825 = and i64 %280, 3
  %lcmp.mod826.not = icmp eq i64 %xtraiter825, 0
  br i1 %lcmp.mod826.not, label %scalar.ph713.prol.loopexit, label %scalar.ph713.prol

scalar.ph713.prol:                                ; preds = %scalar.ph713.preheader, %scalar.ph713.prol
  %indvars.iv616.prol = phi i64 [ %indvars.iv.next617.prol, %scalar.ph713.prol ], [ %indvars.iv616.ph, %scalar.ph713.preheader ]
  %prol.iter827 = phi i64 [ %prol.iter827.next, %scalar.ph713.prol ], [ 0, %scalar.ph713.preheader ]
  %282 = getelementptr inbounds double, ptr %40, i64 %indvars.iv616.prol
  %283 = load double, ptr %282, align 8, !tbaa !10
  %gep686.prol = getelementptr double, ptr %invariant.gep685, i64 %indvars.iv616.prol
  %284 = load double, ptr %gep686.prol, align 8, !tbaa !10
  %285 = fmul double %283, %284
  store double %285, ptr %gep686.prol, align 8, !tbaa !10
  %indvars.iv.next617.prol = add nuw nsw i64 %indvars.iv616.prol, 1
  %prol.iter827.next = add i64 %prol.iter827, 1
  %prol.iter827.cmp.not = icmp eq i64 %prol.iter827.next, %xtraiter825
  br i1 %prol.iter827.cmp.not, label %scalar.ph713.prol.loopexit, label %scalar.ph713.prol, !llvm.loop !33

scalar.ph713.prol.loopexit:                       ; preds = %scalar.ph713.prol, %scalar.ph713.preheader
  %indvars.iv616.unr = phi i64 [ %indvars.iv616.ph, %scalar.ph713.preheader ], [ %indvars.iv.next617.prol, %scalar.ph713.prol ]
  %286 = icmp ult i64 %281, 3
  br i1 %286, label %._crit_edge538, label %scalar.ph713.preheader.new

scalar.ph713.preheader.new:                       ; preds = %scalar.ph713.prol.loopexit
  %invariant.gep841 = getelementptr i8, ptr %invariant.gep685, i64 8
  br label %scalar.ph713

scalar.ph713:                                     ; preds = %scalar.ph713, %scalar.ph713.preheader.new
  %indvars.iv616 = phi i64 [ %indvars.iv616.unr, %scalar.ph713.preheader.new ], [ %indvars.iv.next617.3, %scalar.ph713 ]
  %287 = getelementptr inbounds double, ptr %40, i64 %indvars.iv616
  %288 = load double, ptr %287, align 8, !tbaa !10
  %gep686 = getelementptr double, ptr %invariant.gep685, i64 %indvars.iv616
  %289 = load double, ptr %gep686, align 8, !tbaa !10
  %290 = fmul double %288, %289
  store double %290, ptr %gep686, align 8, !tbaa !10
  %291 = getelementptr double, ptr %13, i64 %indvars.iv616
  %292 = load double, ptr %291, align 8, !tbaa !10
  %gep842 = getelementptr double, ptr %invariant.gep841, i64 %indvars.iv616
  %293 = load double, ptr %gep842, align 8, !tbaa !10
  %294 = fmul double %292, %293
  store double %294, ptr %gep842, align 8, !tbaa !10
  %indvars.iv.next617.1 = add nuw nsw i64 %indvars.iv616, 2
  %295 = getelementptr inbounds double, ptr %40, i64 %indvars.iv.next617.1
  %296 = load double, ptr %295, align 8, !tbaa !10
  %gep686.2 = getelementptr double, ptr %invariant.gep685, i64 %indvars.iv.next617.1
  %297 = load double, ptr %gep686.2, align 8, !tbaa !10
  %298 = fmul double %296, %297
  store double %298, ptr %gep686.2, align 8, !tbaa !10
  %indvars.iv.next617.2 = add nuw nsw i64 %indvars.iv616, 3
  %299 = getelementptr inbounds double, ptr %40, i64 %indvars.iv.next617.2
  %300 = load double, ptr %299, align 8, !tbaa !10
  %gep686.3 = getelementptr double, ptr %invariant.gep685, i64 %indvars.iv.next617.2
  %301 = load double, ptr %gep686.3, align 8, !tbaa !10
  %302 = fmul double %300, %301
  store double %302, ptr %gep686.3, align 8, !tbaa !10
  %indvars.iv.next617.3 = add nuw nsw i64 %indvars.iv616, 4
  %exitcond620.not.3 = icmp eq i64 %indvars.iv.next617.3, %wide.trip.count619
  br i1 %exitcond620.not.3, label %._crit_edge538, label %scalar.ph713, !llvm.loop !34

._crit_edge538:                                   ; preds = %scalar.ph713.prol.loopexit, %scalar.ph713, %middle.block712
  %indvars.iv.next622 = add nuw nsw i64 %indvars.iv621, 1
  %exitcond625.not = icmp eq i64 %indvars.iv.next622, %wide.trip.count624
  br i1 %exitcond625.not, label %..loopexit509_crit_edge, label %.lr.ph537, !llvm.loop !35

..loopexit509_crit_edge:                          ; preds = %._crit_edge538, %.lr.ph542
  store i32 %254, ptr %26, align 4, !tbaa !5
  br label %.loopexit509

..loopexit510_crit_edge:                          ; preds = %._crit_edge529, %.lr.ph533
  store i32 %202, ptr %26, align 4, !tbaa !5
  br label %.loopexit509

.loopexit509:                                     ; preds = %200, %..loopexit510_crit_edge, %252, %..loopexit509_crit_edge, %251, %199
  br i1 %or.cond, label %303, label %372

303:                                              ; preds = %.loopexit509
  %304 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %304, ptr %25, align 4, !tbaa !5
  %.not465543 = icmp slt i32 %304, 1
  br i1 %.not465543, label %._crit_edge548, label %.lr.ph547

.lr.ph547:                                        ; preds = %303, %.lr.ph547
  %.4.neg545 = phi i32 [ %.4.neg, %.lr.ph547 ], [ -1, %303 ]
  %.4544 = phi i32 [ %326, %.lr.ph547 ], [ 1, %303 ]
  %305 = load i32, ptr %4, align 4, !tbaa !5
  %306 = sub nsw i32 %.4544, %305
  %307 = call i32 @llvm.smax.i32(i32 %306, i32 1)
  %308 = load i32, ptr %3, align 4, !tbaa !5
  %309 = add nsw i32 %308, %.4544
  %310 = load i32, ptr %2, align 4, !tbaa !5
  %. = call i32 @llvm.smin.i32(i32 %309, i32 %310)
  %reass.sub = sub i32 %., %307
  %311 = add i32 %reass.sub, 1
  store i32 %311, ptr %26, align 4, !tbaa !5
  %312 = mul nsw i32 %.4544, %33
  %313 = add nsw i32 %.4.neg545, 1
  %314 = add i32 %313, %312
  %315 = add i32 %314, %305
  %316 = add i32 %315, %307
  %317 = sext i32 %316 to i64
  %318 = getelementptr inbounds double, ptr %35, i64 %317
  %319 = mul nsw i32 %.4544, %36
  %320 = add i32 %313, %319
  %321 = add i32 %320, %305
  %322 = add i32 %321, %308
  %323 = add i32 %322, %307
  %324 = sext i32 %323 to i64
  %325 = getelementptr inbounds double, ptr %38, i64 %324
  call void @dcopy_(ptr noundef nonnull %26, ptr noundef %318, ptr noundef nonnull @c__1, ptr noundef %325, ptr noundef nonnull @c__1) #4
  %326 = add nuw nsw i32 %.4544, 1
  %.4.neg = xor i32 %.4544, -1
  %327 = load i32, ptr %25, align 4, !tbaa !5
  %.not465.not = icmp slt i32 %.4544, %327
  br i1 %.not465.not, label %.lr.ph547, label %._crit_edge548, !llvm.loop !36

._crit_edge548:                                   ; preds = %.lr.ph547, %303
  call void @dgbtrf_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %23) #4
  %328 = load i32, ptr %23, align 4, !tbaa !5
  %329 = icmp sgt i32 %328, 0
  br i1 %329, label %330, label %372

330:                                              ; preds = %._crit_edge548
  %331 = load i32, ptr %4, align 4, !tbaa !5
  %332 = load i32, ptr %2, align 4, !tbaa !5
  %333 = load i32, ptr %3, align 4, !tbaa !5
  %334 = add i32 %331, 1
  %335 = add i32 %334, %333
  %336 = sext i32 %33 to i64
  %337 = add nuw i32 %328, 1
  %wide.trip.count665 = zext i32 %337 to i64
  br label %338

338:                                              ; preds = %330, %._crit_edge581
  %indvars.iv661 = phi i64 [ 1, %330 ], [ %indvars.iv.next662, %._crit_edge581 ]
  %indvars.iv656 = phi i32 [ %334, %330 ], [ %indvars.iv.next657, %._crit_edge581 ]
  %.5.neg587 = phi i32 [ -1, %330 ], [ %359, %._crit_edge581 ]
  %.lcssa584585 = phi double [ 0.000000e+00, %330 ], [ %357, %._crit_edge581 ]
  %339 = add nsw i32 %.5.neg587, 2
  %340 = add i32 %339, %331
  %341 = add nsw i32 %.5.neg587, 1
  %342 = add i32 %341, %331
  %343 = add i32 %342, %332
  %344 = call i32 @llvm.smin.i32(i32 %343, i32 %335)
  %345 = call i32 @llvm.smax.i32(i32 %340, i32 1)
  %.not480577 = icmp sgt i32 %345, %344
  br i1 %.not480577, label %._crit_edge581, label %.lr.ph580

.lr.ph580:                                        ; preds = %338
  %smax = call i32 @llvm.smax.i32(i32 %indvars.iv656, i32 1)
  %346 = zext nneg i32 %smax to i64
  %347 = mul nsw i64 %indvars.iv661, %336
  %348 = zext nneg i32 %344 to i64
  %invariant.gep691 = getelementptr double, ptr %35, i64 %347
  br label %349

349:                                              ; preds = %.lr.ph580, %349
  %indvars.iv658 = phi i64 [ %346, %.lr.ph580 ], [ %indvars.iv.next659, %349 ]
  %350 = phi double [ %.lcssa584585, %.lr.ph580 ], [ %356, %349 ]
  %gep692 = getelementptr double, ptr %invariant.gep691, i64 %indvars.iv658
  %351 = load double, ptr %gep692, align 8, !tbaa !10
  %352 = fcmp oge double %351, 0.000000e+00
  %353 = fneg double %351
  %354 = select i1 %352, double %351, double %353
  %355 = fcmp oge double %350, %354
  %356 = select i1 %355, double %350, double %354
  %indvars.iv.next659 = add nuw nsw i64 %indvars.iv658, 1
  %.not480.not = icmp ult i64 %indvars.iv658, %348
  br i1 %.not480.not, label %349, label %._crit_edge581, !llvm.loop !37

._crit_edge581:                                   ; preds = %349, %338
  %357 = phi double [ %.lcssa584585, %338 ], [ %356, %349 ]
  %indvars.iv.next662 = add nuw nsw i64 %indvars.iv661, 1
  %indvars.iv.next657 = add i32 %indvars.iv656, -1
  %358 = trunc i64 %indvars.iv661 to i32
  %359 = xor i32 %358, -1
  %exitcond666.not = icmp eq i64 %indvars.iv.next662, %wide.trip.count665
  br i1 %exitcond666.not, label %360, label %338, !llvm.loop !38

360:                                              ; preds = %._crit_edge581
  %361 = add nsw i32 %328, -1
  %362 = add nsw i32 %331, %333
  store i32 %362, ptr %26, align 4, !tbaa !5
  %363 = call i32 @llvm.smin.i32(i32 %361, i32 %362)
  store i32 %363, ptr %25, align 4, !tbaa !5
  %reass.sub589 = sub i32 %362, %328
  %364 = add i32 %reass.sub589, 2
  %365 = call i32 @llvm.smax.i32(i32 %364, i32 1)
  %366 = add nsw i32 %365, %36
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds double, ptr %38, i64 %367
  %369 = 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 %368, ptr noundef nonnull %9, ptr noundef %21) #4
  %370 = fcmp oeq double %369, 0.000000e+00
  %371 = fdiv double %357, %369
  %.0 = select i1 %370, double 1.000000e+00, double %371
  store double %.0, ptr %21, align 8, !tbaa !10
  store double 0.000000e+00, ptr %18, align 8, !tbaa !10
  br label %512

372:                                              ; preds = %._crit_edge548, %.loopexit509
  %.484 = select i1 %.not448, i8 73, i8 49
  store i8 %.484, ptr %28, align 1, !tbaa !9
  %373 = 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 %373, ptr %29, align 8, !tbaa !10
  %374 = load i32, ptr %3, align 4, !tbaa !5
  %375 = load i32, ptr %4, align 4, !tbaa !5
  %376 = add nsw i32 %375, %374
  store i32 %376, ptr %25, align 4, !tbaa !5
  %377 = 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
  %378 = fcmp oeq double %377, 0.000000e+00
  br i1 %378, label %382, label %379

379:                                              ; preds = %372
  %380 = 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
  %381 = fdiv double %380, %377
  br label %382

382:                                              ; preds = %372, %379
  %.1 = phi double [ %381, %379 ], [ 1.000000e+00, %372 ]
  call void @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
  call void @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
  call void @dgbtrs_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %23) #4
  call void @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 %.not448, label %444, label %383

383:                                              ; preds = %382
  %.not473 = icmp eq i32 %.1424, 0
  br i1 %.not473, label %.loopexit, label %384

384:                                              ; preds = %383
  %385 = load i32, ptr %5, align 4, !tbaa !5
  %.not474554 = icmp slt i32 %385, 1
  br i1 %.not474554, label %._crit_edge558.thread, label %.lr.ph557

._crit_edge558.thread:                            ; preds = %384
  store i32 %385, ptr %25, align 4, !tbaa !5
  br label %.loopexit

.lr.ph557:                                        ; preds = %384
  %386 = load i32, ptr %2, align 4, !tbaa !5
  %.not476549 = icmp slt i32 %386, 1
  br i1 %.not476549, label %._crit_edge558.thread677, label %.lr.ph552.preheader

._crit_edge558.thread677:                         ; preds = %.lr.ph557
  store i32 %385, ptr %25, align 4, !tbaa !5
  br label %.lr.ph562

.lr.ph552.preheader:                              ; preds = %.lr.ph557
  %387 = add nuw i32 %386, 1
  %388 = sext i32 %44 to i64
  %389 = add nuw i32 %385, 1
  %wide.trip.count634 = zext i32 %389 to i64
  %wide.trip.count629 = zext i32 %387 to i64
  %390 = shl nsw i64 %388, 3
  %391 = shl nsw i64 %45, 3
  %392 = getelementptr i8, ptr %16, i64 %390
  %393 = getelementptr i8, ptr %392, i64 %391
  %scevgep730 = getelementptr i8, ptr %393, i64 8
  %394 = shl nuw nsw i64 %wide.trip.count634, 3
  %395 = add nsw i64 %394, -8
  %396 = mul i64 %395, %388
  %397 = shl nuw nsw i64 %wide.trip.count629, 3
  %398 = getelementptr i8, ptr %16, i64 %396
  %399 = getelementptr i8, ptr %398, i64 %391
  %scevgep731 = getelementptr i8, ptr %399, i64 %397
  %400 = getelementptr i8, ptr %13, i64 %397
  %scevgep732 = getelementptr i8, ptr %400, i64 -8
  %401 = zext nneg i32 %386 to i64
  %402 = zext nneg i32 %386 to i64
  %min.iters.check739 = icmp ult i32 %386, 4
  %bound0733 = icmp ult ptr %scevgep730, %scevgep732
  %bound1734 = icmp ugt ptr %scevgep731, %13
  %found.conflict735 = and i1 %bound0733, %bound1734
  %stride.check736 = icmp slt i32 %44, 0
  %403 = or i1 %found.conflict735, %stride.check736
  %n.vec742 = and i64 %401, 2147483644
  %ind.end743 = or disjoint i64 %n.vec742, 1
  %cmp.n753 = icmp eq i64 %n.vec742, %401
  br label %.lr.ph552

.lr.ph552:                                        ; preds = %.lr.ph552.preheader, %._crit_edge553
  %indvars.iv631 = phi i64 [ 1, %.lr.ph552.preheader ], [ %indvars.iv.next632, %._crit_edge553 ]
  %404 = mul nsw i64 %indvars.iv631, %388
  %invariant.gep687 = getelementptr double, ptr %46, i64 %404
  %brmerge848 = select i1 %min.iters.check739, i1 true, i1 %403
  br i1 %brmerge848, label %scalar.ph738.preheader, label %vector.body745

vector.body745:                                   ; preds = %.lr.ph552, %vector.body745
  %index746 = phi i64 [ %index.next752, %vector.body745 ], [ 0, %.lr.ph552 ]
  %offset.idx747 = or disjoint i64 %index746, 1
  %405 = getelementptr double, ptr %13, i64 %index746
  %406 = getelementptr inbounds i8, ptr %405, i64 16
  %wide.load748 = load <2 x double>, ptr %405, align 8, !tbaa !10, !alias.scope !39
  %wide.load749 = load <2 x double>, ptr %406, align 8, !tbaa !10, !alias.scope !39
  %407 = getelementptr double, ptr %invariant.gep687, i64 %offset.idx747
  %408 = getelementptr i8, ptr %407, i64 16
  %wide.load750 = load <2 x double>, ptr %407, align 8, !tbaa !10, !alias.scope !42, !noalias !39
  %wide.load751 = load <2 x double>, ptr %408, align 8, !tbaa !10, !alias.scope !42, !noalias !39
  %409 = fmul <2 x double> %wide.load748, %wide.load750
  %410 = fmul <2 x double> %wide.load749, %wide.load751
  store <2 x double> %409, ptr %407, align 8, !tbaa !10, !alias.scope !42, !noalias !39
  store <2 x double> %410, ptr %408, align 8, !tbaa !10, !alias.scope !42, !noalias !39
  %index.next752 = add nuw i64 %index746, 4
  %411 = icmp eq i64 %index.next752, %n.vec742
  br i1 %411, label %middle.block737, label %vector.body745, !llvm.loop !44

middle.block737:                                  ; preds = %vector.body745
  br i1 %cmp.n753, label %._crit_edge553, label %scalar.ph738.preheader

scalar.ph738.preheader:                           ; preds = %.lr.ph552, %middle.block737
  %indvars.iv626.ph = phi i64 [ 1, %.lr.ph552 ], [ %ind.end743, %middle.block737 ]
  %412 = sub nsw i64 %wide.trip.count629, %indvars.iv626.ph
  %413 = sub nsw i64 %402, %indvars.iv626.ph
  %xtraiter828 = and i64 %412, 3
  %lcmp.mod829.not = icmp eq i64 %xtraiter828, 0
  br i1 %lcmp.mod829.not, label %scalar.ph738.prol.loopexit, label %scalar.ph738.prol

scalar.ph738.prol:                                ; preds = %scalar.ph738.preheader, %scalar.ph738.prol
  %indvars.iv626.prol = phi i64 [ %indvars.iv.next627.prol, %scalar.ph738.prol ], [ %indvars.iv626.ph, %scalar.ph738.preheader ]
  %prol.iter830 = phi i64 [ %prol.iter830.next, %scalar.ph738.prol ], [ 0, %scalar.ph738.preheader ]
  %414 = getelementptr inbounds double, ptr %40, i64 %indvars.iv626.prol
  %415 = load double, ptr %414, align 8, !tbaa !10
  %gep688.prol = getelementptr double, ptr %invariant.gep687, i64 %indvars.iv626.prol
  %416 = load double, ptr %gep688.prol, align 8, !tbaa !10
  %417 = fmul double %415, %416
  store double %417, ptr %gep688.prol, align 8, !tbaa !10
  %indvars.iv.next627.prol = add nuw nsw i64 %indvars.iv626.prol, 1
  %prol.iter830.next = add i64 %prol.iter830, 1
  %prol.iter830.cmp.not = icmp eq i64 %prol.iter830.next, %xtraiter828
  br i1 %prol.iter830.cmp.not, label %scalar.ph738.prol.loopexit, label %scalar.ph738.prol, !llvm.loop !45

scalar.ph738.prol.loopexit:                       ; preds = %scalar.ph738.prol, %scalar.ph738.preheader
  %indvars.iv626.unr = phi i64 [ %indvars.iv626.ph, %scalar.ph738.preheader ], [ %indvars.iv.next627.prol, %scalar.ph738.prol ]
  %418 = icmp ult i64 %413, 3
  br i1 %418, label %._crit_edge553, label %scalar.ph738.preheader.new

scalar.ph738.preheader.new:                       ; preds = %scalar.ph738.prol.loopexit
  %invariant.gep843 = getelementptr i8, ptr %invariant.gep687, i64 8
  br label %scalar.ph738

scalar.ph738:                                     ; preds = %scalar.ph738, %scalar.ph738.preheader.new
  %indvars.iv626 = phi i64 [ %indvars.iv626.unr, %scalar.ph738.preheader.new ], [ %indvars.iv.next627.3, %scalar.ph738 ]
  %419 = getelementptr inbounds double, ptr %40, i64 %indvars.iv626
  %420 = load double, ptr %419, align 8, !tbaa !10
  %gep688 = getelementptr double, ptr %invariant.gep687, i64 %indvars.iv626
  %421 = load double, ptr %gep688, align 8, !tbaa !10
  %422 = fmul double %420, %421
  store double %422, ptr %gep688, align 8, !tbaa !10
  %423 = getelementptr double, ptr %13, i64 %indvars.iv626
  %424 = load double, ptr %423, align 8, !tbaa !10
  %gep844 = getelementptr double, ptr %invariant.gep843, i64 %indvars.iv626
  %425 = load double, ptr %gep844, align 8, !tbaa !10
  %426 = fmul double %424, %425
  store double %426, ptr %gep844, align 8, !tbaa !10
  %indvars.iv.next627.1 = add nuw nsw i64 %indvars.iv626, 2
  %427 = getelementptr inbounds double, ptr %40, i64 %indvars.iv.next627.1
  %428 = load double, ptr %427, align 8, !tbaa !10
  %gep688.2 = getelementptr double, ptr %invariant.gep687, i64 %indvars.iv.next627.1
  %429 = load double, ptr %gep688.2, align 8, !tbaa !10
  %430 = fmul double %428, %429
  store double %430, ptr %gep688.2, align 8, !tbaa !10
  %indvars.iv.next627.2 = add nuw nsw i64 %indvars.iv626, 3
  %431 = getelementptr inbounds double, ptr %40, i64 %indvars.iv.next627.2
  %432 = load double, ptr %431, align 8, !tbaa !10
  %gep688.3 = getelementptr double, ptr %invariant.gep687, i64 %indvars.iv.next627.2
  %433 = load double, ptr %gep688.3, align 8, !tbaa !10
  %434 = fmul double %432, %433
  store double %434, ptr %gep688.3, align 8, !tbaa !10
  %indvars.iv.next627.3 = add nuw nsw i64 %indvars.iv626, 4
  %exitcond630.not.3 = icmp eq i64 %indvars.iv.next627.3, %wide.trip.count629
  br i1 %exitcond630.not.3, label %._crit_edge553, label %scalar.ph738, !llvm.loop !46

._crit_edge553:                                   ; preds = %scalar.ph738.prol.loopexit, %scalar.ph738, %middle.block737
  %indvars.iv.next632 = add nuw nsw i64 %indvars.iv631, 1
  %exitcond635.not = icmp eq i64 %indvars.iv.next632, %wide.trip.count634
  br i1 %exitcond635.not, label %._crit_edge558, label %.lr.ph552, !llvm.loop !47

._crit_edge558:                                   ; preds = %._crit_edge553
  store i32 %385, ptr %25, align 4, !tbaa !5
  br i1 %.not474554, label %.loopexit, label %.lr.ph562

.lr.ph562:                                        ; preds = %._crit_edge558.thread677, %._crit_edge558
  %435 = load double, ptr %30, align 8, !tbaa !10
  %436 = add nuw i32 %385, 1
  %wide.trip.count639 = zext i32 %436 to i64
  %437 = zext nneg i32 %385 to i64
  %min.iters.check756 = icmp eq i32 %385, 1
  br i1 %min.iters.check756, label %scalar.ph755.preheader, label %vector.ph757

vector.ph757:                                     ; preds = %.lr.ph562
  %n.vec759 = and i64 %437, 2147483646
  %ind.end760 = or i64 %437, 1
  %broadcast.splatinsert = insertelement <2 x double> poison, double %435, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body762

vector.body762:                                   ; preds = %vector.body762, %vector.ph757
  %index763 = phi i64 [ 0, %vector.ph757 ], [ %index.next766, %vector.body762 ]
  %438 = getelementptr double, ptr %19, i64 %index763
  %wide.load765 = load <2 x double>, ptr %438, align 8, !tbaa !10
  %439 = fdiv <2 x double> %wide.load765, %broadcast.splat
  store <2 x double> %439, ptr %438, align 8, !tbaa !10
  %index.next766 = add nuw i64 %index763, 2
  %440 = icmp eq i64 %index.next766, %n.vec759
  br i1 %440, label %middle.block754, label %vector.body762, !llvm.loop !48

middle.block754:                                  ; preds = %vector.body762
  %cmp.n767 = icmp eq i64 %n.vec759, %437
  br i1 %cmp.n767, label %.loopexit, label %scalar.ph755.preheader

scalar.ph755.preheader:                           ; preds = %middle.block754, %.lr.ph562
  %indvars.iv636.ph = phi i64 [ 1, %.lr.ph562 ], [ %ind.end760, %middle.block754 ]
  br label %scalar.ph755

scalar.ph755:                                     ; preds = %scalar.ph755.preheader, %scalar.ph755
  %indvars.iv636 = phi i64 [ %indvars.iv.next637, %scalar.ph755 ], [ %indvars.iv636.ph, %scalar.ph755.preheader ]
  %441 = getelementptr inbounds double, ptr %47, i64 %indvars.iv636
  %442 = load double, ptr %441, align 8, !tbaa !10
  %443 = fdiv double %442, %435
  store double %443, ptr %441, align 8, !tbaa !10
  %indvars.iv.next637 = add nuw nsw i64 %indvars.iv636, 1
  %exitcond640.not = icmp eq i64 %indvars.iv.next637, %wide.trip.count639
  br i1 %exitcond640.not, label %.loopexit, label %scalar.ph755, !llvm.loop !49

444:                                              ; preds = %382
  %.not469 = icmp eq i32 %.1421, 0
  br i1 %.not469, label %.loopexit, label %445

445:                                              ; preds = %444
  %446 = load i32, ptr %5, align 4, !tbaa !5
  %.not470568 = icmp slt i32 %446, 1
  br i1 %.not470568, label %._crit_edge572.thread, label %.lr.ph571

._crit_edge572.thread:                            ; preds = %445
  store i32 %446, ptr %25, align 4, !tbaa !5
  br label %.loopexit

.lr.ph571:                                        ; preds = %445
  %447 = load i32, ptr %2, align 4, !tbaa !5
  %.not472563 = icmp slt i32 %447, 1
  br i1 %.not472563, label %._crit_edge572.thread678, label %.lr.ph566.preheader

._crit_edge572.thread678:                         ; preds = %.lr.ph571
  store i32 %446, ptr %25, align 4, !tbaa !5
  br label %.lr.ph576

.lr.ph566.preheader:                              ; preds = %.lr.ph571
  %448 = add nuw i32 %447, 1
  %449 = sext i32 %44 to i64
  %450 = add nuw i32 %446, 1
  %wide.trip.count649 = zext i32 %450 to i64
  %wide.trip.count644 = zext i32 %448 to i64
  %451 = shl nsw i64 %449, 3
  %452 = shl nsw i64 %45, 3
  %453 = getelementptr i8, ptr %16, i64 %451
  %454 = getelementptr i8, ptr %453, i64 %452
  %scevgep769 = getelementptr i8, ptr %454, i64 8
  %455 = shl nuw nsw i64 %wide.trip.count649, 3
  %456 = add nsw i64 %455, -8
  %457 = mul i64 %456, %449
  %458 = shl nuw nsw i64 %wide.trip.count644, 3
  %459 = getelementptr i8, ptr %16, i64 %457
  %460 = getelementptr i8, ptr %459, i64 %452
  %scevgep770 = getelementptr i8, ptr %460, i64 %458
  %461 = getelementptr i8, ptr %12, i64 %458
  %scevgep771 = getelementptr i8, ptr %461, i64 -8
  %462 = zext nneg i32 %447 to i64
  %463 = zext nneg i32 %447 to i64
  %min.iters.check778 = icmp ult i32 %447, 4
  %bound0772 = icmp ult ptr %scevgep769, %scevgep771
  %bound1773 = icmp ugt ptr %scevgep770, %12
  %found.conflict774 = and i1 %bound0772, %bound1773
  %stride.check775 = icmp slt i32 %44, 0
  %464 = or i1 %found.conflict774, %stride.check775
  %n.vec781 = and i64 %462, 2147483644
  %ind.end782 = or disjoint i64 %n.vec781, 1
  %cmp.n792 = icmp eq i64 %n.vec781, %462
  br label %.lr.ph566

.lr.ph566:                                        ; preds = %.lr.ph566.preheader, %._crit_edge567
  %indvars.iv646 = phi i64 [ 1, %.lr.ph566.preheader ], [ %indvars.iv.next647, %._crit_edge567 ]
  %465 = mul nsw i64 %indvars.iv646, %449
  %invariant.gep689 = getelementptr double, ptr %46, i64 %465
  %brmerge849 = select i1 %min.iters.check778, i1 true, i1 %464
  br i1 %brmerge849, label %scalar.ph777.preheader, label %vector.body784

vector.body784:                                   ; preds = %.lr.ph566, %vector.body784
  %index785 = phi i64 [ %index.next791, %vector.body784 ], [ 0, %.lr.ph566 ]
  %offset.idx786 = or disjoint i64 %index785, 1
  %466 = getelementptr double, ptr %12, i64 %index785
  %467 = getelementptr inbounds i8, ptr %466, i64 16
  %wide.load787 = load <2 x double>, ptr %466, align 8, !tbaa !10, !alias.scope !50
  %wide.load788 = load <2 x double>, ptr %467, align 8, !tbaa !10, !alias.scope !50
  %468 = getelementptr double, ptr %invariant.gep689, i64 %offset.idx786
  %469 = getelementptr i8, ptr %468, i64 16
  %wide.load789 = load <2 x double>, ptr %468, align 8, !tbaa !10, !alias.scope !53, !noalias !50
  %wide.load790 = load <2 x double>, ptr %469, align 8, !tbaa !10, !alias.scope !53, !noalias !50
  %470 = fmul <2 x double> %wide.load787, %wide.load789
  %471 = fmul <2 x double> %wide.load788, %wide.load790
  store <2 x double> %470, ptr %468, align 8, !tbaa !10, !alias.scope !53, !noalias !50
  store <2 x double> %471, ptr %469, align 8, !tbaa !10, !alias.scope !53, !noalias !50
  %index.next791 = add nuw i64 %index785, 4
  %472 = icmp eq i64 %index.next791, %n.vec781
  br i1 %472, label %middle.block776, label %vector.body784, !llvm.loop !55

middle.block776:                                  ; preds = %vector.body784
  br i1 %cmp.n792, label %._crit_edge567, label %scalar.ph777.preheader

scalar.ph777.preheader:                           ; preds = %.lr.ph566, %middle.block776
  %indvars.iv641.ph = phi i64 [ 1, %.lr.ph566 ], [ %ind.end782, %middle.block776 ]
  %473 = sub nsw i64 %wide.trip.count644, %indvars.iv641.ph
  %474 = sub nsw i64 %463, %indvars.iv641.ph
  %xtraiter831 = and i64 %473, 3
  %lcmp.mod832.not = icmp eq i64 %xtraiter831, 0
  br i1 %lcmp.mod832.not, label %scalar.ph777.prol.loopexit, label %scalar.ph777.prol

scalar.ph777.prol:                                ; preds = %scalar.ph777.preheader, %scalar.ph777.prol
  %indvars.iv641.prol = phi i64 [ %indvars.iv.next642.prol, %scalar.ph777.prol ], [ %indvars.iv641.ph, %scalar.ph777.preheader ]
  %prol.iter833 = phi i64 [ %prol.iter833.next, %scalar.ph777.prol ], [ 0, %scalar.ph777.preheader ]
  %475 = getelementptr inbounds double, ptr %39, i64 %indvars.iv641.prol
  %476 = load double, ptr %475, align 8, !tbaa !10
  %gep690.prol = getelementptr double, ptr %invariant.gep689, i64 %indvars.iv641.prol
  %477 = load double, ptr %gep690.prol, align 8, !tbaa !10
  %478 = fmul double %476, %477
  store double %478, ptr %gep690.prol, align 8, !tbaa !10
  %indvars.iv.next642.prol = add nuw nsw i64 %indvars.iv641.prol, 1
  %prol.iter833.next = add i64 %prol.iter833, 1
  %prol.iter833.cmp.not = icmp eq i64 %prol.iter833.next, %xtraiter831
  br i1 %prol.iter833.cmp.not, label %scalar.ph777.prol.loopexit, label %scalar.ph777.prol, !llvm.loop !56

scalar.ph777.prol.loopexit:                       ; preds = %scalar.ph777.prol, %scalar.ph777.preheader
  %indvars.iv641.unr = phi i64 [ %indvars.iv641.ph, %scalar.ph777.preheader ], [ %indvars.iv.next642.prol, %scalar.ph777.prol ]
  %479 = icmp ult i64 %474, 3
  br i1 %479, label %._crit_edge567, label %scalar.ph777.preheader.new

scalar.ph777.preheader.new:                       ; preds = %scalar.ph777.prol.loopexit
  %invariant.gep845 = getelementptr i8, ptr %invariant.gep689, i64 8
  br label %scalar.ph777

scalar.ph777:                                     ; preds = %scalar.ph777, %scalar.ph777.preheader.new
  %indvars.iv641 = phi i64 [ %indvars.iv641.unr, %scalar.ph777.preheader.new ], [ %indvars.iv.next642.3, %scalar.ph777 ]
  %480 = getelementptr inbounds double, ptr %39, i64 %indvars.iv641
  %481 = load double, ptr %480, align 8, !tbaa !10
  %gep690 = getelementptr double, ptr %invariant.gep689, i64 %indvars.iv641
  %482 = load double, ptr %gep690, align 8, !tbaa !10
  %483 = fmul double %481, %482
  store double %483, ptr %gep690, align 8, !tbaa !10
  %484 = getelementptr double, ptr %12, i64 %indvars.iv641
  %485 = load double, ptr %484, align 8, !tbaa !10
  %gep846 = getelementptr double, ptr %invariant.gep845, i64 %indvars.iv641
  %486 = load double, ptr %gep846, align 8, !tbaa !10
  %487 = fmul double %485, %486
  store double %487, ptr %gep846, align 8, !tbaa !10
  %indvars.iv.next642.1 = add nuw nsw i64 %indvars.iv641, 2
  %488 = getelementptr inbounds double, ptr %39, i64 %indvars.iv.next642.1
  %489 = load double, ptr %488, align 8, !tbaa !10
  %gep690.2 = getelementptr double, ptr %invariant.gep689, i64 %indvars.iv.next642.1
  %490 = load double, ptr %gep690.2, align 8, !tbaa !10
  %491 = fmul double %489, %490
  store double %491, ptr %gep690.2, align 8, !tbaa !10
  %indvars.iv.next642.2 = add nuw nsw i64 %indvars.iv641, 3
  %492 = getelementptr inbounds double, ptr %39, i64 %indvars.iv.next642.2
  %493 = load double, ptr %492, align 8, !tbaa !10
  %gep690.3 = getelementptr double, ptr %invariant.gep689, i64 %indvars.iv.next642.2
  %494 = load double, ptr %gep690.3, align 8, !tbaa !10
  %495 = fmul double %493, %494
  store double %495, ptr %gep690.3, align 8, !tbaa !10
  %indvars.iv.next642.3 = add nuw nsw i64 %indvars.iv641, 4
  %exitcond645.not.3 = icmp eq i64 %indvars.iv.next642.3, %wide.trip.count644
  br i1 %exitcond645.not.3, label %._crit_edge567, label %scalar.ph777, !llvm.loop !57

._crit_edge567:                                   ; preds = %scalar.ph777.prol.loopexit, %scalar.ph777, %middle.block776
  %indvars.iv.next647 = add nuw nsw i64 %indvars.iv646, 1
  %exitcond650.not = icmp eq i64 %indvars.iv.next647, %wide.trip.count649
  br i1 %exitcond650.not, label %._crit_edge572, label %.lr.ph566, !llvm.loop !58

._crit_edge572:                                   ; preds = %._crit_edge567
  store i32 %446, ptr %25, align 4, !tbaa !5
  br i1 %.not470568, label %.loopexit, label %.lr.ph576

.lr.ph576:                                        ; preds = %._crit_edge572.thread678, %._crit_edge572
  %496 = load double, ptr %32, align 8, !tbaa !10
  %497 = add nuw i32 %446, 1
  %wide.trip.count654 = zext i32 %497 to i64
  %498 = zext nneg i32 %446 to i64
  %min.iters.check795 = icmp eq i32 %446, 1
  br i1 %min.iters.check795, label %scalar.ph794.preheader, label %vector.ph796

vector.ph796:                                     ; preds = %.lr.ph576
  %n.vec798 = and i64 %498, 2147483646
  %ind.end799 = or i64 %498, 1
  %broadcast.splatinsert805 = insertelement <2 x double> poison, double %496, i64 0
  %broadcast.splat806 = shufflevector <2 x double> %broadcast.splatinsert805, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body801

vector.body801:                                   ; preds = %vector.body801, %vector.ph796
  %index802 = phi i64 [ 0, %vector.ph796 ], [ %index.next807, %vector.body801 ]
  %499 = getelementptr double, ptr %19, i64 %index802
  %wide.load804 = load <2 x double>, ptr %499, align 8, !tbaa !10
  %500 = fdiv <2 x double> %wide.load804, %broadcast.splat806
  store <2 x double> %500, ptr %499, align 8, !tbaa !10
  %index.next807 = add nuw i64 %index802, 2
  %501 = icmp eq i64 %index.next807, %n.vec798
  br i1 %501, label %middle.block793, label %vector.body801, !llvm.loop !59

middle.block793:                                  ; preds = %vector.body801
  %cmp.n808 = icmp eq i64 %n.vec798, %498
  br i1 %cmp.n808, label %.loopexit, label %scalar.ph794.preheader

scalar.ph794.preheader:                           ; preds = %middle.block793, %.lr.ph576
  %indvars.iv651.ph = phi i64 [ 1, %.lr.ph576 ], [ %ind.end799, %middle.block793 ]
  br label %scalar.ph794

scalar.ph794:                                     ; preds = %scalar.ph794.preheader, %scalar.ph794
  %indvars.iv651 = phi i64 [ %indvars.iv.next652, %scalar.ph794 ], [ %indvars.iv651.ph, %scalar.ph794.preheader ]
  %502 = getelementptr inbounds double, ptr %47, i64 %indvars.iv651
  %503 = load double, ptr %502, align 8, !tbaa !10
  %504 = fdiv double %503, %496
  store double %504, ptr %502, align 8, !tbaa !10
  %indvars.iv.next652 = add nuw nsw i64 %indvars.iv651, 1
  %exitcond655.not = icmp eq i64 %indvars.iv.next652, %wide.trip.count654
  br i1 %exitcond655.not, label %.loopexit, label %scalar.ph794, !llvm.loop !60

.loopexit:                                        ; preds = %scalar.ph755, %scalar.ph794, %middle.block754, %middle.block793, %._crit_edge572.thread, %._crit_edge558.thread, %._crit_edge558, %._crit_edge572, %444, %383
  %505 = load double, ptr %18, align 8, !tbaa !10
  %506 = call double @dlamch_(ptr noundef nonnull @.str.12) #4
  %507 = fcmp olt double %505, %506
  br i1 %507, label %508, label %511

508:                                              ; preds = %.loopexit
  %509 = load i32, ptr %2, align 4, !tbaa !5
  %510 = add nsw i32 %509, 1
  store i32 %510, ptr %23, align 4, !tbaa !5
  br label %511

511:                                              ; preds = %508, %.loopexit
  store double %.1, ptr %21, align 8, !tbaa !10
  br label %512

512:                                              ; preds = %511, %360, %.thread501
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr nonnull %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #4
  ret void
}

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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