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

147:                                              ; preds = %23
  %148 = load ptr, ptr %24, align 8, !tbaa !5
  %149 = call i32 @lsame_(ptr noundef %148, ptr noundef @.str.4)
  %150 = icmp ne i32 %149, 0
  br i1 %150, label %153, label %151

151:                                              ; preds = %147
  %152 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -1, ptr %152, align 4, !tbaa !9
  br label %285

153:                                              ; preds = %147, %23
  %154 = load i32, ptr %75, align 4, !tbaa !9
  %155 = icmp ne i32 %154, 0
  br i1 %155, label %164, label %156

156:                                              ; preds = %153
  %157 = load i32, ptr %79, align 4, !tbaa !9
  %158 = icmp ne i32 %157, 0
  br i1 %158, label %164, label %159

159:                                              ; preds = %156
  %160 = load i32, ptr %76, align 4, !tbaa !9
  %161 = icmp ne i32 %160, 0
  br i1 %161, label %164, label %162

162:                                              ; preds = %159
  %163 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -2, ptr %163, align 4, !tbaa !9
  br label %284

164:                                              ; preds = %159, %156, %153
  %165 = load i32, ptr %72, align 4, !tbaa !9
  %166 = icmp ne i32 %165, 0
  br i1 %166, label %173, label %167

167:                                              ; preds = %164
  %168 = load ptr, ptr %26, align 8, !tbaa !5
  %169 = call i32 @lsame_(ptr noundef %168, ptr noundef @.str.5)
  %170 = icmp ne i32 %169, 0
  br i1 %170, label %173, label %171

171:                                              ; preds = %167
  %172 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -3, ptr %172, align 4, !tbaa !9
  br label %283

173:                                              ; preds = %167, %164
  %174 = load ptr, ptr %27, align 8, !tbaa !5
  %175 = load i32, ptr %174, align 4, !tbaa !9
  %176 = icmp slt i32 %175, 0
  br i1 %176, label %177, label %179

177:                                              ; preds = %173
  %178 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -4, ptr %178, align 4, !tbaa !9
  br label %282

179:                                              ; preds = %173
  %180 = load ptr, ptr %28, align 8, !tbaa !5
  %181 = load i32, ptr %180, align 4, !tbaa !9
  %182 = icmp slt i32 %181, 0
  br i1 %182, label %183, label %185

183:                                              ; preds = %179
  %184 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -5, ptr %184, align 4, !tbaa !9
  br label %281

185:                                              ; preds = %179
  %186 = load ptr, ptr %30, align 8, !tbaa !5
  %187 = load i32, ptr %186, align 4, !tbaa !9
  %188 = load ptr, ptr %28, align 8, !tbaa !5
  %189 = load i32, ptr %188, align 4, !tbaa !9
  %190 = add nsw i32 %189, 1
  %191 = icmp slt i32 %187, %190
  br i1 %191, label %192, label %194

192:                                              ; preds = %185
  %193 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -7, ptr %193, align 4, !tbaa !9
  br label %280

194:                                              ; preds = %185
  %195 = load i32, ptr %73, align 4, !tbaa !9
  %196 = icmp ne i32 %195, 0
  br i1 %196, label %197, label %212

197:                                              ; preds = %194
  %198 = load ptr, ptr %32, align 8, !tbaa !5
  %199 = load i32, ptr %198, align 4, !tbaa !9
  %200 = load ptr, ptr %27, align 8, !tbaa !5
  %201 = load i32, ptr %200, align 4, !tbaa !9
  %202 = icmp sge i32 1, %201
  br i1 %202, label %203, label %204

203:                                              ; preds = %197
  br label %207

204:                                              ; preds = %197
  %205 = load ptr, ptr %27, align 8, !tbaa !5
  %206 = load i32, ptr %205, align 4, !tbaa !9
  br label %207

207:                                              ; preds = %204, %203
  %208 = phi i32 [ 1, %203 ], [ %206, %204 ]
  %209 = icmp slt i32 %199, %208
  br i1 %209, label %210, label %212

210:                                              ; preds = %207
  %211 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -9, ptr %211, align 4, !tbaa !9
  br label %279

212:                                              ; preds = %207, %194
  %213 = load i32, ptr %79, align 4, !tbaa !9
  %214 = icmp ne i32 %213, 0
  br i1 %214, label %215, label %228

215:                                              ; preds = %212
  %216 = load ptr, ptr %27, align 8, !tbaa !5
  %217 = load i32, ptr %216, align 4, !tbaa !9
  %218 = icmp sgt i32 %217, 0
  br i1 %218, label %219, label %227

219:                                              ; preds = %215
  %220 = load ptr, ptr %34, align 8, !tbaa !5
  %221 = load float, ptr %220, align 4, !tbaa !11
  %222 = load ptr, ptr %33, align 8, !tbaa !5
  %223 = load float, ptr %222, align 4, !tbaa !11
  %224 = fcmp ole float %221, %223
  br i1 %224, label %225, label %227

225:                                              ; preds = %219
  %226 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -11, ptr %226, align 4, !tbaa !9
  br label %227

227:                                              ; preds = %225, %219, %215
  br label %278

228:                                              ; preds = %212
  %229 = load i32, ptr %76, align 4, !tbaa !9
  %230 = icmp ne i32 %229, 0
  br i1 %230, label %231, label %277

231:                                              ; preds = %228
  %232 = load ptr, ptr %35, align 8, !tbaa !5
  %233 = load i32, ptr %232, align 4, !tbaa !9
  %234 = icmp slt i32 %233, 1
  br i1 %234, label %248, label %235

235:                                              ; preds = %231
  %236 = load ptr, ptr %35, align 8, !tbaa !5
  %237 = load i32, ptr %236, align 4, !tbaa !9
  %238 = load ptr, ptr %27, align 8, !tbaa !5
  %239 = load i32, ptr %238, align 4, !tbaa !9
  %240 = icmp sge i32 1, %239
  br i1 %240, label %241, label %242

241:                                              ; preds = %235
  br label %245

242:                                              ; preds = %235
  %243 = load ptr, ptr %27, align 8, !tbaa !5
  %244 = load i32, ptr %243, align 4, !tbaa !9
  br label %245

245:                                              ; preds = %242, %241
  %246 = phi i32 [ 1, %241 ], [ %244, %242 ]
  %247 = icmp sgt i32 %237, %246
  br i1 %247, label %248, label %250

248:                                              ; preds = %245, %231
  %249 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -12, ptr %249, align 4, !tbaa !9
  br label %276

250:                                              ; preds = %245
  %251 = load ptr, ptr %36, align 8, !tbaa !5
  %252 = load i32, ptr %251, align 4, !tbaa !9
  %253 = load ptr, ptr %27, align 8, !tbaa !5
  %254 = load i32, ptr %253, align 4, !tbaa !9
  %255 = load ptr, ptr %35, align 8, !tbaa !5
  %256 = load i32, ptr %255, align 4, !tbaa !9
  %257 = icmp sle i32 %254, %256
  br i1 %257, label %258, label %261

258:                                              ; preds = %250
  %259 = load ptr, ptr %27, align 8, !tbaa !5
  %260 = load i32, ptr %259, align 4, !tbaa !9
  br label %264

261:                                              ; preds = %250
  %262 = load ptr, ptr %35, align 8, !tbaa !5
  %263 = load i32, ptr %262, align 4, !tbaa !9
  br label %264

264:                                              ; preds = %261, %258
  %265 = phi i32 [ %260, %258 ], [ %263, %261 ]
  %266 = icmp slt i32 %252, %265
  br i1 %266, label %273, label %267

267:                                              ; preds = %264
  %268 = load ptr, ptr %36, align 8, !tbaa !5
  %269 = load i32, ptr %268, align 4, !tbaa !9
  %270 = load ptr, ptr %27, align 8, !tbaa !5
  %271 = load i32, ptr %270, align 4, !tbaa !9
  %272 = icmp sgt i32 %269, %271
  br i1 %272, label %273, label %275

273:                                              ; preds = %267, %264
  %274 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -13, ptr %274, align 4, !tbaa !9
  br label %275

275:                                              ; preds = %273, %267
  br label %276

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

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

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

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

280:                                              ; preds = %279, %192
  br label %281

281:                                              ; preds = %280, %183
  br label %282

282:                                              ; preds = %281, %177
  br label %283

283:                                              ; preds = %282, %171
  br label %284

284:                                              ; preds = %283, %162
  br label %285

285:                                              ; preds = %284, %151
  %286 = load ptr, ptr %46, align 8, !tbaa !5
  %287 = load i32, ptr %286, align 4, !tbaa !9
  %288 = icmp eq i32 %287, 0
  br i1 %288, label %289, label %305

289:                                              ; preds = %285
  %290 = load ptr, ptr %41, align 8, !tbaa !5
  %291 = load i32, ptr %290, align 4, !tbaa !9
  %292 = icmp slt i32 %291, 1
  br i1 %292, label %302, label %293

293:                                              ; preds = %289
  %294 = load i32, ptr %73, align 4, !tbaa !9
  %295 = icmp ne i32 %294, 0
  br i1 %295, label %296, label %304

296:                                              ; preds = %293
  %297 = load ptr, ptr %41, align 8, !tbaa !5
  %298 = load i32, ptr %297, align 4, !tbaa !9
  %299 = load ptr, ptr %27, align 8, !tbaa !5
  %300 = load i32, ptr %299, align 4, !tbaa !9
  %301 = icmp slt i32 %298, %300
  br i1 %301, label %302, label %304

302:                                              ; preds = %296, %289
  %303 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -18, ptr %303, align 4, !tbaa !9
  br label %304

304:                                              ; preds = %302, %296, %293
  br label %305

305:                                              ; preds = %304, %285
  %306 = load ptr, ptr %46, align 8, !tbaa !5
  %307 = load i32, ptr %306, align 4, !tbaa !9
  %308 = icmp ne i32 %307, 0
  br i1 %308, label %309, label %314

309:                                              ; preds = %305
  %310 = load ptr, ptr %46, align 8, !tbaa !5
  %311 = load i32, ptr %310, align 4, !tbaa !9
  %312 = sub nsw i32 0, %311
  store i32 %312, ptr %53, align 4, !tbaa !9
  %313 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %53, i32 noundef 6)
  store i32 1, ptr %93, align 4
  br label %980

314:                                              ; preds = %305
  %315 = load ptr, ptr %38, align 8, !tbaa !5
  store i32 0, ptr %315, align 4, !tbaa !9
  %316 = load ptr, ptr %27, align 8, !tbaa !5
  %317 = load i32, ptr %316, align 4, !tbaa !9
  %318 = icmp eq i32 %317, 0
  br i1 %318, label %319, label %320

319:                                              ; preds = %314
  store i32 1, ptr %93, align 4
  br label %980

320:                                              ; preds = %314
  %321 = load ptr, ptr %27, align 8, !tbaa !5
  %322 = load i32, ptr %321, align 4, !tbaa !9
  %323 = icmp eq i32 %322, 1
  br i1 %323, label %324, label %409

324:                                              ; preds = %320
  %325 = load ptr, ptr %38, align 8, !tbaa !5
  store i32 1, ptr %325, align 4, !tbaa !9
  %326 = load i32, ptr %72, align 4, !tbaa !9
  %327 = icmp ne i32 %326, 0
  br i1 %327, label %328, label %345

328:                                              ; preds = %324
  %329 = load i32, ptr %47, align 4, !tbaa !9
  %330 = add nsw i32 %329, 1
  store i32 %330, ptr %53, align 4, !tbaa !9
  %331 = load ptr, ptr %29, align 8, !tbaa !5
  %332 = load i32, ptr %53, align 4, !tbaa !9
  %333 = sext i32 %332 to i64
  %334 = getelementptr inbounds %struct.complex, ptr %331, i64 %333
  %335 = getelementptr inbounds %struct.complex, ptr %334, i32 0, i32 0
  %336 = load float, ptr %335, align 4, !tbaa !13
  %337 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 0
  store float %336, ptr %337, align 4, !tbaa !13
  %338 = load ptr, ptr %29, align 8, !tbaa !5
  %339 = load i32, ptr %53, align 4, !tbaa !9
  %340 = sext i32 %339 to i64
  %341 = getelementptr inbounds %struct.complex, ptr %338, i64 %340
  %342 = getelementptr inbounds %struct.complex, ptr %341, i32 0, i32 1
  %343 = load float, ptr %342, align 4, !tbaa !15
  %344 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 1
  store float %343, ptr %344, align 4, !tbaa !15
  br label %365

345:                                              ; preds = %324
  %346 = load ptr, ptr %28, align 8, !tbaa !5
  %347 = load i32, ptr %346, align 4, !tbaa !9
  %348 = add nsw i32 %347, 1
  %349 = load i32, ptr %47, align 4, !tbaa !9
  %350 = add nsw i32 %348, %349
  store i32 %350, ptr %53, align 4, !tbaa !9
  %351 = load ptr, ptr %29, align 8, !tbaa !5
  %352 = load i32, ptr %53, align 4, !tbaa !9
  %353 = sext i32 %352 to i64
  %354 = getelementptr inbounds %struct.complex, ptr %351, i64 %353
  %355 = getelementptr inbounds %struct.complex, ptr %354, i32 0, i32 0
  %356 = load float, ptr %355, align 4, !tbaa !13
  %357 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 0
  store float %356, ptr %357, align 4, !tbaa !13
  %358 = load ptr, ptr %29, align 8, !tbaa !5
  %359 = load i32, ptr %53, align 4, !tbaa !9
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds %struct.complex, ptr %358, i64 %360
  %362 = getelementptr inbounds %struct.complex, ptr %361, i32 0, i32 1
  %363 = load float, ptr %362, align 4, !tbaa !15
  %364 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 1
  store float %363, ptr %364, align 4, !tbaa !15
  br label %365

365:                                              ; preds = %345, %328
  %366 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 0
  %367 = load float, ptr %366, align 4, !tbaa !13
  store float %367, ptr %92, align 4, !tbaa !11
  %368 = load i32, ptr %79, align 4, !tbaa !9
  %369 = icmp ne i32 %368, 0
  br i1 %369, label %370, label %383

370:                                              ; preds = %365
  %371 = load ptr, ptr %33, align 8, !tbaa !5
  %372 = load float, ptr %371, align 4, !tbaa !11
  %373 = load float, ptr %92, align 4, !tbaa !11
  %374 = fcmp olt float %372, %373
  br i1 %374, label %375, label %380

375:                                              ; preds = %370
  %376 = load ptr, ptr %34, align 8, !tbaa !5
  %377 = load float, ptr %376, align 4, !tbaa !11
  %378 = load float, ptr %92, align 4, !tbaa !11
  %379 = fcmp oge float %377, %378
  br i1 %379, label %382, label %380

380:                                              ; preds = %375, %370
  %381 = load ptr, ptr %38, align 8, !tbaa !5
  store i32 0, ptr %381, align 4, !tbaa !9
  br label %382

382:                                              ; preds = %380, %375
  br label %383

383:                                              ; preds = %382, %365
  %384 = load ptr, ptr %38, align 8, !tbaa !5
  %385 = load i32, ptr %384, align 4, !tbaa !9
  %386 = icmp eq i32 %385, 1
  br i1 %386, label %387, label %408

387:                                              ; preds = %383
  %388 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 0
  %389 = load float, ptr %388, align 4, !tbaa !13
  %390 = load ptr, ptr %39, align 8, !tbaa !5
  %391 = getelementptr inbounds float, ptr %390, i64 1
  store float %389, ptr %391, align 4, !tbaa !11
  %392 = load i32, ptr %73, align 4, !tbaa !9
  %393 = icmp ne i32 %392, 0
  br i1 %393, label %394, label %407

394:                                              ; preds = %387
  %395 = load i32, ptr %51, align 4, !tbaa !9
  %396 = add nsw i32 %395, 1
  store i32 %396, ptr %53, align 4, !tbaa !9
  %397 = load ptr, ptr %40, align 8, !tbaa !5
  %398 = load i32, ptr %53, align 4, !tbaa !9
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds %struct.complex, ptr %397, i64 %399
  %401 = getelementptr inbounds %struct.complex, ptr %400, i32 0, i32 0
  store float 1.000000e+00, ptr %401, align 4, !tbaa !13
  %402 = load ptr, ptr %40, align 8, !tbaa !5
  %403 = load i32, ptr %53, align 4, !tbaa !9
  %404 = sext i32 %403 to i64
  %405 = getelementptr inbounds %struct.complex, ptr %402, i64 %404
  %406 = getelementptr inbounds %struct.complex, ptr %405, i32 0, i32 1
  store float 0.000000e+00, ptr %406, align 4, !tbaa !15
  br label %407

407:                                              ; preds = %394, %387
  br label %408

408:                                              ; preds = %407, %383
  store i32 1, ptr %93, align 4
  br label %980

409:                                              ; preds = %320
  %410 = call float @slamch_(ptr noundef @.str.7)
  store float %410, ptr %80, align 4, !tbaa !11
  %411 = call float @slamch_(ptr noundef @.str.8)
  store float %411, ptr %89, align 4, !tbaa !11
  %412 = load float, ptr %80, align 4, !tbaa !11
  %413 = load float, ptr %89, align 4, !tbaa !11
  %414 = fdiv float %412, %413
  store float %414, ptr %88, align 4, !tbaa !11
  %415 = load float, ptr %88, align 4, !tbaa !11
  %416 = fdiv float 1.000000e+00, %415
  store float %416, ptr %82, align 4, !tbaa !11
  %417 = load float, ptr %88, align 4, !tbaa !11
  %418 = fpext float %417 to double
  %419 = call double @sqrt(double noundef %418) #4
  %420 = fptrunc double %419 to float
  store float %420, ptr %61, align 4, !tbaa !11
  %421 = load float, ptr %82, align 4, !tbaa !11
  %422 = fpext float %421 to double
  %423 = call double @sqrt(double noundef %422) #4
  %424 = fptrunc double %423 to float
  store float %424, ptr %55, align 4, !tbaa !11
  %425 = load float, ptr %80, align 4, !tbaa !11
  %426 = fpext float %425 to double
  %427 = call double @sqrt(double noundef %426) #4
  %428 = call double @sqrt(double noundef %427) #4
  %429 = fdiv double 1.000000e+00, %428
  %430 = fptrunc double %429 to float
  store float %430, ptr %56, align 4, !tbaa !11
  %431 = load float, ptr %55, align 4, !tbaa !11
  %432 = load float, ptr %56, align 4, !tbaa !11
  %433 = fcmp ole float %431, %432
  br i1 %433, label %434, label %436

434:                                              ; preds = %409
  %435 = load float, ptr %55, align 4, !tbaa !11
  br label %438

436:                                              ; preds = %409
  %437 = load float, ptr %56, align 4, !tbaa !11
  br label %438

438:                                              ; preds = %436, %434
  %439 = phi float [ %435, %434 ], [ %437, %436 ]
  store float %439, ptr %62, align 4, !tbaa !11
  store i32 0, ptr %77, align 4, !tbaa !9
  %440 = load ptr, ptr %37, align 8, !tbaa !5
  %441 = load float, ptr %440, align 4, !tbaa !11
  store float %441, ptr %81, align 4, !tbaa !11
  %442 = load i32, ptr %79, align 4, !tbaa !9
  %443 = icmp ne i32 %442, 0
  br i1 %443, label %444, label %449

444:                                              ; preds = %438
  %445 = load ptr, ptr %33, align 8, !tbaa !5
  %446 = load float, ptr %445, align 4, !tbaa !11
  store float %446, ptr %90, align 4, !tbaa !11
  %447 = load ptr, ptr %34, align 8, !tbaa !5
  %448 = load float, ptr %447, align 4, !tbaa !11
  store float %448, ptr %91, align 4, !tbaa !11
  br label %450

449:                                              ; preds = %438
  store float 0.000000e+00, ptr %90, align 4, !tbaa !11
  store float 0.000000e+00, ptr %91, align 4, !tbaa !11
  br label %450

450:                                              ; preds = %449, %444
  %451 = load ptr, ptr %26, align 8, !tbaa !5
  %452 = load ptr, ptr %27, align 8, !tbaa !5
  %453 = load ptr, ptr %28, align 8, !tbaa !5
  %454 = load ptr, ptr %29, align 8, !tbaa !5
  %455 = load i32, ptr %48, align 4, !tbaa !9
  %456 = sext i32 %455 to i64
  %457 = getelementptr inbounds %struct.complex, ptr %454, i64 %456
  %458 = load ptr, ptr %30, align 8, !tbaa !5
  %459 = load ptr, ptr %43, align 8, !tbaa !5
  %460 = getelementptr inbounds float, ptr %459, i64 1
  %461 = call float @clanhb_(ptr noundef @.str.9, ptr noundef %451, ptr noundef %452, ptr noundef %453, ptr noundef %457, ptr noundef %458, ptr noundef %460)
  store float %461, ptr %59, align 4, !tbaa !11
  %462 = load float, ptr %59, align 4, !tbaa !11
  %463 = fcmp ogt float %462, 0.000000e+00
  br i1 %463, label %464, label %472

464:                                              ; preds = %450
  %465 = load float, ptr %59, align 4, !tbaa !11
  %466 = load float, ptr %61, align 4, !tbaa !11
  %467 = fcmp olt float %465, %466
  br i1 %467, label %468, label %472

468:                                              ; preds = %464
  store i32 1, ptr %77, align 4, !tbaa !9
  %469 = load float, ptr %61, align 4, !tbaa !11
  %470 = load float, ptr %59, align 4, !tbaa !11
  %471 = fdiv float %469, %470
  store float %471, ptr %69, align 4, !tbaa !11
  br label %481

472:                                              ; preds = %464, %450
  %473 = load float, ptr %59, align 4, !tbaa !11
  %474 = load float, ptr %62, align 4, !tbaa !11
  %475 = fcmp ogt float %473, %474
  br i1 %475, label %476, label %480

476:                                              ; preds = %472
  store i32 1, ptr %77, align 4, !tbaa !9
  %477 = load float, ptr %62, align 4, !tbaa !11
  %478 = load float, ptr %59, align 4, !tbaa !11
  %479 = fdiv float %477, %478
  store float %479, ptr %69, align 4, !tbaa !11
  br label %480

480:                                              ; preds = %476, %472
  br label %481

481:                                              ; preds = %480, %468
  %482 = load i32, ptr %77, align 4, !tbaa !9
  %483 = icmp eq i32 %482, 1
  br i1 %483, label %484, label %531

484:                                              ; preds = %481
  %485 = load i32, ptr %72, align 4, !tbaa !9
  %486 = icmp ne i32 %485, 0
  br i1 %486, label %487, label %498

487:                                              ; preds = %484
  %488 = load ptr, ptr %28, align 8, !tbaa !5
  %489 = load ptr, ptr %28, align 8, !tbaa !5
  %490 = load ptr, ptr %27, align 8, !tbaa !5
  %491 = load ptr, ptr %27, align 8, !tbaa !5
  %492 = load ptr, ptr %29, align 8, !tbaa !5
  %493 = load i32, ptr %48, align 4, !tbaa !9
  %494 = sext i32 %493 to i64
  %495 = getelementptr inbounds %struct.complex, ptr %492, i64 %494
  %496 = load ptr, ptr %30, align 8, !tbaa !5
  %497 = load ptr, ptr %46, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.10, ptr noundef %488, ptr noundef %489, ptr noundef @c_b16, ptr noundef %69, ptr noundef %490, ptr noundef %491, ptr noundef %495, ptr noundef %496, ptr noundef %497)
  br label %509

498:                                              ; preds = %484
  %499 = load ptr, ptr %28, align 8, !tbaa !5
  %500 = load ptr, ptr %28, align 8, !tbaa !5
  %501 = load ptr, ptr %27, align 8, !tbaa !5
  %502 = load ptr, ptr %27, align 8, !tbaa !5
  %503 = load ptr, ptr %29, align 8, !tbaa !5
  %504 = load i32, ptr %48, align 4, !tbaa !9
  %505 = sext i32 %504 to i64
  %506 = getelementptr inbounds %struct.complex, ptr %503, i64 %505
  %507 = load ptr, ptr %30, align 8, !tbaa !5
  %508 = load ptr, ptr %46, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.11, ptr noundef %499, ptr noundef %500, ptr noundef @c_b16, ptr noundef %69, ptr noundef %501, ptr noundef %502, ptr noundef %506, ptr noundef %507, ptr noundef %508)
  br label %509

509:                                              ; preds = %498, %487
  %510 = load ptr, ptr %37, align 8, !tbaa !5
  %511 = load float, ptr %510, align 4, !tbaa !11
  %512 = fcmp ogt float %511, 0.000000e+00
  br i1 %512, label %513, label %518

513:                                              ; preds = %509
  %514 = load ptr, ptr %37, align 8, !tbaa !5
  %515 = load float, ptr %514, align 4, !tbaa !11
  %516 = load float, ptr %69, align 4, !tbaa !11
  %517 = fmul float %515, %516
  store float %517, ptr %81, align 4, !tbaa !11
  br label %518

518:                                              ; preds = %513, %509
  %519 = load i32, ptr %79, align 4, !tbaa !9
  %520 = icmp ne i32 %519, 0
  br i1 %520, label %521, label %530

521:                                              ; preds = %518
  %522 = load ptr, ptr %33, align 8, !tbaa !5
  %523 = load float, ptr %522, align 4, !tbaa !11
  %524 = load float, ptr %69, align 4, !tbaa !11
  %525 = fmul float %523, %524
  store float %525, ptr %90, align 4, !tbaa !11
  %526 = load ptr, ptr %34, align 8, !tbaa !5
  %527 = load float, ptr %526, align 4, !tbaa !11
  %528 = load float, ptr %69, align 4, !tbaa !11
  %529 = fmul float %527, %528
  store float %529, ptr %91, align 4, !tbaa !11
  br label %530

530:                                              ; preds = %521, %518
  br label %531

531:                                              ; preds = %530, %481
  store i32 1, ptr %57, align 4, !tbaa !9
  %532 = load i32, ptr %57, align 4, !tbaa !9
  %533 = load ptr, ptr %27, align 8, !tbaa !5
  %534 = load i32, ptr %533, align 4, !tbaa !9
  %535 = add nsw i32 %532, %534
  store i32 %535, ptr %58, align 4, !tbaa !9
  %536 = load i32, ptr %58, align 4, !tbaa !9
  %537 = load ptr, ptr %27, align 8, !tbaa !5
  %538 = load i32, ptr %537, align 4, !tbaa !9
  %539 = add nsw i32 %536, %538
  store i32 %539, ptr %85, align 4, !tbaa !9
  store i32 1, ptr %86, align 4, !tbaa !9
  %540 = load ptr, ptr %24, align 8, !tbaa !5
  %541 = load ptr, ptr %26, align 8, !tbaa !5
  %542 = load ptr, ptr %27, align 8, !tbaa !5
  %543 = load ptr, ptr %28, align 8, !tbaa !5
  %544 = load ptr, ptr %29, align 8, !tbaa !5
  %545 = load i32, ptr %48, align 4, !tbaa !9
  %546 = sext i32 %545 to i64
  %547 = getelementptr inbounds %struct.complex, ptr %544, i64 %546
  %548 = load ptr, ptr %30, align 8, !tbaa !5
  %549 = load ptr, ptr %43, align 8, !tbaa !5
  %550 = load i32, ptr %57, align 4, !tbaa !9
  %551 = sext i32 %550 to i64
  %552 = getelementptr inbounds float, ptr %549, i64 %551
  %553 = load ptr, ptr %43, align 8, !tbaa !5
  %554 = load i32, ptr %58, align 4, !tbaa !9
  %555 = sext i32 %554 to i64
  %556 = getelementptr inbounds float, ptr %553, i64 %555
  %557 = load ptr, ptr %31, align 8, !tbaa !5
  %558 = load i32, ptr %50, align 4, !tbaa !9
  %559 = sext i32 %558 to i64
  %560 = getelementptr inbounds %struct.complex, ptr %557, i64 %559
  %561 = load ptr, ptr %32, align 8, !tbaa !5
  %562 = load ptr, ptr %42, align 8, !tbaa !5
  %563 = load i32, ptr %86, align 4, !tbaa !9
  %564 = sext i32 %563 to i64
  %565 = getelementptr inbounds %struct.complex, ptr %562, i64 %564
  call void @chbtrd_(ptr noundef %540, ptr noundef %541, ptr noundef %542, ptr noundef %543, ptr noundef %547, ptr noundef %548, ptr noundef %552, ptr noundef %556, ptr noundef %560, ptr noundef %561, ptr noundef %565, ptr noundef %70)
  store i32 0, ptr %63, align 4, !tbaa !9
  %566 = load i32, ptr %76, align 4, !tbaa !9
  %567 = icmp ne i32 %566, 0
  br i1 %567, label %568, label %580

568:                                              ; preds = %531
  %569 = load ptr, ptr %35, align 8, !tbaa !5
  %570 = load i32, ptr %569, align 4, !tbaa !9
  %571 = icmp eq i32 %570, 1
  br i1 %571, label %572, label %579

572:                                              ; preds = %568
  %573 = load ptr, ptr %36, align 8, !tbaa !5
  %574 = load i32, ptr %573, align 4, !tbaa !9
  %575 = load ptr, ptr %27, align 8, !tbaa !5
  %576 = load i32, ptr %575, align 4, !tbaa !9
  %577 = icmp eq i32 %574, %576
  br i1 %577, label %578, label %579

578:                                              ; preds = %572
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %579

579:                                              ; preds = %578, %572, %568
  br label %580

580:                                              ; preds = %579, %531
  %581 = load i32, ptr %75, align 4, !tbaa !9
  %582 = icmp ne i32 %581, 0
  br i1 %582, label %586, label %583

583:                                              ; preds = %580
  %584 = load i32, ptr %63, align 4, !tbaa !9
  %585 = icmp ne i32 %584, 0
  br i1 %585, label %586, label %697

586:                                              ; preds = %583, %580
  %587 = load ptr, ptr %37, align 8, !tbaa !5
  %588 = load float, ptr %587, align 4, !tbaa !11
  %589 = fcmp ole float %588, 0.000000e+00
  br i1 %589, label %590, label %697

590:                                              ; preds = %586
  %591 = load ptr, ptr %27, align 8, !tbaa !5
  %592 = load ptr, ptr %43, align 8, !tbaa !5
  %593 = load i32, ptr %57, align 4, !tbaa !9
  %594 = sext i32 %593 to i64
  %595 = getelementptr inbounds float, ptr %592, i64 %594
  %596 = load ptr, ptr %39, align 8, !tbaa !5
  %597 = getelementptr inbounds float, ptr %596, i64 1
  call void @scopy_(ptr noundef %591, ptr noundef %595, ptr noundef @c__1, ptr noundef %597, ptr noundef @c__1)
  %598 = load i32, ptr %85, align 4, !tbaa !9
  %599 = load ptr, ptr %27, align 8, !tbaa !5
  %600 = load i32, ptr %599, align 4, !tbaa !9
  %601 = shl i32 %600, 1
  %602 = add nsw i32 %598, %601
  store i32 %602, ptr %68, align 4, !tbaa !9
  %603 = load i32, ptr %73, align 4, !tbaa !9
  %604 = icmp ne i32 %603, 0
  br i1 %604, label %625, label %605

605:                                              ; preds = %590
  %606 = load ptr, ptr %27, align 8, !tbaa !5
  %607 = load i32, ptr %606, align 4, !tbaa !9
  %608 = sub nsw i32 %607, 1
  store i32 %608, ptr %53, align 4, !tbaa !9
  %609 = load ptr, ptr %43, align 8, !tbaa !5
  %610 = load i32, ptr %58, align 4, !tbaa !9
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds float, ptr %609, i64 %611
  %613 = load ptr, ptr %43, align 8, !tbaa !5
  %614 = load i32, ptr %68, align 4, !tbaa !9
  %615 = sext i32 %614 to i64
  %616 = getelementptr inbounds float, ptr %613, i64 %615
  call void @scopy_(ptr noundef %53, ptr noundef %612, ptr noundef @c__1, ptr noundef %616, ptr noundef @c__1)
  %617 = load ptr, ptr %27, align 8, !tbaa !5
  %618 = load ptr, ptr %39, align 8, !tbaa !5
  %619 = getelementptr inbounds float, ptr %618, i64 1
  %620 = load ptr, ptr %43, align 8, !tbaa !5
  %621 = load i32, ptr %68, align 4, !tbaa !9
  %622 = sext i32 %621 to i64
  %623 = getelementptr inbounds float, ptr %620, i64 %622
  %624 = load ptr, ptr %46, align 8, !tbaa !5
  call void @ssterf_(ptr noundef %617, ptr noundef %619, ptr noundef %623, ptr noundef %624)
  br label %687

625:                                              ; preds = %590
  %626 = load ptr, ptr %27, align 8, !tbaa !5
  %627 = load ptr, ptr %27, align 8, !tbaa !5
  %628 = load ptr, ptr %31, align 8, !tbaa !5
  %629 = load i32, ptr %50, align 4, !tbaa !9
  %630 = sext i32 %629 to i64
  %631 = getelementptr inbounds %struct.complex, ptr %628, i64 %630
  %632 = load ptr, ptr %32, align 8, !tbaa !5
  %633 = load ptr, ptr %40, align 8, !tbaa !5
  %634 = load i32, ptr %52, align 4, !tbaa !9
  %635 = sext i32 %634 to i64
  %636 = getelementptr inbounds %struct.complex, ptr %633, i64 %635
  %637 = load ptr, ptr %41, align 8, !tbaa !5
  call void @clacpy_(ptr noundef @.str.1, ptr noundef %626, ptr noundef %627, ptr noundef %631, ptr noundef %632, ptr noundef %636, ptr noundef %637)
  %638 = load ptr, ptr %27, align 8, !tbaa !5
  %639 = load i32, ptr %638, align 4, !tbaa !9
  %640 = sub nsw i32 %639, 1
  store i32 %640, ptr %53, align 4, !tbaa !9
  %641 = load ptr, ptr %43, align 8, !tbaa !5
  %642 = load i32, ptr %58, align 4, !tbaa !9
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds float, ptr %641, i64 %643
  %645 = load ptr, ptr %43, align 8, !tbaa !5
  %646 = load i32, ptr %68, align 4, !tbaa !9
  %647 = sext i32 %646 to i64
  %648 = getelementptr inbounds float, ptr %645, i64 %647
  call void @scopy_(ptr noundef %53, ptr noundef %644, ptr noundef @c__1, ptr noundef %648, ptr noundef @c__1)
  %649 = load ptr, ptr %24, align 8, !tbaa !5
  %650 = load ptr, ptr %27, align 8, !tbaa !5
  %651 = load ptr, ptr %39, align 8, !tbaa !5
  %652 = getelementptr inbounds float, ptr %651, i64 1
  %653 = load ptr, ptr %43, align 8, !tbaa !5
  %654 = load i32, ptr %68, align 4, !tbaa !9
  %655 = sext i32 %654 to i64
  %656 = getelementptr inbounds float, ptr %653, i64 %655
  %657 = load ptr, ptr %40, align 8, !tbaa !5
  %658 = load i32, ptr %52, align 4, !tbaa !9
  %659 = sext i32 %658 to i64
  %660 = getelementptr inbounds %struct.complex, ptr %657, i64 %659
  %661 = load ptr, ptr %41, align 8, !tbaa !5
  %662 = load ptr, ptr %43, align 8, !tbaa !5
  %663 = load i32, ptr %85, align 4, !tbaa !9
  %664 = sext i32 %663 to i64
  %665 = getelementptr inbounds float, ptr %662, i64 %664
  %666 = load ptr, ptr %46, align 8, !tbaa !5
  call void @csteqr_(ptr noundef %649, ptr noundef %650, ptr noundef %652, ptr noundef %656, ptr noundef %660, ptr noundef %661, ptr noundef %665, ptr noundef %666)
  %667 = load ptr, ptr %46, align 8, !tbaa !5
  %668 = load i32, ptr %667, align 4, !tbaa !9
  %669 = icmp eq i32 %668, 0
  br i1 %669, label %670, label %686

670:                                              ; preds = %625
  %671 = load ptr, ptr %27, align 8, !tbaa !5
  %672 = load i32, ptr %671, align 4, !tbaa !9
  store i32 %672, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %66, align 4, !tbaa !9
  br label %673

673:                                              ; preds = %682, %670
  %674 = load i32, ptr %66, align 4, !tbaa !9
  %675 = load i32, ptr %53, align 4, !tbaa !9
  %676 = icmp sle i32 %674, %675
  br i1 %676, label %677, label %685

677:                                              ; preds = %673
  %678 = load ptr, ptr %45, align 8, !tbaa !5
  %679 = load i32, ptr %66, align 4, !tbaa !9
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds i32, ptr %678, i64 %680
  store i32 0, ptr %681, align 4, !tbaa !9
  br label %682

682:                                              ; preds = %677
  %683 = load i32, ptr %66, align 4, !tbaa !9
  %684 = add nsw i32 %683, 1
  store i32 %684, ptr %66, align 4, !tbaa !9
  br label %673, !llvm.loop !16

685:                                              ; preds = %673
  br label %686

686:                                              ; preds = %685, %625
  br label %687

687:                                              ; preds = %686, %605
  %688 = load ptr, ptr %46, align 8, !tbaa !5
  %689 = load i32, ptr %688, align 4, !tbaa !9
  %690 = icmp eq i32 %689, 0
  br i1 %690, label %691, label %695

691:                                              ; preds = %687
  %692 = load ptr, ptr %27, align 8, !tbaa !5
  %693 = load i32, ptr %692, align 4, !tbaa !9
  %694 = load ptr, ptr %38, align 8, !tbaa !5
  store i32 %693, ptr %694, align 4, !tbaa !9
  br label %823

695:                                              ; preds = %687
  %696 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 0, ptr %696, align 4, !tbaa !9
  br label %697

697:                                              ; preds = %695, %586, %583
  %698 = load i32, ptr %73, align 4, !tbaa !9
  %699 = icmp ne i32 %698, 0
  br i1 %699, label %700, label %702

700:                                              ; preds = %697
  %701 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  store i8 66, ptr %701, align 1, !tbaa !18
  br label %704

702:                                              ; preds = %697
  %703 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  store i8 69, ptr %703, align 1, !tbaa !18
  br label %704

704:                                              ; preds = %702, %700
  store i32 1, ptr %78, align 4, !tbaa !9
  %705 = load i32, ptr %78, align 4, !tbaa !9
  %706 = load ptr, ptr %27, align 8, !tbaa !5
  %707 = load i32, ptr %706, align 4, !tbaa !9
  %708 = add nsw i32 %705, %707
  store i32 %708, ptr %84, align 4, !tbaa !9
  %709 = load i32, ptr %84, align 4, !tbaa !9
  %710 = load ptr, ptr %27, align 8, !tbaa !5
  %711 = load i32, ptr %710, align 4, !tbaa !9
  %712 = add nsw i32 %709, %711
  store i32 %712, ptr %83, align 4, !tbaa !9
  %713 = load ptr, ptr %25, align 8, !tbaa !5
  %714 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  %715 = load ptr, ptr %27, align 8, !tbaa !5
  %716 = load ptr, ptr %35, align 8, !tbaa !5
  %717 = load ptr, ptr %36, align 8, !tbaa !5
  %718 = load ptr, ptr %43, align 8, !tbaa !5
  %719 = load i32, ptr %57, align 4, !tbaa !9
  %720 = sext i32 %719 to i64
  %721 = getelementptr inbounds float, ptr %718, i64 %720
  %722 = load ptr, ptr %43, align 8, !tbaa !5
  %723 = load i32, ptr %58, align 4, !tbaa !9
  %724 = sext i32 %723 to i64
  %725 = getelementptr inbounds float, ptr %722, i64 %724
  %726 = load ptr, ptr %38, align 8, !tbaa !5
  %727 = load ptr, ptr %39, align 8, !tbaa !5
  %728 = getelementptr inbounds float, ptr %727, i64 1
  %729 = load ptr, ptr %44, align 8, !tbaa !5
  %730 = load i32, ptr %78, align 4, !tbaa !9
  %731 = sext i32 %730 to i64
  %732 = getelementptr inbounds i32, ptr %729, i64 %731
  %733 = load ptr, ptr %44, align 8, !tbaa !5
  %734 = load i32, ptr %84, align 4, !tbaa !9
  %735 = sext i32 %734 to i64
  %736 = getelementptr inbounds i32, ptr %733, i64 %735
  %737 = load ptr, ptr %43, align 8, !tbaa !5
  %738 = load i32, ptr %85, align 4, !tbaa !9
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds float, ptr %737, i64 %739
  %741 = load ptr, ptr %44, align 8, !tbaa !5
  %742 = load i32, ptr %83, align 4, !tbaa !9
  %743 = sext i32 %742 to i64
  %744 = getelementptr inbounds i32, ptr %741, i64 %743
  %745 = load ptr, ptr %46, align 8, !tbaa !5
  call void @sstebz_(ptr noundef %713, ptr noundef %714, ptr noundef %715, ptr noundef %90, ptr noundef %91, ptr noundef %716, ptr noundef %717, ptr noundef %81, ptr noundef %721, ptr noundef %725, ptr noundef %726, ptr noundef %87, ptr noundef %728, ptr noundef %732, ptr noundef %736, ptr noundef %740, ptr noundef %744, ptr noundef %745)
  %746 = load i32, ptr %73, align 4, !tbaa !9
  %747 = icmp ne i32 %746, 0
  br i1 %747, label %748, label %822

748:                                              ; preds = %704
  %749 = load ptr, ptr %27, align 8, !tbaa !5
  %750 = load ptr, ptr %43, align 8, !tbaa !5
  %751 = load i32, ptr %57, align 4, !tbaa !9
  %752 = sext i32 %751 to i64
  %753 = getelementptr inbounds float, ptr %750, i64 %752
  %754 = load ptr, ptr %43, align 8, !tbaa !5
  %755 = load i32, ptr %58, align 4, !tbaa !9
  %756 = sext i32 %755 to i64
  %757 = getelementptr inbounds float, ptr %754, i64 %756
  %758 = load ptr, ptr %38, align 8, !tbaa !5
  %759 = load ptr, ptr %39, align 8, !tbaa !5
  %760 = getelementptr inbounds float, ptr %759, i64 1
  %761 = load ptr, ptr %44, align 8, !tbaa !5
  %762 = load i32, ptr %78, align 4, !tbaa !9
  %763 = sext i32 %762 to i64
  %764 = getelementptr inbounds i32, ptr %761, i64 %763
  %765 = load ptr, ptr %44, align 8, !tbaa !5
  %766 = load i32, ptr %84, align 4, !tbaa !9
  %767 = sext i32 %766 to i64
  %768 = getelementptr inbounds i32, ptr %765, i64 %767
  %769 = load ptr, ptr %40, align 8, !tbaa !5
  %770 = load i32, ptr %52, align 4, !tbaa !9
  %771 = sext i32 %770 to i64
  %772 = getelementptr inbounds %struct.complex, ptr %769, i64 %771
  %773 = load ptr, ptr %41, align 8, !tbaa !5
  %774 = load ptr, ptr %43, align 8, !tbaa !5
  %775 = load i32, ptr %85, align 4, !tbaa !9
  %776 = sext i32 %775 to i64
  %777 = getelementptr inbounds float, ptr %774, i64 %776
  %778 = load ptr, ptr %44, align 8, !tbaa !5
  %779 = load i32, ptr %83, align 4, !tbaa !9
  %780 = sext i32 %779 to i64
  %781 = getelementptr inbounds i32, ptr %778, i64 %780
  %782 = load ptr, ptr %45, align 8, !tbaa !5
  %783 = getelementptr inbounds i32, ptr %782, i64 1
  %784 = load ptr, ptr %46, align 8, !tbaa !5
  call void @cstein_(ptr noundef %749, ptr noundef %753, ptr noundef %757, ptr noundef %758, ptr noundef %760, ptr noundef %764, ptr noundef %768, ptr noundef %772, ptr noundef %773, ptr noundef %777, ptr noundef %781, ptr noundef %783, ptr noundef %784)
  %785 = load ptr, ptr %38, align 8, !tbaa !5
  %786 = load i32, ptr %785, align 4, !tbaa !9
  store i32 %786, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %787

787:                                              ; preds = %818, %748
  %788 = load i32, ptr %67, align 4, !tbaa !9
  %789 = load i32, ptr %53, align 4, !tbaa !9
  %790 = icmp sle i32 %788, %789
  br i1 %790, label %791, label %821

791:                                              ; preds = %787
  %792 = load ptr, ptr %27, align 8, !tbaa !5
  %793 = load ptr, ptr %40, align 8, !tbaa !5
  %794 = load i32, ptr %67, align 4, !tbaa !9
  %795 = load i32, ptr %51, align 4, !tbaa !9
  %796 = mul nsw i32 %794, %795
  %797 = add nsw i32 %796, 1
  %798 = sext i32 %797 to i64
  %799 = getelementptr inbounds %struct.complex, ptr %793, i64 %798
  %800 = load ptr, ptr %42, align 8, !tbaa !5
  %801 = getelementptr inbounds %struct.complex, ptr %800, i64 1
  call void @ccopy_(ptr noundef %792, ptr noundef %799, ptr noundef @c__1, ptr noundef %801, ptr noundef @c__1)
  %802 = load ptr, ptr %27, align 8, !tbaa !5
  %803 = load ptr, ptr %27, align 8, !tbaa !5
  %804 = load ptr, ptr %31, align 8, !tbaa !5
  %805 = load i32, ptr %50, align 4, !tbaa !9
  %806 = sext i32 %805 to i64
  %807 = getelementptr inbounds %struct.complex, ptr %804, i64 %806
  %808 = load ptr, ptr %32, align 8, !tbaa !5
  %809 = load ptr, ptr %42, align 8, !tbaa !5
  %810 = getelementptr inbounds %struct.complex, ptr %809, i64 1
  %811 = load ptr, ptr %40, align 8, !tbaa !5
  %812 = load i32, ptr %67, align 4, !tbaa !9
  %813 = load i32, ptr %51, align 4, !tbaa !9
  %814 = mul nsw i32 %812, %813
  %815 = add nsw i32 %814, 1
  %816 = sext i32 %815 to i64
  %817 = getelementptr inbounds %struct.complex, ptr %811, i64 %816
  call void @cgemv_(ptr noundef @.str.4, ptr noundef %802, ptr noundef %803, ptr noundef @c_b2, ptr noundef %807, ptr noundef %808, ptr noundef %810, ptr noundef @c__1, ptr noundef @c_b1, ptr noundef %817, ptr noundef @c__1)
  br label %818

818:                                              ; preds = %791
  %819 = load i32, ptr %67, align 4, !tbaa !9
  %820 = add nsw i32 %819, 1
  store i32 %820, ptr %67, align 4, !tbaa !9
  br label %787, !llvm.loop !19

821:                                              ; preds = %787
  br label %822

822:                                              ; preds = %821, %704
  br label %823

823:                                              ; preds = %822, %691
  %824 = load i32, ptr %77, align 4, !tbaa !9
  %825 = icmp eq i32 %824, 1
  br i1 %825, label %826, label %842

826:                                              ; preds = %823
  %827 = load ptr, ptr %46, align 8, !tbaa !5
  %828 = load i32, ptr %827, align 4, !tbaa !9
  %829 = icmp eq i32 %828, 0
  br i1 %829, label %830, label %833

830:                                              ; preds = %826
  %831 = load ptr, ptr %38, align 8, !tbaa !5
  %832 = load i32, ptr %831, align 4, !tbaa !9
  store i32 %832, ptr %60, align 4, !tbaa !9
  br label %837

833:                                              ; preds = %826
  %834 = load ptr, ptr %46, align 8, !tbaa !5
  %835 = load i32, ptr %834, align 4, !tbaa !9
  %836 = sub nsw i32 %835, 1
  store i32 %836, ptr %60, align 4, !tbaa !9
  br label %837

837:                                              ; preds = %833, %830
  %838 = load float, ptr %69, align 4, !tbaa !11
  %839 = fdiv float 1.000000e+00, %838
  store float %839, ptr %55, align 4, !tbaa !11
  %840 = load ptr, ptr %39, align 8, !tbaa !5
  %841 = getelementptr inbounds float, ptr %840, i64 1
  call void @sscal_(ptr noundef %60, ptr noundef %55, ptr noundef %841, ptr noundef @c__1)
  br label %842

842:                                              ; preds = %837, %823
  %843 = load i32, ptr %73, align 4, !tbaa !9
  %844 = icmp ne i32 %843, 0
  br i1 %844, label %845, label %979

845:                                              ; preds = %842
  %846 = load ptr, ptr %38, align 8, !tbaa !5
  %847 = load i32, ptr %846, align 4, !tbaa !9
  %848 = sub nsw i32 %847, 1
  store i32 %848, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %849

849:                                              ; preds = %975, %845
  %850 = load i32, ptr %67, align 4, !tbaa !9
  %851 = load i32, ptr %53, align 4, !tbaa !9
  %852 = icmp sle i32 %850, %851
  br i1 %852, label %853, label %978

853:                                              ; preds = %849
  store i32 0, ptr %66, align 4, !tbaa !9
  %854 = load ptr, ptr %39, align 8, !tbaa !5
  %855 = load i32, ptr %67, align 4, !tbaa !9
  %856 = sext i32 %855 to i64
  %857 = getelementptr inbounds float, ptr %854, i64 %856
  %858 = load float, ptr %857, align 4, !tbaa !11
  store float %858, ptr %92, align 4, !tbaa !11
  %859 = load ptr, ptr %38, align 8, !tbaa !5
  %860 = load i32, ptr %859, align 4, !tbaa !9
  store i32 %860, ptr %54, align 4, !tbaa !9
  %861 = load i32, ptr %67, align 4, !tbaa !9
  %862 = add nsw i32 %861, 1
  store i32 %862, ptr %74, align 4, !tbaa !9
  br label %863

863:                                              ; preds = %883, %853
  %864 = load i32, ptr %74, align 4, !tbaa !9
  %865 = load i32, ptr %54, align 4, !tbaa !9
  %866 = icmp sle i32 %864, %865
  br i1 %866, label %867, label %886

867:                                              ; preds = %863
  %868 = load ptr, ptr %39, align 8, !tbaa !5
  %869 = load i32, ptr %74, align 4, !tbaa !9
  %870 = sext i32 %869 to i64
  %871 = getelementptr inbounds float, ptr %868, i64 %870
  %872 = load float, ptr %871, align 4, !tbaa !11
  %873 = load float, ptr %92, align 4, !tbaa !11
  %874 = fcmp olt float %872, %873
  br i1 %874, label %875, label %882

875:                                              ; preds = %867
  %876 = load i32, ptr %74, align 4, !tbaa !9
  store i32 %876, ptr %66, align 4, !tbaa !9
  %877 = load ptr, ptr %39, align 8, !tbaa !5
  %878 = load i32, ptr %74, align 4, !tbaa !9
  %879 = sext i32 %878 to i64
  %880 = getelementptr inbounds float, ptr %877, i64 %879
  %881 = load float, ptr %880, align 4, !tbaa !11
  store float %881, ptr %92, align 4, !tbaa !11
  br label %882

882:                                              ; preds = %875, %867
  br label %883

883:                                              ; preds = %882
  %884 = load i32, ptr %74, align 4, !tbaa !9
  %885 = add nsw i32 %884, 1
  store i32 %885, ptr %74, align 4, !tbaa !9
  br label %863, !llvm.loop !20

886:                                              ; preds = %863
  %887 = load i32, ptr %66, align 4, !tbaa !9
  %888 = icmp ne i32 %887, 0
  br i1 %888, label %889, label %974

889:                                              ; preds = %886
  %890 = load ptr, ptr %44, align 8, !tbaa !5
  %891 = load i32, ptr %78, align 4, !tbaa !9
  %892 = load i32, ptr %66, align 4, !tbaa !9
  %893 = add nsw i32 %891, %892
  %894 = sub nsw i32 %893, 1
  %895 = sext i32 %894 to i64
  %896 = getelementptr inbounds i32, ptr %890, i64 %895
  %897 = load i32, ptr %896, align 4, !tbaa !9
  store i32 %897, ptr %65, align 4, !tbaa !9
  %898 = load ptr, ptr %39, align 8, !tbaa !5
  %899 = load i32, ptr %67, align 4, !tbaa !9
  %900 = sext i32 %899 to i64
  %901 = getelementptr inbounds float, ptr %898, i64 %900
  %902 = load float, ptr %901, align 4, !tbaa !11
  %903 = load ptr, ptr %39, align 8, !tbaa !5
  %904 = load i32, ptr %66, align 4, !tbaa !9
  %905 = sext i32 %904 to i64
  %906 = getelementptr inbounds float, ptr %903, i64 %905
  store float %902, ptr %906, align 4, !tbaa !11
  %907 = load ptr, ptr %44, align 8, !tbaa !5
  %908 = load i32, ptr %78, align 4, !tbaa !9
  %909 = load i32, ptr %67, align 4, !tbaa !9
  %910 = add nsw i32 %908, %909
  %911 = sub nsw i32 %910, 1
  %912 = sext i32 %911 to i64
  %913 = getelementptr inbounds i32, ptr %907, i64 %912
  %914 = load i32, ptr %913, align 4, !tbaa !9
  %915 = load ptr, ptr %44, align 8, !tbaa !5
  %916 = load i32, ptr %78, align 4, !tbaa !9
  %917 = load i32, ptr %66, align 4, !tbaa !9
  %918 = add nsw i32 %916, %917
  %919 = sub nsw i32 %918, 1
  %920 = sext i32 %919 to i64
  %921 = getelementptr inbounds i32, ptr %915, i64 %920
  store i32 %914, ptr %921, align 4, !tbaa !9
  %922 = load float, ptr %92, align 4, !tbaa !11
  %923 = load ptr, ptr %39, align 8, !tbaa !5
  %924 = load i32, ptr %67, align 4, !tbaa !9
  %925 = sext i32 %924 to i64
  %926 = getelementptr inbounds float, ptr %923, i64 %925
  store float %922, ptr %926, align 4, !tbaa !11
  %927 = load i32, ptr %65, align 4, !tbaa !9
  %928 = load ptr, ptr %44, align 8, !tbaa !5
  %929 = load i32, ptr %78, align 4, !tbaa !9
  %930 = load i32, ptr %67, align 4, !tbaa !9
  %931 = add nsw i32 %929, %930
  %932 = sub nsw i32 %931, 1
  %933 = sext i32 %932 to i64
  %934 = getelementptr inbounds i32, ptr %928, i64 %933
  store i32 %927, ptr %934, align 4, !tbaa !9
  %935 = load ptr, ptr %27, align 8, !tbaa !5
  %936 = load ptr, ptr %40, align 8, !tbaa !5
  %937 = load i32, ptr %66, align 4, !tbaa !9
  %938 = load i32, ptr %51, align 4, !tbaa !9
  %939 = mul nsw i32 %937, %938
  %940 = add nsw i32 %939, 1
  %941 = sext i32 %940 to i64
  %942 = getelementptr inbounds %struct.complex, ptr %936, i64 %941
  %943 = load ptr, ptr %40, align 8, !tbaa !5
  %944 = load i32, ptr %67, align 4, !tbaa !9
  %945 = load i32, ptr %51, align 4, !tbaa !9
  %946 = mul nsw i32 %944, %945
  %947 = add nsw i32 %946, 1
  %948 = sext i32 %947 to i64
  %949 = getelementptr inbounds %struct.complex, ptr %943, i64 %948
  call void @cswap_(ptr noundef %935, ptr noundef %942, ptr noundef @c__1, ptr noundef %949, ptr noundef @c__1)
  %950 = load ptr, ptr %46, align 8, !tbaa !5
  %951 = load i32, ptr %950, align 4, !tbaa !9
  %952 = icmp ne i32 %951, 0
  br i1 %952, label %953, label %973

953:                                              ; preds = %889
  %954 = load ptr, ptr %45, align 8, !tbaa !5
  %955 = load i32, ptr %66, align 4, !tbaa !9
  %956 = sext i32 %955 to i64
  %957 = getelementptr inbounds i32, ptr %954, i64 %956
  %958 = load i32, ptr %957, align 4, !tbaa !9
  store i32 %958, ptr %65, align 4, !tbaa !9
  %959 = load ptr, ptr %45, align 8, !tbaa !5
  %960 = load i32, ptr %67, align 4, !tbaa !9
  %961 = sext i32 %960 to i64
  %962 = getelementptr inbounds i32, ptr %959, i64 %961
  %963 = load i32, ptr %962, align 4, !tbaa !9
  %964 = load ptr, ptr %45, align 8, !tbaa !5
  %965 = load i32, ptr %66, align 4, !tbaa !9
  %966 = sext i32 %965 to i64
  %967 = getelementptr inbounds i32, ptr %964, i64 %966
  store i32 %963, ptr %967, align 4, !tbaa !9
  %968 = load i32, ptr %65, align 4, !tbaa !9
  %969 = load ptr, ptr %45, align 8, !tbaa !5
  %970 = load i32, ptr %67, align 4, !tbaa !9
  %971 = sext i32 %970 to i64
  %972 = getelementptr inbounds i32, ptr %969, i64 %971
  store i32 %968, ptr %972, align 4, !tbaa !9
  br label %973

973:                                              ; preds = %953, %889
  br label %974

974:                                              ; preds = %973, %886
  br label %975

975:                                              ; preds = %974
  %976 = load i32, ptr %67, align 4, !tbaa !9
  %977 = add nsw i32 %976, 1
  store i32 %977, ptr %67, align 4, !tbaa !9
  br label %849, !llvm.loop !21

978:                                              ; preds = %849
  br label %979

979:                                              ; preds = %978, %842
  store i32 1, ptr %93, align 4
  br label %980

980:                                              ; preds = %979, %408, %319, %309
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 1, 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 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 4, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  ret void
}

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

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

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

declare float @slamch_(ptr noundef) #2

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

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

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

declare void @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 void @scopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

declare void @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 void @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 void @ccopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @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 void @sscal_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @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 = !{!"int", !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 i32, align 4
@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 void @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 i32, align 4
  %25 = alloca float, align 4
  %26 = alloca i32, align 4
  %27 = alloca float, align 4
  %28 = alloca i32, align 4
  %29 = alloca [1 x i8], align 1
  %30 = alloca float, align 4
  %31 = alloca i32, align 4
  %32 = alloca float, align 4
  %33 = alloca float, align 4
  call void @llvm.lifetime.start.p0(i64 4, 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 4, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #6
  %34 = load i32, ptr %6, align 4, !tbaa !5
  %35 = add i32 %34, 1
  %narrow = xor i32 %34, -1
  %36 = sext i32 %narrow to i64
  %37 = getelementptr inbounds %struct.complex, ptr %5, i64 %36
  %38 = getelementptr inbounds i8, ptr %15, i64 -4
  %39 = load i32, ptr %17, align 4, !tbaa !5
  %40 = add nsw i32 %39, 1
  %narrow395 = xor i32 %39, -1
  %41 = sext i32 %narrow395 to i64
  %42 = getelementptr inbounds %struct.complex, ptr %16, i64 %41
  %43 = getelementptr inbounds i8, ptr %19, i64 -4
  %44 = getelementptr inbounds i8, ptr %20, i64 -4
  %45 = getelementptr inbounds i8, ptr %21, i64 -4
  %46 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %47 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %48 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #6
  %49 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #6
  %50 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.3) #6
  store i32 0, ptr %22, align 4, !tbaa !5
  %.not = icmp ne i32 %46, 0
  br i1 %.not, label %53, label %51

51:                                               ; preds = %23
  %52 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #6
  %.not375 = icmp eq i32 %52, 0
  br i1 %.not375, label %.thread403.sink.split, label %53

53:                                               ; preds = %51, %23
  %54 = icmp ne i32 %47, 0
  %55 = icmp ne i32 %48, 0
  %or.cond = select i1 %54, i1 true, i1 %55
  %56 = icmp ne i32 %49, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %56
  br i1 %or.cond3, label %57, label %.thread403.sink.split

57:                                               ; preds = %53
  %.not376 = icmp eq i32 %50, 0
  br i1 %.not376, label %58, label %60

58:                                               ; preds = %57
  %59 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.5) #6
  %.not377 = icmp eq i32 %59, 0
  br i1 %.not377, label %.thread403.sink.split, label %60

60:                                               ; preds = %58, %57
  %61 = load i32, ptr %3, align 4, !tbaa !5
  %62 = icmp slt i32 %61, 0
  br i1 %62, label %.thread403.sink.split, label %63

63:                                               ; preds = %60
  %64 = load i32, ptr %4, align 4, !tbaa !5
  %65 = icmp slt i32 %64, 0
  br i1 %65, label %.thread403.sink.split, label %66

66:                                               ; preds = %63
  %67 = load i32, ptr %6, align 4, !tbaa !5
  %.not378 = icmp sgt i32 %67, %64
  br i1 %.not378, label %68, label %.thread403.sink.split

68:                                               ; preds = %66
  br i1 %.not, label %69, label %72

69:                                               ; preds = %68
  %70 = load i32, ptr %8, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %61, i32 1)
  %71 = icmp slt i32 %70, %spec.select
  br i1 %71, label %.thread403.sink.split, label %72

72:                                               ; preds = %69, %68
  br i1 %55, label %73, label %78

73:                                               ; preds = %72
  %.not416 = icmp eq i32 %61, 0
  br i1 %.not416, label %87, label %74

74:                                               ; preds = %73
  %75 = load float, ptr %10, align 4, !tbaa !9
  %76 = load float, ptr %9, align 4, !tbaa !9
  %77 = fcmp ugt float %75, %76
  br i1 %77, label %87, label %.thread403.sink.split

78:                                               ; preds = %72
  br i1 %56, label %79, label %87

79:                                               ; preds = %78
  %80 = load i32, ptr %11, align 4, !tbaa !5
  %81 = icmp slt i32 %80, 1
  %spec.select396 = tail call i32 @llvm.umax.i32(i32 %61, i32 1)
  %82 = icmp ugt i32 %80, %spec.select396
  %or.cond418 = or i1 %81, %82
  br i1 %or.cond418, label %.thread403.sink.split, label %83

83:                                               ; preds = %79
  %84 = load i32, ptr %12, align 4, !tbaa !5
  %. = tail call i32 @llvm.umin.i32(i32 %61, i32 %80)
  %85 = icmp slt i32 %84, %.
  %86 = icmp ugt i32 %84, %61
  %or.cond415 = or i1 %85, %86
  br i1 %or.cond415, label %.thread403.sink.split, label %87

87:                                               ; preds = %83, %74, %73, %78
  %.pr = load i32, ptr %22, align 4, !tbaa !5
  %88 = icmp eq i32 %.pr, 0
  br i1 %88, label %89, label %.thread403

89:                                               ; preds = %87
  %90 = load i32, ptr %17, align 4, !tbaa !5
  %91 = icmp slt i32 %90, 1
  %92 = icmp ult i32 %90, %61
  %or.cond454 = and i1 %.not, %92
  %or.cond455 = or i1 %91, %or.cond454
  br i1 %or.cond455, label %.thread403.sink.split, label %.thread

.thread403.sink.split:                            ; preds = %89, %83, %79, %74, %69, %66, %63, %60, %58, %53, %51
  %.sink = phi i32 [ -1, %51 ], [ -2, %53 ], [ -3, %58 ], [ -4, %60 ], [ -5, %63 ], [ -7, %66 ], [ -9, %69 ], [ -11, %74 ], [ -12, %79 ], [ -13, %83 ], [ -18, %89 ]
  store i32 %.sink, ptr %22, align 4, !tbaa !5
  br label %.thread403

.thread403:                                       ; preds = %.thread403.sink.split, %87
  %93 = phi i32 [ %.pr, %87 ], [ %.sink, %.thread403.sink.split ]
  %94 = sub nsw i32 0, %93
  store i32 %94, ptr %24, align 4, !tbaa !5
  %95 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %24, i32 noundef 6) #6
  br label %.loopexit

.thread:                                          ; preds = %89
  store i32 0, ptr %14, align 4, !tbaa !5
  %96 = load i32, ptr %3, align 4, !tbaa !5
  switch i32 %96, label %114 [
    i32 0, label %.loopexit
    i32 1, label %97
  ]

97:                                               ; preds = %.thread
  store i32 1, ptr %14, align 4, !tbaa !5
  br i1 %.not376, label %98, label %103

98:                                               ; preds = %97
  %99 = load i32, ptr %4, align 4, !tbaa !5
  %100 = add i32 %35, %99
  %101 = sext i32 %100 to i64
  %102 = getelementptr inbounds %struct.complex, ptr %37, i64 %101
  br label %103

103:                                              ; preds = %97, %98
  %.sroa.0.0.in = phi ptr [ %102, %98 ], [ %5, %97 ]
  %.sroa.0.0 = load float, ptr %.sroa.0.0.in, align 4, !tbaa !11
  %.not394 = icmp eq i32 %48, 0
  br i1 %.not394, label %110, label %104

104:                                              ; preds = %103
  %105 = load float, ptr %9, align 4, !tbaa !9
  %106 = fcmp olt float %105, %.sroa.0.0
  br i1 %106, label %107, label %.thread407

107:                                              ; preds = %104
  %108 = load float, ptr %10, align 4, !tbaa !9
  %109 = fcmp ult float %108, %.sroa.0.0
  br i1 %109, label %.thread407, label %110

.thread407:                                       ; preds = %104, %107
  store i32 0, ptr %14, align 4, !tbaa !5
  br label %.loopexit

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

111:                                              ; preds = %110
  store float 1.000000e+00, ptr %16, align 4, !tbaa !11
  %112 = sext i32 %40 to i64
  %113 = getelementptr inbounds %struct.complex, ptr %42, i64 %112, i32 1
  store float 0.000000e+00, ptr %113, align 4, !tbaa !13
  br label %.loopexit

114:                                              ; preds = %.thread
  %115 = tail call float @slamch_(ptr noundef nonnull @.str.7) #6
  %116 = tail call float @slamch_(ptr noundef nonnull @.str.8) #6
  %117 = fdiv float %115, %116
  %118 = fdiv float 1.000000e+00, %117
  %sqrtf = tail call float @sqrtf(float noundef %117) #3
  %sqrtf381 = tail call float @sqrtf(float noundef %118) #3
  store float %sqrtf381, ptr %25, align 4, !tbaa !9
  %119 = fpext float %115 to double
  %120 = tail call double @sqrt(double noundef %119) #6
  %121 = tail call double @sqrt(double noundef %120) #6
  %122 = fdiv double 1.000000e+00, %121
  %123 = fptrunc double %122 to float
  %124 = fcmp ole float %sqrtf381, %123
  %125 = select i1 %124, float %sqrtf381, float %123
  %126 = load float, ptr %13, align 4, !tbaa !9
  store float %126, ptr %30, align 4, !tbaa !9
  %.not382 = icmp eq i32 %48, 0
  br i1 %.not382, label %130, label %127

127:                                              ; preds = %114
  %128 = load float, ptr %9, align 4, !tbaa !9
  %129 = load float, ptr %10, align 4, !tbaa !9
  br label %130

130:                                              ; preds = %114, %127
  %.sink450 = phi float [ %128, %127 ], [ 0.000000e+00, %114 ]
  %storemerge = phi float [ %129, %127 ], [ 0.000000e+00, %114 ]
  store float %.sink450, ptr %32, align 4
  store float %storemerge, ptr %33, align 4, !tbaa !9
  %131 = tail call float @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
  %132 = fcmp ogt float %131, 0.000000e+00
  %133 = fcmp olt float %131, %sqrtf
  %or.cond397 = select i1 %132, i1 %133, i1 false
  br i1 %or.cond397, label %136, label %134

134:                                              ; preds = %130
  %135 = fcmp ogt float %131, %125
  br i1 %135, label %136, label %149

136:                                              ; preds = %134, %130
  %.pn = phi float [ %sqrtf, %130 ], [ %125, %134 ]
  %storemerge417 = fdiv float %.pn, %131
  store float %storemerge417, ptr %27, align 4, !tbaa !9
  %.str.11..str.10 = select i1 %.not376, ptr @.str.11, ptr @.str.10
  call void @clascl_(ptr noundef nonnull %.str.11..str.10, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef nonnull @c_b16, ptr noundef nonnull %27, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %22) #6
  %137 = load float, ptr %13, align 4, !tbaa !9
  %138 = fcmp ogt float %137, 0.000000e+00
  br i1 %138, label %139, label %142

139:                                              ; preds = %136
  %140 = load float, ptr %27, align 4, !tbaa !9
  %141 = fmul float %137, %140
  store float %141, ptr %30, align 4, !tbaa !9
  br label %142

142:                                              ; preds = %139, %136
  br i1 %.not382, label %149, label %143

143:                                              ; preds = %142
  %144 = load float, ptr %9, align 4, !tbaa !9
  %145 = load float, ptr %27, align 4, !tbaa !9
  %146 = fmul float %144, %145
  store float %146, ptr %32, align 4, !tbaa !9
  %147 = load float, ptr %10, align 4, !tbaa !9
  %148 = fmul float %145, %147
  store float %148, ptr %33, align 4, !tbaa !9
  br label %149

149:                                              ; preds = %134, %142, %143
  %150 = phi i1 [ true, %142 ], [ true, %143 ], [ false, %134 ]
  %151 = load i32, ptr %3, align 4, !tbaa !5
  %152 = add nsw i32 %151, 1
  %153 = add nsw i32 %152, %151
  %154 = sext i32 %152 to i64
  %155 = getelementptr inbounds float, ptr %43, i64 %154
  call void @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 nonnull %155, ptr noundef %7, ptr noundef %8, ptr noundef %18, ptr noundef nonnull %28) #6
  %.not384 = icmp eq i32 %49, 0
  br i1 %.not384, label %163, label %156

156:                                              ; preds = %149
  %157 = load i32, ptr %11, align 4, !tbaa !5
  %158 = icmp eq i32 %157, 1
  br i1 %158, label %159, label %163

159:                                              ; preds = %156
  %160 = load i32, ptr %12, align 4, !tbaa !5
  %161 = load i32, ptr %3, align 4, !tbaa !5
  %162 = icmp eq i32 %160, %161
  br label %163

163:                                              ; preds = %159, %156, %149
  %164 = phi i1 [ false, %156 ], [ false, %149 ], [ %162, %159 ]
  %or.cond5 = or i1 %54, %164
  br i1 %or.cond5, label %165, label %192

165:                                              ; preds = %163
  %166 = load float, ptr %13, align 4, !tbaa !9
  %167 = fcmp ugt float %166, 0.000000e+00
  br i1 %167, label %192, label %168

168:                                              ; preds = %165
  call void @scopy_(ptr noundef nonnull %3, ptr noundef %19, ptr noundef nonnull @c__1, ptr noundef %15, ptr noundef nonnull @c__1) #6
  %169 = load i32, ptr %3, align 4, !tbaa !5
  %170 = shl i32 %169, 1
  %171 = add nsw i32 %170, %153
  br i1 %.not, label %176, label %172

172:                                              ; preds = %168
  %173 = add nsw i32 %169, -1
  store i32 %173, ptr %24, align 4, !tbaa !5
  %174 = sext i32 %171 to i64
  %175 = getelementptr inbounds float, ptr %43, i64 %174
  call void @scopy_(ptr noundef nonnull %24, ptr noundef nonnull %155, ptr noundef nonnull @c__1, ptr noundef nonnull %175, ptr noundef nonnull @c__1) #6
  call void @ssterf_(ptr noundef nonnull %3, ptr noundef %15, ptr noundef nonnull %175, ptr noundef nonnull %22) #6
  br label %.loopexit420

176:                                              ; preds = %168
  call void @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
  %177 = load i32, ptr %3, align 4, !tbaa !5
  %178 = add nsw i32 %177, -1
  store i32 %178, ptr %24, align 4, !tbaa !5
  %179 = sext i32 %171 to i64
  %180 = getelementptr inbounds float, ptr %43, i64 %179
  call void @scopy_(ptr noundef nonnull %24, ptr noundef nonnull %155, ptr noundef nonnull @c__1, ptr noundef nonnull %180, ptr noundef nonnull @c__1) #6
  %181 = sext i32 %153 to i64
  %182 = getelementptr inbounds float, ptr %43, i64 %181
  call void @csteqr_(ptr noundef %0, ptr noundef nonnull %3, ptr noundef %15, ptr noundef nonnull %180, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %182, ptr noundef nonnull %22) #6
  %183 = load i32, ptr %22, align 4, !tbaa !5
  %184 = icmp eq i32 %183, 0
  br i1 %184, label %185, label %.thread412

185:                                              ; preds = %176
  %186 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %186, ptr %24, align 4, !tbaa !5
  %.not385421 = icmp slt i32 %186, 1
  br i1 %.not385421, label %.loopexit420, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %185
  %187 = zext nneg i32 %186 to i64
  %188 = shl nuw nsw i64 %187, 2
  call void @llvm.memset.p0.i64(ptr align 4 %21, i8 0, i64 %188, i1 false), !tbaa !5
  br label %.loopexit420

.loopexit420:                                     ; preds = %.lr.ph.preheader, %185, %172
  %.pr411 = load i32, ptr %22, align 4, !tbaa !5
  %189 = icmp eq i32 %.pr411, 0
  br i1 %189, label %190, label %.thread412

190:                                              ; preds = %.loopexit420
  %191 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %191, ptr %14, align 4, !tbaa !5
  br label %.loopexit419

.thread412:                                       ; preds = %176, %.loopexit420
  store i32 0, ptr %22, align 4, !tbaa !5
  br label %192

192:                                              ; preds = %163, %.thread412, %165
  %.399 = select i1 %.not, i8 66, i8 69
  store i8 %.399, ptr %29, align 1, !tbaa !14
  %193 = load i32, ptr %3, align 4, !tbaa !5
  %194 = add nsw i32 %193, 1
  %195 = add nsw i32 %194, %193
  %196 = sext i32 %194 to i64
  %197 = getelementptr inbounds i32, ptr %44, i64 %196
  %198 = sext i32 %153 to i64
  %199 = getelementptr inbounds float, ptr %43, i64 %198
  %200 = sext i32 %195 to i64
  %201 = getelementptr inbounds i32, ptr %44, i64 %200
  call void @sstebz_(ptr noundef %1, ptr noundef nonnull %29, ptr noundef nonnull %3, ptr noundef nonnull %32, ptr noundef nonnull %33, ptr noundef %11, ptr noundef %12, ptr noundef nonnull %30, ptr noundef %19, ptr noundef nonnull %155, ptr noundef nonnull %14, ptr noundef nonnull %31, ptr noundef %15, ptr noundef %20, ptr noundef nonnull %197, ptr noundef nonnull %199, ptr noundef nonnull %201, ptr noundef nonnull %22) #6
  br i1 %.not, label %202, label %.loopexit419

202:                                              ; preds = %192
  call void @cstein_(ptr noundef nonnull %3, ptr noundef %19, ptr noundef nonnull %155, ptr noundef nonnull %14, ptr noundef %15, ptr noundef %20, ptr noundef nonnull %197, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %199, ptr noundef nonnull %201, ptr noundef %21, ptr noundef nonnull %22) #6
  %203 = load i32, ptr %14, align 4, !tbaa !5
  store i32 %203, ptr %24, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %42, i64 8
  %.not387423 = icmp slt i32 %203, 1
  br i1 %.not387423, label %.loopexit419, label %.lr.ph425.preheader

.lr.ph425.preheader:                              ; preds = %202
  %204 = sext i32 %39 to i64
  br label %.lr.ph425

.lr.ph425:                                        ; preds = %.lr.ph425.preheader, %.lr.ph425
  %indvars.iv = phi i64 [ 1, %.lr.ph425.preheader ], [ %indvars.iv.next, %.lr.ph425 ]
  %205 = mul nsw i64 %indvars.iv, %204
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %205
  call void @ccopy_(ptr noundef nonnull %3, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %18, ptr noundef nonnull @c__1) #6
  call void @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
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %206 = load i32, ptr %24, align 4, !tbaa !5
  %207 = sext i32 %206 to i64
  %.not387.not = icmp slt i64 %indvars.iv, %207
  br i1 %.not387.not, label %.lr.ph425, label %.loopexit419, !llvm.loop !15

.loopexit419:                                     ; preds = %.lr.ph425, %202, %192, %190
  br i1 %150, label %208, label %218

208:                                              ; preds = %.loopexit419
  %209 = load i32, ptr %22, align 4, !tbaa !5
  %210 = icmp eq i32 %209, 0
  br i1 %210, label %211, label %213

211:                                              ; preds = %208
  %212 = load i32, ptr %14, align 4, !tbaa !5
  br label %215

213:                                              ; preds = %208
  %214 = add nsw i32 %209, -1
  br label %215

215:                                              ; preds = %213, %211
  %storemerge388 = phi i32 [ %214, %213 ], [ %212, %211 ]
  store i32 %storemerge388, ptr %26, align 4, !tbaa !5
  %216 = load float, ptr %27, align 4, !tbaa !9
  %217 = fdiv float 1.000000e+00, %216
  store float %217, ptr %25, align 4, !tbaa !9
  call void @sscal_(ptr noundef nonnull %26, ptr noundef nonnull %25, ptr noundef %15, ptr noundef nonnull @c__1) #6
  br label %218

218:                                              ; preds = %215, %.loopexit419
  br i1 %.not, label %219, label %.loopexit

219:                                              ; preds = %218
  %220 = load i32, ptr %14, align 4, !tbaa !5
  %221 = add nsw i32 %220, -1
  store i32 %221, ptr %24, align 4, !tbaa !5
  %invariant.gep432 = getelementptr i8, ptr %42, i64 8
  %.not389436 = icmp slt i32 %220, 2
  br i1 %.not389436, label %.loopexit, label %.lr.ph439.preheader

.lr.ph439.preheader:                              ; preds = %219
  %222 = sext i32 %39 to i64
  br label %.lr.ph439

.lr.ph439:                                        ; preds = %.lr.ph439.preheader, %._crit_edge.thread
  %indvar = phi i32 [ 0, %.lr.ph439.preheader ], [ %indvar.next, %._crit_edge.thread ]
  %indvars.iv447 = phi i64 [ 1, %.lr.ph439.preheader ], [ %indvars.iv.next448, %._crit_edge.thread ]
  %indvars.iv442 = phi i64 [ 2, %.lr.ph439.preheader ], [ %indvars.iv.next443, %._crit_edge.thread ]
  %223 = getelementptr inbounds float, ptr %38, i64 %indvars.iv447
  %224 = load float, ptr %223, align 4, !tbaa !9
  %225 = load i32, ptr %14, align 4, !tbaa !5
  %indvars.iv.next448 = add nuw nsw i64 %indvars.iv447, 1
  %226 = sext i32 %225 to i64
  %.not390426.not = icmp slt i64 %indvars.iv447, %226
  br i1 %.not390426.not, label %.lr.ph430.preheader, label %._crit_edge.thread

.lr.ph430.preheader:                              ; preds = %.lr.ph439
  %227 = xor i32 %indvar, -1
  %228 = add i32 %225, %227
  %reass.sub = sub i32 %225, %indvar
  %xtraiter = and i32 %228, 1
  %229 = icmp eq i32 %reass.sub, 2
  br i1 %229, label %._crit_edge.unr-lcssa, label %.lr.ph430.preheader.new

.lr.ph430.preheader.new:                          ; preds = %.lr.ph430.preheader
  %unroll_iter = and i32 %228, -2
  br label %.lr.ph430

.lr.ph430:                                        ; preds = %.lr.ph430, %.lr.ph430.preheader.new
  %indvars.iv444 = phi i64 [ %indvars.iv442, %.lr.ph430.preheader.new ], [ %indvars.iv.next445.1, %.lr.ph430 ]
  %.0429 = phi float [ %224, %.lr.ph430.preheader.new ], [ %.1.1, %.lr.ph430 ]
  %.1356427 = phi i32 [ 0, %.lr.ph430.preheader.new ], [ %.2.1, %.lr.ph430 ]
  %niter = phi i32 [ 0, %.lr.ph430.preheader.new ], [ %niter.next.1, %.lr.ph430 ]
  %230 = getelementptr inbounds float, ptr %38, i64 %indvars.iv444
  %231 = load float, ptr %230, align 4, !tbaa !9
  %232 = fcmp olt float %231, %.0429
  %233 = trunc nuw i64 %indvars.iv444 to i32
  %.2 = select i1 %232, i32 %233, i32 %.1356427
  %.1 = select i1 %232, float %231, float %.0429
  %234 = getelementptr float, ptr %15, i64 %indvars.iv444
  %235 = load float, ptr %234, align 4, !tbaa !9
  %236 = fcmp olt float %235, %.1
  %237 = trunc i64 %indvars.iv444 to i32
  %238 = add i32 %237, 1
  %.2.1 = select i1 %236, i32 %238, i32 %.2
  %.1.1 = select i1 %236, float %235, float %.1
  %indvars.iv.next445.1 = add nuw nsw i64 %indvars.iv444, 2
  %niter.next.1 = add i32 %niter, 2
  %niter.ncmp.1 = icmp eq i32 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.unr-lcssa, label %.lr.ph430, !llvm.loop !17

._crit_edge.unr-lcssa:                            ; preds = %.lr.ph430, %.lr.ph430.preheader
  %.2.lcssa.ph = phi i32 [ poison, %.lr.ph430.preheader ], [ %.2.1, %.lr.ph430 ]
  %.1.lcssa.ph = phi float [ poison, %.lr.ph430.preheader ], [ %.1.1, %.lr.ph430 ]
  %indvars.iv444.unr = phi i64 [ %indvars.iv442, %.lr.ph430.preheader ], [ %indvars.iv.next445.1, %.lr.ph430 ]
  %.0429.unr = phi float [ %224, %.lr.ph430.preheader ], [ %.1.1, %.lr.ph430 ]
  %.1356427.unr = phi i32 [ 0, %.lr.ph430.preheader ], [ %.2.1, %.lr.ph430 ]
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph430.epil

.lr.ph430.epil:                                   ; preds = %._crit_edge.unr-lcssa
  %239 = getelementptr inbounds float, ptr %38, i64 %indvars.iv444.unr
  %240 = load float, ptr %239, align 4, !tbaa !9
  %241 = fcmp olt float %240, %.0429.unr
  %242 = trunc nuw i64 %indvars.iv444.unr to i32
  %.2.epil = select i1 %241, i32 %242, i32 %.1356427.unr
  %.1.epil = select i1 %241, float %240, float %.0429.unr
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.unr-lcssa, %.lr.ph430.epil
  %.2.lcssa = phi i32 [ %.2.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.2.epil, %.lr.ph430.epil ]
  %.1.lcssa = phi float [ %.1.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.1.epil, %.lr.ph430.epil ]
  %.not391 = icmp eq i32 %.2.lcssa, 0
  br i1 %.not391, label %._crit_edge.thread, label %243

243:                                              ; preds = %._crit_edge
  %244 = sext i32 %.2.lcssa to i64
  %245 = getelementptr inbounds i32, ptr %44, i64 %244
  %246 = load i32, ptr %245, align 4, !tbaa !5
  %247 = getelementptr inbounds float, ptr %38, i64 %244
  store float %224, ptr %247, align 4, !tbaa !9
  %248 = getelementptr inbounds i32, ptr %44, i64 %indvars.iv447
  %249 = load i32, ptr %248, align 4, !tbaa !5
  store i32 %249, ptr %245, align 4, !tbaa !5
  store float %.1.lcssa, ptr %223, align 4, !tbaa !9
  store i32 %246, ptr %248, align 4, !tbaa !5
  %250 = mul nsw i32 %.2.lcssa, %39
  %251 = sext i32 %250 to i64
  %gep433 = getelementptr %struct.complex, ptr %invariant.gep432, i64 %251
  %252 = mul nsw i64 %indvars.iv447, %222
  %gep435 = getelementptr %struct.complex, ptr %invariant.gep432, i64 %252
  call void @cswap_(ptr noundef nonnull %3, ptr noundef %gep433, ptr noundef nonnull @c__1, ptr noundef %gep435, ptr noundef nonnull @c__1) #6
  %253 = load i32, ptr %22, align 4, !tbaa !5
  %.not392 = icmp eq i32 %253, 0
  br i1 %.not392, label %._crit_edge.thread, label %254

254:                                              ; preds = %243
  %255 = getelementptr inbounds i32, ptr %45, i64 %244
  %256 = load i32, ptr %255, align 4, !tbaa !5
  %257 = getelementptr inbounds i32, ptr %45, i64 %indvars.iv447
  %258 = load i32, ptr %257, align 4, !tbaa !5
  store i32 %258, ptr %255, align 4, !tbaa !5
  store i32 %256, ptr %257, align 4, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph439, %._crit_edge, %254, %243
  %259 = load i32, ptr %24, align 4, !tbaa !5
  %260 = sext i32 %259 to i64
  %.not389.not = icmp slt i64 %indvars.iv447, %260
  %indvars.iv.next443 = add nuw nsw i64 %indvars.iv442, 1
  %indvar.next = add i32 %indvar, 1
  br i1 %.not389.not, label %.lr.ph439, label %.loopexit, !llvm.loop !18

.loopexit:                                        ; preds = %._crit_edge.thread, %219, %.thread407, %218, %111, %110, %.thread, %.thread403
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr nonnull %24) #6
  ret void
}

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

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

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

declare float @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 float @clanhb_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umin.i32(i32, i32) #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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = !{!12, !10, i64 0}
!12 = !{!"", !10, i64 0, !10, i64 4}
!13 = !{!12, !10, i64 4}
!14 = !{!7, !7, i64 0}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16}
!18 = distinct !{!18, !16}


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