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

; 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"

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [5 x i8], align 1

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

161:                                              ; preds = %27
  %162 = load i64, ptr %75, align 8, !tbaa !9
  %163 = icmp ne i64 %162, 0
  br i1 %163, label %164, label %166

164:                                              ; preds = %161, %27
  %165 = load ptr, ptr %38, align 8, !tbaa !5
  store i8 78, ptr %165, align 1, !tbaa !13
  store i64 0, ptr %84, align 8, !tbaa !9
  store i64 0, ptr %80, align 8, !tbaa !9
  br label %189

166:                                              ; preds = %161
  %167 = load ptr, ptr %38, align 8, !tbaa !5
  %168 = call i64 @lsame_(ptr noundef %167, ptr noundef @.str.3)
  %169 = icmp ne i64 %168, 0
  br i1 %169, label %174, label %170

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

174:                                              ; preds = %170, %166
  %175 = phi i1 [ true, %166 ], [ %173, %170 ]
  %176 = zext i1 %175 to i32
  %177 = sext i32 %176 to i64
  store i64 %177, ptr %84, align 8, !tbaa !9
  %178 = load ptr, ptr %38, align 8, !tbaa !5
  %179 = call i64 @lsame_(ptr noundef %178, ptr noundef @.str.5)
  %180 = icmp ne i64 %179, 0
  br i1 %180, label %185, label %181

181:                                              ; preds = %174
  %182 = load ptr, ptr %38, align 8, !tbaa !5
  %183 = call i64 @lsame_(ptr noundef %182, ptr noundef @.str.4)
  %184 = icmp ne i64 %183, 0
  br label %185

185:                                              ; preds = %181, %174
  %186 = phi i1 [ true, %174 ], [ %184, %181 ]
  %187 = zext i1 %186 to i32
  %188 = sext i32 %187 to i64
  store i64 %188, ptr %80, align 8, !tbaa !9
  br label %189

189:                                              ; preds = %185, %164
  %190 = load ptr, ptr %46, align 8, !tbaa !5
  store float 0.000000e+00, ptr %190, align 4, !tbaa !11
  %191 = load i64, ptr %77, align 8, !tbaa !9
  %192 = icmp ne i64 %191, 0
  br i1 %192, label %202, label %193

193:                                              ; preds = %189
  %194 = load i64, ptr %75, align 8, !tbaa !9
  %195 = icmp ne i64 %194, 0
  br i1 %195, label %202, label %196

196:                                              ; preds = %193
  %197 = load ptr, ptr %29, align 8, !tbaa !5
  %198 = call i64 @lsame_(ptr noundef %197, ptr noundef @.str.6)
  %199 = icmp ne i64 %198, 0
  br i1 %199, label %202, label %200

200:                                              ; preds = %196
  %201 = load ptr, ptr %55, align 8, !tbaa !5
  store i64 -1, ptr %201, align 8, !tbaa !9
  br label %484

202:                                              ; preds = %196, %193, %189
  %203 = load i64, ptr %82, align 8, !tbaa !9
  %204 = icmp ne i64 %203, 0
  br i1 %204, label %215, label %205

205:                                              ; preds = %202
  %206 = load ptr, ptr %30, align 8, !tbaa !5
  %207 = call i64 @lsame_(ptr noundef %206, ptr noundef @.str.7)
  %208 = icmp ne i64 %207, 0
  br i1 %208, label %215, label %209

209:                                              ; preds = %205
  %210 = load ptr, ptr %30, align 8, !tbaa !5
  %211 = call i64 @lsame_(ptr noundef %210, ptr noundef @.str.5)
  %212 = icmp ne i64 %211, 0
  br i1 %212, label %215, label %213

213:                                              ; preds = %209
  %214 = load ptr, ptr %55, align 8, !tbaa !5
  store i64 -2, ptr %214, align 8, !tbaa !9
  br label %483

215:                                              ; preds = %209, %205, %202
  %216 = load ptr, ptr %31, align 8, !tbaa !5
  %217 = load i64, ptr %216, align 8, !tbaa !9
  %218 = icmp slt i64 %217, 0
  br i1 %218, label %219, label %221

219:                                              ; preds = %215
  %220 = load ptr, ptr %55, align 8, !tbaa !5
  store i64 -3, ptr %220, align 8, !tbaa !9
  br label %482

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

225:                                              ; preds = %221
  %226 = load ptr, ptr %55, align 8, !tbaa !5
  store i64 -4, ptr %226, align 8, !tbaa !9
  br label %481

227:                                              ; preds = %221
  %228 = load ptr, ptr %34, align 8, !tbaa !5
  %229 = load i64, ptr %228, align 8, !tbaa !9
  %230 = load ptr, ptr %31, align 8, !tbaa !5
  %231 = load i64, ptr %230, align 8, !tbaa !9
  %232 = icmp sge i64 1, %231
  br i1 %232, label %233, label %234

233:                                              ; preds = %227
  br label %237

234:                                              ; preds = %227
  %235 = load ptr, ptr %31, align 8, !tbaa !5
  %236 = load i64, ptr %235, align 8, !tbaa !9
  br label %237

237:                                              ; preds = %234, %233
  %238 = phi i64 [ 1, %233 ], [ %236, %234 ]
  %239 = icmp slt i64 %229, %238
  br i1 %239, label %240, label %242

240:                                              ; preds = %237
  %241 = load ptr, ptr %55, align 8, !tbaa !5
  store i64 -6, ptr %241, align 8, !tbaa !9
  br label %480

242:                                              ; preds = %237
  %243 = load ptr, ptr %36, align 8, !tbaa !5
  %244 = load i64, ptr %243, align 8, !tbaa !9
  %245 = load ptr, ptr %31, align 8, !tbaa !5
  %246 = load i64, ptr %245, align 8, !tbaa !9
  %247 = icmp sge i64 1, %246
  br i1 %247, label %248, label %249

248:                                              ; preds = %242
  br label %252

249:                                              ; preds = %242
  %250 = load ptr, ptr %31, align 8, !tbaa !5
  %251 = load i64, ptr %250, align 8, !tbaa !9
  br label %252

252:                                              ; preds = %249, %248
  %253 = phi i64 [ 1, %248 ], [ %251, %249 ]
  %254 = icmp slt i64 %244, %253
  br i1 %254, label %255, label %257

255:                                              ; preds = %252
  %256 = load ptr, ptr %55, align 8, !tbaa !5
  store i64 -8, ptr %256, align 8, !tbaa !9
  br label %479

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

261:                                              ; preds = %257
  %262 = load i64, ptr %84, align 8, !tbaa !9
  %263 = icmp ne i64 %262, 0
  br i1 %263, label %273, label %264

264:                                              ; preds = %261
  %265 = load i64, ptr %80, align 8, !tbaa !9
  %266 = icmp ne i64 %265, 0
  br i1 %266, label %273, label %267

267:                                              ; preds = %264
  %268 = load ptr, ptr %38, align 8, !tbaa !5
  %269 = call i64 @lsame_(ptr noundef %268, ptr noundef @.str)
  %270 = icmp ne i64 %269, 0
  br i1 %270, label %273, label %271

271:                                              ; preds = %267
  %272 = load ptr, ptr %55, align 8, !tbaa !5
  store i64 -10, ptr %272, align 8, !tbaa !9
  br label %478

273:                                              ; preds = %267, %264, %261, %257
  %274 = load i64, ptr %84, align 8, !tbaa !9
  %275 = icmp ne i64 %274, 0
  br i1 %275, label %276, label %355

276:                                              ; preds = %273
  %277 = load float, ptr %78, align 4, !tbaa !11
  store float %277, ptr %73, align 4, !tbaa !11
  store float 0.000000e+00, ptr %74, align 4, !tbaa !11
  %278 = load ptr, ptr %31, align 8, !tbaa !5
  %279 = load i64, ptr %278, align 8, !tbaa !9
  store i64 %279, ptr %68, align 8, !tbaa !9
  store i64 1, ptr %71, align 8, !tbaa !9
  br label %280

280:                                              ; preds = %317, %276
  %281 = load i64, ptr %71, align 8, !tbaa !9
  %282 = load i64, ptr %68, align 8, !tbaa !9
  %283 = icmp sle i64 %281, %282
  br i1 %283, label %284, label %320

284:                                              ; preds = %280
  %285 = load float, ptr %73, align 4, !tbaa !11
  store float %285, ptr %69, align 4, !tbaa !11
  %286 = load ptr, ptr %39, align 8, !tbaa !5
  %287 = load i64, ptr %71, align 8, !tbaa !9
  %288 = getelementptr inbounds float, ptr %286, i64 %287
  %289 = load float, ptr %288, align 4, !tbaa !11
  store float %289, ptr %70, align 4, !tbaa !11
  %290 = load float, ptr %69, align 4, !tbaa !11
  %291 = load float, ptr %70, align 4, !tbaa !11
  %292 = fcmp ole float %290, %291
  br i1 %292, label %293, label %295

293:                                              ; preds = %284
  %294 = load float, ptr %69, align 4, !tbaa !11
  br label %297

295:                                              ; preds = %284
  %296 = load float, ptr %70, align 4, !tbaa !11
  br label %297

297:                                              ; preds = %295, %293
  %298 = phi float [ %294, %293 ], [ %296, %295 ]
  %299 = fpext float %298 to double
  %300 = fptrunc double %299 to float
  store float %300, ptr %73, align 4, !tbaa !11
  %301 = load float, ptr %74, align 4, !tbaa !11
  store float %301, ptr %69, align 4, !tbaa !11
  %302 = load ptr, ptr %39, align 8, !tbaa !5
  %303 = load i64, ptr %71, align 8, !tbaa !9
  %304 = getelementptr inbounds float, ptr %302, i64 %303
  %305 = load float, ptr %304, align 4, !tbaa !11
  store float %305, ptr %70, align 4, !tbaa !11
  %306 = load float, ptr %69, align 4, !tbaa !11
  %307 = load float, ptr %70, align 4, !tbaa !11
  %308 = fcmp oge float %306, %307
  br i1 %308, label %309, label %311

309:                                              ; preds = %297
  %310 = load float, ptr %69, align 4, !tbaa !11
  br label %313

311:                                              ; preds = %297
  %312 = load float, ptr %70, align 4, !tbaa !11
  br label %313

313:                                              ; preds = %311, %309
  %314 = phi float [ %310, %309 ], [ %312, %311 ]
  %315 = fpext float %314 to double
  %316 = fptrunc double %315 to float
  store float %316, ptr %74, align 4, !tbaa !11
  br label %317

317:                                              ; preds = %313
  %318 = load i64, ptr %71, align 8, !tbaa !9
  %319 = add nsw i64 %318, 1
  store i64 %319, ptr %71, align 8, !tbaa !9
  br label %280, !llvm.loop !14

320:                                              ; preds = %280
  %321 = load float, ptr %73, align 4, !tbaa !11
  %322 = fcmp ole float %321, 0.000000e+00
  br i1 %322, label %323, label %325

323:                                              ; preds = %320
  %324 = load ptr, ptr %55, align 8, !tbaa !5
  store i64 -11, ptr %324, align 8, !tbaa !9
  br label %354

325:                                              ; preds = %320
  %326 = load ptr, ptr %31, align 8, !tbaa !5
  %327 = load i64, ptr %326, align 8, !tbaa !9
  %328 = icmp sgt i64 %327, 0
  br i1 %328, label %329, label %352

329:                                              ; preds = %325
  %330 = load float, ptr %73, align 4, !tbaa !11
  %331 = load float, ptr %83, align 4, !tbaa !11
  %332 = fcmp oge float %330, %331
  br i1 %332, label %333, label %335

333:                                              ; preds = %329
  %334 = load float, ptr %73, align 4, !tbaa !11
  br label %337

335:                                              ; preds = %329
  %336 = load float, ptr %83, align 4, !tbaa !11
  br label %337

337:                                              ; preds = %335, %333
  %338 = phi float [ %334, %333 ], [ %336, %335 ]
  %339 = fpext float %338 to double
  %340 = load float, ptr %74, align 4, !tbaa !11
  %341 = load float, ptr %78, align 4, !tbaa !11
  %342 = fcmp ole float %340, %341
  br i1 %342, label %343, label %345

343:                                              ; preds = %337
  %344 = load float, ptr %74, align 4, !tbaa !11
  br label %347

345:                                              ; preds = %337
  %346 = load float, ptr %78, align 4, !tbaa !11
  br label %347

347:                                              ; preds = %345, %343
  %348 = phi float [ %344, %343 ], [ %346, %345 ]
  %349 = fpext float %348 to double
  %350 = fdiv double %339, %349
  %351 = fptrunc double %350 to float
  store float %351, ptr %81, align 4, !tbaa !11
  br label %353

352:                                              ; preds = %325
  store float 1.000000e+00, ptr %81, align 4, !tbaa !11
  br label %353

353:                                              ; preds = %352, %347
  br label %354

354:                                              ; preds = %353, %323
  br label %355

355:                                              ; preds = %354, %273
  %356 = load i64, ptr %80, align 8, !tbaa !9
  %357 = icmp ne i64 %356, 0
  br i1 %357, label %358, label %441

358:                                              ; preds = %355
  %359 = load ptr, ptr %55, align 8, !tbaa !5
  %360 = load i64, ptr %359, align 8, !tbaa !9
  %361 = icmp eq i64 %360, 0
  br i1 %361, label %362, label %441

362:                                              ; preds = %358
  %363 = load float, ptr %78, align 4, !tbaa !11
  store float %363, ptr %73, align 4, !tbaa !11
  store float 0.000000e+00, ptr %74, align 4, !tbaa !11
  %364 = load ptr, ptr %31, align 8, !tbaa !5
  %365 = load i64, ptr %364, align 8, !tbaa !9
  store i64 %365, ptr %68, align 8, !tbaa !9
  store i64 1, ptr %71, align 8, !tbaa !9
  br label %366

366:                                              ; preds = %403, %362
  %367 = load i64, ptr %71, align 8, !tbaa !9
  %368 = load i64, ptr %68, align 8, !tbaa !9
  %369 = icmp sle i64 %367, %368
  br i1 %369, label %370, label %406

370:                                              ; preds = %366
  %371 = load float, ptr %73, align 4, !tbaa !11
  store float %371, ptr %69, align 4, !tbaa !11
  %372 = load ptr, ptr %40, align 8, !tbaa !5
  %373 = load i64, ptr %71, align 8, !tbaa !9
  %374 = getelementptr inbounds float, ptr %372, i64 %373
  %375 = load float, ptr %374, align 4, !tbaa !11
  store float %375, ptr %70, align 4, !tbaa !11
  %376 = load float, ptr %69, align 4, !tbaa !11
  %377 = load float, ptr %70, align 4, !tbaa !11
  %378 = fcmp ole float %376, %377
  br i1 %378, label %379, label %381

379:                                              ; preds = %370
  %380 = load float, ptr %69, align 4, !tbaa !11
  br label %383

381:                                              ; preds = %370
  %382 = load float, ptr %70, align 4, !tbaa !11
  br label %383

383:                                              ; preds = %381, %379
  %384 = phi float [ %380, %379 ], [ %382, %381 ]
  %385 = fpext float %384 to double
  %386 = fptrunc double %385 to float
  store float %386, ptr %73, align 4, !tbaa !11
  %387 = load float, ptr %74, align 4, !tbaa !11
  store float %387, ptr %69, align 4, !tbaa !11
  %388 = load ptr, ptr %40, align 8, !tbaa !5
  %389 = load i64, ptr %71, align 8, !tbaa !9
  %390 = getelementptr inbounds float, ptr %388, i64 %389
  %391 = load float, ptr %390, align 4, !tbaa !11
  store float %391, ptr %70, align 4, !tbaa !11
  %392 = load float, ptr %69, align 4, !tbaa !11
  %393 = load float, ptr %70, align 4, !tbaa !11
  %394 = fcmp oge float %392, %393
  br i1 %394, label %395, label %397

395:                                              ; preds = %383
  %396 = load float, ptr %69, align 4, !tbaa !11
  br label %399

397:                                              ; preds = %383
  %398 = load float, ptr %70, align 4, !tbaa !11
  br label %399

399:                                              ; preds = %397, %395
  %400 = phi float [ %396, %395 ], [ %398, %397 ]
  %401 = fpext float %400 to double
  %402 = fptrunc double %401 to float
  store float %402, ptr %74, align 4, !tbaa !11
  br label %403

403:                                              ; preds = %399
  %404 = load i64, ptr %71, align 8, !tbaa !9
  %405 = add nsw i64 %404, 1
  store i64 %405, ptr %71, align 8, !tbaa !9
  br label %366, !llvm.loop !16

406:                                              ; preds = %366
  %407 = load float, ptr %73, align 4, !tbaa !11
  %408 = fcmp ole float %407, 0.000000e+00
  br i1 %408, label %409, label %411

409:                                              ; preds = %406
  %410 = load ptr, ptr %55, align 8, !tbaa !5
  store i64 -12, ptr %410, align 8, !tbaa !9
  br label %440

411:                                              ; preds = %406
  %412 = load ptr, ptr %31, align 8, !tbaa !5
  %413 = load i64, ptr %412, align 8, !tbaa !9
  %414 = icmp sgt i64 %413, 0
  br i1 %414, label %415, label %438

415:                                              ; preds = %411
  %416 = load float, ptr %73, align 4, !tbaa !11
  %417 = load float, ptr %83, align 4, !tbaa !11
  %418 = fcmp oge float %416, %417
  br i1 %418, label %419, label %421

419:                                              ; preds = %415
  %420 = load float, ptr %73, align 4, !tbaa !11
  br label %423

421:                                              ; preds = %415
  %422 = load float, ptr %83, align 4, !tbaa !11
  br label %423

423:                                              ; preds = %421, %419
  %424 = phi float [ %420, %419 ], [ %422, %421 ]
  %425 = fpext float %424 to double
  %426 = load float, ptr %74, align 4, !tbaa !11
  %427 = load float, ptr %78, align 4, !tbaa !11
  %428 = fcmp ole float %426, %427
  br i1 %428, label %429, label %431

429:                                              ; preds = %423
  %430 = load float, ptr %74, align 4, !tbaa !11
  br label %433

431:                                              ; preds = %423
  %432 = load float, ptr %78, align 4, !tbaa !11
  br label %433

433:                                              ; preds = %431, %429
  %434 = phi float [ %430, %429 ], [ %432, %431 ]
  %435 = fpext float %434 to double
  %436 = fdiv double %425, %435
  %437 = fptrunc double %436 to float
  store float %437, ptr %76, align 4, !tbaa !11
  br label %439

438:                                              ; preds = %411
  store float 1.000000e+00, ptr %76, align 4, !tbaa !11
  br label %439

439:                                              ; preds = %438, %433
  br label %440

440:                                              ; preds = %439, %409
  br label %441

441:                                              ; preds = %440, %358, %355
  %442 = load ptr, ptr %55, align 8, !tbaa !5
  %443 = load i64, ptr %442, align 8, !tbaa !9
  %444 = icmp eq i64 %443, 0
  br i1 %444, label %445, label %477

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

451:                                              ; preds = %445
  br label %455

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

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

458:                                              ; preds = %455
  %459 = load ptr, ptr %55, align 8, !tbaa !5
  store i64 -14, ptr %459, align 8, !tbaa !9
  br label %476

460:                                              ; preds = %455
  %461 = load ptr, ptr %44, align 8, !tbaa !5
  %462 = load i64, ptr %461, align 8, !tbaa !9
  %463 = load ptr, ptr %31, align 8, !tbaa !5
  %464 = load i64, ptr %463, align 8, !tbaa !9
  %465 = icmp sge i64 1, %464
  br i1 %465, label %466, label %467

466:                                              ; preds = %460
  br label %470

467:                                              ; preds = %460
  %468 = load ptr, ptr %31, align 8, !tbaa !5
  %469 = load i64, ptr %468, align 8, !tbaa !9
  br label %470

470:                                              ; preds = %467, %466
  %471 = phi i64 [ 1, %466 ], [ %469, %467 ]
  %472 = icmp slt i64 %462, %471
  br i1 %472, label %473, label %475

473:                                              ; preds = %470
  %474 = load ptr, ptr %55, align 8, !tbaa !5
  store i64 -16, ptr %474, align 8, !tbaa !9
  br label %475

475:                                              ; preds = %473, %470
  br label %476

476:                                              ; preds = %475, %458
  br label %477

477:                                              ; preds = %476, %441
  br label %478

478:                                              ; preds = %477, %271
  br label %479

479:                                              ; preds = %478, %255
  br label %480

480:                                              ; preds = %479, %240
  br label %481

481:                                              ; preds = %480, %225
  br label %482

482:                                              ; preds = %481, %219
  br label %483

483:                                              ; preds = %482, %213
  br label %484

484:                                              ; preds = %483, %200
  %485 = load ptr, ptr %55, align 8, !tbaa !5
  %486 = load i64, ptr %485, align 8, !tbaa !9
  %487 = icmp ne i64 %486, 0
  br i1 %487, label %488, label %493

488:                                              ; preds = %484
  %489 = load ptr, ptr %55, align 8, !tbaa !5
  %490 = load i64, ptr %489, align 8, !tbaa !9
  %491 = sub nsw i64 0, %490
  store i64 %491, ptr %68, align 8, !tbaa !9
  %492 = call i32 @xerbla_(ptr noundef @.str.8, ptr noundef %68)
  store i32 0, ptr %28, align 4
  store i32 1, ptr %85, align 4
  br label %777

493:                                              ; preds = %484
  %494 = load i64, ptr %75, align 8, !tbaa !9
  %495 = icmp ne i64 %494, 0
  br i1 %495, label %496, label %582

496:                                              ; preds = %493
  %497 = load ptr, ptr %31, align 8, !tbaa !5
  %498 = load ptr, ptr %31, align 8, !tbaa !5
  %499 = load ptr, ptr %33, align 8, !tbaa !5
  %500 = load i64, ptr %57, align 8, !tbaa !9
  %501 = getelementptr inbounds %struct.complex, ptr %499, i64 %500
  %502 = load ptr, ptr %34, align 8, !tbaa !5
  %503 = load ptr, ptr %39, align 8, !tbaa !5
  %504 = getelementptr inbounds float, ptr %503, i64 1
  %505 = load ptr, ptr %40, align 8, !tbaa !5
  %506 = getelementptr inbounds float, ptr %505, i64 1
  %507 = call i32 @cgeequb_(ptr noundef %497, ptr noundef %498, ptr noundef %501, ptr noundef %502, ptr noundef %504, ptr noundef %506, ptr noundef %81, ptr noundef %76, ptr noundef %72, ptr noundef %79)
  %508 = load i64, ptr %79, align 8, !tbaa !9
  %509 = icmp eq i64 %508, 0
  br i1 %509, label %510, label %545

510:                                              ; preds = %496
  %511 = load ptr, ptr %31, align 8, !tbaa !5
  %512 = load ptr, ptr %31, align 8, !tbaa !5
  %513 = load ptr, ptr %33, align 8, !tbaa !5
  %514 = load i64, ptr %57, align 8, !tbaa !9
  %515 = getelementptr inbounds %struct.complex, ptr %513, i64 %514
  %516 = load ptr, ptr %34, align 8, !tbaa !5
  %517 = load ptr, ptr %39, align 8, !tbaa !5
  %518 = getelementptr inbounds float, ptr %517, i64 1
  %519 = load ptr, ptr %40, align 8, !tbaa !5
  %520 = getelementptr inbounds float, ptr %519, i64 1
  %521 = load ptr, ptr %38, align 8, !tbaa !5
  %522 = call i32 @claqge_(ptr noundef %511, ptr noundef %512, ptr noundef %515, ptr noundef %516, ptr noundef %518, ptr noundef %520, ptr noundef %81, ptr noundef %76, ptr noundef %72, ptr noundef %521)
  %523 = load ptr, ptr %38, align 8, !tbaa !5
  %524 = call i64 @lsame_(ptr noundef %523, ptr noundef @.str.3)
  %525 = icmp ne i64 %524, 0
  br i1 %525, label %530, label %526

526:                                              ; preds = %510
  %527 = load ptr, ptr %38, align 8, !tbaa !5
  %528 = call i64 @lsame_(ptr noundef %527, ptr noundef @.str.4)
  %529 = icmp ne i64 %528, 0
  br label %530

530:                                              ; preds = %526, %510
  %531 = phi i1 [ true, %510 ], [ %529, %526 ]
  %532 = zext i1 %531 to i32
  %533 = sext i32 %532 to i64
  store i64 %533, ptr %84, align 8, !tbaa !9
  %534 = load ptr, ptr %38, align 8, !tbaa !5
  %535 = call i64 @lsame_(ptr noundef %534, ptr noundef @.str.5)
  %536 = icmp ne i64 %535, 0
  br i1 %536, label %541, label %537

537:                                              ; preds = %530
  %538 = load ptr, ptr %38, align 8, !tbaa !5
  %539 = call i64 @lsame_(ptr noundef %538, ptr noundef @.str.4)
  %540 = icmp ne i64 %539, 0
  br label %541

541:                                              ; preds = %537, %530
  %542 = phi i1 [ true, %530 ], [ %540, %537 ]
  %543 = zext i1 %542 to i32
  %544 = sext i32 %543 to i64
  store i64 %544, ptr %80, align 8, !tbaa !9
  br label %545

545:                                              ; preds = %541, %496
  %546 = load i64, ptr %84, align 8, !tbaa !9
  %547 = icmp ne i64 %546, 0
  br i1 %547, label %563, label %548

548:                                              ; preds = %545
  %549 = load ptr, ptr %31, align 8, !tbaa !5
  %550 = load i64, ptr %549, align 8, !tbaa !9
  store i64 %550, ptr %68, align 8, !tbaa !9
  store i64 1, ptr %71, align 8, !tbaa !9
  br label %551

551:                                              ; preds = %559, %548
  %552 = load i64, ptr %71, align 8, !tbaa !9
  %553 = load i64, ptr %68, align 8, !tbaa !9
  %554 = icmp sle i64 %552, %553
  br i1 %554, label %555, label %562

555:                                              ; preds = %551
  %556 = load ptr, ptr %39, align 8, !tbaa !5
  %557 = load i64, ptr %71, align 8, !tbaa !9
  %558 = getelementptr inbounds float, ptr %556, i64 %557
  store float 1.000000e+00, ptr %558, align 4, !tbaa !11
  br label %559

559:                                              ; preds = %555
  %560 = load i64, ptr %71, align 8, !tbaa !9
  %561 = add nsw i64 %560, 1
  store i64 %561, ptr %71, align 8, !tbaa !9
  br label %551, !llvm.loop !17

562:                                              ; preds = %551
  br label %563

563:                                              ; preds = %562, %545
  %564 = load i64, ptr %80, align 8, !tbaa !9
  %565 = icmp ne i64 %564, 0
  br i1 %565, label %581, label %566

566:                                              ; preds = %563
  %567 = load ptr, ptr %31, align 8, !tbaa !5
  %568 = load i64, ptr %567, align 8, !tbaa !9
  store i64 %568, ptr %68, align 8, !tbaa !9
  store i64 1, ptr %71, align 8, !tbaa !9
  br label %569

569:                                              ; preds = %577, %566
  %570 = load i64, ptr %71, align 8, !tbaa !9
  %571 = load i64, ptr %68, align 8, !tbaa !9
  %572 = icmp sle i64 %570, %571
  br i1 %572, label %573, label %580

573:                                              ; preds = %569
  %574 = load ptr, ptr %40, align 8, !tbaa !5
  %575 = load i64, ptr %71, align 8, !tbaa !9
  %576 = getelementptr inbounds float, ptr %574, i64 %575
  store float 1.000000e+00, ptr %576, align 4, !tbaa !11
  br label %577

577:                                              ; preds = %573
  %578 = load i64, ptr %71, align 8, !tbaa !9
  %579 = add nsw i64 %578, 1
  store i64 %579, ptr %71, align 8, !tbaa !9
  br label %569, !llvm.loop !18

580:                                              ; preds = %569
  br label %581

581:                                              ; preds = %580, %563
  br label %582

582:                                              ; preds = %581, %493
  %583 = load i64, ptr %82, align 8, !tbaa !9
  %584 = icmp ne i64 %583, 0
  br i1 %584, label %585, label %599

585:                                              ; preds = %582
  %586 = load i64, ptr %84, align 8, !tbaa !9
  %587 = icmp ne i64 %586, 0
  br i1 %587, label %588, label %598

588:                                              ; preds = %585
  %589 = load ptr, ptr %31, align 8, !tbaa !5
  %590 = load ptr, ptr %32, align 8, !tbaa !5
  %591 = load ptr, ptr %39, align 8, !tbaa !5
  %592 = getelementptr inbounds float, ptr %591, i64 1
  %593 = load ptr, ptr %41, align 8, !tbaa !5
  %594 = load i64, ptr %61, align 8, !tbaa !9
  %595 = getelementptr inbounds %struct.complex, ptr %593, i64 %594
  %596 = load ptr, ptr %42, align 8, !tbaa !5
  %597 = call i32 @clascl2_(ptr noundef %589, ptr noundef %590, ptr noundef %592, ptr noundef %595, ptr noundef %596)
  br label %598

598:                                              ; preds = %588, %585
  br label %613

599:                                              ; preds = %582
  %600 = load i64, ptr %80, align 8, !tbaa !9
  %601 = icmp ne i64 %600, 0
  br i1 %601, label %602, label %612

602:                                              ; preds = %599
  %603 = load ptr, ptr %31, align 8, !tbaa !5
  %604 = load ptr, ptr %32, align 8, !tbaa !5
  %605 = load ptr, ptr %40, align 8, !tbaa !5
  %606 = getelementptr inbounds float, ptr %605, i64 1
  %607 = load ptr, ptr %41, align 8, !tbaa !5
  %608 = load i64, ptr %61, align 8, !tbaa !9
  %609 = getelementptr inbounds %struct.complex, ptr %607, i64 %608
  %610 = load ptr, ptr %42, align 8, !tbaa !5
  %611 = call i32 @clascl2_(ptr noundef %603, ptr noundef %604, ptr noundef %606, ptr noundef %609, ptr noundef %610)
  br label %612

612:                                              ; preds = %602, %599
  br label %613

613:                                              ; preds = %612, %598
  %614 = load i64, ptr %77, align 8, !tbaa !9
  %615 = icmp ne i64 %614, 0
  br i1 %615, label %619, label %616

616:                                              ; preds = %613
  %617 = load i64, ptr %75, align 8, !tbaa !9
  %618 = icmp ne i64 %617, 0
  br i1 %618, label %619, label %659

619:                                              ; preds = %616, %613
  %620 = load ptr, ptr %31, align 8, !tbaa !5
  %621 = load ptr, ptr %31, align 8, !tbaa !5
  %622 = load ptr, ptr %33, align 8, !tbaa !5
  %623 = load i64, ptr %57, align 8, !tbaa !9
  %624 = getelementptr inbounds %struct.complex, ptr %622, i64 %623
  %625 = load ptr, ptr %34, align 8, !tbaa !5
  %626 = load ptr, ptr %35, align 8, !tbaa !5
  %627 = load i64, ptr %59, align 8, !tbaa !9
  %628 = getelementptr inbounds %struct.complex, ptr %626, i64 %627
  %629 = load ptr, ptr %36, align 8, !tbaa !5
  %630 = call i32 @clacpy_(ptr noundef @.str.9, ptr noundef %620, ptr noundef %621, ptr noundef %624, ptr noundef %625, ptr noundef %628, ptr noundef %629)
  %631 = load ptr, ptr %31, align 8, !tbaa !5
  %632 = load ptr, ptr %31, align 8, !tbaa !5
  %633 = load ptr, ptr %35, align 8, !tbaa !5
  %634 = load i64, ptr %59, align 8, !tbaa !9
  %635 = getelementptr inbounds %struct.complex, ptr %633, i64 %634
  %636 = load ptr, ptr %36, align 8, !tbaa !5
  %637 = load ptr, ptr %37, align 8, !tbaa !5
  %638 = getelementptr inbounds i64, ptr %637, i64 1
  %639 = load ptr, ptr %55, align 8, !tbaa !5
  %640 = call i32 @cgetrf_(ptr noundef %631, ptr noundef %632, ptr noundef %635, ptr noundef %636, ptr noundef %638, ptr noundef %639)
  %641 = load ptr, ptr %55, align 8, !tbaa !5
  %642 = load i64, ptr %641, align 8, !tbaa !9
  %643 = icmp sgt i64 %642, 0
  br i1 %643, label %644, label %658

644:                                              ; preds = %619
  %645 = load ptr, ptr %31, align 8, !tbaa !5
  %646 = load ptr, ptr %55, align 8, !tbaa !5
  %647 = load ptr, ptr %33, align 8, !tbaa !5
  %648 = load i64, ptr %57, align 8, !tbaa !9
  %649 = getelementptr inbounds %struct.complex, ptr %647, i64 %648
  %650 = load ptr, ptr %34, align 8, !tbaa !5
  %651 = load ptr, ptr %35, align 8, !tbaa !5
  %652 = load i64, ptr %59, align 8, !tbaa !9
  %653 = getelementptr inbounds %struct.complex, ptr %651, i64 %652
  %654 = load ptr, ptr %36, align 8, !tbaa !5
  %655 = call double @cla_rpvgrw__(ptr noundef %645, ptr noundef %646, ptr noundef %649, ptr noundef %650, ptr noundef %653, ptr noundef %654)
  %656 = fptrunc double %655 to float
  %657 = load ptr, ptr %46, align 8, !tbaa !5
  store float %656, ptr %657, align 4, !tbaa !11
  store i32 0, ptr %28, align 4
  store i32 1, ptr %85, align 4
  br label %777

658:                                              ; preds = %619
  br label %659

659:                                              ; preds = %658, %616
  %660 = load ptr, ptr %31, align 8, !tbaa !5
  %661 = load ptr, ptr %31, align 8, !tbaa !5
  %662 = load ptr, ptr %33, align 8, !tbaa !5
  %663 = load i64, ptr %57, align 8, !tbaa !9
  %664 = getelementptr inbounds %struct.complex, ptr %662, i64 %663
  %665 = load ptr, ptr %34, align 8, !tbaa !5
  %666 = load ptr, ptr %35, align 8, !tbaa !5
  %667 = load i64, ptr %59, align 8, !tbaa !9
  %668 = getelementptr inbounds %struct.complex, ptr %666, i64 %667
  %669 = load ptr, ptr %36, align 8, !tbaa !5
  %670 = call double @cla_rpvgrw__(ptr noundef %660, ptr noundef %661, ptr noundef %664, ptr noundef %665, ptr noundef %668, ptr noundef %669)
  %671 = fptrunc double %670 to float
  %672 = load ptr, ptr %46, align 8, !tbaa !5
  store float %671, ptr %672, align 4, !tbaa !11
  %673 = load ptr, ptr %31, align 8, !tbaa !5
  %674 = load ptr, ptr %32, align 8, !tbaa !5
  %675 = load ptr, ptr %41, align 8, !tbaa !5
  %676 = load i64, ptr %61, align 8, !tbaa !9
  %677 = getelementptr inbounds %struct.complex, ptr %675, i64 %676
  %678 = load ptr, ptr %42, align 8, !tbaa !5
  %679 = load ptr, ptr %43, align 8, !tbaa !5
  %680 = load i64, ptr %63, align 8, !tbaa !9
  %681 = getelementptr inbounds %struct.complex, ptr %679, i64 %680
  %682 = load ptr, ptr %44, align 8, !tbaa !5
  %683 = call i32 @clacpy_(ptr noundef @.str.9, ptr noundef %673, ptr noundef %674, ptr noundef %677, ptr noundef %678, ptr noundef %681, ptr noundef %682)
  %684 = load ptr, ptr %30, align 8, !tbaa !5
  %685 = load ptr, ptr %31, align 8, !tbaa !5
  %686 = load ptr, ptr %32, align 8, !tbaa !5
  %687 = load ptr, ptr %35, align 8, !tbaa !5
  %688 = load i64, ptr %59, align 8, !tbaa !9
  %689 = getelementptr inbounds %struct.complex, ptr %687, i64 %688
  %690 = load ptr, ptr %36, align 8, !tbaa !5
  %691 = load ptr, ptr %37, align 8, !tbaa !5
  %692 = getelementptr inbounds i64, ptr %691, i64 1
  %693 = load ptr, ptr %43, align 8, !tbaa !5
  %694 = load i64, ptr %63, align 8, !tbaa !9
  %695 = getelementptr inbounds %struct.complex, ptr %693, i64 %694
  %696 = load ptr, ptr %44, align 8, !tbaa !5
  %697 = load ptr, ptr %55, align 8, !tbaa !5
  %698 = call i32 @cgetrs_(ptr noundef %684, ptr noundef %685, ptr noundef %686, ptr noundef %689, ptr noundef %690, ptr noundef %692, ptr noundef %695, ptr noundef %696, ptr noundef %697)
  %699 = load ptr, ptr %30, align 8, !tbaa !5
  %700 = load ptr, ptr %38, align 8, !tbaa !5
  %701 = load ptr, ptr %31, align 8, !tbaa !5
  %702 = load ptr, ptr %32, align 8, !tbaa !5
  %703 = load ptr, ptr %33, align 8, !tbaa !5
  %704 = load i64, ptr %57, align 8, !tbaa !9
  %705 = getelementptr inbounds %struct.complex, ptr %703, i64 %704
  %706 = load ptr, ptr %34, align 8, !tbaa !5
  %707 = load ptr, ptr %35, align 8, !tbaa !5
  %708 = load i64, ptr %59, align 8, !tbaa !9
  %709 = getelementptr inbounds %struct.complex, ptr %707, i64 %708
  %710 = load ptr, ptr %36, align 8, !tbaa !5
  %711 = load ptr, ptr %37, align 8, !tbaa !5
  %712 = getelementptr inbounds i64, ptr %711, i64 1
  %713 = load ptr, ptr %39, align 8, !tbaa !5
  %714 = getelementptr inbounds float, ptr %713, i64 1
  %715 = load ptr, ptr %40, align 8, !tbaa !5
  %716 = getelementptr inbounds float, ptr %715, i64 1
  %717 = load ptr, ptr %41, align 8, !tbaa !5
  %718 = load i64, ptr %61, align 8, !tbaa !9
  %719 = getelementptr inbounds %struct.complex, ptr %717, i64 %718
  %720 = load ptr, ptr %42, align 8, !tbaa !5
  %721 = load ptr, ptr %43, align 8, !tbaa !5
  %722 = load i64, ptr %63, align 8, !tbaa !9
  %723 = getelementptr inbounds %struct.complex, ptr %721, i64 %722
  %724 = load ptr, ptr %44, align 8, !tbaa !5
  %725 = load ptr, ptr %45, align 8, !tbaa !5
  %726 = load ptr, ptr %47, align 8, !tbaa !5
  %727 = getelementptr inbounds float, ptr %726, i64 1
  %728 = load ptr, ptr %48, align 8, !tbaa !5
  %729 = load ptr, ptr %49, align 8, !tbaa !5
  %730 = load i64, ptr %65, align 8, !tbaa !9
  %731 = getelementptr inbounds float, ptr %729, i64 %730
  %732 = load ptr, ptr %50, align 8, !tbaa !5
  %733 = load i64, ptr %67, align 8, !tbaa !9
  %734 = getelementptr inbounds float, ptr %732, i64 %733
  %735 = load ptr, ptr %51, align 8, !tbaa !5
  %736 = load ptr, ptr %52, align 8, !tbaa !5
  %737 = getelementptr inbounds float, ptr %736, i64 1
  %738 = load ptr, ptr %53, align 8, !tbaa !5
  %739 = getelementptr inbounds %struct.complex, ptr %738, i64 1
  %740 = load ptr, ptr %54, align 8, !tbaa !5
  %741 = getelementptr inbounds float, ptr %740, i64 1
  %742 = load ptr, ptr %55, align 8, !tbaa !5
  %743 = call i32 @cgerfsx_(ptr noundef %699, ptr noundef %700, ptr noundef %701, ptr noundef %702, ptr noundef %705, ptr noundef %706, ptr noundef %709, ptr noundef %710, ptr noundef %712, ptr noundef %714, ptr noundef %716, ptr noundef %719, ptr noundef %720, ptr noundef %723, ptr noundef %724, ptr noundef %725, ptr noundef %727, ptr noundef %728, ptr noundef %731, ptr noundef %734, ptr noundef %735, ptr noundef %737, ptr noundef %739, ptr noundef %741, ptr noundef %742)
  %744 = load i64, ptr %80, align 8, !tbaa !9
  %745 = icmp ne i64 %744, 0
  br i1 %745, label %746, label %759

746:                                              ; preds = %659
  %747 = load i64, ptr %82, align 8, !tbaa !9
  %748 = icmp ne i64 %747, 0
  br i1 %748, label %749, label %759

749:                                              ; preds = %746
  %750 = load ptr, ptr %31, align 8, !tbaa !5
  %751 = load ptr, ptr %32, align 8, !tbaa !5
  %752 = load ptr, ptr %40, align 8, !tbaa !5
  %753 = getelementptr inbounds float, ptr %752, i64 1
  %754 = load ptr, ptr %43, align 8, !tbaa !5
  %755 = load i64, ptr %63, align 8, !tbaa !9
  %756 = getelementptr inbounds %struct.complex, ptr %754, i64 %755
  %757 = load ptr, ptr %44, align 8, !tbaa !5
  %758 = call i32 @clascl2_(ptr noundef %750, ptr noundef %751, ptr noundef %753, ptr noundef %756, ptr noundef %757)
  br label %776

759:                                              ; preds = %746, %659
  %760 = load i64, ptr %84, align 8, !tbaa !9
  %761 = icmp ne i64 %760, 0
  br i1 %761, label %762, label %775

762:                                              ; preds = %759
  %763 = load i64, ptr %82, align 8, !tbaa !9
  %764 = icmp ne i64 %763, 0
  br i1 %764, label %775, label %765

765:                                              ; preds = %762
  %766 = load ptr, ptr %31, align 8, !tbaa !5
  %767 = load ptr, ptr %32, align 8, !tbaa !5
  %768 = load ptr, ptr %39, align 8, !tbaa !5
  %769 = getelementptr inbounds float, ptr %768, i64 1
  %770 = load ptr, ptr %43, align 8, !tbaa !5
  %771 = load i64, ptr %63, align 8, !tbaa !9
  %772 = getelementptr inbounds %struct.complex, ptr %770, i64 %771
  %773 = load ptr, ptr %44, align 8, !tbaa !5
  %774 = call i32 @clascl2_(ptr noundef %766, ptr noundef %767, ptr noundef %769, ptr noundef %772, ptr noundef %773)
  br label %775

775:                                              ; preds = %765, %762, %759
  br label %776

776:                                              ; preds = %775, %749
  store i32 0, ptr %28, align 4
  store i32 1, ptr %85, align 4
  br label %777

777:                                              ; preds = %776, %644, %488
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  %778 = load i32, ptr %28, align 4
  ret i32 %778
}

; 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 @cgeequb_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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


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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [5 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @cgesvxx_(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 nocapture noundef writeonly %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24, ptr noundef %25, ptr noundef %26) local_unnamed_addr #0 {
  %28 = alloca i64, align 8
  %29 = alloca float, align 4
  %30 = alloca float, align 4
  %31 = alloca i64, align 8
  %32 = alloca float, align 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
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #4
  %33 = getelementptr inbounds i8, ptr %10, i64 -4
  %34 = getelementptr inbounds i8, ptr %11, i64 -4
  store i64 0, ptr %26, align 8, !tbaa !5
  %35 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %36 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %37 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #4
  %38 = tail call double @slamch_(ptr noundef nonnull @.str.2) #4
  %39 = fptrunc double %38 to float
  %40 = fdiv float 1.000000e+00, %39
  %41 = icmp ne i64 %35, 0
  %42 = icmp ne i64 %36, 0
  %or.cond = select i1 %41, i1 true, i1 %42
  br i1 %or.cond, label %.thread, label %43

.thread:                                          ; preds = %27
  store i8 78, ptr %9, align 1, !tbaa !9
  store float 0.000000e+00, ptr %17, align 4, !tbaa !10
  br label %59

43:                                               ; preds = %27
  %44 = tail call i64 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.3) #4
  %.not = icmp eq i64 %44, 0
  br i1 %.not, label %45, label %48

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

48:                                               ; preds = %45, %43
  %49 = phi i1 [ true, %43 ], [ %47, %45 ]
  %50 = zext i1 %49 to i64
  %51 = tail call i64 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.5) #4
  %.not319 = icmp eq i64 %51, 0
  br i1 %.not319, label %52, label %55

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

55:                                               ; preds = %52, %48
  %56 = phi i1 [ true, %48 ], [ %54, %52 ]
  %57 = zext i1 %56 to i64
  store float 0.000000e+00, ptr %17, align 4, !tbaa !10
  %58 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.6) #4
  %.not320 = icmp eq i64 %58, 0
  br i1 %.not320, label %.thread351.sink.split, label %59

59:                                               ; preds = %.thread, %55
  %.0344 = phi i64 [ 0, %.thread ], [ %50, %55 ]
  %.0304342 = phi i64 [ 0, %.thread ], [ %57, %55 ]
  %.not321 = icmp eq i64 %37, 0
  br i1 %.not321, label %60, label %64

60:                                               ; preds = %59
  %61 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.7) #4
  %.not322 = icmp eq i64 %61, 0
  br i1 %.not322, label %62, label %64

62:                                               ; preds = %60
  %63 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.5) #4
  %.not323 = icmp eq i64 %63, 0
  br i1 %.not323, label %.thread351.sink.split, label %64

64:                                               ; preds = %62, %60, %59
  %65 = load i64, ptr %2, align 8, !tbaa !5
  %66 = icmp slt i64 %65, 0
  br i1 %66, label %.thread351.sink.split, label %67

67:                                               ; preds = %64
  %68 = load i64, ptr %3, align 8, !tbaa !5
  %69 = icmp slt i64 %68, 0
  br i1 %69, label %.thread351.sink.split, label %70

70:                                               ; preds = %67
  %71 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %65, i64 1)
  %72 = icmp slt i64 %71, %spec.select
  br i1 %72, label %.thread351.sink.split, label %73

73:                                               ; preds = %70
  %74 = load i64, ptr %7, align 8, !tbaa !5
  %75 = icmp slt i64 %74, %spec.select
  br i1 %75, label %.thread351.sink.split, label %76

76:                                               ; preds = %73
  %77 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.6) #4
  %78 = icmp eq i64 %77, 0
  %79 = icmp ne i64 %.0344, 0
  %or.cond5 = select i1 %78, i1 true, i1 %79
  %80 = icmp ne i64 %.0304342, 0
  %or.cond7 = select i1 %or.cond5, i1 true, i1 %80
  br i1 %or.cond7, label %83, label %81

81:                                               ; preds = %76
  %82 = tail call i64 @lsame_(ptr noundef %9, ptr noundef nonnull @.str) #4
  %.not324 = icmp eq i64 %82, 0
  br i1 %.not324, label %.thread351.sink.split, label %..thread346_crit_edge

..thread346_crit_edge:                            ; preds = %81
  %.pr.pre = load i64, ptr %26, align 8, !tbaa !5
  br label %.thread346

83:                                               ; preds = %76
  br i1 %79, label %84, label %116

84:                                               ; preds = %83
  %85 = load i64, ptr %2, align 8, !tbaa !5
  %.not325375 = icmp slt i64 %85, 1
  br i1 %.not325375, label %._crit_edge, label %.lr.ph.preheader

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

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

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %.0307378 = phi float [ 0.000000e+00, %.lr.ph.preheader.new ], [ %98, %.lr.ph ]
  %.0309377 = phi float [ %40, %.lr.ph.preheader.new ], [ %96, %.lr.ph ]
  %.0311376 = phi i64 [ 1, %.lr.ph.preheader.new ], [ %99, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %87 = getelementptr inbounds float, ptr %33, i64 %.0311376
  %88 = load float, ptr %87, align 4, !tbaa !10
  %89 = fcmp ole float %.0309377, %88
  %90 = select i1 %89, float %.0309377, float %88
  %91 = fcmp oge float %.0307378, %88
  %92 = select i1 %91, float %.0307378, float %88
  %93 = getelementptr float, ptr %10, i64 %.0311376
  %94 = load float, ptr %93, align 4, !tbaa !10
  %95 = fcmp ole float %90, %94
  %96 = select i1 %95, float %90, float %94
  %97 = fcmp oge float %92, %94
  %98 = select i1 %97, float %92, float %94
  %99 = add nuw i64 %.0311376, 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
  %.lcssa438.ph = phi float [ poison, %.lr.ph.preheader ], [ %96, %.lr.ph ]
  %.lcssa437.ph = phi float [ poison, %.lr.ph.preheader ], [ %98, %.lr.ph ]
  %.0307378.unr = phi float [ 0.000000e+00, %.lr.ph.preheader ], [ %98, %.lr.ph ]
  %.0309377.unr = phi float [ %40, %.lr.ph.preheader ], [ %96, %.lr.ph ]
  %.0311376.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %99, %.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
  %100 = getelementptr inbounds float, ptr %33, i64 %.0311376.unr
  %101 = load float, ptr %100, align 4, !tbaa !10
  %102 = fcmp ole float %.0309377.unr, %101
  %103 = select i1 %102, float %.0309377.unr, float %101
  %104 = fcmp oge float %.0307378.unr, %101
  %105 = select i1 %104, float %.0307378.unr, float %101
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %84
  %.0309.lcssa = phi float [ %40, %84 ], [ %.lcssa438.ph, %._crit_edge.loopexit.unr-lcssa ], [ %103, %.lr.ph.epil ]
  %.0307.lcssa = phi float [ 0.000000e+00, %84 ], [ %.lcssa437.ph, %._crit_edge.loopexit.unr-lcssa ], [ %105, %.lr.ph.epil ]
  %106 = fcmp ugt float %.0309.lcssa, 0.000000e+00
  br i1 %106, label %107, label %.thread351.sink.split

107:                                              ; preds = %._crit_edge
  %108 = icmp sgt i64 %85, 0
  br i1 %108, label %109, label %115

109:                                              ; preds = %107
  %110 = fcmp oge float %.0309.lcssa, %39
  %111 = select i1 %110, float %.0309.lcssa, float %39
  %112 = fcmp ole float %.0307.lcssa, %40
  %113 = select i1 %112, float %.0307.lcssa, float %40
  %114 = fdiv float %111, %113
  store float %114, ptr %32, align 4, !tbaa !10
  br label %116

115:                                              ; preds = %107
  store float 1.000000e+00, ptr %32, align 4, !tbaa !10
  br label %116

116:                                              ; preds = %115, %109, %83
  %.pr.pre403.pr = load i64, ptr %26, align 8, !tbaa !5
  br i1 %80, label %117, label %.thread346

117:                                              ; preds = %116
  %118 = icmp eq i64 %.pr.pre403.pr, 0
  br i1 %118, label %119, label %.thread351

119:                                              ; preds = %117
  %120 = load i64, ptr %2, align 8, !tbaa !5
  %.not326380 = icmp slt i64 %120, 1
  br i1 %.not326380, label %._crit_edge386, label %.lr.ph385.preheader

.lr.ph385.preheader:                              ; preds = %119
  %xtraiter441 = and i64 %120, 1
  %121 = icmp eq i64 %120, 1
  br i1 %121, label %._crit_edge386.loopexit.unr-lcssa, label %.lr.ph385.preheader.new

.lr.ph385.preheader.new:                          ; preds = %.lr.ph385.preheader
  %unroll_iter445 = and i64 %120, 9223372036854775806
  br label %.lr.ph385

.lr.ph385:                                        ; preds = %.lr.ph385, %.lr.ph385.preheader.new
  %.1308383 = phi float [ 0.000000e+00, %.lr.ph385.preheader.new ], [ %133, %.lr.ph385 ]
  %.1310382 = phi float [ %40, %.lr.ph385.preheader.new ], [ %131, %.lr.ph385 ]
  %.1312381 = phi i64 [ 1, %.lr.ph385.preheader.new ], [ %134, %.lr.ph385 ]
  %niter446 = phi i64 [ 0, %.lr.ph385.preheader.new ], [ %niter446.next.1, %.lr.ph385 ]
  %122 = getelementptr inbounds float, ptr %34, i64 %.1312381
  %123 = load float, ptr %122, align 4, !tbaa !10
  %124 = fcmp ole float %.1310382, %123
  %125 = select i1 %124, float %.1310382, float %123
  %126 = fcmp oge float %.1308383, %123
  %127 = select i1 %126, float %.1308383, float %123
  %128 = getelementptr float, ptr %11, i64 %.1312381
  %129 = load float, ptr %128, align 4, !tbaa !10
  %130 = fcmp ole float %125, %129
  %131 = select i1 %130, float %125, float %129
  %132 = fcmp oge float %127, %129
  %133 = select i1 %132, float %127, float %129
  %134 = add nuw i64 %.1312381, 2
  %niter446.next.1 = add i64 %niter446, 2
  %niter446.ncmp.1 = icmp eq i64 %niter446.next.1, %unroll_iter445
  br i1 %niter446.ncmp.1, label %._crit_edge386.loopexit.unr-lcssa, label %.lr.ph385, !llvm.loop !14

._crit_edge386.loopexit.unr-lcssa:                ; preds = %.lr.ph385, %.lr.ph385.preheader
  %.lcssa436.ph = phi float [ poison, %.lr.ph385.preheader ], [ %131, %.lr.ph385 ]
  %.lcssa.ph = phi float [ poison, %.lr.ph385.preheader ], [ %133, %.lr.ph385 ]
  %.1308383.unr = phi float [ 0.000000e+00, %.lr.ph385.preheader ], [ %133, %.lr.ph385 ]
  %.1310382.unr = phi float [ %40, %.lr.ph385.preheader ], [ %131, %.lr.ph385 ]
  %.1312381.unr = phi i64 [ 1, %.lr.ph385.preheader ], [ %134, %.lr.ph385 ]
  %lcmp.mod442.not = icmp eq i64 %xtraiter441, 0
  br i1 %lcmp.mod442.not, label %._crit_edge386, label %.lr.ph385.epil

.lr.ph385.epil:                                   ; preds = %._crit_edge386.loopexit.unr-lcssa
  %135 = getelementptr inbounds float, ptr %34, i64 %.1312381.unr
  %136 = load float, ptr %135, align 4, !tbaa !10
  %137 = fcmp ole float %.1310382.unr, %136
  %138 = select i1 %137, float %.1310382.unr, float %136
  %139 = fcmp oge float %.1308383.unr, %136
  %140 = select i1 %139, float %.1308383.unr, float %136
  br label %._crit_edge386

._crit_edge386:                                   ; preds = %.lr.ph385.epil, %._crit_edge386.loopexit.unr-lcssa, %119
  %.1310.lcssa = phi float [ %40, %119 ], [ %.lcssa436.ph, %._crit_edge386.loopexit.unr-lcssa ], [ %138, %.lr.ph385.epil ]
  %.1308.lcssa = phi float [ 0.000000e+00, %119 ], [ %.lcssa.ph, %._crit_edge386.loopexit.unr-lcssa ], [ %140, %.lr.ph385.epil ]
  %141 = fcmp ugt float %.1310.lcssa, 0.000000e+00
  br i1 %141, label %142, label %.thread351.sink.split

142:                                              ; preds = %._crit_edge386
  %143 = icmp sgt i64 %120, 0
  br i1 %143, label %144, label %150

144:                                              ; preds = %142
  %145 = fcmp oge float %.1310.lcssa, %39
  %146 = select i1 %145, float %.1310.lcssa, float %39
  %147 = fcmp ole float %.1308.lcssa, %40
  %148 = select i1 %147, float %.1308.lcssa, float %40
  %149 = fdiv float %146, %148
  store float %149, ptr %30, align 4, !tbaa !10
  br label %.thread346.thread

150:                                              ; preds = %142
  store float 1.000000e+00, ptr %30, align 4, !tbaa !10
  br label %.thread346.thread

.thread346:                                       ; preds = %..thread346_crit_edge, %116
  %.pr349.pr = phi i64 [ %.pr.pre, %..thread346_crit_edge ], [ %.pr.pre403.pr, %116 ]
  %151 = icmp eq i64 %.pr349.pr, 0
  br i1 %151, label %.thread346.thread, label %.thread351

.thread346.thread:                                ; preds = %144, %150, %.thread346
  %152 = load i64, ptr %13, align 8, !tbaa !5
  %153 = load i64, ptr %2, align 8, !tbaa !5
  %spec.select337 = tail call i64 @llvm.smax.i64(i64 %153, i64 1)
  %154 = icmp slt i64 %152, %spec.select337
  br i1 %154, label %.thread351.sink.split, label %155

155:                                              ; preds = %.thread346.thread
  %156 = load i64, ptr %15, align 8, !tbaa !5
  %157 = icmp slt i64 %156, %spec.select337
  br i1 %157, label %.thread351.sink.split, label %.thread347

.thread351.sink.split:                            ; preds = %155, %.thread346.thread, %._crit_edge386, %._crit_edge, %81, %73, %70, %67, %64, %62, %55
  %.sink = phi i64 [ -1, %55 ], [ -2, %62 ], [ -3, %64 ], [ -4, %67 ], [ -6, %70 ], [ -8, %73 ], [ -10, %81 ], [ -11, %._crit_edge ], [ -12, %._crit_edge386 ], [ -14, %.thread346.thread ], [ -16, %155 ]
  store i64 %.sink, ptr %26, align 8, !tbaa !5
  br label %.thread351

.thread351:                                       ; preds = %.thread351.sink.split, %117, %.thread346
  %158 = phi i64 [ %.pr349.pr, %.thread346 ], [ %.pr.pre403.pr, %117 ], [ %.sink, %.thread351.sink.split ]
  %159 = sub nsw i64 0, %158
  store i64 %159, ptr %28, align 8, !tbaa !5
  %160 = call i32 @xerbla_(ptr noundef nonnull @.str.8, ptr noundef nonnull %28) #4
  br label %220

.thread347:                                       ; preds = %155
  br i1 %42, label %161, label %.loopexit

161:                                              ; preds = %.thread347
  %162 = call i32 @cgeequb_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %10, ptr noundef %11, ptr noundef nonnull %32, ptr noundef nonnull %30, ptr noundef nonnull %29, ptr noundef nonnull %31) #4
  %163 = load i64, ptr %31, align 8, !tbaa !5
  %164 = icmp eq i64 %163, 0
  br i1 %164, label %165, label %179

165:                                              ; preds = %161
  %166 = call i32 @claqge_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %10, ptr noundef %11, ptr noundef nonnull %32, ptr noundef nonnull %30, ptr noundef nonnull %29, ptr noundef %9) #4
  %167 = call i64 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.3) #4
  %.not328 = icmp eq i64 %167, 0
  br i1 %.not328, label %168, label %172

168:                                              ; preds = %165
  %169 = call i64 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.4) #4
  %170 = icmp ne i64 %169, 0
  %171 = zext i1 %170 to i64
  br label %172

172:                                              ; preds = %168, %165
  %173 = phi i64 [ 1, %165 ], [ %171, %168 ]
  %174 = call i64 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.5) #4
  %.not329 = icmp eq i64 %174, 0
  br i1 %.not329, label %175, label %179

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

179:                                              ; preds = %172, %175, %161
  %.1305 = phi i64 [ %.0304342, %161 ], [ 1, %172 ], [ %178, %175 ]
  %.1 = phi i64 [ %.0344, %161 ], [ %173, %172 ], [ %173, %175 ]
  %.not330 = icmp eq i64 %.1, 0
  br i1 %.not330, label %180, label %.loopexit374

180:                                              ; preds = %179
  %181 = load i64, ptr %2, align 8, !tbaa !5
  %.not331389 = icmp slt i64 %181, 1
  br i1 %.not331389, label %.loopexit374, label %.lr.ph392.preheader

.lr.ph392.preheader:                              ; preds = %180
  %min.iters.check = icmp ult i64 %181, 8
  br i1 %min.iters.check, label %.lr.ph392.preheader435, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph392.preheader
  %n.vec = and i64 %181, 9223372036854775800
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %182 = getelementptr float, ptr %10, i64 %index
  %183 = getelementptr inbounds i8, ptr %182, i64 16
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %182, align 4, !tbaa !10
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %183, align 4, !tbaa !10
  %index.next = add nuw i64 %index, 8
  %184 = icmp eq i64 %index.next, %n.vec
  br i1 %184, label %middle.block, label %vector.body, !llvm.loop !15

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %181, %n.vec
  br i1 %cmp.n, label %.loopexit374, label %.lr.ph392.preheader435

.lr.ph392.preheader435:                           ; preds = %middle.block, %.lr.ph392.preheader
  %.2313390.ph = phi i64 [ 1, %.lr.ph392.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph392

.lr.ph392:                                        ; preds = %.lr.ph392.preheader435, %.lr.ph392
  %.2313390 = phi i64 [ %186, %.lr.ph392 ], [ %.2313390.ph, %.lr.ph392.preheader435 ]
  %185 = getelementptr inbounds float, ptr %33, i64 %.2313390
  store float 1.000000e+00, ptr %185, align 4, !tbaa !10
  %186 = add nuw i64 %.2313390, 1
  %exitcond401.not = icmp eq i64 %.2313390, %181
  br i1 %exitcond401.not, label %.loopexit374, label %.lr.ph392, !llvm.loop !18

.loopexit374:                                     ; preds = %.lr.ph392, %middle.block, %180, %179
  %.not332 = icmp eq i64 %.1305, 0
  br i1 %.not332, label %187, label %.thread355

187:                                              ; preds = %.loopexit374
  %188 = load i64, ptr %2, align 8, !tbaa !5
  %.not333393 = icmp slt i64 %188, 1
  br i1 %.not333393, label %.loopexit, label %.lr.ph396.preheader

.lr.ph396.preheader:                              ; preds = %187
  %min.iters.check423 = icmp ult i64 %188, 8
  br i1 %min.iters.check423, label %.lr.ph396.preheader434, label %vector.ph424

vector.ph424:                                     ; preds = %.lr.ph396.preheader
  %n.vec426 = and i64 %188, 9223372036854775800
  %ind.end427 = or disjoint i64 %n.vec426, 1
  br label %vector.body429

vector.body429:                                   ; preds = %vector.body429, %vector.ph424
  %index430 = phi i64 [ 0, %vector.ph424 ], [ %index.next432, %vector.body429 ]
  %189 = getelementptr float, ptr %11, i64 %index430
  %190 = getelementptr inbounds i8, ptr %189, i64 16
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %189, align 4, !tbaa !10
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %190, align 4, !tbaa !10
  %index.next432 = add nuw i64 %index430, 8
  %191 = icmp eq i64 %index.next432, %n.vec426
  br i1 %191, label %middle.block421, label %vector.body429, !llvm.loop !19

middle.block421:                                  ; preds = %vector.body429
  %cmp.n433 = icmp eq i64 %188, %n.vec426
  br i1 %cmp.n433, label %.loopexit, label %.lr.ph396.preheader434

.lr.ph396.preheader434:                           ; preds = %middle.block421, %.lr.ph396.preheader
  %.3394.ph = phi i64 [ 1, %.lr.ph396.preheader ], [ %ind.end427, %middle.block421 ]
  br label %.lr.ph396

.lr.ph396:                                        ; preds = %.lr.ph396.preheader434, %.lr.ph396
  %.3394 = phi i64 [ %193, %.lr.ph396 ], [ %.3394.ph, %.lr.ph396.preheader434 ]
  %192 = getelementptr inbounds float, ptr %34, i64 %.3394
  store float 1.000000e+00, ptr %192, align 4, !tbaa !10
  %193 = add nuw i64 %.3394, 1
  %exitcond402.not = icmp eq i64 %.3394, %188
  br i1 %exitcond402.not, label %.loopexit, label %.lr.ph396, !llvm.loop !20

.loopexit:                                        ; preds = %.lr.ph396, %middle.block421, %187, %.thread347
  %.2306 = phi i64 [ %.0304342, %.thread347 ], [ 0, %187 ], [ 0, %middle.block421 ], [ 0, %.lr.ph396 ]
  %.2 = phi i64 [ %.0344, %.thread347 ], [ %.1, %187 ], [ %.1, %middle.block421 ], [ %.1, %.lr.ph396 ]
  br i1 %.not321, label %195, label %194

.thread355:                                       ; preds = %.loopexit374
  br i1 %.not321, label %.sink.split, label %194

194:                                              ; preds = %.thread355, %.loopexit
  %.2361 = phi i64 [ %.1, %.thread355 ], [ %.2, %.loopexit ]
  %.2306360 = phi i64 [ 1, %.thread355 ], [ %.2306, %.loopexit ]
  %.not335 = icmp eq i64 %.2361, 0
  br i1 %.not335, label %197, label %.sink.split

195:                                              ; preds = %.loopexit
  %.not334 = icmp eq i64 %.2306, 0
  br i1 %.not334, label %197, label %.sink.split

.sink.split:                                      ; preds = %195, %.thread355, %194
  %.sink417 = phi ptr [ %10, %194 ], [ %11, %.thread355 ], [ %11, %195 ]
  %.ph416 = phi i1 [ true, %194 ], [ false, %.thread355 ], [ false, %195 ]
  %.2362.ph = phi i64 [ 1, %194 ], [ %.1, %.thread355 ], [ %.2, %195 ]
  %.2306358.ph = phi i64 [ %.2306360, %194 ], [ 1, %.thread355 ], [ 1, %195 ]
  %196 = call i32 @clascl2_(ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %.sink417, ptr noundef %12, ptr noundef nonnull %13) #4
  br label %197

197:                                              ; preds = %.sink.split, %195, %194
  %198 = phi i1 [ false, %195 ], [ true, %194 ], [ %.ph416, %.sink.split ]
  %.2362 = phi i64 [ %.2, %195 ], [ 0, %194 ], [ %.2362.ph, %.sink.split ]
  %.2306358 = phi i64 [ 0, %195 ], [ %.2306360, %194 ], [ %.2306358.ph, %.sink.split ]
  br i1 %or.cond, label %199, label %207

199:                                              ; preds = %197
  %200 = call i32 @clacpy_(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
  %201 = call i32 @cgetrf_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %26) #4
  %202 = load i64, ptr %26, align 8, !tbaa !5
  %203 = icmp sgt i64 %202, 0
  br i1 %203, label %204, label %207

204:                                              ; preds = %199
  %205 = call double @cla_rpvgrw__(ptr noundef nonnull %2, ptr noundef nonnull %26, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7) #4
  %206 = fptrunc double %205 to float
  store float %206, ptr %17, align 4, !tbaa !10
  br label %220

207:                                              ; preds = %199, %197
  %208 = call double @cla_rpvgrw__(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7) #4
  %209 = fptrunc double %208 to float
  store float %209, ptr %17, align 4, !tbaa !10
  %210 = call i32 @clacpy_(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
  %211 = call i32 @cgetrs_(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 %26) #4
  %212 = call i32 @cgerfsx_(ptr noundef %1, ptr noundef %9, 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 %10, ptr noundef %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %16, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24, ptr noundef %25, ptr noundef nonnull %26) #4
  %213 = icmp ne i64 %.2306358, 0
  %or.cond11 = and i1 %198, %213
  br i1 %or.cond11, label %214, label %216

214:                                              ; preds = %207
  %215 = call i32 @clascl2_(ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %11, ptr noundef %14, ptr noundef nonnull %15) #4
  br label %220

216:                                              ; preds = %207
  %217 = icmp eq i64 %.2362, 0
  %or.cond13 = or i1 %198, %217
  br i1 %or.cond13, label %220, label %218

218:                                              ; preds = %216
  %219 = call i32 @clascl2_(ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %10, ptr noundef %14, ptr noundef nonnull %15) #4
  br label %220

220:                                              ; preds = %214, %218, %216, %204, %.thread351
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #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 @cgeequb_(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 @claqge_(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 @clascl2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare 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 = distinct !{!15, !13, !16, !17}
!16 = !{!"llvm.loop.isvectorized", i32 1}
!17 = !{!"llvm.loop.unroll.runtime.disable"}
!18 = distinct !{!18, !13, !17, !16}
!19 = distinct !{!19, !13, !16, !17}
!20 = distinct !{!20, !13, !17, !16}


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