; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (chbevx_2stage)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.complex = type { float, float }

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

161:                                              ; preds = %24
  %162 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -1, ptr %162, align 4, !tbaa !9
  br label %295

163:                                              ; preds = %24
  %164 = load i32, ptr %81, align 4, !tbaa !9
  %165 = icmp ne i32 %164, 0
  br i1 %165, label %174, label %166

166:                                              ; preds = %163
  %167 = load i32, ptr %85, align 4, !tbaa !9
  %168 = icmp ne i32 %167, 0
  br i1 %168, label %174, label %169

169:                                              ; preds = %166
  %170 = load i32, ptr %82, align 4, !tbaa !9
  %171 = icmp ne i32 %170, 0
  br i1 %171, label %174, label %172

172:                                              ; preds = %169
  %173 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -2, ptr %173, align 4, !tbaa !9
  br label %294

174:                                              ; preds = %169, %166, %163
  %175 = load i32, ptr %76, align 4, !tbaa !9
  %176 = icmp ne i32 %175, 0
  br i1 %176, label %183, label %177

177:                                              ; preds = %174
  %178 = load ptr, ptr %27, align 8, !tbaa !5
  %179 = call i32 @lsame_(ptr noundef %178, ptr noundef @.str.5)
  %180 = icmp ne i32 %179, 0
  br i1 %180, label %183, label %181

181:                                              ; preds = %177
  %182 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -3, ptr %182, align 4, !tbaa !9
  br label %293

183:                                              ; preds = %177, %174
  %184 = load ptr, ptr %28, align 8, !tbaa !5
  %185 = load i32, ptr %184, align 4, !tbaa !9
  %186 = icmp slt i32 %185, 0
  br i1 %186, label %187, label %189

187:                                              ; preds = %183
  %188 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -4, ptr %188, align 4, !tbaa !9
  br label %292

189:                                              ; preds = %183
  %190 = load ptr, ptr %29, align 8, !tbaa !5
  %191 = load i32, ptr %190, align 4, !tbaa !9
  %192 = icmp slt i32 %191, 0
  br i1 %192, label %193, label %195

193:                                              ; preds = %189
  %194 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -5, ptr %194, align 4, !tbaa !9
  br label %291

195:                                              ; preds = %189
  %196 = load ptr, ptr %31, align 8, !tbaa !5
  %197 = load i32, ptr %196, align 4, !tbaa !9
  %198 = load ptr, ptr %29, align 8, !tbaa !5
  %199 = load i32, ptr %198, align 4, !tbaa !9
  %200 = add nsw i32 %199, 1
  %201 = icmp slt i32 %197, %200
  br i1 %201, label %202, label %204

202:                                              ; preds = %195
  %203 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -7, ptr %203, align 4, !tbaa !9
  br label %290

204:                                              ; preds = %195
  %205 = load i32, ptr %78, align 4, !tbaa !9
  %206 = icmp ne i32 %205, 0
  br i1 %206, label %207, label %222

207:                                              ; preds = %204
  %208 = load ptr, ptr %33, align 8, !tbaa !5
  %209 = load i32, ptr %208, align 4, !tbaa !9
  %210 = load ptr, ptr %28, align 8, !tbaa !5
  %211 = load i32, ptr %210, align 4, !tbaa !9
  %212 = icmp sge i32 1, %211
  br i1 %212, label %213, label %214

213:                                              ; preds = %207
  br label %217

214:                                              ; preds = %207
  %215 = load ptr, ptr %28, align 8, !tbaa !5
  %216 = load i32, ptr %215, align 4, !tbaa !9
  br label %217

217:                                              ; preds = %214, %213
  %218 = phi i32 [ 1, %213 ], [ %216, %214 ]
  %219 = icmp slt i32 %209, %218
  br i1 %219, label %220, label %222

220:                                              ; preds = %217
  %221 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -9, ptr %221, align 4, !tbaa !9
  br label %289

222:                                              ; preds = %217, %204
  %223 = load i32, ptr %85, align 4, !tbaa !9
  %224 = icmp ne i32 %223, 0
  br i1 %224, label %225, label %238

225:                                              ; preds = %222
  %226 = load ptr, ptr %28, align 8, !tbaa !5
  %227 = load i32, ptr %226, align 4, !tbaa !9
  %228 = icmp sgt i32 %227, 0
  br i1 %228, label %229, label %237

229:                                              ; preds = %225
  %230 = load ptr, ptr %35, align 8, !tbaa !5
  %231 = load float, ptr %230, align 4, !tbaa !11
  %232 = load ptr, ptr %34, align 8, !tbaa !5
  %233 = load float, ptr %232, align 4, !tbaa !11
  %234 = fcmp ole float %231, %233
  br i1 %234, label %235, label %237

235:                                              ; preds = %229
  %236 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -11, ptr %236, align 4, !tbaa !9
  br label %237

237:                                              ; preds = %235, %229, %225
  br label %288

238:                                              ; preds = %222
  %239 = load i32, ptr %82, align 4, !tbaa !9
  %240 = icmp ne i32 %239, 0
  br i1 %240, label %241, label %287

241:                                              ; preds = %238
  %242 = load ptr, ptr %36, align 8, !tbaa !5
  %243 = load i32, ptr %242, align 4, !tbaa !9
  %244 = icmp slt i32 %243, 1
  br i1 %244, label %258, label %245

245:                                              ; preds = %241
  %246 = load ptr, ptr %36, align 8, !tbaa !5
  %247 = load i32, ptr %246, align 4, !tbaa !9
  %248 = load ptr, ptr %28, align 8, !tbaa !5
  %249 = load i32, ptr %248, align 4, !tbaa !9
  %250 = icmp sge i32 1, %249
  br i1 %250, label %251, label %252

251:                                              ; preds = %245
  br label %255

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

255:                                              ; preds = %252, %251
  %256 = phi i32 [ 1, %251 ], [ %254, %252 ]
  %257 = icmp sgt i32 %247, %256
  br i1 %257, label %258, label %260

258:                                              ; preds = %255, %241
  %259 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -12, ptr %259, align 4, !tbaa !9
  br label %286

260:                                              ; preds = %255
  %261 = load ptr, ptr %37, align 8, !tbaa !5
  %262 = load i32, ptr %261, align 4, !tbaa !9
  %263 = load ptr, ptr %28, align 8, !tbaa !5
  %264 = load i32, ptr %263, align 4, !tbaa !9
  %265 = load ptr, ptr %36, align 8, !tbaa !5
  %266 = load i32, ptr %265, align 4, !tbaa !9
  %267 = icmp sle i32 %264, %266
  br i1 %267, label %268, label %271

268:                                              ; preds = %260
  %269 = load ptr, ptr %28, align 8, !tbaa !5
  %270 = load i32, ptr %269, align 4, !tbaa !9
  br label %274

271:                                              ; preds = %260
  %272 = load ptr, ptr %36, align 8, !tbaa !5
  %273 = load i32, ptr %272, align 4, !tbaa !9
  br label %274

274:                                              ; preds = %271, %268
  %275 = phi i32 [ %270, %268 ], [ %273, %271 ]
  %276 = icmp slt i32 %262, %275
  br i1 %276, label %283, label %277

277:                                              ; preds = %274
  %278 = load ptr, ptr %37, align 8, !tbaa !5
  %279 = load i32, ptr %278, align 4, !tbaa !9
  %280 = load ptr, ptr %28, align 8, !tbaa !5
  %281 = load i32, ptr %280, align 4, !tbaa !9
  %282 = icmp sgt i32 %279, %281
  br i1 %282, label %283, label %285

283:                                              ; preds = %277, %274
  %284 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -13, ptr %284, align 4, !tbaa !9
  br label %285

285:                                              ; preds = %283, %277
  br label %286

286:                                              ; preds = %285, %258
  br label %287

287:                                              ; preds = %286, %238
  br label %288

288:                                              ; preds = %287, %237
  br label %289

289:                                              ; preds = %288, %220
  br label %290

290:                                              ; preds = %289, %202
  br label %291

291:                                              ; preds = %290, %193
  br label %292

292:                                              ; preds = %291, %187
  br label %293

293:                                              ; preds = %292, %181
  br label %294

294:                                              ; preds = %293, %172
  br label %295

295:                                              ; preds = %294, %161
  %296 = load ptr, ptr %48, align 8, !tbaa !5
  %297 = load i32, ptr %296, align 4, !tbaa !9
  %298 = icmp eq i32 %297, 0
  br i1 %298, label %299, label %315

299:                                              ; preds = %295
  %300 = load ptr, ptr %42, align 8, !tbaa !5
  %301 = load i32, ptr %300, align 4, !tbaa !9
  %302 = icmp slt i32 %301, 1
  br i1 %302, label %312, label %303

303:                                              ; preds = %299
  %304 = load i32, ptr %78, align 4, !tbaa !9
  %305 = icmp ne i32 %304, 0
  br i1 %305, label %306, label %314

306:                                              ; preds = %303
  %307 = load ptr, ptr %42, align 8, !tbaa !5
  %308 = load i32, ptr %307, align 4, !tbaa !9
  %309 = load ptr, ptr %28, align 8, !tbaa !5
  %310 = load i32, ptr %309, align 4, !tbaa !9
  %311 = icmp slt i32 %308, %310
  br i1 %311, label %312, label %314

312:                                              ; preds = %306, %299
  %313 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -18, ptr %313, align 4, !tbaa !9
  br label %314

314:                                              ; preds = %312, %306, %303
  br label %315

315:                                              ; preds = %314, %295
  %316 = load ptr, ptr %48, 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 %367

319:                                              ; preds = %315
  %320 = load ptr, ptr %28, align 8, !tbaa !5
  %321 = load i32, ptr %320, align 4, !tbaa !9
  %322 = icmp sle i32 %321, 1
  br i1 %322, label %323, label %332

323:                                              ; preds = %319
  store i32 1, ptr %75, align 4, !tbaa !9
  %324 = load i32, ptr %75, align 4, !tbaa !9
  %325 = sitofp i32 %324 to float
  %326 = load ptr, ptr %43, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.complex, ptr %326, i64 1
  %328 = getelementptr inbounds %struct.complex, ptr %327, i32 0, i32 0
  store float %325, ptr %328, align 4, !tbaa !13
  %329 = load ptr, ptr %43, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.complex, ptr %329, i64 1
  %331 = getelementptr inbounds %struct.complex, ptr %330, i32 0, i32 1
  store float 0.000000e+00, ptr %331, align 4, !tbaa !15
  br label %356

332:                                              ; preds = %319
  %333 = load ptr, ptr %25, align 8, !tbaa !5
  %334 = load ptr, ptr %28, align 8, !tbaa !5
  %335 = load ptr, ptr %29, align 8, !tbaa !5
  %336 = call i32 @ilaenv2stage_(ptr noundef @c__2, ptr noundef @.str.6, ptr noundef %333, ptr noundef %334, ptr noundef %335, ptr noundef @c_n1, ptr noundef @c_n1)
  store i32 %336, ptr %79, align 4, !tbaa !9
  %337 = load ptr, ptr %25, align 8, !tbaa !5
  %338 = load ptr, ptr %28, align 8, !tbaa !5
  %339 = load ptr, ptr %29, align 8, !tbaa !5
  %340 = call i32 @ilaenv2stage_(ptr noundef @c__3, ptr noundef @.str.6, ptr noundef %337, ptr noundef %338, ptr noundef %339, ptr noundef %79, ptr noundef @c_n1)
  store i32 %340, ptr %74, align 4, !tbaa !9
  %341 = load ptr, ptr %25, align 8, !tbaa !5
  %342 = load ptr, ptr %28, align 8, !tbaa !5
  %343 = load ptr, ptr %29, align 8, !tbaa !5
  %344 = call i32 @ilaenv2stage_(ptr noundef @c__4, ptr noundef @.str.6, ptr noundef %341, ptr noundef %342, ptr noundef %343, ptr noundef %79, ptr noundef @c_n1)
  store i32 %344, ptr %77, align 4, !tbaa !9
  %345 = load i32, ptr %74, align 4, !tbaa !9
  %346 = load i32, ptr %77, align 4, !tbaa !9
  %347 = add nsw i32 %345, %346
  store i32 %347, ptr %75, align 4, !tbaa !9
  %348 = load i32, ptr %75, align 4, !tbaa !9
  %349 = sitofp i32 %348 to float
  %350 = load ptr, ptr %43, align 8, !tbaa !5
  %351 = getelementptr inbounds %struct.complex, ptr %350, i64 1
  %352 = getelementptr inbounds %struct.complex, ptr %351, i32 0, i32 0
  store float %349, ptr %352, align 4, !tbaa !13
  %353 = load ptr, ptr %43, align 8, !tbaa !5
  %354 = getelementptr inbounds %struct.complex, ptr %353, i64 1
  %355 = getelementptr inbounds %struct.complex, ptr %354, i32 0, i32 1
  store float 0.000000e+00, ptr %355, align 4, !tbaa !15
  br label %356

356:                                              ; preds = %332, %323
  %357 = load ptr, ptr %44, align 8, !tbaa !5
  %358 = load i32, ptr %357, align 4, !tbaa !9
  %359 = load i32, ptr %75, align 4, !tbaa !9
  %360 = icmp slt i32 %358, %359
  br i1 %360, label %361, label %366

361:                                              ; preds = %356
  %362 = load i32, ptr %96, align 4, !tbaa !9
  %363 = icmp ne i32 %362, 0
  br i1 %363, label %366, label %364

364:                                              ; preds = %361
  %365 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -20, ptr %365, align 4, !tbaa !9
  br label %366

366:                                              ; preds = %364, %361, %356
  br label %367

367:                                              ; preds = %366, %315
  %368 = load ptr, ptr %48, align 8, !tbaa !5
  %369 = load i32, ptr %368, align 4, !tbaa !9
  %370 = icmp ne i32 %369, 0
  br i1 %370, label %371, label %376

371:                                              ; preds = %367
  %372 = load ptr, ptr %48, align 8, !tbaa !5
  %373 = load i32, ptr %372, align 4, !tbaa !9
  %374 = sub nsw i32 0, %373
  store i32 %374, ptr %55, align 4, !tbaa !9
  %375 = call i32 @xerbla_(ptr noundef @.str.7, ptr noundef %55, i32 noundef 13)
  store i32 1, ptr %102, align 4
  br label %1062

376:                                              ; preds = %367
  %377 = load i32, ptr %96, align 4, !tbaa !9
  %378 = icmp ne i32 %377, 0
  br i1 %378, label %379, label %380

379:                                              ; preds = %376
  store i32 1, ptr %102, align 4
  br label %1062

380:                                              ; preds = %376
  br label %381

381:                                              ; preds = %380
  %382 = load ptr, ptr %39, align 8, !tbaa !5
  store i32 0, ptr %382, align 4, !tbaa !9
  %383 = load ptr, ptr %28, align 8, !tbaa !5
  %384 = load i32, ptr %383, align 4, !tbaa !9
  %385 = icmp eq i32 %384, 0
  br i1 %385, label %386, label %387

386:                                              ; preds = %381
  store i32 1, ptr %102, align 4
  br label %1062

387:                                              ; preds = %381
  %388 = load ptr, ptr %28, align 8, !tbaa !5
  %389 = load i32, ptr %388, align 4, !tbaa !9
  %390 = icmp eq i32 %389, 1
  br i1 %390, label %391, label %476

391:                                              ; preds = %387
  %392 = load ptr, ptr %39, align 8, !tbaa !5
  store i32 1, ptr %392, align 4, !tbaa !9
  %393 = load i32, ptr %76, align 4, !tbaa !9
  %394 = icmp ne i32 %393, 0
  br i1 %394, label %395, label %412

395:                                              ; preds = %391
  %396 = load i32, ptr %49, align 4, !tbaa !9
  %397 = add nsw i32 %396, 1
  store i32 %397, ptr %55, align 4, !tbaa !9
  %398 = load ptr, ptr %30, align 8, !tbaa !5
  %399 = load i32, ptr %55, align 4, !tbaa !9
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds %struct.complex, ptr %398, i64 %400
  %402 = getelementptr inbounds %struct.complex, ptr %401, i32 0, i32 0
  %403 = load float, ptr %402, align 4, !tbaa !13
  %404 = getelementptr inbounds %struct.complex, ptr %66, i32 0, i32 0
  store float %403, ptr %404, align 4, !tbaa !13
  %405 = load ptr, ptr %30, align 8, !tbaa !5
  %406 = load i32, ptr %55, align 4, !tbaa !9
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds %struct.complex, ptr %405, i64 %407
  %409 = getelementptr inbounds %struct.complex, ptr %408, i32 0, i32 1
  %410 = load float, ptr %409, align 4, !tbaa !15
  %411 = getelementptr inbounds %struct.complex, ptr %66, i32 0, i32 1
  store float %410, ptr %411, align 4, !tbaa !15
  br label %432

412:                                              ; preds = %391
  %413 = load ptr, ptr %29, align 8, !tbaa !5
  %414 = load i32, ptr %413, align 4, !tbaa !9
  %415 = add nsw i32 %414, 1
  %416 = load i32, ptr %49, align 4, !tbaa !9
  %417 = add nsw i32 %415, %416
  store i32 %417, ptr %55, align 4, !tbaa !9
  %418 = load ptr, ptr %30, align 8, !tbaa !5
  %419 = load i32, ptr %55, align 4, !tbaa !9
  %420 = sext i32 %419 to i64
  %421 = getelementptr inbounds %struct.complex, ptr %418, i64 %420
  %422 = getelementptr inbounds %struct.complex, ptr %421, i32 0, i32 0
  %423 = load float, ptr %422, align 4, !tbaa !13
  %424 = getelementptr inbounds %struct.complex, ptr %66, i32 0, i32 0
  store float %423, ptr %424, align 4, !tbaa !13
  %425 = load ptr, ptr %30, align 8, !tbaa !5
  %426 = load i32, ptr %55, align 4, !tbaa !9
  %427 = sext i32 %426 to i64
  %428 = getelementptr inbounds %struct.complex, ptr %425, i64 %427
  %429 = getelementptr inbounds %struct.complex, ptr %428, i32 0, i32 1
  %430 = load float, ptr %429, align 4, !tbaa !15
  %431 = getelementptr inbounds %struct.complex, ptr %66, i32 0, i32 1
  store float %430, ptr %431, align 4, !tbaa !15
  br label %432

432:                                              ; preds = %412, %395
  %433 = getelementptr inbounds %struct.complex, ptr %66, i32 0, i32 0
  %434 = load float, ptr %433, align 4, !tbaa !13
  store float %434, ptr %101, align 4, !tbaa !11
  %435 = load i32, ptr %85, align 4, !tbaa !9
  %436 = icmp ne i32 %435, 0
  br i1 %436, label %437, label %450

437:                                              ; preds = %432
  %438 = load ptr, ptr %34, align 8, !tbaa !5
  %439 = load float, ptr %438, align 4, !tbaa !11
  %440 = load float, ptr %101, align 4, !tbaa !11
  %441 = fcmp olt float %439, %440
  br i1 %441, label %442, label %447

442:                                              ; preds = %437
  %443 = load ptr, ptr %35, align 8, !tbaa !5
  %444 = load float, ptr %443, align 4, !tbaa !11
  %445 = load float, ptr %101, align 4, !tbaa !11
  %446 = fcmp oge float %444, %445
  br i1 %446, label %449, label %447

447:                                              ; preds = %442, %437
  %448 = load ptr, ptr %39, align 8, !tbaa !5
  store i32 0, ptr %448, align 4, !tbaa !9
  br label %449

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

450:                                              ; preds = %449, %432
  %451 = load ptr, ptr %39, align 8, !tbaa !5
  %452 = load i32, ptr %451, align 4, !tbaa !9
  %453 = icmp eq i32 %452, 1
  br i1 %453, label %454, label %475

454:                                              ; preds = %450
  %455 = getelementptr inbounds %struct.complex, ptr %66, i32 0, i32 0
  %456 = load float, ptr %455, align 4, !tbaa !13
  %457 = load ptr, ptr %40, align 8, !tbaa !5
  %458 = getelementptr inbounds float, ptr %457, i64 1
  store float %456, ptr %458, align 4, !tbaa !11
  %459 = load i32, ptr %78, align 4, !tbaa !9
  %460 = icmp ne i32 %459, 0
  br i1 %460, label %461, label %474

461:                                              ; preds = %454
  %462 = load i32, ptr %53, align 4, !tbaa !9
  %463 = add nsw i32 %462, 1
  store i32 %463, ptr %55, align 4, !tbaa !9
  %464 = load ptr, ptr %41, align 8, !tbaa !5
  %465 = load i32, ptr %55, align 4, !tbaa !9
  %466 = sext i32 %465 to i64
  %467 = getelementptr inbounds %struct.complex, ptr %464, i64 %466
  %468 = getelementptr inbounds %struct.complex, ptr %467, i32 0, i32 0
  store float 1.000000e+00, ptr %468, align 4, !tbaa !13
  %469 = load ptr, ptr %41, align 8, !tbaa !5
  %470 = load i32, ptr %55, align 4, !tbaa !9
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds %struct.complex, ptr %469, i64 %471
  %473 = getelementptr inbounds %struct.complex, ptr %472, i32 0, i32 1
  store float 0.000000e+00, ptr %473, align 4, !tbaa !15
  br label %474

474:                                              ; preds = %461, %454
  br label %475

475:                                              ; preds = %474, %450
  store i32 1, ptr %102, align 4
  br label %1062

476:                                              ; preds = %387
  %477 = call float @slamch_(ptr noundef @.str.8)
  store float %477, ptr %86, align 4, !tbaa !11
  %478 = call float @slamch_(ptr noundef @.str.9)
  store float %478, ptr %97, align 4, !tbaa !11
  %479 = load float, ptr %86, align 4, !tbaa !11
  %480 = load float, ptr %97, align 4, !tbaa !11
  %481 = fdiv float %479, %480
  store float %481, ptr %95, align 4, !tbaa !11
  %482 = load float, ptr %95, align 4, !tbaa !11
  %483 = fdiv float 1.000000e+00, %482
  store float %483, ptr %88, align 4, !tbaa !11
  %484 = load float, ptr %95, align 4, !tbaa !11
  %485 = fpext float %484 to double
  %486 = call double @sqrt(double noundef %485) #4
  %487 = fptrunc double %486 to float
  store float %487, ptr %63, align 4, !tbaa !11
  %488 = load float, ptr %88, align 4, !tbaa !11
  %489 = fpext float %488 to double
  %490 = call double @sqrt(double noundef %489) #4
  %491 = fptrunc double %490 to float
  store float %491, ptr %57, align 4, !tbaa !11
  %492 = load float, ptr %86, align 4, !tbaa !11
  %493 = fpext float %492 to double
  %494 = call double @sqrt(double noundef %493) #4
  %495 = call double @sqrt(double noundef %494) #4
  %496 = fdiv double 1.000000e+00, %495
  %497 = fptrunc double %496 to float
  store float %497, ptr %58, align 4, !tbaa !11
  %498 = load float, ptr %57, align 4, !tbaa !11
  %499 = load float, ptr %58, align 4, !tbaa !11
  %500 = fcmp ole float %498, %499
  br i1 %500, label %501, label %503

501:                                              ; preds = %476
  %502 = load float, ptr %57, align 4, !tbaa !11
  br label %505

503:                                              ; preds = %476
  %504 = load float, ptr %58, align 4, !tbaa !11
  br label %505

505:                                              ; preds = %503, %501
  %506 = phi float [ %502, %501 ], [ %504, %503 ]
  store float %506, ptr %64, align 4, !tbaa !11
  store i32 0, ptr %83, align 4, !tbaa !9
  %507 = load ptr, ptr %38, align 8, !tbaa !5
  %508 = load float, ptr %507, align 4, !tbaa !11
  store float %508, ptr %87, align 4, !tbaa !11
  %509 = load i32, ptr %85, align 4, !tbaa !9
  %510 = icmp ne i32 %509, 0
  br i1 %510, label %511, label %516

511:                                              ; preds = %505
  %512 = load ptr, ptr %34, align 8, !tbaa !5
  %513 = load float, ptr %512, align 4, !tbaa !11
  store float %513, ptr %98, align 4, !tbaa !11
  %514 = load ptr, ptr %35, align 8, !tbaa !5
  %515 = load float, ptr %514, align 4, !tbaa !11
  store float %515, ptr %99, align 4, !tbaa !11
  br label %517

516:                                              ; preds = %505
  store float 0.000000e+00, ptr %98, align 4, !tbaa !11
  store float 0.000000e+00, ptr %99, align 4, !tbaa !11
  br label %517

517:                                              ; preds = %516, %511
  %518 = load ptr, ptr %27, align 8, !tbaa !5
  %519 = load ptr, ptr %28, align 8, !tbaa !5
  %520 = load ptr, ptr %29, align 8, !tbaa !5
  %521 = load ptr, ptr %30, align 8, !tbaa !5
  %522 = load i32, ptr %50, align 4, !tbaa !9
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds %struct.complex, ptr %521, i64 %523
  %525 = load ptr, ptr %31, align 8, !tbaa !5
  %526 = load ptr, ptr %45, align 8, !tbaa !5
  %527 = getelementptr inbounds float, ptr %526, i64 1
  %528 = call float @clanhb_(ptr noundef @.str.10, ptr noundef %518, ptr noundef %519, ptr noundef %520, ptr noundef %524, ptr noundef %525, ptr noundef %527)
  store float %528, ptr %61, align 4, !tbaa !11
  %529 = load float, ptr %61, align 4, !tbaa !11
  %530 = fcmp ogt float %529, 0.000000e+00
  br i1 %530, label %531, label %539

531:                                              ; preds = %517
  %532 = load float, ptr %61, align 4, !tbaa !11
  %533 = load float, ptr %63, align 4, !tbaa !11
  %534 = fcmp olt float %532, %533
  br i1 %534, label %535, label %539

535:                                              ; preds = %531
  store i32 1, ptr %83, align 4, !tbaa !9
  %536 = load float, ptr %63, align 4, !tbaa !11
  %537 = load float, ptr %61, align 4, !tbaa !11
  %538 = fdiv float %536, %537
  store float %538, ptr %71, align 4, !tbaa !11
  br label %548

539:                                              ; preds = %531, %517
  %540 = load float, ptr %61, align 4, !tbaa !11
  %541 = load float, ptr %64, align 4, !tbaa !11
  %542 = fcmp ogt float %540, %541
  br i1 %542, label %543, label %547

543:                                              ; preds = %539
  store i32 1, ptr %83, align 4, !tbaa !9
  %544 = load float, ptr %64, align 4, !tbaa !11
  %545 = load float, ptr %61, align 4, !tbaa !11
  %546 = fdiv float %544, %545
  store float %546, ptr %71, align 4, !tbaa !11
  br label %547

547:                                              ; preds = %543, %539
  br label %548

548:                                              ; preds = %547, %535
  %549 = load i32, ptr %83, align 4, !tbaa !9
  %550 = icmp eq i32 %549, 1
  br i1 %550, label %551, label %598

551:                                              ; preds = %548
  %552 = load i32, ptr %76, align 4, !tbaa !9
  %553 = icmp ne i32 %552, 0
  br i1 %553, label %554, label %565

554:                                              ; preds = %551
  %555 = load ptr, ptr %29, align 8, !tbaa !5
  %556 = load ptr, ptr %29, align 8, !tbaa !5
  %557 = load ptr, ptr %28, align 8, !tbaa !5
  %558 = load ptr, ptr %28, align 8, !tbaa !5
  %559 = load ptr, ptr %30, align 8, !tbaa !5
  %560 = load i32, ptr %50, align 4, !tbaa !9
  %561 = sext i32 %560 to i64
  %562 = getelementptr inbounds %struct.complex, ptr %559, i64 %561
  %563 = load ptr, ptr %31, align 8, !tbaa !5
  %564 = load ptr, ptr %48, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.11, ptr noundef %555, ptr noundef %556, ptr noundef @c_b26, ptr noundef %71, ptr noundef %557, ptr noundef %558, ptr noundef %562, ptr noundef %563, ptr noundef %564)
  br label %576

565:                                              ; preds = %551
  %566 = load ptr, ptr %29, align 8, !tbaa !5
  %567 = load ptr, ptr %29, align 8, !tbaa !5
  %568 = load ptr, ptr %28, align 8, !tbaa !5
  %569 = load ptr, ptr %28, align 8, !tbaa !5
  %570 = load ptr, ptr %30, align 8, !tbaa !5
  %571 = load i32, ptr %50, align 4, !tbaa !9
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds %struct.complex, ptr %570, i64 %572
  %574 = load ptr, ptr %31, align 8, !tbaa !5
  %575 = load ptr, ptr %48, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.12, ptr noundef %566, ptr noundef %567, ptr noundef @c_b26, ptr noundef %71, ptr noundef %568, ptr noundef %569, ptr noundef %573, ptr noundef %574, ptr noundef %575)
  br label %576

576:                                              ; preds = %565, %554
  %577 = load ptr, ptr %38, align 8, !tbaa !5
  %578 = load float, ptr %577, align 4, !tbaa !11
  %579 = fcmp ogt float %578, 0.000000e+00
  br i1 %579, label %580, label %585

580:                                              ; preds = %576
  %581 = load ptr, ptr %38, align 8, !tbaa !5
  %582 = load float, ptr %581, align 4, !tbaa !11
  %583 = load float, ptr %71, align 4, !tbaa !11
  %584 = fmul float %582, %583
  store float %584, ptr %87, align 4, !tbaa !11
  br label %585

585:                                              ; preds = %580, %576
  %586 = load i32, ptr %85, align 4, !tbaa !9
  %587 = icmp ne i32 %586, 0
  br i1 %587, label %588, label %597

588:                                              ; preds = %585
  %589 = load ptr, ptr %34, align 8, !tbaa !5
  %590 = load float, ptr %589, align 4, !tbaa !11
  %591 = load float, ptr %71, align 4, !tbaa !11
  %592 = fmul float %590, %591
  store float %592, ptr %98, align 4, !tbaa !11
  %593 = load ptr, ptr %35, align 8, !tbaa !5
  %594 = load float, ptr %593, align 4, !tbaa !11
  %595 = load float, ptr %71, align 4, !tbaa !11
  %596 = fmul float %594, %595
  store float %596, ptr %99, align 4, !tbaa !11
  br label %597

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

598:                                              ; preds = %597, %548
  store i32 1, ptr %59, align 4, !tbaa !9
  %599 = load i32, ptr %59, align 4, !tbaa !9
  %600 = load ptr, ptr %28, align 8, !tbaa !5
  %601 = load i32, ptr %600, align 4, !tbaa !9
  %602 = add nsw i32 %599, %601
  store i32 %602, ptr %60, align 4, !tbaa !9
  %603 = load i32, ptr %60, align 4, !tbaa !9
  %604 = load ptr, ptr %28, align 8, !tbaa !5
  %605 = load i32, ptr %604, align 4, !tbaa !9
  %606 = add nsw i32 %603, %605
  store i32 %606, ptr %91, align 4, !tbaa !9
  store i32 1, ptr %100, align 4, !tbaa !9
  %607 = load i32, ptr %100, align 4, !tbaa !9
  %608 = load i32, ptr %74, align 4, !tbaa !9
  %609 = add nsw i32 %607, %608
  store i32 %609, ptr %92, align 4, !tbaa !9
  %610 = load ptr, ptr %44, align 8, !tbaa !5
  %611 = load i32, ptr %610, align 4, !tbaa !9
  %612 = load i32, ptr %92, align 4, !tbaa !9
  %613 = sub nsw i32 %611, %612
  %614 = add nsw i32 %613, 1
  store i32 %614, ptr %94, align 4, !tbaa !9
  %615 = load ptr, ptr %25, align 8, !tbaa !5
  %616 = load ptr, ptr %27, align 8, !tbaa !5
  %617 = load ptr, ptr %28, align 8, !tbaa !5
  %618 = load ptr, ptr %29, align 8, !tbaa !5
  %619 = load ptr, ptr %30, align 8, !tbaa !5
  %620 = load i32, ptr %50, align 4, !tbaa !9
  %621 = sext i32 %620 to i64
  %622 = getelementptr inbounds %struct.complex, ptr %619, i64 %621
  %623 = load ptr, ptr %31, align 8, !tbaa !5
  %624 = load ptr, ptr %45, align 8, !tbaa !5
  %625 = load i32, ptr %59, align 4, !tbaa !9
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds float, ptr %624, i64 %626
  %628 = load ptr, ptr %45, align 8, !tbaa !5
  %629 = load i32, ptr %60, align 4, !tbaa !9
  %630 = sext i32 %629 to i64
  %631 = getelementptr inbounds float, ptr %628, i64 %630
  %632 = load ptr, ptr %43, align 8, !tbaa !5
  %633 = load i32, ptr %100, align 4, !tbaa !9
  %634 = sext i32 %633 to i64
  %635 = getelementptr inbounds %struct.complex, ptr %632, i64 %634
  %636 = load ptr, ptr %43, align 8, !tbaa !5
  %637 = load i32, ptr %92, align 4, !tbaa !9
  %638 = sext i32 %637 to i64
  %639 = getelementptr inbounds %struct.complex, ptr %636, i64 %638
  call void @chetrd_hb2st_(ptr noundef @.str.4, ptr noundef %615, ptr noundef %616, ptr noundef %617, ptr noundef %618, ptr noundef %622, ptr noundef %623, ptr noundef %627, ptr noundef %631, ptr noundef %635, ptr noundef %74, ptr noundef %639, ptr noundef %94, ptr noundef %72)
  store i32 0, ptr %65, align 4, !tbaa !9
  %640 = load i32, ptr %82, align 4, !tbaa !9
  %641 = icmp ne i32 %640, 0
  br i1 %641, label %642, label %654

642:                                              ; preds = %598
  %643 = load ptr, ptr %36, align 8, !tbaa !5
  %644 = load i32, ptr %643, align 4, !tbaa !9
  %645 = icmp eq i32 %644, 1
  br i1 %645, label %646, label %653

646:                                              ; preds = %642
  %647 = load ptr, ptr %37, align 8, !tbaa !5
  %648 = load i32, ptr %647, align 4, !tbaa !9
  %649 = load ptr, ptr %28, align 8, !tbaa !5
  %650 = load i32, ptr %649, align 4, !tbaa !9
  %651 = icmp eq i32 %648, %650
  br i1 %651, label %652, label %653

652:                                              ; preds = %646
  store i32 1, ptr %65, align 4, !tbaa !9
  br label %653

653:                                              ; preds = %652, %646, %642
  br label %654

654:                                              ; preds = %653, %598
  %655 = load i32, ptr %81, align 4, !tbaa !9
  %656 = icmp ne i32 %655, 0
  br i1 %656, label %660, label %657

657:                                              ; preds = %654
  %658 = load i32, ptr %65, align 4, !tbaa !9
  %659 = icmp ne i32 %658, 0
  br i1 %659, label %660, label %771

660:                                              ; preds = %657, %654
  %661 = load ptr, ptr %38, align 8, !tbaa !5
  %662 = load float, ptr %661, align 4, !tbaa !11
  %663 = fcmp ole float %662, 0.000000e+00
  br i1 %663, label %664, label %771

664:                                              ; preds = %660
  %665 = load ptr, ptr %28, align 8, !tbaa !5
  %666 = load ptr, ptr %45, align 8, !tbaa !5
  %667 = load i32, ptr %59, align 4, !tbaa !9
  %668 = sext i32 %667 to i64
  %669 = getelementptr inbounds float, ptr %666, i64 %668
  %670 = load ptr, ptr %40, align 8, !tbaa !5
  %671 = getelementptr inbounds float, ptr %670, i64 1
  call void @scopy_(ptr noundef %665, ptr noundef %669, ptr noundef @c__1, ptr noundef %671, ptr noundef @c__1)
  %672 = load i32, ptr %91, align 4, !tbaa !9
  %673 = load ptr, ptr %28, align 8, !tbaa !5
  %674 = load i32, ptr %673, align 4, !tbaa !9
  %675 = shl i32 %674, 1
  %676 = add nsw i32 %672, %675
  store i32 %676, ptr %70, align 4, !tbaa !9
  %677 = load i32, ptr %78, align 4, !tbaa !9
  %678 = icmp ne i32 %677, 0
  br i1 %678, label %699, label %679

679:                                              ; preds = %664
  %680 = load ptr, ptr %28, align 8, !tbaa !5
  %681 = load i32, ptr %680, align 4, !tbaa !9
  %682 = sub nsw i32 %681, 1
  store i32 %682, ptr %55, align 4, !tbaa !9
  %683 = load ptr, ptr %45, align 8, !tbaa !5
  %684 = load i32, ptr %60, align 4, !tbaa !9
  %685 = sext i32 %684 to i64
  %686 = getelementptr inbounds float, ptr %683, i64 %685
  %687 = load ptr, ptr %45, align 8, !tbaa !5
  %688 = load i32, ptr %70, align 4, !tbaa !9
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds float, ptr %687, i64 %689
  call void @scopy_(ptr noundef %55, ptr noundef %686, ptr noundef @c__1, ptr noundef %690, ptr noundef @c__1)
  %691 = load ptr, ptr %28, align 8, !tbaa !5
  %692 = load ptr, ptr %40, align 8, !tbaa !5
  %693 = getelementptr inbounds float, ptr %692, i64 1
  %694 = load ptr, ptr %45, align 8, !tbaa !5
  %695 = load i32, ptr %70, align 4, !tbaa !9
  %696 = sext i32 %695 to i64
  %697 = getelementptr inbounds float, ptr %694, i64 %696
  %698 = load ptr, ptr %48, align 8, !tbaa !5
  call void @ssterf_(ptr noundef %691, ptr noundef %693, ptr noundef %697, ptr noundef %698)
  br label %761

699:                                              ; preds = %664
  %700 = load ptr, ptr %28, align 8, !tbaa !5
  %701 = load ptr, ptr %28, align 8, !tbaa !5
  %702 = load ptr, ptr %32, align 8, !tbaa !5
  %703 = load i32, ptr %52, align 4, !tbaa !9
  %704 = sext i32 %703 to i64
  %705 = getelementptr inbounds %struct.complex, ptr %702, i64 %704
  %706 = load ptr, ptr %33, align 8, !tbaa !5
  %707 = load ptr, ptr %41, align 8, !tbaa !5
  %708 = load i32, ptr %54, align 4, !tbaa !9
  %709 = sext i32 %708 to i64
  %710 = getelementptr inbounds %struct.complex, ptr %707, i64 %709
  %711 = load ptr, ptr %42, align 8, !tbaa !5
  call void @clacpy_(ptr noundef @.str.1, ptr noundef %700, ptr noundef %701, ptr noundef %705, ptr noundef %706, ptr noundef %710, ptr noundef %711)
  %712 = load ptr, ptr %28, align 8, !tbaa !5
  %713 = load i32, ptr %712, align 4, !tbaa !9
  %714 = sub nsw i32 %713, 1
  store i32 %714, ptr %55, align 4, !tbaa !9
  %715 = load ptr, ptr %45, align 8, !tbaa !5
  %716 = load i32, ptr %60, align 4, !tbaa !9
  %717 = sext i32 %716 to i64
  %718 = getelementptr inbounds float, ptr %715, i64 %717
  %719 = load ptr, ptr %45, align 8, !tbaa !5
  %720 = load i32, ptr %70, align 4, !tbaa !9
  %721 = sext i32 %720 to i64
  %722 = getelementptr inbounds float, ptr %719, i64 %721
  call void @scopy_(ptr noundef %55, ptr noundef %718, ptr noundef @c__1, ptr noundef %722, ptr noundef @c__1)
  %723 = load ptr, ptr %25, align 8, !tbaa !5
  %724 = load ptr, ptr %28, align 8, !tbaa !5
  %725 = load ptr, ptr %40, align 8, !tbaa !5
  %726 = getelementptr inbounds float, ptr %725, i64 1
  %727 = load ptr, ptr %45, align 8, !tbaa !5
  %728 = load i32, ptr %70, align 4, !tbaa !9
  %729 = sext i32 %728 to i64
  %730 = getelementptr inbounds float, ptr %727, i64 %729
  %731 = load ptr, ptr %41, align 8, !tbaa !5
  %732 = load i32, ptr %54, align 4, !tbaa !9
  %733 = sext i32 %732 to i64
  %734 = getelementptr inbounds %struct.complex, ptr %731, i64 %733
  %735 = load ptr, ptr %42, align 8, !tbaa !5
  %736 = load ptr, ptr %45, align 8, !tbaa !5
  %737 = load i32, ptr %91, align 4, !tbaa !9
  %738 = sext i32 %737 to i64
  %739 = getelementptr inbounds float, ptr %736, i64 %738
  %740 = load ptr, ptr %48, align 8, !tbaa !5
  call void @csteqr_(ptr noundef %723, ptr noundef %724, ptr noundef %726, ptr noundef %730, ptr noundef %734, ptr noundef %735, ptr noundef %739, ptr noundef %740)
  %741 = load ptr, ptr %48, align 8, !tbaa !5
  %742 = load i32, ptr %741, align 4, !tbaa !9
  %743 = icmp eq i32 %742, 0
  br i1 %743, label %744, label %760

744:                                              ; preds = %699
  %745 = load ptr, ptr %28, align 8, !tbaa !5
  %746 = load i32, ptr %745, align 4, !tbaa !9
  store i32 %746, ptr %55, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %747

747:                                              ; preds = %756, %744
  %748 = load i32, ptr %68, align 4, !tbaa !9
  %749 = load i32, ptr %55, align 4, !tbaa !9
  %750 = icmp sle i32 %748, %749
  br i1 %750, label %751, label %759

751:                                              ; preds = %747
  %752 = load ptr, ptr %47, align 8, !tbaa !5
  %753 = load i32, ptr %68, align 4, !tbaa !9
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds i32, ptr %752, i64 %754
  store i32 0, ptr %755, align 4, !tbaa !9
  br label %756

756:                                              ; preds = %751
  %757 = load i32, ptr %68, align 4, !tbaa !9
  %758 = add nsw i32 %757, 1
  store i32 %758, ptr %68, align 4, !tbaa !9
  br label %747, !llvm.loop !16

759:                                              ; preds = %747
  br label %760

760:                                              ; preds = %759, %699
  br label %761

761:                                              ; preds = %760, %679
  %762 = load ptr, ptr %48, align 8, !tbaa !5
  %763 = load i32, ptr %762, align 4, !tbaa !9
  %764 = icmp eq i32 %763, 0
  br i1 %764, label %765, label %769

765:                                              ; preds = %761
  %766 = load ptr, ptr %28, align 8, !tbaa !5
  %767 = load i32, ptr %766, align 4, !tbaa !9
  %768 = load ptr, ptr %39, align 8, !tbaa !5
  store i32 %767, ptr %768, align 4, !tbaa !9
  br label %897

769:                                              ; preds = %761
  %770 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 0, ptr %770, align 4, !tbaa !9
  br label %771

771:                                              ; preds = %769, %660, %657
  %772 = load i32, ptr %78, align 4, !tbaa !9
  %773 = icmp ne i32 %772, 0
  br i1 %773, label %774, label %776

774:                                              ; preds = %771
  %775 = getelementptr inbounds [1 x i8], ptr %73, i64 0, i64 0
  store i8 66, ptr %775, align 1, !tbaa !18
  br label %778

776:                                              ; preds = %771
  %777 = getelementptr inbounds [1 x i8], ptr %73, i64 0, i64 0
  store i8 69, ptr %777, align 1, !tbaa !18
  br label %778

778:                                              ; preds = %776, %774
  store i32 1, ptr %84, align 4, !tbaa !9
  %779 = load i32, ptr %84, align 4, !tbaa !9
  %780 = load ptr, ptr %28, align 8, !tbaa !5
  %781 = load i32, ptr %780, align 4, !tbaa !9
  %782 = add nsw i32 %779, %781
  store i32 %782, ptr %90, align 4, !tbaa !9
  %783 = load i32, ptr %90, align 4, !tbaa !9
  %784 = load ptr, ptr %28, align 8, !tbaa !5
  %785 = load i32, ptr %784, align 4, !tbaa !9
  %786 = add nsw i32 %783, %785
  store i32 %786, ptr %89, align 4, !tbaa !9
  %787 = load ptr, ptr %26, align 8, !tbaa !5
  %788 = getelementptr inbounds [1 x i8], ptr %73, i64 0, i64 0
  %789 = load ptr, ptr %28, align 8, !tbaa !5
  %790 = load ptr, ptr %36, align 8, !tbaa !5
  %791 = load ptr, ptr %37, align 8, !tbaa !5
  %792 = load ptr, ptr %45, align 8, !tbaa !5
  %793 = load i32, ptr %59, align 4, !tbaa !9
  %794 = sext i32 %793 to i64
  %795 = getelementptr inbounds float, ptr %792, i64 %794
  %796 = load ptr, ptr %45, align 8, !tbaa !5
  %797 = load i32, ptr %60, align 4, !tbaa !9
  %798 = sext i32 %797 to i64
  %799 = getelementptr inbounds float, ptr %796, i64 %798
  %800 = load ptr, ptr %39, align 8, !tbaa !5
  %801 = load ptr, ptr %40, align 8, !tbaa !5
  %802 = getelementptr inbounds float, ptr %801, i64 1
  %803 = load ptr, ptr %46, align 8, !tbaa !5
  %804 = load i32, ptr %84, align 4, !tbaa !9
  %805 = sext i32 %804 to i64
  %806 = getelementptr inbounds i32, ptr %803, i64 %805
  %807 = load ptr, ptr %46, align 8, !tbaa !5
  %808 = load i32, ptr %90, align 4, !tbaa !9
  %809 = sext i32 %808 to i64
  %810 = getelementptr inbounds i32, ptr %807, i64 %809
  %811 = load ptr, ptr %45, align 8, !tbaa !5
  %812 = load i32, ptr %91, align 4, !tbaa !9
  %813 = sext i32 %812 to i64
  %814 = getelementptr inbounds float, ptr %811, i64 %813
  %815 = load ptr, ptr %46, align 8, !tbaa !5
  %816 = load i32, ptr %89, align 4, !tbaa !9
  %817 = sext i32 %816 to i64
  %818 = getelementptr inbounds i32, ptr %815, i64 %817
  %819 = load ptr, ptr %48, align 8, !tbaa !5
  call void @sstebz_(ptr noundef %787, ptr noundef %788, ptr noundef %789, ptr noundef %98, ptr noundef %99, ptr noundef %790, ptr noundef %791, ptr noundef %87, ptr noundef %795, ptr noundef %799, ptr noundef %800, ptr noundef %93, ptr noundef %802, ptr noundef %806, ptr noundef %810, ptr noundef %814, ptr noundef %818, ptr noundef %819)
  %820 = load i32, ptr %78, align 4, !tbaa !9
  %821 = icmp ne i32 %820, 0
  br i1 %821, label %822, label %896

822:                                              ; preds = %778
  %823 = load ptr, ptr %28, align 8, !tbaa !5
  %824 = load ptr, ptr %45, align 8, !tbaa !5
  %825 = load i32, ptr %59, align 4, !tbaa !9
  %826 = sext i32 %825 to i64
  %827 = getelementptr inbounds float, ptr %824, i64 %826
  %828 = load ptr, ptr %45, align 8, !tbaa !5
  %829 = load i32, ptr %60, align 4, !tbaa !9
  %830 = sext i32 %829 to i64
  %831 = getelementptr inbounds float, ptr %828, i64 %830
  %832 = load ptr, ptr %39, align 8, !tbaa !5
  %833 = load ptr, ptr %40, align 8, !tbaa !5
  %834 = getelementptr inbounds float, ptr %833, i64 1
  %835 = load ptr, ptr %46, align 8, !tbaa !5
  %836 = load i32, ptr %84, align 4, !tbaa !9
  %837 = sext i32 %836 to i64
  %838 = getelementptr inbounds i32, ptr %835, i64 %837
  %839 = load ptr, ptr %46, align 8, !tbaa !5
  %840 = load i32, ptr %90, align 4, !tbaa !9
  %841 = sext i32 %840 to i64
  %842 = getelementptr inbounds i32, ptr %839, i64 %841
  %843 = load ptr, ptr %41, align 8, !tbaa !5
  %844 = load i32, ptr %54, align 4, !tbaa !9
  %845 = sext i32 %844 to i64
  %846 = getelementptr inbounds %struct.complex, ptr %843, i64 %845
  %847 = load ptr, ptr %42, align 8, !tbaa !5
  %848 = load ptr, ptr %45, align 8, !tbaa !5
  %849 = load i32, ptr %91, align 4, !tbaa !9
  %850 = sext i32 %849 to i64
  %851 = getelementptr inbounds float, ptr %848, i64 %850
  %852 = load ptr, ptr %46, align 8, !tbaa !5
  %853 = load i32, ptr %89, align 4, !tbaa !9
  %854 = sext i32 %853 to i64
  %855 = getelementptr inbounds i32, ptr %852, i64 %854
  %856 = load ptr, ptr %47, align 8, !tbaa !5
  %857 = getelementptr inbounds i32, ptr %856, i64 1
  %858 = load ptr, ptr %48, align 8, !tbaa !5
  call void @cstein_(ptr noundef %823, ptr noundef %827, ptr noundef %831, ptr noundef %832, ptr noundef %834, ptr noundef %838, ptr noundef %842, ptr noundef %846, ptr noundef %847, ptr noundef %851, ptr noundef %855, ptr noundef %857, ptr noundef %858)
  %859 = load ptr, ptr %39, align 8, !tbaa !5
  %860 = load i32, ptr %859, align 4, !tbaa !9
  store i32 %860, ptr %55, align 4, !tbaa !9
  store i32 1, ptr %69, align 4, !tbaa !9
  br label %861

861:                                              ; preds = %892, %822
  %862 = load i32, ptr %69, align 4, !tbaa !9
  %863 = load i32, ptr %55, align 4, !tbaa !9
  %864 = icmp sle i32 %862, %863
  br i1 %864, label %865, label %895

865:                                              ; preds = %861
  %866 = load ptr, ptr %28, align 8, !tbaa !5
  %867 = load ptr, ptr %41, align 8, !tbaa !5
  %868 = load i32, ptr %69, align 4, !tbaa !9
  %869 = load i32, ptr %53, align 4, !tbaa !9
  %870 = mul nsw i32 %868, %869
  %871 = add nsw i32 %870, 1
  %872 = sext i32 %871 to i64
  %873 = getelementptr inbounds %struct.complex, ptr %867, i64 %872
  %874 = load ptr, ptr %43, align 8, !tbaa !5
  %875 = getelementptr inbounds %struct.complex, ptr %874, i64 1
  call void @ccopy_(ptr noundef %866, ptr noundef %873, ptr noundef @c__1, ptr noundef %875, ptr noundef @c__1)
  %876 = load ptr, ptr %28, align 8, !tbaa !5
  %877 = load ptr, ptr %28, align 8, !tbaa !5
  %878 = load ptr, ptr %32, align 8, !tbaa !5
  %879 = load i32, ptr %52, align 4, !tbaa !9
  %880 = sext i32 %879 to i64
  %881 = getelementptr inbounds %struct.complex, ptr %878, i64 %880
  %882 = load ptr, ptr %33, align 8, !tbaa !5
  %883 = load ptr, ptr %43, align 8, !tbaa !5
  %884 = getelementptr inbounds %struct.complex, ptr %883, i64 1
  %885 = load ptr, ptr %41, align 8, !tbaa !5
  %886 = load i32, ptr %69, align 4, !tbaa !9
  %887 = load i32, ptr %53, align 4, !tbaa !9
  %888 = mul nsw i32 %886, %887
  %889 = add nsw i32 %888, 1
  %890 = sext i32 %889 to i64
  %891 = getelementptr inbounds %struct.complex, ptr %885, i64 %890
  call void @cgemv_(ptr noundef @.str.4, ptr noundef %876, ptr noundef %877, ptr noundef @c_b2, ptr noundef %881, ptr noundef %882, ptr noundef %884, ptr noundef @c__1, ptr noundef @c_b1, ptr noundef %891, ptr noundef @c__1)
  br label %892

892:                                              ; preds = %865
  %893 = load i32, ptr %69, align 4, !tbaa !9
  %894 = add nsw i32 %893, 1
  store i32 %894, ptr %69, align 4, !tbaa !9
  br label %861, !llvm.loop !19

895:                                              ; preds = %861
  br label %896

896:                                              ; preds = %895, %778
  br label %897

897:                                              ; preds = %896, %765
  %898 = load i32, ptr %83, align 4, !tbaa !9
  %899 = icmp eq i32 %898, 1
  br i1 %899, label %900, label %916

900:                                              ; preds = %897
  %901 = load ptr, ptr %48, align 8, !tbaa !5
  %902 = load i32, ptr %901, align 4, !tbaa !9
  %903 = icmp eq i32 %902, 0
  br i1 %903, label %904, label %907

904:                                              ; preds = %900
  %905 = load ptr, ptr %39, align 8, !tbaa !5
  %906 = load i32, ptr %905, align 4, !tbaa !9
  store i32 %906, ptr %62, align 4, !tbaa !9
  br label %911

907:                                              ; preds = %900
  %908 = load ptr, ptr %48, align 8, !tbaa !5
  %909 = load i32, ptr %908, align 4, !tbaa !9
  %910 = sub nsw i32 %909, 1
  store i32 %910, ptr %62, align 4, !tbaa !9
  br label %911

911:                                              ; preds = %907, %904
  %912 = load float, ptr %71, align 4, !tbaa !11
  %913 = fdiv float 1.000000e+00, %912
  store float %913, ptr %57, align 4, !tbaa !11
  %914 = load ptr, ptr %40, align 8, !tbaa !5
  %915 = getelementptr inbounds float, ptr %914, i64 1
  call void @sscal_(ptr noundef %62, ptr noundef %57, ptr noundef %915, ptr noundef @c__1)
  br label %916

916:                                              ; preds = %911, %897
  %917 = load i32, ptr %78, align 4, !tbaa !9
  %918 = icmp ne i32 %917, 0
  br i1 %918, label %919, label %1053

919:                                              ; preds = %916
  %920 = load ptr, ptr %39, align 8, !tbaa !5
  %921 = load i32, ptr %920, align 4, !tbaa !9
  %922 = sub nsw i32 %921, 1
  store i32 %922, ptr %55, align 4, !tbaa !9
  store i32 1, ptr %69, align 4, !tbaa !9
  br label %923

923:                                              ; preds = %1049, %919
  %924 = load i32, ptr %69, align 4, !tbaa !9
  %925 = load i32, ptr %55, align 4, !tbaa !9
  %926 = icmp sle i32 %924, %925
  br i1 %926, label %927, label %1052

927:                                              ; preds = %923
  store i32 0, ptr %68, align 4, !tbaa !9
  %928 = load ptr, ptr %40, align 8, !tbaa !5
  %929 = load i32, ptr %69, align 4, !tbaa !9
  %930 = sext i32 %929 to i64
  %931 = getelementptr inbounds float, ptr %928, i64 %930
  %932 = load float, ptr %931, align 4, !tbaa !11
  store float %932, ptr %101, align 4, !tbaa !11
  %933 = load ptr, ptr %39, align 8, !tbaa !5
  %934 = load i32, ptr %933, align 4, !tbaa !9
  store i32 %934, ptr %56, align 4, !tbaa !9
  %935 = load i32, ptr %69, align 4, !tbaa !9
  %936 = add nsw i32 %935, 1
  store i32 %936, ptr %80, align 4, !tbaa !9
  br label %937

937:                                              ; preds = %957, %927
  %938 = load i32, ptr %80, align 4, !tbaa !9
  %939 = load i32, ptr %56, align 4, !tbaa !9
  %940 = icmp sle i32 %938, %939
  br i1 %940, label %941, label %960

941:                                              ; preds = %937
  %942 = load ptr, ptr %40, align 8, !tbaa !5
  %943 = load i32, ptr %80, align 4, !tbaa !9
  %944 = sext i32 %943 to i64
  %945 = getelementptr inbounds float, ptr %942, i64 %944
  %946 = load float, ptr %945, align 4, !tbaa !11
  %947 = load float, ptr %101, align 4, !tbaa !11
  %948 = fcmp olt float %946, %947
  br i1 %948, label %949, label %956

949:                                              ; preds = %941
  %950 = load i32, ptr %80, align 4, !tbaa !9
  store i32 %950, ptr %68, align 4, !tbaa !9
  %951 = load ptr, ptr %40, align 8, !tbaa !5
  %952 = load i32, ptr %80, align 4, !tbaa !9
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds float, ptr %951, i64 %953
  %955 = load float, ptr %954, align 4, !tbaa !11
  store float %955, ptr %101, align 4, !tbaa !11
  br label %956

956:                                              ; preds = %949, %941
  br label %957

957:                                              ; preds = %956
  %958 = load i32, ptr %80, align 4, !tbaa !9
  %959 = add nsw i32 %958, 1
  store i32 %959, ptr %80, align 4, !tbaa !9
  br label %937, !llvm.loop !20

960:                                              ; preds = %937
  %961 = load i32, ptr %68, align 4, !tbaa !9
  %962 = icmp ne i32 %961, 0
  br i1 %962, label %963, label %1048

963:                                              ; preds = %960
  %964 = load ptr, ptr %46, align 8, !tbaa !5
  %965 = load i32, ptr %84, align 4, !tbaa !9
  %966 = load i32, ptr %68, align 4, !tbaa !9
  %967 = add nsw i32 %965, %966
  %968 = sub nsw i32 %967, 1
  %969 = sext i32 %968 to i64
  %970 = getelementptr inbounds i32, ptr %964, i64 %969
  %971 = load i32, ptr %970, align 4, !tbaa !9
  store i32 %971, ptr %67, align 4, !tbaa !9
  %972 = load ptr, ptr %40, align 8, !tbaa !5
  %973 = load i32, ptr %69, align 4, !tbaa !9
  %974 = sext i32 %973 to i64
  %975 = getelementptr inbounds float, ptr %972, i64 %974
  %976 = load float, ptr %975, align 4, !tbaa !11
  %977 = load ptr, ptr %40, align 8, !tbaa !5
  %978 = load i32, ptr %68, align 4, !tbaa !9
  %979 = sext i32 %978 to i64
  %980 = getelementptr inbounds float, ptr %977, i64 %979
  store float %976, ptr %980, align 4, !tbaa !11
  %981 = load ptr, ptr %46, align 8, !tbaa !5
  %982 = load i32, ptr %84, align 4, !tbaa !9
  %983 = load i32, ptr %69, align 4, !tbaa !9
  %984 = add nsw i32 %982, %983
  %985 = sub nsw i32 %984, 1
  %986 = sext i32 %985 to i64
  %987 = getelementptr inbounds i32, ptr %981, i64 %986
  %988 = load i32, ptr %987, align 4, !tbaa !9
  %989 = load ptr, ptr %46, align 8, !tbaa !5
  %990 = load i32, ptr %84, align 4, !tbaa !9
  %991 = load i32, ptr %68, align 4, !tbaa !9
  %992 = add nsw i32 %990, %991
  %993 = sub nsw i32 %992, 1
  %994 = sext i32 %993 to i64
  %995 = getelementptr inbounds i32, ptr %989, i64 %994
  store i32 %988, ptr %995, align 4, !tbaa !9
  %996 = load float, ptr %101, align 4, !tbaa !11
  %997 = load ptr, ptr %40, align 8, !tbaa !5
  %998 = load i32, ptr %69, align 4, !tbaa !9
  %999 = sext i32 %998 to i64
  %1000 = getelementptr inbounds float, ptr %997, i64 %999
  store float %996, ptr %1000, align 4, !tbaa !11
  %1001 = load i32, ptr %67, align 4, !tbaa !9
  %1002 = load ptr, ptr %46, align 8, !tbaa !5
  %1003 = load i32, ptr %84, align 4, !tbaa !9
  %1004 = load i32, ptr %69, align 4, !tbaa !9
  %1005 = add nsw i32 %1003, %1004
  %1006 = sub nsw i32 %1005, 1
  %1007 = sext i32 %1006 to i64
  %1008 = getelementptr inbounds i32, ptr %1002, i64 %1007
  store i32 %1001, ptr %1008, align 4, !tbaa !9
  %1009 = load ptr, ptr %28, align 8, !tbaa !5
  %1010 = load ptr, ptr %41, align 8, !tbaa !5
  %1011 = load i32, ptr %68, align 4, !tbaa !9
  %1012 = load i32, ptr %53, align 4, !tbaa !9
  %1013 = mul nsw i32 %1011, %1012
  %1014 = add nsw i32 %1013, 1
  %1015 = sext i32 %1014 to i64
  %1016 = getelementptr inbounds %struct.complex, ptr %1010, i64 %1015
  %1017 = load ptr, ptr %41, align 8, !tbaa !5
  %1018 = load i32, ptr %69, align 4, !tbaa !9
  %1019 = load i32, ptr %53, align 4, !tbaa !9
  %1020 = mul nsw i32 %1018, %1019
  %1021 = add nsw i32 %1020, 1
  %1022 = sext i32 %1021 to i64
  %1023 = getelementptr inbounds %struct.complex, ptr %1017, i64 %1022
  call void @cswap_(ptr noundef %1009, ptr noundef %1016, ptr noundef @c__1, ptr noundef %1023, ptr noundef @c__1)
  %1024 = load ptr, ptr %48, align 8, !tbaa !5
  %1025 = load i32, ptr %1024, align 4, !tbaa !9
  %1026 = icmp ne i32 %1025, 0
  br i1 %1026, label %1027, label %1047

1027:                                             ; preds = %963
  %1028 = load ptr, ptr %47, align 8, !tbaa !5
  %1029 = load i32, ptr %68, align 4, !tbaa !9
  %1030 = sext i32 %1029 to i64
  %1031 = getelementptr inbounds i32, ptr %1028, i64 %1030
  %1032 = load i32, ptr %1031, align 4, !tbaa !9
  store i32 %1032, ptr %67, align 4, !tbaa !9
  %1033 = load ptr, ptr %47, align 8, !tbaa !5
  %1034 = load i32, ptr %69, align 4, !tbaa !9
  %1035 = sext i32 %1034 to i64
  %1036 = getelementptr inbounds i32, ptr %1033, i64 %1035
  %1037 = load i32, ptr %1036, align 4, !tbaa !9
  %1038 = load ptr, ptr %47, align 8, !tbaa !5
  %1039 = load i32, ptr %68, align 4, !tbaa !9
  %1040 = sext i32 %1039 to i64
  %1041 = getelementptr inbounds i32, ptr %1038, i64 %1040
  store i32 %1037, ptr %1041, align 4, !tbaa !9
  %1042 = load i32, ptr %67, align 4, !tbaa !9
  %1043 = load ptr, ptr %47, align 8, !tbaa !5
  %1044 = load i32, ptr %69, align 4, !tbaa !9
  %1045 = sext i32 %1044 to i64
  %1046 = getelementptr inbounds i32, ptr %1043, i64 %1045
  store i32 %1042, ptr %1046, align 4, !tbaa !9
  br label %1047

1047:                                             ; preds = %1027, %963
  br label %1048

1048:                                             ; preds = %1047, %960
  br label %1049

1049:                                             ; preds = %1048
  %1050 = load i32, ptr %69, align 4, !tbaa !9
  %1051 = add nsw i32 %1050, 1
  store i32 %1051, ptr %69, align 4, !tbaa !9
  br label %923, !llvm.loop !21

1052:                                             ; preds = %923
  br label %1053

1053:                                             ; preds = %1052, %916
  %1054 = load i32, ptr %75, align 4, !tbaa !9
  %1055 = sitofp i32 %1054 to float
  %1056 = load ptr, ptr %43, align 8, !tbaa !5
  %1057 = getelementptr inbounds %struct.complex, ptr %1056, i64 1
  %1058 = getelementptr inbounds %struct.complex, ptr %1057, i32 0, i32 0
  store float %1055, ptr %1058, align 4, !tbaa !13
  %1059 = load ptr, ptr %43, align 8, !tbaa !5
  %1060 = getelementptr inbounds %struct.complex, ptr %1059, i64 1
  %1061 = getelementptr inbounds %struct.complex, ptr %1060, i32 0, i32 1
  store float 0.000000e+00, ptr %1061, align 4, !tbaa !15
  store i32 1, ptr %102, align 4
  br label %1062

1062:                                             ; preds = %1053, %475, %386, %379, %371
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #4
  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 1, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 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
  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 @ilaenv2stage_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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 @chetrd_hb2st_(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 @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
@c__2 = external hidden global i32, align 4
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1
@c_n1 = external hidden global i32, align 4
@c__3 = external hidden global i32, align 4
@c__4 = external hidden global i32, align 4
@.str.7 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b26 = external hidden global float, align 4
@.str.12 = 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_2stage_(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 nocapture noundef readonly %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23) local_unnamed_addr #0 {
  %25 = alloca i32, align 4
  %26 = alloca float, align 4
  %27 = alloca i32, align 4
  %28 = alloca float, align 4
  %29 = alloca i32, align 4
  %30 = alloca [1 x i8], align 1
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca float, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca float, align 4
  %37 = alloca float, align 4
  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 4, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 1, 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
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %36) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #6
  %38 = load i32, ptr %6, align 4, !tbaa !5
  %39 = add i32 %38, 1
  %narrow = xor i32 %38, -1
  %40 = sext i32 %narrow to i64
  %41 = getelementptr inbounds %struct.complex, ptr %5, i64 %40
  %42 = getelementptr inbounds i8, ptr %15, i64 -4
  %43 = load i32, ptr %17, align 4, !tbaa !5
  %44 = add nsw i32 %43, 1
  %narrow432 = xor i32 %43, -1
  %45 = sext i32 %narrow432 to i64
  %46 = getelementptr inbounds %struct.complex, ptr %16, i64 %45
  %47 = getelementptr inbounds i8, ptr %18, i64 -8
  %48 = getelementptr inbounds i8, ptr %20, i64 -4
  %49 = getelementptr inbounds i8, ptr %21, i64 -4
  %50 = getelementptr inbounds i8, ptr %22, i64 -4
  %51 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %52 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %53 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #6
  %54 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #6
  %55 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.3) #6
  %56 = load i32, ptr %19, align 4, !tbaa !5
  %57 = icmp eq i32 %56, -1
  store i32 0, ptr %23, align 4, !tbaa !5
  %58 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #6
  %.not = icmp eq i32 %58, 0
  br i1 %.not, label %.thread445.sink.split, label %59

59:                                               ; preds = %24
  %60 = icmp ne i32 %52, 0
  %61 = icmp ne i32 %53, 0
  %or.cond = select i1 %60, i1 true, i1 %61
  %62 = icmp ne i32 %54, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %62
  br i1 %or.cond3, label %63, label %.thread445.sink.split

63:                                               ; preds = %59
  %.not407 = icmp eq i32 %55, 0
  br i1 %.not407, label %64, label %66

64:                                               ; preds = %63
  %65 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.5) #6
  %.not408 = icmp eq i32 %65, 0
  br i1 %.not408, label %.thread445.sink.split, label %66

66:                                               ; preds = %64, %63
  %67 = load i32, ptr %3, align 4, !tbaa !5
  %68 = icmp slt i32 %67, 0
  br i1 %68, label %.thread445.sink.split, label %69

69:                                               ; preds = %66
  %70 = load i32, ptr %4, align 4, !tbaa !5
  %71 = icmp slt i32 %70, 0
  br i1 %71, label %.thread445.sink.split, label %72

72:                                               ; preds = %69
  %73 = load i32, ptr %6, align 4, !tbaa !5
  %.not409 = icmp sgt i32 %73, %70
  br i1 %.not409, label %74, label %.thread445.sink.split

74:                                               ; preds = %72
  %.not410 = icmp ne i32 %51, 0
  br i1 %.not410, label %75, label %78

75:                                               ; preds = %74
  %76 = load i32, ptr %8, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %67, i32 1)
  %77 = icmp slt i32 %76, %spec.select
  br i1 %77, label %.thread445.sink.split, label %78

78:                                               ; preds = %75, %74
  br i1 %61, label %79, label %84

79:                                               ; preds = %78
  %.not461 = icmp eq i32 %67, 0
  br i1 %.not461, label %93, label %80

80:                                               ; preds = %79
  %81 = load float, ptr %10, align 4, !tbaa !9
  %82 = load float, ptr %9, align 4, !tbaa !9
  %83 = fcmp ugt float %81, %82
  br i1 %83, label %93, label %.thread445.sink.split

84:                                               ; preds = %78
  br i1 %62, label %85, label %93

85:                                               ; preds = %84
  %86 = load i32, ptr %11, align 4, !tbaa !5
  %87 = icmp slt i32 %86, 1
  %spec.select433 = tail call i32 @llvm.umax.i32(i32 %67, i32 1)
  %88 = icmp ugt i32 %86, %spec.select433
  %or.cond463 = or i1 %87, %88
  br i1 %or.cond463, label %.thread445.sink.split, label %89

89:                                               ; preds = %85
  %90 = load i32, ptr %12, align 4, !tbaa !5
  %. = tail call i32 @llvm.umin.i32(i32 %67, i32 %86)
  %91 = icmp slt i32 %90, %.
  %92 = icmp ugt i32 %90, %67
  %or.cond460 = or i1 %91, %92
  br i1 %or.cond460, label %.thread445.sink.split, label %93

93:                                               ; preds = %89, %80, %79, %84
  %.pr = load i32, ptr %23, align 4, !tbaa !5
  %94 = icmp eq i32 %.pr, 0
  br i1 %94, label %95, label %.thread445

95:                                               ; preds = %93
  %96 = load i32, ptr %17, align 4, !tbaa !5
  %97 = icmp slt i32 %96, 1
  %98 = icmp ult i32 %96, %67
  %or.cond501 = and i1 %.not410, %98
  %or.cond503 = or i1 %97, %or.cond501
  br i1 %or.cond503, label %.thread445.sink.split, label %.thread

.thread:                                          ; preds = %95
  %99 = icmp ult i32 %67, 2
  br i1 %99, label %107, label %100

100:                                              ; preds = %.thread
  %101 = tail call i32 @ilaenv2stage_(ptr noundef nonnull @c__2, ptr noundef nonnull @.str.6, ptr noundef %0, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #6
  store i32 %101, ptr %32, align 4, !tbaa !5
  %102 = call i32 @ilaenv2stage_(ptr noundef nonnull @c__3, ptr noundef nonnull @.str.6, ptr noundef %0, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %32, ptr noundef nonnull @c_n1) #6
  store i32 %102, ptr %31, align 4, !tbaa !5
  %103 = call i32 @ilaenv2stage_(ptr noundef nonnull @c__4, ptr noundef nonnull @.str.6, ptr noundef %0, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %32, ptr noundef nonnull @c_n1) #6
  %104 = load i32, ptr %31, align 4, !tbaa !5
  %105 = add nsw i32 %104, %103
  %106 = sitofp i32 %105 to float
  br label %107

107:                                              ; preds = %.thread, %100
  %.sink = phi float [ %106, %100 ], [ 1.000000e+00, %.thread ]
  %.0389 = phi i32 [ %105, %100 ], [ 1, %.thread ]
  store float %.sink, ptr %18, align 4
  %108 = getelementptr inbounds i8, ptr %18, i64 4
  store float 0.000000e+00, ptr %108, align 4
  %109 = load i32, ptr %19, align 4, !tbaa !5
  %110 = icmp sge i32 %109, %.0389
  %or.cond5 = select i1 %110, i1 true, i1 %57
  br i1 %or.cond5, label %.thread440, label %.thread445.sink.split

.thread440:                                       ; preds = %107
  %.pr442.pr = load i32, ptr %23, align 4, !tbaa !5
  %.not413 = icmp eq i32 %.pr442.pr, 0
  br i1 %.not413, label %114, label %.thread445

.thread445.sink.split:                            ; preds = %107, %95, %89, %85, %80, %75, %72, %69, %66, %64, %59, %24
  %.sink502 = phi i32 [ -1, %24 ], [ -2, %59 ], [ -3, %64 ], [ -4, %66 ], [ -5, %69 ], [ -7, %72 ], [ -9, %75 ], [ -11, %80 ], [ -12, %85 ], [ -13, %89 ], [ -18, %95 ], [ -20, %107 ]
  store i32 %.sink502, ptr %23, align 4, !tbaa !5
  br label %.thread445

.thread445:                                       ; preds = %.thread445.sink.split, %93, %.thread440
  %111 = phi i32 [ %.pr442.pr, %.thread440 ], [ %.pr, %93 ], [ %.sink502, %.thread445.sink.split ]
  %112 = sub nsw i32 0, %111
  store i32 %112, ptr %25, align 4, !tbaa !5
  %113 = call i32 @xerbla_(ptr noundef nonnull @.str.7, ptr noundef nonnull %25, i32 noundef 13) #6
  br label %288

114:                                              ; preds = %.thread440
  br i1 %57, label %288, label %115

115:                                              ; preds = %114
  store i32 0, ptr %14, align 4, !tbaa !5
  %116 = load i32, ptr %3, align 4, !tbaa !5
  switch i32 %116, label %134 [
    i32 0, label %288
    i32 1, label %117
  ]

117:                                              ; preds = %115
  store i32 1, ptr %14, align 4, !tbaa !5
  br i1 %.not407, label %118, label %123

118:                                              ; preds = %117
  %119 = load i32, ptr %4, align 4, !tbaa !5
  %120 = add i32 %39, %119
  %121 = sext i32 %120 to i64
  %122 = getelementptr inbounds %struct.complex, ptr %41, i64 %121
  br label %123

123:                                              ; preds = %117, %118
  %.sroa.0.0.in = phi ptr [ %122, %118 ], [ %5, %117 ]
  %.sroa.0.0 = load float, ptr %.sroa.0.0.in, align 4, !tbaa !11
  %.not430 = icmp eq i32 %53, 0
  br i1 %.not430, label %130, label %124

124:                                              ; preds = %123
  %125 = load float, ptr %9, align 4, !tbaa !9
  %126 = fcmp olt float %125, %.sroa.0.0
  br i1 %126, label %127, label %.thread450

127:                                              ; preds = %124
  %128 = load float, ptr %10, align 4, !tbaa !9
  %129 = fcmp ult float %128, %.sroa.0.0
  br i1 %129, label %.thread450, label %130

.thread450:                                       ; preds = %124, %127
  store i32 0, ptr %14, align 4, !tbaa !5
  br label %288

130:                                              ; preds = %123, %127
  store float %.sroa.0.0, ptr %15, align 4, !tbaa !9
  br i1 %.not410, label %131, label %288

131:                                              ; preds = %130
  store float 1.000000e+00, ptr %16, align 4, !tbaa !11
  %132 = sext i32 %44 to i64
  %133 = getelementptr inbounds %struct.complex, ptr %46, i64 %132, i32 1
  store float 0.000000e+00, ptr %133, align 4, !tbaa !13
  br label %288

134:                                              ; preds = %115
  %135 = call float @slamch_(ptr noundef nonnull @.str.8) #6
  %136 = call float @slamch_(ptr noundef nonnull @.str.9) #6
  %137 = fdiv float %135, %136
  %138 = fdiv float 1.000000e+00, %137
  %sqrtf = call float @sqrtf(float noundef %137) #3
  %sqrtf414 = call float @sqrtf(float noundef %138) #3
  store float %sqrtf414, ptr %26, align 4, !tbaa !9
  %139 = fpext float %135 to double
  %140 = call double @sqrt(double noundef %139) #6
  %141 = call double @sqrt(double noundef %140) #6
  %142 = fdiv double 1.000000e+00, %141
  %143 = fptrunc double %142 to float
  %144 = fcmp ole float %sqrtf414, %143
  %145 = select i1 %144, float %sqrtf414, float %143
  %146 = load float, ptr %13, align 4, !tbaa !9
  store float %146, ptr %33, align 4, !tbaa !9
  %.not415 = icmp eq i32 %53, 0
  br i1 %.not415, label %150, label %147

147:                                              ; preds = %134
  %148 = load float, ptr %9, align 4, !tbaa !9
  %149 = load float, ptr %10, align 4, !tbaa !9
  br label %150

150:                                              ; preds = %134, %147
  %.sink496 = phi float [ %148, %147 ], [ 0.000000e+00, %134 ]
  %storemerge = phi float [ %149, %147 ], [ 0.000000e+00, %134 ]
  store float %.sink496, ptr %36, align 4
  store float %storemerge, ptr %37, align 4, !tbaa !9
  %151 = call float @clanhb_(ptr noundef nonnull @.str.10, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %20) #6
  %152 = fcmp ogt float %151, 0.000000e+00
  %153 = fcmp olt float %151, %sqrtf
  %or.cond434 = select i1 %152, i1 %153, i1 false
  br i1 %or.cond434, label %156, label %154

154:                                              ; preds = %150
  %155 = fcmp ogt float %151, %145
  br i1 %155, label %156, label %169

156:                                              ; preds = %154, %150
  %.pn = phi float [ %sqrtf, %150 ], [ %145, %154 ]
  %storemerge462 = fdiv float %.pn, %151
  store float %storemerge462, ptr %28, align 4, !tbaa !9
  %.str.12..str.11 = select i1 %.not407, ptr @.str.12, ptr @.str.11
  call void @clascl_(ptr noundef nonnull %.str.12..str.11, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef nonnull @c_b26, ptr noundef nonnull %28, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %23) #6
  %157 = load float, ptr %13, align 4, !tbaa !9
  %158 = fcmp ogt float %157, 0.000000e+00
  br i1 %158, label %159, label %162

159:                                              ; preds = %156
  %160 = load float, ptr %28, align 4, !tbaa !9
  %161 = fmul float %157, %160
  store float %161, ptr %33, align 4, !tbaa !9
  br label %162

162:                                              ; preds = %159, %156
  br i1 %.not415, label %169, label %163

163:                                              ; preds = %162
  %164 = load float, ptr %9, align 4, !tbaa !9
  %165 = load float, ptr %28, align 4, !tbaa !9
  %166 = fmul float %164, %165
  store float %166, ptr %36, align 4, !tbaa !9
  %167 = load float, ptr %10, align 4, !tbaa !9
  %168 = fmul float %165, %167
  store float %168, ptr %37, align 4, !tbaa !9
  br label %169

169:                                              ; preds = %154, %162, %163
  %170 = phi i1 [ true, %162 ], [ true, %163 ], [ false, %154 ]
  %171 = load i32, ptr %3, align 4, !tbaa !5
  %172 = add nsw i32 %171, 1
  %173 = add nsw i32 %172, %171
  %174 = load i32, ptr %31, align 4, !tbaa !5
  %175 = load i32, ptr %19, align 4, !tbaa !5
  %176 = sub i32 %175, %174
  store i32 %176, ptr %35, align 4, !tbaa !5
  %177 = sext i32 %172 to i64
  %178 = getelementptr inbounds float, ptr %48, i64 %177
  %179 = sext i32 %174 to i64
  %180 = getelementptr %struct.complex, ptr %47, i64 %179
  %181 = getelementptr i8, ptr %180, i64 8
  call void @chetrd_hb2st_(ptr noundef nonnull @.str.4, ptr noundef %0, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %20, ptr noundef nonnull %178, ptr noundef nonnull %18, ptr noundef nonnull %31, ptr noundef nonnull %181, ptr noundef nonnull %35, ptr noundef nonnull %29) #6
  %.not417 = icmp eq i32 %54, 0
  br i1 %.not417, label %189, label %182

182:                                              ; preds = %169
  %183 = load i32, ptr %11, align 4, !tbaa !5
  %184 = icmp eq i32 %183, 1
  br i1 %184, label %185, label %189

185:                                              ; preds = %182
  %186 = load i32, ptr %12, align 4, !tbaa !5
  %187 = load i32, ptr %3, align 4, !tbaa !5
  %188 = icmp eq i32 %186, %187
  br label %189

189:                                              ; preds = %185, %182, %169
  %190 = phi i1 [ false, %182 ], [ false, %169 ], [ %188, %185 ]
  %or.cond7 = or i1 %60, %190
  br i1 %or.cond7, label %191, label %218

191:                                              ; preds = %189
  %192 = load float, ptr %13, align 4, !tbaa !9
  %193 = fcmp ugt float %192, 0.000000e+00
  br i1 %193, label %218, label %194

194:                                              ; preds = %191
  call void @scopy_(ptr noundef nonnull %3, ptr noundef %20, ptr noundef nonnull @c__1, ptr noundef %15, ptr noundef nonnull @c__1) #6
  %195 = load i32, ptr %3, align 4, !tbaa !5
  %196 = shl i32 %195, 1
  %197 = add nsw i32 %196, %173
  br i1 %.not410, label %202, label %198

198:                                              ; preds = %194
  %199 = add nsw i32 %195, -1
  store i32 %199, ptr %25, align 4, !tbaa !5
  %200 = sext i32 %197 to i64
  %201 = getelementptr inbounds float, ptr %48, i64 %200
  call void @scopy_(ptr noundef nonnull %25, ptr noundef nonnull %178, ptr noundef nonnull @c__1, ptr noundef nonnull %201, ptr noundef nonnull @c__1) #6
  call void @ssterf_(ptr noundef nonnull %3, ptr noundef %15, ptr noundef nonnull %201, ptr noundef nonnull %23) #6
  br label %.loopexit465

202:                                              ; preds = %194
  call void @clacpy_(ptr noundef nonnull @.str.1, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %16, ptr noundef nonnull %17) #6
  %203 = load i32, ptr %3, align 4, !tbaa !5
  %204 = add nsw i32 %203, -1
  store i32 %204, ptr %25, align 4, !tbaa !5
  %205 = sext i32 %197 to i64
  %206 = getelementptr inbounds float, ptr %48, i64 %205
  call void @scopy_(ptr noundef nonnull %25, ptr noundef nonnull %178, ptr noundef nonnull @c__1, ptr noundef nonnull %206, ptr noundef nonnull @c__1) #6
  %207 = sext i32 %173 to i64
  %208 = getelementptr inbounds float, ptr %48, i64 %207
  call void @csteqr_(ptr noundef %0, ptr noundef nonnull %3, ptr noundef %15, ptr noundef nonnull %206, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %208, ptr noundef nonnull %23) #6
  %209 = load i32, ptr %23, align 4, !tbaa !5
  %210 = icmp eq i32 %209, 0
  br i1 %210, label %211, label %.thread455

211:                                              ; preds = %202
  %212 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %212, ptr %25, align 4, !tbaa !5
  %.not419466 = icmp slt i32 %212, 1
  br i1 %.not419466, label %.loopexit465, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %211
  %213 = zext nneg i32 %212 to i64
  %214 = shl nuw nsw i64 %213, 2
  call void @llvm.memset.p0.i64(ptr align 4 %22, i8 0, i64 %214, i1 false), !tbaa !5
  br label %.loopexit465

.loopexit465:                                     ; preds = %.lr.ph.preheader, %211, %198
  %.pr454 = load i32, ptr %23, align 4, !tbaa !5
  %215 = icmp eq i32 %.pr454, 0
  br i1 %215, label %216, label %.thread455

216:                                              ; preds = %.loopexit465
  %217 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %217, ptr %14, align 4, !tbaa !5
  br label %.loopexit464

.thread455:                                       ; preds = %202, %.loopexit465
  store i32 0, ptr %23, align 4, !tbaa !5
  br label %218

218:                                              ; preds = %189, %.thread455, %191
  %.436 = select i1 %.not410, i8 66, i8 69
  store i8 %.436, ptr %30, align 1, !tbaa !14
  %219 = load i32, ptr %3, align 4, !tbaa !5
  %220 = add nsw i32 %219, 1
  %221 = add nsw i32 %220, %219
  %222 = sext i32 %220 to i64
  %223 = getelementptr inbounds i32, ptr %49, i64 %222
  %224 = sext i32 %173 to i64
  %225 = getelementptr inbounds float, ptr %48, i64 %224
  %226 = sext i32 %221 to i64
  %227 = getelementptr inbounds i32, ptr %49, i64 %226
  call void @sstebz_(ptr noundef %1, ptr noundef nonnull %30, ptr noundef nonnull %3, ptr noundef nonnull %36, ptr noundef nonnull %37, ptr noundef %11, ptr noundef %12, ptr noundef nonnull %33, ptr noundef %20, ptr noundef nonnull %178, ptr noundef nonnull %14, ptr noundef nonnull %34, ptr noundef %15, ptr noundef %21, ptr noundef nonnull %223, ptr noundef nonnull %225, ptr noundef nonnull %227, ptr noundef nonnull %23) #6
  br i1 %.not410, label %228, label %.loopexit464

228:                                              ; preds = %218
  call void @cstein_(ptr noundef nonnull %3, ptr noundef %20, ptr noundef nonnull %178, ptr noundef nonnull %14, ptr noundef %15, ptr noundef %21, ptr noundef nonnull %223, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %225, ptr noundef nonnull %227, ptr noundef %22, ptr noundef nonnull %23) #6
  %229 = load i32, ptr %14, align 4, !tbaa !5
  store i32 %229, ptr %25, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %46, i64 8
  %.not422468 = icmp slt i32 %229, 1
  br i1 %.not422468, label %.loopexit464, label %.lr.ph470.preheader

.lr.ph470.preheader:                              ; preds = %228
  %230 = sext i32 %43 to i64
  br label %.lr.ph470

.lr.ph470:                                        ; preds = %.lr.ph470.preheader, %.lr.ph470
  %indvars.iv = phi i64 [ 1, %.lr.ph470.preheader ], [ %indvars.iv.next, %.lr.ph470 ]
  %231 = mul nsw i64 %indvars.iv, %230
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %231
  call void @ccopy_(ptr noundef nonnull %3, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef nonnull %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 nonnull %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
  %232 = load i32, ptr %25, align 4, !tbaa !5
  %233 = sext i32 %232 to i64
  %.not422.not = icmp slt i64 %indvars.iv, %233
  br i1 %.not422.not, label %.lr.ph470, label %.loopexit464, !llvm.loop !15

.loopexit464:                                     ; preds = %.lr.ph470, %228, %218, %216
  br i1 %170, label %234, label %244

234:                                              ; preds = %.loopexit464
  %235 = load i32, ptr %23, align 4, !tbaa !5
  %236 = icmp eq i32 %235, 0
  br i1 %236, label %237, label %239

237:                                              ; preds = %234
  %238 = load i32, ptr %14, align 4, !tbaa !5
  br label %241

239:                                              ; preds = %234
  %240 = add nsw i32 %235, -1
  br label %241

241:                                              ; preds = %239, %237
  %storemerge423 = phi i32 [ %240, %239 ], [ %238, %237 ]
  store i32 %storemerge423, ptr %27, align 4, !tbaa !5
  %242 = load float, ptr %28, align 4, !tbaa !9
  %243 = fdiv float 1.000000e+00, %242
  store float %243, ptr %26, align 4, !tbaa !9
  call void @sscal_(ptr noundef nonnull %27, ptr noundef nonnull %26, ptr noundef %15, ptr noundef nonnull @c__1) #6
  br label %244

244:                                              ; preds = %241, %.loopexit464
  br i1 %.not410, label %245, label %.loopexit

245:                                              ; preds = %244
  %246 = load i32, ptr %14, align 4, !tbaa !5
  %247 = add nsw i32 %246, -1
  store i32 %247, ptr %25, align 4, !tbaa !5
  %invariant.gep477 = getelementptr i8, ptr %46, i64 8
  %.not425481 = icmp slt i32 %246, 2
  br i1 %.not425481, label %.loopexit, label %.lr.ph484.preheader

.lr.ph484.preheader:                              ; preds = %245
  %248 = sext i32 %43 to i64
  br label %.lr.ph484

.lr.ph484:                                        ; preds = %.lr.ph484.preheader, %._crit_edge.thread
  %indvar = phi i32 [ 0, %.lr.ph484.preheader ], [ %indvar.next, %._crit_edge.thread ]
  %indvars.iv492 = phi i64 [ 1, %.lr.ph484.preheader ], [ %indvars.iv.next493, %._crit_edge.thread ]
  %indvars.iv487 = phi i64 [ 2, %.lr.ph484.preheader ], [ %indvars.iv.next488, %._crit_edge.thread ]
  %249 = getelementptr inbounds float, ptr %42, i64 %indvars.iv492
  %250 = load float, ptr %249, align 4, !tbaa !9
  %251 = load i32, ptr %14, align 4, !tbaa !5
  %indvars.iv.next493 = add nuw nsw i64 %indvars.iv492, 1
  %252 = sext i32 %251 to i64
  %.not426471.not = icmp slt i64 %indvars.iv492, %252
  br i1 %.not426471.not, label %.lr.ph475.preheader, label %._crit_edge.thread

.lr.ph475.preheader:                              ; preds = %.lr.ph484
  %253 = xor i32 %indvar, -1
  %254 = add i32 %251, %253
  %reass.sub = sub i32 %251, %indvar
  %xtraiter = and i32 %254, 1
  %255 = icmp eq i32 %reass.sub, 2
  br i1 %255, label %._crit_edge.unr-lcssa, label %.lr.ph475.preheader.new

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

.lr.ph475:                                        ; preds = %.lr.ph475, %.lr.ph475.preheader.new
  %indvars.iv489 = phi i64 [ %indvars.iv487, %.lr.ph475.preheader.new ], [ %indvars.iv.next490.1, %.lr.ph475 ]
  %.0474 = phi float [ %250, %.lr.ph475.preheader.new ], [ %.1.1, %.lr.ph475 ]
  %.1385473 = phi i32 [ 0, %.lr.ph475.preheader.new ], [ %.2.1, %.lr.ph475 ]
  %niter = phi i32 [ 0, %.lr.ph475.preheader.new ], [ %niter.next.1, %.lr.ph475 ]
  %256 = getelementptr inbounds float, ptr %42, i64 %indvars.iv489
  %257 = load float, ptr %256, align 4, !tbaa !9
  %258 = fcmp olt float %257, %.0474
  %259 = trunc nuw i64 %indvars.iv489 to i32
  %.2 = select i1 %258, i32 %259, i32 %.1385473
  %.1 = select i1 %258, float %257, float %.0474
  %260 = getelementptr float, ptr %15, i64 %indvars.iv489
  %261 = load float, ptr %260, align 4, !tbaa !9
  %262 = fcmp olt float %261, %.1
  %263 = trunc i64 %indvars.iv489 to i32
  %264 = add i32 %263, 1
  %.2.1 = select i1 %262, i32 %264, i32 %.2
  %.1.1 = select i1 %262, float %261, float %.1
  %indvars.iv.next490.1 = add nuw nsw i64 %indvars.iv489, 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.ph475, !llvm.loop !17

._crit_edge.unr-lcssa:                            ; preds = %.lr.ph475, %.lr.ph475.preheader
  %.2.lcssa.ph = phi i32 [ poison, %.lr.ph475.preheader ], [ %.2.1, %.lr.ph475 ]
  %.1.lcssa.ph = phi float [ poison, %.lr.ph475.preheader ], [ %.1.1, %.lr.ph475 ]
  %indvars.iv489.unr = phi i64 [ %indvars.iv487, %.lr.ph475.preheader ], [ %indvars.iv.next490.1, %.lr.ph475 ]
  %.0474.unr = phi float [ %250, %.lr.ph475.preheader ], [ %.1.1, %.lr.ph475 ]
  %.1385473.unr = phi i32 [ 0, %.lr.ph475.preheader ], [ %.2.1, %.lr.ph475 ]
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph475.epil

.lr.ph475.epil:                                   ; preds = %._crit_edge.unr-lcssa
  %265 = getelementptr inbounds float, ptr %42, i64 %indvars.iv489.unr
  %266 = load float, ptr %265, align 4, !tbaa !9
  %267 = fcmp olt float %266, %.0474.unr
  %268 = trunc nuw i64 %indvars.iv489.unr to i32
  %.2.epil = select i1 %267, i32 %268, i32 %.1385473.unr
  %.1.epil = select i1 %267, float %266, float %.0474.unr
  br label %._crit_edge

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

269:                                              ; preds = %._crit_edge
  %270 = sext i32 %.2.lcssa to i64
  %271 = getelementptr inbounds i32, ptr %49, i64 %270
  %272 = load i32, ptr %271, align 4, !tbaa !5
  %273 = getelementptr inbounds float, ptr %42, i64 %270
  store float %250, ptr %273, align 4, !tbaa !9
  %274 = getelementptr inbounds i32, ptr %49, i64 %indvars.iv492
  %275 = load i32, ptr %274, align 4, !tbaa !5
  store i32 %275, ptr %271, align 4, !tbaa !5
  store float %.1.lcssa, ptr %249, align 4, !tbaa !9
  store i32 %272, ptr %274, align 4, !tbaa !5
  %276 = mul nsw i32 %.2.lcssa, %43
  %277 = sext i32 %276 to i64
  %gep478 = getelementptr %struct.complex, ptr %invariant.gep477, i64 %277
  %278 = mul nsw i64 %indvars.iv492, %248
  %gep480 = getelementptr %struct.complex, ptr %invariant.gep477, i64 %278
  call void @cswap_(ptr noundef nonnull %3, ptr noundef %gep478, ptr noundef nonnull @c__1, ptr noundef %gep480, ptr noundef nonnull @c__1) #6
  %279 = load i32, ptr %23, align 4, !tbaa !5
  %.not428 = icmp eq i32 %279, 0
  br i1 %.not428, label %._crit_edge.thread, label %280

280:                                              ; preds = %269
  %281 = getelementptr inbounds i32, ptr %50, i64 %270
  %282 = load i32, ptr %281, align 4, !tbaa !5
  %283 = getelementptr inbounds i32, ptr %50, i64 %indvars.iv492
  %284 = load i32, ptr %283, align 4, !tbaa !5
  store i32 %284, ptr %281, align 4, !tbaa !5
  store i32 %282, ptr %283, align 4, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph484, %._crit_edge, %280, %269
  %285 = load i32, ptr %25, align 4, !tbaa !5
  %286 = sext i32 %285 to i64
  %.not425.not = icmp slt i64 %indvars.iv492, %286
  %indvars.iv.next488 = add nuw nsw i64 %indvars.iv487, 1
  %indvar.next = add i32 %indvar, 1
  br i1 %.not425.not, label %.lr.ph484, label %.loopexit, !llvm.loop !18

.loopexit:                                        ; preds = %._crit_edge.thread, %245, %244
  %287 = sitofp i32 %.0389 to float
  store float %287, ptr %18, align 4, !tbaa !11
  store float 0.000000e+00, ptr %108, align 4, !tbaa !13
  br label %288

288:                                              ; preds = %.thread450, %131, %130, %115, %114, %.loopexit, %.thread445
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #6
  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 1, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 4, 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
  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 @ilaenv2stage_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @xerbla_(ptr noundef, ptr noundef, 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 @chetrd_hb2st_(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 @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