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

132:                                              ; preds = %22
  %133 = load i64, ptr %65, align 8, !tbaa !9
  %134 = icmp ne i64 %133, 0
  br i1 %134, label %135, label %137

135:                                              ; preds = %132, %22
  %136 = load ptr, ptr %33, align 8, !tbaa !5
  store i8 78, ptr %136, align 1, !tbaa !11
  store i64 0, ptr %74, align 8, !tbaa !9
  store i64 0, ptr %70, align 8, !tbaa !9
  br label %164

137:                                              ; preds = %132
  %138 = load ptr, ptr %33, align 8, !tbaa !5
  %139 = call i64 @lsame_(ptr noundef %138, ptr noundef @.str.2)
  %140 = icmp ne i64 %139, 0
  br i1 %140, label %145, label %141

141:                                              ; preds = %137
  %142 = load ptr, ptr %33, align 8, !tbaa !5
  %143 = call i64 @lsame_(ptr noundef %142, ptr noundef @.str.3)
  %144 = icmp ne i64 %143, 0
  br label %145

145:                                              ; preds = %141, %137
  %146 = phi i1 [ true, %137 ], [ %144, %141 ]
  %147 = zext i1 %146 to i32
  %148 = sext i32 %147 to i64
  store i64 %148, ptr %74, align 8, !tbaa !9
  %149 = load ptr, ptr %33, align 8, !tbaa !5
  %150 = call i64 @lsame_(ptr noundef %149, ptr noundef @.str.4)
  %151 = icmp ne i64 %150, 0
  br i1 %151, label %156, label %152

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

156:                                              ; preds = %152, %145
  %157 = phi i1 [ true, %145 ], [ %155, %152 ]
  %158 = zext i1 %157 to i32
  %159 = sext i32 %158 to i64
  store i64 %159, ptr %70, align 8, !tbaa !9
  %160 = call double @slamch_(ptr noundef @.str.5)
  %161 = fptrunc double %160 to float
  store float %161, ptr %73, align 4, !tbaa !12
  %162 = load float, ptr %73, align 4, !tbaa !12
  %163 = fdiv float 1.000000e+00, %162
  store float %163, ptr %68, align 4, !tbaa !12
  br label %164

164:                                              ; preds = %156, %135
  %165 = load i64, ptr %67, align 8, !tbaa !9
  %166 = icmp ne i64 %165, 0
  br i1 %166, label %176, label %167

167:                                              ; preds = %164
  %168 = load i64, ptr %65, align 8, !tbaa !9
  %169 = icmp ne i64 %168, 0
  br i1 %169, label %176, label %170

170:                                              ; preds = %167
  %171 = load ptr, ptr %24, align 8, !tbaa !5
  %172 = call i64 @lsame_(ptr noundef %171, ptr noundef @.str.6)
  %173 = icmp ne i64 %172, 0
  br i1 %173, label %176, label %174

174:                                              ; preds = %170
  %175 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -1, ptr %175, align 8, !tbaa !9
  br label %458

176:                                              ; preds = %170, %167, %164
  %177 = load i64, ptr %72, align 8, !tbaa !9
  %178 = icmp ne i64 %177, 0
  br i1 %178, label %189, label %179

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

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

187:                                              ; preds = %183
  %188 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -2, ptr %188, align 8, !tbaa !9
  br label %457

189:                                              ; preds = %183, %179, %176
  %190 = load ptr, ptr %26, align 8, !tbaa !5
  %191 = load i64, ptr %190, align 8, !tbaa !9
  %192 = icmp slt i64 %191, 0
  br i1 %192, label %193, label %195

193:                                              ; preds = %189
  %194 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -3, ptr %194, align 8, !tbaa !9
  br label %456

195:                                              ; preds = %189
  %196 = load ptr, ptr %27, align 8, !tbaa !5
  %197 = load i64, ptr %196, align 8, !tbaa !9
  %198 = icmp slt i64 %197, 0
  br i1 %198, label %199, label %201

199:                                              ; preds = %195
  %200 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -4, ptr %200, align 8, !tbaa !9
  br label %455

201:                                              ; preds = %195
  %202 = load ptr, ptr %29, align 8, !tbaa !5
  %203 = load i64, ptr %202, align 8, !tbaa !9
  %204 = load ptr, ptr %26, align 8, !tbaa !5
  %205 = load i64, ptr %204, align 8, !tbaa !9
  %206 = icmp sge i64 1, %205
  br i1 %206, label %207, label %208

207:                                              ; preds = %201
  br label %211

208:                                              ; preds = %201
  %209 = load ptr, ptr %26, align 8, !tbaa !5
  %210 = load i64, ptr %209, align 8, !tbaa !9
  br label %211

211:                                              ; preds = %208, %207
  %212 = phi i64 [ 1, %207 ], [ %210, %208 ]
  %213 = icmp slt i64 %203, %212
  br i1 %213, label %214, label %216

214:                                              ; preds = %211
  %215 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -6, ptr %215, align 8, !tbaa !9
  br label %454

216:                                              ; preds = %211
  %217 = load ptr, ptr %31, align 8, !tbaa !5
  %218 = load i64, ptr %217, align 8, !tbaa !9
  %219 = load ptr, ptr %26, align 8, !tbaa !5
  %220 = load i64, ptr %219, align 8, !tbaa !9
  %221 = icmp sge i64 1, %220
  br i1 %221, label %222, label %223

222:                                              ; preds = %216
  br label %226

223:                                              ; preds = %216
  %224 = load ptr, ptr %26, align 8, !tbaa !5
  %225 = load i64, ptr %224, align 8, !tbaa !9
  br label %226

226:                                              ; preds = %223, %222
  %227 = phi i64 [ 1, %222 ], [ %225, %223 ]
  %228 = icmp slt i64 %218, %227
  br i1 %228, label %229, label %231

229:                                              ; preds = %226
  %230 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -8, ptr %230, align 8, !tbaa !9
  br label %453

231:                                              ; preds = %226
  %232 = load ptr, ptr %24, align 8, !tbaa !5
  %233 = call i64 @lsame_(ptr noundef %232, ptr noundef @.str.6)
  %234 = icmp ne i64 %233, 0
  br i1 %234, label %235, label %247

235:                                              ; preds = %231
  %236 = load i64, ptr %74, align 8, !tbaa !9
  %237 = icmp ne i64 %236, 0
  br i1 %237, label %247, label %238

238:                                              ; preds = %235
  %239 = load i64, ptr %70, align 8, !tbaa !9
  %240 = icmp ne i64 %239, 0
  br i1 %240, label %247, label %241

241:                                              ; preds = %238
  %242 = load ptr, ptr %33, align 8, !tbaa !5
  %243 = call i64 @lsame_(ptr noundef %242, ptr noundef @.str)
  %244 = icmp ne i64 %243, 0
  br i1 %244, label %247, label %245

245:                                              ; preds = %241
  %246 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -10, ptr %246, align 8, !tbaa !9
  br label %452

247:                                              ; preds = %241, %238, %235, %231
  %248 = load i64, ptr %74, align 8, !tbaa !9
  %249 = icmp ne i64 %248, 0
  br i1 %249, label %250, label %329

250:                                              ; preds = %247
  %251 = load float, ptr %68, align 4, !tbaa !12
  store float %251, ptr %62, align 4, !tbaa !12
  store float 0.000000e+00, ptr %63, align 4, !tbaa !12
  %252 = load ptr, ptr %26, align 8, !tbaa !5
  %253 = load i64, ptr %252, align 8, !tbaa !9
  store i64 %253, ptr %54, align 8, !tbaa !9
  store i64 1, ptr %59, align 8, !tbaa !9
  br label %254

254:                                              ; preds = %291, %250
  %255 = load i64, ptr %59, align 8, !tbaa !9
  %256 = load i64, ptr %54, align 8, !tbaa !9
  %257 = icmp sle i64 %255, %256
  br i1 %257, label %258, label %294

258:                                              ; preds = %254
  %259 = load float, ptr %62, align 4, !tbaa !12
  store float %259, ptr %56, align 4, !tbaa !12
  %260 = load ptr, ptr %34, align 8, !tbaa !5
  %261 = load i64, ptr %59, align 8, !tbaa !9
  %262 = getelementptr inbounds float, ptr %260, i64 %261
  %263 = load float, ptr %262, align 4, !tbaa !12
  store float %263, ptr %57, align 4, !tbaa !12
  %264 = load float, ptr %56, align 4, !tbaa !12
  %265 = load float, ptr %57, align 4, !tbaa !12
  %266 = fcmp ole float %264, %265
  br i1 %266, label %267, label %269

267:                                              ; preds = %258
  %268 = load float, ptr %56, align 4, !tbaa !12
  br label %271

269:                                              ; preds = %258
  %270 = load float, ptr %57, align 4, !tbaa !12
  br label %271

271:                                              ; preds = %269, %267
  %272 = phi float [ %268, %267 ], [ %270, %269 ]
  %273 = fpext float %272 to double
  %274 = fptrunc double %273 to float
  store float %274, ptr %62, align 4, !tbaa !12
  %275 = load float, ptr %63, align 4, !tbaa !12
  store float %275, ptr %56, align 4, !tbaa !12
  %276 = load ptr, ptr %34, align 8, !tbaa !5
  %277 = load i64, ptr %59, align 8, !tbaa !9
  %278 = getelementptr inbounds float, ptr %276, i64 %277
  %279 = load float, ptr %278, align 4, !tbaa !12
  store float %279, ptr %57, align 4, !tbaa !12
  %280 = load float, ptr %56, align 4, !tbaa !12
  %281 = load float, ptr %57, align 4, !tbaa !12
  %282 = fcmp oge float %280, %281
  br i1 %282, label %283, label %285

283:                                              ; preds = %271
  %284 = load float, ptr %56, align 4, !tbaa !12
  br label %287

285:                                              ; preds = %271
  %286 = load float, ptr %57, align 4, !tbaa !12
  br label %287

287:                                              ; preds = %285, %283
  %288 = phi float [ %284, %283 ], [ %286, %285 ]
  %289 = fpext float %288 to double
  %290 = fptrunc double %289 to float
  store float %290, ptr %63, align 4, !tbaa !12
  br label %291

291:                                              ; preds = %287
  %292 = load i64, ptr %59, align 8, !tbaa !9
  %293 = add nsw i64 %292, 1
  store i64 %293, ptr %59, align 8, !tbaa !9
  br label %254, !llvm.loop !14

294:                                              ; preds = %254
  %295 = load float, ptr %62, align 4, !tbaa !12
  %296 = fcmp ole float %295, 0.000000e+00
  br i1 %296, label %297, label %299

297:                                              ; preds = %294
  %298 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -11, ptr %298, align 8, !tbaa !9
  br label %328

299:                                              ; preds = %294
  %300 = load ptr, ptr %26, align 8, !tbaa !5
  %301 = load i64, ptr %300, align 8, !tbaa !9
  %302 = icmp sgt i64 %301, 0
  br i1 %302, label %303, label %326

303:                                              ; preds = %299
  %304 = load float, ptr %62, align 4, !tbaa !12
  %305 = load float, ptr %73, align 4, !tbaa !12
  %306 = fcmp oge float %304, %305
  br i1 %306, label %307, label %309

307:                                              ; preds = %303
  %308 = load float, ptr %62, align 4, !tbaa !12
  br label %311

309:                                              ; preds = %303
  %310 = load float, ptr %73, align 4, !tbaa !12
  br label %311

311:                                              ; preds = %309, %307
  %312 = phi float [ %308, %307 ], [ %310, %309 ]
  %313 = fpext float %312 to double
  %314 = load float, ptr %63, align 4, !tbaa !12
  %315 = load float, ptr %68, align 4, !tbaa !12
  %316 = fcmp ole float %314, %315
  br i1 %316, label %317, label %319

317:                                              ; preds = %311
  %318 = load float, ptr %63, align 4, !tbaa !12
  br label %321

319:                                              ; preds = %311
  %320 = load float, ptr %68, align 4, !tbaa !12
  br label %321

321:                                              ; preds = %319, %317
  %322 = phi float [ %318, %317 ], [ %320, %319 ]
  %323 = fpext float %322 to double
  %324 = fdiv double %313, %323
  %325 = fptrunc double %324 to float
  store float %325, ptr %71, align 4, !tbaa !12
  br label %327

326:                                              ; preds = %299
  store float 1.000000e+00, ptr %71, align 4, !tbaa !12
  br label %327

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

328:                                              ; preds = %327, %297
  br label %329

329:                                              ; preds = %328, %247
  %330 = load i64, ptr %70, align 8, !tbaa !9
  %331 = icmp ne i64 %330, 0
  br i1 %331, label %332, label %415

332:                                              ; preds = %329
  %333 = load ptr, ptr %45, align 8, !tbaa !5
  %334 = load i64, ptr %333, align 8, !tbaa !9
  %335 = icmp eq i64 %334, 0
  br i1 %335, label %336, label %415

336:                                              ; preds = %332
  %337 = load float, ptr %68, align 4, !tbaa !12
  store float %337, ptr %62, align 4, !tbaa !12
  store float 0.000000e+00, ptr %63, align 4, !tbaa !12
  %338 = load ptr, ptr %26, align 8, !tbaa !5
  %339 = load i64, ptr %338, align 8, !tbaa !9
  store i64 %339, ptr %54, align 8, !tbaa !9
  store i64 1, ptr %59, align 8, !tbaa !9
  br label %340

340:                                              ; preds = %377, %336
  %341 = load i64, ptr %59, align 8, !tbaa !9
  %342 = load i64, ptr %54, align 8, !tbaa !9
  %343 = icmp sle i64 %341, %342
  br i1 %343, label %344, label %380

344:                                              ; preds = %340
  %345 = load float, ptr %62, align 4, !tbaa !12
  store float %345, ptr %56, align 4, !tbaa !12
  %346 = load ptr, ptr %35, align 8, !tbaa !5
  %347 = load i64, ptr %59, align 8, !tbaa !9
  %348 = getelementptr inbounds float, ptr %346, i64 %347
  %349 = load float, ptr %348, align 4, !tbaa !12
  store float %349, ptr %57, align 4, !tbaa !12
  %350 = load float, ptr %56, align 4, !tbaa !12
  %351 = load float, ptr %57, align 4, !tbaa !12
  %352 = fcmp ole float %350, %351
  br i1 %352, label %353, label %355

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

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

357:                                              ; preds = %355, %353
  %358 = phi float [ %354, %353 ], [ %356, %355 ]
  %359 = fpext float %358 to double
  %360 = fptrunc double %359 to float
  store float %360, ptr %62, align 4, !tbaa !12
  %361 = load float, ptr %63, align 4, !tbaa !12
  store float %361, ptr %56, align 4, !tbaa !12
  %362 = load ptr, ptr %35, align 8, !tbaa !5
  %363 = load i64, ptr %59, align 8, !tbaa !9
  %364 = getelementptr inbounds float, ptr %362, i64 %363
  %365 = load float, ptr %364, align 4, !tbaa !12
  store float %365, ptr %57, align 4, !tbaa !12
  %366 = load float, ptr %56, align 4, !tbaa !12
  %367 = load float, ptr %57, align 4, !tbaa !12
  %368 = fcmp oge float %366, %367
  br i1 %368, label %369, label %371

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

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

373:                                              ; preds = %371, %369
  %374 = phi float [ %370, %369 ], [ %372, %371 ]
  %375 = fpext float %374 to double
  %376 = fptrunc double %375 to float
  store float %376, ptr %63, align 4, !tbaa !12
  br label %377

377:                                              ; preds = %373
  %378 = load i64, ptr %59, align 8, !tbaa !9
  %379 = add nsw i64 %378, 1
  store i64 %379, ptr %59, align 8, !tbaa !9
  br label %340, !llvm.loop !16

380:                                              ; preds = %340
  %381 = load float, ptr %62, align 4, !tbaa !12
  %382 = fcmp ole float %381, 0.000000e+00
  br i1 %382, label %383, label %385

383:                                              ; preds = %380
  %384 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -12, ptr %384, align 8, !tbaa !9
  br label %414

385:                                              ; preds = %380
  %386 = load ptr, ptr %26, align 8, !tbaa !5
  %387 = load i64, ptr %386, align 8, !tbaa !9
  %388 = icmp sgt i64 %387, 0
  br i1 %388, label %389, label %412

389:                                              ; preds = %385
  %390 = load float, ptr %62, align 4, !tbaa !12
  %391 = load float, ptr %73, align 4, !tbaa !12
  %392 = fcmp oge float %390, %391
  br i1 %392, label %393, label %395

393:                                              ; preds = %389
  %394 = load float, ptr %62, align 4, !tbaa !12
  br label %397

395:                                              ; preds = %389
  %396 = load float, ptr %73, align 4, !tbaa !12
  br label %397

397:                                              ; preds = %395, %393
  %398 = phi float [ %394, %393 ], [ %396, %395 ]
  %399 = fpext float %398 to double
  %400 = load float, ptr %63, align 4, !tbaa !12
  %401 = load float, ptr %68, align 4, !tbaa !12
  %402 = fcmp ole float %400, %401
  br i1 %402, label %403, label %405

403:                                              ; preds = %397
  %404 = load float, ptr %63, align 4, !tbaa !12
  br label %407

405:                                              ; preds = %397
  %406 = load float, ptr %68, align 4, !tbaa !12
  br label %407

407:                                              ; preds = %405, %403
  %408 = phi float [ %404, %403 ], [ %406, %405 ]
  %409 = fpext float %408 to double
  %410 = fdiv double %399, %409
  %411 = fptrunc double %410 to float
  store float %411, ptr %66, align 4, !tbaa !12
  br label %413

412:                                              ; preds = %385
  store float 1.000000e+00, ptr %66, align 4, !tbaa !12
  br label %413

413:                                              ; preds = %412, %407
  br label %414

414:                                              ; preds = %413, %383
  br label %415

415:                                              ; preds = %414, %332, %329
  %416 = load ptr, ptr %45, align 8, !tbaa !5
  %417 = load i64, ptr %416, align 8, !tbaa !9
  %418 = icmp eq i64 %417, 0
  br i1 %418, label %419, label %451

419:                                              ; preds = %415
  %420 = load ptr, ptr %37, align 8, !tbaa !5
  %421 = load i64, ptr %420, align 8, !tbaa !9
  %422 = load ptr, ptr %26, align 8, !tbaa !5
  %423 = load i64, ptr %422, align 8, !tbaa !9
  %424 = icmp sge i64 1, %423
  br i1 %424, label %425, label %426

425:                                              ; preds = %419
  br label %429

426:                                              ; preds = %419
  %427 = load ptr, ptr %26, align 8, !tbaa !5
  %428 = load i64, ptr %427, align 8, !tbaa !9
  br label %429

429:                                              ; preds = %426, %425
  %430 = phi i64 [ 1, %425 ], [ %428, %426 ]
  %431 = icmp slt i64 %421, %430
  br i1 %431, label %432, label %434

432:                                              ; preds = %429
  %433 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -14, ptr %433, align 8, !tbaa !9
  br label %450

434:                                              ; preds = %429
  %435 = load ptr, ptr %39, align 8, !tbaa !5
  %436 = load i64, ptr %435, align 8, !tbaa !9
  %437 = load ptr, ptr %26, align 8, !tbaa !5
  %438 = load i64, ptr %437, align 8, !tbaa !9
  %439 = icmp sge i64 1, %438
  br i1 %439, label %440, label %441

440:                                              ; preds = %434
  br label %444

441:                                              ; preds = %434
  %442 = load ptr, ptr %26, align 8, !tbaa !5
  %443 = load i64, ptr %442, align 8, !tbaa !9
  br label %444

444:                                              ; preds = %441, %440
  %445 = phi i64 [ 1, %440 ], [ %443, %441 ]
  %446 = icmp slt i64 %436, %445
  br i1 %446, label %447, label %449

447:                                              ; preds = %444
  %448 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -16, ptr %448, align 8, !tbaa !9
  br label %449

449:                                              ; preds = %447, %444
  br label %450

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

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

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

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

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

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

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

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

458:                                              ; preds = %457, %174
  %459 = load ptr, ptr %45, align 8, !tbaa !5
  %460 = load i64, ptr %459, align 8, !tbaa !9
  %461 = icmp ne i64 %460, 0
  br i1 %461, label %462, label %467

462:                                              ; preds = %458
  %463 = load ptr, ptr %45, align 8, !tbaa !5
  %464 = load i64, ptr %463, align 8, !tbaa !9
  %465 = sub nsw i64 0, %464
  store i64 %465, ptr %54, align 8, !tbaa !9
  %466 = call i32 @xerbla_(ptr noundef @.str.8, ptr noundef %54)
  store i32 0, ptr %23, align 4
  store i32 1, ptr %76, align 4
  br label %944

467:                                              ; preds = %458
  %468 = load i64, ptr %65, align 8, !tbaa !9
  %469 = icmp ne i64 %468, 0
  br i1 %469, label %470, label %520

470:                                              ; preds = %467
  %471 = load ptr, ptr %26, align 8, !tbaa !5
  %472 = load ptr, ptr %26, align 8, !tbaa !5
  %473 = load ptr, ptr %28, align 8, !tbaa !5
  %474 = load i64, ptr %47, align 8, !tbaa !9
  %475 = getelementptr inbounds float, ptr %473, i64 %474
  %476 = load ptr, ptr %29, align 8, !tbaa !5
  %477 = load ptr, ptr %34, align 8, !tbaa !5
  %478 = getelementptr inbounds float, ptr %477, i64 1
  %479 = load ptr, ptr %35, align 8, !tbaa !5
  %480 = getelementptr inbounds float, ptr %479, i64 1
  %481 = call i32 @sgeequ_(ptr noundef %471, ptr noundef %472, ptr noundef %475, ptr noundef %476, ptr noundef %478, ptr noundef %480, ptr noundef %71, ptr noundef %66, ptr noundef %60, ptr noundef %69)
  %482 = load i64, ptr %69, align 8, !tbaa !9
  %483 = icmp eq i64 %482, 0
  br i1 %483, label %484, label %519

484:                                              ; preds = %470
  %485 = load ptr, ptr %26, align 8, !tbaa !5
  %486 = load ptr, ptr %26, align 8, !tbaa !5
  %487 = load ptr, ptr %28, align 8, !tbaa !5
  %488 = load i64, ptr %47, align 8, !tbaa !9
  %489 = getelementptr inbounds float, ptr %487, i64 %488
  %490 = load ptr, ptr %29, align 8, !tbaa !5
  %491 = load ptr, ptr %34, align 8, !tbaa !5
  %492 = getelementptr inbounds float, ptr %491, i64 1
  %493 = load ptr, ptr %35, align 8, !tbaa !5
  %494 = getelementptr inbounds float, ptr %493, i64 1
  %495 = load ptr, ptr %33, align 8, !tbaa !5
  %496 = call i32 @slaqge_(ptr noundef %485, ptr noundef %486, ptr noundef %489, ptr noundef %490, ptr noundef %492, ptr noundef %494, ptr noundef %71, ptr noundef %66, ptr noundef %60, ptr noundef %495)
  %497 = load ptr, ptr %33, align 8, !tbaa !5
  %498 = call i64 @lsame_(ptr noundef %497, ptr noundef @.str.2)
  %499 = icmp ne i64 %498, 0
  br i1 %499, label %504, label %500

500:                                              ; preds = %484
  %501 = load ptr, ptr %33, align 8, !tbaa !5
  %502 = call i64 @lsame_(ptr noundef %501, ptr noundef @.str.3)
  %503 = icmp ne i64 %502, 0
  br label %504

504:                                              ; preds = %500, %484
  %505 = phi i1 [ true, %484 ], [ %503, %500 ]
  %506 = zext i1 %505 to i32
  %507 = sext i32 %506 to i64
  store i64 %507, ptr %74, align 8, !tbaa !9
  %508 = load ptr, ptr %33, align 8, !tbaa !5
  %509 = call i64 @lsame_(ptr noundef %508, ptr noundef @.str.4)
  %510 = icmp ne i64 %509, 0
  br i1 %510, label %515, label %511

511:                                              ; preds = %504
  %512 = load ptr, ptr %33, align 8, !tbaa !5
  %513 = call i64 @lsame_(ptr noundef %512, ptr noundef @.str.3)
  %514 = icmp ne i64 %513, 0
  br label %515

515:                                              ; preds = %511, %504
  %516 = phi i1 [ true, %504 ], [ %514, %511 ]
  %517 = zext i1 %516 to i32
  %518 = sext i32 %517 to i64
  store i64 %518, ptr %70, align 8, !tbaa !9
  br label %519

519:                                              ; preds = %515, %470
  br label %520

520:                                              ; preds = %519, %467
  %521 = load i64, ptr %72, align 8, !tbaa !9
  %522 = icmp ne i64 %521, 0
  br i1 %522, label %523, label %570

523:                                              ; preds = %520
  %524 = load i64, ptr %74, align 8, !tbaa !9
  %525 = icmp ne i64 %524, 0
  br i1 %525, label %526, label %569

526:                                              ; preds = %523
  %527 = load ptr, ptr %27, align 8, !tbaa !5
  %528 = load i64, ptr %527, align 8, !tbaa !9
  store i64 %528, ptr %54, align 8, !tbaa !9
  store i64 1, ptr %59, align 8, !tbaa !9
  br label %529

529:                                              ; preds = %565, %526
  %530 = load i64, ptr %59, align 8, !tbaa !9
  %531 = load i64, ptr %54, align 8, !tbaa !9
  %532 = icmp sle i64 %530, %531
  br i1 %532, label %533, label %568

533:                                              ; preds = %529
  %534 = load ptr, ptr %26, align 8, !tbaa !5
  %535 = load i64, ptr %534, align 8, !tbaa !9
  store i64 %535, ptr %55, align 8, !tbaa !9
  store i64 1, ptr %58, align 8, !tbaa !9
  br label %536

536:                                              ; preds = %561, %533
  %537 = load i64, ptr %58, align 8, !tbaa !9
  %538 = load i64, ptr %55, align 8, !tbaa !9
  %539 = icmp sle i64 %537, %538
  br i1 %539, label %540, label %564

540:                                              ; preds = %536
  %541 = load ptr, ptr %34, align 8, !tbaa !5
  %542 = load i64, ptr %58, align 8, !tbaa !9
  %543 = getelementptr inbounds float, ptr %541, i64 %542
  %544 = load float, ptr %543, align 4, !tbaa !12
  %545 = load ptr, ptr %36, align 8, !tbaa !5
  %546 = load i64, ptr %58, align 8, !tbaa !9
  %547 = load i64, ptr %59, align 8, !tbaa !9
  %548 = load i64, ptr %50, align 8, !tbaa !9
  %549 = mul nsw i64 %547, %548
  %550 = add nsw i64 %546, %549
  %551 = getelementptr inbounds float, ptr %545, i64 %550
  %552 = load float, ptr %551, align 4, !tbaa !12
  %553 = fmul float %544, %552
  %554 = load ptr, ptr %36, align 8, !tbaa !5
  %555 = load i64, ptr %58, align 8, !tbaa !9
  %556 = load i64, ptr %59, align 8, !tbaa !9
  %557 = load i64, ptr %50, align 8, !tbaa !9
  %558 = mul nsw i64 %556, %557
  %559 = add nsw i64 %555, %558
  %560 = getelementptr inbounds float, ptr %554, i64 %559
  store float %553, ptr %560, align 4, !tbaa !12
  br label %561

561:                                              ; preds = %540
  %562 = load i64, ptr %58, align 8, !tbaa !9
  %563 = add nsw i64 %562, 1
  store i64 %563, ptr %58, align 8, !tbaa !9
  br label %536, !llvm.loop !17

564:                                              ; preds = %536
  br label %565

565:                                              ; preds = %564
  %566 = load i64, ptr %59, align 8, !tbaa !9
  %567 = add nsw i64 %566, 1
  store i64 %567, ptr %59, align 8, !tbaa !9
  br label %529, !llvm.loop !18

568:                                              ; preds = %529
  br label %569

569:                                              ; preds = %568, %523
  br label %617

570:                                              ; preds = %520
  %571 = load i64, ptr %70, align 8, !tbaa !9
  %572 = icmp ne i64 %571, 0
  br i1 %572, label %573, label %616

573:                                              ; preds = %570
  %574 = load ptr, ptr %27, align 8, !tbaa !5
  %575 = load i64, ptr %574, align 8, !tbaa !9
  store i64 %575, ptr %54, align 8, !tbaa !9
  store i64 1, ptr %59, align 8, !tbaa !9
  br label %576

576:                                              ; preds = %612, %573
  %577 = load i64, ptr %59, align 8, !tbaa !9
  %578 = load i64, ptr %54, align 8, !tbaa !9
  %579 = icmp sle i64 %577, %578
  br i1 %579, label %580, label %615

580:                                              ; preds = %576
  %581 = load ptr, ptr %26, align 8, !tbaa !5
  %582 = load i64, ptr %581, align 8, !tbaa !9
  store i64 %582, ptr %55, align 8, !tbaa !9
  store i64 1, ptr %58, align 8, !tbaa !9
  br label %583

583:                                              ; preds = %608, %580
  %584 = load i64, ptr %58, align 8, !tbaa !9
  %585 = load i64, ptr %55, align 8, !tbaa !9
  %586 = icmp sle i64 %584, %585
  br i1 %586, label %587, label %611

587:                                              ; preds = %583
  %588 = load ptr, ptr %35, align 8, !tbaa !5
  %589 = load i64, ptr %58, align 8, !tbaa !9
  %590 = getelementptr inbounds float, ptr %588, i64 %589
  %591 = load float, ptr %590, align 4, !tbaa !12
  %592 = load ptr, ptr %36, align 8, !tbaa !5
  %593 = load i64, ptr %58, align 8, !tbaa !9
  %594 = load i64, ptr %59, align 8, !tbaa !9
  %595 = load i64, ptr %50, align 8, !tbaa !9
  %596 = mul nsw i64 %594, %595
  %597 = add nsw i64 %593, %596
  %598 = getelementptr inbounds float, ptr %592, i64 %597
  %599 = load float, ptr %598, align 4, !tbaa !12
  %600 = fmul float %591, %599
  %601 = load ptr, ptr %36, align 8, !tbaa !5
  %602 = load i64, ptr %58, align 8, !tbaa !9
  %603 = load i64, ptr %59, align 8, !tbaa !9
  %604 = load i64, ptr %50, align 8, !tbaa !9
  %605 = mul nsw i64 %603, %604
  %606 = add nsw i64 %602, %605
  %607 = getelementptr inbounds float, ptr %601, i64 %606
  store float %600, ptr %607, align 4, !tbaa !12
  br label %608

608:                                              ; preds = %587
  %609 = load i64, ptr %58, align 8, !tbaa !9
  %610 = add nsw i64 %609, 1
  store i64 %610, ptr %58, align 8, !tbaa !9
  br label %583, !llvm.loop !19

611:                                              ; preds = %583
  br label %612

612:                                              ; preds = %611
  %613 = load i64, ptr %59, align 8, !tbaa !9
  %614 = add nsw i64 %613, 1
  store i64 %614, ptr %59, align 8, !tbaa !9
  br label %576, !llvm.loop !20

615:                                              ; preds = %576
  br label %616

616:                                              ; preds = %615, %570
  br label %617

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

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

623:                                              ; preds = %620, %617
  %624 = load ptr, ptr %26, align 8, !tbaa !5
  %625 = load ptr, ptr %26, align 8, !tbaa !5
  %626 = load ptr, ptr %28, align 8, !tbaa !5
  %627 = load i64, ptr %47, align 8, !tbaa !9
  %628 = getelementptr inbounds float, ptr %626, i64 %627
  %629 = load ptr, ptr %29, align 8, !tbaa !5
  %630 = load ptr, ptr %30, align 8, !tbaa !5
  %631 = load i64, ptr %49, align 8, !tbaa !9
  %632 = getelementptr inbounds float, ptr %630, i64 %631
  %633 = load ptr, ptr %31, align 8, !tbaa !5
  %634 = call i32 @slacpy_(ptr noundef @.str.9, ptr noundef %624, ptr noundef %625, ptr noundef %628, ptr noundef %629, ptr noundef %632, ptr noundef %633)
  %635 = load ptr, ptr %26, align 8, !tbaa !5
  %636 = load ptr, ptr %26, align 8, !tbaa !5
  %637 = load ptr, ptr %30, align 8, !tbaa !5
  %638 = load i64, ptr %49, align 8, !tbaa !9
  %639 = getelementptr inbounds float, ptr %637, i64 %638
  %640 = load ptr, ptr %31, align 8, !tbaa !5
  %641 = load ptr, ptr %32, align 8, !tbaa !5
  %642 = getelementptr inbounds i64, ptr %641, i64 1
  %643 = load ptr, ptr %45, align 8, !tbaa !5
  %644 = call i32 @sgetrf_(ptr noundef %635, ptr noundef %636, ptr noundef %639, ptr noundef %640, ptr noundef %642, ptr noundef %643)
  %645 = load ptr, ptr %45, align 8, !tbaa !5
  %646 = load i64, ptr %645, align 8, !tbaa !9
  %647 = icmp sgt i64 %646, 0
  br i1 %647, label %648, label %681

648:                                              ; preds = %623
  %649 = load ptr, ptr %45, align 8, !tbaa !5
  %650 = load ptr, ptr %45, align 8, !tbaa !5
  %651 = load ptr, ptr %30, align 8, !tbaa !5
  %652 = load i64, ptr %49, align 8, !tbaa !9
  %653 = getelementptr inbounds float, ptr %651, i64 %652
  %654 = load ptr, ptr %31, align 8, !tbaa !5
  %655 = load ptr, ptr %43, align 8, !tbaa !5
  %656 = getelementptr inbounds float, ptr %655, i64 1
  %657 = call double @slantr_(ptr noundef @.str.10, ptr noundef @.str.11, ptr noundef @.str, ptr noundef %649, ptr noundef %650, ptr noundef %653, ptr noundef %654, ptr noundef %656)
  %658 = fptrunc double %657 to float
  store float %658, ptr %75, align 4, !tbaa !12
  %659 = load float, ptr %75, 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 %75, align 4, !tbaa !12
  br label %676

662:                                              ; preds = %648
  %663 = load ptr, ptr %26, align 8, !tbaa !5
  %664 = load ptr, ptr %45, align 8, !tbaa !5
  %665 = load ptr, ptr %28, align 8, !tbaa !5
  %666 = load i64, ptr %47, align 8, !tbaa !9
  %667 = getelementptr inbounds float, ptr %665, i64 %666
  %668 = load ptr, ptr %29, align 8, !tbaa !5
  %669 = load ptr, ptr %43, align 8, !tbaa !5
  %670 = getelementptr inbounds float, ptr %669, i64 1
  %671 = call double @slange_(ptr noundef @.str.10, ptr noundef %663, ptr noundef %664, ptr noundef %667, ptr noundef %668, ptr noundef %670)
  %672 = load float, ptr %75, align 4, !tbaa !12
  %673 = fpext float %672 to double
  %674 = fdiv double %671, %673
  %675 = fptrunc double %674 to float
  store float %675, ptr %75, align 4, !tbaa !12
  br label %676

676:                                              ; preds = %662, %661
  %677 = load float, ptr %75, align 4, !tbaa !12
  %678 = load ptr, ptr %43, align 8, !tbaa !5
  %679 = getelementptr inbounds float, ptr %678, i64 1
  store float %677, ptr %679, align 4, !tbaa !12
  %680 = load ptr, ptr %40, align 8, !tbaa !5
  store float 0.000000e+00, ptr %680, align 4, !tbaa !12
  store i32 0, ptr %23, align 4
  store i32 1, ptr %76, align 4
  br label %944

681:                                              ; preds = %623
  br label %682

682:                                              ; preds = %681, %620
  %683 = load i64, ptr %72, align 8, !tbaa !9
  %684 = icmp ne i64 %683, 0
  br i1 %684, label %685, label %687

685:                                              ; preds = %682
  %686 = getelementptr inbounds [1 x i8], ptr %61, i64 0, i64 0
  store i8 49, ptr %686, align 1, !tbaa !11
  br label %689

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

689:                                              ; preds = %687, %685
  %690 = getelementptr inbounds [1 x i8], ptr %61, i64 0, i64 0
  %691 = load ptr, ptr %26, align 8, !tbaa !5
  %692 = load ptr, ptr %26, align 8, !tbaa !5
  %693 = load ptr, ptr %28, align 8, !tbaa !5
  %694 = load i64, ptr %47, align 8, !tbaa !9
  %695 = getelementptr inbounds float, ptr %693, i64 %694
  %696 = load ptr, ptr %29, align 8, !tbaa !5
  %697 = load ptr, ptr %43, align 8, !tbaa !5
  %698 = getelementptr inbounds float, ptr %697, i64 1
  %699 = call double @slange_(ptr noundef %690, ptr noundef %691, ptr noundef %692, ptr noundef %695, ptr noundef %696, ptr noundef %698)
  %700 = fptrunc double %699 to float
  store float %700, ptr %64, align 4, !tbaa !12
  %701 = load ptr, ptr %26, align 8, !tbaa !5
  %702 = load ptr, ptr %26, align 8, !tbaa !5
  %703 = load ptr, ptr %30, align 8, !tbaa !5
  %704 = load i64, ptr %49, align 8, !tbaa !9
  %705 = getelementptr inbounds float, ptr %703, i64 %704
  %706 = load ptr, ptr %31, align 8, !tbaa !5
  %707 = load ptr, ptr %43, align 8, !tbaa !5
  %708 = getelementptr inbounds float, ptr %707, i64 1
  %709 = call double @slantr_(ptr noundef @.str.10, ptr noundef @.str.11, ptr noundef @.str, ptr noundef %701, ptr noundef %702, ptr noundef %705, ptr noundef %706, ptr noundef %708)
  %710 = fptrunc double %709 to float
  store float %710, ptr %75, align 4, !tbaa !12
  %711 = load float, ptr %75, align 4, !tbaa !12
  %712 = fcmp oeq float %711, 0.000000e+00
  br i1 %712, label %713, label %714

713:                                              ; preds = %689
  store float 1.000000e+00, ptr %75, align 4, !tbaa !12
  br label %728

714:                                              ; preds = %689
  %715 = load ptr, ptr %26, align 8, !tbaa !5
  %716 = load ptr, ptr %26, align 8, !tbaa !5
  %717 = load ptr, ptr %28, align 8, !tbaa !5
  %718 = load i64, ptr %47, align 8, !tbaa !9
  %719 = getelementptr inbounds float, ptr %717, i64 %718
  %720 = load ptr, ptr %29, align 8, !tbaa !5
  %721 = load ptr, ptr %43, align 8, !tbaa !5
  %722 = getelementptr inbounds float, ptr %721, i64 1
  %723 = call double @slange_(ptr noundef @.str.10, ptr noundef %715, ptr noundef %716, ptr noundef %719, ptr noundef %720, ptr noundef %722)
  %724 = load float, ptr %75, align 4, !tbaa !12
  %725 = fpext float %724 to double
  %726 = fdiv double %723, %725
  %727 = fptrunc double %726 to float
  store float %727, ptr %75, align 4, !tbaa !12
  br label %728

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

801:                                              ; preds = %728
  %802 = load i64, ptr %70, align 8, !tbaa !9
  %803 = icmp ne i64 %802, 0
  br i1 %803, label %804, label %864

804:                                              ; preds = %801
  %805 = load ptr, ptr %27, align 8, !tbaa !5
  %806 = load i64, ptr %805, align 8, !tbaa !9
  store i64 %806, ptr %54, align 8, !tbaa !9
  store i64 1, ptr %59, align 8, !tbaa !9
  br label %807

807:                                              ; preds = %843, %804
  %808 = load i64, ptr %59, align 8, !tbaa !9
  %809 = load i64, ptr %54, align 8, !tbaa !9
  %810 = icmp sle i64 %808, %809
  br i1 %810, label %811, label %846

811:                                              ; preds = %807
  %812 = load ptr, ptr %26, align 8, !tbaa !5
  %813 = load i64, ptr %812, align 8, !tbaa !9
  store i64 %813, ptr %55, align 8, !tbaa !9
  store i64 1, ptr %58, align 8, !tbaa !9
  br label %814

814:                                              ; preds = %839, %811
  %815 = load i64, ptr %58, align 8, !tbaa !9
  %816 = load i64, ptr %55, align 8, !tbaa !9
  %817 = icmp sle i64 %815, %816
  br i1 %817, label %818, label %842

818:                                              ; preds = %814
  %819 = load ptr, ptr %35, align 8, !tbaa !5
  %820 = load i64, ptr %58, align 8, !tbaa !9
  %821 = getelementptr inbounds float, ptr %819, i64 %820
  %822 = load float, ptr %821, align 4, !tbaa !12
  %823 = load ptr, ptr %38, align 8, !tbaa !5
  %824 = load i64, ptr %58, align 8, !tbaa !9
  %825 = load i64, ptr %59, align 8, !tbaa !9
  %826 = load i64, ptr %52, align 8, !tbaa !9
  %827 = mul nsw i64 %825, %826
  %828 = add nsw i64 %824, %827
  %829 = getelementptr inbounds float, ptr %823, i64 %828
  %830 = load float, ptr %829, align 4, !tbaa !12
  %831 = fmul float %822, %830
  %832 = load ptr, ptr %38, align 8, !tbaa !5
  %833 = load i64, ptr %58, align 8, !tbaa !9
  %834 = load i64, ptr %59, align 8, !tbaa !9
  %835 = load i64, ptr %52, align 8, !tbaa !9
  %836 = mul nsw i64 %834, %835
  %837 = add nsw i64 %833, %836
  %838 = getelementptr inbounds float, ptr %832, i64 %837
  store float %831, ptr %838, align 4, !tbaa !12
  br label %839

839:                                              ; preds = %818
  %840 = load i64, ptr %58, align 8, !tbaa !9
  %841 = add nsw i64 %840, 1
  store i64 %841, ptr %58, align 8, !tbaa !9
  br label %814, !llvm.loop !21

842:                                              ; preds = %814
  br label %843

843:                                              ; preds = %842
  %844 = load i64, ptr %59, align 8, !tbaa !9
  %845 = add nsw i64 %844, 1
  store i64 %845, ptr %59, align 8, !tbaa !9
  br label %807, !llvm.loop !22

846:                                              ; preds = %807
  %847 = load ptr, ptr %27, align 8, !tbaa !5
  %848 = load i64, ptr %847, align 8, !tbaa !9
  store i64 %848, ptr %54, align 8, !tbaa !9
  store i64 1, ptr %59, align 8, !tbaa !9
  br label %849

849:                                              ; preds = %860, %846
  %850 = load i64, ptr %59, align 8, !tbaa !9
  %851 = load i64, ptr %54, align 8, !tbaa !9
  %852 = icmp sle i64 %850, %851
  br i1 %852, label %853, label %863

853:                                              ; preds = %849
  %854 = load float, ptr %66, align 4, !tbaa !12
  %855 = load ptr, ptr %41, align 8, !tbaa !5
  %856 = load i64, ptr %59, align 8, !tbaa !9
  %857 = getelementptr inbounds float, ptr %855, i64 %856
  %858 = load float, ptr %857, align 4, !tbaa !12
  %859 = fdiv float %858, %854
  store float %859, ptr %857, align 4, !tbaa !12
  br label %860

860:                                              ; preds = %853
  %861 = load i64, ptr %59, align 8, !tbaa !9
  %862 = add nsw i64 %861, 1
  store i64 %862, ptr %59, align 8, !tbaa !9
  br label %849, !llvm.loop !23

863:                                              ; preds = %849
  br label %864

864:                                              ; preds = %863, %801
  br label %929

865:                                              ; preds = %728
  %866 = load i64, ptr %74, align 8, !tbaa !9
  %867 = icmp ne i64 %866, 0
  br i1 %867, label %868, label %928

868:                                              ; preds = %865
  %869 = load ptr, ptr %27, align 8, !tbaa !5
  %870 = load i64, ptr %869, align 8, !tbaa !9
  store i64 %870, ptr %54, align 8, !tbaa !9
  store i64 1, ptr %59, align 8, !tbaa !9
  br label %871

871:                                              ; preds = %907, %868
  %872 = load i64, ptr %59, align 8, !tbaa !9
  %873 = load i64, ptr %54, align 8, !tbaa !9
  %874 = icmp sle i64 %872, %873
  br i1 %874, label %875, label %910

875:                                              ; preds = %871
  %876 = load ptr, ptr %26, align 8, !tbaa !5
  %877 = load i64, ptr %876, align 8, !tbaa !9
  store i64 %877, ptr %55, align 8, !tbaa !9
  store i64 1, ptr %58, align 8, !tbaa !9
  br label %878

878:                                              ; preds = %903, %875
  %879 = load i64, ptr %58, align 8, !tbaa !9
  %880 = load i64, ptr %55, align 8, !tbaa !9
  %881 = icmp sle i64 %879, %880
  br i1 %881, label %882, label %906

882:                                              ; preds = %878
  %883 = load ptr, ptr %34, align 8, !tbaa !5
  %884 = load i64, ptr %58, align 8, !tbaa !9
  %885 = getelementptr inbounds float, ptr %883, i64 %884
  %886 = load float, ptr %885, align 4, !tbaa !12
  %887 = load ptr, ptr %38, align 8, !tbaa !5
  %888 = load i64, ptr %58, align 8, !tbaa !9
  %889 = load i64, ptr %59, align 8, !tbaa !9
  %890 = load i64, ptr %52, align 8, !tbaa !9
  %891 = mul nsw i64 %889, %890
  %892 = add nsw i64 %888, %891
  %893 = getelementptr inbounds float, ptr %887, i64 %892
  %894 = load float, ptr %893, align 4, !tbaa !12
  %895 = fmul float %886, %894
  %896 = load ptr, ptr %38, align 8, !tbaa !5
  %897 = load i64, ptr %58, align 8, !tbaa !9
  %898 = load i64, ptr %59, align 8, !tbaa !9
  %899 = load i64, ptr %52, align 8, !tbaa !9
  %900 = mul nsw i64 %898, %899
  %901 = add nsw i64 %897, %900
  %902 = getelementptr inbounds float, ptr %896, i64 %901
  store float %895, ptr %902, align 4, !tbaa !12
  br label %903

903:                                              ; preds = %882
  %904 = load i64, ptr %58, align 8, !tbaa !9
  %905 = add nsw i64 %904, 1
  store i64 %905, ptr %58, align 8, !tbaa !9
  br label %878, !llvm.loop !24

906:                                              ; preds = %878
  br label %907

907:                                              ; preds = %906
  %908 = load i64, ptr %59, align 8, !tbaa !9
  %909 = add nsw i64 %908, 1
  store i64 %909, ptr %59, align 8, !tbaa !9
  br label %871, !llvm.loop !25

910:                                              ; preds = %871
  %911 = load ptr, ptr %27, align 8, !tbaa !5
  %912 = load i64, ptr %911, align 8, !tbaa !9
  store i64 %912, ptr %54, align 8, !tbaa !9
  store i64 1, ptr %59, align 8, !tbaa !9
  br label %913

913:                                              ; preds = %924, %910
  %914 = load i64, ptr %59, align 8, !tbaa !9
  %915 = load i64, ptr %54, align 8, !tbaa !9
  %916 = icmp sle i64 %914, %915
  br i1 %916, label %917, label %927

917:                                              ; preds = %913
  %918 = load float, ptr %71, align 4, !tbaa !12
  %919 = load ptr, ptr %41, align 8, !tbaa !5
  %920 = load i64, ptr %59, align 8, !tbaa !9
  %921 = getelementptr inbounds float, ptr %919, i64 %920
  %922 = load float, ptr %921, align 4, !tbaa !12
  %923 = fdiv float %922, %918
  store float %923, ptr %921, align 4, !tbaa !12
  br label %924

924:                                              ; preds = %917
  %925 = load i64, ptr %59, align 8, !tbaa !9
  %926 = add nsw i64 %925, 1
  store i64 %926, ptr %59, align 8, !tbaa !9
  br label %913, !llvm.loop !26

927:                                              ; preds = %913
  br label %928

928:                                              ; preds = %927, %865
  br label %929

929:                                              ; preds = %928, %864
  %930 = load ptr, ptr %40, align 8, !tbaa !5
  %931 = load float, ptr %930, align 4, !tbaa !12
  %932 = fpext float %931 to double
  %933 = call double @slamch_(ptr noundef @.str.12)
  %934 = fcmp olt double %932, %933
  br i1 %934, label %935, label %940

935:                                              ; preds = %929
  %936 = load ptr, ptr %26, align 8, !tbaa !5
  %937 = load i64, ptr %936, align 8, !tbaa !9
  %938 = add nsw i64 %937, 1
  %939 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 %938, ptr %939, align 8, !tbaa !9
  br label %940

940:                                              ; preds = %935, %929
  %941 = load float, ptr %75, align 4, !tbaa !12
  %942 = load ptr, ptr %43, align 8, !tbaa !5
  %943 = getelementptr inbounds float, ptr %942, i64 1
  store float %941, ptr %943, align 4, !tbaa !12
  store i32 0, ptr %23, align 4
  store i32 1, ptr %76, align 4
  br label %944

944:                                              ; preds = %940, %676, %462
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 8, 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 1, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  %945 = load i32, ptr %23, align 4
  ret i32 %945
}

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

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

declare double @slamch_(ptr noundef) #2

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

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

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

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

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

declare i32 @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 i32 @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 = !{!"long", !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 noundef i32 @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 i64, align 8
  %24 = alloca float, align 4
  %25 = alloca [1 x i8], align 1
  %26 = alloca float, align 4
  %27 = alloca float, align 4
  %28 = alloca i64, align 8
  %29 = alloca float, align 4
  call void @llvm.lifetime.start.p0(i64 8, 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 8, 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 i64, ptr %13, align 8, !tbaa !5
  %33 = xor i64 %32, -1
  %34 = getelementptr inbounds float, ptr %12, i64 %33
  %35 = load i64, ptr %15, align 8, !tbaa !5
  %36 = xor i64 %35, -1
  %37 = getelementptr inbounds float, ptr %14, i64 %36
  %38 = getelementptr inbounds i8, ptr %17, i64 -4
  store i64 0, ptr %21, align 8, !tbaa !5
  %39 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %40 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %41 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #4
  %42 = icmp ne i64 %39, 0
  %43 = icmp ne i64 %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 %63

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

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

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

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

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

63:                                               ; preds = %.thread, %56
  %.0354416 = phi i64 [ 0, %.thread ], [ %51, %56 ]
  %.0356414 = phi float [ undef, %.thread ], [ %60, %56 ]
  %.0358413 = phi i64 [ 0, %.thread ], [ %58, %56 ]
  %.0360411 = phi float [ undef, %.thread ], [ %61, %56 ]
  %.not380 = icmp eq i64 %41, 0
  br i1 %.not380, label %64, label %68

64:                                               ; preds = %63
  %65 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.7) #4
  %.not381 = icmp eq i64 %65, 0
  br i1 %.not381, label %66, label %68

66:                                               ; preds = %64
  %67 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #4
  %.not382 = icmp eq i64 %67, 0
  br i1 %.not382, label %.thread423.sink.split, label %68

68:                                               ; preds = %66, %64, %63
  %69 = load i64, ptr %2, align 8, !tbaa !5
  %70 = icmp slt i64 %69, 0
  br i1 %70, label %.thread423.sink.split, label %71

71:                                               ; preds = %68
  %72 = load i64, ptr %3, align 8, !tbaa !5
  %73 = icmp slt i64 %72, 0
  br i1 %73, label %.thread423.sink.split, label %74

74:                                               ; preds = %71
  %75 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %69, i64 1)
  %76 = icmp slt i64 %75, %spec.select
  br i1 %76, label %.thread423.sink.split, label %77

77:                                               ; preds = %74
  %78 = load i64, ptr %7, align 8, !tbaa !5
  %79 = icmp slt i64 %78, %spec.select
  br i1 %79, label %.thread423.sink.split, label %80

80:                                               ; preds = %77
  %81 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.6) #4
  %82 = icmp eq i64 %81, 0
  %83 = icmp ne i64 %.0354416, 0
  %or.cond5 = select i1 %82, i1 true, i1 %83
  %84 = icmp ne i64 %.0358413, 0
  %or.cond7 = select i1 %or.cond5, i1 true, i1 %84
  br i1 %or.cond7, label %87, label %85

85:                                               ; preds = %80
  %86 = tail call i64 @lsame_(ptr noundef %9, ptr noundef nonnull @.str) #4
  %.not383 = icmp eq i64 %86, 0
  br i1 %.not383, label %.thread423.sink.split, label %..thread418_crit_edge

..thread418_crit_edge:                            ; preds = %85
  %.pr.pre = load i64, ptr %21, align 8, !tbaa !5
  br label %.thread418

87:                                               ; preds = %80
  br i1 %83, label %88, label %120

88:                                               ; preds = %87
  %89 = load i64, ptr %2, align 8, !tbaa !5
  %.not384432 = icmp slt i64 %89, 1
  br i1 %.not384432, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %88
  %xtraiter = and i64 %89, 1
  %90 = icmp eq i64 %89, 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, 9223372036854775806
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %.0361435 = phi float [ 0.000000e+00, %.lr.ph.preheader.new ], [ %102, %.lr.ph ]
  %.0363434 = phi float [ %.0360411, %.lr.ph.preheader.new ], [ %100, %.lr.ph ]
  %.0365433 = phi i64 [ 1, %.lr.ph.preheader.new ], [ %103, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %91 = getelementptr inbounds float, ptr %30, i64 %.0365433
  %92 = load float, ptr %91, align 4, !tbaa !10
  %93 = fcmp ole float %.0363434, %92
  %94 = select i1 %93, float %.0363434, float %92
  %95 = fcmp oge float %.0361435, %92
  %96 = select i1 %95, float %.0361435, float %92
  %97 = getelementptr float, ptr %10, i64 %.0365433
  %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
  %103 = add nuw i64 %.0365433, 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
  %.lcssa653.ph = phi float [ poison, %.lr.ph.preheader ], [ %100, %.lr.ph ]
  %.lcssa652.ph = phi float [ poison, %.lr.ph.preheader ], [ %102, %.lr.ph ]
  %.0361435.unr = phi float [ 0.000000e+00, %.lr.ph.preheader ], [ %102, %.lr.ph ]
  %.0363434.unr = phi float [ %.0360411, %.lr.ph.preheader ], [ %100, %.lr.ph ]
  %.0365433.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %103, %.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
  %104 = getelementptr inbounds float, ptr %30, i64 %.0365433.unr
  %105 = load float, ptr %104, align 4, !tbaa !10
  %106 = fcmp ole float %.0363434.unr, %105
  %107 = select i1 %106, float %.0363434.unr, float %105
  %108 = fcmp oge float %.0361435.unr, %105
  %109 = select i1 %108, float %.0361435.unr, float %105
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %88
  %.0363.lcssa = phi float [ %.0360411, %88 ], [ %.lcssa653.ph, %._crit_edge.loopexit.unr-lcssa ], [ %107, %.lr.ph.epil ]
  %.0361.lcssa = phi float [ 0.000000e+00, %88 ], [ %.lcssa652.ph, %._crit_edge.loopexit.unr-lcssa ], [ %109, %.lr.ph.epil ]
  %110 = fcmp ugt float %.0363.lcssa, 0.000000e+00
  br i1 %110, label %111, label %.thread423.sink.split

111:                                              ; preds = %._crit_edge
  %112 = icmp sgt i64 %89, 0
  br i1 %112, label %113, label %119

113:                                              ; preds = %111
  %114 = fcmp oge float %.0363.lcssa, %.0356414
  %115 = select i1 %114, float %.0363.lcssa, float %.0356414
  %116 = fcmp ole float %.0361.lcssa, %.0360411
  %117 = select i1 %116, float %.0361.lcssa, float %.0360411
  %118 = fdiv float %115, %117
  store float %118, ptr %29, align 4, !tbaa !10
  br label %120

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

120:                                              ; preds = %119, %113, %87
  %.pr.pre518.pr = load i64, ptr %21, align 8, !tbaa !5
  br i1 %84, label %121, label %.thread418

121:                                              ; preds = %120
  %122 = icmp eq i64 %.pr.pre518.pr, 0
  br i1 %122, label %123, label %.thread423

123:                                              ; preds = %121
  %124 = load i64, ptr %2, align 8, !tbaa !5
  %.not385437 = icmp slt i64 %124, 1
  br i1 %.not385437, label %._crit_edge443, label %.lr.ph442.preheader

.lr.ph442.preheader:                              ; preds = %123
  %xtraiter656 = and i64 %124, 1
  %125 = icmp eq i64 %124, 1
  br i1 %125, label %._crit_edge443.loopexit.unr-lcssa, label %.lr.ph442.preheader.new

.lr.ph442.preheader.new:                          ; preds = %.lr.ph442.preheader
  %unroll_iter660 = and i64 %124, 9223372036854775806
  br label %.lr.ph442

.lr.ph442:                                        ; preds = %.lr.ph442, %.lr.ph442.preheader.new
  %.1362440 = phi float [ 0.000000e+00, %.lr.ph442.preheader.new ], [ %137, %.lr.ph442 ]
  %.1364439 = phi float [ %.0360411, %.lr.ph442.preheader.new ], [ %135, %.lr.ph442 ]
  %.1366438 = phi i64 [ 1, %.lr.ph442.preheader.new ], [ %138, %.lr.ph442 ]
  %niter661 = phi i64 [ 0, %.lr.ph442.preheader.new ], [ %niter661.next.1, %.lr.ph442 ]
  %126 = getelementptr inbounds float, ptr %31, i64 %.1366438
  %127 = load float, ptr %126, align 4, !tbaa !10
  %128 = fcmp ole float %.1364439, %127
  %129 = select i1 %128, float %.1364439, float %127
  %130 = fcmp oge float %.1362440, %127
  %131 = select i1 %130, float %.1362440, float %127
  %132 = getelementptr float, ptr %11, i64 %.1366438
  %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
  %138 = add nuw i64 %.1366438, 2
  %niter661.next.1 = add i64 %niter661, 2
  %niter661.ncmp.1 = icmp eq i64 %niter661.next.1, %unroll_iter660
  br i1 %niter661.ncmp.1, label %._crit_edge443.loopexit.unr-lcssa, label %.lr.ph442, !llvm.loop !14

._crit_edge443.loopexit.unr-lcssa:                ; preds = %.lr.ph442, %.lr.ph442.preheader
  %.lcssa651.ph = phi float [ poison, %.lr.ph442.preheader ], [ %135, %.lr.ph442 ]
  %.lcssa.ph = phi float [ poison, %.lr.ph442.preheader ], [ %137, %.lr.ph442 ]
  %.1362440.unr = phi float [ 0.000000e+00, %.lr.ph442.preheader ], [ %137, %.lr.ph442 ]
  %.1364439.unr = phi float [ %.0360411, %.lr.ph442.preheader ], [ %135, %.lr.ph442 ]
  %.1366438.unr = phi i64 [ 1, %.lr.ph442.preheader ], [ %138, %.lr.ph442 ]
  %lcmp.mod657.not = icmp eq i64 %xtraiter656, 0
  br i1 %lcmp.mod657.not, label %._crit_edge443, label %.lr.ph442.epil

.lr.ph442.epil:                                   ; preds = %._crit_edge443.loopexit.unr-lcssa
  %139 = getelementptr inbounds float, ptr %31, i64 %.1366438.unr
  %140 = load float, ptr %139, align 4, !tbaa !10
  %141 = fcmp ole float %.1364439.unr, %140
  %142 = select i1 %141, float %.1364439.unr, float %140
  %143 = fcmp oge float %.1362440.unr, %140
  %144 = select i1 %143, float %.1362440.unr, float %140
  br label %._crit_edge443

._crit_edge443:                                   ; preds = %.lr.ph442.epil, %._crit_edge443.loopexit.unr-lcssa, %123
  %.1364.lcssa = phi float [ %.0360411, %123 ], [ %.lcssa651.ph, %._crit_edge443.loopexit.unr-lcssa ], [ %142, %.lr.ph442.epil ]
  %.1362.lcssa = phi float [ 0.000000e+00, %123 ], [ %.lcssa.ph, %._crit_edge443.loopexit.unr-lcssa ], [ %144, %.lr.ph442.epil ]
  %145 = fcmp ugt float %.1364.lcssa, 0.000000e+00
  br i1 %145, label %146, label %.thread423.sink.split

146:                                              ; preds = %._crit_edge443
  %147 = icmp sgt i64 %124, 0
  br i1 %147, label %148, label %154

148:                                              ; preds = %146
  %149 = fcmp oge float %.1364.lcssa, %.0356414
  %150 = select i1 %149, float %.1364.lcssa, float %.0356414
  %151 = fcmp ole float %.1362.lcssa, %.0360411
  %152 = select i1 %151, float %.1362.lcssa, float %.0360411
  %153 = fdiv float %150, %152
  store float %153, ptr %27, align 4, !tbaa !10
  br label %.thread418.thread

154:                                              ; preds = %146
  store float 1.000000e+00, ptr %27, align 4, !tbaa !10
  br label %.thread418.thread

.thread418:                                       ; preds = %..thread418_crit_edge, %120
  %.pr421.pr = phi i64 [ %.pr.pre, %..thread418_crit_edge ], [ %.pr.pre518.pr, %120 ]
  %155 = icmp eq i64 %.pr421.pr, 0
  br i1 %155, label %.thread418.thread, label %.thread423

.thread418.thread:                                ; preds = %148, %154, %.thread418
  %156 = load i64, ptr %13, align 8, !tbaa !5
  %157 = load i64, ptr %2, align 8, !tbaa !5
  %spec.select405 = tail call i64 @llvm.smax.i64(i64 %157, i64 1)
  %158 = icmp slt i64 %156, %spec.select405
  br i1 %158, label %.thread423.sink.split, label %159

159:                                              ; preds = %.thread418.thread
  %160 = load i64, ptr %15, align 8, !tbaa !5
  %161 = icmp slt i64 %160, %spec.select405
  br i1 %161, label %.thread423.sink.split, label %.thread419

.thread423.sink.split:                            ; preds = %159, %.thread418.thread, %._crit_edge443, %._crit_edge, %85, %77, %74, %71, %68, %66, %56
  %.sink = phi i64 [ -1, %56 ], [ -2, %66 ], [ -3, %68 ], [ -4, %71 ], [ -6, %74 ], [ -8, %77 ], [ -10, %85 ], [ -11, %._crit_edge ], [ -12, %._crit_edge443 ], [ -14, %.thread418.thread ], [ -16, %159 ]
  store i64 %.sink, ptr %21, align 8, !tbaa !5
  br label %.thread423

.thread423:                                       ; preds = %.thread423.sink.split, %121, %.thread418
  %162 = phi i64 [ %.pr421.pr, %.thread418 ], [ %.pr.pre518.pr, %121 ], [ %.sink, %.thread423.sink.split ]
  %163 = sub nsw i64 0, %162
  store i64 %163, ptr %23, align 8, !tbaa !5
  %164 = call i32 @xerbla_(ptr noundef nonnull @.str.8, ptr noundef nonnull %23) #4
  br label %429

.thread419:                                       ; preds = %159
  br i1 %43, label %165, label %185

165:                                              ; preds = %.thread419
  %166 = call i32 @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
  %167 = load i64, ptr %28, align 8, !tbaa !5
  %168 = icmp eq i64 %167, 0
  br i1 %168, label %169, label %185

169:                                              ; preds = %165
  %170 = call i32 @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
  %171 = call i64 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.2) #4
  %.not387 = icmp eq i64 %171, 0
  br i1 %.not387, label %172, label %175

172:                                              ; preds = %169
  %173 = call i64 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.3) #4
  %174 = icmp ne i64 %173, 0
  br label %175

175:                                              ; preds = %172, %169
  %176 = phi i1 [ true, %169 ], [ %174, %172 ]
  %177 = zext i1 %176 to i64
  %178 = call i64 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.4) #4
  %.not388 = icmp eq i64 %178, 0
  br i1 %.not388, label %179, label %182

179:                                              ; preds = %175
  %180 = call i64 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.3) #4
  %181 = icmp ne i64 %180, 0
  br label %182

182:                                              ; preds = %179, %175
  %183 = phi i1 [ true, %175 ], [ %181, %179 ]
  %184 = zext i1 %183 to i64
  br label %185

185:                                              ; preds = %165, %182, %.thread419
  %.1359 = phi i64 [ %184, %182 ], [ %.0358413, %165 ], [ %.0358413, %.thread419 ]
  %.1355 = phi i64 [ %177, %182 ], [ %.0354416, %165 ], [ %.0354416, %.thread419 ]
  br i1 %.not380, label %233, label %186

186:                                              ; preds = %185
  %.not393 = icmp eq i64 %.1355, 0
  br i1 %.not393, label %.loopexit430, label %187

187:                                              ; preds = %186
  %188 = load i64, ptr %3, align 8, !tbaa !5
  %.not394451 = icmp slt i64 %188, 1
  br i1 %.not394451, label %.loopexit430, label %.lr.ph454

.lr.ph454:                                        ; preds = %187
  %189 = load i64, ptr %2, align 8, !tbaa !5
  %.not403446 = icmp slt i64 %189, 1
  br i1 %.not403446, label %.loopexit430, label %.lr.ph449.preheader

.lr.ph449.preheader:                              ; preds = %.lr.ph454
  %190 = add nuw i64 %188, 4611686018427387903
  %191 = mul i64 %32, %190
  %192 = shl i64 %189, 2
  %193 = add i64 %191, %189
  %194 = shl i64 %193, 2
  %scevgep = getelementptr i8, ptr %12, i64 %194
  %scevgep540 = getelementptr i8, ptr %10, i64 %192
  %195 = add nuw i64 %189, 1
  %min.iters.check = icmp ult i64 %189, 8
  %bound0 = icmp ugt ptr %scevgep540, %12
  %bound1 = icmp ugt ptr %scevgep, %10
  %found.conflict = and i1 %bound0, %bound1
  %.mask = and i64 %32, 2305843009213693952
  %stride.check = icmp ne i64 %.mask, 0
  %196 = or i1 %found.conflict, %stride.check
  %n.vec = and i64 %189, 9223372036854775800
  %ind.end = or disjoint i64 %n.vec, 1
  %cmp.n = icmp eq i64 %189, %n.vec
  br label %.lr.ph449

.lr.ph449:                                        ; preds = %.lr.ph449.preheader, %._crit_edge450
  %.2452 = phi i64 [ %232, %._crit_edge450 ], [ 1, %.lr.ph449.preheader ]
  %197 = mul nsw i64 %.2452, %32
  %invariant.gep = getelementptr float, ptr %34, i64 %197
  %brmerge = select i1 %min.iters.check, i1 true, i1 %196
  br i1 %brmerge, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %.lr.ph449, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph449 ]
  %offset.idx = or disjoint i64 %index, 1
  %198 = getelementptr float, ptr %10, i64 %index
  %199 = getelementptr inbounds i8, ptr %198, i64 16
  %wide.load = load <4 x float>, ptr %198, align 4, !tbaa !10, !alias.scope !15
  %wide.load541 = load <4 x float>, ptr %199, align 4, !tbaa !10, !alias.scope !15
  %200 = getelementptr float, ptr %invariant.gep, i64 %offset.idx
  %201 = getelementptr i8, ptr %200, i64 16
  %wide.load542 = load <4 x float>, ptr %200, align 4, !tbaa !10, !alias.scope !18, !noalias !15
  %wide.load543 = load <4 x float>, ptr %201, align 4, !tbaa !10, !alias.scope !18, !noalias !15
  %202 = fmul <4 x float> %wide.load, %wide.load542
  %203 = fmul <4 x float> %wide.load541, %wide.load543
  store <4 x float> %202, ptr %200, align 4, !tbaa !10, !alias.scope !18, !noalias !15
  store <4 x float> %203, ptr %201, align 4, !tbaa !10, !alias.scope !18, !noalias !15
  %index.next = add nuw i64 %index, 8
  %204 = icmp eq i64 %index.next, %n.vec
  br i1 %204, label %middle.block, label %vector.body, !llvm.loop !20

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

scalar.ph.preheader:                              ; preds = %.lr.ph449, %middle.block
  %.0367447.ph = phi i64 [ 1, %.lr.ph449 ], [ %ind.end, %middle.block ]
  %205 = sub i64 %195, %.0367447.ph
  %206 = sub i64 %189, %.0367447.ph
  %xtraiter662 = and i64 %205, 3
  %lcmp.mod663.not = icmp eq i64 %xtraiter662, 0
  br i1 %lcmp.mod663.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %.0367447.prol = phi i64 [ %211, %scalar.ph.prol ], [ %.0367447.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %207 = getelementptr inbounds float, ptr %30, i64 %.0367447.prol
  %208 = load float, ptr %207, align 4, !tbaa !10
  %gep.prol = getelementptr float, ptr %invariant.gep, i64 %.0367447.prol
  %209 = load float, ptr %gep.prol, align 4, !tbaa !10
  %210 = fmul float %208, %209
  store float %210, ptr %gep.prol, align 4, !tbaa !10
  %211 = add nuw i64 %.0367447.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter662
  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
  %.0367447.unr = phi i64 [ %.0367447.ph, %scalar.ph.preheader ], [ %211, %scalar.ph.prol ]
  %212 = icmp ult i64 %206, 3
  br i1 %212, label %._crit_edge450, label %scalar.ph.preheader.new

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

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %.0367447 = phi i64 [ %.0367447.unr, %scalar.ph.preheader.new ], [ %231, %scalar.ph ]
  %213 = getelementptr inbounds float, ptr %30, i64 %.0367447
  %214 = load float, ptr %213, align 4, !tbaa !10
  %gep = getelementptr float, ptr %invariant.gep, i64 %.0367447
  %215 = load float, ptr %gep, align 4, !tbaa !10
  %216 = fmul float %214, %215
  store float %216, ptr %gep, align 4, !tbaa !10
  %217 = getelementptr float, ptr %10, i64 %.0367447
  %218 = load float, ptr %217, align 4, !tbaa !10
  %gep684 = getelementptr float, ptr %invariant.gep683, i64 %.0367447
  %219 = load float, ptr %gep684, align 4, !tbaa !10
  %220 = fmul float %218, %219
  store float %220, ptr %gep684, align 4, !tbaa !10
  %221 = add nuw i64 %.0367447, 2
  %222 = getelementptr inbounds float, ptr %30, i64 %221
  %223 = load float, ptr %222, align 4, !tbaa !10
  %gep.2 = getelementptr float, ptr %invariant.gep, i64 %221
  %224 = load float, ptr %gep.2, align 4, !tbaa !10
  %225 = fmul float %223, %224
  store float %225, ptr %gep.2, align 4, !tbaa !10
  %226 = add nuw i64 %.0367447, 3
  %227 = getelementptr inbounds float, ptr %30, i64 %226
  %228 = load float, ptr %227, align 4, !tbaa !10
  %gep.3 = getelementptr float, ptr %invariant.gep, i64 %226
  %229 = load float, ptr %gep.3, align 4, !tbaa !10
  %230 = fmul float %228, %229
  store float %230, ptr %gep.3, align 4, !tbaa !10
  %231 = add nuw i64 %.0367447, 4
  %exitcond508.not.3 = icmp eq i64 %226, %189
  br i1 %exitcond508.not.3, label %._crit_edge450, label %scalar.ph, !llvm.loop !25

._crit_edge450:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %232 = add nuw i64 %.2452, 1
  %exitcond509.not = icmp eq i64 %.2452, %188
  br i1 %exitcond509.not, label %.loopexit430, label %.lr.ph449, !llvm.loop !26

233:                                              ; preds = %185
  %.not390 = icmp eq i64 %.1359, 0
  br i1 %.not390, label %.loopexit430, label %234

234:                                              ; preds = %233
  %235 = load i64, ptr %3, align 8, !tbaa !5
  %.not391462 = icmp slt i64 %235, 1
  br i1 %.not391462, label %.loopexit430, label %.lr.ph465

.lr.ph465:                                        ; preds = %234
  %236 = load i64, ptr %2, align 8, !tbaa !5
  %.not392455 = icmp slt i64 %236, 1
  br i1 %.not392455, label %.loopexit430, label %.lr.ph458.preheader

.lr.ph458.preheader:                              ; preds = %.lr.ph465
  %237 = add nuw i64 %235, 4611686018427387903
  %238 = mul i64 %32, %237
  %239 = shl i64 %236, 2
  %240 = add i64 %238, %236
  %241 = shl i64 %240, 2
  %scevgep545 = getelementptr i8, ptr %12, i64 %241
  %scevgep546 = getelementptr i8, ptr %11, i64 %239
  %242 = add nuw i64 %236, 1
  %min.iters.check553 = icmp ult i64 %236, 8
  %bound0547 = icmp ugt ptr %scevgep546, %12
  %bound1548 = icmp ugt ptr %scevgep545, %11
  %found.conflict549 = and i1 %bound0547, %bound1548
  %.mask646 = and i64 %32, 2305843009213693952
  %stride.check550 = icmp ne i64 %.mask646, 0
  %243 = or i1 %found.conflict549, %stride.check550
  %n.vec556 = and i64 %236, 9223372036854775800
  %ind.end557 = or disjoint i64 %n.vec556, 1
  %cmp.n567 = icmp eq i64 %236, %n.vec556
  br label %.lr.ph458

.lr.ph458:                                        ; preds = %.lr.ph458.preheader, %._crit_edge459
  %.3463 = phi i64 [ %279, %._crit_edge459 ], [ 1, %.lr.ph458.preheader ]
  %244 = mul nsw i64 %.3463, %32
  %invariant.gep460 = getelementptr float, ptr %34, i64 %244
  %brmerge691 = select i1 %min.iters.check553, i1 true, i1 %243
  br i1 %brmerge691, label %scalar.ph552.preheader, label %vector.body559

vector.body559:                                   ; preds = %.lr.ph458, %vector.body559
  %index560 = phi i64 [ %index.next566, %vector.body559 ], [ 0, %.lr.ph458 ]
  %offset.idx561 = or disjoint i64 %index560, 1
  %245 = getelementptr float, ptr %11, i64 %index560
  %246 = getelementptr inbounds i8, ptr %245, i64 16
  %wide.load562 = load <4 x float>, ptr %245, align 4, !tbaa !10, !alias.scope !27
  %wide.load563 = load <4 x float>, ptr %246, align 4, !tbaa !10, !alias.scope !27
  %247 = getelementptr float, ptr %invariant.gep460, i64 %offset.idx561
  %248 = getelementptr i8, ptr %247, i64 16
  %wide.load564 = load <4 x float>, ptr %247, align 4, !tbaa !10, !alias.scope !30, !noalias !27
  %wide.load565 = load <4 x float>, ptr %248, align 4, !tbaa !10, !alias.scope !30, !noalias !27
  %249 = fmul <4 x float> %wide.load562, %wide.load564
  %250 = fmul <4 x float> %wide.load563, %wide.load565
  store <4 x float> %249, ptr %247, align 4, !tbaa !10, !alias.scope !30, !noalias !27
  store <4 x float> %250, ptr %248, align 4, !tbaa !10, !alias.scope !30, !noalias !27
  %index.next566 = add nuw i64 %index560, 8
  %251 = icmp eq i64 %index.next566, %n.vec556
  br i1 %251, label %middle.block551, label %vector.body559, !llvm.loop !32

middle.block551:                                  ; preds = %vector.body559
  br i1 %cmp.n567, label %._crit_edge459, label %scalar.ph552.preheader

scalar.ph552.preheader:                           ; preds = %.lr.ph458, %middle.block551
  %.1368456.ph = phi i64 [ 1, %.lr.ph458 ], [ %ind.end557, %middle.block551 ]
  %252 = sub i64 %242, %.1368456.ph
  %253 = sub i64 %236, %.1368456.ph
  %xtraiter664 = and i64 %252, 3
  %lcmp.mod665.not = icmp eq i64 %xtraiter664, 0
  br i1 %lcmp.mod665.not, label %scalar.ph552.prol.loopexit, label %scalar.ph552.prol

scalar.ph552.prol:                                ; preds = %scalar.ph552.preheader, %scalar.ph552.prol
  %.1368456.prol = phi i64 [ %258, %scalar.ph552.prol ], [ %.1368456.ph, %scalar.ph552.preheader ]
  %prol.iter666 = phi i64 [ %prol.iter666.next, %scalar.ph552.prol ], [ 0, %scalar.ph552.preheader ]
  %254 = getelementptr inbounds float, ptr %31, i64 %.1368456.prol
  %255 = load float, ptr %254, align 4, !tbaa !10
  %gep461.prol = getelementptr float, ptr %invariant.gep460, i64 %.1368456.prol
  %256 = load float, ptr %gep461.prol, align 4, !tbaa !10
  %257 = fmul float %255, %256
  store float %257, ptr %gep461.prol, align 4, !tbaa !10
  %258 = add nuw i64 %.1368456.prol, 1
  %prol.iter666.next = add i64 %prol.iter666, 1
  %prol.iter666.cmp.not = icmp eq i64 %prol.iter666.next, %xtraiter664
  br i1 %prol.iter666.cmp.not, label %scalar.ph552.prol.loopexit, label %scalar.ph552.prol, !llvm.loop !33

scalar.ph552.prol.loopexit:                       ; preds = %scalar.ph552.prol, %scalar.ph552.preheader
  %.1368456.unr = phi i64 [ %.1368456.ph, %scalar.ph552.preheader ], [ %258, %scalar.ph552.prol ]
  %259 = icmp ult i64 %253, 3
  br i1 %259, label %._crit_edge459, label %scalar.ph552.preheader.new

scalar.ph552.preheader.new:                       ; preds = %scalar.ph552.prol.loopexit
  %invariant.gep685 = getelementptr i8, ptr %invariant.gep460, i64 4
  br label %scalar.ph552

scalar.ph552:                                     ; preds = %scalar.ph552, %scalar.ph552.preheader.new
  %.1368456 = phi i64 [ %.1368456.unr, %scalar.ph552.preheader.new ], [ %278, %scalar.ph552 ]
  %260 = getelementptr inbounds float, ptr %31, i64 %.1368456
  %261 = load float, ptr %260, align 4, !tbaa !10
  %gep461 = getelementptr float, ptr %invariant.gep460, i64 %.1368456
  %262 = load float, ptr %gep461, align 4, !tbaa !10
  %263 = fmul float %261, %262
  store float %263, ptr %gep461, align 4, !tbaa !10
  %264 = getelementptr float, ptr %11, i64 %.1368456
  %265 = load float, ptr %264, align 4, !tbaa !10
  %gep686 = getelementptr float, ptr %invariant.gep685, i64 %.1368456
  %266 = load float, ptr %gep686, align 4, !tbaa !10
  %267 = fmul float %265, %266
  store float %267, ptr %gep686, align 4, !tbaa !10
  %268 = add nuw i64 %.1368456, 2
  %269 = getelementptr inbounds float, ptr %31, i64 %268
  %270 = load float, ptr %269, align 4, !tbaa !10
  %gep461.2 = getelementptr float, ptr %invariant.gep460, i64 %268
  %271 = load float, ptr %gep461.2, align 4, !tbaa !10
  %272 = fmul float %270, %271
  store float %272, ptr %gep461.2, align 4, !tbaa !10
  %273 = add nuw i64 %.1368456, 3
  %274 = getelementptr inbounds float, ptr %31, i64 %273
  %275 = load float, ptr %274, align 4, !tbaa !10
  %gep461.3 = getelementptr float, ptr %invariant.gep460, i64 %273
  %276 = load float, ptr %gep461.3, align 4, !tbaa !10
  %277 = fmul float %275, %276
  store float %277, ptr %gep461.3, align 4, !tbaa !10
  %278 = add nuw i64 %.1368456, 4
  %exitcond510.not.3 = icmp eq i64 %273, %236
  br i1 %exitcond510.not.3, label %._crit_edge459, label %scalar.ph552, !llvm.loop !34

._crit_edge459:                                   ; preds = %scalar.ph552.prol.loopexit, %scalar.ph552, %middle.block551
  %279 = add nuw i64 %.3463, 1
  %exitcond511.not = icmp eq i64 %.3463, %235
  br i1 %exitcond511.not, label %.loopexit430, label %.lr.ph458, !llvm.loop !35

.loopexit430:                                     ; preds = %._crit_edge450, %._crit_edge459, %.lr.ph465, %.lr.ph454, %187, %234, %233, %186
  br i1 %or.cond, label %280, label %295

280:                                              ; preds = %.loopexit430
  %281 = call i32 @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
  %282 = 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
  %283 = load i64, ptr %21, align 8, !tbaa !5
  %284 = icmp sgt i64 %283, 0
  br i1 %284, label %285, label %295

285:                                              ; preds = %280
  %286 = call double @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
  %287 = fptrunc double %286 to float
  %288 = fcmp oeq float %287, 0.000000e+00
  br i1 %288, label %294, label %289

289:                                              ; preds = %285
  %290 = call double @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
  %291 = fpext float %287 to double
  %292 = fdiv double %290, %291
  %293 = fptrunc double %292 to float
  br label %294

294:                                              ; preds = %285, %289
  %.0 = phi float [ %293, %289 ], [ 1.000000e+00, %285 ]
  store float %.0, ptr %19, align 4, !tbaa !10
  store float 0.000000e+00, ptr %16, align 4, !tbaa !10
  br label %429

295:                                              ; preds = %280, %.loopexit430
  %. = select i1 %.not380, i8 73, i8 49
  store i8 %., ptr %25, align 1, !tbaa !9
  %296 = call double @slange_(ptr noundef nonnull %25, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %19) #4
  %297 = fptrunc double %296 to float
  store float %297, ptr %26, align 4, !tbaa !10
  %298 = call double @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
  %299 = fptrunc double %298 to float
  %300 = fcmp oeq float %299, 0.000000e+00
  br i1 %300, label %306, label %301

301:                                              ; preds = %295
  %302 = call double @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
  %303 = fpext float %299 to double
  %304 = fdiv double %302, %303
  %305 = fptrunc double %304 to float
  br label %306

306:                                              ; preds = %295, %301
  %.1 = phi float [ %305, %301 ], [ 1.000000e+00, %295 ]
  %307 = call i32 @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
  %308 = call i32 @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
  %309 = 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
  %310 = call i32 @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 %.not380, label %366, label %311

311:                                              ; preds = %306
  %.not399 = icmp eq i64 %.1359, 0
  br i1 %.not399, label %.loopexit, label %312

312:                                              ; preds = %311
  %313 = load i64, ptr %3, align 8, !tbaa !5
  %.not400473 = icmp slt i64 %313, 1
  br i1 %.not400473, label %.loopexit, label %.lr.ph476

.lr.ph476:                                        ; preds = %312
  %314 = load i64, ptr %2, align 8, !tbaa !5
  %.not402466 = icmp slt i64 %314, 1
  br i1 %.not402466, label %.lr.ph481, label %.lr.ph469.preheader

.lr.ph469.preheader:                              ; preds = %.lr.ph476
  %315 = add nuw i64 %313, 4611686018427387903
  %316 = mul i64 %35, %315
  %317 = shl i64 %314, 2
  %318 = add i64 %316, %314
  %319 = shl i64 %318, 2
  %scevgep569 = getelementptr i8, ptr %14, i64 %319
  %scevgep570 = getelementptr i8, ptr %11, i64 %317
  %320 = add nuw i64 %314, 1
  %min.iters.check577 = icmp ult i64 %314, 8
  %bound0571 = icmp ugt ptr %scevgep570, %14
  %bound1572 = icmp ugt ptr %scevgep569, %11
  %found.conflict573 = and i1 %bound0571, %bound1572
  %.mask647 = and i64 %35, 2305843009213693952
  %stride.check574 = icmp ne i64 %.mask647, 0
  %321 = or i1 %found.conflict573, %stride.check574
  %n.vec580 = and i64 %314, 9223372036854775800
  %ind.end581 = or disjoint i64 %n.vec580, 1
  %cmp.n591 = icmp eq i64 %314, %n.vec580
  br label %.lr.ph469

.lr.ph469:                                        ; preds = %.lr.ph469.preheader, %._crit_edge470
  %.4474 = phi i64 [ %357, %._crit_edge470 ], [ 1, %.lr.ph469.preheader ]
  %322 = mul nsw i64 %.4474, %35
  %invariant.gep471 = getelementptr float, ptr %37, i64 %322
  %brmerge692 = select i1 %min.iters.check577, i1 true, i1 %321
  br i1 %brmerge692, label %scalar.ph576.preheader, label %vector.body583

vector.body583:                                   ; preds = %.lr.ph469, %vector.body583
  %index584 = phi i64 [ %index.next590, %vector.body583 ], [ 0, %.lr.ph469 ]
  %offset.idx585 = or disjoint i64 %index584, 1
  %323 = getelementptr float, ptr %11, i64 %index584
  %324 = getelementptr inbounds i8, ptr %323, i64 16
  %wide.load586 = load <4 x float>, ptr %323, align 4, !tbaa !10, !alias.scope !36
  %wide.load587 = load <4 x float>, ptr %324, align 4, !tbaa !10, !alias.scope !36
  %325 = getelementptr float, ptr %invariant.gep471, i64 %offset.idx585
  %326 = getelementptr i8, ptr %325, i64 16
  %wide.load588 = load <4 x float>, ptr %325, align 4, !tbaa !10, !alias.scope !39, !noalias !36
  %wide.load589 = load <4 x float>, ptr %326, align 4, !tbaa !10, !alias.scope !39, !noalias !36
  %327 = fmul <4 x float> %wide.load586, %wide.load588
  %328 = fmul <4 x float> %wide.load587, %wide.load589
  store <4 x float> %327, ptr %325, align 4, !tbaa !10, !alias.scope !39, !noalias !36
  store <4 x float> %328, ptr %326, align 4, !tbaa !10, !alias.scope !39, !noalias !36
  %index.next590 = add nuw i64 %index584, 8
  %329 = icmp eq i64 %index.next590, %n.vec580
  br i1 %329, label %middle.block575, label %vector.body583, !llvm.loop !41

middle.block575:                                  ; preds = %vector.body583
  br i1 %cmp.n591, label %._crit_edge470, label %scalar.ph576.preheader

scalar.ph576.preheader:                           ; preds = %.lr.ph469, %middle.block575
  %.2369467.ph = phi i64 [ 1, %.lr.ph469 ], [ %ind.end581, %middle.block575 ]
  %330 = sub i64 %320, %.2369467.ph
  %331 = sub i64 %314, %.2369467.ph
  %xtraiter667 = and i64 %330, 3
  %lcmp.mod668.not = icmp eq i64 %xtraiter667, 0
  br i1 %lcmp.mod668.not, label %scalar.ph576.prol.loopexit, label %scalar.ph576.prol

scalar.ph576.prol:                                ; preds = %scalar.ph576.preheader, %scalar.ph576.prol
  %.2369467.prol = phi i64 [ %336, %scalar.ph576.prol ], [ %.2369467.ph, %scalar.ph576.preheader ]
  %prol.iter669 = phi i64 [ %prol.iter669.next, %scalar.ph576.prol ], [ 0, %scalar.ph576.preheader ]
  %332 = getelementptr inbounds float, ptr %31, i64 %.2369467.prol
  %333 = load float, ptr %332, align 4, !tbaa !10
  %gep472.prol = getelementptr float, ptr %invariant.gep471, i64 %.2369467.prol
  %334 = load float, ptr %gep472.prol, align 4, !tbaa !10
  %335 = fmul float %333, %334
  store float %335, ptr %gep472.prol, align 4, !tbaa !10
  %336 = add nuw i64 %.2369467.prol, 1
  %prol.iter669.next = add i64 %prol.iter669, 1
  %prol.iter669.cmp.not = icmp eq i64 %prol.iter669.next, %xtraiter667
  br i1 %prol.iter669.cmp.not, label %scalar.ph576.prol.loopexit, label %scalar.ph576.prol, !llvm.loop !42

scalar.ph576.prol.loopexit:                       ; preds = %scalar.ph576.prol, %scalar.ph576.preheader
  %.2369467.unr = phi i64 [ %.2369467.ph, %scalar.ph576.preheader ], [ %336, %scalar.ph576.prol ]
  %337 = icmp ult i64 %331, 3
  br i1 %337, label %._crit_edge470, label %scalar.ph576.preheader.new

scalar.ph576.preheader.new:                       ; preds = %scalar.ph576.prol.loopexit
  %invariant.gep687 = getelementptr i8, ptr %invariant.gep471, i64 4
  br label %scalar.ph576

scalar.ph576:                                     ; preds = %scalar.ph576, %scalar.ph576.preheader.new
  %.2369467 = phi i64 [ %.2369467.unr, %scalar.ph576.preheader.new ], [ %356, %scalar.ph576 ]
  %338 = getelementptr inbounds float, ptr %31, i64 %.2369467
  %339 = load float, ptr %338, align 4, !tbaa !10
  %gep472 = getelementptr float, ptr %invariant.gep471, i64 %.2369467
  %340 = load float, ptr %gep472, align 4, !tbaa !10
  %341 = fmul float %339, %340
  store float %341, ptr %gep472, align 4, !tbaa !10
  %342 = getelementptr float, ptr %11, i64 %.2369467
  %343 = load float, ptr %342, align 4, !tbaa !10
  %gep688 = getelementptr float, ptr %invariant.gep687, i64 %.2369467
  %344 = load float, ptr %gep688, align 4, !tbaa !10
  %345 = fmul float %343, %344
  store float %345, ptr %gep688, align 4, !tbaa !10
  %346 = add nuw i64 %.2369467, 2
  %347 = getelementptr inbounds float, ptr %31, i64 %346
  %348 = load float, ptr %347, align 4, !tbaa !10
  %gep472.2 = getelementptr float, ptr %invariant.gep471, i64 %346
  %349 = load float, ptr %gep472.2, align 4, !tbaa !10
  %350 = fmul float %348, %349
  store float %350, ptr %gep472.2, align 4, !tbaa !10
  %351 = add nuw i64 %.2369467, 3
  %352 = getelementptr inbounds float, ptr %31, i64 %351
  %353 = load float, ptr %352, align 4, !tbaa !10
  %gep472.3 = getelementptr float, ptr %invariant.gep471, i64 %351
  %354 = load float, ptr %gep472.3, align 4, !tbaa !10
  %355 = fmul float %353, %354
  store float %355, ptr %gep472.3, align 4, !tbaa !10
  %356 = add nuw i64 %.2369467, 4
  %exitcond512.not.3 = icmp eq i64 %351, %314
  br i1 %exitcond512.not.3, label %._crit_edge470, label %scalar.ph576, !llvm.loop !43

._crit_edge470:                                   ; preds = %scalar.ph576.prol.loopexit, %scalar.ph576, %middle.block575
  %357 = add nuw i64 %.4474, 1
  %exitcond513.not = icmp eq i64 %.4474, %313
  br i1 %exitcond513.not, label %._crit_edge477, label %.lr.ph469, !llvm.loop !44

._crit_edge477:                                   ; preds = %._crit_edge470
  br i1 %.not400473, label %.loopexit, label %.lr.ph481

.lr.ph481:                                        ; preds = %.lr.ph476, %._crit_edge477
  %358 = load float, ptr %27, align 4, !tbaa !10
  %min.iters.check594 = icmp ult i64 %313, 4
  br i1 %min.iters.check594, label %scalar.ph593.preheader, label %vector.ph595

vector.ph595:                                     ; preds = %.lr.ph481
  %n.vec597 = and i64 %313, 9223372036854775804
  %ind.end598 = or disjoint i64 %n.vec597, 1
  %broadcast.splatinsert = insertelement <4 x float> poison, float %358, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body600

vector.body600:                                   ; preds = %vector.body600, %vector.ph595
  %index601 = phi i64 [ 0, %vector.ph595 ], [ %index.next604, %vector.body600 ]
  %359 = getelementptr float, ptr %17, i64 %index601
  %wide.load603 = load <4 x float>, ptr %359, align 4, !tbaa !10
  %360 = fdiv <4 x float> %wide.load603, %broadcast.splat
  store <4 x float> %360, ptr %359, align 4, !tbaa !10
  %index.next604 = add nuw i64 %index601, 4
  %361 = icmp eq i64 %index.next604, %n.vec597
  br i1 %361, label %middle.block592, label %vector.body600, !llvm.loop !45

middle.block592:                                  ; preds = %vector.body600
  %cmp.n605 = icmp eq i64 %313, %n.vec597
  br i1 %cmp.n605, label %.loopexit, label %scalar.ph593.preheader

scalar.ph593.preheader:                           ; preds = %middle.block592, %.lr.ph481
  %.5479.ph = phi i64 [ 1, %.lr.ph481 ], [ %ind.end598, %middle.block592 ]
  br label %scalar.ph593

scalar.ph593:                                     ; preds = %scalar.ph593.preheader, %scalar.ph593
  %.5479 = phi i64 [ %365, %scalar.ph593 ], [ %.5479.ph, %scalar.ph593.preheader ]
  %362 = getelementptr inbounds float, ptr %38, i64 %.5479
  %363 = load float, ptr %362, align 4, !tbaa !10
  %364 = fdiv float %363, %358
  store float %364, ptr %362, align 4, !tbaa !10
  %365 = add nuw i64 %.5479, 1
  %exitcond514.not = icmp eq i64 %.5479, %313
  br i1 %exitcond514.not, label %.loopexit, label %scalar.ph593, !llvm.loop !46

366:                                              ; preds = %306
  %.not395 = icmp eq i64 %.1355, 0
  br i1 %.not395, label %.loopexit, label %367

367:                                              ; preds = %366
  %368 = load i64, ptr %3, align 8, !tbaa !5
  %.not396489 = icmp slt i64 %368, 1
  br i1 %.not396489, label %.loopexit, label %.lr.ph492

.lr.ph492:                                        ; preds = %367
  %369 = load i64, ptr %2, align 8, !tbaa !5
  %.not398482 = icmp slt i64 %369, 1
  br i1 %.not398482, label %.lr.ph497, label %.lr.ph485.preheader

.lr.ph485.preheader:                              ; preds = %.lr.ph492
  %370 = add nuw i64 %368, 4611686018427387903
  %371 = mul i64 %35, %370
  %372 = shl i64 %369, 2
  %373 = add i64 %371, %369
  %374 = shl i64 %373, 2
  %scevgep607 = getelementptr i8, ptr %14, i64 %374
  %scevgep608 = getelementptr i8, ptr %10, i64 %372
  %375 = add nuw i64 %369, 1
  %min.iters.check615 = icmp ult i64 %369, 8
  %bound0609 = icmp ugt ptr %scevgep608, %14
  %bound1610 = icmp ugt ptr %scevgep607, %10
  %found.conflict611 = and i1 %bound0609, %bound1610
  %.mask648 = and i64 %35, 2305843009213693952
  %stride.check612 = icmp ne i64 %.mask648, 0
  %376 = or i1 %found.conflict611, %stride.check612
  %n.vec618 = and i64 %369, 9223372036854775800
  %ind.end619 = or disjoint i64 %n.vec618, 1
  %cmp.n629 = icmp eq i64 %369, %n.vec618
  br label %.lr.ph485

.lr.ph485:                                        ; preds = %.lr.ph485.preheader, %._crit_edge486
  %.6490 = phi i64 [ %412, %._crit_edge486 ], [ 1, %.lr.ph485.preheader ]
  %377 = mul nsw i64 %.6490, %35
  %invariant.gep487 = getelementptr float, ptr %37, i64 %377
  %brmerge693 = select i1 %min.iters.check615, i1 true, i1 %376
  br i1 %brmerge693, label %scalar.ph614.preheader, label %vector.body621

vector.body621:                                   ; preds = %.lr.ph485, %vector.body621
  %index622 = phi i64 [ %index.next628, %vector.body621 ], [ 0, %.lr.ph485 ]
  %offset.idx623 = or disjoint i64 %index622, 1
  %378 = getelementptr float, ptr %10, i64 %index622
  %379 = getelementptr inbounds i8, ptr %378, i64 16
  %wide.load624 = load <4 x float>, ptr %378, align 4, !tbaa !10, !alias.scope !47
  %wide.load625 = load <4 x float>, ptr %379, align 4, !tbaa !10, !alias.scope !47
  %380 = getelementptr float, ptr %invariant.gep487, i64 %offset.idx623
  %381 = getelementptr i8, ptr %380, i64 16
  %wide.load626 = load <4 x float>, ptr %380, align 4, !tbaa !10, !alias.scope !50, !noalias !47
  %wide.load627 = load <4 x float>, ptr %381, align 4, !tbaa !10, !alias.scope !50, !noalias !47
  %382 = fmul <4 x float> %wide.load624, %wide.load626
  %383 = fmul <4 x float> %wide.load625, %wide.load627
  store <4 x float> %382, ptr %380, align 4, !tbaa !10, !alias.scope !50, !noalias !47
  store <4 x float> %383, ptr %381, align 4, !tbaa !10, !alias.scope !50, !noalias !47
  %index.next628 = add nuw i64 %index622, 8
  %384 = icmp eq i64 %index.next628, %n.vec618
  br i1 %384, label %middle.block613, label %vector.body621, !llvm.loop !52

middle.block613:                                  ; preds = %vector.body621
  br i1 %cmp.n629, label %._crit_edge486, label %scalar.ph614.preheader

scalar.ph614.preheader:                           ; preds = %.lr.ph485, %middle.block613
  %.3370483.ph = phi i64 [ 1, %.lr.ph485 ], [ %ind.end619, %middle.block613 ]
  %385 = sub i64 %375, %.3370483.ph
  %386 = sub i64 %369, %.3370483.ph
  %xtraiter670 = and i64 %385, 3
  %lcmp.mod671.not = icmp eq i64 %xtraiter670, 0
  br i1 %lcmp.mod671.not, label %scalar.ph614.prol.loopexit, label %scalar.ph614.prol

scalar.ph614.prol:                                ; preds = %scalar.ph614.preheader, %scalar.ph614.prol
  %.3370483.prol = phi i64 [ %391, %scalar.ph614.prol ], [ %.3370483.ph, %scalar.ph614.preheader ]
  %prol.iter672 = phi i64 [ %prol.iter672.next, %scalar.ph614.prol ], [ 0, %scalar.ph614.preheader ]
  %387 = getelementptr inbounds float, ptr %30, i64 %.3370483.prol
  %388 = load float, ptr %387, align 4, !tbaa !10
  %gep488.prol = getelementptr float, ptr %invariant.gep487, i64 %.3370483.prol
  %389 = load float, ptr %gep488.prol, align 4, !tbaa !10
  %390 = fmul float %388, %389
  store float %390, ptr %gep488.prol, align 4, !tbaa !10
  %391 = add nuw i64 %.3370483.prol, 1
  %prol.iter672.next = add i64 %prol.iter672, 1
  %prol.iter672.cmp.not = icmp eq i64 %prol.iter672.next, %xtraiter670
  br i1 %prol.iter672.cmp.not, label %scalar.ph614.prol.loopexit, label %scalar.ph614.prol, !llvm.loop !53

scalar.ph614.prol.loopexit:                       ; preds = %scalar.ph614.prol, %scalar.ph614.preheader
  %.3370483.unr = phi i64 [ %.3370483.ph, %scalar.ph614.preheader ], [ %391, %scalar.ph614.prol ]
  %392 = icmp ult i64 %386, 3
  br i1 %392, label %._crit_edge486, label %scalar.ph614.preheader.new

scalar.ph614.preheader.new:                       ; preds = %scalar.ph614.prol.loopexit
  %invariant.gep689 = getelementptr i8, ptr %invariant.gep487, i64 4
  br label %scalar.ph614

scalar.ph614:                                     ; preds = %scalar.ph614, %scalar.ph614.preheader.new
  %.3370483 = phi i64 [ %.3370483.unr, %scalar.ph614.preheader.new ], [ %411, %scalar.ph614 ]
  %393 = getelementptr inbounds float, ptr %30, i64 %.3370483
  %394 = load float, ptr %393, align 4, !tbaa !10
  %gep488 = getelementptr float, ptr %invariant.gep487, i64 %.3370483
  %395 = load float, ptr %gep488, align 4, !tbaa !10
  %396 = fmul float %394, %395
  store float %396, ptr %gep488, align 4, !tbaa !10
  %397 = getelementptr float, ptr %10, i64 %.3370483
  %398 = load float, ptr %397, align 4, !tbaa !10
  %gep690 = getelementptr float, ptr %invariant.gep689, i64 %.3370483
  %399 = load float, ptr %gep690, align 4, !tbaa !10
  %400 = fmul float %398, %399
  store float %400, ptr %gep690, align 4, !tbaa !10
  %401 = add nuw i64 %.3370483, 2
  %402 = getelementptr inbounds float, ptr %30, i64 %401
  %403 = load float, ptr %402, align 4, !tbaa !10
  %gep488.2 = getelementptr float, ptr %invariant.gep487, i64 %401
  %404 = load float, ptr %gep488.2, align 4, !tbaa !10
  %405 = fmul float %403, %404
  store float %405, ptr %gep488.2, align 4, !tbaa !10
  %406 = add nuw i64 %.3370483, 3
  %407 = getelementptr inbounds float, ptr %30, i64 %406
  %408 = load float, ptr %407, align 4, !tbaa !10
  %gep488.3 = getelementptr float, ptr %invariant.gep487, i64 %406
  %409 = load float, ptr %gep488.3, align 4, !tbaa !10
  %410 = fmul float %408, %409
  store float %410, ptr %gep488.3, align 4, !tbaa !10
  %411 = add nuw i64 %.3370483, 4
  %exitcond515.not.3 = icmp eq i64 %406, %369
  br i1 %exitcond515.not.3, label %._crit_edge486, label %scalar.ph614, !llvm.loop !54

._crit_edge486:                                   ; preds = %scalar.ph614.prol.loopexit, %scalar.ph614, %middle.block613
  %412 = add nuw i64 %.6490, 1
  %exitcond516.not = icmp eq i64 %.6490, %368
  br i1 %exitcond516.not, label %._crit_edge493, label %.lr.ph485, !llvm.loop !55

._crit_edge493:                                   ; preds = %._crit_edge486
  br i1 %.not396489, label %.loopexit, label %.lr.ph497

.lr.ph497:                                        ; preds = %.lr.ph492, %._crit_edge493
  %413 = load float, ptr %29, align 4, !tbaa !10
  %min.iters.check632 = icmp ult i64 %368, 4
  br i1 %min.iters.check632, label %scalar.ph631.preheader, label %vector.ph633

vector.ph633:                                     ; preds = %.lr.ph497
  %n.vec635 = and i64 %368, 9223372036854775804
  %ind.end636 = or disjoint i64 %n.vec635, 1
  %broadcast.splatinsert642 = insertelement <4 x float> poison, float %413, i64 0
  %broadcast.splat643 = shufflevector <4 x float> %broadcast.splatinsert642, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body638

vector.body638:                                   ; preds = %vector.body638, %vector.ph633
  %index639 = phi i64 [ 0, %vector.ph633 ], [ %index.next644, %vector.body638 ]
  %414 = getelementptr float, ptr %17, i64 %index639
  %wide.load641 = load <4 x float>, ptr %414, align 4, !tbaa !10
  %415 = fdiv <4 x float> %wide.load641, %broadcast.splat643
  store <4 x float> %415, ptr %414, align 4, !tbaa !10
  %index.next644 = add nuw i64 %index639, 4
  %416 = icmp eq i64 %index.next644, %n.vec635
  br i1 %416, label %middle.block630, label %vector.body638, !llvm.loop !56

middle.block630:                                  ; preds = %vector.body638
  %cmp.n645 = icmp eq i64 %368, %n.vec635
  br i1 %cmp.n645, label %.loopexit, label %scalar.ph631.preheader

scalar.ph631.preheader:                           ; preds = %middle.block630, %.lr.ph497
  %.7495.ph = phi i64 [ 1, %.lr.ph497 ], [ %ind.end636, %middle.block630 ]
  br label %scalar.ph631

scalar.ph631:                                     ; preds = %scalar.ph631.preheader, %scalar.ph631
  %.7495 = phi i64 [ %420, %scalar.ph631 ], [ %.7495.ph, %scalar.ph631.preheader ]
  %417 = getelementptr inbounds float, ptr %38, i64 %.7495
  %418 = load float, ptr %417, align 4, !tbaa !10
  %419 = fdiv float %418, %413
  store float %419, ptr %417, align 4, !tbaa !10
  %420 = add nuw i64 %.7495, 1
  %exitcond517.not = icmp eq i64 %.7495, %368
  br i1 %exitcond517.not, label %.loopexit, label %scalar.ph631, !llvm.loop !57

.loopexit:                                        ; preds = %scalar.ph593, %scalar.ph631, %middle.block592, %middle.block630, %367, %312, %._crit_edge477, %._crit_edge493, %366, %311
  %421 = load float, ptr %16, align 4, !tbaa !10
  %422 = fpext float %421 to double
  %423 = call double @slamch_(ptr noundef nonnull @.str.12) #4
  %424 = fcmp ogt double %423, %422
  br i1 %424, label %425, label %428

425:                                              ; preds = %.loopexit
  %426 = load i64, ptr %2, align 8, !tbaa !5
  %427 = add nsw i64 %426, 1
  store i64 %427, ptr %21, align 8, !tbaa !5
  br label %428

428:                                              ; preds = %425, %.loopexit
  store float %.1, ptr %19, align 4, !tbaa !10
  br label %429

429:                                              ; preds = %428, %294, %.thread423
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr nonnull %23) #4
  ret i32 0
}

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

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

declare double @slamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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