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

; 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.doublecomplex = type { double, double }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b16 = external hidden global double, align 8
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@c_b2 = external hidden global %struct.doublecomplex, align 8
@c_b1 = external hidden global %struct.doublecomplex, align 8

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

203:                                              ; preds = %197
  br label %207

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

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

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

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

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

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

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

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

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

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

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

241:                                              ; preds = %235
  br label %245

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

428:                                              ; preds = %409
  %429 = load double, ptr %55, align 8, !tbaa !11
  br label %432

430:                                              ; preds = %409
  %431 = load double, ptr %56, align 8, !tbaa !11
  br label %432

432:                                              ; preds = %430, %428
  %433 = phi double [ %429, %428 ], [ %431, %430 ]
  store double %433, ptr %62, align 8, !tbaa !11
  store i32 0, ptr %77, align 4, !tbaa !9
  %434 = load ptr, ptr %37, align 8, !tbaa !5
  %435 = load double, ptr %434, align 8, !tbaa !11
  store double %435, ptr %81, align 8, !tbaa !11
  %436 = load i32, ptr %79, align 4, !tbaa !9
  %437 = icmp ne i32 %436, 0
  br i1 %437, label %438, label %443

438:                                              ; preds = %432
  %439 = load ptr, ptr %33, align 8, !tbaa !5
  %440 = load double, ptr %439, align 8, !tbaa !11
  store double %440, ptr %90, align 8, !tbaa !11
  %441 = load ptr, ptr %34, align 8, !tbaa !5
  %442 = load double, ptr %441, align 8, !tbaa !11
  store double %442, ptr %91, align 8, !tbaa !11
  br label %444

443:                                              ; preds = %432
  store double 0.000000e+00, ptr %90, align 8, !tbaa !11
  store double 0.000000e+00, ptr %91, align 8, !tbaa !11
  br label %444

444:                                              ; preds = %443, %438
  %445 = load ptr, ptr %26, align 8, !tbaa !5
  %446 = load ptr, ptr %27, align 8, !tbaa !5
  %447 = load ptr, ptr %28, align 8, !tbaa !5
  %448 = load ptr, ptr %29, align 8, !tbaa !5
  %449 = load i32, ptr %48, align 4, !tbaa !9
  %450 = sext i32 %449 to i64
  %451 = getelementptr inbounds %struct.doublecomplex, ptr %448, i64 %450
  %452 = load ptr, ptr %30, align 8, !tbaa !5
  %453 = load ptr, ptr %43, align 8, !tbaa !5
  %454 = getelementptr inbounds double, ptr %453, i64 1
  %455 = call double @zlanhb_(ptr noundef @.str.9, ptr noundef %445, ptr noundef %446, ptr noundef %447, ptr noundef %451, ptr noundef %452, ptr noundef %454)
  store double %455, ptr %59, align 8, !tbaa !11
  %456 = load double, ptr %59, align 8, !tbaa !11
  %457 = fcmp ogt double %456, 0.000000e+00
  br i1 %457, label %458, label %466

458:                                              ; preds = %444
  %459 = load double, ptr %59, align 8, !tbaa !11
  %460 = load double, ptr %61, align 8, !tbaa !11
  %461 = fcmp olt double %459, %460
  br i1 %461, label %462, label %466

462:                                              ; preds = %458
  store i32 1, ptr %77, align 4, !tbaa !9
  %463 = load double, ptr %61, align 8, !tbaa !11
  %464 = load double, ptr %59, align 8, !tbaa !11
  %465 = fdiv double %463, %464
  store double %465, ptr %69, align 8, !tbaa !11
  br label %475

466:                                              ; preds = %458, %444
  %467 = load double, ptr %59, align 8, !tbaa !11
  %468 = load double, ptr %62, align 8, !tbaa !11
  %469 = fcmp ogt double %467, %468
  br i1 %469, label %470, label %474

470:                                              ; preds = %466
  store i32 1, ptr %77, align 4, !tbaa !9
  %471 = load double, ptr %62, align 8, !tbaa !11
  %472 = load double, ptr %59, align 8, !tbaa !11
  %473 = fdiv double %471, %472
  store double %473, ptr %69, align 8, !tbaa !11
  br label %474

474:                                              ; preds = %470, %466
  br label %475

475:                                              ; preds = %474, %462
  %476 = load i32, ptr %77, align 4, !tbaa !9
  %477 = icmp eq i32 %476, 1
  br i1 %477, label %478, label %525

478:                                              ; preds = %475
  %479 = load i32, ptr %72, align 4, !tbaa !9
  %480 = icmp ne i32 %479, 0
  br i1 %480, label %481, label %492

481:                                              ; preds = %478
  %482 = load ptr, ptr %28, align 8, !tbaa !5
  %483 = load ptr, ptr %28, align 8, !tbaa !5
  %484 = load ptr, ptr %27, align 8, !tbaa !5
  %485 = load ptr, ptr %27, align 8, !tbaa !5
  %486 = load ptr, ptr %29, align 8, !tbaa !5
  %487 = load i32, ptr %48, align 4, !tbaa !9
  %488 = sext i32 %487 to i64
  %489 = getelementptr inbounds %struct.doublecomplex, ptr %486, i64 %488
  %490 = load ptr, ptr %30, align 8, !tbaa !5
  %491 = load ptr, ptr %46, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.10, ptr noundef %482, ptr noundef %483, ptr noundef @c_b16, ptr noundef %69, ptr noundef %484, ptr noundef %485, ptr noundef %489, ptr noundef %490, ptr noundef %491)
  br label %503

492:                                              ; preds = %478
  %493 = load ptr, ptr %28, align 8, !tbaa !5
  %494 = load ptr, ptr %28, align 8, !tbaa !5
  %495 = load ptr, ptr %27, align 8, !tbaa !5
  %496 = load ptr, ptr %27, align 8, !tbaa !5
  %497 = load ptr, ptr %29, align 8, !tbaa !5
  %498 = load i32, ptr %48, align 4, !tbaa !9
  %499 = sext i32 %498 to i64
  %500 = getelementptr inbounds %struct.doublecomplex, ptr %497, i64 %499
  %501 = load ptr, ptr %30, align 8, !tbaa !5
  %502 = load ptr, ptr %46, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.11, ptr noundef %493, ptr noundef %494, ptr noundef @c_b16, ptr noundef %69, ptr noundef %495, ptr noundef %496, ptr noundef %500, ptr noundef %501, ptr noundef %502)
  br label %503

503:                                              ; preds = %492, %481
  %504 = load ptr, ptr %37, align 8, !tbaa !5
  %505 = load double, ptr %504, align 8, !tbaa !11
  %506 = fcmp ogt double %505, 0.000000e+00
  br i1 %506, label %507, label %512

507:                                              ; preds = %503
  %508 = load ptr, ptr %37, align 8, !tbaa !5
  %509 = load double, ptr %508, align 8, !tbaa !11
  %510 = load double, ptr %69, align 8, !tbaa !11
  %511 = fmul double %509, %510
  store double %511, ptr %81, align 8, !tbaa !11
  br label %512

512:                                              ; preds = %507, %503
  %513 = load i32, ptr %79, align 4, !tbaa !9
  %514 = icmp ne i32 %513, 0
  br i1 %514, label %515, label %524

515:                                              ; preds = %512
  %516 = load ptr, ptr %33, align 8, !tbaa !5
  %517 = load double, ptr %516, align 8, !tbaa !11
  %518 = load double, ptr %69, align 8, !tbaa !11
  %519 = fmul double %517, %518
  store double %519, ptr %90, align 8, !tbaa !11
  %520 = load ptr, ptr %34, align 8, !tbaa !5
  %521 = load double, ptr %520, align 8, !tbaa !11
  %522 = load double, ptr %69, align 8, !tbaa !11
  %523 = fmul double %521, %522
  store double %523, ptr %91, align 8, !tbaa !11
  br label %524

524:                                              ; preds = %515, %512
  br label %525

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

562:                                              ; preds = %525
  %563 = load ptr, ptr %35, align 8, !tbaa !5
  %564 = load i32, ptr %563, align 4, !tbaa !9
  %565 = icmp eq i32 %564, 1
  br i1 %565, label %566, label %573

566:                                              ; preds = %562
  %567 = load ptr, ptr %36, align 8, !tbaa !5
  %568 = load i32, ptr %567, align 4, !tbaa !9
  %569 = load ptr, ptr %27, align 8, !tbaa !5
  %570 = load i32, ptr %569, align 4, !tbaa !9
  %571 = icmp eq i32 %568, %570
  br i1 %571, label %572, label %573

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

573:                                              ; preds = %572, %566, %562
  br label %574

574:                                              ; preds = %573, %525
  %575 = load i32, ptr %75, align 4, !tbaa !9
  %576 = icmp ne i32 %575, 0
  br i1 %576, label %580, label %577

577:                                              ; preds = %574
  %578 = load i32, ptr %63, align 4, !tbaa !9
  %579 = icmp ne i32 %578, 0
  br i1 %579, label %580, label %691

580:                                              ; preds = %577, %574
  %581 = load ptr, ptr %37, align 8, !tbaa !5
  %582 = load double, ptr %581, align 8, !tbaa !11
  %583 = fcmp ole double %582, 0.000000e+00
  br i1 %583, label %584, label %691

584:                                              ; preds = %580
  %585 = load ptr, ptr %27, align 8, !tbaa !5
  %586 = load ptr, ptr %43, align 8, !tbaa !5
  %587 = load i32, ptr %57, align 4, !tbaa !9
  %588 = sext i32 %587 to i64
  %589 = getelementptr inbounds double, ptr %586, i64 %588
  %590 = load ptr, ptr %39, align 8, !tbaa !5
  %591 = getelementptr inbounds double, ptr %590, i64 1
  call void @dcopy_(ptr noundef %585, ptr noundef %589, ptr noundef @c__1, ptr noundef %591, ptr noundef @c__1)
  %592 = load i32, ptr %85, align 4, !tbaa !9
  %593 = load ptr, ptr %27, align 8, !tbaa !5
  %594 = load i32, ptr %593, align 4, !tbaa !9
  %595 = shl i32 %594, 1
  %596 = add nsw i32 %592, %595
  store i32 %596, ptr %68, align 4, !tbaa !9
  %597 = load i32, ptr %73, align 4, !tbaa !9
  %598 = icmp ne i32 %597, 0
  br i1 %598, label %619, label %599

599:                                              ; preds = %584
  %600 = load ptr, ptr %27, align 8, !tbaa !5
  %601 = load i32, ptr %600, align 4, !tbaa !9
  %602 = sub nsw i32 %601, 1
  store i32 %602, ptr %53, align 4, !tbaa !9
  %603 = load ptr, ptr %43, align 8, !tbaa !5
  %604 = load i32, ptr %58, align 4, !tbaa !9
  %605 = sext i32 %604 to i64
  %606 = getelementptr inbounds double, ptr %603, i64 %605
  %607 = load ptr, ptr %43, align 8, !tbaa !5
  %608 = load i32, ptr %68, align 4, !tbaa !9
  %609 = sext i32 %608 to i64
  %610 = getelementptr inbounds double, ptr %607, i64 %609
  call void @dcopy_(ptr noundef %53, ptr noundef %606, ptr noundef @c__1, ptr noundef %610, ptr noundef @c__1)
  %611 = load ptr, ptr %27, align 8, !tbaa !5
  %612 = load ptr, ptr %39, align 8, !tbaa !5
  %613 = getelementptr inbounds double, ptr %612, i64 1
  %614 = load ptr, ptr %43, align 8, !tbaa !5
  %615 = load i32, ptr %68, align 4, !tbaa !9
  %616 = sext i32 %615 to i64
  %617 = getelementptr inbounds double, ptr %614, i64 %616
  %618 = load ptr, ptr %46, align 8, !tbaa !5
  call void @dsterf_(ptr noundef %611, ptr noundef %613, ptr noundef %617, ptr noundef %618)
  br label %681

619:                                              ; preds = %584
  %620 = load ptr, ptr %27, align 8, !tbaa !5
  %621 = load ptr, ptr %27, align 8, !tbaa !5
  %622 = load ptr, ptr %31, align 8, !tbaa !5
  %623 = load i32, ptr %50, align 4, !tbaa !9
  %624 = sext i32 %623 to i64
  %625 = getelementptr inbounds %struct.doublecomplex, ptr %622, i64 %624
  %626 = load ptr, ptr %32, align 8, !tbaa !5
  %627 = load ptr, ptr %40, align 8, !tbaa !5
  %628 = load i32, ptr %52, align 4, !tbaa !9
  %629 = sext i32 %628 to i64
  %630 = getelementptr inbounds %struct.doublecomplex, ptr %627, i64 %629
  %631 = load ptr, ptr %41, align 8, !tbaa !5
  call void @zlacpy_(ptr noundef @.str.1, ptr noundef %620, ptr noundef %621, ptr noundef %625, ptr noundef %626, ptr noundef %630, ptr noundef %631)
  %632 = load ptr, ptr %27, align 8, !tbaa !5
  %633 = load i32, ptr %632, align 4, !tbaa !9
  %634 = sub nsw i32 %633, 1
  store i32 %634, ptr %53, align 4, !tbaa !9
  %635 = load ptr, ptr %43, align 8, !tbaa !5
  %636 = load i32, ptr %58, align 4, !tbaa !9
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds double, ptr %635, i64 %637
  %639 = load ptr, ptr %43, align 8, !tbaa !5
  %640 = load i32, ptr %68, align 4, !tbaa !9
  %641 = sext i32 %640 to i64
  %642 = getelementptr inbounds double, ptr %639, i64 %641
  call void @dcopy_(ptr noundef %53, ptr noundef %638, ptr noundef @c__1, ptr noundef %642, ptr noundef @c__1)
  %643 = load ptr, ptr %24, align 8, !tbaa !5
  %644 = load ptr, ptr %27, align 8, !tbaa !5
  %645 = load ptr, ptr %39, align 8, !tbaa !5
  %646 = getelementptr inbounds double, ptr %645, i64 1
  %647 = load ptr, ptr %43, align 8, !tbaa !5
  %648 = load i32, ptr %68, align 4, !tbaa !9
  %649 = sext i32 %648 to i64
  %650 = getelementptr inbounds double, ptr %647, i64 %649
  %651 = load ptr, ptr %40, align 8, !tbaa !5
  %652 = load i32, ptr %52, align 4, !tbaa !9
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds %struct.doublecomplex, ptr %651, i64 %653
  %655 = load ptr, ptr %41, align 8, !tbaa !5
  %656 = load ptr, ptr %43, align 8, !tbaa !5
  %657 = load i32, ptr %85, align 4, !tbaa !9
  %658 = sext i32 %657 to i64
  %659 = getelementptr inbounds double, ptr %656, i64 %658
  %660 = load ptr, ptr %46, align 8, !tbaa !5
  call void @zsteqr_(ptr noundef %643, ptr noundef %644, ptr noundef %646, ptr noundef %650, ptr noundef %654, ptr noundef %655, ptr noundef %659, ptr noundef %660)
  %661 = load ptr, ptr %46, align 8, !tbaa !5
  %662 = load i32, ptr %661, align 4, !tbaa !9
  %663 = icmp eq i32 %662, 0
  br i1 %663, label %664, label %680

664:                                              ; preds = %619
  %665 = load ptr, ptr %27, align 8, !tbaa !5
  %666 = load i32, ptr %665, align 4, !tbaa !9
  store i32 %666, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %66, align 4, !tbaa !9
  br label %667

667:                                              ; preds = %676, %664
  %668 = load i32, ptr %66, align 4, !tbaa !9
  %669 = load i32, ptr %53, align 4, !tbaa !9
  %670 = icmp sle i32 %668, %669
  br i1 %670, label %671, label %679

671:                                              ; preds = %667
  %672 = load ptr, ptr %45, align 8, !tbaa !5
  %673 = load i32, ptr %66, align 4, !tbaa !9
  %674 = sext i32 %673 to i64
  %675 = getelementptr inbounds i32, ptr %672, i64 %674
  store i32 0, ptr %675, align 4, !tbaa !9
  br label %676

676:                                              ; preds = %671
  %677 = load i32, ptr %66, align 4, !tbaa !9
  %678 = add nsw i32 %677, 1
  store i32 %678, ptr %66, align 4, !tbaa !9
  br label %667, !llvm.loop !16

679:                                              ; preds = %667
  br label %680

680:                                              ; preds = %679, %619
  br label %681

681:                                              ; preds = %680, %599
  %682 = load ptr, ptr %46, align 8, !tbaa !5
  %683 = load i32, ptr %682, align 4, !tbaa !9
  %684 = icmp eq i32 %683, 0
  br i1 %684, label %685, label %689

685:                                              ; preds = %681
  %686 = load ptr, ptr %27, align 8, !tbaa !5
  %687 = load i32, ptr %686, align 4, !tbaa !9
  %688 = load ptr, ptr %38, align 8, !tbaa !5
  store i32 %687, ptr %688, align 4, !tbaa !9
  br label %817

689:                                              ; preds = %681
  %690 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 0, ptr %690, align 4, !tbaa !9
  br label %691

691:                                              ; preds = %689, %580, %577
  %692 = load i32, ptr %73, align 4, !tbaa !9
  %693 = icmp ne i32 %692, 0
  br i1 %693, label %694, label %696

694:                                              ; preds = %691
  %695 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  store i8 66, ptr %695, align 1, !tbaa !18
  br label %698

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

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

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

781:                                              ; preds = %812, %742
  %782 = load i32, ptr %67, align 4, !tbaa !9
  %783 = load i32, ptr %53, align 4, !tbaa !9
  %784 = icmp sle i32 %782, %783
  br i1 %784, label %785, label %815

785:                                              ; preds = %781
  %786 = load ptr, ptr %27, align 8, !tbaa !5
  %787 = load ptr, ptr %40, align 8, !tbaa !5
  %788 = load i32, ptr %67, align 4, !tbaa !9
  %789 = load i32, ptr %51, align 4, !tbaa !9
  %790 = mul nsw i32 %788, %789
  %791 = add nsw i32 %790, 1
  %792 = sext i32 %791 to i64
  %793 = getelementptr inbounds %struct.doublecomplex, ptr %787, i64 %792
  %794 = load ptr, ptr %42, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.doublecomplex, ptr %794, i64 1
  call void @zcopy_(ptr noundef %786, ptr noundef %793, ptr noundef @c__1, ptr noundef %795, ptr noundef @c__1)
  %796 = load ptr, ptr %27, align 8, !tbaa !5
  %797 = load ptr, ptr %27, align 8, !tbaa !5
  %798 = load ptr, ptr %31, align 8, !tbaa !5
  %799 = load i32, ptr %50, align 4, !tbaa !9
  %800 = sext i32 %799 to i64
  %801 = getelementptr inbounds %struct.doublecomplex, ptr %798, i64 %800
  %802 = load ptr, ptr %32, align 8, !tbaa !5
  %803 = load ptr, ptr %42, align 8, !tbaa !5
  %804 = getelementptr inbounds %struct.doublecomplex, ptr %803, i64 1
  %805 = load ptr, ptr %40, align 8, !tbaa !5
  %806 = load i32, ptr %67, align 4, !tbaa !9
  %807 = load i32, ptr %51, align 4, !tbaa !9
  %808 = mul nsw i32 %806, %807
  %809 = add nsw i32 %808, 1
  %810 = sext i32 %809 to i64
  %811 = getelementptr inbounds %struct.doublecomplex, ptr %805, i64 %810
  call void @zgemv_(ptr noundef @.str.4, ptr noundef %796, ptr noundef %797, ptr noundef @c_b2, ptr noundef %801, ptr noundef %802, ptr noundef %804, ptr noundef @c__1, ptr noundef @c_b1, ptr noundef %811, ptr noundef @c__1)
  br label %812

812:                                              ; preds = %785
  %813 = load i32, ptr %67, align 4, !tbaa !9
  %814 = add nsw i32 %813, 1
  store i32 %814, ptr %67, align 4, !tbaa !9
  br label %781, !llvm.loop !19

815:                                              ; preds = %781
  br label %816

816:                                              ; preds = %815, %698
  br label %817

817:                                              ; preds = %816, %685
  %818 = load i32, ptr %77, align 4, !tbaa !9
  %819 = icmp eq i32 %818, 1
  br i1 %819, label %820, label %836

820:                                              ; preds = %817
  %821 = load ptr, ptr %46, align 8, !tbaa !5
  %822 = load i32, ptr %821, align 4, !tbaa !9
  %823 = icmp eq i32 %822, 0
  br i1 %823, label %824, label %827

824:                                              ; preds = %820
  %825 = load ptr, ptr %38, align 8, !tbaa !5
  %826 = load i32, ptr %825, align 4, !tbaa !9
  store i32 %826, ptr %60, align 4, !tbaa !9
  br label %831

827:                                              ; preds = %820
  %828 = load ptr, ptr %46, align 8, !tbaa !5
  %829 = load i32, ptr %828, align 4, !tbaa !9
  %830 = sub nsw i32 %829, 1
  store i32 %830, ptr %60, align 4, !tbaa !9
  br label %831

831:                                              ; preds = %827, %824
  %832 = load double, ptr %69, align 8, !tbaa !11
  %833 = fdiv double 1.000000e+00, %832
  store double %833, ptr %55, align 8, !tbaa !11
  %834 = load ptr, ptr %39, align 8, !tbaa !5
  %835 = getelementptr inbounds double, ptr %834, i64 1
  call void @dscal_(ptr noundef %60, ptr noundef %55, ptr noundef %835, ptr noundef @c__1)
  br label %836

836:                                              ; preds = %831, %817
  %837 = load i32, ptr %73, align 4, !tbaa !9
  %838 = icmp ne i32 %837, 0
  br i1 %838, label %839, label %973

839:                                              ; preds = %836
  %840 = load ptr, ptr %38, align 8, !tbaa !5
  %841 = load i32, ptr %840, align 4, !tbaa !9
  %842 = sub nsw i32 %841, 1
  store i32 %842, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %843

843:                                              ; preds = %969, %839
  %844 = load i32, ptr %67, align 4, !tbaa !9
  %845 = load i32, ptr %53, align 4, !tbaa !9
  %846 = icmp sle i32 %844, %845
  br i1 %846, label %847, label %972

847:                                              ; preds = %843
  store i32 0, ptr %66, align 4, !tbaa !9
  %848 = load ptr, ptr %39, align 8, !tbaa !5
  %849 = load i32, ptr %67, align 4, !tbaa !9
  %850 = sext i32 %849 to i64
  %851 = getelementptr inbounds double, ptr %848, i64 %850
  %852 = load double, ptr %851, align 8, !tbaa !11
  store double %852, ptr %92, align 8, !tbaa !11
  %853 = load ptr, ptr %38, align 8, !tbaa !5
  %854 = load i32, ptr %853, align 4, !tbaa !9
  store i32 %854, ptr %54, align 4, !tbaa !9
  %855 = load i32, ptr %67, align 4, !tbaa !9
  %856 = add nsw i32 %855, 1
  store i32 %856, ptr %74, align 4, !tbaa !9
  br label %857

857:                                              ; preds = %877, %847
  %858 = load i32, ptr %74, align 4, !tbaa !9
  %859 = load i32, ptr %54, align 4, !tbaa !9
  %860 = icmp sle i32 %858, %859
  br i1 %860, label %861, label %880

861:                                              ; preds = %857
  %862 = load ptr, ptr %39, align 8, !tbaa !5
  %863 = load i32, ptr %74, align 4, !tbaa !9
  %864 = sext i32 %863 to i64
  %865 = getelementptr inbounds double, ptr %862, i64 %864
  %866 = load double, ptr %865, align 8, !tbaa !11
  %867 = load double, ptr %92, align 8, !tbaa !11
  %868 = fcmp olt double %866, %867
  br i1 %868, label %869, label %876

869:                                              ; preds = %861
  %870 = load i32, ptr %74, align 4, !tbaa !9
  store i32 %870, ptr %66, align 4, !tbaa !9
  %871 = load ptr, ptr %39, align 8, !tbaa !5
  %872 = load i32, ptr %74, align 4, !tbaa !9
  %873 = sext i32 %872 to i64
  %874 = getelementptr inbounds double, ptr %871, i64 %873
  %875 = load double, ptr %874, align 8, !tbaa !11
  store double %875, ptr %92, align 8, !tbaa !11
  br label %876

876:                                              ; preds = %869, %861
  br label %877

877:                                              ; preds = %876
  %878 = load i32, ptr %74, align 4, !tbaa !9
  %879 = add nsw i32 %878, 1
  store i32 %879, ptr %74, align 4, !tbaa !9
  br label %857, !llvm.loop !20

880:                                              ; preds = %857
  %881 = load i32, ptr %66, align 4, !tbaa !9
  %882 = icmp ne i32 %881, 0
  br i1 %882, label %883, label %968

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

947:                                              ; preds = %883
  %948 = load ptr, ptr %45, align 8, !tbaa !5
  %949 = load i32, ptr %66, align 4, !tbaa !9
  %950 = sext i32 %949 to i64
  %951 = getelementptr inbounds i32, ptr %948, i64 %950
  %952 = load i32, ptr %951, align 4, !tbaa !9
  store i32 %952, ptr %65, align 4, !tbaa !9
  %953 = load ptr, ptr %45, align 8, !tbaa !5
  %954 = load i32, ptr %67, align 4, !tbaa !9
  %955 = sext i32 %954 to i64
  %956 = getelementptr inbounds i32, ptr %953, i64 %955
  %957 = load i32, ptr %956, align 4, !tbaa !9
  %958 = load ptr, ptr %45, align 8, !tbaa !5
  %959 = load i32, ptr %66, align 4, !tbaa !9
  %960 = sext i32 %959 to i64
  %961 = getelementptr inbounds i32, ptr %958, i64 %960
  store i32 %957, ptr %961, align 4, !tbaa !9
  %962 = load i32, ptr %65, align 4, !tbaa !9
  %963 = load ptr, ptr %45, align 8, !tbaa !5
  %964 = load i32, ptr %67, align 4, !tbaa !9
  %965 = sext i32 %964 to i64
  %966 = getelementptr inbounds i32, ptr %963, i64 %965
  store i32 %962, ptr %966, align 4, !tbaa !9
  br label %967

967:                                              ; preds = %947, %883
  br label %968

968:                                              ; preds = %967, %880
  br label %969

969:                                              ; preds = %968
  %970 = load i32, ptr %67, align 4, !tbaa !9
  %971 = add nsw i32 %970, 1
  store i32 %971, ptr %67, align 4, !tbaa !9
  br label %843, !llvm.loop !21

972:                                              ; preds = %843
  br label %973

973:                                              ; preds = %972, %836
  store i32 1, ptr %93, align 4
  br label %974

974:                                              ; preds = %973, %408, %319, %309
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  ret void
}

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

declare void @zswap_(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 = !{!"double", !7, i64 0}
!13 = !{!14, !12, i64 0}
!14 = !{!"", !12, i64 0, !12, i64 8}
!15 = !{!14, !12, i64 8}
!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.doublecomplex = type { double, double }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b16 = external hidden global double, align 8
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@c_b2 = external hidden global %struct.doublecomplex, align 8
@c_b1 = external hidden global %struct.doublecomplex, align 8

; Function Attrs: nounwind uwtable
define dso_local void @zhbevx_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr nocapture noundef readonly %9, ptr nocapture noundef readonly %10, ptr noundef %11, ptr noundef %12, ptr nocapture noundef readonly %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22) local_unnamed_addr #0 {
  %24 = alloca i32, align 4
  %25 = alloca double, align 8
  %26 = alloca i32, align 4
  %27 = alloca double, align 8
  %28 = alloca i32, align 4
  %29 = alloca [1 x i8], align 1
  %30 = alloca double, align 8
  %31 = alloca i32, align 4
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #6
  %34 = load i32, ptr %6, align 4, !tbaa !5
  %35 = add i32 %34, 1
  %narrow = xor i32 %34, -1
  %36 = sext i32 %narrow to i64
  %37 = getelementptr inbounds %struct.doublecomplex, ptr %5, i64 %36
  %38 = getelementptr inbounds i8, ptr %15, i64 -8
  %39 = load i32, ptr %17, align 4, !tbaa !5
  %40 = add nsw i32 %39, 1
  %narrow394 = xor i32 %39, -1
  %41 = sext i32 %narrow394 to i64
  %42 = getelementptr inbounds %struct.doublecomplex, ptr %16, i64 %41
  %43 = getelementptr inbounds i8, ptr %19, i64 -8
  %44 = getelementptr inbounds i8, ptr %20, i64 -4
  %45 = getelementptr inbounds i8, ptr %21, i64 -4
  %46 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %47 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %48 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #6
  %49 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #6
  %50 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.3) #6
  store i32 0, ptr %22, align 4, !tbaa !5
  %.not = icmp ne i32 %46, 0
  br i1 %.not, label %53, label %51

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

130:                                              ; preds = %114, %127
  %.sink449 = phi double [ %128, %127 ], [ 0.000000e+00, %114 ]
  %storemerge = phi double [ %129, %127 ], [ 0.000000e+00, %114 ]
  store double %.sink449, ptr %32, align 8
  store double %storemerge, ptr %33, align 8, !tbaa !9
  %131 = tail call double @zlanhb_(ptr noundef nonnull @.str.9, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %19) #6
  %132 = fcmp ogt double %131, 0.000000e+00
  %133 = fcmp olt double %131, %119
  %or.cond396 = select i1 %132, i1 %133, i1 false
  br i1 %or.cond396, label %136, label %134

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

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

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

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

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

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

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

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

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

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

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

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

176:                                              ; preds = %168
  call void @zlacpy_(ptr noundef nonnull @.str.1, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %7, ptr noundef %8, ptr noundef %16, ptr noundef nonnull %17) #6
  %177 = load i32, ptr %3, align 4, !tbaa !5
  %178 = add nsw i32 %177, -1
  store i32 %178, ptr %24, align 4, !tbaa !5
  %179 = sext i32 %171 to i64
  %180 = getelementptr inbounds double, ptr %43, i64 %179
  call void @dcopy_(ptr noundef nonnull %24, ptr noundef nonnull %155, ptr noundef nonnull @c__1, ptr noundef nonnull %180, ptr noundef nonnull @c__1) #6
  %181 = sext i32 %153 to i64
  %182 = getelementptr inbounds double, ptr %43, i64 %181
  call void @zsteqr_(ptr noundef %0, ptr noundef nonnull %3, ptr noundef %15, ptr noundef nonnull %180, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %182, ptr noundef nonnull %22) #6
  %183 = load i32, ptr %22, align 4, !tbaa !5
  %184 = icmp eq i32 %183, 0
  br i1 %184, label %185, label %.thread411

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

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

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

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

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

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

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

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

.lr.ph424:                                        ; preds = %.lr.ph424.preheader, %.lr.ph424
  %indvars.iv = phi i64 [ 1, %.lr.ph424.preheader ], [ %indvars.iv.next, %.lr.ph424 ]
  %205 = mul nsw i64 %indvars.iv, %204
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %205
  call void @zcopy_(ptr noundef nonnull %3, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %18, ptr noundef nonnull @c__1) #6
  call void @zgemv_(ptr noundef nonnull @.str.4, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef nonnull @c_b2, ptr noundef %7, ptr noundef %8, ptr noundef %18, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b1, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %206 = load i32, ptr %24, align 4, !tbaa !5
  %207 = sext i32 %206 to i64
  %.not386.not = icmp slt i64 %indvars.iv, %207
  br i1 %.not386.not, label %.lr.ph424, label %.loopexit418, !llvm.loop !15

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

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

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

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

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

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

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

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

.lr.ph438:                                        ; preds = %.lr.ph438.preheader, %._crit_edge.thread
  %indvar = phi i32 [ 0, %.lr.ph438.preheader ], [ %indvar.next, %._crit_edge.thread ]
  %indvars.iv446 = phi i64 [ 1, %.lr.ph438.preheader ], [ %indvars.iv.next447, %._crit_edge.thread ]
  %indvars.iv441 = phi i64 [ 2, %.lr.ph438.preheader ], [ %indvars.iv.next442, %._crit_edge.thread ]
  %223 = getelementptr inbounds double, ptr %38, i64 %indvars.iv446
  %224 = load double, ptr %223, align 8, !tbaa !9
  %225 = load i32, ptr %14, align 4, !tbaa !5
  %indvars.iv.next447 = add nuw nsw i64 %indvars.iv446, 1
  %226 = sext i32 %225 to i64
  %.not389425.not = icmp slt i64 %indvars.iv446, %226
  br i1 %.not389425.not, label %.lr.ph429.preheader, label %._crit_edge.thread

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

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

.lr.ph429:                                        ; preds = %.lr.ph429, %.lr.ph429.preheader.new
  %indvars.iv443 = phi i64 [ %indvars.iv441, %.lr.ph429.preheader.new ], [ %indvars.iv.next444.1, %.lr.ph429 ]
  %.0428 = phi double [ %224, %.lr.ph429.preheader.new ], [ %.1.1, %.lr.ph429 ]
  %.1356426 = phi i32 [ 0, %.lr.ph429.preheader.new ], [ %.2.1, %.lr.ph429 ]
  %niter = phi i32 [ 0, %.lr.ph429.preheader.new ], [ %niter.next.1, %.lr.ph429 ]
  %230 = getelementptr inbounds double, ptr %38, i64 %indvars.iv443
  %231 = load double, ptr %230, align 8, !tbaa !9
  %232 = fcmp olt double %231, %.0428
  %233 = trunc nuw i64 %indvars.iv443 to i32
  %.2 = select i1 %232, i32 %233, i32 %.1356426
  %.1 = select i1 %232, double %231, double %.0428
  %234 = getelementptr double, ptr %15, i64 %indvars.iv443
  %235 = load double, ptr %234, align 8, !tbaa !9
  %236 = fcmp olt double %235, %.1
  %237 = trunc i64 %indvars.iv443 to i32
  %238 = add i32 %237, 1
  %.2.1 = select i1 %236, i32 %238, i32 %.2
  %.1.1 = select i1 %236, double %235, double %.1
  %indvars.iv.next444.1 = add nuw nsw i64 %indvars.iv443, 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.ph429, !llvm.loop !17

._crit_edge.unr-lcssa:                            ; preds = %.lr.ph429, %.lr.ph429.preheader
  %.2.lcssa.ph = phi i32 [ poison, %.lr.ph429.preheader ], [ %.2.1, %.lr.ph429 ]
  %.1.lcssa.ph = phi double [ poison, %.lr.ph429.preheader ], [ %.1.1, %.lr.ph429 ]
  %indvars.iv443.unr = phi i64 [ %indvars.iv441, %.lr.ph429.preheader ], [ %indvars.iv.next444.1, %.lr.ph429 ]
  %.0428.unr = phi double [ %224, %.lr.ph429.preheader ], [ %.1.1, %.lr.ph429 ]
  %.1356426.unr = phi i32 [ 0, %.lr.ph429.preheader ], [ %.2.1, %.lr.ph429 ]
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph429.epil

.lr.ph429.epil:                                   ; preds = %._crit_edge.unr-lcssa
  %239 = getelementptr inbounds double, ptr %38, i64 %indvars.iv443.unr
  %240 = load double, ptr %239, align 8, !tbaa !9
  %241 = fcmp olt double %240, %.0428.unr
  %242 = trunc nuw i64 %indvars.iv443.unr to i32
  %.2.epil = select i1 %241, i32 %242, i32 %.1356426.unr
  %.1.epil = select i1 %241, double %240, double %.0428.unr
  br label %._crit_edge

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

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

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

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

.loopexit:                                        ; preds = %._crit_edge.thread, %219, %.thread406, %218, %111, %110, %.thread, %.thread402
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #6
  ret void
}

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare 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 = !{!"double", !7, i64 0}
!11 = !{!12, !10, i64 0}
!12 = !{!"", !10, i64 0, !10, i64 8}
!13 = !{!12, !10, i64 8}
!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