; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (sgesvx)

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

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

139:                                              ; preds = %22
  %140 = load i32, ptr %64, align 4, !tbaa !9
  %141 = icmp ne i32 %140, 0
  br i1 %141, label %142, label %144

142:                                              ; preds = %139, %22
  %143 = load ptr, ptr %32, align 8, !tbaa !5
  store i8 78, ptr %143, align 1, !tbaa !11
  store i32 0, ptr %73, align 4, !tbaa !9
  store i32 0, ptr %69, align 4, !tbaa !9
  br label %168

144:                                              ; preds = %139
  %145 = load ptr, ptr %32, align 8, !tbaa !5
  %146 = call i32 @lsame_(ptr noundef %145, ptr noundef @.str.2)
  %147 = icmp ne i32 %146, 0
  br i1 %147, label %152, label %148

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

152:                                              ; preds = %148, %144
  %153 = phi i1 [ true, %144 ], [ %151, %148 ]
  %154 = zext i1 %153 to i32
  store i32 %154, ptr %73, align 4, !tbaa !9
  %155 = load ptr, ptr %32, align 8, !tbaa !5
  %156 = call i32 @lsame_(ptr noundef %155, ptr noundef @.str.4)
  %157 = icmp ne i32 %156, 0
  br i1 %157, label %162, label %158

158:                                              ; preds = %152
  %159 = load ptr, ptr %32, 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, %152
  %163 = phi i1 [ true, %152 ], [ %161, %158 ]
  %164 = zext i1 %163 to i32
  store i32 %164, ptr %69, align 4, !tbaa !9
  %165 = call float @slamch_(ptr noundef @.str.5)
  store float %165, ptr %72, align 4, !tbaa !12
  %166 = load float, ptr %72, align 4, !tbaa !12
  %167 = fdiv float 1.000000e+00, %166
  store float %167, ptr %67, align 4, !tbaa !12
  br label %168

168:                                              ; preds = %162, %142
  %169 = load i32, ptr %66, align 4, !tbaa !9
  %170 = icmp ne i32 %169, 0
  br i1 %170, label %180, label %171

171:                                              ; preds = %168
  %172 = load i32, ptr %64, align 4, !tbaa !9
  %173 = icmp ne i32 %172, 0
  br i1 %173, label %180, label %174

174:                                              ; preds = %171
  %175 = load ptr, ptr %23, align 8, !tbaa !5
  %176 = call i32 @lsame_(ptr noundef %175, ptr noundef @.str.6)
  %177 = icmp ne i32 %176, 0
  br i1 %177, label %180, label %178

178:                                              ; preds = %174
  %179 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -1, ptr %179, align 4, !tbaa !9
  br label %452

180:                                              ; preds = %174, %171, %168
  %181 = load i32, ptr %71, align 4, !tbaa !9
  %182 = icmp ne i32 %181, 0
  br i1 %182, label %193, label %183

183:                                              ; preds = %180
  %184 = load ptr, ptr %24, align 8, !tbaa !5
  %185 = call i32 @lsame_(ptr noundef %184, ptr noundef @.str.7)
  %186 = icmp ne i32 %185, 0
  br i1 %186, label %193, label %187

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

191:                                              ; preds = %187
  %192 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -2, ptr %192, align 4, !tbaa !9
  br label %451

193:                                              ; preds = %187, %183, %180
  %194 = load ptr, ptr %25, align 8, !tbaa !5
  %195 = load i32, ptr %194, align 4, !tbaa !9
  %196 = icmp slt i32 %195, 0
  br i1 %196, label %197, label %199

197:                                              ; preds = %193
  %198 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -3, ptr %198, align 4, !tbaa !9
  br label %450

199:                                              ; preds = %193
  %200 = load ptr, ptr %26, align 8, !tbaa !5
  %201 = load i32, ptr %200, align 4, !tbaa !9
  %202 = icmp slt i32 %201, 0
  br i1 %202, label %203, label %205

203:                                              ; preds = %199
  %204 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -4, ptr %204, align 4, !tbaa !9
  br label %449

205:                                              ; preds = %199
  %206 = load ptr, ptr %28, align 8, !tbaa !5
  %207 = load i32, ptr %206, align 4, !tbaa !9
  %208 = load ptr, ptr %25, align 8, !tbaa !5
  %209 = load i32, ptr %208, align 4, !tbaa !9
  %210 = icmp sge i32 1, %209
  br i1 %210, label %211, label %212

211:                                              ; preds = %205
  br label %215

212:                                              ; preds = %205
  %213 = load ptr, ptr %25, align 8, !tbaa !5
  %214 = load i32, ptr %213, align 4, !tbaa !9
  br label %215

215:                                              ; preds = %212, %211
  %216 = phi i32 [ 1, %211 ], [ %214, %212 ]
  %217 = icmp slt i32 %207, %216
  br i1 %217, label %218, label %220

218:                                              ; preds = %215
  %219 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -6, ptr %219, align 4, !tbaa !9
  br label %448

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

226:                                              ; preds = %220
  br label %230

227:                                              ; preds = %220
  %228 = load ptr, ptr %25, align 8, !tbaa !5
  %229 = load i32, ptr %228, align 4, !tbaa !9
  br label %230

230:                                              ; preds = %227, %226
  %231 = phi i32 [ 1, %226 ], [ %229, %227 ]
  %232 = icmp slt i32 %222, %231
  br i1 %232, label %233, label %235

233:                                              ; preds = %230
  %234 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -8, ptr %234, align 4, !tbaa !9
  br label %447

235:                                              ; preds = %230
  %236 = load ptr, ptr %23, align 8, !tbaa !5
  %237 = call i32 @lsame_(ptr noundef %236, ptr noundef @.str.6)
  %238 = icmp ne i32 %237, 0
  br i1 %238, label %239, label %251

239:                                              ; preds = %235
  %240 = load i32, ptr %73, align 4, !tbaa !9
  %241 = icmp ne i32 %240, 0
  br i1 %241, label %251, label %242

242:                                              ; preds = %239
  %243 = load i32, ptr %69, align 4, !tbaa !9
  %244 = icmp ne i32 %243, 0
  br i1 %244, label %251, label %245

245:                                              ; preds = %242
  %246 = load ptr, ptr %32, align 8, !tbaa !5
  %247 = call i32 @lsame_(ptr noundef %246, ptr noundef @.str)
  %248 = icmp ne i32 %247, 0
  br i1 %248, label %251, label %249

249:                                              ; preds = %245
  %250 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -10, ptr %250, align 4, !tbaa !9
  br label %446

251:                                              ; preds = %245, %242, %239, %235
  %252 = load i32, ptr %73, align 4, !tbaa !9
  %253 = icmp ne i32 %252, 0
  br i1 %253, label %254, label %328

254:                                              ; preds = %251
  %255 = load float, ptr %67, align 4, !tbaa !12
  store float %255, ptr %61, align 4, !tbaa !12
  store float 0.000000e+00, ptr %62, align 4, !tbaa !12
  %256 = load ptr, ptr %25, align 8, !tbaa !5
  %257 = load i32, ptr %256, align 4, !tbaa !9
  store i32 %257, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %258

258:                                              ; preds = %293, %254
  %259 = load i32, ptr %60, align 4, !tbaa !9
  %260 = load i32, ptr %53, align 4, !tbaa !9
  %261 = icmp sle i32 %259, %260
  br i1 %261, label %262, label %296

262:                                              ; preds = %258
  %263 = load float, ptr %61, align 4, !tbaa !12
  store float %263, ptr %55, align 4, !tbaa !12
  %264 = load ptr, ptr %33, align 8, !tbaa !5
  %265 = load i32, ptr %60, align 4, !tbaa !9
  %266 = sext i32 %265 to i64
  %267 = getelementptr inbounds float, ptr %264, i64 %266
  %268 = load float, ptr %267, align 4, !tbaa !12
  store float %268, ptr %56, align 4, !tbaa !12
  %269 = load float, ptr %55, align 4, !tbaa !12
  %270 = load float, ptr %56, align 4, !tbaa !12
  %271 = fcmp ole float %269, %270
  br i1 %271, label %272, label %274

272:                                              ; preds = %262
  %273 = load float, ptr %55, align 4, !tbaa !12
  br label %276

274:                                              ; preds = %262
  %275 = load float, ptr %56, align 4, !tbaa !12
  br label %276

276:                                              ; preds = %274, %272
  %277 = phi float [ %273, %272 ], [ %275, %274 ]
  store float %277, ptr %61, align 4, !tbaa !12
  %278 = load float, ptr %62, align 4, !tbaa !12
  store float %278, ptr %55, align 4, !tbaa !12
  %279 = load ptr, ptr %33, align 8, !tbaa !5
  %280 = load i32, ptr %60, align 4, !tbaa !9
  %281 = sext i32 %280 to i64
  %282 = getelementptr inbounds float, ptr %279, i64 %281
  %283 = load float, ptr %282, align 4, !tbaa !12
  store float %283, ptr %56, align 4, !tbaa !12
  %284 = load float, ptr %55, align 4, !tbaa !12
  %285 = load float, ptr %56, align 4, !tbaa !12
  %286 = fcmp oge float %284, %285
  br i1 %286, label %287, label %289

287:                                              ; preds = %276
  %288 = load float, ptr %55, align 4, !tbaa !12
  br label %291

289:                                              ; preds = %276
  %290 = load float, ptr %56, align 4, !tbaa !12
  br label %291

291:                                              ; preds = %289, %287
  %292 = phi float [ %288, %287 ], [ %290, %289 ]
  store float %292, ptr %62, align 4, !tbaa !12
  br label %293

293:                                              ; preds = %291
  %294 = load i32, ptr %60, align 4, !tbaa !9
  %295 = add nsw i32 %294, 1
  store i32 %295, ptr %60, align 4, !tbaa !9
  br label %258, !llvm.loop !14

296:                                              ; preds = %258
  %297 = load float, ptr %61, align 4, !tbaa !12
  %298 = fcmp ole float %297, 0.000000e+00
  br i1 %298, label %299, label %301

299:                                              ; preds = %296
  %300 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -11, ptr %300, align 4, !tbaa !9
  br label %327

301:                                              ; preds = %296
  %302 = load ptr, ptr %25, align 8, !tbaa !5
  %303 = load i32, ptr %302, align 4, !tbaa !9
  %304 = icmp sgt i32 %303, 0
  br i1 %304, label %305, label %325

305:                                              ; preds = %301
  %306 = load float, ptr %61, align 4, !tbaa !12
  %307 = load float, ptr %72, align 4, !tbaa !12
  %308 = fcmp oge float %306, %307
  br i1 %308, label %309, label %311

309:                                              ; preds = %305
  %310 = load float, ptr %61, align 4, !tbaa !12
  br label %313

311:                                              ; preds = %305
  %312 = load float, ptr %72, align 4, !tbaa !12
  br label %313

313:                                              ; preds = %311, %309
  %314 = phi float [ %310, %309 ], [ %312, %311 ]
  %315 = load float, ptr %62, align 4, !tbaa !12
  %316 = load float, ptr %67, align 4, !tbaa !12
  %317 = fcmp ole float %315, %316
  br i1 %317, label %318, label %320

318:                                              ; preds = %313
  %319 = load float, ptr %62, align 4, !tbaa !12
  br label %322

320:                                              ; preds = %313
  %321 = load float, ptr %67, align 4, !tbaa !12
  br label %322

322:                                              ; preds = %320, %318
  %323 = phi float [ %319, %318 ], [ %321, %320 ]
  %324 = fdiv float %314, %323
  store float %324, ptr %70, align 4, !tbaa !12
  br label %326

325:                                              ; preds = %301
  store float 1.000000e+00, ptr %70, align 4, !tbaa !12
  br label %326

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

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

328:                                              ; preds = %327, %251
  %329 = load i32, ptr %69, align 4, !tbaa !9
  %330 = icmp ne i32 %329, 0
  br i1 %330, label %331, label %409

331:                                              ; preds = %328
  %332 = load ptr, ptr %44, align 8, !tbaa !5
  %333 = load i32, ptr %332, align 4, !tbaa !9
  %334 = icmp eq i32 %333, 0
  br i1 %334, label %335, label %409

335:                                              ; preds = %331
  %336 = load float, ptr %67, align 4, !tbaa !12
  store float %336, ptr %61, align 4, !tbaa !12
  store float 0.000000e+00, ptr %62, align 4, !tbaa !12
  %337 = load ptr, ptr %25, align 8, !tbaa !5
  %338 = load i32, ptr %337, align 4, !tbaa !9
  store i32 %338, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %339

339:                                              ; preds = %374, %335
  %340 = load i32, ptr %60, align 4, !tbaa !9
  %341 = load i32, ptr %53, align 4, !tbaa !9
  %342 = icmp sle i32 %340, %341
  br i1 %342, label %343, label %377

343:                                              ; preds = %339
  %344 = load float, ptr %61, align 4, !tbaa !12
  store float %344, ptr %55, align 4, !tbaa !12
  %345 = load ptr, ptr %34, align 8, !tbaa !5
  %346 = load i32, ptr %60, align 4, !tbaa !9
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds float, ptr %345, i64 %347
  %349 = load float, ptr %348, align 4, !tbaa !12
  store float %349, ptr %56, align 4, !tbaa !12
  %350 = load float, ptr %55, align 4, !tbaa !12
  %351 = load float, ptr %56, align 4, !tbaa !12
  %352 = fcmp ole float %350, %351
  br i1 %352, label %353, label %355

353:                                              ; preds = %343
  %354 = load float, ptr %55, align 4, !tbaa !12
  br label %357

355:                                              ; preds = %343
  %356 = load float, ptr %56, align 4, !tbaa !12
  br label %357

357:                                              ; preds = %355, %353
  %358 = phi float [ %354, %353 ], [ %356, %355 ]
  store float %358, ptr %61, align 4, !tbaa !12
  %359 = load float, ptr %62, align 4, !tbaa !12
  store float %359, ptr %55, align 4, !tbaa !12
  %360 = load ptr, ptr %34, align 8, !tbaa !5
  %361 = load i32, ptr %60, align 4, !tbaa !9
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds float, ptr %360, i64 %362
  %364 = load float, ptr %363, align 4, !tbaa !12
  store float %364, ptr %56, align 4, !tbaa !12
  %365 = load float, ptr %55, align 4, !tbaa !12
  %366 = load float, ptr %56, align 4, !tbaa !12
  %367 = fcmp oge float %365, %366
  br i1 %367, label %368, label %370

368:                                              ; preds = %357
  %369 = load float, ptr %55, align 4, !tbaa !12
  br label %372

370:                                              ; preds = %357
  %371 = load float, ptr %56, align 4, !tbaa !12
  br label %372

372:                                              ; preds = %370, %368
  %373 = phi float [ %369, %368 ], [ %371, %370 ]
  store float %373, ptr %62, align 4, !tbaa !12
  br label %374

374:                                              ; preds = %372
  %375 = load i32, ptr %60, align 4, !tbaa !9
  %376 = add nsw i32 %375, 1
  store i32 %376, ptr %60, align 4, !tbaa !9
  br label %339, !llvm.loop !16

377:                                              ; preds = %339
  %378 = load float, ptr %61, align 4, !tbaa !12
  %379 = fcmp ole float %378, 0.000000e+00
  br i1 %379, label %380, label %382

380:                                              ; preds = %377
  %381 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -12, ptr %381, align 4, !tbaa !9
  br label %408

382:                                              ; preds = %377
  %383 = load ptr, ptr %25, align 8, !tbaa !5
  %384 = load i32, ptr %383, align 4, !tbaa !9
  %385 = icmp sgt i32 %384, 0
  br i1 %385, label %386, label %406

386:                                              ; preds = %382
  %387 = load float, ptr %61, align 4, !tbaa !12
  %388 = load float, ptr %72, align 4, !tbaa !12
  %389 = fcmp oge float %387, %388
  br i1 %389, label %390, label %392

390:                                              ; preds = %386
  %391 = load float, ptr %61, align 4, !tbaa !12
  br label %394

392:                                              ; preds = %386
  %393 = load float, ptr %72, align 4, !tbaa !12
  br label %394

394:                                              ; preds = %392, %390
  %395 = phi float [ %391, %390 ], [ %393, %392 ]
  %396 = load float, ptr %62, align 4, !tbaa !12
  %397 = load float, ptr %67, align 4, !tbaa !12
  %398 = fcmp ole float %396, %397
  br i1 %398, label %399, label %401

399:                                              ; preds = %394
  %400 = load float, ptr %62, align 4, !tbaa !12
  br label %403

401:                                              ; preds = %394
  %402 = load float, ptr %67, align 4, !tbaa !12
  br label %403

403:                                              ; preds = %401, %399
  %404 = phi float [ %400, %399 ], [ %402, %401 ]
  %405 = fdiv float %395, %404
  store float %405, ptr %65, align 4, !tbaa !12
  br label %407

406:                                              ; preds = %382
  store float 1.000000e+00, ptr %65, align 4, !tbaa !12
  br label %407

407:                                              ; preds = %406, %403
  br label %408

408:                                              ; preds = %407, %380
  br label %409

409:                                              ; preds = %408, %331, %328
  %410 = load ptr, ptr %44, align 8, !tbaa !5
  %411 = load i32, ptr %410, align 4, !tbaa !9
  %412 = icmp eq i32 %411, 0
  br i1 %412, label %413, label %445

413:                                              ; preds = %409
  %414 = load ptr, ptr %36, align 8, !tbaa !5
  %415 = load i32, ptr %414, align 4, !tbaa !9
  %416 = load ptr, ptr %25, align 8, !tbaa !5
  %417 = load i32, ptr %416, align 4, !tbaa !9
  %418 = icmp sge i32 1, %417
  br i1 %418, label %419, label %420

419:                                              ; preds = %413
  br label %423

420:                                              ; preds = %413
  %421 = load ptr, ptr %25, align 8, !tbaa !5
  %422 = load i32, ptr %421, align 4, !tbaa !9
  br label %423

423:                                              ; preds = %420, %419
  %424 = phi i32 [ 1, %419 ], [ %422, %420 ]
  %425 = icmp slt i32 %415, %424
  br i1 %425, label %426, label %428

426:                                              ; preds = %423
  %427 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -14, ptr %427, align 4, !tbaa !9
  br label %444

428:                                              ; preds = %423
  %429 = load ptr, ptr %38, align 8, !tbaa !5
  %430 = load i32, ptr %429, align 4, !tbaa !9
  %431 = load ptr, ptr %25, align 8, !tbaa !5
  %432 = load i32, ptr %431, align 4, !tbaa !9
  %433 = icmp sge i32 1, %432
  br i1 %433, label %434, label %435

434:                                              ; preds = %428
  br label %438

435:                                              ; preds = %428
  %436 = load ptr, ptr %25, align 8, !tbaa !5
  %437 = load i32, ptr %436, align 4, !tbaa !9
  br label %438

438:                                              ; preds = %435, %434
  %439 = phi i32 [ 1, %434 ], [ %437, %435 ]
  %440 = icmp slt i32 %430, %439
  br i1 %440, label %441, label %443

441:                                              ; preds = %438
  %442 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -16, ptr %442, align 4, !tbaa !9
  br label %443

443:                                              ; preds = %441, %438
  br label %444

444:                                              ; preds = %443, %426
  br label %445

445:                                              ; preds = %444, %409
  br label %446

446:                                              ; preds = %445, %249
  br label %447

447:                                              ; preds = %446, %233
  br label %448

448:                                              ; preds = %447, %218
  br label %449

449:                                              ; preds = %448, %203
  br label %450

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

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

452:                                              ; preds = %451, %178
  %453 = load ptr, ptr %44, align 8, !tbaa !5
  %454 = load i32, ptr %453, align 4, !tbaa !9
  %455 = icmp ne i32 %454, 0
  br i1 %455, label %456, label %461

456:                                              ; preds = %452
  %457 = load ptr, ptr %44, align 8, !tbaa !5
  %458 = load i32, ptr %457, align 4, !tbaa !9
  %459 = sub nsw i32 0, %458
  store i32 %459, ptr %53, align 4, !tbaa !9
  %460 = call i32 @xerbla_(ptr noundef @.str.8, ptr noundef %53, i32 noundef 6)
  store i32 1, ptr %75, align 4
  br label %955

461:                                              ; preds = %452
  %462 = load i32, ptr %64, align 4, !tbaa !9
  %463 = icmp ne i32 %462, 0
  br i1 %463, label %464, label %512

464:                                              ; preds = %461
  %465 = load ptr, ptr %25, align 8, !tbaa !5
  %466 = load ptr, ptr %25, align 8, !tbaa !5
  %467 = load ptr, ptr %27, align 8, !tbaa !5
  %468 = load i32, ptr %46, align 4, !tbaa !9
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds float, ptr %467, i64 %469
  %471 = load ptr, ptr %28, align 8, !tbaa !5
  %472 = load ptr, ptr %33, align 8, !tbaa !5
  %473 = getelementptr inbounds float, ptr %472, i64 1
  %474 = load ptr, ptr %34, align 8, !tbaa !5
  %475 = getelementptr inbounds float, ptr %474, i64 1
  call void @sgeequ_(ptr noundef %465, ptr noundef %466, ptr noundef %470, ptr noundef %471, ptr noundef %473, ptr noundef %475, ptr noundef %70, ptr noundef %65, ptr noundef %57, ptr noundef %68)
  %476 = load i32, ptr %68, align 4, !tbaa !9
  %477 = icmp eq i32 %476, 0
  br i1 %477, label %478, label %511

478:                                              ; preds = %464
  %479 = load ptr, ptr %25, align 8, !tbaa !5
  %480 = load ptr, ptr %25, align 8, !tbaa !5
  %481 = load ptr, ptr %27, align 8, !tbaa !5
  %482 = load i32, ptr %46, align 4, !tbaa !9
  %483 = sext i32 %482 to i64
  %484 = getelementptr inbounds float, ptr %481, i64 %483
  %485 = load ptr, ptr %28, align 8, !tbaa !5
  %486 = load ptr, ptr %33, align 8, !tbaa !5
  %487 = getelementptr inbounds float, ptr %486, i64 1
  %488 = load ptr, ptr %34, align 8, !tbaa !5
  %489 = getelementptr inbounds float, ptr %488, i64 1
  %490 = load ptr, ptr %32, align 8, !tbaa !5
  call void @slaqge_(ptr noundef %479, ptr noundef %480, ptr noundef %484, ptr noundef %485, ptr noundef %487, ptr noundef %489, ptr noundef %70, ptr noundef %65, ptr noundef %57, ptr noundef %490)
  %491 = load ptr, ptr %32, align 8, !tbaa !5
  %492 = call i32 @lsame_(ptr noundef %491, ptr noundef @.str.2)
  %493 = icmp ne i32 %492, 0
  br i1 %493, label %498, label %494

494:                                              ; preds = %478
  %495 = load ptr, ptr %32, align 8, !tbaa !5
  %496 = call i32 @lsame_(ptr noundef %495, ptr noundef @.str.3)
  %497 = icmp ne i32 %496, 0
  br label %498

498:                                              ; preds = %494, %478
  %499 = phi i1 [ true, %478 ], [ %497, %494 ]
  %500 = zext i1 %499 to i32
  store i32 %500, ptr %73, align 4, !tbaa !9
  %501 = load ptr, ptr %32, align 8, !tbaa !5
  %502 = call i32 @lsame_(ptr noundef %501, ptr noundef @.str.4)
  %503 = icmp ne i32 %502, 0
  br i1 %503, label %508, label %504

504:                                              ; preds = %498
  %505 = load ptr, ptr %32, align 8, !tbaa !5
  %506 = call i32 @lsame_(ptr noundef %505, ptr noundef @.str.3)
  %507 = icmp ne i32 %506, 0
  br label %508

508:                                              ; preds = %504, %498
  %509 = phi i1 [ true, %498 ], [ %507, %504 ]
  %510 = zext i1 %509 to i32
  store i32 %510, ptr %69, align 4, !tbaa !9
  br label %511

511:                                              ; preds = %508, %464
  br label %512

512:                                              ; preds = %511, %461
  %513 = load i32, ptr %71, align 4, !tbaa !9
  %514 = icmp ne i32 %513, 0
  br i1 %514, label %515, label %565

515:                                              ; preds = %512
  %516 = load i32, ptr %73, align 4, !tbaa !9
  %517 = icmp ne i32 %516, 0
  br i1 %517, label %518, label %564

518:                                              ; preds = %515
  %519 = load ptr, ptr %26, align 8, !tbaa !5
  %520 = load i32, ptr %519, align 4, !tbaa !9
  store i32 %520, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %521

521:                                              ; preds = %560, %518
  %522 = load i32, ptr %60, align 4, !tbaa !9
  %523 = load i32, ptr %53, align 4, !tbaa !9
  %524 = icmp sle i32 %522, %523
  br i1 %524, label %525, label %563

525:                                              ; preds = %521
  %526 = load ptr, ptr %25, align 8, !tbaa !5
  %527 = load i32, ptr %526, align 4, !tbaa !9
  store i32 %527, ptr %54, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %528

528:                                              ; preds = %556, %525
  %529 = load i32, ptr %59, align 4, !tbaa !9
  %530 = load i32, ptr %54, align 4, !tbaa !9
  %531 = icmp sle i32 %529, %530
  br i1 %531, label %532, label %559

532:                                              ; preds = %528
  %533 = load ptr, ptr %33, align 8, !tbaa !5
  %534 = load i32, ptr %59, align 4, !tbaa !9
  %535 = sext i32 %534 to i64
  %536 = getelementptr inbounds float, ptr %533, i64 %535
  %537 = load float, ptr %536, align 4, !tbaa !12
  %538 = load ptr, ptr %35, align 8, !tbaa !5
  %539 = load i32, ptr %59, align 4, !tbaa !9
  %540 = load i32, ptr %60, align 4, !tbaa !9
  %541 = load i32, ptr %49, align 4, !tbaa !9
  %542 = mul nsw i32 %540, %541
  %543 = add nsw i32 %539, %542
  %544 = sext i32 %543 to i64
  %545 = getelementptr inbounds float, ptr %538, i64 %544
  %546 = load float, ptr %545, align 4, !tbaa !12
  %547 = fmul float %537, %546
  %548 = load ptr, ptr %35, align 8, !tbaa !5
  %549 = load i32, ptr %59, align 4, !tbaa !9
  %550 = load i32, ptr %60, align 4, !tbaa !9
  %551 = load i32, ptr %49, align 4, !tbaa !9
  %552 = mul nsw i32 %550, %551
  %553 = add nsw i32 %549, %552
  %554 = sext i32 %553 to i64
  %555 = getelementptr inbounds float, ptr %548, i64 %554
  store float %547, ptr %555, align 4, !tbaa !12
  br label %556

556:                                              ; preds = %532
  %557 = load i32, ptr %59, align 4, !tbaa !9
  %558 = add nsw i32 %557, 1
  store i32 %558, ptr %59, align 4, !tbaa !9
  br label %528, !llvm.loop !17

559:                                              ; preds = %528
  br label %560

560:                                              ; preds = %559
  %561 = load i32, ptr %60, align 4, !tbaa !9
  %562 = add nsw i32 %561, 1
  store i32 %562, ptr %60, align 4, !tbaa !9
  br label %521, !llvm.loop !18

563:                                              ; preds = %521
  br label %564

564:                                              ; preds = %563, %515
  br label %615

565:                                              ; preds = %512
  %566 = load i32, ptr %69, align 4, !tbaa !9
  %567 = icmp ne i32 %566, 0
  br i1 %567, label %568, label %614

568:                                              ; preds = %565
  %569 = load ptr, ptr %26, align 8, !tbaa !5
  %570 = load i32, ptr %569, align 4, !tbaa !9
  store i32 %570, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %571

571:                                              ; preds = %610, %568
  %572 = load i32, ptr %60, align 4, !tbaa !9
  %573 = load i32, ptr %53, align 4, !tbaa !9
  %574 = icmp sle i32 %572, %573
  br i1 %574, label %575, label %613

575:                                              ; preds = %571
  %576 = load ptr, ptr %25, align 8, !tbaa !5
  %577 = load i32, ptr %576, align 4, !tbaa !9
  store i32 %577, ptr %54, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %578

578:                                              ; preds = %606, %575
  %579 = load i32, ptr %59, align 4, !tbaa !9
  %580 = load i32, ptr %54, align 4, !tbaa !9
  %581 = icmp sle i32 %579, %580
  br i1 %581, label %582, label %609

582:                                              ; preds = %578
  %583 = load ptr, ptr %34, align 8, !tbaa !5
  %584 = load i32, ptr %59, align 4, !tbaa !9
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds float, ptr %583, i64 %585
  %587 = load float, ptr %586, align 4, !tbaa !12
  %588 = load ptr, ptr %35, align 8, !tbaa !5
  %589 = load i32, ptr %59, align 4, !tbaa !9
  %590 = load i32, ptr %60, align 4, !tbaa !9
  %591 = load i32, ptr %49, align 4, !tbaa !9
  %592 = mul nsw i32 %590, %591
  %593 = add nsw i32 %589, %592
  %594 = sext i32 %593 to i64
  %595 = getelementptr inbounds float, ptr %588, i64 %594
  %596 = load float, ptr %595, align 4, !tbaa !12
  %597 = fmul float %587, %596
  %598 = load ptr, ptr %35, align 8, !tbaa !5
  %599 = load i32, ptr %59, align 4, !tbaa !9
  %600 = load i32, ptr %60, align 4, !tbaa !9
  %601 = load i32, ptr %49, align 4, !tbaa !9
  %602 = mul nsw i32 %600, %601
  %603 = add nsw i32 %599, %602
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds float, ptr %598, i64 %604
  store float %597, ptr %605, align 4, !tbaa !12
  br label %606

606:                                              ; preds = %582
  %607 = load i32, ptr %59, align 4, !tbaa !9
  %608 = add nsw i32 %607, 1
  store i32 %608, ptr %59, align 4, !tbaa !9
  br label %578, !llvm.loop !19

609:                                              ; preds = %578
  br label %610

610:                                              ; preds = %609
  %611 = load i32, ptr %60, align 4, !tbaa !9
  %612 = add nsw i32 %611, 1
  store i32 %612, ptr %60, align 4, !tbaa !9
  br label %571, !llvm.loop !20

613:                                              ; preds = %571
  br label %614

614:                                              ; preds = %613, %565
  br label %615

615:                                              ; preds = %614, %564
  %616 = load i32, ptr %66, align 4, !tbaa !9
  %617 = icmp ne i32 %616, 0
  br i1 %617, label %621, label %618

618:                                              ; preds = %615
  %619 = load i32, ptr %64, align 4, !tbaa !9
  %620 = icmp ne i32 %619, 0
  br i1 %620, label %621, label %681

621:                                              ; preds = %618, %615
  %622 = load ptr, ptr %25, align 8, !tbaa !5
  %623 = load ptr, ptr %25, align 8, !tbaa !5
  %624 = load ptr, ptr %27, align 8, !tbaa !5
  %625 = load i32, ptr %46, align 4, !tbaa !9
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds float, ptr %624, i64 %626
  %628 = load ptr, ptr %28, align 8, !tbaa !5
  %629 = load ptr, ptr %29, align 8, !tbaa !5
  %630 = load i32, ptr %48, align 4, !tbaa !9
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds float, ptr %629, i64 %631
  %633 = load ptr, ptr %30, align 8, !tbaa !5
  call void @slacpy_(ptr noundef @.str.9, ptr noundef %622, ptr noundef %623, ptr noundef %627, ptr noundef %628, ptr noundef %632, ptr noundef %633)
  %634 = load ptr, ptr %25, align 8, !tbaa !5
  %635 = load ptr, ptr %25, align 8, !tbaa !5
  %636 = load ptr, ptr %29, align 8, !tbaa !5
  %637 = load i32, ptr %48, align 4, !tbaa !9
  %638 = sext i32 %637 to i64
  %639 = getelementptr inbounds float, ptr %636, i64 %638
  %640 = load ptr, ptr %30, align 8, !tbaa !5
  %641 = load ptr, ptr %31, align 8, !tbaa !5
  %642 = getelementptr inbounds i32, ptr %641, i64 1
  %643 = load ptr, ptr %44, align 8, !tbaa !5
  %644 = call i32 @sgetrf_(ptr noundef %634, ptr noundef %635, ptr noundef %639, ptr noundef %640, ptr noundef %642, ptr noundef %643)
  %645 = load ptr, ptr %44, align 8, !tbaa !5
  %646 = load i32, ptr %645, align 4, !tbaa !9
  %647 = icmp sgt i32 %646, 0
  br i1 %647, label %648, label %680

648:                                              ; preds = %621
  %649 = load ptr, ptr %44, align 8, !tbaa !5
  %650 = load ptr, ptr %44, align 8, !tbaa !5
  %651 = load ptr, ptr %29, align 8, !tbaa !5
  %652 = load i32, ptr %48, align 4, !tbaa !9
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds float, ptr %651, i64 %653
  %655 = load ptr, ptr %30, align 8, !tbaa !5
  %656 = load ptr, ptr %42, align 8, !tbaa !5
  %657 = getelementptr inbounds float, ptr %656, i64 1
  %658 = call float @slantr_(ptr noundef @.str.10, ptr noundef @.str.11, ptr noundef @.str, ptr noundef %649, ptr noundef %650, ptr noundef %654, ptr noundef %655, ptr noundef %657)
  store float %658, ptr %74, align 4, !tbaa !12
  %659 = load float, ptr %74, align 4, !tbaa !12
  %660 = fcmp oeq float %659, 0.000000e+00
  br i1 %660, label %661, label %662

661:                                              ; preds = %648
  store float 1.000000e+00, ptr %74, align 4, !tbaa !12
  br label %675

662:                                              ; preds = %648
  %663 = load ptr, ptr %25, align 8, !tbaa !5
  %664 = load ptr, ptr %44, align 8, !tbaa !5
  %665 = load ptr, ptr %27, align 8, !tbaa !5
  %666 = load i32, ptr %46, align 4, !tbaa !9
  %667 = sext i32 %666 to i64
  %668 = getelementptr inbounds float, ptr %665, i64 %667
  %669 = load ptr, ptr %28, align 8, !tbaa !5
  %670 = load ptr, ptr %42, align 8, !tbaa !5
  %671 = getelementptr inbounds float, ptr %670, i64 1
  %672 = call float @slange_(ptr noundef @.str.10, ptr noundef %663, ptr noundef %664, ptr noundef %668, ptr noundef %669, ptr noundef %671)
  %673 = load float, ptr %74, align 4, !tbaa !12
  %674 = fdiv float %672, %673
  store float %674, ptr %74, align 4, !tbaa !12
  br label %675

675:                                              ; preds = %662, %661
  %676 = load float, ptr %74, align 4, !tbaa !12
  %677 = load ptr, ptr %42, align 8, !tbaa !5
  %678 = getelementptr inbounds float, ptr %677, i64 1
  store float %676, ptr %678, align 4, !tbaa !12
  %679 = load ptr, ptr %39, align 8, !tbaa !5
  store float 0.000000e+00, ptr %679, align 4, !tbaa !12
  store i32 1, ptr %75, align 4
  br label %955

680:                                              ; preds = %621
  br label %681

681:                                              ; preds = %680, %618
  %682 = load i32, ptr %71, align 4, !tbaa !9
  %683 = icmp ne i32 %682, 0
  br i1 %683, label %684, label %686

684:                                              ; preds = %681
  %685 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  store i8 49, ptr %685, align 1, !tbaa !11
  br label %688

686:                                              ; preds = %681
  %687 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  store i8 73, ptr %687, align 1, !tbaa !11
  br label %688

688:                                              ; preds = %686, %684
  %689 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  %690 = load ptr, ptr %25, align 8, !tbaa !5
  %691 = load ptr, ptr %25, align 8, !tbaa !5
  %692 = load ptr, ptr %27, align 8, !tbaa !5
  %693 = load i32, ptr %46, align 4, !tbaa !9
  %694 = sext i32 %693 to i64
  %695 = getelementptr inbounds float, ptr %692, i64 %694
  %696 = load ptr, ptr %28, align 8, !tbaa !5
  %697 = load ptr, ptr %42, align 8, !tbaa !5
  %698 = getelementptr inbounds float, ptr %697, i64 1
  %699 = call float @slange_(ptr noundef %689, ptr noundef %690, ptr noundef %691, ptr noundef %695, ptr noundef %696, ptr noundef %698)
  store float %699, ptr %63, align 4, !tbaa !12
  %700 = load ptr, ptr %25, align 8, !tbaa !5
  %701 = load ptr, ptr %25, align 8, !tbaa !5
  %702 = load ptr, ptr %29, align 8, !tbaa !5
  %703 = load i32, ptr %48, align 4, !tbaa !9
  %704 = sext i32 %703 to i64
  %705 = getelementptr inbounds float, ptr %702, i64 %704
  %706 = load ptr, ptr %30, align 8, !tbaa !5
  %707 = load ptr, ptr %42, align 8, !tbaa !5
  %708 = getelementptr inbounds float, ptr %707, i64 1
  %709 = call float @slantr_(ptr noundef @.str.10, ptr noundef @.str.11, ptr noundef @.str, ptr noundef %700, ptr noundef %701, ptr noundef %705, ptr noundef %706, ptr noundef %708)
  store float %709, ptr %74, align 4, !tbaa !12
  %710 = load float, ptr %74, align 4, !tbaa !12
  %711 = fcmp oeq float %710, 0.000000e+00
  br i1 %711, label %712, label %713

712:                                              ; preds = %688
  store float 1.000000e+00, ptr %74, align 4, !tbaa !12
  br label %726

713:                                              ; preds = %688
  %714 = load ptr, ptr %25, align 8, !tbaa !5
  %715 = load ptr, ptr %25, align 8, !tbaa !5
  %716 = load ptr, ptr %27, align 8, !tbaa !5
  %717 = load i32, ptr %46, align 4, !tbaa !9
  %718 = sext i32 %717 to i64
  %719 = getelementptr inbounds float, ptr %716, i64 %718
  %720 = load ptr, ptr %28, align 8, !tbaa !5
  %721 = load ptr, ptr %42, align 8, !tbaa !5
  %722 = getelementptr inbounds float, ptr %721, i64 1
  %723 = call float @slange_(ptr noundef @.str.10, ptr noundef %714, ptr noundef %715, ptr noundef %719, ptr noundef %720, ptr noundef %722)
  %724 = load float, ptr %74, align 4, !tbaa !12
  %725 = fdiv float %723, %724
  store float %725, ptr %74, align 4, !tbaa !12
  br label %726

726:                                              ; preds = %713, %712
  %727 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  %728 = load ptr, ptr %25, align 8, !tbaa !5
  %729 = load ptr, ptr %29, align 8, !tbaa !5
  %730 = load i32, ptr %48, align 4, !tbaa !9
  %731 = sext i32 %730 to i64
  %732 = getelementptr inbounds float, ptr %729, i64 %731
  %733 = load ptr, ptr %30, align 8, !tbaa !5
  %734 = load ptr, ptr %39, align 8, !tbaa !5
  %735 = load ptr, ptr %42, align 8, !tbaa !5
  %736 = getelementptr inbounds float, ptr %735, i64 1
  %737 = load ptr, ptr %43, align 8, !tbaa !5
  %738 = getelementptr inbounds i32, ptr %737, i64 1
  %739 = load ptr, ptr %44, align 8, !tbaa !5
  call void @sgecon_(ptr noundef %727, ptr noundef %728, ptr noundef %732, ptr noundef %733, ptr noundef %63, ptr noundef %734, ptr noundef %736, ptr noundef %738, ptr noundef %739)
  %740 = load ptr, ptr %25, align 8, !tbaa !5
  %741 = load ptr, ptr %26, align 8, !tbaa !5
  %742 = load ptr, ptr %35, align 8, !tbaa !5
  %743 = load i32, ptr %50, align 4, !tbaa !9
  %744 = sext i32 %743 to i64
  %745 = getelementptr inbounds float, ptr %742, i64 %744
  %746 = load ptr, ptr %36, align 8, !tbaa !5
  %747 = load ptr, ptr %37, align 8, !tbaa !5
  %748 = load i32, ptr %52, align 4, !tbaa !9
  %749 = sext i32 %748 to i64
  %750 = getelementptr inbounds float, ptr %747, i64 %749
  %751 = load ptr, ptr %38, align 8, !tbaa !5
  call void @slacpy_(ptr noundef @.str.9, ptr noundef %740, ptr noundef %741, ptr noundef %745, ptr noundef %746, ptr noundef %750, ptr noundef %751)
  %752 = load ptr, ptr %24, align 8, !tbaa !5
  %753 = load ptr, ptr %25, align 8, !tbaa !5
  %754 = load ptr, ptr %26, align 8, !tbaa !5
  %755 = load ptr, ptr %29, align 8, !tbaa !5
  %756 = load i32, ptr %48, align 4, !tbaa !9
  %757 = sext i32 %756 to i64
  %758 = getelementptr inbounds float, ptr %755, i64 %757
  %759 = load ptr, ptr %30, align 8, !tbaa !5
  %760 = load ptr, ptr %31, align 8, !tbaa !5
  %761 = getelementptr inbounds i32, ptr %760, i64 1
  %762 = load ptr, ptr %37, align 8, !tbaa !5
  %763 = load i32, ptr %52, align 4, !tbaa !9
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds float, ptr %762, i64 %764
  %766 = load ptr, ptr %38, align 8, !tbaa !5
  %767 = load ptr, ptr %44, align 8, !tbaa !5
  %768 = call i32 @sgetrs_(ptr noundef %752, ptr noundef %753, ptr noundef %754, ptr noundef %758, ptr noundef %759, ptr noundef %761, ptr noundef %765, ptr noundef %766, ptr noundef %767)
  %769 = load ptr, ptr %24, align 8, !tbaa !5
  %770 = load ptr, ptr %25, align 8, !tbaa !5
  %771 = load ptr, ptr %26, align 8, !tbaa !5
  %772 = load ptr, ptr %27, align 8, !tbaa !5
  %773 = load i32, ptr %46, align 4, !tbaa !9
  %774 = sext i32 %773 to i64
  %775 = getelementptr inbounds float, ptr %772, i64 %774
  %776 = load ptr, ptr %28, align 8, !tbaa !5
  %777 = load ptr, ptr %29, align 8, !tbaa !5
  %778 = load i32, ptr %48, align 4, !tbaa !9
  %779 = sext i32 %778 to i64
  %780 = getelementptr inbounds float, ptr %777, i64 %779
  %781 = load ptr, ptr %30, align 8, !tbaa !5
  %782 = load ptr, ptr %31, align 8, !tbaa !5
  %783 = getelementptr inbounds i32, ptr %782, i64 1
  %784 = load ptr, ptr %35, align 8, !tbaa !5
  %785 = load i32, ptr %50, align 4, !tbaa !9
  %786 = sext i32 %785 to i64
  %787 = getelementptr inbounds float, ptr %784, i64 %786
  %788 = load ptr, ptr %36, align 8, !tbaa !5
  %789 = load ptr, ptr %37, align 8, !tbaa !5
  %790 = load i32, ptr %52, align 4, !tbaa !9
  %791 = sext i32 %790 to i64
  %792 = getelementptr inbounds float, ptr %789, i64 %791
  %793 = load ptr, ptr %38, align 8, !tbaa !5
  %794 = load ptr, ptr %40, align 8, !tbaa !5
  %795 = getelementptr inbounds float, ptr %794, i64 1
  %796 = load ptr, ptr %41, align 8, !tbaa !5
  %797 = getelementptr inbounds float, ptr %796, i64 1
  %798 = load ptr, ptr %42, align 8, !tbaa !5
  %799 = getelementptr inbounds float, ptr %798, i64 1
  %800 = load ptr, ptr %43, align 8, !tbaa !5
  %801 = getelementptr inbounds i32, ptr %800, i64 1
  %802 = load ptr, ptr %44, align 8, !tbaa !5
  call void @sgerfs_(ptr noundef %769, ptr noundef %770, ptr noundef %771, ptr noundef %775, ptr noundef %776, ptr noundef %780, ptr noundef %781, ptr noundef %783, ptr noundef %787, ptr noundef %788, ptr noundef %792, ptr noundef %793, ptr noundef %795, ptr noundef %797, ptr noundef %799, ptr noundef %801, ptr noundef %802)
  %803 = load i32, ptr %71, align 4, !tbaa !9
  %804 = icmp ne i32 %803, 0
  br i1 %804, label %805, label %873

805:                                              ; preds = %726
  %806 = load i32, ptr %69, align 4, !tbaa !9
  %807 = icmp ne i32 %806, 0
  br i1 %807, label %808, label %872

808:                                              ; preds = %805
  %809 = load ptr, ptr %26, align 8, !tbaa !5
  %810 = load i32, ptr %809, align 4, !tbaa !9
  store i32 %810, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %811

811:                                              ; preds = %850, %808
  %812 = load i32, ptr %60, align 4, !tbaa !9
  %813 = load i32, ptr %53, align 4, !tbaa !9
  %814 = icmp sle i32 %812, %813
  br i1 %814, label %815, label %853

815:                                              ; preds = %811
  %816 = load ptr, ptr %25, align 8, !tbaa !5
  %817 = load i32, ptr %816, align 4, !tbaa !9
  store i32 %817, ptr %54, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %818

818:                                              ; preds = %846, %815
  %819 = load i32, ptr %59, align 4, !tbaa !9
  %820 = load i32, ptr %54, align 4, !tbaa !9
  %821 = icmp sle i32 %819, %820
  br i1 %821, label %822, label %849

822:                                              ; preds = %818
  %823 = load ptr, ptr %34, align 8, !tbaa !5
  %824 = load i32, ptr %59, align 4, !tbaa !9
  %825 = sext i32 %824 to i64
  %826 = getelementptr inbounds float, ptr %823, i64 %825
  %827 = load float, ptr %826, align 4, !tbaa !12
  %828 = load ptr, ptr %37, align 8, !tbaa !5
  %829 = load i32, ptr %59, align 4, !tbaa !9
  %830 = load i32, ptr %60, align 4, !tbaa !9
  %831 = load i32, ptr %51, align 4, !tbaa !9
  %832 = mul nsw i32 %830, %831
  %833 = add nsw i32 %829, %832
  %834 = sext i32 %833 to i64
  %835 = getelementptr inbounds float, ptr %828, i64 %834
  %836 = load float, ptr %835, align 4, !tbaa !12
  %837 = fmul float %827, %836
  %838 = load ptr, ptr %37, align 8, !tbaa !5
  %839 = load i32, ptr %59, align 4, !tbaa !9
  %840 = load i32, ptr %60, align 4, !tbaa !9
  %841 = load i32, ptr %51, align 4, !tbaa !9
  %842 = mul nsw i32 %840, %841
  %843 = add nsw i32 %839, %842
  %844 = sext i32 %843 to i64
  %845 = getelementptr inbounds float, ptr %838, i64 %844
  store float %837, ptr %845, align 4, !tbaa !12
  br label %846

846:                                              ; preds = %822
  %847 = load i32, ptr %59, align 4, !tbaa !9
  %848 = add nsw i32 %847, 1
  store i32 %848, ptr %59, align 4, !tbaa !9
  br label %818, !llvm.loop !21

849:                                              ; preds = %818
  br label %850

850:                                              ; preds = %849
  %851 = load i32, ptr %60, align 4, !tbaa !9
  %852 = add nsw i32 %851, 1
  store i32 %852, ptr %60, align 4, !tbaa !9
  br label %811, !llvm.loop !22

853:                                              ; preds = %811
  %854 = load ptr, ptr %26, align 8, !tbaa !5
  %855 = load i32, ptr %854, align 4, !tbaa !9
  store i32 %855, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %856

856:                                              ; preds = %868, %853
  %857 = load i32, ptr %60, align 4, !tbaa !9
  %858 = load i32, ptr %53, align 4, !tbaa !9
  %859 = icmp sle i32 %857, %858
  br i1 %859, label %860, label %871

860:                                              ; preds = %856
  %861 = load float, ptr %65, align 4, !tbaa !12
  %862 = load ptr, ptr %40, align 8, !tbaa !5
  %863 = load i32, ptr %60, align 4, !tbaa !9
  %864 = sext i32 %863 to i64
  %865 = getelementptr inbounds float, ptr %862, i64 %864
  %866 = load float, ptr %865, align 4, !tbaa !12
  %867 = fdiv float %866, %861
  store float %867, ptr %865, align 4, !tbaa !12
  br label %868

868:                                              ; preds = %860
  %869 = load i32, ptr %60, align 4, !tbaa !9
  %870 = add nsw i32 %869, 1
  store i32 %870, ptr %60, align 4, !tbaa !9
  br label %856, !llvm.loop !23

871:                                              ; preds = %856
  br label %872

872:                                              ; preds = %871, %805
  br label %941

873:                                              ; preds = %726
  %874 = load i32, ptr %73, align 4, !tbaa !9
  %875 = icmp ne i32 %874, 0
  br i1 %875, label %876, label %940

876:                                              ; preds = %873
  %877 = load ptr, ptr %26, align 8, !tbaa !5
  %878 = load i32, ptr %877, align 4, !tbaa !9
  store i32 %878, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %879

879:                                              ; preds = %918, %876
  %880 = load i32, ptr %60, align 4, !tbaa !9
  %881 = load i32, ptr %53, align 4, !tbaa !9
  %882 = icmp sle i32 %880, %881
  br i1 %882, label %883, label %921

883:                                              ; preds = %879
  %884 = load ptr, ptr %25, align 8, !tbaa !5
  %885 = load i32, ptr %884, align 4, !tbaa !9
  store i32 %885, ptr %54, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %886

886:                                              ; preds = %914, %883
  %887 = load i32, ptr %59, align 4, !tbaa !9
  %888 = load i32, ptr %54, align 4, !tbaa !9
  %889 = icmp sle i32 %887, %888
  br i1 %889, label %890, label %917

890:                                              ; preds = %886
  %891 = load ptr, ptr %33, align 8, !tbaa !5
  %892 = load i32, ptr %59, align 4, !tbaa !9
  %893 = sext i32 %892 to i64
  %894 = getelementptr inbounds float, ptr %891, i64 %893
  %895 = load float, ptr %894, align 4, !tbaa !12
  %896 = load ptr, ptr %37, align 8, !tbaa !5
  %897 = load i32, ptr %59, align 4, !tbaa !9
  %898 = load i32, ptr %60, align 4, !tbaa !9
  %899 = load i32, ptr %51, align 4, !tbaa !9
  %900 = mul nsw i32 %898, %899
  %901 = add nsw i32 %897, %900
  %902 = sext i32 %901 to i64
  %903 = getelementptr inbounds float, ptr %896, i64 %902
  %904 = load float, ptr %903, align 4, !tbaa !12
  %905 = fmul float %895, %904
  %906 = load ptr, ptr %37, align 8, !tbaa !5
  %907 = load i32, ptr %59, align 4, !tbaa !9
  %908 = load i32, ptr %60, align 4, !tbaa !9
  %909 = load i32, ptr %51, align 4, !tbaa !9
  %910 = mul nsw i32 %908, %909
  %911 = add nsw i32 %907, %910
  %912 = sext i32 %911 to i64
  %913 = getelementptr inbounds float, ptr %906, i64 %912
  store float %905, ptr %913, align 4, !tbaa !12
  br label %914

914:                                              ; preds = %890
  %915 = load i32, ptr %59, align 4, !tbaa !9
  %916 = add nsw i32 %915, 1
  store i32 %916, ptr %59, align 4, !tbaa !9
  br label %886, !llvm.loop !24

917:                                              ; preds = %886
  br label %918

918:                                              ; preds = %917
  %919 = load i32, ptr %60, align 4, !tbaa !9
  %920 = add nsw i32 %919, 1
  store i32 %920, ptr %60, align 4, !tbaa !9
  br label %879, !llvm.loop !25

921:                                              ; preds = %879
  %922 = load ptr, ptr %26, align 8, !tbaa !5
  %923 = load i32, ptr %922, align 4, !tbaa !9
  store i32 %923, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %924

924:                                              ; preds = %936, %921
  %925 = load i32, ptr %60, align 4, !tbaa !9
  %926 = load i32, ptr %53, align 4, !tbaa !9
  %927 = icmp sle i32 %925, %926
  br i1 %927, label %928, label %939

928:                                              ; preds = %924
  %929 = load float, ptr %70, align 4, !tbaa !12
  %930 = load ptr, ptr %40, align 8, !tbaa !5
  %931 = load i32, ptr %60, align 4, !tbaa !9
  %932 = sext i32 %931 to i64
  %933 = getelementptr inbounds float, ptr %930, i64 %932
  %934 = load float, ptr %933, align 4, !tbaa !12
  %935 = fdiv float %934, %929
  store float %935, ptr %933, align 4, !tbaa !12
  br label %936

936:                                              ; preds = %928
  %937 = load i32, ptr %60, align 4, !tbaa !9
  %938 = add nsw i32 %937, 1
  store i32 %938, ptr %60, align 4, !tbaa !9
  br label %924, !llvm.loop !26

939:                                              ; preds = %924
  br label %940

940:                                              ; preds = %939, %873
  br label %941

941:                                              ; preds = %940, %872
  %942 = load ptr, ptr %39, align 8, !tbaa !5
  %943 = load float, ptr %942, align 4, !tbaa !12
  %944 = call float @slamch_(ptr noundef @.str.12)
  %945 = fcmp olt float %943, %944
  br i1 %945, label %946, label %951

946:                                              ; preds = %941
  %947 = load ptr, ptr %25, align 8, !tbaa !5
  %948 = load i32, ptr %947, align 4, !tbaa !9
  %949 = add nsw i32 %948, 1
  %950 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 %949, ptr %950, align 4, !tbaa !9
  br label %951

951:                                              ; preds = %946, %941
  %952 = load float, ptr %74, align 4, !tbaa !12
  %953 = load ptr, ptr %42, align 8, !tbaa !5
  %954 = getelementptr inbounds float, ptr %953, i64 1
  store float %952, ptr %954, align 4, !tbaa !12
  store i32 1, ptr %75, align 4
  br label %955

955:                                              ; preds = %951, %675, %456
  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 4, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 1, 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
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  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 float @slamch_(ptr noundef) #2

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

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

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

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

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

declare float @slantr_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare float @slange_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

declare void @sgerfs_(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 = !{!"float", !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}


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

; Function Attrs: nounwind uwtable
define dso_local void @sgesvx_(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) local_unnamed_addr #0 {
  %23 = alloca i32, align 4
  %24 = alloca float, align 4
  %25 = alloca [1 x i8], align 1
  %26 = alloca float, align 4
  %27 = alloca float, align 4
  %28 = alloca i32, align 4
  %29 = alloca float, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #4
  %30 = getelementptr inbounds i8, ptr %10, i64 -4
  %31 = getelementptr inbounds i8, ptr %11, i64 -4
  %32 = load i32, ptr %13, align 4, !tbaa !5
  %narrow = xor i32 %32, -1
  %33 = sext i32 %narrow to i64
  %34 = getelementptr inbounds float, ptr %12, i64 %33
  %35 = load i32, ptr %15, align 4, !tbaa !5
  %narrow393 = xor i32 %35, -1
  %36 = sext i32 %narrow393 to i64
  %37 = getelementptr inbounds float, ptr %14, i64 %36
  %38 = getelementptr inbounds i8, ptr %17, i64 -4
  store i32 0, ptr %21, align 4, !tbaa !5
  %39 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %40 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %41 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #4
  %42 = icmp ne i32 %39, 0
  %43 = icmp ne i32 %40, 0
  %or.cond = select i1 %42, i1 true, i1 %43
  br i1 %or.cond, label %.thread, label %44

.thread:                                          ; preds = %22
  store i8 78, ptr %9, align 1, !tbaa !9
  br label %62

44:                                               ; preds = %22
  %45 = tail call i32 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.2) #4
  %.not = icmp eq i32 %45, 0
  br i1 %.not, label %46, label %49

46:                                               ; preds = %44
  %47 = tail call i32 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.3) #4
  %48 = icmp ne i32 %47, 0
  br label %49

49:                                               ; preds = %46, %44
  %50 = phi i1 [ true, %44 ], [ %48, %46 ]
  %51 = zext i1 %50 to i32
  %52 = tail call i32 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.4) #4
  %.not376 = icmp eq i32 %52, 0
  br i1 %.not376, label %53, label %56

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

56:                                               ; preds = %53, %49
  %57 = phi i1 [ true, %49 ], [ %55, %53 ]
  %58 = zext i1 %57 to i32
  %59 = tail call float @slamch_(ptr noundef nonnull @.str.5) #4
  %60 = fdiv float 1.000000e+00, %59
  %61 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.6) #4
  %.not377 = icmp eq i32 %61, 0
  br i1 %.not377, label %.thread422.sink.split, label %62

62:                                               ; preds = %.thread, %56
  %.0353415 = phi i32 [ 0, %.thread ], [ %51, %56 ]
  %.0355413 = phi float [ undef, %.thread ], [ %59, %56 ]
  %.0356412 = phi i32 [ 0, %.thread ], [ %58, %56 ]
  %.0358410 = phi float [ undef, %.thread ], [ %60, %56 ]
  %.not378 = icmp eq i32 %41, 0
  br i1 %.not378, label %63, label %67

63:                                               ; preds = %62
  %64 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.7) #4
  %.not379 = icmp eq i32 %64, 0
  br i1 %.not379, label %65, label %67

65:                                               ; preds = %63
  %66 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #4
  %.not380 = icmp eq i32 %66, 0
  br i1 %.not380, label %.thread422.sink.split, label %67

67:                                               ; preds = %65, %63, %62
  %68 = load i32, ptr %2, align 4, !tbaa !5
  %69 = icmp slt i32 %68, 0
  br i1 %69, label %.thread422.sink.split, label %70

70:                                               ; preds = %67
  %71 = load i32, ptr %3, align 4, !tbaa !5
  %72 = icmp slt i32 %71, 0
  br i1 %72, label %.thread422.sink.split, label %73

73:                                               ; preds = %70
  %74 = load i32, ptr %5, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %68, i32 1)
  %75 = icmp slt i32 %74, %spec.select
  br i1 %75, label %.thread422.sink.split, label %76

76:                                               ; preds = %73
  %77 = load i32, ptr %7, align 4, !tbaa !5
  %78 = icmp slt i32 %77, %spec.select
  br i1 %78, label %.thread422.sink.split, label %79

79:                                               ; preds = %76
  %80 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.6) #4
  %81 = icmp eq i32 %80, 0
  %82 = icmp ne i32 %.0353415, 0
  %or.cond5 = select i1 %81, i1 true, i1 %82
  %83 = icmp ne i32 %.0356412, 0
  %or.cond7 = select i1 %or.cond5, i1 true, i1 %83
  br i1 %or.cond7, label %86, label %84

84:                                               ; preds = %79
  %85 = tail call i32 @lsame_(ptr noundef %9, ptr noundef nonnull @.str) #4
  %.not381 = icmp eq i32 %85, 0
  br i1 %.not381, label %.thread422.sink.split, label %..thread417_crit_edge

..thread417_crit_edge:                            ; preds = %84
  %.pr.pre = load i32, ptr %21, align 4, !tbaa !5
  br label %.thread417

86:                                               ; preds = %79
  br i1 %82, label %87, label %119

87:                                               ; preds = %86
  %88 = load i32, ptr %2, align 4, !tbaa !5
  %.not382431 = icmp slt i32 %88, 1
  br i1 %.not382431, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %87
  %89 = zext nneg i32 %88 to i64
  %xtraiter = and i64 %89, 1
  %90 = icmp eq i32 %88, 1
  br i1 %90, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.preheader
  %unroll_iter = and i64 %89, 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 ]
  %.0359434 = phi float [ 0.000000e+00, %.lr.ph.preheader.new ], [ %102, %.lr.ph ]
  %.0361433 = phi float [ %.0358410, %.lr.ph.preheader.new ], [ %100, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %91 = getelementptr inbounds float, ptr %30, i64 %indvars.iv
  %92 = load float, ptr %91, align 4, !tbaa !10
  %93 = fcmp ole float %.0361433, %92
  %94 = select i1 %93, float %.0361433, float %92
  %95 = fcmp oge float %.0359434, %92
  %96 = select i1 %95, float %.0359434, float %92
  %97 = getelementptr float, ptr %10, i64 %indvars.iv
  %98 = load float, ptr %97, align 4, !tbaa !10
  %99 = fcmp ole float %94, %98
  %100 = select i1 %99, float %94, float %98
  %101 = fcmp oge float %96, %98
  %102 = select i1 %101, float %96, float %98
  %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
  %.lcssa698.ph = phi float [ poison, %.lr.ph.preheader ], [ %100, %.lr.ph ]
  %.lcssa697.ph = phi float [ poison, %.lr.ph.preheader ], [ %102, %.lr.ph ]
  %indvars.iv.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next.1, %.lr.ph ]
  %.0359434.unr = phi float [ 0.000000e+00, %.lr.ph.preheader ], [ %102, %.lr.ph ]
  %.0361433.unr = phi float [ %.0358410, %.lr.ph.preheader ], [ %100, %.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
  %103 = getelementptr inbounds float, ptr %30, i64 %indvars.iv.unr
  %104 = load float, ptr %103, align 4, !tbaa !10
  %105 = fcmp ole float %.0361433.unr, %104
  %106 = select i1 %105, float %.0361433.unr, float %104
  %107 = fcmp oge float %.0359434.unr, %104
  %108 = select i1 %107, float %.0359434.unr, float %104
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %87
  %.0361.lcssa = phi float [ %.0358410, %87 ], [ %.lcssa698.ph, %._crit_edge.loopexit.unr-lcssa ], [ %106, %.lr.ph.epil ]
  %.0359.lcssa = phi float [ 0.000000e+00, %87 ], [ %.lcssa697.ph, %._crit_edge.loopexit.unr-lcssa ], [ %108, %.lr.ph.epil ]
  %109 = fcmp ugt float %.0361.lcssa, 0.000000e+00
  br i1 %109, label %110, label %.thread422.sink.split

110:                                              ; preds = %._crit_edge
  %111 = icmp sgt i32 %88, 0
  br i1 %111, label %112, label %118

112:                                              ; preds = %110
  %113 = fcmp oge float %.0361.lcssa, %.0355413
  %114 = select i1 %113, float %.0361.lcssa, float %.0355413
  %115 = fcmp ole float %.0359.lcssa, %.0358410
  %116 = select i1 %115, float %.0359.lcssa, float %.0358410
  %117 = fdiv float %114, %116
  store float %117, ptr %29, align 4, !tbaa !10
  br label %119

118:                                              ; preds = %110
  store float 1.000000e+00, ptr %29, align 4, !tbaa !10
  br label %119

119:                                              ; preds = %118, %112, %86
  %.pr.pre556.pr = load i32, ptr %21, align 4, !tbaa !5
  br i1 %83, label %120, label %.thread417

120:                                              ; preds = %119
  %121 = icmp eq i32 %.pr.pre556.pr, 0
  br i1 %121, label %122, label %.thread422

122:                                              ; preds = %120
  %123 = load i32, ptr %2, align 4, !tbaa !5
  %.not383436 = icmp slt i32 %123, 1
  br i1 %.not383436, label %._crit_edge442, label %.lr.ph441.preheader

.lr.ph441.preheader:                              ; preds = %122
  %124 = zext nneg i32 %123 to i64
  %xtraiter701 = and i64 %124, 1
  %125 = icmp eq i32 %123, 1
  br i1 %125, label %._crit_edge442.loopexit.unr-lcssa, label %.lr.ph441.preheader.new

.lr.ph441.preheader.new:                          ; preds = %.lr.ph441.preheader
  %unroll_iter705 = and i64 %124, 2147483646
  br label %.lr.ph441

.lr.ph441:                                        ; preds = %.lr.ph441, %.lr.ph441.preheader.new
  %indvars.iv501 = phi i64 [ 1, %.lr.ph441.preheader.new ], [ %indvars.iv.next502.1, %.lr.ph441 ]
  %.1360439 = phi float [ 0.000000e+00, %.lr.ph441.preheader.new ], [ %137, %.lr.ph441 ]
  %.1362438 = phi float [ %.0358410, %.lr.ph441.preheader.new ], [ %135, %.lr.ph441 ]
  %niter706 = phi i64 [ 0, %.lr.ph441.preheader.new ], [ %niter706.next.1, %.lr.ph441 ]
  %126 = getelementptr inbounds float, ptr %31, i64 %indvars.iv501
  %127 = load float, ptr %126, align 4, !tbaa !10
  %128 = fcmp ole float %.1362438, %127
  %129 = select i1 %128, float %.1362438, float %127
  %130 = fcmp oge float %.1360439, %127
  %131 = select i1 %130, float %.1360439, float %127
  %132 = getelementptr float, ptr %11, i64 %indvars.iv501
  %133 = load float, ptr %132, align 4, !tbaa !10
  %134 = fcmp ole float %129, %133
  %135 = select i1 %134, float %129, float %133
  %136 = fcmp oge float %131, %133
  %137 = select i1 %136, float %131, float %133
  %indvars.iv.next502.1 = add nuw nsw i64 %indvars.iv501, 2
  %niter706.next.1 = add i64 %niter706, 2
  %niter706.ncmp.1 = icmp eq i64 %niter706.next.1, %unroll_iter705
  br i1 %niter706.ncmp.1, label %._crit_edge442.loopexit.unr-lcssa, label %.lr.ph441, !llvm.loop !14

._crit_edge442.loopexit.unr-lcssa:                ; preds = %.lr.ph441, %.lr.ph441.preheader
  %.lcssa696.ph = phi float [ poison, %.lr.ph441.preheader ], [ %135, %.lr.ph441 ]
  %.lcssa.ph = phi float [ poison, %.lr.ph441.preheader ], [ %137, %.lr.ph441 ]
  %indvars.iv501.unr = phi i64 [ 1, %.lr.ph441.preheader ], [ %indvars.iv.next502.1, %.lr.ph441 ]
  %.1360439.unr = phi float [ 0.000000e+00, %.lr.ph441.preheader ], [ %137, %.lr.ph441 ]
  %.1362438.unr = phi float [ %.0358410, %.lr.ph441.preheader ], [ %135, %.lr.ph441 ]
  %lcmp.mod702.not = icmp eq i64 %xtraiter701, 0
  br i1 %lcmp.mod702.not, label %._crit_edge442, label %.lr.ph441.epil

.lr.ph441.epil:                                   ; preds = %._crit_edge442.loopexit.unr-lcssa
  %138 = getelementptr inbounds float, ptr %31, i64 %indvars.iv501.unr
  %139 = load float, ptr %138, align 4, !tbaa !10
  %140 = fcmp ole float %.1362438.unr, %139
  %141 = select i1 %140, float %.1362438.unr, float %139
  %142 = fcmp oge float %.1360439.unr, %139
  %143 = select i1 %142, float %.1360439.unr, float %139
  br label %._crit_edge442

._crit_edge442:                                   ; preds = %.lr.ph441.epil, %._crit_edge442.loopexit.unr-lcssa, %122
  %.1362.lcssa = phi float [ %.0358410, %122 ], [ %.lcssa696.ph, %._crit_edge442.loopexit.unr-lcssa ], [ %141, %.lr.ph441.epil ]
  %.1360.lcssa = phi float [ 0.000000e+00, %122 ], [ %.lcssa.ph, %._crit_edge442.loopexit.unr-lcssa ], [ %143, %.lr.ph441.epil ]
  %144 = fcmp ugt float %.1362.lcssa, 0.000000e+00
  br i1 %144, label %145, label %.thread422.sink.split

145:                                              ; preds = %._crit_edge442
  %146 = icmp sgt i32 %123, 0
  br i1 %146, label %147, label %153

147:                                              ; preds = %145
  %148 = fcmp oge float %.1362.lcssa, %.0355413
  %149 = select i1 %148, float %.1362.lcssa, float %.0355413
  %150 = fcmp ole float %.1360.lcssa, %.0358410
  %151 = select i1 %150, float %.1360.lcssa, float %.0358410
  %152 = fdiv float %149, %151
  store float %152, ptr %27, align 4, !tbaa !10
  br label %.thread417.thread

153:                                              ; preds = %145
  store float 1.000000e+00, ptr %27, align 4, !tbaa !10
  br label %.thread417.thread

.thread417:                                       ; preds = %..thread417_crit_edge, %119
  %.pr420.pr = phi i32 [ %.pr.pre, %..thread417_crit_edge ], [ %.pr.pre556.pr, %119 ]
  %154 = icmp eq i32 %.pr420.pr, 0
  br i1 %154, label %.thread417.thread, label %.thread422

.thread417.thread:                                ; preds = %147, %153, %.thread417
  %155 = load i32, ptr %13, align 4, !tbaa !5
  %156 = load i32, ptr %2, align 4, !tbaa !5
  %spec.select404 = tail call i32 @llvm.smax.i32(i32 %156, i32 1)
  %157 = icmp slt i32 %155, %spec.select404
  br i1 %157, label %.thread422.sink.split, label %158

158:                                              ; preds = %.thread417.thread
  %159 = load i32, ptr %15, align 4, !tbaa !5
  %160 = icmp slt i32 %159, %spec.select404
  br i1 %160, label %.thread422.sink.split, label %.thread418

.thread422.sink.split:                            ; preds = %158, %.thread417.thread, %._crit_edge442, %._crit_edge, %84, %76, %73, %70, %67, %65, %56
  %.sink = phi i32 [ -1, %56 ], [ -2, %65 ], [ -3, %67 ], [ -4, %70 ], [ -6, %73 ], [ -8, %76 ], [ -10, %84 ], [ -11, %._crit_edge ], [ -12, %._crit_edge442 ], [ -14, %.thread417.thread ], [ -16, %158 ]
  store i32 %.sink, ptr %21, align 4, !tbaa !5
  br label %.thread422

.thread422:                                       ; preds = %.thread422.sink.split, %120, %.thread417
  %161 = phi i32 [ %.pr420.pr, %.thread417 ], [ %.pr.pre556.pr, %120 ], [ %.sink, %.thread422.sink.split ]
  %162 = sub nsw i32 0, %161
  store i32 %162, ptr %23, align 4, !tbaa !5
  %163 = call i32 @xerbla_(ptr noundef nonnull @.str.8, ptr noundef nonnull %23, i32 noundef 6) #4
  br label %436

.thread418:                                       ; preds = %158
  br i1 %43, label %164, label %182

164:                                              ; preds = %.thread418
  call void @sgeequ_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %10, ptr noundef %11, ptr noundef nonnull %29, ptr noundef nonnull %27, ptr noundef nonnull %24, ptr noundef nonnull %28) #4
  %165 = load i32, ptr %28, align 4, !tbaa !5
  %166 = icmp eq i32 %165, 0
  br i1 %166, label %167, label %182

167:                                              ; preds = %164
  call void @slaqge_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %10, ptr noundef %11, ptr noundef nonnull %29, ptr noundef nonnull %27, ptr noundef nonnull %24, ptr noundef %9) #4
  %168 = call i32 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.2) #4
  %.not385 = icmp eq i32 %168, 0
  br i1 %.not385, label %169, label %172

169:                                              ; preds = %167
  %170 = call i32 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.3) #4
  %171 = icmp ne i32 %170, 0
  br label %172

172:                                              ; preds = %169, %167
  %173 = phi i1 [ true, %167 ], [ %171, %169 ]
  %174 = zext i1 %173 to i32
  %175 = call i32 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.4) #4
  %.not386 = icmp eq i32 %175, 0
  br i1 %.not386, label %176, label %179

176:                                              ; preds = %172
  %177 = call i32 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.3) #4
  %178 = icmp ne i32 %177, 0
  br label %179

179:                                              ; preds = %176, %172
  %180 = phi i1 [ true, %172 ], [ %178, %176 ]
  %181 = zext i1 %180 to i32
  br label %182

182:                                              ; preds = %164, %179, %.thread418
  %.1357 = phi i32 [ %181, %179 ], [ %.0356412, %164 ], [ %.0356412, %.thread418 ]
  %.1354 = phi i32 [ %174, %179 ], [ %.0353415, %164 ], [ %.0353415, %.thread418 ]
  br i1 %.not378, label %235, label %183

183:                                              ; preds = %182
  %.not391 = icmp eq i32 %.1354, 0
  br i1 %.not391, label %.loopexit429, label %184

184:                                              ; preds = %183
  %185 = load i32, ptr %3, align 4, !tbaa !5
  %.not392450 = icmp slt i32 %185, 1
  br i1 %.not392450, label %.loopexit429, label %.lr.ph453

.lr.ph453:                                        ; preds = %184
  %186 = load i32, ptr %2, align 4, !tbaa !5
  %.not402445 = icmp slt i32 %186, 1
  br i1 %.not402445, label %.loopexit429, label %.lr.ph448.preheader

.lr.ph448.preheader:                              ; preds = %.lr.ph453
  %187 = add nuw i32 %186, 1
  %188 = sext i32 %32 to i64
  %189 = add nuw i32 %185, 1
  %wide.trip.count514 = zext i32 %189 to i64
  %wide.trip.count509 = zext i32 %187 to i64
  %190 = shl nsw i64 %188, 2
  %191 = shl nsw i64 %33, 2
  %192 = getelementptr i8, ptr %12, i64 %190
  %193 = getelementptr i8, ptr %192, i64 %191
  %scevgep = getelementptr i8, ptr %193, i64 4
  %194 = shl nuw nsw i64 %wide.trip.count514, 2
  %195 = add nsw i64 %194, -4
  %196 = mul i64 %195, %188
  %197 = shl nuw nsw i64 %wide.trip.count509, 2
  %198 = getelementptr i8, ptr %12, i64 %196
  %199 = getelementptr i8, ptr %198, i64 %191
  %scevgep584 = getelementptr i8, ptr %199, i64 %197
  %200 = getelementptr i8, ptr %10, i64 %197
  %scevgep585 = getelementptr i8, ptr %200, i64 -4
  %201 = zext nneg i32 %186 to i64
  %202 = zext nneg i32 %186 to i64
  %min.iters.check = icmp ult i32 %186, 8
  %bound0 = icmp ult ptr %scevgep, %scevgep585
  %bound1 = icmp ugt ptr %scevgep584, %10
  %found.conflict = and i1 %bound0, %bound1
  %stride.check = icmp slt i32 %32, 0
  %203 = or i1 %found.conflict, %stride.check
  %n.vec = and i64 %201, 2147483640
  %ind.end = or disjoint i64 %n.vec, 1
  %cmp.n = icmp eq i64 %n.vec, %201
  br label %.lr.ph448

.lr.ph448:                                        ; preds = %.lr.ph448.preheader, %._crit_edge449
  %indvars.iv511 = phi i64 [ 1, %.lr.ph448.preheader ], [ %indvars.iv.next512, %._crit_edge449 ]
  %204 = mul nsw i64 %indvars.iv511, %188
  %invariant.gep = getelementptr float, ptr %34, i64 %204
  %brmerge = select i1 %min.iters.check, i1 true, i1 %203
  br i1 %brmerge, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %.lr.ph448, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph448 ]
  %offset.idx = or disjoint i64 %index, 1
  %205 = getelementptr float, ptr %10, i64 %index
  %206 = getelementptr inbounds i8, ptr %205, i64 16
  %wide.load = load <4 x float>, ptr %205, align 4, !tbaa !10, !alias.scope !15
  %wide.load586 = load <4 x float>, ptr %206, align 4, !tbaa !10, !alias.scope !15
  %207 = getelementptr float, ptr %invariant.gep, i64 %offset.idx
  %208 = getelementptr i8, ptr %207, i64 16
  %wide.load587 = load <4 x float>, ptr %207, align 4, !tbaa !10, !alias.scope !18, !noalias !15
  %wide.load588 = load <4 x float>, ptr %208, align 4, !tbaa !10, !alias.scope !18, !noalias !15
  %209 = fmul <4 x float> %wide.load, %wide.load587
  %210 = fmul <4 x float> %wide.load586, %wide.load588
  store <4 x float> %209, ptr %207, align 4, !tbaa !10, !alias.scope !18, !noalias !15
  store <4 x float> %210, ptr %208, align 4, !tbaa !10, !alias.scope !18, !noalias !15
  %index.next = add nuw i64 %index, 8
  %211 = icmp eq i64 %index.next, %n.vec
  br i1 %211, label %middle.block, label %vector.body, !llvm.loop !20

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

scalar.ph.preheader:                              ; preds = %.lr.ph448, %middle.block
  %indvars.iv506.ph = phi i64 [ 1, %.lr.ph448 ], [ %ind.end, %middle.block ]
  %212 = sub nsw i64 %wide.trip.count509, %indvars.iv506.ph
  %213 = sub nsw i64 %202, %indvars.iv506.ph
  %xtraiter707 = and i64 %212, 3
  %lcmp.mod708.not = icmp eq i64 %xtraiter707, 0
  br i1 %lcmp.mod708.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %indvars.iv506.prol = phi i64 [ %indvars.iv.next507.prol, %scalar.ph.prol ], [ %indvars.iv506.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %214 = getelementptr inbounds float, ptr %30, i64 %indvars.iv506.prol
  %215 = load float, ptr %214, align 4, !tbaa !10
  %gep.prol = getelementptr float, ptr %invariant.gep, i64 %indvars.iv506.prol
  %216 = load float, ptr %gep.prol, align 4, !tbaa !10
  %217 = fmul float %215, %216
  store float %217, ptr %gep.prol, align 4, !tbaa !10
  %indvars.iv.next507.prol = add nuw nsw i64 %indvars.iv506.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter707
  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.iv506.unr = phi i64 [ %indvars.iv506.ph, %scalar.ph.preheader ], [ %indvars.iv.next507.prol, %scalar.ph.prol ]
  %218 = icmp ult i64 %213, 3
  br i1 %218, label %._crit_edge449, label %scalar.ph.preheader.new

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

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %indvars.iv506 = phi i64 [ %indvars.iv506.unr, %scalar.ph.preheader.new ], [ %indvars.iv.next507.3, %scalar.ph ]
  %219 = getelementptr inbounds float, ptr %30, i64 %indvars.iv506
  %220 = load float, ptr %219, align 4, !tbaa !10
  %gep = getelementptr float, ptr %invariant.gep, i64 %indvars.iv506
  %221 = load float, ptr %gep, align 4, !tbaa !10
  %222 = fmul float %220, %221
  store float %222, ptr %gep, align 4, !tbaa !10
  %223 = getelementptr float, ptr %10, i64 %indvars.iv506
  %224 = load float, ptr %223, align 4, !tbaa !10
  %gep723 = getelementptr float, ptr %invariant.gep722, i64 %indvars.iv506
  %225 = load float, ptr %gep723, align 4, !tbaa !10
  %226 = fmul float %224, %225
  store float %226, ptr %gep723, align 4, !tbaa !10
  %indvars.iv.next507.1 = add nuw nsw i64 %indvars.iv506, 2
  %227 = getelementptr inbounds float, ptr %30, i64 %indvars.iv.next507.1
  %228 = load float, ptr %227, align 4, !tbaa !10
  %gep.2 = getelementptr float, ptr %invariant.gep, i64 %indvars.iv.next507.1
  %229 = load float, ptr %gep.2, align 4, !tbaa !10
  %230 = fmul float %228, %229
  store float %230, ptr %gep.2, align 4, !tbaa !10
  %indvars.iv.next507.2 = add nuw nsw i64 %indvars.iv506, 3
  %231 = getelementptr inbounds float, ptr %30, i64 %indvars.iv.next507.2
  %232 = load float, ptr %231, align 4, !tbaa !10
  %gep.3 = getelementptr float, ptr %invariant.gep, i64 %indvars.iv.next507.2
  %233 = load float, ptr %gep.3, align 4, !tbaa !10
  %234 = fmul float %232, %233
  store float %234, ptr %gep.3, align 4, !tbaa !10
  %indvars.iv.next507.3 = add nuw nsw i64 %indvars.iv506, 4
  %exitcond510.not.3 = icmp eq i64 %indvars.iv.next507.3, %wide.trip.count509
  br i1 %exitcond510.not.3, label %._crit_edge449, label %scalar.ph, !llvm.loop !25

._crit_edge449:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %indvars.iv.next512 = add nuw nsw i64 %indvars.iv511, 1
  %exitcond515.not = icmp eq i64 %indvars.iv.next512, %wide.trip.count514
  br i1 %exitcond515.not, label %.loopexit429, label %.lr.ph448, !llvm.loop !26

235:                                              ; preds = %182
  %.not388 = icmp eq i32 %.1357, 0
  br i1 %.not388, label %.loopexit429, label %236

236:                                              ; preds = %235
  %237 = load i32, ptr %3, align 4, !tbaa !5
  %.not389459 = icmp slt i32 %237, 1
  br i1 %.not389459, label %.loopexit429, label %.lr.ph462

.lr.ph462:                                        ; preds = %236
  %238 = load i32, ptr %2, align 4, !tbaa !5
  %.not390454 = icmp slt i32 %238, 1
  br i1 %.not390454, label %.loopexit429, label %.lr.ph457.preheader

.lr.ph457.preheader:                              ; preds = %.lr.ph462
  %239 = add nuw i32 %238, 1
  %240 = sext i32 %32 to i64
  %241 = add nuw i32 %237, 1
  %wide.trip.count524 = zext i32 %241 to i64
  %wide.trip.count519 = zext i32 %239 to i64
  %242 = shl nsw i64 %240, 2
  %243 = shl nsw i64 %33, 2
  %244 = getelementptr i8, ptr %12, i64 %242
  %245 = getelementptr i8, ptr %244, i64 %243
  %scevgep590 = getelementptr i8, ptr %245, i64 4
  %246 = shl nuw nsw i64 %wide.trip.count524, 2
  %247 = add nsw i64 %246, -4
  %248 = mul i64 %247, %240
  %249 = shl nuw nsw i64 %wide.trip.count519, 2
  %250 = getelementptr i8, ptr %12, i64 %248
  %251 = getelementptr i8, ptr %250, i64 %243
  %scevgep591 = getelementptr i8, ptr %251, i64 %249
  %252 = getelementptr i8, ptr %11, i64 %249
  %scevgep592 = getelementptr i8, ptr %252, i64 -4
  %253 = zext nneg i32 %238 to i64
  %254 = zext nneg i32 %238 to i64
  %min.iters.check599 = icmp ult i32 %238, 8
  %bound0593 = icmp ult ptr %scevgep590, %scevgep592
  %bound1594 = icmp ugt ptr %scevgep591, %11
  %found.conflict595 = and i1 %bound0593, %bound1594
  %stride.check596 = icmp slt i32 %32, 0
  %255 = or i1 %found.conflict595, %stride.check596
  %n.vec602 = and i64 %253, 2147483640
  %ind.end603 = or disjoint i64 %n.vec602, 1
  %cmp.n613 = icmp eq i64 %n.vec602, %253
  br label %.lr.ph457

.lr.ph457:                                        ; preds = %.lr.ph457.preheader, %._crit_edge458
  %indvars.iv521 = phi i64 [ 1, %.lr.ph457.preheader ], [ %indvars.iv.next522, %._crit_edge458 ]
  %256 = mul nsw i64 %indvars.iv521, %240
  %invariant.gep573 = getelementptr float, ptr %34, i64 %256
  %brmerge730 = select i1 %min.iters.check599, i1 true, i1 %255
  br i1 %brmerge730, label %scalar.ph598.preheader, label %vector.body605

vector.body605:                                   ; preds = %.lr.ph457, %vector.body605
  %index606 = phi i64 [ %index.next612, %vector.body605 ], [ 0, %.lr.ph457 ]
  %offset.idx607 = or disjoint i64 %index606, 1
  %257 = getelementptr float, ptr %11, i64 %index606
  %258 = getelementptr inbounds i8, ptr %257, i64 16
  %wide.load608 = load <4 x float>, ptr %257, align 4, !tbaa !10, !alias.scope !27
  %wide.load609 = load <4 x float>, ptr %258, align 4, !tbaa !10, !alias.scope !27
  %259 = getelementptr float, ptr %invariant.gep573, i64 %offset.idx607
  %260 = getelementptr i8, ptr %259, i64 16
  %wide.load610 = load <4 x float>, ptr %259, align 4, !tbaa !10, !alias.scope !30, !noalias !27
  %wide.load611 = load <4 x float>, ptr %260, align 4, !tbaa !10, !alias.scope !30, !noalias !27
  %261 = fmul <4 x float> %wide.load608, %wide.load610
  %262 = fmul <4 x float> %wide.load609, %wide.load611
  store <4 x float> %261, ptr %259, align 4, !tbaa !10, !alias.scope !30, !noalias !27
  store <4 x float> %262, ptr %260, align 4, !tbaa !10, !alias.scope !30, !noalias !27
  %index.next612 = add nuw i64 %index606, 8
  %263 = icmp eq i64 %index.next612, %n.vec602
  br i1 %263, label %middle.block597, label %vector.body605, !llvm.loop !32

middle.block597:                                  ; preds = %vector.body605
  br i1 %cmp.n613, label %._crit_edge458, label %scalar.ph598.preheader

scalar.ph598.preheader:                           ; preds = %.lr.ph457, %middle.block597
  %indvars.iv516.ph = phi i64 [ 1, %.lr.ph457 ], [ %ind.end603, %middle.block597 ]
  %264 = sub nsw i64 %wide.trip.count519, %indvars.iv516.ph
  %265 = sub nsw i64 %254, %indvars.iv516.ph
  %xtraiter709 = and i64 %264, 3
  %lcmp.mod710.not = icmp eq i64 %xtraiter709, 0
  br i1 %lcmp.mod710.not, label %scalar.ph598.prol.loopexit, label %scalar.ph598.prol

scalar.ph598.prol:                                ; preds = %scalar.ph598.preheader, %scalar.ph598.prol
  %indvars.iv516.prol = phi i64 [ %indvars.iv.next517.prol, %scalar.ph598.prol ], [ %indvars.iv516.ph, %scalar.ph598.preheader ]
  %prol.iter711 = phi i64 [ %prol.iter711.next, %scalar.ph598.prol ], [ 0, %scalar.ph598.preheader ]
  %266 = getelementptr inbounds float, ptr %31, i64 %indvars.iv516.prol
  %267 = load float, ptr %266, align 4, !tbaa !10
  %gep574.prol = getelementptr float, ptr %invariant.gep573, i64 %indvars.iv516.prol
  %268 = load float, ptr %gep574.prol, align 4, !tbaa !10
  %269 = fmul float %267, %268
  store float %269, ptr %gep574.prol, align 4, !tbaa !10
  %indvars.iv.next517.prol = add nuw nsw i64 %indvars.iv516.prol, 1
  %prol.iter711.next = add i64 %prol.iter711, 1
  %prol.iter711.cmp.not = icmp eq i64 %prol.iter711.next, %xtraiter709
  br i1 %prol.iter711.cmp.not, label %scalar.ph598.prol.loopexit, label %scalar.ph598.prol, !llvm.loop !33

scalar.ph598.prol.loopexit:                       ; preds = %scalar.ph598.prol, %scalar.ph598.preheader
  %indvars.iv516.unr = phi i64 [ %indvars.iv516.ph, %scalar.ph598.preheader ], [ %indvars.iv.next517.prol, %scalar.ph598.prol ]
  %270 = icmp ult i64 %265, 3
  br i1 %270, label %._crit_edge458, label %scalar.ph598.preheader.new

scalar.ph598.preheader.new:                       ; preds = %scalar.ph598.prol.loopexit
  %invariant.gep724 = getelementptr i8, ptr %invariant.gep573, i64 4
  br label %scalar.ph598

scalar.ph598:                                     ; preds = %scalar.ph598, %scalar.ph598.preheader.new
  %indvars.iv516 = phi i64 [ %indvars.iv516.unr, %scalar.ph598.preheader.new ], [ %indvars.iv.next517.3, %scalar.ph598 ]
  %271 = getelementptr inbounds float, ptr %31, i64 %indvars.iv516
  %272 = load float, ptr %271, align 4, !tbaa !10
  %gep574 = getelementptr float, ptr %invariant.gep573, i64 %indvars.iv516
  %273 = load float, ptr %gep574, align 4, !tbaa !10
  %274 = fmul float %272, %273
  store float %274, ptr %gep574, align 4, !tbaa !10
  %275 = getelementptr float, ptr %11, i64 %indvars.iv516
  %276 = load float, ptr %275, align 4, !tbaa !10
  %gep725 = getelementptr float, ptr %invariant.gep724, i64 %indvars.iv516
  %277 = load float, ptr %gep725, align 4, !tbaa !10
  %278 = fmul float %276, %277
  store float %278, ptr %gep725, align 4, !tbaa !10
  %indvars.iv.next517.1 = add nuw nsw i64 %indvars.iv516, 2
  %279 = getelementptr inbounds float, ptr %31, i64 %indvars.iv.next517.1
  %280 = load float, ptr %279, align 4, !tbaa !10
  %gep574.2 = getelementptr float, ptr %invariant.gep573, i64 %indvars.iv.next517.1
  %281 = load float, ptr %gep574.2, align 4, !tbaa !10
  %282 = fmul float %280, %281
  store float %282, ptr %gep574.2, align 4, !tbaa !10
  %indvars.iv.next517.2 = add nuw nsw i64 %indvars.iv516, 3
  %283 = getelementptr inbounds float, ptr %31, i64 %indvars.iv.next517.2
  %284 = load float, ptr %283, align 4, !tbaa !10
  %gep574.3 = getelementptr float, ptr %invariant.gep573, i64 %indvars.iv.next517.2
  %285 = load float, ptr %gep574.3, align 4, !tbaa !10
  %286 = fmul float %284, %285
  store float %286, ptr %gep574.3, align 4, !tbaa !10
  %indvars.iv.next517.3 = add nuw nsw i64 %indvars.iv516, 4
  %exitcond520.not.3 = icmp eq i64 %indvars.iv.next517.3, %wide.trip.count519
  br i1 %exitcond520.not.3, label %._crit_edge458, label %scalar.ph598, !llvm.loop !34

._crit_edge458:                                   ; preds = %scalar.ph598.prol.loopexit, %scalar.ph598, %middle.block597
  %indvars.iv.next522 = add nuw nsw i64 %indvars.iv521, 1
  %exitcond525.not = icmp eq i64 %indvars.iv.next522, %wide.trip.count524
  br i1 %exitcond525.not, label %.loopexit429, label %.lr.ph457, !llvm.loop !35

.loopexit429:                                     ; preds = %._crit_edge449, %._crit_edge458, %.lr.ph462, %.lr.ph453, %184, %236, %235, %183
  br i1 %or.cond, label %287, label %298

287:                                              ; preds = %.loopexit429
  call void @slacpy_(ptr noundef nonnull @.str.9, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7) #4
  %288 = call i32 @sgetrf_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %21) #4
  %289 = load i32, ptr %21, align 4, !tbaa !5
  %290 = icmp sgt i32 %289, 0
  br i1 %290, label %291, label %298

291:                                              ; preds = %287
  %292 = call float @slantr_(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str, ptr noundef nonnull %21, ptr noundef nonnull %21, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %19) #4
  %293 = fcmp oeq float %292, 0.000000e+00
  br i1 %293, label %297, label %294

294:                                              ; preds = %291
  %295 = call float @slange_(ptr noundef nonnull @.str.10, ptr noundef nonnull %2, ptr noundef nonnull %21, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %19) #4
  %296 = fdiv float %295, %292
  br label %297

297:                                              ; preds = %291, %294
  %.0 = phi float [ %296, %294 ], [ 1.000000e+00, %291 ]
  store float %.0, ptr %19, align 4, !tbaa !10
  store float 0.000000e+00, ptr %16, align 4, !tbaa !10
  br label %436

298:                                              ; preds = %287, %.loopexit429
  %. = select i1 %.not378, i8 73, i8 49
  store i8 %., ptr %25, align 1, !tbaa !9
  %299 = call float @slange_(ptr noundef nonnull %25, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %19) #4
  store float %299, ptr %26, align 4, !tbaa !10
  %300 = call float @slantr_(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %19) #4
  %301 = fcmp oeq float %300, 0.000000e+00
  br i1 %301, label %305, label %302

302:                                              ; preds = %298
  %303 = call float @slange_(ptr noundef nonnull @.str.10, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %19) #4
  %304 = fdiv float %303, %300
  br label %305

305:                                              ; preds = %298, %302
  %.1 = phi float [ %304, %302 ], [ 1.000000e+00, %298 ]
  call void @sgecon_(ptr noundef nonnull %25, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %26, ptr noundef %16, ptr noundef %19, ptr noundef %20, ptr noundef nonnull %21) #4
  call void @slacpy_(ptr noundef nonnull @.str.9, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef nonnull %15) #4
  %306 = call i32 @sgetrs_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %21) #4
  call void @sgerfs_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef nonnull %21) #4
  br i1 %.not378, label %368, label %307

307:                                              ; preds = %305
  %.not398 = icmp eq i32 %.1357, 0
  br i1 %.not398, label %.loopexit, label %308

308:                                              ; preds = %307
  %309 = load i32, ptr %3, align 4, !tbaa !5
  %.not399468 = icmp slt i32 %309, 1
  br i1 %.not399468, label %.loopexit, label %.lr.ph471

.lr.ph471:                                        ; preds = %308
  %310 = load i32, ptr %2, align 4, !tbaa !5
  %.not401463 = icmp slt i32 %310, 1
  br i1 %.not401463, label %.lr.ph476, label %.lr.ph466.preheader

.lr.ph466.preheader:                              ; preds = %.lr.ph471
  %311 = add nuw i32 %310, 1
  %312 = sext i32 %35 to i64
  %313 = add nuw i32 %309, 1
  %wide.trip.count534 = zext i32 %313 to i64
  %wide.trip.count529 = zext i32 %311 to i64
  %314 = shl nsw i64 %312, 2
  %315 = shl nsw i64 %36, 2
  %316 = getelementptr i8, ptr %14, i64 %314
  %317 = getelementptr i8, ptr %316, i64 %315
  %scevgep615 = getelementptr i8, ptr %317, i64 4
  %318 = shl nuw nsw i64 %wide.trip.count534, 2
  %319 = add nsw i64 %318, -4
  %320 = mul i64 %319, %312
  %321 = shl nuw nsw i64 %wide.trip.count529, 2
  %322 = getelementptr i8, ptr %14, i64 %320
  %323 = getelementptr i8, ptr %322, i64 %315
  %scevgep616 = getelementptr i8, ptr %323, i64 %321
  %324 = getelementptr i8, ptr %11, i64 %321
  %scevgep617 = getelementptr i8, ptr %324, i64 -4
  %325 = zext nneg i32 %310 to i64
  %326 = zext nneg i32 %310 to i64
  %min.iters.check624 = icmp ult i32 %310, 8
  %bound0618 = icmp ult ptr %scevgep615, %scevgep617
  %bound1619 = icmp ugt ptr %scevgep616, %11
  %found.conflict620 = and i1 %bound0618, %bound1619
  %stride.check621 = icmp slt i32 %35, 0
  %327 = or i1 %found.conflict620, %stride.check621
  %n.vec627 = and i64 %325, 2147483640
  %ind.end628 = or disjoint i64 %n.vec627, 1
  %cmp.n638 = icmp eq i64 %n.vec627, %325
  br label %.lr.ph466

.lr.ph466:                                        ; preds = %.lr.ph466.preheader, %._crit_edge467
  %indvars.iv531 = phi i64 [ 1, %.lr.ph466.preheader ], [ %indvars.iv.next532, %._crit_edge467 ]
  %328 = mul nsw i64 %indvars.iv531, %312
  %invariant.gep575 = getelementptr float, ptr %37, i64 %328
  %brmerge731 = select i1 %min.iters.check624, i1 true, i1 %327
  br i1 %brmerge731, label %scalar.ph623.preheader, label %vector.body630

vector.body630:                                   ; preds = %.lr.ph466, %vector.body630
  %index631 = phi i64 [ %index.next637, %vector.body630 ], [ 0, %.lr.ph466 ]
  %offset.idx632 = or disjoint i64 %index631, 1
  %329 = getelementptr float, ptr %11, i64 %index631
  %330 = getelementptr inbounds i8, ptr %329, i64 16
  %wide.load633 = load <4 x float>, ptr %329, align 4, !tbaa !10, !alias.scope !36
  %wide.load634 = load <4 x float>, ptr %330, align 4, !tbaa !10, !alias.scope !36
  %331 = getelementptr float, ptr %invariant.gep575, i64 %offset.idx632
  %332 = getelementptr i8, ptr %331, i64 16
  %wide.load635 = load <4 x float>, ptr %331, align 4, !tbaa !10, !alias.scope !39, !noalias !36
  %wide.load636 = load <4 x float>, ptr %332, align 4, !tbaa !10, !alias.scope !39, !noalias !36
  %333 = fmul <4 x float> %wide.load633, %wide.load635
  %334 = fmul <4 x float> %wide.load634, %wide.load636
  store <4 x float> %333, ptr %331, align 4, !tbaa !10, !alias.scope !39, !noalias !36
  store <4 x float> %334, ptr %332, align 4, !tbaa !10, !alias.scope !39, !noalias !36
  %index.next637 = add nuw i64 %index631, 8
  %335 = icmp eq i64 %index.next637, %n.vec627
  br i1 %335, label %middle.block622, label %vector.body630, !llvm.loop !41

middle.block622:                                  ; preds = %vector.body630
  br i1 %cmp.n638, label %._crit_edge467, label %scalar.ph623.preheader

scalar.ph623.preheader:                           ; preds = %.lr.ph466, %middle.block622
  %indvars.iv526.ph = phi i64 [ 1, %.lr.ph466 ], [ %ind.end628, %middle.block622 ]
  %336 = sub nsw i64 %wide.trip.count529, %indvars.iv526.ph
  %337 = sub nsw i64 %326, %indvars.iv526.ph
  %xtraiter712 = and i64 %336, 3
  %lcmp.mod713.not = icmp eq i64 %xtraiter712, 0
  br i1 %lcmp.mod713.not, label %scalar.ph623.prol.loopexit, label %scalar.ph623.prol

scalar.ph623.prol:                                ; preds = %scalar.ph623.preheader, %scalar.ph623.prol
  %indvars.iv526.prol = phi i64 [ %indvars.iv.next527.prol, %scalar.ph623.prol ], [ %indvars.iv526.ph, %scalar.ph623.preheader ]
  %prol.iter714 = phi i64 [ %prol.iter714.next, %scalar.ph623.prol ], [ 0, %scalar.ph623.preheader ]
  %338 = getelementptr inbounds float, ptr %31, i64 %indvars.iv526.prol
  %339 = load float, ptr %338, align 4, !tbaa !10
  %gep576.prol = getelementptr float, ptr %invariant.gep575, i64 %indvars.iv526.prol
  %340 = load float, ptr %gep576.prol, align 4, !tbaa !10
  %341 = fmul float %339, %340
  store float %341, ptr %gep576.prol, align 4, !tbaa !10
  %indvars.iv.next527.prol = add nuw nsw i64 %indvars.iv526.prol, 1
  %prol.iter714.next = add i64 %prol.iter714, 1
  %prol.iter714.cmp.not = icmp eq i64 %prol.iter714.next, %xtraiter712
  br i1 %prol.iter714.cmp.not, label %scalar.ph623.prol.loopexit, label %scalar.ph623.prol, !llvm.loop !42

scalar.ph623.prol.loopexit:                       ; preds = %scalar.ph623.prol, %scalar.ph623.preheader
  %indvars.iv526.unr = phi i64 [ %indvars.iv526.ph, %scalar.ph623.preheader ], [ %indvars.iv.next527.prol, %scalar.ph623.prol ]
  %342 = icmp ult i64 %337, 3
  br i1 %342, label %._crit_edge467, label %scalar.ph623.preheader.new

scalar.ph623.preheader.new:                       ; preds = %scalar.ph623.prol.loopexit
  %invariant.gep726 = getelementptr i8, ptr %invariant.gep575, i64 4
  br label %scalar.ph623

scalar.ph623:                                     ; preds = %scalar.ph623, %scalar.ph623.preheader.new
  %indvars.iv526 = phi i64 [ %indvars.iv526.unr, %scalar.ph623.preheader.new ], [ %indvars.iv.next527.3, %scalar.ph623 ]
  %343 = getelementptr inbounds float, ptr %31, i64 %indvars.iv526
  %344 = load float, ptr %343, align 4, !tbaa !10
  %gep576 = getelementptr float, ptr %invariant.gep575, i64 %indvars.iv526
  %345 = load float, ptr %gep576, align 4, !tbaa !10
  %346 = fmul float %344, %345
  store float %346, ptr %gep576, align 4, !tbaa !10
  %347 = getelementptr float, ptr %11, i64 %indvars.iv526
  %348 = load float, ptr %347, align 4, !tbaa !10
  %gep727 = getelementptr float, ptr %invariant.gep726, i64 %indvars.iv526
  %349 = load float, ptr %gep727, align 4, !tbaa !10
  %350 = fmul float %348, %349
  store float %350, ptr %gep727, align 4, !tbaa !10
  %indvars.iv.next527.1 = add nuw nsw i64 %indvars.iv526, 2
  %351 = getelementptr inbounds float, ptr %31, i64 %indvars.iv.next527.1
  %352 = load float, ptr %351, align 4, !tbaa !10
  %gep576.2 = getelementptr float, ptr %invariant.gep575, i64 %indvars.iv.next527.1
  %353 = load float, ptr %gep576.2, align 4, !tbaa !10
  %354 = fmul float %352, %353
  store float %354, ptr %gep576.2, align 4, !tbaa !10
  %indvars.iv.next527.2 = add nuw nsw i64 %indvars.iv526, 3
  %355 = getelementptr inbounds float, ptr %31, i64 %indvars.iv.next527.2
  %356 = load float, ptr %355, align 4, !tbaa !10
  %gep576.3 = getelementptr float, ptr %invariant.gep575, i64 %indvars.iv.next527.2
  %357 = load float, ptr %gep576.3, align 4, !tbaa !10
  %358 = fmul float %356, %357
  store float %358, ptr %gep576.3, align 4, !tbaa !10
  %indvars.iv.next527.3 = add nuw nsw i64 %indvars.iv526, 4
  %exitcond530.not.3 = icmp eq i64 %indvars.iv.next527.3, %wide.trip.count529
  br i1 %exitcond530.not.3, label %._crit_edge467, label %scalar.ph623, !llvm.loop !43

._crit_edge467:                                   ; preds = %scalar.ph623.prol.loopexit, %scalar.ph623, %middle.block622
  %indvars.iv.next532 = add nuw nsw i64 %indvars.iv531, 1
  %exitcond535.not = icmp eq i64 %indvars.iv.next532, %wide.trip.count534
  br i1 %exitcond535.not, label %._crit_edge472, label %.lr.ph466, !llvm.loop !44

._crit_edge472:                                   ; preds = %._crit_edge467
  br i1 %.not399468, label %.loopexit, label %.lr.ph476

.lr.ph476:                                        ; preds = %.lr.ph471, %._crit_edge472
  %359 = load float, ptr %27, align 4, !tbaa !10
  %360 = add nuw i32 %309, 1
  %wide.trip.count539 = zext i32 %360 to i64
  %361 = zext nneg i32 %309 to i64
  %min.iters.check641 = icmp ult i32 %309, 4
  br i1 %min.iters.check641, label %scalar.ph640.preheader, label %vector.ph642

vector.ph642:                                     ; preds = %.lr.ph476
  %n.vec644 = and i64 %361, 2147483644
  %ind.end645 = or disjoint i64 %n.vec644, 1
  %broadcast.splatinsert = insertelement <4 x float> poison, float %359, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body647

vector.body647:                                   ; preds = %vector.body647, %vector.ph642
  %index648 = phi i64 [ 0, %vector.ph642 ], [ %index.next651, %vector.body647 ]
  %362 = getelementptr float, ptr %17, i64 %index648
  %wide.load650 = load <4 x float>, ptr %362, align 4, !tbaa !10
  %363 = fdiv <4 x float> %wide.load650, %broadcast.splat
  store <4 x float> %363, ptr %362, align 4, !tbaa !10
  %index.next651 = add nuw i64 %index648, 4
  %364 = icmp eq i64 %index.next651, %n.vec644
  br i1 %364, label %middle.block639, label %vector.body647, !llvm.loop !45

middle.block639:                                  ; preds = %vector.body647
  %cmp.n652 = icmp eq i64 %n.vec644, %361
  br i1 %cmp.n652, label %.loopexit, label %scalar.ph640.preheader

scalar.ph640.preheader:                           ; preds = %middle.block639, %.lr.ph476
  %indvars.iv536.ph = phi i64 [ 1, %.lr.ph476 ], [ %ind.end645, %middle.block639 ]
  br label %scalar.ph640

scalar.ph640:                                     ; preds = %scalar.ph640.preheader, %scalar.ph640
  %indvars.iv536 = phi i64 [ %indvars.iv.next537, %scalar.ph640 ], [ %indvars.iv536.ph, %scalar.ph640.preheader ]
  %365 = getelementptr inbounds float, ptr %38, i64 %indvars.iv536
  %366 = load float, ptr %365, align 4, !tbaa !10
  %367 = fdiv float %366, %359
  store float %367, ptr %365, align 4, !tbaa !10
  %indvars.iv.next537 = add nuw nsw i64 %indvars.iv536, 1
  %exitcond540.not = icmp eq i64 %indvars.iv.next537, %wide.trip.count539
  br i1 %exitcond540.not, label %.loopexit, label %scalar.ph640, !llvm.loop !46

368:                                              ; preds = %305
  %.not394 = icmp eq i32 %.1354, 0
  br i1 %.not394, label %.loopexit, label %369

369:                                              ; preds = %368
  %370 = load i32, ptr %3, align 4, !tbaa !5
  %.not395482 = icmp slt i32 %370, 1
  br i1 %.not395482, label %.loopexit, label %.lr.ph485

.lr.ph485:                                        ; preds = %369
  %371 = load i32, ptr %2, align 4, !tbaa !5
  %.not397477 = icmp slt i32 %371, 1
  br i1 %.not397477, label %.lr.ph490, label %.lr.ph480.preheader

.lr.ph480.preheader:                              ; preds = %.lr.ph485
  %372 = add nuw i32 %371, 1
  %373 = sext i32 %35 to i64
  %374 = add nuw i32 %370, 1
  %wide.trip.count549 = zext i32 %374 to i64
  %wide.trip.count544 = zext i32 %372 to i64
  %375 = shl nsw i64 %373, 2
  %376 = shl nsw i64 %36, 2
  %377 = getelementptr i8, ptr %14, i64 %375
  %378 = getelementptr i8, ptr %377, i64 %376
  %scevgep654 = getelementptr i8, ptr %378, i64 4
  %379 = shl nuw nsw i64 %wide.trip.count549, 2
  %380 = add nsw i64 %379, -4
  %381 = mul i64 %380, %373
  %382 = shl nuw nsw i64 %wide.trip.count544, 2
  %383 = getelementptr i8, ptr %14, i64 %381
  %384 = getelementptr i8, ptr %383, i64 %376
  %scevgep655 = getelementptr i8, ptr %384, i64 %382
  %385 = getelementptr i8, ptr %10, i64 %382
  %scevgep656 = getelementptr i8, ptr %385, i64 -4
  %386 = zext nneg i32 %371 to i64
  %387 = zext nneg i32 %371 to i64
  %min.iters.check663 = icmp ult i32 %371, 8
  %bound0657 = icmp ult ptr %scevgep654, %scevgep656
  %bound1658 = icmp ugt ptr %scevgep655, %10
  %found.conflict659 = and i1 %bound0657, %bound1658
  %stride.check660 = icmp slt i32 %35, 0
  %388 = or i1 %found.conflict659, %stride.check660
  %n.vec666 = and i64 %386, 2147483640
  %ind.end667 = or disjoint i64 %n.vec666, 1
  %cmp.n677 = icmp eq i64 %n.vec666, %386
  br label %.lr.ph480

.lr.ph480:                                        ; preds = %.lr.ph480.preheader, %._crit_edge481
  %indvars.iv546 = phi i64 [ 1, %.lr.ph480.preheader ], [ %indvars.iv.next547, %._crit_edge481 ]
  %389 = mul nsw i64 %indvars.iv546, %373
  %invariant.gep577 = getelementptr float, ptr %37, i64 %389
  %brmerge732 = select i1 %min.iters.check663, i1 true, i1 %388
  br i1 %brmerge732, label %scalar.ph662.preheader, label %vector.body669

vector.body669:                                   ; preds = %.lr.ph480, %vector.body669
  %index670 = phi i64 [ %index.next676, %vector.body669 ], [ 0, %.lr.ph480 ]
  %offset.idx671 = or disjoint i64 %index670, 1
  %390 = getelementptr float, ptr %10, i64 %index670
  %391 = getelementptr inbounds i8, ptr %390, i64 16
  %wide.load672 = load <4 x float>, ptr %390, align 4, !tbaa !10, !alias.scope !47
  %wide.load673 = load <4 x float>, ptr %391, align 4, !tbaa !10, !alias.scope !47
  %392 = getelementptr float, ptr %invariant.gep577, i64 %offset.idx671
  %393 = getelementptr i8, ptr %392, i64 16
  %wide.load674 = load <4 x float>, ptr %392, align 4, !tbaa !10, !alias.scope !50, !noalias !47
  %wide.load675 = load <4 x float>, ptr %393, align 4, !tbaa !10, !alias.scope !50, !noalias !47
  %394 = fmul <4 x float> %wide.load672, %wide.load674
  %395 = fmul <4 x float> %wide.load673, %wide.load675
  store <4 x float> %394, ptr %392, align 4, !tbaa !10, !alias.scope !50, !noalias !47
  store <4 x float> %395, ptr %393, align 4, !tbaa !10, !alias.scope !50, !noalias !47
  %index.next676 = add nuw i64 %index670, 8
  %396 = icmp eq i64 %index.next676, %n.vec666
  br i1 %396, label %middle.block661, label %vector.body669, !llvm.loop !52

middle.block661:                                  ; preds = %vector.body669
  br i1 %cmp.n677, label %._crit_edge481, label %scalar.ph662.preheader

scalar.ph662.preheader:                           ; preds = %.lr.ph480, %middle.block661
  %indvars.iv541.ph = phi i64 [ 1, %.lr.ph480 ], [ %ind.end667, %middle.block661 ]
  %397 = sub nsw i64 %wide.trip.count544, %indvars.iv541.ph
  %398 = sub nsw i64 %387, %indvars.iv541.ph
  %xtraiter715 = and i64 %397, 3
  %lcmp.mod716.not = icmp eq i64 %xtraiter715, 0
  br i1 %lcmp.mod716.not, label %scalar.ph662.prol.loopexit, label %scalar.ph662.prol

scalar.ph662.prol:                                ; preds = %scalar.ph662.preheader, %scalar.ph662.prol
  %indvars.iv541.prol = phi i64 [ %indvars.iv.next542.prol, %scalar.ph662.prol ], [ %indvars.iv541.ph, %scalar.ph662.preheader ]
  %prol.iter717 = phi i64 [ %prol.iter717.next, %scalar.ph662.prol ], [ 0, %scalar.ph662.preheader ]
  %399 = getelementptr inbounds float, ptr %30, i64 %indvars.iv541.prol
  %400 = load float, ptr %399, align 4, !tbaa !10
  %gep578.prol = getelementptr float, ptr %invariant.gep577, i64 %indvars.iv541.prol
  %401 = load float, ptr %gep578.prol, align 4, !tbaa !10
  %402 = fmul float %400, %401
  store float %402, ptr %gep578.prol, align 4, !tbaa !10
  %indvars.iv.next542.prol = add nuw nsw i64 %indvars.iv541.prol, 1
  %prol.iter717.next = add i64 %prol.iter717, 1
  %prol.iter717.cmp.not = icmp eq i64 %prol.iter717.next, %xtraiter715
  br i1 %prol.iter717.cmp.not, label %scalar.ph662.prol.loopexit, label %scalar.ph662.prol, !llvm.loop !53

scalar.ph662.prol.loopexit:                       ; preds = %scalar.ph662.prol, %scalar.ph662.preheader
  %indvars.iv541.unr = phi i64 [ %indvars.iv541.ph, %scalar.ph662.preheader ], [ %indvars.iv.next542.prol, %scalar.ph662.prol ]
  %403 = icmp ult i64 %398, 3
  br i1 %403, label %._crit_edge481, label %scalar.ph662.preheader.new

scalar.ph662.preheader.new:                       ; preds = %scalar.ph662.prol.loopexit
  %invariant.gep728 = getelementptr i8, ptr %invariant.gep577, i64 4
  br label %scalar.ph662

scalar.ph662:                                     ; preds = %scalar.ph662, %scalar.ph662.preheader.new
  %indvars.iv541 = phi i64 [ %indvars.iv541.unr, %scalar.ph662.preheader.new ], [ %indvars.iv.next542.3, %scalar.ph662 ]
  %404 = getelementptr inbounds float, ptr %30, i64 %indvars.iv541
  %405 = load float, ptr %404, align 4, !tbaa !10
  %gep578 = getelementptr float, ptr %invariant.gep577, i64 %indvars.iv541
  %406 = load float, ptr %gep578, align 4, !tbaa !10
  %407 = fmul float %405, %406
  store float %407, ptr %gep578, align 4, !tbaa !10
  %408 = getelementptr float, ptr %10, i64 %indvars.iv541
  %409 = load float, ptr %408, align 4, !tbaa !10
  %gep729 = getelementptr float, ptr %invariant.gep728, i64 %indvars.iv541
  %410 = load float, ptr %gep729, align 4, !tbaa !10
  %411 = fmul float %409, %410
  store float %411, ptr %gep729, align 4, !tbaa !10
  %indvars.iv.next542.1 = add nuw nsw i64 %indvars.iv541, 2
  %412 = getelementptr inbounds float, ptr %30, i64 %indvars.iv.next542.1
  %413 = load float, ptr %412, align 4, !tbaa !10
  %gep578.2 = getelementptr float, ptr %invariant.gep577, i64 %indvars.iv.next542.1
  %414 = load float, ptr %gep578.2, align 4, !tbaa !10
  %415 = fmul float %413, %414
  store float %415, ptr %gep578.2, align 4, !tbaa !10
  %indvars.iv.next542.2 = add nuw nsw i64 %indvars.iv541, 3
  %416 = getelementptr inbounds float, ptr %30, i64 %indvars.iv.next542.2
  %417 = load float, ptr %416, align 4, !tbaa !10
  %gep578.3 = getelementptr float, ptr %invariant.gep577, i64 %indvars.iv.next542.2
  %418 = load float, ptr %gep578.3, align 4, !tbaa !10
  %419 = fmul float %417, %418
  store float %419, ptr %gep578.3, align 4, !tbaa !10
  %indvars.iv.next542.3 = add nuw nsw i64 %indvars.iv541, 4
  %exitcond545.not.3 = icmp eq i64 %indvars.iv.next542.3, %wide.trip.count544
  br i1 %exitcond545.not.3, label %._crit_edge481, label %scalar.ph662, !llvm.loop !54

._crit_edge481:                                   ; preds = %scalar.ph662.prol.loopexit, %scalar.ph662, %middle.block661
  %indvars.iv.next547 = add nuw nsw i64 %indvars.iv546, 1
  %exitcond550.not = icmp eq i64 %indvars.iv.next547, %wide.trip.count549
  br i1 %exitcond550.not, label %._crit_edge486, label %.lr.ph480, !llvm.loop !55

._crit_edge486:                                   ; preds = %._crit_edge481
  br i1 %.not395482, label %.loopexit, label %.lr.ph490

.lr.ph490:                                        ; preds = %.lr.ph485, %._crit_edge486
  %420 = load float, ptr %29, align 4, !tbaa !10
  %421 = add nuw i32 %370, 1
  %wide.trip.count554 = zext i32 %421 to i64
  %422 = zext nneg i32 %370 to i64
  %min.iters.check680 = icmp ult i32 %370, 4
  br i1 %min.iters.check680, label %scalar.ph679.preheader, label %vector.ph681

vector.ph681:                                     ; preds = %.lr.ph490
  %n.vec683 = and i64 %422, 2147483644
  %ind.end684 = or disjoint i64 %n.vec683, 1
  %broadcast.splatinsert690 = insertelement <4 x float> poison, float %420, i64 0
  %broadcast.splat691 = shufflevector <4 x float> %broadcast.splatinsert690, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body686

vector.body686:                                   ; preds = %vector.body686, %vector.ph681
  %index687 = phi i64 [ 0, %vector.ph681 ], [ %index.next692, %vector.body686 ]
  %423 = getelementptr float, ptr %17, i64 %index687
  %wide.load689 = load <4 x float>, ptr %423, align 4, !tbaa !10
  %424 = fdiv <4 x float> %wide.load689, %broadcast.splat691
  store <4 x float> %424, ptr %423, align 4, !tbaa !10
  %index.next692 = add nuw i64 %index687, 4
  %425 = icmp eq i64 %index.next692, %n.vec683
  br i1 %425, label %middle.block678, label %vector.body686, !llvm.loop !56

middle.block678:                                  ; preds = %vector.body686
  %cmp.n693 = icmp eq i64 %n.vec683, %422
  br i1 %cmp.n693, label %.loopexit, label %scalar.ph679.preheader

scalar.ph679.preheader:                           ; preds = %middle.block678, %.lr.ph490
  %indvars.iv551.ph = phi i64 [ 1, %.lr.ph490 ], [ %ind.end684, %middle.block678 ]
  br label %scalar.ph679

scalar.ph679:                                     ; preds = %scalar.ph679.preheader, %scalar.ph679
  %indvars.iv551 = phi i64 [ %indvars.iv.next552, %scalar.ph679 ], [ %indvars.iv551.ph, %scalar.ph679.preheader ]
  %426 = getelementptr inbounds float, ptr %38, i64 %indvars.iv551
  %427 = load float, ptr %426, align 4, !tbaa !10
  %428 = fdiv float %427, %420
  store float %428, ptr %426, align 4, !tbaa !10
  %indvars.iv.next552 = add nuw nsw i64 %indvars.iv551, 1
  %exitcond555.not = icmp eq i64 %indvars.iv.next552, %wide.trip.count554
  br i1 %exitcond555.not, label %.loopexit, label %scalar.ph679, !llvm.loop !57

.loopexit:                                        ; preds = %scalar.ph640, %scalar.ph679, %middle.block639, %middle.block678, %369, %308, %._crit_edge472, %._crit_edge486, %368, %307
  %429 = load float, ptr %16, align 4, !tbaa !10
  %430 = call float @slamch_(ptr noundef nonnull @.str.12) #4
  %431 = fcmp olt float %429, %430
  br i1 %431, label %432, label %435

432:                                              ; preds = %.loopexit
  %433 = load i32, ptr %2, align 4, !tbaa !5
  %434 = add nsw i32 %433, 1
  store i32 %434, ptr %21, align 4, !tbaa !5
  br label %435

435:                                              ; preds = %432, %.loopexit
  store float %.1, ptr %19, align 4, !tbaa !10
  br label %436

436:                                              ; preds = %435, %297, %.thread422
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #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 float @slamch_(ptr noundef) local_unnamed_addr #2

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

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

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

declare float @slantr_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare float @slange_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

declare void @sgerfs_(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.umax.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 = !{!"float", !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 = !{!37}
!37 = distinct !{!37, !38}
!38 = distinct !{!38, !"LVerDomain"}
!39 = !{!40}
!40 = distinct !{!40, !38}
!41 = distinct !{!41, !13, !21, !22}
!42 = distinct !{!42, !24}
!43 = distinct !{!43, !13, !21}
!44 = distinct !{!44, !13}
!45 = distinct !{!45, !13, !21, !22}
!46 = distinct !{!46, !13, !22, !21}
!47 = !{!48}
!48 = distinct !{!48, !49}
!49 = distinct !{!49, !"LVerDomain"}
!50 = !{!51}
!51 = distinct !{!51, !49}
!52 = distinct !{!52, !13, !21, !22}
!53 = distinct !{!53, !24}
!54 = distinct !{!54, !13, !21}
!55 = distinct !{!55, !13}
!56 = distinct !{!56, !13, !21, !22}
!57 = distinct !{!57, !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,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass