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

; 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 [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 [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [9 x i8], align 1
@c_b1 = external hidden global %struct.complex, align 4

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

121:                                              ; preds = %24
  %122 = load ptr, ptr %26, align 8, !tbaa !5
  %123 = load i64, ptr %122, align 8, !tbaa !9
  %124 = icmp sgt i64 %123, 3
  br i1 %124, label %125, label %127

125:                                              ; preds = %121, %24
  %126 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -1, ptr %126, align 8, !tbaa !9
  br label %265

127:                                              ; preds = %121
  %128 = load i64, ptr %61, align 8, !tbaa !9
  %129 = icmp ne i64 %128, 0
  br i1 %129, label %136, label %130

130:                                              ; preds = %127
  %131 = load ptr, ptr %27, align 8, !tbaa !5
  %132 = call i64 @lsame_(ptr noundef %131, ptr noundef @.str.4)
  %133 = icmp ne i64 %132, 0
  br i1 %133, label %136, label %134

134:                                              ; preds = %130
  %135 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -2, ptr %135, align 8, !tbaa !9
  br label %264

136:                                              ; preds = %130, %127
  %137 = load i64, ptr %62, align 8, !tbaa !9
  %138 = icmp ne i64 %137, 0
  br i1 %138, label %147, label %139

139:                                              ; preds = %136
  %140 = load i64, ptr %64, align 8, !tbaa !9
  %141 = icmp ne i64 %140, 0
  br i1 %141, label %147, label %142

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

145:                                              ; preds = %142
  %146 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -3, ptr %146, align 8, !tbaa !9
  br label %263

147:                                              ; preds = %142, %139, %136
  %148 = load i64, ptr %60, align 8, !tbaa !9
  %149 = icmp ne i64 %148, 0
  br i1 %149, label %156, label %150

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

154:                                              ; preds = %150
  %155 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -4, ptr %155, align 8, !tbaa !9
  br label %262

156:                                              ; preds = %150, %147
  %157 = load ptr, ptr %30, align 8, !tbaa !5
  %158 = load i64, ptr %157, align 8, !tbaa !9
  %159 = icmp slt i64 %158, 0
  br i1 %159, label %160, label %162

160:                                              ; preds = %156
  %161 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -5, ptr %161, align 8, !tbaa !9
  br label %261

162:                                              ; preds = %156
  %163 = load ptr, ptr %32, align 8, !tbaa !5
  %164 = load i64, ptr %163, align 8, !tbaa !9
  %165 = load ptr, ptr %30, align 8, !tbaa !5
  %166 = load i64, ptr %165, align 8, !tbaa !9
  %167 = icmp sge i64 1, %166
  br i1 %167, label %168, label %169

168:                                              ; preds = %162
  br label %172

169:                                              ; preds = %162
  %170 = load ptr, ptr %30, align 8, !tbaa !5
  %171 = load i64, ptr %170, align 8, !tbaa !9
  br label %172

172:                                              ; preds = %169, %168
  %173 = phi i64 [ 1, %168 ], [ %171, %169 ]
  %174 = icmp slt i64 %164, %173
  br i1 %174, label %175, label %177

175:                                              ; preds = %172
  %176 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -7, ptr %176, align 8, !tbaa !9
  br label %260

177:                                              ; preds = %172
  %178 = load ptr, ptr %34, align 8, !tbaa !5
  %179 = load i64, ptr %178, align 8, !tbaa !9
  %180 = load ptr, ptr %30, align 8, !tbaa !5
  %181 = load i64, ptr %180, align 8, !tbaa !9
  %182 = icmp sge i64 1, %181
  br i1 %182, label %183, label %184

183:                                              ; preds = %177
  br label %187

184:                                              ; preds = %177
  %185 = load ptr, ptr %30, align 8, !tbaa !5
  %186 = load i64, ptr %185, align 8, !tbaa !9
  br label %187

187:                                              ; preds = %184, %183
  %188 = phi i64 [ 1, %183 ], [ %186, %184 ]
  %189 = icmp slt i64 %179, %188
  br i1 %189, label %190, label %192

190:                                              ; preds = %187
  %191 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -9, ptr %191, align 8, !tbaa !9
  br label %259

192:                                              ; preds = %187
  %193 = load i64, ptr %64, align 8, !tbaa !9
  %194 = icmp ne i64 %193, 0
  br i1 %194, label %195, label %208

195:                                              ; preds = %192
  %196 = load ptr, ptr %30, align 8, !tbaa !5
  %197 = load i64, ptr %196, align 8, !tbaa !9
  %198 = icmp sgt i64 %197, 0
  br i1 %198, label %199, label %207

199:                                              ; preds = %195
  %200 = load ptr, ptr %36, align 8, !tbaa !5
  %201 = load float, ptr %200, align 4, !tbaa !11
  %202 = load ptr, ptr %35, align 8, !tbaa !5
  %203 = load float, ptr %202, align 4, !tbaa !11
  %204 = fcmp ole float %201, %203
  br i1 %204, label %205, label %207

205:                                              ; preds = %199
  %206 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -11, ptr %206, align 8, !tbaa !9
  br label %207

207:                                              ; preds = %205, %199, %195
  br label %258

208:                                              ; preds = %192
  %209 = load i64, ptr %63, align 8, !tbaa !9
  %210 = icmp ne i64 %209, 0
  br i1 %210, label %211, label %257

211:                                              ; preds = %208
  %212 = load ptr, ptr %37, align 8, !tbaa !5
  %213 = load i64, ptr %212, align 8, !tbaa !9
  %214 = icmp slt i64 %213, 1
  br i1 %214, label %228, label %215

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

221:                                              ; preds = %215
  br label %225

222:                                              ; preds = %215
  %223 = load ptr, ptr %30, align 8, !tbaa !5
  %224 = load i64, ptr %223, align 8, !tbaa !9
  br label %225

225:                                              ; preds = %222, %221
  %226 = phi i64 [ 1, %221 ], [ %224, %222 ]
  %227 = icmp sgt i64 %217, %226
  br i1 %227, label %228, label %230

228:                                              ; preds = %225, %211
  %229 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -12, ptr %229, align 8, !tbaa !9
  br label %256

230:                                              ; preds = %225
  %231 = load ptr, ptr %38, align 8, !tbaa !5
  %232 = load i64, ptr %231, align 8, !tbaa !9
  %233 = load ptr, ptr %30, align 8, !tbaa !5
  %234 = load i64, ptr %233, align 8, !tbaa !9
  %235 = load ptr, ptr %37, align 8, !tbaa !5
  %236 = load i64, ptr %235, align 8, !tbaa !9
  %237 = icmp sle i64 %234, %236
  br i1 %237, label %238, label %241

238:                                              ; preds = %230
  %239 = load ptr, ptr %30, align 8, !tbaa !5
  %240 = load i64, ptr %239, align 8, !tbaa !9
  br label %244

241:                                              ; preds = %230
  %242 = load ptr, ptr %37, align 8, !tbaa !5
  %243 = load i64, ptr %242, align 8, !tbaa !9
  br label %244

244:                                              ; preds = %241, %238
  %245 = phi i64 [ %240, %238 ], [ %243, %241 ]
  %246 = icmp slt i64 %232, %245
  br i1 %246, label %253, label %247

247:                                              ; preds = %244
  %248 = load ptr, ptr %38, align 8, !tbaa !5
  %249 = load i64, ptr %248, align 8, !tbaa !9
  %250 = load ptr, ptr %30, align 8, !tbaa !5
  %251 = load i64, ptr %250, align 8, !tbaa !9
  %252 = icmp sgt i64 %249, %251
  br i1 %252, label %253, label %255

253:                                              ; preds = %247, %244
  %254 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -13, ptr %254, align 8, !tbaa !9
  br label %255

255:                                              ; preds = %253, %247
  br label %256

256:                                              ; preds = %255, %228
  br label %257

257:                                              ; preds = %256, %208
  br label %258

258:                                              ; preds = %257, %207
  br label %259

259:                                              ; preds = %258, %190
  br label %260

260:                                              ; preds = %259, %175
  br label %261

261:                                              ; preds = %260, %160
  br label %262

262:                                              ; preds = %261, %154
  br label %263

263:                                              ; preds = %262, %145
  br label %264

264:                                              ; preds = %263, %134
  br label %265

265:                                              ; preds = %264, %125
  %266 = load ptr, ptr %49, align 8, !tbaa !5
  %267 = load i64, ptr %266, align 8, !tbaa !9
  %268 = icmp eq i64 %267, 0
  br i1 %268, label %269, label %285

269:                                              ; preds = %265
  %270 = load ptr, ptr %43, align 8, !tbaa !5
  %271 = load i64, ptr %270, align 8, !tbaa !9
  %272 = icmp slt i64 %271, 1
  br i1 %272, label %282, label %273

273:                                              ; preds = %269
  %274 = load i64, ptr %61, align 8, !tbaa !9
  %275 = icmp ne i64 %274, 0
  br i1 %275, label %276, label %284

276:                                              ; preds = %273
  %277 = load ptr, ptr %43, align 8, !tbaa !5
  %278 = load i64, ptr %277, align 8, !tbaa !9
  %279 = load ptr, ptr %30, align 8, !tbaa !5
  %280 = load i64, ptr %279, align 8, !tbaa !9
  %281 = icmp slt i64 %278, %280
  br i1 %281, label %282, label %284

282:                                              ; preds = %276, %269
  %283 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -18, ptr %283, align 8, !tbaa !9
  br label %284

284:                                              ; preds = %282, %276, %273
  br label %285

285:                                              ; preds = %284, %265
  %286 = load ptr, ptr %49, align 8, !tbaa !5
  %287 = load i64, ptr %286, align 8, !tbaa !9
  %288 = icmp eq i64 %287, 0
  br i1 %288, label %289, label %336

289:                                              ; preds = %285
  %290 = load ptr, ptr %29, align 8, !tbaa !5
  %291 = load ptr, ptr %30, align 8, !tbaa !5
  %292 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.6, ptr noundef %290, ptr noundef %291, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %292, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %56, align 8, !tbaa !9
  %293 = load i64, ptr %58, align 8, !tbaa !9
  %294 = add nsw i64 %293, 1
  %295 = load ptr, ptr %30, align 8, !tbaa !5
  %296 = load i64, ptr %295, align 8, !tbaa !9
  %297 = mul nsw i64 %294, %296
  store i64 %297, ptr %57, align 8, !tbaa !9
  %298 = load i64, ptr %56, align 8, !tbaa !9
  %299 = load i64, ptr %57, align 8, !tbaa !9
  %300 = icmp sge i64 %298, %299
  br i1 %300, label %301, label %303

301:                                              ; preds = %289
  %302 = load i64, ptr %56, align 8, !tbaa !9
  br label %305

303:                                              ; preds = %289
  %304 = load i64, ptr %57, align 8, !tbaa !9
  br label %305

305:                                              ; preds = %303, %301
  %306 = phi i64 [ %302, %301 ], [ %304, %303 ]
  store i64 %306, ptr %65, align 8, !tbaa !9
  %307 = load i64, ptr %65, align 8, !tbaa !9
  %308 = sitofp i64 %307 to float
  %309 = load ptr, ptr %44, align 8, !tbaa !5
  %310 = getelementptr inbounds %struct.complex, ptr %309, i64 1
  %311 = getelementptr inbounds %struct.complex, ptr %310, i32 0, i32 0
  store float %308, ptr %311, align 4, !tbaa !13
  %312 = load ptr, ptr %44, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.complex, ptr %312, i64 1
  %314 = getelementptr inbounds %struct.complex, ptr %313, i32 0, i32 1
  store float 0.000000e+00, ptr %314, align 4, !tbaa !15
  store i64 1, ptr %56, align 8, !tbaa !9
  %315 = load ptr, ptr %30, align 8, !tbaa !5
  %316 = load i64, ptr %315, align 8, !tbaa !9
  %317 = shl i64 %316, 1
  store i64 %317, ptr %57, align 8, !tbaa !9
  %318 = load ptr, ptr %45, align 8, !tbaa !5
  %319 = load i64, ptr %318, align 8, !tbaa !9
  %320 = load i64, ptr %56, align 8, !tbaa !9
  %321 = load i64, ptr %57, align 8, !tbaa !9
  %322 = icmp sge i64 %320, %321
  br i1 %322, label %323, label %325

323:                                              ; preds = %305
  %324 = load i64, ptr %56, align 8, !tbaa !9
  br label %327

325:                                              ; preds = %305
  %326 = load i64, ptr %57, align 8, !tbaa !9
  br label %327

327:                                              ; preds = %325, %323
  %328 = phi i64 [ %324, %323 ], [ %326, %325 ]
  %329 = icmp slt i64 %319, %328
  br i1 %329, label %330, label %335

330:                                              ; preds = %327
  %331 = load i64, ptr %66, align 8, !tbaa !9
  %332 = icmp ne i64 %331, 0
  br i1 %332, label %335, label %333

333:                                              ; preds = %330
  %334 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -20, ptr %334, align 8, !tbaa !9
  br label %335

335:                                              ; preds = %333, %330, %327
  br label %336

336:                                              ; preds = %335, %285
  %337 = load ptr, ptr %49, align 8, !tbaa !5
  %338 = load i64, ptr %337, align 8, !tbaa !9
  %339 = icmp ne i64 %338, 0
  br i1 %339, label %340, label %345

340:                                              ; preds = %336
  %341 = load ptr, ptr %49, align 8, !tbaa !5
  %342 = load i64, ptr %341, align 8, !tbaa !9
  %343 = sub nsw i64 0, %342
  store i64 %343, ptr %56, align 8, !tbaa !9
  %344 = call i32 @xerbla_(ptr noundef @.str.7, ptr noundef %56)
  store i32 0, ptr %25, align 4
  store i32 1, ptr %67, align 4
  br label %496

345:                                              ; preds = %336
  %346 = load i64, ptr %66, align 8, !tbaa !9
  %347 = icmp ne i64 %346, 0
  br i1 %347, label %348, label %349

348:                                              ; preds = %345
  store i32 0, ptr %25, align 4
  store i32 1, ptr %67, align 4
  br label %496

349:                                              ; preds = %345
  br label %350

350:                                              ; preds = %349
  %351 = load ptr, ptr %40, align 8, !tbaa !5
  store i64 0, ptr %351, align 8, !tbaa !9
  %352 = load ptr, ptr %30, align 8, !tbaa !5
  %353 = load i64, ptr %352, align 8, !tbaa !9
  %354 = icmp eq i64 %353, 0
  br i1 %354, label %355, label %356

355:                                              ; preds = %350
  store i32 0, ptr %25, align 4
  store i32 1, ptr %67, align 4
  br label %496

356:                                              ; preds = %350
  %357 = load ptr, ptr %29, align 8, !tbaa !5
  %358 = load ptr, ptr %30, align 8, !tbaa !5
  %359 = load ptr, ptr %33, align 8, !tbaa !5
  %360 = load i64, ptr %53, align 8, !tbaa !9
  %361 = getelementptr inbounds %struct.complex, ptr %359, i64 %360
  %362 = load ptr, ptr %34, align 8, !tbaa !5
  %363 = load ptr, ptr %49, align 8, !tbaa !5
  %364 = call i32 @cpotrf_(ptr noundef %357, ptr noundef %358, ptr noundef %361, ptr noundef %362, ptr noundef %363)
  %365 = load ptr, ptr %49, align 8, !tbaa !5
  %366 = load i64, ptr %365, align 8, !tbaa !9
  %367 = icmp ne i64 %366, 0
  br i1 %367, label %368, label %375

368:                                              ; preds = %356
  %369 = load ptr, ptr %30, align 8, !tbaa !5
  %370 = load i64, ptr %369, align 8, !tbaa !9
  %371 = load ptr, ptr %49, align 8, !tbaa !5
  %372 = load i64, ptr %371, align 8, !tbaa !9
  %373 = add nsw i64 %370, %372
  %374 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 %373, ptr %374, align 8, !tbaa !9
  store i32 0, ptr %25, align 4
  store i32 1, ptr %67, align 4
  br label %496

375:                                              ; preds = %356
  %376 = load ptr, ptr %26, align 8, !tbaa !5
  %377 = load ptr, ptr %29, align 8, !tbaa !5
  %378 = load ptr, ptr %30, align 8, !tbaa !5
  %379 = load ptr, ptr %31, align 8, !tbaa !5
  %380 = load i64, ptr %51, align 8, !tbaa !9
  %381 = getelementptr inbounds %struct.complex, ptr %379, i64 %380
  %382 = load ptr, ptr %32, align 8, !tbaa !5
  %383 = load ptr, ptr %33, align 8, !tbaa !5
  %384 = load i64, ptr %53, align 8, !tbaa !9
  %385 = getelementptr inbounds %struct.complex, ptr %383, i64 %384
  %386 = load ptr, ptr %34, align 8, !tbaa !5
  %387 = load ptr, ptr %49, align 8, !tbaa !5
  %388 = call i32 @chegst_(ptr noundef %376, ptr noundef %377, ptr noundef %378, ptr noundef %381, ptr noundef %382, ptr noundef %385, ptr noundef %386, ptr noundef %387)
  %389 = load ptr, ptr %27, align 8, !tbaa !5
  %390 = load ptr, ptr %28, align 8, !tbaa !5
  %391 = load ptr, ptr %29, align 8, !tbaa !5
  %392 = load ptr, ptr %30, align 8, !tbaa !5
  %393 = load ptr, ptr %31, align 8, !tbaa !5
  %394 = load i64, ptr %51, align 8, !tbaa !9
  %395 = getelementptr inbounds %struct.complex, ptr %393, i64 %394
  %396 = load ptr, ptr %32, align 8, !tbaa !5
  %397 = load ptr, ptr %35, align 8, !tbaa !5
  %398 = load ptr, ptr %36, align 8, !tbaa !5
  %399 = load ptr, ptr %37, align 8, !tbaa !5
  %400 = load ptr, ptr %38, align 8, !tbaa !5
  %401 = load ptr, ptr %39, align 8, !tbaa !5
  %402 = load ptr, ptr %40, align 8, !tbaa !5
  %403 = load ptr, ptr %41, align 8, !tbaa !5
  %404 = getelementptr inbounds float, ptr %403, i64 1
  %405 = load ptr, ptr %42, align 8, !tbaa !5
  %406 = load i64, ptr %55, align 8, !tbaa !9
  %407 = getelementptr inbounds %struct.complex, ptr %405, i64 %406
  %408 = load ptr, ptr %43, align 8, !tbaa !5
  %409 = load ptr, ptr %44, align 8, !tbaa !5
  %410 = getelementptr inbounds %struct.complex, ptr %409, i64 1
  %411 = load ptr, ptr %45, align 8, !tbaa !5
  %412 = load ptr, ptr %46, align 8, !tbaa !5
  %413 = getelementptr inbounds float, ptr %412, i64 1
  %414 = load ptr, ptr %47, align 8, !tbaa !5
  %415 = getelementptr inbounds i64, ptr %414, i64 1
  %416 = load ptr, ptr %48, align 8, !tbaa !5
  %417 = getelementptr inbounds i64, ptr %416, i64 1
  %418 = load ptr, ptr %49, align 8, !tbaa !5
  %419 = call i32 @cheevx_(ptr noundef %389, ptr noundef %390, ptr noundef %391, ptr noundef %392, ptr noundef %395, ptr noundef %396, ptr noundef %397, ptr noundef %398, ptr noundef %399, ptr noundef %400, ptr noundef %401, ptr noundef %402, ptr noundef %404, ptr noundef %407, ptr noundef %408, ptr noundef %410, ptr noundef %411, ptr noundef %413, ptr noundef %415, ptr noundef %417, ptr noundef %418)
  %420 = load i64, ptr %61, align 8, !tbaa !9
  %421 = icmp ne i64 %420, 0
  br i1 %421, label %422, label %487

422:                                              ; preds = %375
  %423 = load ptr, ptr %49, align 8, !tbaa !5
  %424 = load i64, ptr %423, align 8, !tbaa !9
  %425 = icmp sgt i64 %424, 0
  br i1 %425, label %426, label %431

426:                                              ; preds = %422
  %427 = load ptr, ptr %49, align 8, !tbaa !5
  %428 = load i64, ptr %427, align 8, !tbaa !9
  %429 = sub nsw i64 %428, 1
  %430 = load ptr, ptr %40, align 8, !tbaa !5
  store i64 %429, ptr %430, align 8, !tbaa !9
  br label %431

431:                                              ; preds = %426, %422
  %432 = load ptr, ptr %26, align 8, !tbaa !5
  %433 = load i64, ptr %432, align 8, !tbaa !9
  %434 = icmp eq i64 %433, 1
  br i1 %434, label %439, label %435

435:                                              ; preds = %431
  %436 = load ptr, ptr %26, align 8, !tbaa !5
  %437 = load i64, ptr %436, align 8, !tbaa !9
  %438 = icmp eq i64 %437, 2
  br i1 %438, label %439, label %460

439:                                              ; preds = %435, %431
  %440 = load i64, ptr %60, align 8, !tbaa !9
  %441 = icmp ne i64 %440, 0
  br i1 %441, label %442, label %444

442:                                              ; preds = %439
  %443 = getelementptr inbounds [1 x i8], ptr %59, i64 0, i64 0
  store i8 78, ptr %443, align 1, !tbaa !16
  br label %446

444:                                              ; preds = %439
  %445 = getelementptr inbounds [1 x i8], ptr %59, i64 0, i64 0
  store i8 67, ptr %445, align 1, !tbaa !16
  br label %446

446:                                              ; preds = %444, %442
  %447 = load ptr, ptr %29, align 8, !tbaa !5
  %448 = getelementptr inbounds [1 x i8], ptr %59, i64 0, i64 0
  %449 = load ptr, ptr %30, align 8, !tbaa !5
  %450 = load ptr, ptr %40, align 8, !tbaa !5
  %451 = load ptr, ptr %33, align 8, !tbaa !5
  %452 = load i64, ptr %53, align 8, !tbaa !9
  %453 = getelementptr inbounds %struct.complex, ptr %451, i64 %452
  %454 = load ptr, ptr %34, align 8, !tbaa !5
  %455 = load ptr, ptr %42, align 8, !tbaa !5
  %456 = load i64, ptr %55, align 8, !tbaa !9
  %457 = getelementptr inbounds %struct.complex, ptr %455, i64 %456
  %458 = load ptr, ptr %43, align 8, !tbaa !5
  %459 = call i32 @f2c_ctrsm(ptr noundef @.str.8, ptr noundef %447, ptr noundef %448, ptr noundef @.str.9, ptr noundef %449, ptr noundef %450, ptr noundef @c_b1, ptr noundef %453, ptr noundef %454, ptr noundef %457, ptr noundef %458)
  br label %486

460:                                              ; preds = %435
  %461 = load ptr, ptr %26, align 8, !tbaa !5
  %462 = load i64, ptr %461, align 8, !tbaa !9
  %463 = icmp eq i64 %462, 3
  br i1 %463, label %464, label %485

464:                                              ; preds = %460
  %465 = load i64, ptr %60, align 8, !tbaa !9
  %466 = icmp ne i64 %465, 0
  br i1 %466, label %467, label %469

467:                                              ; preds = %464
  %468 = getelementptr inbounds [1 x i8], ptr %59, i64 0, i64 0
  store i8 67, ptr %468, align 1, !tbaa !16
  br label %471

469:                                              ; preds = %464
  %470 = getelementptr inbounds [1 x i8], ptr %59, i64 0, i64 0
  store i8 78, ptr %470, align 1, !tbaa !16
  br label %471

471:                                              ; preds = %469, %467
  %472 = load ptr, ptr %29, align 8, !tbaa !5
  %473 = getelementptr inbounds [1 x i8], ptr %59, i64 0, i64 0
  %474 = load ptr, ptr %30, align 8, !tbaa !5
  %475 = load ptr, ptr %40, align 8, !tbaa !5
  %476 = load ptr, ptr %33, align 8, !tbaa !5
  %477 = load i64, ptr %53, align 8, !tbaa !9
  %478 = getelementptr inbounds %struct.complex, ptr %476, i64 %477
  %479 = load ptr, ptr %34, align 8, !tbaa !5
  %480 = load ptr, ptr %42, align 8, !tbaa !5
  %481 = load i64, ptr %55, align 8, !tbaa !9
  %482 = getelementptr inbounds %struct.complex, ptr %480, i64 %481
  %483 = load ptr, ptr %43, align 8, !tbaa !5
  %484 = call i32 @f2c_ctrmm(ptr noundef @.str.8, ptr noundef %472, ptr noundef %473, ptr noundef @.str.9, ptr noundef %474, ptr noundef %475, ptr noundef @c_b1, ptr noundef %478, ptr noundef %479, ptr noundef %482, ptr noundef %483)
  br label %485

485:                                              ; preds = %471, %460
  br label %486

486:                                              ; preds = %485, %446
  br label %487

487:                                              ; preds = %486, %375
  %488 = load i64, ptr %65, align 8, !tbaa !9
  %489 = sitofp i64 %488 to float
  %490 = load ptr, ptr %44, align 8, !tbaa !5
  %491 = getelementptr inbounds %struct.complex, ptr %490, i64 1
  %492 = getelementptr inbounds %struct.complex, ptr %491, i32 0, i32 0
  store float %489, ptr %492, align 4, !tbaa !13
  %493 = load ptr, ptr %44, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct.complex, ptr %493, i64 1
  %495 = getelementptr inbounds %struct.complex, ptr %494, i32 0, i32 1
  store float 0.000000e+00, ptr %495, align 4, !tbaa !15
  store i32 0, ptr %25, align 4
  store i32 1, ptr %67, align 4
  br label %496

496:                                              ; preds = %487, %368, %355, %348, %340
  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 1, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  %497 = load i32, ptr %25, align 4
  ret i32 %497
}

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

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

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

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

declare i32 @cheevx_(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

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

declare i32 @f2c_ctrmm(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 = !{!14, !12, i64 0}
!14 = !{!"", !12, i64 0, !12, i64 4}
!15 = !{!14, !12, i64 4}
!16 = !{!7, !7, i64 0}


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

%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 [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 [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [9 x i8], align 1
@c_b1 = external hidden global %struct.complex, align 4

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @chegvx_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23) local_unnamed_addr #0 {
  %25 = alloca i64, align 8
  %26 = alloca [1 x i8], align 1
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #4
  %27 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #4
  %28 = tail call i64 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.1) #4
  %29 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #4
  %30 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str) #4
  %31 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.3) #4
  %32 = load i64, ptr %19, align 8, !tbaa !5
  %33 = icmp eq i64 %32, -1
  store i64 0, ptr %23, align 8, !tbaa !5
  %34 = load i64, ptr %0, align 8, !tbaa !5
  %35 = add i64 %34, -4
  %or.cond194 = icmp ult i64 %35, -3
  br i1 %or.cond194, label %.thread207.sink.split, label %36

36:                                               ; preds = %24
  %.not = icmp ne i64 %27, 0
  br i1 %.not, label %39, label %37

37:                                               ; preds = %36
  %38 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #4
  %.not183 = icmp eq i64 %38, 0
  br i1 %.not183, label %.thread207.sink.split, label %39

39:                                               ; preds = %37, %36
  %40 = icmp ne i64 %29, 0
  %41 = icmp ne i64 %30, 0
  %or.cond = select i1 %40, i1 true, i1 %41
  %42 = icmp ne i64 %31, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %42
  br i1 %or.cond3, label %43, label %.thread207.sink.split

43:                                               ; preds = %39
  %.not184 = icmp eq i64 %28, 0
  br i1 %.not184, label %44, label %46

44:                                               ; preds = %43
  %45 = tail call i64 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.5) #4
  %.not185 = icmp eq i64 %45, 0
  br i1 %.not185, label %.thread207.sink.split, label %46

46:                                               ; preds = %44, %43
  %47 = load i64, ptr %4, align 8, !tbaa !5
  %48 = icmp slt i64 %47, 0
  br i1 %48, label %.thread207.sink.split, label %49

49:                                               ; preds = %46
  %50 = load i64, ptr %6, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %47, i64 1)
  %51 = icmp slt i64 %50, %spec.select
  br i1 %51, label %.thread207.sink.split, label %52

52:                                               ; preds = %49
  %53 = load i64, ptr %8, align 8, !tbaa !5
  %54 = icmp slt i64 %53, %spec.select
  br i1 %54, label %.thread207.sink.split, label %55

55:                                               ; preds = %52
  br i1 %41, label %56, label %61

56:                                               ; preds = %55
  %.not216 = icmp eq i64 %47, 0
  br i1 %.not216, label %70, label %57

57:                                               ; preds = %56
  %58 = load float, ptr %10, align 4, !tbaa !9
  %59 = load float, ptr %9, align 4, !tbaa !9
  %60 = fcmp ugt float %58, %59
  br i1 %60, label %70, label %.thread207.sink.split

61:                                               ; preds = %55
  br i1 %42, label %62, label %70

62:                                               ; preds = %61
  %63 = load i64, ptr %11, align 8, !tbaa !5
  %64 = icmp slt i64 %63, 1
  %65 = icmp ugt i64 %63, %spec.select
  %or.cond214 = or i1 %64, %65
  br i1 %or.cond214, label %.thread207.sink.split, label %66

66:                                               ; preds = %62
  %67 = load i64, ptr %12, align 8, !tbaa !5
  %. = tail call i64 @llvm.umin.i64(i64 %47, i64 %63)
  %68 = icmp slt i64 %67, %.
  %69 = icmp ugt i64 %67, %47
  %or.cond215 = or i1 %68, %69
  br i1 %or.cond215, label %.thread207.sink.split, label %70

70:                                               ; preds = %66, %57, %56, %61
  %.pr = load i64, ptr %23, align 8, !tbaa !5
  %71 = icmp eq i64 %.pr, 0
  br i1 %71, label %72, label %.thread207

72:                                               ; preds = %70
  %73 = load i64, ptr %17, align 8, !tbaa !5
  %74 = icmp slt i64 %73, 1
  %75 = icmp ult i64 %73, %47
  %or.cond217 = and i1 %.not, %75
  %or.cond218 = or i1 %74, %or.cond217
  br i1 %or.cond218, label %.thread207.sink.split, label %.thread

.thread:                                          ; preds = %72
  %76 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.6, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #4
  %77 = add nsw i64 %76, 1
  %78 = load i64, ptr %4, align 8, !tbaa !5
  %79 = mul nsw i64 %78, %77
  %80 = tail call i64 @llvm.smax.i64(i64 %79, i64 1)
  %81 = uitofp nneg i64 %80 to float
  store float %81, ptr %18, align 4, !tbaa !11
  %82 = getelementptr inbounds i8, ptr %18, i64 4
  store float 0.000000e+00, ptr %82, align 4, !tbaa !13
  %83 = shl i64 %78, 1
  %84 = load i64, ptr %19, align 8, !tbaa !5
  %85 = tail call i64 @llvm.smax.i64(i64 %83, i64 1)
  %86 = icmp sge i64 %84, %85
  %or.cond5 = select i1 %86, i1 true, i1 %33
  br i1 %or.cond5, label %.thread202, label %.thread207.sink.split

.thread202:                                       ; preds = %.thread
  %.pr204.pr = load i64, ptr %23, align 8, !tbaa !5
  %.not188 = icmp eq i64 %.pr204.pr, 0
  br i1 %.not188, label %90, label %.thread207

.thread207.sink.split:                            ; preds = %.thread, %72, %66, %62, %57, %52, %49, %46, %44, %39, %37, %24
  %.sink = phi i64 [ -1, %24 ], [ -2, %37 ], [ -3, %39 ], [ -4, %44 ], [ -5, %46 ], [ -7, %49 ], [ -9, %52 ], [ -11, %57 ], [ -12, %62 ], [ -13, %66 ], [ -18, %72 ], [ -20, %.thread ]
  store i64 %.sink, ptr %23, align 8, !tbaa !5
  br label %.thread207

.thread207:                                       ; preds = %.thread207.sink.split, %70, %.thread202
  %87 = phi i64 [ %.pr204.pr, %.thread202 ], [ %.pr, %70 ], [ %.sink, %.thread207.sink.split ]
  %88 = sub nsw i64 0, %87
  store i64 %88, ptr %25, align 8, !tbaa !5
  %89 = call i32 @xerbla_(ptr noundef nonnull @.str.7, ptr noundef nonnull %25) #4
  br label %115

90:                                               ; preds = %.thread202
  br i1 %33, label %115, label %91

91:                                               ; preds = %90
  store i64 0, ptr %14, align 8, !tbaa !5
  %92 = load i64, ptr %4, align 8, !tbaa !5
  %93 = icmp eq i64 %92, 0
  br i1 %93, label %115, label %94

94:                                               ; preds = %91
  %95 = tail call i32 @cpotrf_(ptr noundef %3, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %23) #4
  %96 = load i64, ptr %23, align 8, !tbaa !5
  %.not189 = icmp eq i64 %96, 0
  br i1 %.not189, label %100, label %97

97:                                               ; preds = %94
  %98 = load i64, ptr %4, align 8, !tbaa !5
  %99 = add nsw i64 %98, %96
  store i64 %99, ptr %23, align 8, !tbaa !5
  br label %115

100:                                              ; preds = %94
  %101 = tail call i32 @chegst_(ptr noundef nonnull %0, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %23) #4
  %102 = tail call i32 @cheevx_(ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %15, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef nonnull %23) #4
  br i1 %.not, label %103, label %114

103:                                              ; preds = %100
  %104 = load i64, ptr %23, align 8, !tbaa !5
  %105 = icmp sgt i64 %104, 0
  br i1 %105, label %106, label %108

106:                                              ; preds = %103
  %107 = add nsw i64 %104, -1
  store i64 %107, ptr %14, align 8, !tbaa !5
  br label %108

108:                                              ; preds = %106, %103
  %109 = load i64, ptr %0, align 8, !tbaa !5
  switch i64 %109, label %114 [
    i64 1, label %110
    i64 2, label %110
    i64 3, label %112
  ]

110:                                              ; preds = %108, %108
  %.197 = select i1 %.not184, i8 67, i8 78
  store i8 %.197, ptr %26, align 1, !tbaa !14
  %111 = call i32 @f2c_ctrsm(ptr noundef nonnull @.str.8, ptr noundef %3, ptr noundef nonnull %26, ptr noundef nonnull @.str.9, ptr noundef nonnull %4, ptr noundef nonnull %14, ptr noundef nonnull @c_b1, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %16, ptr noundef nonnull %17) #4
  br label %114

112:                                              ; preds = %108
  %.198 = select i1 %.not184, i8 78, i8 67
  store i8 %.198, ptr %26, align 1, !tbaa !14
  %113 = call i32 @f2c_ctrmm(ptr noundef nonnull @.str.8, ptr noundef %3, ptr noundef nonnull %26, ptr noundef nonnull @.str.9, ptr noundef nonnull %4, ptr noundef nonnull %14, ptr noundef nonnull @c_b1, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %16, ptr noundef nonnull %17) #4
  br label %114

114:                                              ; preds = %108, %110, %112, %100
  store float %81, ptr %18, align 4, !tbaa !11
  store float 0.000000e+00, ptr %82, align 4, !tbaa !13
  br label %115

115:                                              ; preds = %91, %90, %114, %97, %.thread207
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #4
  ret i32 0
}

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

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

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

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

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

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

declare i32 @cheevx_(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

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

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

; 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.umin.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 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = !{!12, !10, i64 0}
!12 = !{!"", !10, i64 0, !10, i64 4}
!13 = !{!12, !10, i64 4}
!14 = !{!7, !7, i64 0}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass