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

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

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

142:                                              ; preds = %23
  %143 = load ptr, ptr %25, align 8, !tbaa !5
  %144 = call i64 @lsame_(ptr noundef %143, ptr noundef @.str.4)
  %145 = icmp ne i64 %144, 0
  br i1 %145, label %148, label %146

146:                                              ; preds = %142
  %147 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -1, ptr %147, align 8, !tbaa !9
  br label %280

148:                                              ; preds = %142, %23
  %149 = load i64, ptr %80, align 8, !tbaa !9
  %150 = icmp ne i64 %149, 0
  br i1 %150, label %159, label %151

151:                                              ; preds = %148
  %152 = load i64, ptr %84, align 8, !tbaa !9
  %153 = icmp ne i64 %152, 0
  br i1 %153, label %159, label %154

154:                                              ; preds = %151
  %155 = load i64, ptr %81, align 8, !tbaa !9
  %156 = icmp ne i64 %155, 0
  br i1 %156, label %159, label %157

157:                                              ; preds = %154
  %158 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -2, ptr %158, align 8, !tbaa !9
  br label %279

159:                                              ; preds = %154, %151, %148
  %160 = load i64, ptr %78, align 8, !tbaa !9
  %161 = icmp ne i64 %160, 0
  br i1 %161, label %168, label %162

162:                                              ; preds = %159
  %163 = load ptr, ptr %27, align 8, !tbaa !5
  %164 = call i64 @lsame_(ptr noundef %163, ptr noundef @.str.5)
  %165 = icmp ne i64 %164, 0
  br i1 %165, label %168, label %166

166:                                              ; preds = %162
  %167 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -3, ptr %167, align 8, !tbaa !9
  br label %278

168:                                              ; preds = %162, %159
  %169 = load ptr, ptr %28, align 8, !tbaa !5
  %170 = load i64, ptr %169, align 8, !tbaa !9
  %171 = icmp slt i64 %170, 0
  br i1 %171, label %172, label %174

172:                                              ; preds = %168
  %173 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -4, ptr %173, align 8, !tbaa !9
  br label %277

174:                                              ; preds = %168
  %175 = load ptr, ptr %29, align 8, !tbaa !5
  %176 = load i64, ptr %175, align 8, !tbaa !9
  %177 = icmp slt i64 %176, 0
  br i1 %177, label %178, label %180

178:                                              ; preds = %174
  %179 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -5, ptr %179, align 8, !tbaa !9
  br label %276

180:                                              ; preds = %174
  %181 = load ptr, ptr %31, align 8, !tbaa !5
  %182 = load i64, ptr %181, align 8, !tbaa !9
  %183 = load ptr, ptr %29, align 8, !tbaa !5
  %184 = load i64, ptr %183, align 8, !tbaa !9
  %185 = add nsw i64 %184, 1
  %186 = icmp slt i64 %182, %185
  br i1 %186, label %187, label %189

187:                                              ; preds = %180
  %188 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -7, ptr %188, align 8, !tbaa !9
  br label %275

189:                                              ; preds = %180
  %190 = load i64, ptr %79, align 8, !tbaa !9
  %191 = icmp ne i64 %190, 0
  br i1 %191, label %192, label %207

192:                                              ; preds = %189
  %193 = load ptr, ptr %33, align 8, !tbaa !5
  %194 = load i64, ptr %193, align 8, !tbaa !9
  %195 = load ptr, ptr %28, align 8, !tbaa !5
  %196 = load i64, ptr %195, align 8, !tbaa !9
  %197 = icmp sge i64 1, %196
  br i1 %197, label %198, label %199

198:                                              ; preds = %192
  br label %202

199:                                              ; preds = %192
  %200 = load ptr, ptr %28, align 8, !tbaa !5
  %201 = load i64, ptr %200, align 8, !tbaa !9
  br label %202

202:                                              ; preds = %199, %198
  %203 = phi i64 [ 1, %198 ], [ %201, %199 ]
  %204 = icmp slt i64 %194, %203
  br i1 %204, label %205, label %207

205:                                              ; preds = %202
  %206 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -9, ptr %206, align 8, !tbaa !9
  br label %274

207:                                              ; preds = %202, %189
  %208 = load i64, ptr %84, align 8, !tbaa !9
  %209 = icmp ne i64 %208, 0
  br i1 %209, label %210, label %223

210:                                              ; preds = %207
  %211 = load ptr, ptr %28, align 8, !tbaa !5
  %212 = load i64, ptr %211, align 8, !tbaa !9
  %213 = icmp sgt i64 %212, 0
  br i1 %213, label %214, label %222

214:                                              ; preds = %210
  %215 = load ptr, ptr %35, align 8, !tbaa !5
  %216 = load float, ptr %215, align 4, !tbaa !11
  %217 = load ptr, ptr %34, align 8, !tbaa !5
  %218 = load float, ptr %217, align 4, !tbaa !11
  %219 = fcmp ole float %216, %218
  br i1 %219, label %220, label %222

220:                                              ; preds = %214
  %221 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -11, ptr %221, align 8, !tbaa !9
  br label %222

222:                                              ; preds = %220, %214, %210
  br label %273

223:                                              ; preds = %207
  %224 = load i64, ptr %81, align 8, !tbaa !9
  %225 = icmp ne i64 %224, 0
  br i1 %225, label %226, label %272

226:                                              ; preds = %223
  %227 = load ptr, ptr %36, align 8, !tbaa !5
  %228 = load i64, ptr %227, align 8, !tbaa !9
  %229 = icmp slt i64 %228, 1
  br i1 %229, label %243, label %230

230:                                              ; preds = %226
  %231 = load ptr, ptr %36, align 8, !tbaa !5
  %232 = load i64, ptr %231, align 8, !tbaa !9
  %233 = load ptr, ptr %28, align 8, !tbaa !5
  %234 = load i64, ptr %233, align 8, !tbaa !9
  %235 = icmp sge i64 1, %234
  br i1 %235, label %236, label %237

236:                                              ; preds = %230
  br label %240

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

240:                                              ; preds = %237, %236
  %241 = phi i64 [ 1, %236 ], [ %239, %237 ]
  %242 = icmp sgt i64 %232, %241
  br i1 %242, label %243, label %245

243:                                              ; preds = %240, %226
  %244 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -12, ptr %244, align 8, !tbaa !9
  br label %271

245:                                              ; preds = %240
  %246 = load ptr, ptr %37, align 8, !tbaa !5
  %247 = load i64, ptr %246, align 8, !tbaa !9
  %248 = load ptr, ptr %28, align 8, !tbaa !5
  %249 = load i64, ptr %248, align 8, !tbaa !9
  %250 = load ptr, ptr %36, align 8, !tbaa !5
  %251 = load i64, ptr %250, align 8, !tbaa !9
  %252 = icmp sle i64 %249, %251
  br i1 %252, label %253, label %256

253:                                              ; preds = %245
  %254 = load ptr, ptr %28, align 8, !tbaa !5
  %255 = load i64, ptr %254, align 8, !tbaa !9
  br label %259

256:                                              ; preds = %245
  %257 = load ptr, ptr %36, align 8, !tbaa !5
  %258 = load i64, ptr %257, align 8, !tbaa !9
  br label %259

259:                                              ; preds = %256, %253
  %260 = phi i64 [ %255, %253 ], [ %258, %256 ]
  %261 = icmp slt i64 %247, %260
  br i1 %261, label %268, label %262

262:                                              ; preds = %259
  %263 = load ptr, ptr %37, align 8, !tbaa !5
  %264 = load i64, ptr %263, align 8, !tbaa !9
  %265 = load ptr, ptr %28, align 8, !tbaa !5
  %266 = load i64, ptr %265, align 8, !tbaa !9
  %267 = icmp sgt i64 %264, %266
  br i1 %267, label %268, label %270

268:                                              ; preds = %262, %259
  %269 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -13, ptr %269, align 8, !tbaa !9
  br label %270

270:                                              ; preds = %268, %262
  br label %271

271:                                              ; preds = %270, %243
  br label %272

272:                                              ; preds = %271, %223
  br label %273

273:                                              ; preds = %272, %222
  br label %274

274:                                              ; preds = %273, %205
  br label %275

275:                                              ; preds = %274, %187
  br label %276

276:                                              ; preds = %275, %178
  br label %277

277:                                              ; preds = %276, %172
  br label %278

278:                                              ; preds = %277, %166
  br label %279

279:                                              ; preds = %278, %157
  br label %280

280:                                              ; preds = %279, %146
  %281 = load ptr, ptr %47, align 8, !tbaa !5
  %282 = load i64, ptr %281, align 8, !tbaa !9
  %283 = icmp eq i64 %282, 0
  br i1 %283, label %284, label %300

284:                                              ; preds = %280
  %285 = load ptr, ptr %42, align 8, !tbaa !5
  %286 = load i64, ptr %285, align 8, !tbaa !9
  %287 = icmp slt i64 %286, 1
  br i1 %287, label %297, label %288

288:                                              ; preds = %284
  %289 = load i64, ptr %79, align 8, !tbaa !9
  %290 = icmp ne i64 %289, 0
  br i1 %290, label %291, label %299

291:                                              ; preds = %288
  %292 = load ptr, ptr %42, align 8, !tbaa !5
  %293 = load i64, ptr %292, align 8, !tbaa !9
  %294 = load ptr, ptr %28, align 8, !tbaa !5
  %295 = load i64, ptr %294, align 8, !tbaa !9
  %296 = icmp slt i64 %293, %295
  br i1 %296, label %297, label %299

297:                                              ; preds = %291, %284
  %298 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -18, ptr %298, align 8, !tbaa !9
  br label %299

299:                                              ; preds = %297, %291, %288
  br label %300

300:                                              ; preds = %299, %280
  %301 = load ptr, ptr %47, align 8, !tbaa !5
  %302 = load i64, ptr %301, align 8, !tbaa !9
  %303 = icmp ne i64 %302, 0
  br i1 %303, label %304, label %309

304:                                              ; preds = %300
  %305 = load ptr, ptr %47, align 8, !tbaa !5
  %306 = load i64, ptr %305, align 8, !tbaa !9
  %307 = sub nsw i64 0, %306
  store i64 %307, ptr %54, align 8, !tbaa !9
  %308 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %54)
  store i32 0, ptr %24, align 4
  store i32 1, ptr %94, align 4
  br label %937

309:                                              ; preds = %300
  %310 = load ptr, ptr %39, align 8, !tbaa !5
  store i64 0, ptr %310, align 8, !tbaa !9
  %311 = load ptr, ptr %28, align 8, !tbaa !5
  %312 = load i64, ptr %311, align 8, !tbaa !9
  %313 = icmp eq i64 %312, 0
  br i1 %313, label %314, label %315

314:                                              ; preds = %309
  store i32 0, ptr %24, align 4
  store i32 1, ptr %94, align 4
  br label %937

315:                                              ; preds = %309
  %316 = load ptr, ptr %28, align 8, !tbaa !5
  %317 = load i64, ptr %316, align 8, !tbaa !9
  %318 = icmp eq i64 %317, 1
  br i1 %318, label %319, label %398

319:                                              ; preds = %315
  %320 = load ptr, ptr %39, align 8, !tbaa !5
  store i64 1, ptr %320, align 8, !tbaa !9
  %321 = load i64, ptr %78, align 8, !tbaa !9
  %322 = icmp ne i64 %321, 0
  br i1 %322, label %323, label %338

323:                                              ; preds = %319
  %324 = load i64, ptr %48, align 8, !tbaa !9
  %325 = add nsw i64 %324, 1
  store i64 %325, ptr %54, align 8, !tbaa !9
  %326 = load ptr, ptr %30, align 8, !tbaa !5
  %327 = load i64, ptr %54, align 8, !tbaa !9
  %328 = getelementptr inbounds %struct.complex, ptr %326, i64 %327
  %329 = getelementptr inbounds %struct.complex, ptr %328, i32 0, i32 0
  %330 = load float, ptr %329, align 4, !tbaa !13
  %331 = getelementptr inbounds %struct.complex, ptr %72, i32 0, i32 0
  store float %330, ptr %331, align 4, !tbaa !13
  %332 = load ptr, ptr %30, align 8, !tbaa !5
  %333 = load i64, ptr %54, align 8, !tbaa !9
  %334 = getelementptr inbounds %struct.complex, ptr %332, i64 %333
  %335 = getelementptr inbounds %struct.complex, ptr %334, i32 0, i32 1
  %336 = load float, ptr %335, align 4, !tbaa !15
  %337 = getelementptr inbounds %struct.complex, ptr %72, i32 0, i32 1
  store float %336, ptr %337, align 4, !tbaa !15
  br label %356

338:                                              ; preds = %319
  %339 = load ptr, ptr %29, align 8, !tbaa !5
  %340 = load i64, ptr %339, align 8, !tbaa !9
  %341 = add nsw i64 %340, 1
  %342 = load i64, ptr %48, align 8, !tbaa !9
  %343 = add nsw i64 %341, %342
  store i64 %343, ptr %54, align 8, !tbaa !9
  %344 = load ptr, ptr %30, align 8, !tbaa !5
  %345 = load i64, ptr %54, align 8, !tbaa !9
  %346 = getelementptr inbounds %struct.complex, ptr %344, i64 %345
  %347 = getelementptr inbounds %struct.complex, ptr %346, i32 0, i32 0
  %348 = load float, ptr %347, align 4, !tbaa !13
  %349 = getelementptr inbounds %struct.complex, ptr %72, i32 0, i32 0
  store float %348, ptr %349, align 4, !tbaa !13
  %350 = load ptr, ptr %30, align 8, !tbaa !5
  %351 = load i64, ptr %54, align 8, !tbaa !9
  %352 = getelementptr inbounds %struct.complex, ptr %350, i64 %351
  %353 = getelementptr inbounds %struct.complex, ptr %352, i32 0, i32 1
  %354 = load float, ptr %353, align 4, !tbaa !15
  %355 = getelementptr inbounds %struct.complex, ptr %72, i32 0, i32 1
  store float %354, ptr %355, align 4, !tbaa !15
  br label %356

356:                                              ; preds = %338, %323
  %357 = getelementptr inbounds %struct.complex, ptr %72, i32 0, i32 0
  %358 = load float, ptr %357, align 4, !tbaa !13
  store float %358, ptr %64, align 4, !tbaa !11
  %359 = load i64, ptr %84, align 8, !tbaa !9
  %360 = icmp ne i64 %359, 0
  br i1 %360, label %361, label %374

361:                                              ; preds = %356
  %362 = load ptr, ptr %34, align 8, !tbaa !5
  %363 = load float, ptr %362, align 4, !tbaa !11
  %364 = load float, ptr %64, align 4, !tbaa !11
  %365 = fcmp olt float %363, %364
  br i1 %365, label %366, label %371

366:                                              ; preds = %361
  %367 = load ptr, ptr %35, align 8, !tbaa !5
  %368 = load float, ptr %367, align 4, !tbaa !11
  %369 = load float, ptr %64, align 4, !tbaa !11
  %370 = fcmp oge float %368, %369
  br i1 %370, label %373, label %371

371:                                              ; preds = %366, %361
  %372 = load ptr, ptr %39, align 8, !tbaa !5
  store i64 0, ptr %372, align 8, !tbaa !9
  br label %373

373:                                              ; preds = %371, %366
  br label %374

374:                                              ; preds = %373, %356
  %375 = load ptr, ptr %39, align 8, !tbaa !5
  %376 = load i64, ptr %375, align 8, !tbaa !9
  %377 = icmp eq i64 %376, 1
  br i1 %377, label %378, label %397

378:                                              ; preds = %374
  %379 = getelementptr inbounds %struct.complex, ptr %72, i32 0, i32 0
  %380 = load float, ptr %379, align 4, !tbaa !13
  %381 = load ptr, ptr %40, align 8, !tbaa !5
  %382 = getelementptr inbounds float, ptr %381, i64 1
  store float %380, ptr %382, align 4, !tbaa !11
  %383 = load i64, ptr %79, align 8, !tbaa !9
  %384 = icmp ne i64 %383, 0
  br i1 %384, label %385, label %396

385:                                              ; preds = %378
  %386 = load i64, ptr %52, align 8, !tbaa !9
  %387 = add nsw i64 %386, 1
  store i64 %387, ptr %54, align 8, !tbaa !9
  %388 = load ptr, ptr %41, align 8, !tbaa !5
  %389 = load i64, ptr %54, align 8, !tbaa !9
  %390 = getelementptr inbounds %struct.complex, ptr %388, i64 %389
  %391 = getelementptr inbounds %struct.complex, ptr %390, i32 0, i32 0
  store float 1.000000e+00, ptr %391, align 4, !tbaa !13
  %392 = load ptr, ptr %41, align 8, !tbaa !5
  %393 = load i64, ptr %54, align 8, !tbaa !9
  %394 = getelementptr inbounds %struct.complex, ptr %392, i64 %393
  %395 = getelementptr inbounds %struct.complex, ptr %394, i32 0, i32 1
  store float 0.000000e+00, ptr %395, align 4, !tbaa !15
  br label %396

396:                                              ; preds = %385, %378
  br label %397

397:                                              ; preds = %396, %374
  store i32 0, ptr %24, align 4
  store i32 1, ptr %94, align 4
  br label %937

398:                                              ; preds = %315
  %399 = call double @slamch_(ptr noundef @.str.7)
  %400 = fptrunc double %399 to float
  store float %400, ptr %85, align 4, !tbaa !11
  %401 = call double @slamch_(ptr noundef @.str.8)
  %402 = fptrunc double %401 to float
  store float %402, ptr %61, align 4, !tbaa !11
  %403 = load float, ptr %85, align 4, !tbaa !11
  %404 = load float, ptr %61, align 4, !tbaa !11
  %405 = fdiv float %403, %404
  store float %405, ptr %93, align 4, !tbaa !11
  %406 = load float, ptr %93, align 4, !tbaa !11
  %407 = fdiv float 1.000000e+00, %406
  store float %407, ptr %87, align 4, !tbaa !11
  %408 = load float, ptr %93, align 4, !tbaa !11
  %409 = fpext float %408 to double
  %410 = call double @sqrt(double noundef %409) #4
  %411 = fptrunc double %410 to float
  store float %411, ptr %69, align 4, !tbaa !11
  %412 = load float, ptr %87, align 4, !tbaa !11
  %413 = fpext float %412 to double
  %414 = call double @sqrt(double noundef %413) #4
  %415 = fptrunc double %414 to float
  store float %415, ptr %56, align 4, !tbaa !11
  %416 = load float, ptr %85, align 4, !tbaa !11
  %417 = fpext float %416 to double
  %418 = call double @sqrt(double noundef %417) #4
  %419 = call double @sqrt(double noundef %418) #4
  %420 = fdiv double 1.000000e+00, %419
  %421 = fptrunc double %420 to float
  store float %421, ptr %57, align 4, !tbaa !11
  %422 = load float, ptr %56, align 4, !tbaa !11
  %423 = load float, ptr %57, align 4, !tbaa !11
  %424 = fcmp ole float %422, %423
  br i1 %424, label %425, label %427

425:                                              ; preds = %398
  %426 = load float, ptr %56, align 4, !tbaa !11
  br label %429

427:                                              ; preds = %398
  %428 = load float, ptr %57, align 4, !tbaa !11
  br label %429

429:                                              ; preds = %427, %425
  %430 = phi float [ %426, %425 ], [ %428, %427 ]
  %431 = fpext float %430 to double
  %432 = fptrunc double %431 to float
  store float %432, ptr %70, align 4, !tbaa !11
  store i64 0, ptr %82, align 8, !tbaa !9
  %433 = load ptr, ptr %38, align 8, !tbaa !5
  %434 = load float, ptr %433, align 4, !tbaa !11
  store float %434, ptr %86, align 4, !tbaa !11
  %435 = load i64, ptr %84, align 8, !tbaa !9
  %436 = icmp ne i64 %435, 0
  br i1 %436, label %437, label %442

437:                                              ; preds = %429
  %438 = load ptr, ptr %34, align 8, !tbaa !5
  %439 = load float, ptr %438, align 4, !tbaa !11
  store float %439, ptr %62, align 4, !tbaa !11
  %440 = load ptr, ptr %35, align 8, !tbaa !5
  %441 = load float, ptr %440, align 4, !tbaa !11
  store float %441, ptr %63, align 4, !tbaa !11
  br label %443

442:                                              ; preds = %429
  store float 0.000000e+00, ptr %62, align 4, !tbaa !11
  store float 0.000000e+00, ptr %63, align 4, !tbaa !11
  br label %443

443:                                              ; preds = %442, %437
  %444 = load ptr, ptr %27, align 8, !tbaa !5
  %445 = load ptr, ptr %28, align 8, !tbaa !5
  %446 = load ptr, ptr %29, align 8, !tbaa !5
  %447 = load ptr, ptr %30, align 8, !tbaa !5
  %448 = load i64, ptr %49, align 8, !tbaa !9
  %449 = getelementptr inbounds %struct.complex, ptr %447, i64 %448
  %450 = load ptr, ptr %31, align 8, !tbaa !5
  %451 = load ptr, ptr %44, align 8, !tbaa !5
  %452 = getelementptr inbounds float, ptr %451, i64 1
  %453 = call double @clanhb_(ptr noundef @.str.9, ptr noundef %444, ptr noundef %445, ptr noundef %446, ptr noundef %449, ptr noundef %450, ptr noundef %452)
  %454 = fptrunc double %453 to float
  store float %454, ptr %67, align 4, !tbaa !11
  %455 = load float, ptr %67, align 4, !tbaa !11
  %456 = fcmp ogt float %455, 0.000000e+00
  br i1 %456, label %457, label %465

457:                                              ; preds = %443
  %458 = load float, ptr %67, align 4, !tbaa !11
  %459 = load float, ptr %69, align 4, !tbaa !11
  %460 = fcmp olt float %458, %459
  br i1 %460, label %461, label %465

461:                                              ; preds = %457
  store i64 1, ptr %82, align 8, !tbaa !9
  %462 = load float, ptr %69, align 4, !tbaa !11
  %463 = load float, ptr %67, align 4, !tbaa !11
  %464 = fdiv float %462, %463
  store float %464, ptr %75, align 4, !tbaa !11
  br label %474

465:                                              ; preds = %457, %443
  %466 = load float, ptr %67, align 4, !tbaa !11
  %467 = load float, ptr %70, align 4, !tbaa !11
  %468 = fcmp ogt float %466, %467
  br i1 %468, label %469, label %473

469:                                              ; preds = %465
  store i64 1, ptr %82, align 8, !tbaa !9
  %470 = load float, ptr %70, align 4, !tbaa !11
  %471 = load float, ptr %67, align 4, !tbaa !11
  %472 = fdiv float %470, %471
  store float %472, ptr %75, align 4, !tbaa !11
  br label %473

473:                                              ; preds = %469, %465
  br label %474

474:                                              ; preds = %473, %461
  %475 = load i64, ptr %82, align 8, !tbaa !9
  %476 = icmp eq i64 %475, 1
  br i1 %476, label %477, label %524

477:                                              ; preds = %474
  %478 = load i64, ptr %78, align 8, !tbaa !9
  %479 = icmp ne i64 %478, 0
  br i1 %479, label %480, label %491

480:                                              ; preds = %477
  %481 = load ptr, ptr %29, align 8, !tbaa !5
  %482 = load ptr, ptr %29, align 8, !tbaa !5
  %483 = load ptr, ptr %28, align 8, !tbaa !5
  %484 = load ptr, ptr %28, align 8, !tbaa !5
  %485 = load ptr, ptr %30, align 8, !tbaa !5
  %486 = load i64, ptr %49, align 8, !tbaa !9
  %487 = getelementptr inbounds %struct.complex, ptr %485, i64 %486
  %488 = load ptr, ptr %31, align 8, !tbaa !5
  %489 = load ptr, ptr %47, align 8, !tbaa !5
  %490 = call i32 @clascl_(ptr noundef @.str.10, ptr noundef %481, ptr noundef %482, ptr noundef @c_b16, ptr noundef %75, ptr noundef %483, ptr noundef %484, ptr noundef %487, ptr noundef %488, ptr noundef %489)
  br label %502

491:                                              ; preds = %477
  %492 = load ptr, ptr %29, align 8, !tbaa !5
  %493 = load ptr, ptr %29, align 8, !tbaa !5
  %494 = load ptr, ptr %28, align 8, !tbaa !5
  %495 = load ptr, ptr %28, align 8, !tbaa !5
  %496 = load ptr, ptr %30, align 8, !tbaa !5
  %497 = load i64, ptr %49, align 8, !tbaa !9
  %498 = getelementptr inbounds %struct.complex, ptr %496, i64 %497
  %499 = load ptr, ptr %31, align 8, !tbaa !5
  %500 = load ptr, ptr %47, align 8, !tbaa !5
  %501 = call i32 @clascl_(ptr noundef @.str.11, ptr noundef %492, ptr noundef %493, ptr noundef @c_b16, ptr noundef %75, ptr noundef %494, ptr noundef %495, ptr noundef %498, ptr noundef %499, ptr noundef %500)
  br label %502

502:                                              ; preds = %491, %480
  %503 = load ptr, ptr %38, align 8, !tbaa !5
  %504 = load float, ptr %503, align 4, !tbaa !11
  %505 = fcmp ogt float %504, 0.000000e+00
  br i1 %505, label %506, label %511

506:                                              ; preds = %502
  %507 = load ptr, ptr %38, align 8, !tbaa !5
  %508 = load float, ptr %507, align 4, !tbaa !11
  %509 = load float, ptr %75, align 4, !tbaa !11
  %510 = fmul float %508, %509
  store float %510, ptr %86, align 4, !tbaa !11
  br label %511

511:                                              ; preds = %506, %502
  %512 = load i64, ptr %84, align 8, !tbaa !9
  %513 = icmp ne i64 %512, 0
  br i1 %513, label %514, label %523

514:                                              ; preds = %511
  %515 = load ptr, ptr %34, align 8, !tbaa !5
  %516 = load float, ptr %515, align 4, !tbaa !11
  %517 = load float, ptr %75, align 4, !tbaa !11
  %518 = fmul float %516, %517
  store float %518, ptr %62, align 4, !tbaa !11
  %519 = load ptr, ptr %35, align 8, !tbaa !5
  %520 = load float, ptr %519, align 4, !tbaa !11
  %521 = load float, ptr %75, align 4, !tbaa !11
  %522 = fmul float %520, %521
  store float %522, ptr %63, align 4, !tbaa !11
  br label %523

523:                                              ; preds = %514, %511
  br label %524

524:                                              ; preds = %523, %474
  store i64 1, ptr %65, align 8, !tbaa !9
  %525 = load i64, ptr %65, align 8, !tbaa !9
  %526 = load ptr, ptr %28, align 8, !tbaa !5
  %527 = load i64, ptr %526, align 8, !tbaa !9
  %528 = add nsw i64 %525, %527
  store i64 %528, ptr %66, align 8, !tbaa !9
  %529 = load i64, ptr %66, align 8, !tbaa !9
  %530 = load ptr, ptr %28, align 8, !tbaa !5
  %531 = load i64, ptr %530, align 8, !tbaa !9
  %532 = add nsw i64 %529, %531
  store i64 %532, ptr %90, align 8, !tbaa !9
  store i64 1, ptr %91, align 8, !tbaa !9
  %533 = load ptr, ptr %25, align 8, !tbaa !5
  %534 = load ptr, ptr %27, align 8, !tbaa !5
  %535 = load ptr, ptr %28, align 8, !tbaa !5
  %536 = load ptr, ptr %29, align 8, !tbaa !5
  %537 = load ptr, ptr %30, align 8, !tbaa !5
  %538 = load i64, ptr %49, align 8, !tbaa !9
  %539 = getelementptr inbounds %struct.complex, ptr %537, i64 %538
  %540 = load ptr, ptr %31, align 8, !tbaa !5
  %541 = load ptr, ptr %44, align 8, !tbaa !5
  %542 = load i64, ptr %65, align 8, !tbaa !9
  %543 = getelementptr inbounds float, ptr %541, i64 %542
  %544 = load ptr, ptr %44, align 8, !tbaa !5
  %545 = load i64, ptr %66, align 8, !tbaa !9
  %546 = getelementptr inbounds float, ptr %544, i64 %545
  %547 = load ptr, ptr %32, align 8, !tbaa !5
  %548 = load i64, ptr %51, align 8, !tbaa !9
  %549 = getelementptr inbounds %struct.complex, ptr %547, i64 %548
  %550 = load ptr, ptr %33, align 8, !tbaa !5
  %551 = load ptr, ptr %43, align 8, !tbaa !5
  %552 = load i64, ptr %91, align 8, !tbaa !9
  %553 = getelementptr inbounds %struct.complex, ptr %551, i64 %552
  %554 = call i32 @chbtrd_(ptr noundef %533, ptr noundef %534, ptr noundef %535, ptr noundef %536, ptr noundef %539, ptr noundef %540, ptr noundef %543, ptr noundef %546, ptr noundef %549, ptr noundef %550, ptr noundef %553, ptr noundef %76)
  store i64 0, ptr %71, align 8, !tbaa !9
  %555 = load i64, ptr %81, align 8, !tbaa !9
  %556 = icmp ne i64 %555, 0
  br i1 %556, label %557, label %569

557:                                              ; preds = %524
  %558 = load ptr, ptr %36, align 8, !tbaa !5
  %559 = load i64, ptr %558, align 8, !tbaa !9
  %560 = icmp eq i64 %559, 1
  br i1 %560, label %561, label %568

561:                                              ; preds = %557
  %562 = load ptr, ptr %37, align 8, !tbaa !5
  %563 = load i64, ptr %562, align 8, !tbaa !9
  %564 = load ptr, ptr %28, align 8, !tbaa !5
  %565 = load i64, ptr %564, align 8, !tbaa !9
  %566 = icmp eq i64 %563, %565
  br i1 %566, label %567, label %568

567:                                              ; preds = %561
  store i64 1, ptr %71, align 8, !tbaa !9
  br label %568

568:                                              ; preds = %567, %561, %557
  br label %569

569:                                              ; preds = %568, %524
  %570 = load i64, ptr %80, align 8, !tbaa !9
  %571 = icmp ne i64 %570, 0
  br i1 %571, label %575, label %572

572:                                              ; preds = %569
  %573 = load i64, ptr %71, align 8, !tbaa !9
  %574 = icmp ne i64 %573, 0
  br i1 %574, label %575, label %680

575:                                              ; preds = %572, %569
  %576 = load ptr, ptr %38, align 8, !tbaa !5
  %577 = load float, ptr %576, align 4, !tbaa !11
  %578 = fcmp ole float %577, 0.000000e+00
  br i1 %578, label %579, label %680

579:                                              ; preds = %575
  %580 = load ptr, ptr %28, align 8, !tbaa !5
  %581 = load ptr, ptr %44, align 8, !tbaa !5
  %582 = load i64, ptr %65, align 8, !tbaa !9
  %583 = getelementptr inbounds float, ptr %581, i64 %582
  %584 = load ptr, ptr %40, align 8, !tbaa !5
  %585 = getelementptr inbounds float, ptr %584, i64 1
  %586 = call i32 @f2c_scopy(ptr noundef %580, ptr noundef %583, ptr noundef @c__1, ptr noundef %585, ptr noundef @c__1)
  %587 = load i64, ptr %90, align 8, !tbaa !9
  %588 = load ptr, ptr %28, align 8, !tbaa !5
  %589 = load i64, ptr %588, align 8, !tbaa !9
  %590 = shl i64 %589, 1
  %591 = add nsw i64 %587, %590
  store i64 %591, ptr %74, align 8, !tbaa !9
  %592 = load i64, ptr %79, align 8, !tbaa !9
  %593 = icmp ne i64 %592, 0
  br i1 %593, label %613, label %594

594:                                              ; preds = %579
  %595 = load ptr, ptr %28, align 8, !tbaa !5
  %596 = load i64, ptr %595, align 8, !tbaa !9
  %597 = sub nsw i64 %596, 1
  store i64 %597, ptr %54, align 8, !tbaa !9
  %598 = load ptr, ptr %44, align 8, !tbaa !5
  %599 = load i64, ptr %66, align 8, !tbaa !9
  %600 = getelementptr inbounds float, ptr %598, i64 %599
  %601 = load ptr, ptr %44, align 8, !tbaa !5
  %602 = load i64, ptr %74, align 8, !tbaa !9
  %603 = getelementptr inbounds float, ptr %601, i64 %602
  %604 = call i32 @f2c_scopy(ptr noundef %54, ptr noundef %600, ptr noundef @c__1, ptr noundef %603, ptr noundef @c__1)
  %605 = load ptr, ptr %28, align 8, !tbaa !5
  %606 = load ptr, ptr %40, align 8, !tbaa !5
  %607 = getelementptr inbounds float, ptr %606, i64 1
  %608 = load ptr, ptr %44, align 8, !tbaa !5
  %609 = load i64, ptr %74, align 8, !tbaa !9
  %610 = getelementptr inbounds float, ptr %608, i64 %609
  %611 = load ptr, ptr %47, align 8, !tbaa !5
  %612 = call i32 @ssterf_(ptr noundef %605, ptr noundef %607, ptr noundef %610, ptr noundef %611)
  br label %670

613:                                              ; preds = %579
  %614 = load ptr, ptr %28, align 8, !tbaa !5
  %615 = load ptr, ptr %28, align 8, !tbaa !5
  %616 = load ptr, ptr %32, align 8, !tbaa !5
  %617 = load i64, ptr %51, align 8, !tbaa !9
  %618 = getelementptr inbounds %struct.complex, ptr %616, i64 %617
  %619 = load ptr, ptr %33, align 8, !tbaa !5
  %620 = load ptr, ptr %41, align 8, !tbaa !5
  %621 = load i64, ptr %53, align 8, !tbaa !9
  %622 = getelementptr inbounds %struct.complex, ptr %620, i64 %621
  %623 = load ptr, ptr %42, align 8, !tbaa !5
  %624 = call i32 @clacpy_(ptr noundef @.str.1, ptr noundef %614, ptr noundef %615, ptr noundef %618, ptr noundef %619, ptr noundef %622, ptr noundef %623)
  %625 = load ptr, ptr %28, align 8, !tbaa !5
  %626 = load i64, ptr %625, align 8, !tbaa !9
  %627 = sub nsw i64 %626, 1
  store i64 %627, ptr %54, align 8, !tbaa !9
  %628 = load ptr, ptr %44, align 8, !tbaa !5
  %629 = load i64, ptr %66, align 8, !tbaa !9
  %630 = getelementptr inbounds float, ptr %628, i64 %629
  %631 = load ptr, ptr %44, align 8, !tbaa !5
  %632 = load i64, ptr %74, align 8, !tbaa !9
  %633 = getelementptr inbounds float, ptr %631, i64 %632
  %634 = call i32 @f2c_scopy(ptr noundef %54, ptr noundef %630, ptr noundef @c__1, ptr noundef %633, ptr noundef @c__1)
  %635 = load ptr, ptr %25, align 8, !tbaa !5
  %636 = load ptr, ptr %28, align 8, !tbaa !5
  %637 = load ptr, ptr %40, align 8, !tbaa !5
  %638 = getelementptr inbounds float, ptr %637, i64 1
  %639 = load ptr, ptr %44, align 8, !tbaa !5
  %640 = load i64, ptr %74, align 8, !tbaa !9
  %641 = getelementptr inbounds float, ptr %639, i64 %640
  %642 = load ptr, ptr %41, align 8, !tbaa !5
  %643 = load i64, ptr %53, align 8, !tbaa !9
  %644 = getelementptr inbounds %struct.complex, ptr %642, i64 %643
  %645 = load ptr, ptr %42, align 8, !tbaa !5
  %646 = load ptr, ptr %44, align 8, !tbaa !5
  %647 = load i64, ptr %90, align 8, !tbaa !9
  %648 = getelementptr inbounds float, ptr %646, i64 %647
  %649 = load ptr, ptr %47, align 8, !tbaa !5
  %650 = call i32 @csteqr_(ptr noundef %635, ptr noundef %636, ptr noundef %638, ptr noundef %641, ptr noundef %644, ptr noundef %645, ptr noundef %648, ptr noundef %649)
  %651 = load ptr, ptr %47, align 8, !tbaa !5
  %652 = load i64, ptr %651, align 8, !tbaa !9
  %653 = icmp eq i64 %652, 0
  br i1 %653, label %654, label %669

654:                                              ; preds = %613
  %655 = load ptr, ptr %28, align 8, !tbaa !5
  %656 = load i64, ptr %655, align 8, !tbaa !9
  store i64 %656, ptr %54, align 8, !tbaa !9
  store i64 1, ptr %58, align 8, !tbaa !9
  br label %657

657:                                              ; preds = %665, %654
  %658 = load i64, ptr %58, align 8, !tbaa !9
  %659 = load i64, ptr %54, align 8, !tbaa !9
  %660 = icmp sle i64 %658, %659
  br i1 %660, label %661, label %668

661:                                              ; preds = %657
  %662 = load ptr, ptr %46, align 8, !tbaa !5
  %663 = load i64, ptr %58, align 8, !tbaa !9
  %664 = getelementptr inbounds i64, ptr %662, i64 %663
  store i64 0, ptr %664, align 8, !tbaa !9
  br label %665

665:                                              ; preds = %661
  %666 = load i64, ptr %58, align 8, !tbaa !9
  %667 = add nsw i64 %666, 1
  store i64 %667, ptr %58, align 8, !tbaa !9
  br label %657, !llvm.loop !16

668:                                              ; preds = %657
  br label %669

669:                                              ; preds = %668, %613
  br label %670

670:                                              ; preds = %669, %594
  %671 = load ptr, ptr %47, align 8, !tbaa !5
  %672 = load i64, ptr %671, align 8, !tbaa !9
  %673 = icmp eq i64 %672, 0
  br i1 %673, label %674, label %678

674:                                              ; preds = %670
  %675 = load ptr, ptr %28, align 8, !tbaa !5
  %676 = load i64, ptr %675, align 8, !tbaa !9
  %677 = load ptr, ptr %39, align 8, !tbaa !5
  store i64 %676, ptr %677, align 8, !tbaa !9
  br label %794

678:                                              ; preds = %670
  %679 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 0, ptr %679, align 8, !tbaa !9
  br label %680

680:                                              ; preds = %678, %575, %572
  %681 = load i64, ptr %79, align 8, !tbaa !9
  %682 = icmp ne i64 %681, 0
  br i1 %682, label %683, label %685

683:                                              ; preds = %680
  %684 = getelementptr inbounds [1 x i8], ptr %77, i64 0, i64 0
  store i8 66, ptr %684, align 1, !tbaa !18
  br label %687

685:                                              ; preds = %680
  %686 = getelementptr inbounds [1 x i8], ptr %77, i64 0, i64 0
  store i8 69, ptr %686, align 1, !tbaa !18
  br label %687

687:                                              ; preds = %685, %683
  store i64 1, ptr %83, align 8, !tbaa !9
  %688 = load i64, ptr %83, align 8, !tbaa !9
  %689 = load ptr, ptr %28, align 8, !tbaa !5
  %690 = load i64, ptr %689, align 8, !tbaa !9
  %691 = add nsw i64 %688, %690
  store i64 %691, ptr %89, align 8, !tbaa !9
  %692 = load i64, ptr %89, align 8, !tbaa !9
  %693 = load ptr, ptr %28, align 8, !tbaa !5
  %694 = load i64, ptr %693, align 8, !tbaa !9
  %695 = add nsw i64 %692, %694
  store i64 %695, ptr %88, align 8, !tbaa !9
  %696 = load ptr, ptr %26, align 8, !tbaa !5
  %697 = getelementptr inbounds [1 x i8], ptr %77, i64 0, i64 0
  %698 = load ptr, ptr %28, align 8, !tbaa !5
  %699 = load ptr, ptr %36, align 8, !tbaa !5
  %700 = load ptr, ptr %37, align 8, !tbaa !5
  %701 = load ptr, ptr %44, align 8, !tbaa !5
  %702 = load i64, ptr %65, align 8, !tbaa !9
  %703 = getelementptr inbounds float, ptr %701, i64 %702
  %704 = load ptr, ptr %44, align 8, !tbaa !5
  %705 = load i64, ptr %66, align 8, !tbaa !9
  %706 = getelementptr inbounds float, ptr %704, i64 %705
  %707 = load ptr, ptr %39, align 8, !tbaa !5
  %708 = load ptr, ptr %40, align 8, !tbaa !5
  %709 = getelementptr inbounds float, ptr %708, i64 1
  %710 = load ptr, ptr %45, align 8, !tbaa !5
  %711 = load i64, ptr %83, align 8, !tbaa !9
  %712 = getelementptr inbounds i64, ptr %710, i64 %711
  %713 = load ptr, ptr %45, align 8, !tbaa !5
  %714 = load i64, ptr %89, align 8, !tbaa !9
  %715 = getelementptr inbounds i64, ptr %713, i64 %714
  %716 = load ptr, ptr %44, align 8, !tbaa !5
  %717 = load i64, ptr %90, align 8, !tbaa !9
  %718 = getelementptr inbounds float, ptr %716, i64 %717
  %719 = load ptr, ptr %45, align 8, !tbaa !5
  %720 = load i64, ptr %88, align 8, !tbaa !9
  %721 = getelementptr inbounds i64, ptr %719, i64 %720
  %722 = load ptr, ptr %47, align 8, !tbaa !5
  %723 = call i32 @sstebz_(ptr noundef %696, ptr noundef %697, ptr noundef %698, ptr noundef %62, ptr noundef %63, ptr noundef %699, ptr noundef %700, ptr noundef %86, ptr noundef %703, ptr noundef %706, ptr noundef %707, ptr noundef %92, ptr noundef %709, ptr noundef %712, ptr noundef %715, ptr noundef %718, ptr noundef %721, ptr noundef %722)
  %724 = load i64, ptr %79, align 8, !tbaa !9
  %725 = icmp ne i64 %724, 0
  br i1 %725, label %726, label %793

726:                                              ; preds = %687
  %727 = load ptr, ptr %28, align 8, !tbaa !5
  %728 = load ptr, ptr %44, align 8, !tbaa !5
  %729 = load i64, ptr %65, align 8, !tbaa !9
  %730 = getelementptr inbounds float, ptr %728, i64 %729
  %731 = load ptr, ptr %44, align 8, !tbaa !5
  %732 = load i64, ptr %66, align 8, !tbaa !9
  %733 = getelementptr inbounds float, ptr %731, i64 %732
  %734 = load ptr, ptr %39, align 8, !tbaa !5
  %735 = load ptr, ptr %40, align 8, !tbaa !5
  %736 = getelementptr inbounds float, ptr %735, i64 1
  %737 = load ptr, ptr %45, align 8, !tbaa !5
  %738 = load i64, ptr %83, align 8, !tbaa !9
  %739 = getelementptr inbounds i64, ptr %737, i64 %738
  %740 = load ptr, ptr %45, align 8, !tbaa !5
  %741 = load i64, ptr %89, align 8, !tbaa !9
  %742 = getelementptr inbounds i64, ptr %740, i64 %741
  %743 = load ptr, ptr %41, align 8, !tbaa !5
  %744 = load i64, ptr %53, align 8, !tbaa !9
  %745 = getelementptr inbounds %struct.complex, ptr %743, i64 %744
  %746 = load ptr, ptr %42, align 8, !tbaa !5
  %747 = load ptr, ptr %44, align 8, !tbaa !5
  %748 = load i64, ptr %90, align 8, !tbaa !9
  %749 = getelementptr inbounds float, ptr %747, i64 %748
  %750 = load ptr, ptr %45, align 8, !tbaa !5
  %751 = load i64, ptr %88, align 8, !tbaa !9
  %752 = getelementptr inbounds i64, ptr %750, i64 %751
  %753 = load ptr, ptr %46, align 8, !tbaa !5
  %754 = getelementptr inbounds i64, ptr %753, i64 1
  %755 = load ptr, ptr %47, align 8, !tbaa !5
  %756 = call i32 @cstein_(ptr noundef %727, ptr noundef %730, ptr noundef %733, ptr noundef %734, ptr noundef %736, ptr noundef %739, ptr noundef %742, ptr noundef %745, ptr noundef %746, ptr noundef %749, ptr noundef %752, ptr noundef %754, ptr noundef %755)
  %757 = load ptr, ptr %39, align 8, !tbaa !5
  %758 = load i64, ptr %757, align 8, !tbaa !9
  store i64 %758, ptr %54, align 8, !tbaa !9
  store i64 1, ptr %59, align 8, !tbaa !9
  br label %759

759:                                              ; preds = %789, %726
  %760 = load i64, ptr %59, align 8, !tbaa !9
  %761 = load i64, ptr %54, align 8, !tbaa !9
  %762 = icmp sle i64 %760, %761
  br i1 %762, label %763, label %792

763:                                              ; preds = %759
  %764 = load ptr, ptr %28, align 8, !tbaa !5
  %765 = load ptr, ptr %41, align 8, !tbaa !5
  %766 = load i64, ptr %59, align 8, !tbaa !9
  %767 = load i64, ptr %52, align 8, !tbaa !9
  %768 = mul nsw i64 %766, %767
  %769 = add nsw i64 %768, 1
  %770 = getelementptr inbounds %struct.complex, ptr %765, i64 %769
  %771 = load ptr, ptr %43, align 8, !tbaa !5
  %772 = getelementptr inbounds %struct.complex, ptr %771, i64 1
  %773 = call i32 @f2c_ccopy(ptr noundef %764, ptr noundef %770, ptr noundef @c__1, ptr noundef %772, ptr noundef @c__1)
  %774 = load ptr, ptr %28, align 8, !tbaa !5
  %775 = load ptr, ptr %28, align 8, !tbaa !5
  %776 = load ptr, ptr %32, align 8, !tbaa !5
  %777 = load i64, ptr %51, align 8, !tbaa !9
  %778 = getelementptr inbounds %struct.complex, ptr %776, i64 %777
  %779 = load ptr, ptr %33, align 8, !tbaa !5
  %780 = load ptr, ptr %43, align 8, !tbaa !5
  %781 = getelementptr inbounds %struct.complex, ptr %780, i64 1
  %782 = load ptr, ptr %41, align 8, !tbaa !5
  %783 = load i64, ptr %59, align 8, !tbaa !9
  %784 = load i64, ptr %52, align 8, !tbaa !9
  %785 = mul nsw i64 %783, %784
  %786 = add nsw i64 %785, 1
  %787 = getelementptr inbounds %struct.complex, ptr %782, i64 %786
  %788 = call i32 @f2c_cgemv(ptr noundef @.str.4, ptr noundef %774, ptr noundef %775, ptr noundef @c_b2, ptr noundef %778, ptr noundef %779, ptr noundef %781, ptr noundef @c__1, ptr noundef @c_b1, ptr noundef %787, ptr noundef @c__1)
  br label %789

789:                                              ; preds = %763
  %790 = load i64, ptr %59, align 8, !tbaa !9
  %791 = add nsw i64 %790, 1
  store i64 %791, ptr %59, align 8, !tbaa !9
  br label %759, !llvm.loop !19

792:                                              ; preds = %759
  br label %793

793:                                              ; preds = %792, %687
  br label %794

794:                                              ; preds = %793, %674
  %795 = load i64, ptr %82, align 8, !tbaa !9
  %796 = icmp eq i64 %795, 1
  br i1 %796, label %797, label %814

797:                                              ; preds = %794
  %798 = load ptr, ptr %47, align 8, !tbaa !5
  %799 = load i64, ptr %798, align 8, !tbaa !9
  %800 = icmp eq i64 %799, 0
  br i1 %800, label %801, label %804

801:                                              ; preds = %797
  %802 = load ptr, ptr %39, align 8, !tbaa !5
  %803 = load i64, ptr %802, align 8, !tbaa !9
  store i64 %803, ptr %68, align 8, !tbaa !9
  br label %808

804:                                              ; preds = %797
  %805 = load ptr, ptr %47, align 8, !tbaa !5
  %806 = load i64, ptr %805, align 8, !tbaa !9
  %807 = sub nsw i64 %806, 1
  store i64 %807, ptr %68, align 8, !tbaa !9
  br label %808

808:                                              ; preds = %804, %801
  %809 = load float, ptr %75, align 4, !tbaa !11
  %810 = fdiv float 1.000000e+00, %809
  store float %810, ptr %56, align 4, !tbaa !11
  %811 = load ptr, ptr %40, align 8, !tbaa !5
  %812 = getelementptr inbounds float, ptr %811, i64 1
  %813 = call i32 @f2c_sscal(ptr noundef %68, ptr noundef %56, ptr noundef %812, ptr noundef @c__1)
  br label %814

814:                                              ; preds = %808, %794
  %815 = load i64, ptr %79, align 8, !tbaa !9
  %816 = icmp ne i64 %815, 0
  br i1 %816, label %817, label %936

817:                                              ; preds = %814
  %818 = load ptr, ptr %39, align 8, !tbaa !5
  %819 = load i64, ptr %818, align 8, !tbaa !9
  %820 = sub nsw i64 %819, 1
  store i64 %820, ptr %54, align 8, !tbaa !9
  store i64 1, ptr %59, align 8, !tbaa !9
  br label %821

821:                                              ; preds = %932, %817
  %822 = load i64, ptr %59, align 8, !tbaa !9
  %823 = load i64, ptr %54, align 8, !tbaa !9
  %824 = icmp sle i64 %822, %823
  br i1 %824, label %825, label %935

825:                                              ; preds = %821
  store i64 0, ptr %58, align 8, !tbaa !9
  %826 = load ptr, ptr %40, align 8, !tbaa !5
  %827 = load i64, ptr %59, align 8, !tbaa !9
  %828 = getelementptr inbounds float, ptr %826, i64 %827
  %829 = load float, ptr %828, align 4, !tbaa !11
  store float %829, ptr %64, align 4, !tbaa !11
  %830 = load ptr, ptr %39, align 8, !tbaa !5
  %831 = load i64, ptr %830, align 8, !tbaa !9
  store i64 %831, ptr %55, align 8, !tbaa !9
  %832 = load i64, ptr %59, align 8, !tbaa !9
  %833 = add nsw i64 %832, 1
  store i64 %833, ptr %60, align 8, !tbaa !9
  br label %834

834:                                              ; preds = %852, %825
  %835 = load i64, ptr %60, align 8, !tbaa !9
  %836 = load i64, ptr %55, align 8, !tbaa !9
  %837 = icmp sle i64 %835, %836
  br i1 %837, label %838, label %855

838:                                              ; preds = %834
  %839 = load ptr, ptr %40, align 8, !tbaa !5
  %840 = load i64, ptr %60, align 8, !tbaa !9
  %841 = getelementptr inbounds float, ptr %839, i64 %840
  %842 = load float, ptr %841, align 4, !tbaa !11
  %843 = load float, ptr %64, align 4, !tbaa !11
  %844 = fcmp olt float %842, %843
  br i1 %844, label %845, label %851

845:                                              ; preds = %838
  %846 = load i64, ptr %60, align 8, !tbaa !9
  store i64 %846, ptr %58, align 8, !tbaa !9
  %847 = load ptr, ptr %40, align 8, !tbaa !5
  %848 = load i64, ptr %60, align 8, !tbaa !9
  %849 = getelementptr inbounds float, ptr %847, i64 %848
  %850 = load float, ptr %849, align 4, !tbaa !11
  store float %850, ptr %64, align 4, !tbaa !11
  br label %851

851:                                              ; preds = %845, %838
  br label %852

852:                                              ; preds = %851
  %853 = load i64, ptr %60, align 8, !tbaa !9
  %854 = add nsw i64 %853, 1
  store i64 %854, ptr %60, align 8, !tbaa !9
  br label %834, !llvm.loop !20

855:                                              ; preds = %834
  %856 = load i64, ptr %58, align 8, !tbaa !9
  %857 = icmp ne i64 %856, 0
  br i1 %857, label %858, label %931

858:                                              ; preds = %855
  %859 = load ptr, ptr %45, align 8, !tbaa !5
  %860 = load i64, ptr %83, align 8, !tbaa !9
  %861 = load i64, ptr %58, align 8, !tbaa !9
  %862 = add nsw i64 %860, %861
  %863 = sub nsw i64 %862, 1
  %864 = getelementptr inbounds i64, ptr %859, i64 %863
  %865 = load i64, ptr %864, align 8, !tbaa !9
  store i64 %865, ptr %73, align 8, !tbaa !9
  %866 = load ptr, ptr %40, align 8, !tbaa !5
  %867 = load i64, ptr %59, align 8, !tbaa !9
  %868 = getelementptr inbounds float, ptr %866, i64 %867
  %869 = load float, ptr %868, align 4, !tbaa !11
  %870 = load ptr, ptr %40, align 8, !tbaa !5
  %871 = load i64, ptr %58, align 8, !tbaa !9
  %872 = getelementptr inbounds float, ptr %870, i64 %871
  store float %869, ptr %872, align 4, !tbaa !11
  %873 = load ptr, ptr %45, align 8, !tbaa !5
  %874 = load i64, ptr %83, align 8, !tbaa !9
  %875 = load i64, ptr %59, align 8, !tbaa !9
  %876 = add nsw i64 %874, %875
  %877 = sub nsw i64 %876, 1
  %878 = getelementptr inbounds i64, ptr %873, i64 %877
  %879 = load i64, ptr %878, align 8, !tbaa !9
  %880 = load ptr, ptr %45, align 8, !tbaa !5
  %881 = load i64, ptr %83, align 8, !tbaa !9
  %882 = load i64, ptr %58, align 8, !tbaa !9
  %883 = add nsw i64 %881, %882
  %884 = sub nsw i64 %883, 1
  %885 = getelementptr inbounds i64, ptr %880, i64 %884
  store i64 %879, ptr %885, align 8, !tbaa !9
  %886 = load float, ptr %64, align 4, !tbaa !11
  %887 = load ptr, ptr %40, align 8, !tbaa !5
  %888 = load i64, ptr %59, align 8, !tbaa !9
  %889 = getelementptr inbounds float, ptr %887, i64 %888
  store float %886, ptr %889, align 4, !tbaa !11
  %890 = load i64, ptr %73, align 8, !tbaa !9
  %891 = load ptr, ptr %45, align 8, !tbaa !5
  %892 = load i64, ptr %83, align 8, !tbaa !9
  %893 = load i64, ptr %59, align 8, !tbaa !9
  %894 = add nsw i64 %892, %893
  %895 = sub nsw i64 %894, 1
  %896 = getelementptr inbounds i64, ptr %891, i64 %895
  store i64 %890, ptr %896, align 8, !tbaa !9
  %897 = load ptr, ptr %28, align 8, !tbaa !5
  %898 = load ptr, ptr %41, align 8, !tbaa !5
  %899 = load i64, ptr %58, align 8, !tbaa !9
  %900 = load i64, ptr %52, align 8, !tbaa !9
  %901 = mul nsw i64 %899, %900
  %902 = add nsw i64 %901, 1
  %903 = getelementptr inbounds %struct.complex, ptr %898, i64 %902
  %904 = load ptr, ptr %41, align 8, !tbaa !5
  %905 = load i64, ptr %59, align 8, !tbaa !9
  %906 = load i64, ptr %52, align 8, !tbaa !9
  %907 = mul nsw i64 %905, %906
  %908 = add nsw i64 %907, 1
  %909 = getelementptr inbounds %struct.complex, ptr %904, i64 %908
  %910 = call i32 @f2c_cswap(ptr noundef %897, ptr noundef %903, ptr noundef @c__1, ptr noundef %909, ptr noundef @c__1)
  %911 = load ptr, ptr %47, align 8, !tbaa !5
  %912 = load i64, ptr %911, align 8, !tbaa !9
  %913 = icmp ne i64 %912, 0
  br i1 %913, label %914, label %930

914:                                              ; preds = %858
  %915 = load ptr, ptr %46, align 8, !tbaa !5
  %916 = load i64, ptr %58, align 8, !tbaa !9
  %917 = getelementptr inbounds i64, ptr %915, i64 %916
  %918 = load i64, ptr %917, align 8, !tbaa !9
  store i64 %918, ptr %73, align 8, !tbaa !9
  %919 = load ptr, ptr %46, align 8, !tbaa !5
  %920 = load i64, ptr %59, align 8, !tbaa !9
  %921 = getelementptr inbounds i64, ptr %919, i64 %920
  %922 = load i64, ptr %921, align 8, !tbaa !9
  %923 = load ptr, ptr %46, align 8, !tbaa !5
  %924 = load i64, ptr %58, align 8, !tbaa !9
  %925 = getelementptr inbounds i64, ptr %923, i64 %924
  store i64 %922, ptr %925, align 8, !tbaa !9
  %926 = load i64, ptr %73, align 8, !tbaa !9
  %927 = load ptr, ptr %46, align 8, !tbaa !5
  %928 = load i64, ptr %59, align 8, !tbaa !9
  %929 = getelementptr inbounds i64, ptr %927, i64 %928
  store i64 %926, ptr %929, align 8, !tbaa !9
  br label %930

930:                                              ; preds = %914, %858
  br label %931

931:                                              ; preds = %930, %855
  br label %932

932:                                              ; preds = %931
  %933 = load i64, ptr %59, align 8, !tbaa !9
  %934 = add nsw i64 %933, 1
  store i64 %934, ptr %59, align 8, !tbaa !9
  br label %821, !llvm.loop !21

935:                                              ; preds = %821
  br label %936

936:                                              ; preds = %935, %814
  store i32 0, ptr %24, align 4
  store i32 1, ptr %94, align 4
  br label %937

937:                                              ; preds = %936, %397, %314, %304
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  %938 = load i32, ptr %24, align 4
  ret i32 %938
}

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

declare double @slamch_(ptr noundef) #2

; Function Attrs: nounwind
declare double @sqrt(double noundef) #3

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

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

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

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

declare i32 @sstebz_(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 @cstein_(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_ccopy(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare i32 @f2c_cswap(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 "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 #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 = !{!"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 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = !{!7, !7, i64 0}
!19 = distinct !{!19, !17}
!20 = distinct !{!20, !17}
!21 = distinct !{!21, !17}


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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @chbevx_(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 nocapture noundef readonly %9, ptr nocapture noundef readonly %10, ptr noundef %11, ptr noundef %12, ptr nocapture noundef readonly %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) local_unnamed_addr #0 {
  %24 = alloca i64, align 8
  %25 = alloca float, align 4
  %26 = alloca float, align 4
  %27 = alloca float, align 4
  %28 = alloca i64, align 8
  %29 = alloca float, align 4
  %30 = alloca i64, align 8
  %31 = alloca [1 x i8], align 1
  %32 = alloca float, align 4
  %33 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #6
  %34 = getelementptr inbounds i8, ptr %15, i64 -4
  %35 = load i64, ptr %17, align 8, !tbaa !5
  %36 = xor i64 %35, -1
  %37 = getelementptr inbounds %struct.complex, ptr %16, i64 %36
  %38 = getelementptr inbounds i8, ptr %19, i64 -4
  %39 = getelementptr inbounds i8, ptr %20, i64 -8
  %40 = getelementptr inbounds i8, ptr %21, i64 -8
  %41 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %42 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %43 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #6
  %44 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #6
  %45 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.3) #6
  store i64 0, ptr %22, align 8, !tbaa !5
  %.not = icmp ne i64 %41, 0
  br i1 %.not, label %48, label %46

46:                                               ; preds = %23
  %47 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #6
  %.not376 = icmp eq i64 %47, 0
  br i1 %.not376, label %.thread404.sink.split, label %48

48:                                               ; preds = %46, %23
  %49 = icmp ne i64 %42, 0
  %50 = icmp ne i64 %43, 0
  %or.cond = select i1 %49, i1 true, i1 %50
  %51 = icmp ne i64 %44, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %51
  br i1 %or.cond3, label %52, label %.thread404.sink.split

52:                                               ; preds = %48
  %.not377 = icmp eq i64 %45, 0
  br i1 %.not377, label %53, label %55

53:                                               ; preds = %52
  %54 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.5) #6
  %.not378 = icmp eq i64 %54, 0
  br i1 %.not378, label %.thread404.sink.split, label %55

55:                                               ; preds = %53, %52
  %56 = load i64, ptr %3, align 8, !tbaa !5
  %57 = icmp slt i64 %56, 0
  br i1 %57, label %.thread404.sink.split, label %58

58:                                               ; preds = %55
  %59 = load i64, ptr %4, align 8, !tbaa !5
  %60 = icmp slt i64 %59, 0
  br i1 %60, label %.thread404.sink.split, label %61

61:                                               ; preds = %58
  %62 = load i64, ptr %6, align 8, !tbaa !5
  %.not379 = icmp sgt i64 %62, %59
  br i1 %.not379, label %63, label %.thread404.sink.split

63:                                               ; preds = %61
  br i1 %.not, label %64, label %67

64:                                               ; preds = %63
  %65 = load i64, ptr %8, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %56, i64 1)
  %66 = icmp slt i64 %65, %spec.select
  br i1 %66, label %.thread404.sink.split, label %67

67:                                               ; preds = %64, %63
  br i1 %50, label %68, label %73

68:                                               ; preds = %67
  %.not417 = icmp eq i64 %56, 0
  br i1 %.not417, label %82, label %69

69:                                               ; preds = %68
  %70 = load float, ptr %10, align 4, !tbaa !9
  %71 = load float, ptr %9, align 4, !tbaa !9
  %72 = fcmp ugt float %70, %71
  br i1 %72, label %82, label %.thread404.sink.split

73:                                               ; preds = %67
  br i1 %51, label %74, label %82

74:                                               ; preds = %73
  %75 = load i64, ptr %11, align 8, !tbaa !5
  %76 = icmp slt i64 %75, 1
  %spec.select397 = tail call i64 @llvm.umax.i64(i64 %56, i64 1)
  %77 = icmp ugt i64 %75, %spec.select397
  %or.cond419 = or i1 %76, %77
  br i1 %or.cond419, label %.thread404.sink.split, label %78

78:                                               ; preds = %74
  %79 = load i64, ptr %12, align 8, !tbaa !5
  %. = tail call i64 @llvm.umin.i64(i64 %56, i64 %75)
  %80 = icmp slt i64 %79, %.
  %81 = icmp ugt i64 %79, %56
  %or.cond416 = or i1 %80, %81
  br i1 %or.cond416, label %.thread404.sink.split, label %82

82:                                               ; preds = %78, %69, %68, %73
  %.pr = load i64, ptr %22, align 8, !tbaa !5
  %83 = icmp eq i64 %.pr, 0
  br i1 %83, label %84, label %.thread404

84:                                               ; preds = %82
  %85 = load i64, ptr %17, align 8, !tbaa !5
  %86 = icmp slt i64 %85, 1
  %87 = icmp ult i64 %85, %56
  %or.cond445 = and i1 %.not, %87
  %or.cond446 = or i1 %86, %or.cond445
  br i1 %or.cond446, label %.thread404.sink.split, label %.thread

.thread404.sink.split:                            ; preds = %84, %78, %74, %69, %64, %61, %58, %55, %53, %48, %46
  %.sink = phi i64 [ -1, %46 ], [ -2, %48 ], [ -3, %53 ], [ -4, %55 ], [ -5, %58 ], [ -7, %61 ], [ -9, %64 ], [ -11, %69 ], [ -12, %74 ], [ -13, %78 ], [ -18, %84 ]
  store i64 %.sink, ptr %22, align 8, !tbaa !5
  br label %.thread404

.thread404:                                       ; preds = %.thread404.sink.split, %82
  %88 = phi i64 [ %.pr, %82 ], [ %.sink, %.thread404.sink.split ]
  %89 = sub nsw i64 0, %88
  store i64 %89, ptr %24, align 8, !tbaa !5
  %90 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %24) #6
  br label %.loopexit

.thread:                                          ; preds = %84
  store i64 0, ptr %14, align 8, !tbaa !5
  %91 = load i64, ptr %3, align 8, !tbaa !5
  switch i64 %91, label %105 [
    i64 0, label %.loopexit
    i64 1, label %92
  ]

92:                                               ; preds = %.thread
  store i64 1, ptr %14, align 8, !tbaa !5
  br i1 %.not377, label %93, label %96

93:                                               ; preds = %92
  %94 = load i64, ptr %4, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.complex, ptr %5, i64 %94
  br label %96

96:                                               ; preds = %92, %93
  %.sroa.0.0.in = phi ptr [ %95, %93 ], [ %5, %92 ]
  %.sroa.0.0 = load float, ptr %.sroa.0.0.in, align 4, !tbaa !11
  %.not396 = icmp eq i64 %43, 0
  br i1 %.not396, label %103, label %97

97:                                               ; preds = %96
  %98 = load float, ptr %9, align 4, !tbaa !9
  %99 = fcmp olt float %98, %.sroa.0.0
  br i1 %99, label %100, label %.thread408

100:                                              ; preds = %97
  %101 = load float, ptr %10, align 4, !tbaa !9
  %102 = fcmp ult float %101, %.sroa.0.0
  br i1 %102, label %.thread408, label %103

.thread408:                                       ; preds = %97, %100
  store i64 0, ptr %14, align 8, !tbaa !5
  br label %.loopexit

103:                                              ; preds = %96, %100
  store float %.sroa.0.0, ptr %15, align 4, !tbaa !9
  br i1 %.not, label %104, label %.loopexit

104:                                              ; preds = %103
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %16, align 4, !tbaa !9
  br label %.loopexit

105:                                              ; preds = %.thread
  %106 = tail call double @slamch_(ptr noundef nonnull @.str.7) #6
  %107 = fptrunc double %106 to float
  %108 = tail call double @slamch_(ptr noundef nonnull @.str.8) #6
  %109 = fptrunc double %108 to float
  %110 = fdiv float %107, %109
  %111 = fdiv float 1.000000e+00, %110
  %sqrtf = tail call float @sqrtf(float noundef %110) #3
  %sqrtf382 = tail call float @sqrtf(float noundef %111) #3
  store float %sqrtf382, ptr %25, align 4, !tbaa !9
  %112 = fpext float %107 to double
  %113 = tail call double @sqrt(double noundef %112) #6
  %114 = tail call double @sqrt(double noundef %113) #6
  %115 = fdiv double 1.000000e+00, %114
  %116 = fptrunc double %115 to float
  %117 = fcmp ole float %sqrtf382, %116
  %118 = select i1 %117, float %sqrtf382, float %116
  %119 = load float, ptr %13, align 4, !tbaa !9
  store float %119, ptr %32, align 4, !tbaa !9
  %.not383 = icmp eq i64 %43, 0
  br i1 %.not383, label %123, label %120

120:                                              ; preds = %105
  %121 = load float, ptr %9, align 4, !tbaa !9
  %122 = load float, ptr %10, align 4, !tbaa !9
  br label %123

123:                                              ; preds = %105, %120
  %.sink441 = phi float [ %121, %120 ], [ 0.000000e+00, %105 ]
  %storemerge = phi float [ %122, %120 ], [ 0.000000e+00, %105 ]
  store float %.sink441, ptr %26, align 4
  store float %storemerge, ptr %27, align 4, !tbaa !9
  %124 = tail call double @clanhb_(ptr noundef nonnull @.str.9, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %19) #6
  %125 = fptrunc double %124 to float
  %126 = fcmp ogt float %125, 0.000000e+00
  %127 = fcmp ogt float %sqrtf, %125
  %or.cond398 = select i1 %126, i1 %127, i1 false
  br i1 %or.cond398, label %130, label %128

128:                                              ; preds = %123
  %129 = fcmp olt float %118, %125
  br i1 %129, label %130, label %144

130:                                              ; preds = %128, %123
  %.pn = phi float [ %sqrtf, %123 ], [ %118, %128 ]
  %storemerge418 = fdiv float %.pn, %125
  store float %storemerge418, ptr %29, align 4, !tbaa !9
  %.str.11..str.10 = select i1 %.not377, ptr @.str.11, ptr @.str.10
  %131 = call i32 @clascl_(ptr noundef nonnull %.str.11..str.10, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef nonnull @c_b16, ptr noundef nonnull %29, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %22) #6
  %132 = load float, ptr %13, align 4, !tbaa !9
  %133 = fcmp ogt float %132, 0.000000e+00
  br i1 %133, label %134, label %137

134:                                              ; preds = %130
  %135 = load float, ptr %29, align 4, !tbaa !9
  %136 = fmul float %132, %135
  store float %136, ptr %32, align 4, !tbaa !9
  br label %137

137:                                              ; preds = %134, %130
  br i1 %.not383, label %144, label %138

138:                                              ; preds = %137
  %139 = load float, ptr %9, align 4, !tbaa !9
  %140 = load float, ptr %29, align 4, !tbaa !9
  %141 = fmul float %139, %140
  store float %141, ptr %26, align 4, !tbaa !9
  %142 = load float, ptr %10, align 4, !tbaa !9
  %143 = fmul float %140, %142
  store float %143, ptr %27, align 4, !tbaa !9
  br label %144

144:                                              ; preds = %128, %137, %138
  %145 = phi i1 [ true, %137 ], [ true, %138 ], [ false, %128 ]
  %146 = load i64, ptr %3, align 8, !tbaa !5
  %reass.add = shl i64 %146, 1
  %147 = or disjoint i64 %reass.add, 1
  %148 = getelementptr float, ptr %19, i64 %146
  %149 = call i32 @chbtrd_(ptr noundef %0, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %19, ptr noundef %148, ptr noundef %7, ptr noundef %8, ptr noundef %18, ptr noundef nonnull %30) #6
  %.not385 = icmp eq i64 %44, 0
  br i1 %.not385, label %157, label %150

150:                                              ; preds = %144
  %151 = load i64, ptr %11, align 8, !tbaa !5
  %152 = icmp eq i64 %151, 1
  br i1 %152, label %153, label %157

153:                                              ; preds = %150
  %154 = load i64, ptr %12, align 8, !tbaa !5
  %155 = load i64, ptr %3, align 8, !tbaa !5
  %156 = icmp eq i64 %154, %155
  br label %157

157:                                              ; preds = %153, %150, %144
  %158 = phi i1 [ false, %150 ], [ false, %144 ], [ %156, %153 ]
  %or.cond5 = or i1 %49, %158
  br i1 %or.cond5, label %159, label %188

159:                                              ; preds = %157
  %160 = load float, ptr %13, align 4, !tbaa !9
  %161 = fcmp ugt float %160, 0.000000e+00
  br i1 %161, label %188, label %162

162:                                              ; preds = %159
  %163 = call i32 @f2c_scopy(ptr noundef nonnull %3, ptr noundef %19, ptr noundef nonnull @c__1, ptr noundef %15, ptr noundef nonnull @c__1) #6
  %164 = load i64, ptr %3, align 8, !tbaa !5
  %165 = shl i64 %164, 1
  %166 = add nsw i64 %165, %147
  br i1 %.not, label %172, label %167

167:                                              ; preds = %162
  %168 = add nsw i64 %164, -1
  store i64 %168, ptr %24, align 8, !tbaa !5
  %169 = getelementptr inbounds float, ptr %38, i64 %166
  %170 = call i32 @f2c_scopy(ptr noundef nonnull %24, ptr noundef %148, ptr noundef nonnull @c__1, ptr noundef nonnull %169, ptr noundef nonnull @c__1) #6
  %171 = call i32 @ssterf_(ptr noundef nonnull %3, ptr noundef %15, ptr noundef nonnull %169, ptr noundef nonnull %22) #6
  br label %.loopexit421

172:                                              ; preds = %162
  %173 = call i32 @clacpy_(ptr noundef nonnull @.str.1, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %7, ptr noundef %8, ptr noundef %16, ptr noundef nonnull %17) #6
  %174 = load i64, ptr %3, align 8, !tbaa !5
  %175 = add nsw i64 %174, -1
  store i64 %175, ptr %24, align 8, !tbaa !5
  %176 = getelementptr inbounds float, ptr %38, i64 %166
  %177 = call i32 @f2c_scopy(ptr noundef nonnull %24, ptr noundef %148, ptr noundef nonnull @c__1, ptr noundef nonnull %176, ptr noundef nonnull @c__1) #6
  %178 = getelementptr float, ptr %19, i64 %reass.add
  %179 = call i32 @csteqr_(ptr noundef %0, ptr noundef nonnull %3, ptr noundef %15, ptr noundef nonnull %176, ptr noundef %16, ptr noundef nonnull %17, ptr noundef %178, ptr noundef nonnull %22) #6
  %180 = load i64, ptr %22, align 8, !tbaa !5
  %181 = icmp eq i64 %180, 0
  br i1 %181, label %182, label %.thread413

182:                                              ; preds = %172
  %183 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %183, ptr %24, align 8, !tbaa !5
  %.not386422 = icmp slt i64 %183, 1
  br i1 %.not386422, label %.loopexit421, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %182
  %184 = shl nuw i64 %183, 3
  call void @llvm.memset.p0.i64(ptr align 8 %21, i8 0, i64 %184, i1 false), !tbaa !5
  br label %.loopexit421

.loopexit421:                                     ; preds = %.lr.ph.preheader, %182, %167
  %.pr412 = load i64, ptr %22, align 8, !tbaa !5
  %185 = icmp eq i64 %.pr412, 0
  br i1 %185, label %186, label %.thread413

186:                                              ; preds = %.loopexit421
  %187 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %187, ptr %14, align 8, !tbaa !5
  br label %.loopexit420

.thread413:                                       ; preds = %172, %.loopexit421
  store i64 0, ptr %22, align 8, !tbaa !5
  br label %188

188:                                              ; preds = %157, %.thread413, %159
  %.400 = select i1 %.not, i8 66, i8 69
  store i8 %.400, ptr %31, align 1, !tbaa !13
  %189 = load i64, ptr %3, align 8, !tbaa !5
  %190 = getelementptr i64, ptr %20, i64 %189
  %191 = getelementptr float, ptr %19, i64 %reass.add
  %.idx = shl i64 %189, 4
  %192 = getelementptr i8, ptr %20, i64 %.idx
  %193 = call i32 @sstebz_(ptr noundef %1, ptr noundef nonnull %31, ptr noundef nonnull %3, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef %11, ptr noundef %12, ptr noundef nonnull %32, ptr noundef %19, ptr noundef %148, ptr noundef nonnull %14, ptr noundef nonnull %33, ptr noundef %15, ptr noundef %20, ptr noundef %190, ptr noundef %191, ptr noundef %192, ptr noundef nonnull %22) #6
  br i1 %.not, label %194, label %.loopexit420

194:                                              ; preds = %188
  %195 = call i32 @cstein_(ptr noundef nonnull %3, ptr noundef %19, ptr noundef %148, ptr noundef nonnull %14, ptr noundef %15, ptr noundef %20, ptr noundef %190, ptr noundef %16, ptr noundef nonnull %17, ptr noundef %191, ptr noundef %192, ptr noundef %21, ptr noundef nonnull %22) #6
  %196 = load i64, ptr %14, align 8, !tbaa !5
  store i64 %196, ptr %24, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %37, i64 8
  %.not389424 = icmp slt i64 %196, 1
  br i1 %.not389424, label %.loopexit420, label %.lr.ph426

.lr.ph426:                                        ; preds = %194, %.lr.ph426
  %.0355425 = phi i64 [ %200, %.lr.ph426 ], [ 1, %194 ]
  %197 = mul nsw i64 %.0355425, %35
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %197
  %198 = call i32 @f2c_ccopy(ptr noundef nonnull %3, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %18, ptr noundef nonnull @c__1) #6
  %199 = call i32 @f2c_cgemv(ptr noundef nonnull @.str.4, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef nonnull @c_b2, ptr noundef %7, ptr noundef %8, ptr noundef %18, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b1, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  %200 = add nuw nsw i64 %.0355425, 1
  %201 = load i64, ptr %24, align 8, !tbaa !5
  %.not389.not = icmp slt i64 %.0355425, %201
  br i1 %.not389.not, label %.lr.ph426, label %.loopexit420, !llvm.loop !14

.loopexit420:                                     ; preds = %.lr.ph426, %194, %188, %186
  br i1 %145, label %202, label %213

202:                                              ; preds = %.loopexit420
  %203 = load i64, ptr %22, align 8, !tbaa !5
  %204 = icmp eq i64 %203, 0
  br i1 %204, label %205, label %207

205:                                              ; preds = %202
  %206 = load i64, ptr %14, align 8, !tbaa !5
  br label %209

207:                                              ; preds = %202
  %208 = add nsw i64 %203, -1
  br label %209

209:                                              ; preds = %207, %205
  %storemerge390 = phi i64 [ %208, %207 ], [ %206, %205 ]
  store i64 %storemerge390, ptr %28, align 8, !tbaa !5
  %210 = load float, ptr %29, align 4, !tbaa !9
  %211 = fdiv float 1.000000e+00, %210
  store float %211, ptr %25, align 4, !tbaa !9
  %212 = call i32 @f2c_sscal(ptr noundef nonnull %28, ptr noundef nonnull %25, ptr noundef %15, ptr noundef nonnull @c__1) #6
  br label %213

213:                                              ; preds = %209, %.loopexit420
  br i1 %.not, label %214, label %.loopexit

214:                                              ; preds = %213
  %215 = load i64, ptr %14, align 8, !tbaa !5
  %216 = add nsw i64 %215, -1
  store i64 %216, ptr %24, align 8, !tbaa !5
  %invariant.gep433 = getelementptr i8, ptr %37, i64 8
  %.not391437 = icmp slt i64 %215, 2
  br i1 %.not391437, label %.loopexit, label %.lr.ph440

.lr.ph440:                                        ; preds = %214, %._crit_edge.thread
  %.1356438 = phi i64 [ %220, %._crit_edge.thread ], [ 1, %214 ]
  %217 = getelementptr inbounds float, ptr %34, i64 %.1356438
  %218 = load float, ptr %217, align 4, !tbaa !9
  %219 = load i64, ptr %14, align 8, !tbaa !5
  %220 = add nuw nsw i64 %.1356438, 1
  %.not392427.not = icmp slt i64 %.1356438, %219
  br i1 %.not392427.not, label %.lr.ph431, label %._crit_edge.thread

.lr.ph431:                                        ; preds = %.lr.ph440, %.lr.ph431
  %.1430 = phi i64 [ %.2, %.lr.ph431 ], [ 0, %.lr.ph440 ]
  %.0357429 = phi i64 [ %224, %.lr.ph431 ], [ %220, %.lr.ph440 ]
  %.0358428 = phi float [ %.1359, %.lr.ph431 ], [ %218, %.lr.ph440 ]
  %221 = getelementptr inbounds float, ptr %34, i64 %.0357429
  %222 = load float, ptr %221, align 4, !tbaa !9
  %223 = fcmp olt float %222, %.0358428
  %.1359 = select i1 %223, float %222, float %.0358428
  %.2 = select i1 %223, i64 %.0357429, i64 %.1430
  %224 = add nuw nsw i64 %.0357429, 1
  %.not392.not = icmp slt i64 %.0357429, %219
  br i1 %.not392.not, label %.lr.ph431, label %._crit_edge, !llvm.loop !16

._crit_edge:                                      ; preds = %.lr.ph431
  %.not393 = icmp eq i64 %.2, 0
  br i1 %.not393, label %._crit_edge.thread, label %225

225:                                              ; preds = %._crit_edge
  %226 = getelementptr inbounds i64, ptr %39, i64 %.2
  %227 = load i64, ptr %226, align 8, !tbaa !5
  %228 = getelementptr inbounds float, ptr %34, i64 %.2
  store float %218, ptr %228, align 4, !tbaa !9
  %229 = getelementptr inbounds i64, ptr %39, i64 %.1356438
  %230 = load i64, ptr %229, align 8, !tbaa !5
  store i64 %230, ptr %226, align 8, !tbaa !5
  store float %.1359, ptr %217, align 4, !tbaa !9
  store i64 %227, ptr %229, align 8, !tbaa !5
  %231 = mul nsw i64 %.2, %35
  %gep434 = getelementptr %struct.complex, ptr %invariant.gep433, i64 %231
  %232 = mul nsw i64 %.1356438, %35
  %gep436 = getelementptr %struct.complex, ptr %invariant.gep433, i64 %232
  %233 = call i32 @f2c_cswap(ptr noundef nonnull %3, ptr noundef %gep434, ptr noundef nonnull @c__1, ptr noundef %gep436, ptr noundef nonnull @c__1) #6
  %234 = load i64, ptr %22, align 8, !tbaa !5
  %.not394 = icmp eq i64 %234, 0
  br i1 %.not394, label %._crit_edge.thread, label %235

235:                                              ; preds = %225
  %236 = getelementptr inbounds i64, ptr %40, i64 %.2
  %237 = load i64, ptr %236, align 8, !tbaa !5
  %238 = getelementptr inbounds i64, ptr %40, i64 %.1356438
  %239 = load i64, ptr %238, align 8, !tbaa !5
  store i64 %239, ptr %236, align 8, !tbaa !5
  store i64 %237, ptr %238, align 8, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph440, %._crit_edge, %235, %225
  %240 = load i64, ptr %24, align 8, !tbaa !5
  %.not391.not = icmp slt i64 %.1356438, %240
  br i1 %.not391.not, label %.lr.ph440, label %.loopexit, !llvm.loop !17

.loopexit:                                        ; preds = %._crit_edge.thread, %214, %.thread408, %213, %104, %103, %.thread, %.thread404
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #6
  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 i32 @xerbla_(ptr noundef, ptr noundef) local_unnamed_addr #2

declare double @slamch_(ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #3

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

declare i32 @clascl_(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 @chbtrd_(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_scopy(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare i32 @sstebz_(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 @cstein_(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_ccopy(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

declare float @sqrtf(float) local_unnamed_addr

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

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 = { mustprogress nofree nounwind willreturn memory(write) "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 #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { 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 = !{!7, !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = distinct !{!17, !15}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MergedLoadStoreMotionPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass