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

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

%struct.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
@c__1 = external hidden global i32, align 4
@.str.6 = external hidden unnamed_addr constant [14 x i8], align 1
@c_n1 = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4
@c__3 = external hidden global i32, align 4
@c__4 = external hidden global i32, align 4
@.str.7 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1

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

144:                                              ; preds = %21
  %145 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -1, ptr %145, align 4, !tbaa !9
  br label %258

146:                                              ; preds = %21
  %147 = load i32, ptr %73, align 4, !tbaa !9
  %148 = icmp ne i32 %147, 0
  br i1 %148, label %157, label %149

149:                                              ; preds = %146
  %150 = load i32, ptr %77, align 4, !tbaa !9
  %151 = icmp ne i32 %150, 0
  br i1 %151, label %157, label %152

152:                                              ; preds = %149
  %153 = load i32, ptr %74, align 4, !tbaa !9
  %154 = icmp ne i32 %153, 0
  br i1 %154, label %157, label %155

155:                                              ; preds = %152
  %156 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -2, ptr %156, align 4, !tbaa !9
  br label %257

157:                                              ; preds = %152, %149, %146
  %158 = load i32, ptr %67, align 4, !tbaa !9
  %159 = icmp ne i32 %158, 0
  br i1 %159, label %166, label %160

160:                                              ; preds = %157
  %161 = load ptr, ptr %24, align 8, !tbaa !5
  %162 = call i32 @lsame_(ptr noundef %161, ptr noundef @.str.5)
  %163 = icmp ne i32 %162, 0
  br i1 %163, label %166, label %164

164:                                              ; preds = %160
  %165 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -3, ptr %165, align 4, !tbaa !9
  br label %256

166:                                              ; preds = %160, %157
  %167 = load ptr, ptr %25, align 8, !tbaa !5
  %168 = load i32, ptr %167, align 4, !tbaa !9
  %169 = icmp slt i32 %168, 0
  br i1 %169, label %170, label %172

170:                                              ; preds = %166
  %171 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -4, ptr %171, align 4, !tbaa !9
  br label %255

172:                                              ; preds = %166
  %173 = load ptr, ptr %27, align 8, !tbaa !5
  %174 = load i32, ptr %173, align 4, !tbaa !9
  %175 = load ptr, ptr %25, align 8, !tbaa !5
  %176 = load i32, ptr %175, align 4, !tbaa !9
  %177 = icmp sge i32 1, %176
  br i1 %177, label %178, label %179

178:                                              ; preds = %172
  br label %182

179:                                              ; preds = %172
  %180 = load ptr, ptr %25, align 8, !tbaa !5
  %181 = load i32, ptr %180, align 4, !tbaa !9
  br label %182

182:                                              ; preds = %179, %178
  %183 = phi i32 [ 1, %178 ], [ %181, %179 ]
  %184 = icmp slt i32 %174, %183
  br i1 %184, label %185, label %187

185:                                              ; preds = %182
  %186 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -6, ptr %186, align 4, !tbaa !9
  br label %254

187:                                              ; preds = %182
  %188 = load i32, ptr %77, align 4, !tbaa !9
  %189 = icmp ne i32 %188, 0
  br i1 %189, label %190, label %203

190:                                              ; preds = %187
  %191 = load ptr, ptr %25, align 8, !tbaa !5
  %192 = load i32, ptr %191, align 4, !tbaa !9
  %193 = icmp sgt i32 %192, 0
  br i1 %193, label %194, label %202

194:                                              ; preds = %190
  %195 = load ptr, ptr %29, align 8, !tbaa !5
  %196 = load double, ptr %195, align 8, !tbaa !11
  %197 = load ptr, ptr %28, align 8, !tbaa !5
  %198 = load double, ptr %197, align 8, !tbaa !11
  %199 = fcmp ole double %196, %198
  br i1 %199, label %200, label %202

200:                                              ; preds = %194
  %201 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -8, ptr %201, align 4, !tbaa !9
  br label %202

202:                                              ; preds = %200, %194, %190
  br label %253

203:                                              ; preds = %187
  %204 = load i32, ptr %74, align 4, !tbaa !9
  %205 = icmp ne i32 %204, 0
  br i1 %205, label %206, label %252

206:                                              ; preds = %203
  %207 = load ptr, ptr %30, align 8, !tbaa !5
  %208 = load i32, ptr %207, align 4, !tbaa !9
  %209 = icmp slt i32 %208, 1
  br i1 %209, label %223, label %210

210:                                              ; preds = %206
  %211 = load ptr, ptr %30, align 8, !tbaa !5
  %212 = load i32, ptr %211, align 4, !tbaa !9
  %213 = load ptr, ptr %25, align 8, !tbaa !5
  %214 = load i32, ptr %213, align 4, !tbaa !9
  %215 = icmp sge i32 1, %214
  br i1 %215, label %216, label %217

216:                                              ; preds = %210
  br label %220

217:                                              ; preds = %210
  %218 = load ptr, ptr %25, align 8, !tbaa !5
  %219 = load i32, ptr %218, align 4, !tbaa !9
  br label %220

220:                                              ; preds = %217, %216
  %221 = phi i32 [ 1, %216 ], [ %219, %217 ]
  %222 = icmp sgt i32 %212, %221
  br i1 %222, label %223, label %225

223:                                              ; preds = %220, %206
  %224 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -9, ptr %224, align 4, !tbaa !9
  br label %251

225:                                              ; preds = %220
  %226 = load ptr, ptr %31, align 8, !tbaa !5
  %227 = load i32, ptr %226, align 4, !tbaa !9
  %228 = load ptr, ptr %25, align 8, !tbaa !5
  %229 = load i32, ptr %228, align 4, !tbaa !9
  %230 = load ptr, ptr %30, align 8, !tbaa !5
  %231 = load i32, ptr %230, align 4, !tbaa !9
  %232 = icmp sle i32 %229, %231
  br i1 %232, label %233, label %236

233:                                              ; preds = %225
  %234 = load ptr, ptr %25, align 8, !tbaa !5
  %235 = load i32, ptr %234, align 4, !tbaa !9
  br label %239

236:                                              ; preds = %225
  %237 = load ptr, ptr %30, align 8, !tbaa !5
  %238 = load i32, ptr %237, align 4, !tbaa !9
  br label %239

239:                                              ; preds = %236, %233
  %240 = phi i32 [ %235, %233 ], [ %238, %236 ]
  %241 = icmp slt i32 %227, %240
  br i1 %241, label %248, label %242

242:                                              ; preds = %239
  %243 = load ptr, ptr %31, align 8, !tbaa !5
  %244 = load i32, ptr %243, align 4, !tbaa !9
  %245 = load ptr, ptr %25, align 8, !tbaa !5
  %246 = load i32, ptr %245, align 4, !tbaa !9
  %247 = icmp sgt i32 %244, %246
  br i1 %247, label %248, label %250

248:                                              ; preds = %242, %239
  %249 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -10, ptr %249, align 4, !tbaa !9
  br label %250

250:                                              ; preds = %248, %242
  br label %251

251:                                              ; preds = %250, %223
  br label %252

252:                                              ; preds = %251, %203
  br label %253

253:                                              ; preds = %252, %202
  br label %254

254:                                              ; preds = %253, %185
  br label %255

255:                                              ; preds = %254, %170
  br label %256

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

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

258:                                              ; preds = %257, %144
  %259 = load ptr, ptr %42, align 8, !tbaa !5
  %260 = load i32, ptr %259, align 4, !tbaa !9
  %261 = icmp eq i32 %260, 0
  br i1 %261, label %262, label %278

262:                                              ; preds = %258
  %263 = load ptr, ptr %36, align 8, !tbaa !5
  %264 = load i32, ptr %263, align 4, !tbaa !9
  %265 = icmp slt i32 %264, 1
  br i1 %265, label %275, label %266

266:                                              ; preds = %262
  %267 = load i32, ptr %69, align 4, !tbaa !9
  %268 = icmp ne i32 %267, 0
  br i1 %268, label %269, label %277

269:                                              ; preds = %266
  %270 = load ptr, ptr %36, align 8, !tbaa !5
  %271 = load i32, ptr %270, align 4, !tbaa !9
  %272 = load ptr, ptr %25, align 8, !tbaa !5
  %273 = load i32, ptr %272, align 4, !tbaa !9
  %274 = icmp slt i32 %271, %273
  br i1 %274, label %275, label %277

275:                                              ; preds = %269, %262
  %276 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -15, ptr %276, align 4, !tbaa !9
  br label %277

277:                                              ; preds = %275, %269, %266
  br label %278

278:                                              ; preds = %277, %258
  %279 = load ptr, ptr %42, align 8, !tbaa !5
  %280 = load i32, ptr %279, align 4, !tbaa !9
  %281 = icmp eq i32 %280, 0
  br i1 %281, label %282, label %333

282:                                              ; preds = %278
  %283 = load ptr, ptr %25, align 8, !tbaa !5
  %284 = load i32, ptr %283, align 4, !tbaa !9
  %285 = icmp sle i32 %284, 1
  br i1 %285, label %286, label %295

286:                                              ; preds = %282
  store i32 1, ptr %66, align 4, !tbaa !9
  %287 = load i32, ptr %66, align 4, !tbaa !9
  %288 = sitofp i32 %287 to double
  %289 = load ptr, ptr %37, align 8, !tbaa !5
  %290 = getelementptr inbounds %struct.doublecomplex, ptr %289, i64 1
  %291 = getelementptr inbounds %struct.doublecomplex, ptr %290, i32 0, i32 0
  store double %288, ptr %291, align 8, !tbaa !13
  %292 = load ptr, ptr %37, align 8, !tbaa !5
  %293 = getelementptr inbounds %struct.doublecomplex, ptr %292, i64 1
  %294 = getelementptr inbounds %struct.doublecomplex, ptr %293, i32 0, i32 1
  store double 0.000000e+00, ptr %294, align 8, !tbaa !15
  br label %322

295:                                              ; preds = %282
  %296 = load ptr, ptr %22, align 8, !tbaa !5
  %297 = load ptr, ptr %25, align 8, !tbaa !5
  %298 = call i32 @ilaenv2stage_(ptr noundef @c__1, ptr noundef @.str.6, ptr noundef %296, ptr noundef %297, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef @c_n1)
  store i32 %298, ptr %71, align 4, !tbaa !9
  %299 = load ptr, ptr %22, align 8, !tbaa !5
  %300 = load ptr, ptr %25, align 8, !tbaa !5
  %301 = call i32 @ilaenv2stage_(ptr noundef @c__2, ptr noundef @.str.6, ptr noundef %299, ptr noundef %300, ptr noundef %71, ptr noundef @c_n1, ptr noundef @c_n1)
  store i32 %301, ptr %70, align 4, !tbaa !9
  %302 = load ptr, ptr %22, align 8, !tbaa !5
  %303 = load ptr, ptr %25, align 8, !tbaa !5
  %304 = call i32 @ilaenv2stage_(ptr noundef @c__3, ptr noundef @.str.6, ptr noundef %302, ptr noundef %303, ptr noundef %71, ptr noundef %70, ptr noundef @c_n1)
  store i32 %304, ptr %65, align 4, !tbaa !9
  %305 = load ptr, ptr %22, align 8, !tbaa !5
  %306 = load ptr, ptr %25, align 8, !tbaa !5
  %307 = call i32 @ilaenv2stage_(ptr noundef @c__4, ptr noundef @.str.6, ptr noundef %305, ptr noundef %306, ptr noundef %71, ptr noundef %70, ptr noundef @c_n1)
  store i32 %307, ptr %68, align 4, !tbaa !9
  %308 = load ptr, ptr %25, align 8, !tbaa !5
  %309 = load i32, ptr %308, align 4, !tbaa !9
  %310 = load i32, ptr %65, align 4, !tbaa !9
  %311 = add nsw i32 %309, %310
  %312 = load i32, ptr %68, align 4, !tbaa !9
  %313 = add nsw i32 %311, %312
  store i32 %313, ptr %66, align 4, !tbaa !9
  %314 = load i32, ptr %66, align 4, !tbaa !9
  %315 = sitofp i32 %314 to double
  %316 = load ptr, ptr %37, align 8, !tbaa !5
  %317 = getelementptr inbounds %struct.doublecomplex, ptr %316, i64 1
  %318 = getelementptr inbounds %struct.doublecomplex, ptr %317, i32 0, i32 0
  store double %315, ptr %318, align 8, !tbaa !13
  %319 = load ptr, ptr %37, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.doublecomplex, ptr %319, i64 1
  %321 = getelementptr inbounds %struct.doublecomplex, ptr %320, i32 0, i32 1
  store double 0.000000e+00, ptr %321, align 8, !tbaa !15
  br label %322

322:                                              ; preds = %295, %286
  %323 = load ptr, ptr %38, align 8, !tbaa !5
  %324 = load i32, ptr %323, align 4, !tbaa !9
  %325 = load i32, ptr %66, align 4, !tbaa !9
  %326 = icmp slt i32 %324, %325
  br i1 %326, label %327, label %332

327:                                              ; preds = %322
  %328 = load i32, ptr %89, align 4, !tbaa !9
  %329 = icmp ne i32 %328, 0
  br i1 %329, label %332, label %330

330:                                              ; preds = %327
  %331 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -17, ptr %331, align 4, !tbaa !9
  br label %332

332:                                              ; preds = %330, %327, %322
  br label %333

333:                                              ; preds = %332, %278
  %334 = load ptr, ptr %42, align 8, !tbaa !5
  %335 = load i32, ptr %334, align 4, !tbaa !9
  %336 = icmp ne i32 %335, 0
  br i1 %336, label %337, label %342

337:                                              ; preds = %333
  %338 = load ptr, ptr %42, align 8, !tbaa !5
  %339 = load i32, ptr %338, align 4, !tbaa !9
  %340 = sub nsw i32 0, %339
  store i32 %340, ptr %47, align 4, !tbaa !9
  %341 = call i32 @xerbla_(ptr noundef @.str.7, ptr noundef %47, i32 noundef 13)
  store i32 1, ptr %95, align 4
  br label %1039

342:                                              ; preds = %333
  %343 = load i32, ptr %89, align 4, !tbaa !9
  %344 = icmp ne i32 %343, 0
  br i1 %344, label %345, label %346

345:                                              ; preds = %342
  store i32 1, ptr %95, align 4
  br label %1039

346:                                              ; preds = %342
  br label %347

347:                                              ; preds = %346
  %348 = load ptr, ptr %33, align 8, !tbaa !5
  store i32 0, ptr %348, align 4, !tbaa !9
  %349 = load ptr, ptr %25, align 8, !tbaa !5
  %350 = load i32, ptr %349, align 4, !tbaa !9
  %351 = icmp eq i32 %350, 0
  br i1 %351, label %352, label %353

352:                                              ; preds = %347
  store i32 1, ptr %95, align 4
  br label %1039

353:                                              ; preds = %347
  %354 = load ptr, ptr %25, align 8, !tbaa !5
  %355 = load i32, ptr %354, align 4, !tbaa !9
  %356 = icmp eq i32 %355, 1
  br i1 %356, label %357, label %433

357:                                              ; preds = %353
  %358 = load i32, ptr %73, align 4, !tbaa !9
  %359 = icmp ne i32 %358, 0
  br i1 %359, label %363, label %360

360:                                              ; preds = %357
  %361 = load i32, ptr %74, align 4, !tbaa !9
  %362 = icmp ne i32 %361, 0
  br i1 %362, label %363, label %375

363:                                              ; preds = %360, %357
  %364 = load ptr, ptr %33, align 8, !tbaa !5
  store i32 1, ptr %364, align 4, !tbaa !9
  %365 = load i32, ptr %43, align 4, !tbaa !9
  %366 = add nsw i32 %365, 1
  store i32 %366, ptr %47, align 4, !tbaa !9
  %367 = load ptr, ptr %26, align 8, !tbaa !5
  %368 = load i32, ptr %47, align 4, !tbaa !9
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds %struct.doublecomplex, ptr %367, i64 %369
  %371 = getelementptr inbounds %struct.doublecomplex, ptr %370, i32 0, i32 0
  %372 = load double, ptr %371, align 8, !tbaa !13
  %373 = load ptr, ptr %34, align 8, !tbaa !5
  %374 = getelementptr inbounds double, ptr %373, i64 1
  store double %372, ptr %374, align 8, !tbaa !11
  br label %416

375:                                              ; preds = %360
  %376 = load i32, ptr %77, align 4, !tbaa !9
  %377 = icmp ne i32 %376, 0
  br i1 %377, label %378, label %415

378:                                              ; preds = %375
  %379 = load i32, ptr %43, align 4, !tbaa !9
  %380 = add nsw i32 %379, 1
  store i32 %380, ptr %47, align 4, !tbaa !9
  %381 = load i32, ptr %43, align 4, !tbaa !9
  %382 = add nsw i32 %381, 1
  store i32 %382, ptr %48, align 4, !tbaa !9
  %383 = load ptr, ptr %28, align 8, !tbaa !5
  %384 = load double, ptr %383, align 8, !tbaa !11
  %385 = load ptr, ptr %26, align 8, !tbaa !5
  %386 = load i32, ptr %47, align 4, !tbaa !9
  %387 = sext i32 %386 to i64
  %388 = getelementptr inbounds %struct.doublecomplex, ptr %385, i64 %387
  %389 = getelementptr inbounds %struct.doublecomplex, ptr %388, i32 0, i32 0
  %390 = load double, ptr %389, align 8, !tbaa !13
  %391 = fcmp olt double %384, %390
  br i1 %391, label %392, label %414

392:                                              ; preds = %378
  %393 = load ptr, ptr %29, align 8, !tbaa !5
  %394 = load double, ptr %393, align 8, !tbaa !11
  %395 = load ptr, ptr %26, align 8, !tbaa !5
  %396 = load i32, ptr %48, align 4, !tbaa !9
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds %struct.doublecomplex, ptr %395, i64 %397
  %399 = getelementptr inbounds %struct.doublecomplex, ptr %398, i32 0, i32 0
  %400 = load double, ptr %399, align 8, !tbaa !13
  %401 = fcmp oge double %394, %400
  br i1 %401, label %402, label %414

402:                                              ; preds = %392
  %403 = load ptr, ptr %33, align 8, !tbaa !5
  store i32 1, ptr %403, align 4, !tbaa !9
  %404 = load i32, ptr %43, align 4, !tbaa !9
  %405 = add nsw i32 %404, 1
  store i32 %405, ptr %47, align 4, !tbaa !9
  %406 = load ptr, ptr %26, align 8, !tbaa !5
  %407 = load i32, ptr %47, align 4, !tbaa !9
  %408 = sext i32 %407 to i64
  %409 = getelementptr inbounds %struct.doublecomplex, ptr %406, i64 %408
  %410 = getelementptr inbounds %struct.doublecomplex, ptr %409, i32 0, i32 0
  %411 = load double, ptr %410, align 8, !tbaa !13
  %412 = load ptr, ptr %34, align 8, !tbaa !5
  %413 = getelementptr inbounds double, ptr %412, i64 1
  store double %411, ptr %413, align 8, !tbaa !11
  br label %414

414:                                              ; preds = %402, %392, %378
  br label %415

415:                                              ; preds = %414, %375
  br label %416

416:                                              ; preds = %415, %363
  %417 = load i32, ptr %69, align 4, !tbaa !9
  %418 = icmp ne i32 %417, 0
  br i1 %418, label %419, label %432

419:                                              ; preds = %416
  %420 = load i32, ptr %45, align 4, !tbaa !9
  %421 = add nsw i32 %420, 1
  store i32 %421, ptr %47, align 4, !tbaa !9
  %422 = load ptr, ptr %35, align 8, !tbaa !5
  %423 = load i32, ptr %47, align 4, !tbaa !9
  %424 = sext i32 %423 to i64
  %425 = getelementptr inbounds %struct.doublecomplex, ptr %422, i64 %424
  %426 = getelementptr inbounds %struct.doublecomplex, ptr %425, i32 0, i32 0
  store double 1.000000e+00, ptr %426, align 8, !tbaa !13
  %427 = load ptr, ptr %35, align 8, !tbaa !5
  %428 = load i32, ptr %47, align 4, !tbaa !9
  %429 = sext i32 %428 to i64
  %430 = getelementptr inbounds %struct.doublecomplex, ptr %427, i64 %429
  %431 = getelementptr inbounds %struct.doublecomplex, ptr %430, i32 0, i32 1
  store double 0.000000e+00, ptr %431, align 8, !tbaa !15
  br label %432

432:                                              ; preds = %419, %416
  store i32 1, ptr %95, align 4
  br label %1039

433:                                              ; preds = %353
  %434 = call double @dlamch_(ptr noundef @.str.8)
  store double %434, ptr %78, align 8, !tbaa !11
  %435 = call double @dlamch_(ptr noundef @.str.9)
  store double %435, ptr %90, align 8, !tbaa !11
  %436 = load double, ptr %78, align 8, !tbaa !11
  %437 = load double, ptr %90, align 8, !tbaa !11
  %438 = fdiv double %436, %437
  store double %438, ptr %88, align 8, !tbaa !11
  %439 = load double, ptr %88, align 8, !tbaa !11
  %440 = fdiv double 1.000000e+00, %439
  store double %440, ptr %80, align 8, !tbaa !11
  %441 = load double, ptr %88, align 8, !tbaa !11
  %442 = call double @sqrt(double noundef %441) #4
  store double %442, ptr %55, align 8, !tbaa !11
  %443 = load double, ptr %80, align 8, !tbaa !11
  %444 = call double @sqrt(double noundef %443) #4
  store double %444, ptr %49, align 8, !tbaa !11
  %445 = load double, ptr %78, align 8, !tbaa !11
  %446 = call double @sqrt(double noundef %445) #4
  %447 = call double @sqrt(double noundef %446) #4
  %448 = fdiv double 1.000000e+00, %447
  store double %448, ptr %50, align 8, !tbaa !11
  %449 = load double, ptr %49, align 8, !tbaa !11
  %450 = load double, ptr %50, align 8, !tbaa !11
  %451 = fcmp ole double %449, %450
  br i1 %451, label %452, label %454

452:                                              ; preds = %433
  %453 = load double, ptr %49, align 8, !tbaa !11
  br label %456

454:                                              ; preds = %433
  %455 = load double, ptr %50, align 8, !tbaa !11
  br label %456

456:                                              ; preds = %454, %452
  %457 = phi double [ %453, %452 ], [ %455, %454 ]
  store double %457, ptr %56, align 8, !tbaa !11
  store i32 0, ptr %75, align 4, !tbaa !9
  %458 = load ptr, ptr %32, align 8, !tbaa !5
  %459 = load double, ptr %458, align 8, !tbaa !11
  store double %459, ptr %79, align 8, !tbaa !11
  %460 = load i32, ptr %77, align 4, !tbaa !9
  %461 = icmp ne i32 %460, 0
  br i1 %461, label %462, label %467

462:                                              ; preds = %456
  %463 = load ptr, ptr %28, align 8, !tbaa !5
  %464 = load double, ptr %463, align 8, !tbaa !11
  store double %464, ptr %91, align 8, !tbaa !11
  %465 = load ptr, ptr %29, align 8, !tbaa !5
  %466 = load double, ptr %465, align 8, !tbaa !11
  store double %466, ptr %92, align 8, !tbaa !11
  br label %467

467:                                              ; preds = %462, %456
  %468 = load ptr, ptr %24, align 8, !tbaa !5
  %469 = load ptr, ptr %25, align 8, !tbaa !5
  %470 = load ptr, ptr %26, align 8, !tbaa !5
  %471 = load i32, ptr %44, align 4, !tbaa !9
  %472 = sext i32 %471 to i64
  %473 = getelementptr inbounds %struct.doublecomplex, ptr %470, i64 %472
  %474 = load ptr, ptr %27, align 8, !tbaa !5
  %475 = load ptr, ptr %39, align 8, !tbaa !5
  %476 = getelementptr inbounds double, ptr %475, i64 1
  %477 = call double @zlanhe_(ptr noundef @.str.10, ptr noundef %468, ptr noundef %469, ptr noundef %473, ptr noundef %474, ptr noundef %476)
  store double %477, ptr %53, align 8, !tbaa !11
  %478 = load double, ptr %53, align 8, !tbaa !11
  %479 = fcmp ogt double %478, 0.000000e+00
  br i1 %479, label %480, label %488

480:                                              ; preds = %467
  %481 = load double, ptr %53, align 8, !tbaa !11
  %482 = load double, ptr %55, align 8, !tbaa !11
  %483 = fcmp olt double %481, %482
  br i1 %483, label %484, label %488

484:                                              ; preds = %480
  store i32 1, ptr %75, align 4, !tbaa !9
  %485 = load double, ptr %55, align 8, !tbaa !11
  %486 = load double, ptr %53, align 8, !tbaa !11
  %487 = fdiv double %485, %486
  store double %487, ptr %62, align 8, !tbaa !11
  br label %497

488:                                              ; preds = %480, %467
  %489 = load double, ptr %53, align 8, !tbaa !11
  %490 = load double, ptr %56, align 8, !tbaa !11
  %491 = fcmp ogt double %489, %490
  br i1 %491, label %492, label %496

492:                                              ; preds = %488
  store i32 1, ptr %75, align 4, !tbaa !9
  %493 = load double, ptr %56, align 8, !tbaa !11
  %494 = load double, ptr %53, align 8, !tbaa !11
  %495 = fdiv double %493, %494
  store double %495, ptr %62, align 8, !tbaa !11
  br label %496

496:                                              ; preds = %492, %488
  br label %497

497:                                              ; preds = %496, %484
  %498 = load i32, ptr %75, align 4, !tbaa !9
  %499 = icmp eq i32 %498, 1
  br i1 %499, label %500, label %569

500:                                              ; preds = %497
  %501 = load i32, ptr %67, align 4, !tbaa !9
  %502 = icmp ne i32 %501, 0
  br i1 %502, label %503, label %528

503:                                              ; preds = %500
  %504 = load ptr, ptr %25, align 8, !tbaa !5
  %505 = load i32, ptr %504, align 4, !tbaa !9
  store i32 %505, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %506

506:                                              ; preds = %524, %503
  %507 = load i32, ptr %60, align 4, !tbaa !9
  %508 = load i32, ptr %47, align 4, !tbaa !9
  %509 = icmp sle i32 %507, %508
  br i1 %509, label %510, label %527

510:                                              ; preds = %506
  %511 = load ptr, ptr %25, align 8, !tbaa !5
  %512 = load i32, ptr %511, align 4, !tbaa !9
  %513 = load i32, ptr %60, align 4, !tbaa !9
  %514 = sub nsw i32 %512, %513
  %515 = add nsw i32 %514, 1
  store i32 %515, ptr %48, align 4, !tbaa !9
  %516 = load ptr, ptr %26, align 8, !tbaa !5
  %517 = load i32, ptr %60, align 4, !tbaa !9
  %518 = load i32, ptr %60, align 4, !tbaa !9
  %519 = load i32, ptr %43, align 4, !tbaa !9
  %520 = mul nsw i32 %518, %519
  %521 = add nsw i32 %517, %520
  %522 = sext i32 %521 to i64
  %523 = getelementptr inbounds %struct.doublecomplex, ptr %516, i64 %522
  call void @zdscal_(ptr noundef %48, ptr noundef %62, ptr noundef %523, ptr noundef @c__1)
  br label %524

524:                                              ; preds = %510
  %525 = load i32, ptr %60, align 4, !tbaa !9
  %526 = add nsw i32 %525, 1
  store i32 %526, ptr %60, align 4, !tbaa !9
  br label %506, !llvm.loop !16

527:                                              ; preds = %506
  br label %547

528:                                              ; preds = %500
  %529 = load ptr, ptr %25, align 8, !tbaa !5
  %530 = load i32, ptr %529, align 4, !tbaa !9
  store i32 %530, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %531

531:                                              ; preds = %543, %528
  %532 = load i32, ptr %60, align 4, !tbaa !9
  %533 = load i32, ptr %47, align 4, !tbaa !9
  %534 = icmp sle i32 %532, %533
  br i1 %534, label %535, label %546

535:                                              ; preds = %531
  %536 = load ptr, ptr %26, align 8, !tbaa !5
  %537 = load i32, ptr %60, align 4, !tbaa !9
  %538 = load i32, ptr %43, align 4, !tbaa !9
  %539 = mul nsw i32 %537, %538
  %540 = add nsw i32 %539, 1
  %541 = sext i32 %540 to i64
  %542 = getelementptr inbounds %struct.doublecomplex, ptr %536, i64 %541
  call void @zdscal_(ptr noundef %60, ptr noundef %62, ptr noundef %542, ptr noundef @c__1)
  br label %543

543:                                              ; preds = %535
  %544 = load i32, ptr %60, align 4, !tbaa !9
  %545 = add nsw i32 %544, 1
  store i32 %545, ptr %60, align 4, !tbaa !9
  br label %531, !llvm.loop !18

546:                                              ; preds = %531
  br label %547

547:                                              ; preds = %546, %527
  %548 = load ptr, ptr %32, align 8, !tbaa !5
  %549 = load double, ptr %548, align 8, !tbaa !11
  %550 = fcmp ogt double %549, 0.000000e+00
  br i1 %550, label %551, label %556

551:                                              ; preds = %547
  %552 = load ptr, ptr %32, align 8, !tbaa !5
  %553 = load double, ptr %552, align 8, !tbaa !11
  %554 = load double, ptr %62, align 8, !tbaa !11
  %555 = fmul double %553, %554
  store double %555, ptr %79, align 8, !tbaa !11
  br label %556

556:                                              ; preds = %551, %547
  %557 = load i32, ptr %77, align 4, !tbaa !9
  %558 = icmp ne i32 %557, 0
  br i1 %558, label %559, label %568

559:                                              ; preds = %556
  %560 = load ptr, ptr %28, align 8, !tbaa !5
  %561 = load double, ptr %560, align 8, !tbaa !11
  %562 = load double, ptr %62, align 8, !tbaa !11
  %563 = fmul double %561, %562
  store double %563, ptr %91, align 8, !tbaa !11
  %564 = load ptr, ptr %29, align 8, !tbaa !5
  %565 = load double, ptr %564, align 8, !tbaa !11
  %566 = load double, ptr %62, align 8, !tbaa !11
  %567 = fmul double %565, %566
  store double %567, ptr %92, align 8, !tbaa !11
  br label %568

568:                                              ; preds = %559, %556
  br label %569

569:                                              ; preds = %568, %497
  store i32 1, ptr %51, align 4, !tbaa !9
  %570 = load i32, ptr %51, align 4, !tbaa !9
  %571 = load ptr, ptr %25, align 8, !tbaa !5
  %572 = load i32, ptr %571, align 4, !tbaa !9
  %573 = add nsw i32 %570, %572
  store i32 %573, ptr %52, align 4, !tbaa !9
  %574 = load i32, ptr %52, align 4, !tbaa !9
  %575 = load ptr, ptr %25, align 8, !tbaa !5
  %576 = load i32, ptr %575, align 4, !tbaa !9
  %577 = add nsw i32 %574, %576
  store i32 %577, ptr %84, align 4, !tbaa !9
  store i32 1, ptr %83, align 4, !tbaa !9
  %578 = load i32, ptr %83, align 4, !tbaa !9
  %579 = load ptr, ptr %25, align 8, !tbaa !5
  %580 = load i32, ptr %579, align 4, !tbaa !9
  %581 = add nsw i32 %578, %580
  store i32 %581, ptr %93, align 4, !tbaa !9
  %582 = load i32, ptr %93, align 4, !tbaa !9
  %583 = load i32, ptr %65, align 4, !tbaa !9
  %584 = add nsw i32 %582, %583
  store i32 %584, ptr %85, align 4, !tbaa !9
  %585 = load ptr, ptr %38, align 8, !tbaa !5
  %586 = load i32, ptr %585, align 4, !tbaa !9
  %587 = load i32, ptr %85, align 4, !tbaa !9
  %588 = sub nsw i32 %586, %587
  %589 = add nsw i32 %588, 1
  store i32 %589, ptr %87, align 4, !tbaa !9
  %590 = load ptr, ptr %22, align 8, !tbaa !5
  %591 = load ptr, ptr %24, align 8, !tbaa !5
  %592 = load ptr, ptr %25, align 8, !tbaa !5
  %593 = load ptr, ptr %26, align 8, !tbaa !5
  %594 = load i32, ptr %44, align 4, !tbaa !9
  %595 = sext i32 %594 to i64
  %596 = getelementptr inbounds %struct.doublecomplex, ptr %593, i64 %595
  %597 = load ptr, ptr %27, align 8, !tbaa !5
  %598 = load ptr, ptr %39, align 8, !tbaa !5
  %599 = load i32, ptr %51, align 4, !tbaa !9
  %600 = sext i32 %599 to i64
  %601 = getelementptr inbounds double, ptr %598, i64 %600
  %602 = load ptr, ptr %39, align 8, !tbaa !5
  %603 = load i32, ptr %52, align 4, !tbaa !9
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds double, ptr %602, i64 %604
  %606 = load ptr, ptr %37, align 8, !tbaa !5
  %607 = load i32, ptr %83, align 4, !tbaa !9
  %608 = sext i32 %607 to i64
  %609 = getelementptr inbounds %struct.doublecomplex, ptr %606, i64 %608
  %610 = load ptr, ptr %37, align 8, !tbaa !5
  %611 = load i32, ptr %93, align 4, !tbaa !9
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds %struct.doublecomplex, ptr %610, i64 %612
  %614 = load ptr, ptr %37, align 8, !tbaa !5
  %615 = load i32, ptr %85, align 4, !tbaa !9
  %616 = sext i32 %615 to i64
  %617 = getelementptr inbounds %struct.doublecomplex, ptr %614, i64 %616
  call void @zhetrd_2stage_(ptr noundef %590, ptr noundef %591, ptr noundef %592, ptr noundef %596, ptr noundef %597, ptr noundef %601, ptr noundef %605, ptr noundef %609, ptr noundef %613, ptr noundef %65, ptr noundef %617, ptr noundef %87, ptr noundef %63)
  store i32 0, ptr %57, align 4, !tbaa !9
  %618 = load i32, ptr %74, align 4, !tbaa !9
  %619 = icmp ne i32 %618, 0
  br i1 %619, label %620, label %632

620:                                              ; preds = %569
  %621 = load ptr, ptr %30, align 8, !tbaa !5
  %622 = load i32, ptr %621, align 4, !tbaa !9
  %623 = icmp eq i32 %622, 1
  br i1 %623, label %624, label %631

624:                                              ; preds = %620
  %625 = load ptr, ptr %31, align 8, !tbaa !5
  %626 = load i32, ptr %625, align 4, !tbaa !9
  %627 = load ptr, ptr %25, align 8, !tbaa !5
  %628 = load i32, ptr %627, align 4, !tbaa !9
  %629 = icmp eq i32 %626, %628
  br i1 %629, label %630, label %631

630:                                              ; preds = %624
  store i32 1, ptr %57, align 4, !tbaa !9
  br label %631

631:                                              ; preds = %630, %624, %620
  br label %632

632:                                              ; preds = %631, %569
  %633 = load i32, ptr %73, align 4, !tbaa !9
  %634 = icmp ne i32 %633, 0
  br i1 %634, label %638, label %635

635:                                              ; preds = %632
  %636 = load i32, ptr %57, align 4, !tbaa !9
  %637 = icmp ne i32 %636, 0
  br i1 %637, label %638, label %764

638:                                              ; preds = %635, %632
  %639 = load ptr, ptr %32, align 8, !tbaa !5
  %640 = load double, ptr %639, align 8, !tbaa !11
  %641 = fcmp ole double %640, 0.000000e+00
  br i1 %641, label %642, label %764

642:                                              ; preds = %638
  %643 = load ptr, ptr %25, align 8, !tbaa !5
  %644 = load ptr, ptr %39, align 8, !tbaa !5
  %645 = load i32, ptr %51, align 4, !tbaa !9
  %646 = sext i32 %645 to i64
  %647 = getelementptr inbounds double, ptr %644, i64 %646
  %648 = load ptr, ptr %34, align 8, !tbaa !5
  %649 = getelementptr inbounds double, ptr %648, i64 1
  call void @dcopy_(ptr noundef %643, ptr noundef %647, ptr noundef @c__1, ptr noundef %649, ptr noundef @c__1)
  %650 = load i32, ptr %84, align 4, !tbaa !9
  %651 = load ptr, ptr %25, align 8, !tbaa !5
  %652 = load i32, ptr %651, align 4, !tbaa !9
  %653 = shl i32 %652, 1
  %654 = add nsw i32 %650, %653
  store i32 %654, ptr %61, align 4, !tbaa !9
  %655 = load i32, ptr %69, align 4, !tbaa !9
  %656 = icmp ne i32 %655, 0
  br i1 %656, label %677, label %657

657:                                              ; preds = %642
  %658 = load ptr, ptr %25, align 8, !tbaa !5
  %659 = load i32, ptr %658, align 4, !tbaa !9
  %660 = sub nsw i32 %659, 1
  store i32 %660, ptr %47, align 4, !tbaa !9
  %661 = load ptr, ptr %39, align 8, !tbaa !5
  %662 = load i32, ptr %52, align 4, !tbaa !9
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds double, ptr %661, i64 %663
  %665 = load ptr, ptr %39, align 8, !tbaa !5
  %666 = load i32, ptr %61, align 4, !tbaa !9
  %667 = sext i32 %666 to i64
  %668 = getelementptr inbounds double, ptr %665, i64 %667
  call void @dcopy_(ptr noundef %47, ptr noundef %664, ptr noundef @c__1, ptr noundef %668, ptr noundef @c__1)
  %669 = load ptr, ptr %25, align 8, !tbaa !5
  %670 = load ptr, ptr %34, align 8, !tbaa !5
  %671 = getelementptr inbounds double, ptr %670, i64 1
  %672 = load ptr, ptr %39, align 8, !tbaa !5
  %673 = load i32, ptr %61, align 4, !tbaa !9
  %674 = sext i32 %673 to i64
  %675 = getelementptr inbounds double, ptr %672, i64 %674
  %676 = load ptr, ptr %42, align 8, !tbaa !5
  call void @dsterf_(ptr noundef %669, ptr noundef %671, ptr noundef %675, ptr noundef %676)
  br label %754

677:                                              ; preds = %642
  %678 = load ptr, ptr %25, align 8, !tbaa !5
  %679 = load ptr, ptr %25, align 8, !tbaa !5
  %680 = load ptr, ptr %26, align 8, !tbaa !5
  %681 = load i32, ptr %44, align 4, !tbaa !9
  %682 = sext i32 %681 to i64
  %683 = getelementptr inbounds %struct.doublecomplex, ptr %680, i64 %682
  %684 = load ptr, ptr %27, align 8, !tbaa !5
  %685 = load ptr, ptr %35, align 8, !tbaa !5
  %686 = load i32, ptr %46, align 4, !tbaa !9
  %687 = sext i32 %686 to i64
  %688 = getelementptr inbounds %struct.doublecomplex, ptr %685, i64 %687
  %689 = load ptr, ptr %36, align 8, !tbaa !5
  call void @zlacpy_(ptr noundef @.str.2, ptr noundef %678, ptr noundef %679, ptr noundef %683, ptr noundef %684, ptr noundef %688, ptr noundef %689)
  %690 = load ptr, ptr %24, align 8, !tbaa !5
  %691 = load ptr, ptr %25, align 8, !tbaa !5
  %692 = load ptr, ptr %35, align 8, !tbaa !5
  %693 = load i32, ptr %46, align 4, !tbaa !9
  %694 = sext i32 %693 to i64
  %695 = getelementptr inbounds %struct.doublecomplex, ptr %692, i64 %694
  %696 = load ptr, ptr %36, align 8, !tbaa !5
  %697 = load ptr, ptr %37, align 8, !tbaa !5
  %698 = load i32, ptr %83, align 4, !tbaa !9
  %699 = sext i32 %698 to i64
  %700 = getelementptr inbounds %struct.doublecomplex, ptr %697, i64 %699
  %701 = load ptr, ptr %37, align 8, !tbaa !5
  %702 = load i32, ptr %85, align 4, !tbaa !9
  %703 = sext i32 %702 to i64
  %704 = getelementptr inbounds %struct.doublecomplex, ptr %701, i64 %703
  call void @zungtr_(ptr noundef %690, ptr noundef %691, ptr noundef %695, ptr noundef %696, ptr noundef %700, ptr noundef %704, ptr noundef %87, ptr noundef %63)
  %705 = load ptr, ptr %25, align 8, !tbaa !5
  %706 = load i32, ptr %705, align 4, !tbaa !9
  %707 = sub nsw i32 %706, 1
  store i32 %707, ptr %47, align 4, !tbaa !9
  %708 = load ptr, ptr %39, align 8, !tbaa !5
  %709 = load i32, ptr %52, align 4, !tbaa !9
  %710 = sext i32 %709 to i64
  %711 = getelementptr inbounds double, ptr %708, i64 %710
  %712 = load ptr, ptr %39, align 8, !tbaa !5
  %713 = load i32, ptr %61, align 4, !tbaa !9
  %714 = sext i32 %713 to i64
  %715 = getelementptr inbounds double, ptr %712, i64 %714
  call void @dcopy_(ptr noundef %47, ptr noundef %711, ptr noundef @c__1, ptr noundef %715, ptr noundef @c__1)
  %716 = load ptr, ptr %22, align 8, !tbaa !5
  %717 = load ptr, ptr %25, align 8, !tbaa !5
  %718 = load ptr, ptr %34, align 8, !tbaa !5
  %719 = getelementptr inbounds double, ptr %718, i64 1
  %720 = load ptr, ptr %39, align 8, !tbaa !5
  %721 = load i32, ptr %61, align 4, !tbaa !9
  %722 = sext i32 %721 to i64
  %723 = getelementptr inbounds double, ptr %720, i64 %722
  %724 = load ptr, ptr %35, align 8, !tbaa !5
  %725 = load i32, ptr %46, align 4, !tbaa !9
  %726 = sext i32 %725 to i64
  %727 = getelementptr inbounds %struct.doublecomplex, ptr %724, i64 %726
  %728 = load ptr, ptr %36, align 8, !tbaa !5
  %729 = load ptr, ptr %39, align 8, !tbaa !5
  %730 = load i32, ptr %84, align 4, !tbaa !9
  %731 = sext i32 %730 to i64
  %732 = getelementptr inbounds double, ptr %729, i64 %731
  %733 = load ptr, ptr %42, align 8, !tbaa !5
  call void @zsteqr_(ptr noundef %716, ptr noundef %717, ptr noundef %719, ptr noundef %723, ptr noundef %727, ptr noundef %728, ptr noundef %732, ptr noundef %733)
  %734 = load ptr, ptr %42, align 8, !tbaa !5
  %735 = load i32, ptr %734, align 4, !tbaa !9
  %736 = icmp eq i32 %735, 0
  br i1 %736, label %737, label %753

737:                                              ; preds = %677
  %738 = load ptr, ptr %25, align 8, !tbaa !5
  %739 = load i32, ptr %738, align 4, !tbaa !9
  store i32 %739, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %740

740:                                              ; preds = %749, %737
  %741 = load i32, ptr %59, align 4, !tbaa !9
  %742 = load i32, ptr %47, align 4, !tbaa !9
  %743 = icmp sle i32 %741, %742
  br i1 %743, label %744, label %752

744:                                              ; preds = %740
  %745 = load ptr, ptr %41, align 8, !tbaa !5
  %746 = load i32, ptr %59, align 4, !tbaa !9
  %747 = sext i32 %746 to i64
  %748 = getelementptr inbounds i32, ptr %745, i64 %747
  store i32 0, ptr %748, align 4, !tbaa !9
  br label %749

749:                                              ; preds = %744
  %750 = load i32, ptr %59, align 4, !tbaa !9
  %751 = add nsw i32 %750, 1
  store i32 %751, ptr %59, align 4, !tbaa !9
  br label %740, !llvm.loop !19

752:                                              ; preds = %740
  br label %753

753:                                              ; preds = %752, %677
  br label %754

754:                                              ; preds = %753, %657
  %755 = load ptr, ptr %42, align 8, !tbaa !5
  %756 = load i32, ptr %755, align 4, !tbaa !9
  %757 = icmp eq i32 %756, 0
  br i1 %757, label %758, label %762

758:                                              ; preds = %754
  %759 = load ptr, ptr %25, align 8, !tbaa !5
  %760 = load i32, ptr %759, align 4, !tbaa !9
  %761 = load ptr, ptr %33, align 8, !tbaa !5
  store i32 %760, ptr %761, align 4, !tbaa !9
  br label %874

762:                                              ; preds = %754
  %763 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 0, ptr %763, align 4, !tbaa !9
  br label %764

764:                                              ; preds = %762, %638, %635
  %765 = load i32, ptr %69, align 4, !tbaa !9
  %766 = icmp ne i32 %765, 0
  br i1 %766, label %767, label %769

767:                                              ; preds = %764
  %768 = getelementptr inbounds [1 x i8], ptr %64, i64 0, i64 0
  store i8 66, ptr %768, align 1, !tbaa !20
  br label %771

769:                                              ; preds = %764
  %770 = getelementptr inbounds [1 x i8], ptr %64, i64 0, i64 0
  store i8 69, ptr %770, align 1, !tbaa !20
  br label %771

771:                                              ; preds = %769, %767
  store i32 1, ptr %76, align 4, !tbaa !9
  %772 = load i32, ptr %76, align 4, !tbaa !9
  %773 = load ptr, ptr %25, align 8, !tbaa !5
  %774 = load i32, ptr %773, align 4, !tbaa !9
  %775 = add nsw i32 %772, %774
  store i32 %775, ptr %82, align 4, !tbaa !9
  %776 = load i32, ptr %82, align 4, !tbaa !9
  %777 = load ptr, ptr %25, align 8, !tbaa !5
  %778 = load i32, ptr %777, align 4, !tbaa !9
  %779 = add nsw i32 %776, %778
  store i32 %779, ptr %81, align 4, !tbaa !9
  %780 = load ptr, ptr %23, align 8, !tbaa !5
  %781 = getelementptr inbounds [1 x i8], ptr %64, i64 0, i64 0
  %782 = load ptr, ptr %25, align 8, !tbaa !5
  %783 = load ptr, ptr %30, align 8, !tbaa !5
  %784 = load ptr, ptr %31, align 8, !tbaa !5
  %785 = load ptr, ptr %39, align 8, !tbaa !5
  %786 = load i32, ptr %51, align 4, !tbaa !9
  %787 = sext i32 %786 to i64
  %788 = getelementptr inbounds double, ptr %785, i64 %787
  %789 = load ptr, ptr %39, align 8, !tbaa !5
  %790 = load i32, ptr %52, align 4, !tbaa !9
  %791 = sext i32 %790 to i64
  %792 = getelementptr inbounds double, ptr %789, i64 %791
  %793 = load ptr, ptr %33, align 8, !tbaa !5
  %794 = load ptr, ptr %34, align 8, !tbaa !5
  %795 = getelementptr inbounds double, ptr %794, i64 1
  %796 = load ptr, ptr %40, align 8, !tbaa !5
  %797 = load i32, ptr %76, align 4, !tbaa !9
  %798 = sext i32 %797 to i64
  %799 = getelementptr inbounds i32, ptr %796, i64 %798
  %800 = load ptr, ptr %40, align 8, !tbaa !5
  %801 = load i32, ptr %82, align 4, !tbaa !9
  %802 = sext i32 %801 to i64
  %803 = getelementptr inbounds i32, ptr %800, i64 %802
  %804 = load ptr, ptr %39, align 8, !tbaa !5
  %805 = load i32, ptr %84, align 4, !tbaa !9
  %806 = sext i32 %805 to i64
  %807 = getelementptr inbounds double, ptr %804, i64 %806
  %808 = load ptr, ptr %40, align 8, !tbaa !5
  %809 = load i32, ptr %81, align 4, !tbaa !9
  %810 = sext i32 %809 to i64
  %811 = getelementptr inbounds i32, ptr %808, i64 %810
  %812 = load ptr, ptr %42, align 8, !tbaa !5
  call void @dstebz_(ptr noundef %780, ptr noundef %781, ptr noundef %782, ptr noundef %91, ptr noundef %92, ptr noundef %783, ptr noundef %784, ptr noundef %79, ptr noundef %788, ptr noundef %792, ptr noundef %793, ptr noundef %86, ptr noundef %795, ptr noundef %799, ptr noundef %803, ptr noundef %807, ptr noundef %811, ptr noundef %812)
  %813 = load i32, ptr %69, align 4, !tbaa !9
  %814 = icmp ne i32 %813, 0
  br i1 %814, label %815, label %873

815:                                              ; preds = %771
  %816 = load ptr, ptr %25, align 8, !tbaa !5
  %817 = load ptr, ptr %39, align 8, !tbaa !5
  %818 = load i32, ptr %51, align 4, !tbaa !9
  %819 = sext i32 %818 to i64
  %820 = getelementptr inbounds double, ptr %817, i64 %819
  %821 = load ptr, ptr %39, align 8, !tbaa !5
  %822 = load i32, ptr %52, align 4, !tbaa !9
  %823 = sext i32 %822 to i64
  %824 = getelementptr inbounds double, ptr %821, i64 %823
  %825 = load ptr, ptr %33, align 8, !tbaa !5
  %826 = load ptr, ptr %34, align 8, !tbaa !5
  %827 = getelementptr inbounds double, ptr %826, i64 1
  %828 = load ptr, ptr %40, align 8, !tbaa !5
  %829 = load i32, ptr %76, align 4, !tbaa !9
  %830 = sext i32 %829 to i64
  %831 = getelementptr inbounds i32, ptr %828, i64 %830
  %832 = load ptr, ptr %40, align 8, !tbaa !5
  %833 = load i32, ptr %82, align 4, !tbaa !9
  %834 = sext i32 %833 to i64
  %835 = getelementptr inbounds i32, ptr %832, i64 %834
  %836 = load ptr, ptr %35, align 8, !tbaa !5
  %837 = load i32, ptr %46, align 4, !tbaa !9
  %838 = sext i32 %837 to i64
  %839 = getelementptr inbounds %struct.doublecomplex, ptr %836, i64 %838
  %840 = load ptr, ptr %36, align 8, !tbaa !5
  %841 = load ptr, ptr %39, align 8, !tbaa !5
  %842 = load i32, ptr %84, align 4, !tbaa !9
  %843 = sext i32 %842 to i64
  %844 = getelementptr inbounds double, ptr %841, i64 %843
  %845 = load ptr, ptr %40, align 8, !tbaa !5
  %846 = load i32, ptr %81, align 4, !tbaa !9
  %847 = sext i32 %846 to i64
  %848 = getelementptr inbounds i32, ptr %845, i64 %847
  %849 = load ptr, ptr %41, align 8, !tbaa !5
  %850 = getelementptr inbounds i32, ptr %849, i64 1
  %851 = load ptr, ptr %42, align 8, !tbaa !5
  call void @zstein_(ptr noundef %816, ptr noundef %820, ptr noundef %824, ptr noundef %825, ptr noundef %827, ptr noundef %831, ptr noundef %835, ptr noundef %839, ptr noundef %840, ptr noundef %844, ptr noundef %848, ptr noundef %850, ptr noundef %851)
  %852 = load ptr, ptr %24, align 8, !tbaa !5
  %853 = load ptr, ptr %25, align 8, !tbaa !5
  %854 = load ptr, ptr %33, align 8, !tbaa !5
  %855 = load ptr, ptr %26, align 8, !tbaa !5
  %856 = load i32, ptr %44, align 4, !tbaa !9
  %857 = sext i32 %856 to i64
  %858 = getelementptr inbounds %struct.doublecomplex, ptr %855, i64 %857
  %859 = load ptr, ptr %27, align 8, !tbaa !5
  %860 = load ptr, ptr %37, align 8, !tbaa !5
  %861 = load i32, ptr %83, align 4, !tbaa !9
  %862 = sext i32 %861 to i64
  %863 = getelementptr inbounds %struct.doublecomplex, ptr %860, i64 %862
  %864 = load ptr, ptr %35, align 8, !tbaa !5
  %865 = load i32, ptr %46, align 4, !tbaa !9
  %866 = sext i32 %865 to i64
  %867 = getelementptr inbounds %struct.doublecomplex, ptr %864, i64 %866
  %868 = load ptr, ptr %36, align 8, !tbaa !5
  %869 = load ptr, ptr %37, align 8, !tbaa !5
  %870 = load i32, ptr %85, align 4, !tbaa !9
  %871 = sext i32 %870 to i64
  %872 = getelementptr inbounds %struct.doublecomplex, ptr %869, i64 %871
  call void @zunmtr_(ptr noundef @.str, ptr noundef %852, ptr noundef @.str.4, ptr noundef %853, ptr noundef %854, ptr noundef %858, ptr noundef %859, ptr noundef %863, ptr noundef %867, ptr noundef %868, ptr noundef %872, ptr noundef %87, ptr noundef %63)
  br label %873

873:                                              ; preds = %815, %771
  br label %874

874:                                              ; preds = %873, %758
  %875 = load i32, ptr %75, align 4, !tbaa !9
  %876 = icmp eq i32 %875, 1
  br i1 %876, label %877, label %893

877:                                              ; preds = %874
  %878 = load ptr, ptr %42, align 8, !tbaa !5
  %879 = load i32, ptr %878, align 4, !tbaa !9
  %880 = icmp eq i32 %879, 0
  br i1 %880, label %881, label %884

881:                                              ; preds = %877
  %882 = load ptr, ptr %33, align 8, !tbaa !5
  %883 = load i32, ptr %882, align 4, !tbaa !9
  store i32 %883, ptr %54, align 4, !tbaa !9
  br label %888

884:                                              ; preds = %877
  %885 = load ptr, ptr %42, align 8, !tbaa !5
  %886 = load i32, ptr %885, align 4, !tbaa !9
  %887 = sub nsw i32 %886, 1
  store i32 %887, ptr %54, align 4, !tbaa !9
  br label %888

888:                                              ; preds = %884, %881
  %889 = load double, ptr %62, align 8, !tbaa !11
  %890 = fdiv double 1.000000e+00, %889
  store double %890, ptr %49, align 8, !tbaa !11
  %891 = load ptr, ptr %34, align 8, !tbaa !5
  %892 = getelementptr inbounds double, ptr %891, i64 1
  call void @dscal_(ptr noundef %54, ptr noundef %49, ptr noundef %892, ptr noundef @c__1)
  br label %893

893:                                              ; preds = %888, %874
  %894 = load i32, ptr %69, align 4, !tbaa !9
  %895 = icmp ne i32 %894, 0
  br i1 %895, label %896, label %1030

896:                                              ; preds = %893
  %897 = load ptr, ptr %33, align 8, !tbaa !5
  %898 = load i32, ptr %897, align 4, !tbaa !9
  %899 = sub nsw i32 %898, 1
  store i32 %899, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %900

900:                                              ; preds = %1026, %896
  %901 = load i32, ptr %60, align 4, !tbaa !9
  %902 = load i32, ptr %47, align 4, !tbaa !9
  %903 = icmp sle i32 %901, %902
  br i1 %903, label %904, label %1029

904:                                              ; preds = %900
  store i32 0, ptr %59, align 4, !tbaa !9
  %905 = load ptr, ptr %34, align 8, !tbaa !5
  %906 = load i32, ptr %60, align 4, !tbaa !9
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds double, ptr %905, i64 %907
  %909 = load double, ptr %908, align 8, !tbaa !11
  store double %909, ptr %94, align 8, !tbaa !11
  %910 = load ptr, ptr %33, align 8, !tbaa !5
  %911 = load i32, ptr %910, align 4, !tbaa !9
  store i32 %911, ptr %48, align 4, !tbaa !9
  %912 = load i32, ptr %60, align 4, !tbaa !9
  %913 = add nsw i32 %912, 1
  store i32 %913, ptr %72, align 4, !tbaa !9
  br label %914

914:                                              ; preds = %934, %904
  %915 = load i32, ptr %72, align 4, !tbaa !9
  %916 = load i32, ptr %48, align 4, !tbaa !9
  %917 = icmp sle i32 %915, %916
  br i1 %917, label %918, label %937

918:                                              ; preds = %914
  %919 = load ptr, ptr %34, align 8, !tbaa !5
  %920 = load i32, ptr %72, align 4, !tbaa !9
  %921 = sext i32 %920 to i64
  %922 = getelementptr inbounds double, ptr %919, i64 %921
  %923 = load double, ptr %922, align 8, !tbaa !11
  %924 = load double, ptr %94, align 8, !tbaa !11
  %925 = fcmp olt double %923, %924
  br i1 %925, label %926, label %933

926:                                              ; preds = %918
  %927 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %927, ptr %59, align 4, !tbaa !9
  %928 = load ptr, ptr %34, align 8, !tbaa !5
  %929 = load i32, ptr %72, align 4, !tbaa !9
  %930 = sext i32 %929 to i64
  %931 = getelementptr inbounds double, ptr %928, i64 %930
  %932 = load double, ptr %931, align 8, !tbaa !11
  store double %932, ptr %94, align 8, !tbaa !11
  br label %933

933:                                              ; preds = %926, %918
  br label %934

934:                                              ; preds = %933
  %935 = load i32, ptr %72, align 4, !tbaa !9
  %936 = add nsw i32 %935, 1
  store i32 %936, ptr %72, align 4, !tbaa !9
  br label %914, !llvm.loop !21

937:                                              ; preds = %914
  %938 = load i32, ptr %59, align 4, !tbaa !9
  %939 = icmp ne i32 %938, 0
  br i1 %939, label %940, label %1025

940:                                              ; preds = %937
  %941 = load ptr, ptr %40, align 8, !tbaa !5
  %942 = load i32, ptr %76, align 4, !tbaa !9
  %943 = load i32, ptr %59, align 4, !tbaa !9
  %944 = add nsw i32 %942, %943
  %945 = sub nsw i32 %944, 1
  %946 = sext i32 %945 to i64
  %947 = getelementptr inbounds i32, ptr %941, i64 %946
  %948 = load i32, ptr %947, align 4, !tbaa !9
  store i32 %948, ptr %58, align 4, !tbaa !9
  %949 = load ptr, ptr %34, align 8, !tbaa !5
  %950 = load i32, ptr %60, align 4, !tbaa !9
  %951 = sext i32 %950 to i64
  %952 = getelementptr inbounds double, ptr %949, i64 %951
  %953 = load double, ptr %952, align 8, !tbaa !11
  %954 = load ptr, ptr %34, align 8, !tbaa !5
  %955 = load i32, ptr %59, align 4, !tbaa !9
  %956 = sext i32 %955 to i64
  %957 = getelementptr inbounds double, ptr %954, i64 %956
  store double %953, ptr %957, align 8, !tbaa !11
  %958 = load ptr, ptr %40, align 8, !tbaa !5
  %959 = load i32, ptr %76, align 4, !tbaa !9
  %960 = load i32, ptr %60, align 4, !tbaa !9
  %961 = add nsw i32 %959, %960
  %962 = sub nsw i32 %961, 1
  %963 = sext i32 %962 to i64
  %964 = getelementptr inbounds i32, ptr %958, i64 %963
  %965 = load i32, ptr %964, align 4, !tbaa !9
  %966 = load ptr, ptr %40, align 8, !tbaa !5
  %967 = load i32, ptr %76, align 4, !tbaa !9
  %968 = load i32, ptr %59, align 4, !tbaa !9
  %969 = add nsw i32 %967, %968
  %970 = sub nsw i32 %969, 1
  %971 = sext i32 %970 to i64
  %972 = getelementptr inbounds i32, ptr %966, i64 %971
  store i32 %965, ptr %972, align 4, !tbaa !9
  %973 = load double, ptr %94, align 8, !tbaa !11
  %974 = load ptr, ptr %34, align 8, !tbaa !5
  %975 = load i32, ptr %60, align 4, !tbaa !9
  %976 = sext i32 %975 to i64
  %977 = getelementptr inbounds double, ptr %974, i64 %976
  store double %973, ptr %977, align 8, !tbaa !11
  %978 = load i32, ptr %58, align 4, !tbaa !9
  %979 = load ptr, ptr %40, align 8, !tbaa !5
  %980 = load i32, ptr %76, align 4, !tbaa !9
  %981 = load i32, ptr %60, align 4, !tbaa !9
  %982 = add nsw i32 %980, %981
  %983 = sub nsw i32 %982, 1
  %984 = sext i32 %983 to i64
  %985 = getelementptr inbounds i32, ptr %979, i64 %984
  store i32 %978, ptr %985, align 4, !tbaa !9
  %986 = load ptr, ptr %25, align 8, !tbaa !5
  %987 = load ptr, ptr %35, align 8, !tbaa !5
  %988 = load i32, ptr %59, align 4, !tbaa !9
  %989 = load i32, ptr %45, align 4, !tbaa !9
  %990 = mul nsw i32 %988, %989
  %991 = add nsw i32 %990, 1
  %992 = sext i32 %991 to i64
  %993 = getelementptr inbounds %struct.doublecomplex, ptr %987, i64 %992
  %994 = load ptr, ptr %35, align 8, !tbaa !5
  %995 = load i32, ptr %60, align 4, !tbaa !9
  %996 = load i32, ptr %45, align 4, !tbaa !9
  %997 = mul nsw i32 %995, %996
  %998 = add nsw i32 %997, 1
  %999 = sext i32 %998 to i64
  %1000 = getelementptr inbounds %struct.doublecomplex, ptr %994, i64 %999
  call void @zswap_(ptr noundef %986, ptr noundef %993, ptr noundef @c__1, ptr noundef %1000, ptr noundef @c__1)
  %1001 = load ptr, ptr %42, align 8, !tbaa !5
  %1002 = load i32, ptr %1001, align 4, !tbaa !9
  %1003 = icmp ne i32 %1002, 0
  br i1 %1003, label %1004, label %1024

1004:                                             ; preds = %940
  %1005 = load ptr, ptr %41, align 8, !tbaa !5
  %1006 = load i32, ptr %59, align 4, !tbaa !9
  %1007 = sext i32 %1006 to i64
  %1008 = getelementptr inbounds i32, ptr %1005, i64 %1007
  %1009 = load i32, ptr %1008, align 4, !tbaa !9
  store i32 %1009, ptr %58, align 4, !tbaa !9
  %1010 = load ptr, ptr %41, align 8, !tbaa !5
  %1011 = load i32, ptr %60, align 4, !tbaa !9
  %1012 = sext i32 %1011 to i64
  %1013 = getelementptr inbounds i32, ptr %1010, i64 %1012
  %1014 = load i32, ptr %1013, align 4, !tbaa !9
  %1015 = load ptr, ptr %41, align 8, !tbaa !5
  %1016 = load i32, ptr %59, align 4, !tbaa !9
  %1017 = sext i32 %1016 to i64
  %1018 = getelementptr inbounds i32, ptr %1015, i64 %1017
  store i32 %1014, ptr %1018, align 4, !tbaa !9
  %1019 = load i32, ptr %58, align 4, !tbaa !9
  %1020 = load ptr, ptr %41, align 8, !tbaa !5
  %1021 = load i32, ptr %60, align 4, !tbaa !9
  %1022 = sext i32 %1021 to i64
  %1023 = getelementptr inbounds i32, ptr %1020, i64 %1022
  store i32 %1019, ptr %1023, align 4, !tbaa !9
  br label %1024

1024:                                             ; preds = %1004, %940
  br label %1025

1025:                                             ; preds = %1024, %937
  br label %1026

1026:                                             ; preds = %1025
  %1027 = load i32, ptr %60, align 4, !tbaa !9
  %1028 = add nsw i32 %1027, 1
  store i32 %1028, ptr %60, align 4, !tbaa !9
  br label %900, !llvm.loop !22

1029:                                             ; preds = %900
  br label %1030

1030:                                             ; preds = %1029, %893
  %1031 = load i32, ptr %66, align 4, !tbaa !9
  %1032 = sitofp i32 %1031 to double
  %1033 = load ptr, ptr %37, align 8, !tbaa !5
  %1034 = getelementptr inbounds %struct.doublecomplex, ptr %1033, i64 1
  %1035 = getelementptr inbounds %struct.doublecomplex, ptr %1034, i32 0, i32 0
  store double %1032, ptr %1035, align 8, !tbaa !13
  %1036 = load ptr, ptr %37, align 8, !tbaa !5
  %1037 = getelementptr inbounds %struct.doublecomplex, ptr %1036, i64 1
  %1038 = getelementptr inbounds %struct.doublecomplex, ptr %1037, i32 0, i32 1
  store double 0.000000e+00, ptr %1038, align 8, !tbaa !15
  store i32 1, ptr %95, align 4
  br label %1039

1039:                                             ; preds = %1030, %432, %352, %345, %337
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 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 4, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 1, 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 4, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 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 8, 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 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, 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
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  ret void
}

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

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

declare void @zhetrd_2stage_(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 @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 @zungtr_(ptr noundef, 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 @zunmtr_(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 @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 = distinct !{!18, !17}
!19 = distinct !{!19, !17}
!20 = !{!7, !7, i64 0}
!21 = distinct !{!21, !17}
!22 = distinct !{!22, !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
@c__1 = external hidden global i32, align 4
@.str.6 = external hidden unnamed_addr constant [14 x i8], align 1
@c_n1 = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4
@c__3 = external hidden global i32, align 4
@c__4 = external hidden global i32, align 4
@.str.7 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1

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

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

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

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

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

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

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

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

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

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

79:                                               ; preds = %78
  %80 = load i32, ptr %8, align 4, !tbaa !5
  %81 = icmp slt i32 %80, 1
  %82 = icmp ugt i32 %80, %spec.select
  %or.cond433 = or i1 %81, %82
  br i1 %or.cond433, label %.thread421.sink.split, label %83

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

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

89:                                               ; preds = %87
  %90 = load i32, ptr %14, align 4, !tbaa !5
  %91 = icmp slt i32 %90, 1
  br i1 %91, label %.thread421.sink.split, label %92

92:                                               ; preds = %89
  %.not387 = icmp ne i32 %52, 0
  %93 = icmp ult i32 %90, %67
  %or.cond470 = and i1 %.not387, %93
  br i1 %or.cond470, label %.thread421.sink.split, label %.thread

.thread:                                          ; preds = %92
  %94 = icmp ult i32 %67, 2
  br i1 %94, label %105, label %95

95:                                               ; preds = %.thread
  %96 = tail call i32 @ilaenv2stage_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.6, ptr noundef %0, ptr noundef nonnull %3, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #6
  store i32 %96, ptr %32, align 4, !tbaa !5
  %97 = call i32 @ilaenv2stage_(ptr noundef nonnull @c__2, ptr noundef nonnull @.str.6, ptr noundef %0, ptr noundef nonnull %3, ptr noundef nonnull %32, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #6
  store i32 %97, ptr %31, align 4, !tbaa !5
  %98 = call i32 @ilaenv2stage_(ptr noundef nonnull @c__3, ptr noundef nonnull @.str.6, ptr noundef %0, ptr noundef nonnull %3, ptr noundef nonnull %32, ptr noundef nonnull %31, ptr noundef nonnull @c_n1) #6
  store i32 %98, ptr %30, align 4, !tbaa !5
  %99 = call i32 @ilaenv2stage_(ptr noundef nonnull @c__4, ptr noundef nonnull @.str.6, ptr noundef %0, ptr noundef nonnull %3, ptr noundef nonnull %32, ptr noundef nonnull %31, ptr noundef nonnull @c_n1) #6
  %100 = load i32, ptr %3, align 4, !tbaa !5
  %101 = load i32, ptr %30, align 4, !tbaa !5
  %102 = add i32 %100, %99
  %103 = add i32 %102, %101
  %104 = sitofp i32 %103 to double
  br label %105

105:                                              ; preds = %.thread, %95
  %.sink = phi double [ %104, %95 ], [ 1.000000e+00, %.thread ]
  %.0362 = phi i32 [ %103, %95 ], [ 1, %.thread ]
  store double %.sink, ptr %15, align 8
  %106 = getelementptr inbounds i8, ptr %15, i64 8
  store double 0.000000e+00, ptr %106, align 8
  %107 = load i32, ptr %16, align 4, !tbaa !5
  %108 = icmp sge i32 %107, %.0362
  %or.cond5 = select i1 %108, i1 true, i1 %57
  br i1 %or.cond5, label %.thread416, label %.thread421.sink.split

.thread416:                                       ; preds = %105
  %.pr418.pr = load i32, ptr %20, align 4, !tbaa !5
  %.not388 = icmp eq i32 %.pr418.pr, 0
  br i1 %.not388, label %112, label %.thread421

.thread421.sink.split:                            ; preds = %105, %89, %92, %83, %79, %74, %69, %66, %64, %59, %21
  %.sink471 = phi i32 [ -1, %21 ], [ -2, %59 ], [ -3, %64 ], [ -4, %66 ], [ -6, %69 ], [ -8, %74 ], [ -9, %79 ], [ -10, %83 ], [ -15, %92 ], [ -15, %89 ], [ -17, %105 ]
  store i32 %.sink471, ptr %20, align 4, !tbaa !5
  br label %.thread421

.thread421:                                       ; preds = %.thread421.sink.split, %87, %.thread416
  %109 = phi i32 [ %.pr418.pr, %.thread416 ], [ %.pr, %87 ], [ %.sink471, %.thread421.sink.split ]
  %110 = sub nsw i32 0, %109
  store i32 %110, ptr %22, align 4, !tbaa !5
  %111 = call i32 @xerbla_(ptr noundef nonnull @.str.7, ptr noundef nonnull %22, i32 noundef 13) #6
  br label %303

112:                                              ; preds = %.thread416
  br i1 %57, label %303, label %113

113:                                              ; preds = %112
  store i32 0, ptr %11, align 4, !tbaa !5
  %114 = load i32, ptr %3, align 4, !tbaa !5
  switch i32 %114, label %134 [
    i32 0, label %303
    i32 1, label %115
  ]

115:                                              ; preds = %113
  %or.cond7 = select i1 %60, i1 true, i1 %62
  br i1 %or.cond7, label %116, label %118

116:                                              ; preds = %115
  store i32 1, ptr %11, align 4, !tbaa !5
  %117 = load double, ptr %4, align 8, !tbaa !11
  br label %.sink.split

118:                                              ; preds = %115
  %.not406 = icmp eq i32 %54, 0
  br i1 %.not406, label %130, label %119

119:                                              ; preds = %118
  %120 = load double, ptr %6, align 8, !tbaa !9
  %121 = sext i32 %39 to i64
  %122 = getelementptr inbounds %struct.doublecomplex, ptr %41, i64 %121
  %123 = load double, ptr %122, align 8, !tbaa !11
  %124 = fcmp olt double %120, %123
  br i1 %124, label %125, label %130

125:                                              ; preds = %119
  %126 = load double, ptr %7, align 8, !tbaa !9
  %127 = load double, ptr %4, align 8, !tbaa !11
  %128 = fcmp ult double %126, %127
  br i1 %128, label %130, label %129

129:                                              ; preds = %125
  store i32 1, ptr %11, align 4, !tbaa !5
  br label %.sink.split

.sink.split:                                      ; preds = %116, %129
  %.sink472 = phi double [ %127, %129 ], [ %117, %116 ]
  store double %.sink472, ptr %12, align 8, !tbaa !9
  br label %130

130:                                              ; preds = %.sink.split, %118, %125, %119
  br i1 %.not387, label %131, label %303

131:                                              ; preds = %130
  store double 1.000000e+00, ptr %13, align 8, !tbaa !11
  %132 = sext i32 %44 to i64
  %133 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %132, i32 1
  store double 0.000000e+00, ptr %133, align 8, !tbaa !13
  br label %303

134:                                              ; preds = %113
  %135 = call double @dlamch_(ptr noundef nonnull @.str.8) #6
  %136 = call double @dlamch_(ptr noundef nonnull @.str.9) #6
  %137 = fdiv double %135, %136
  %138 = fdiv double 1.000000e+00, %137
  %139 = call double @sqrt(double noundef %137) #6
  %140 = call double @sqrt(double noundef %138) #6
  store double %140, ptr %24, align 8, !tbaa !9
  %141 = call double @sqrt(double noundef %135) #6
  %142 = call double @sqrt(double noundef %141) #6
  %143 = fdiv double 1.000000e+00, %142
  %144 = fcmp ole double %140, %143
  %145 = select i1 %144, double %140, double %143
  %146 = load double, ptr %10, align 8, !tbaa !9
  store double %146, ptr %33, align 8, !tbaa !9
  %.not389 = icmp eq i32 %54, 0
  br i1 %.not389, label %150, label %147

147:                                              ; preds = %134
  %148 = load double, ptr %6, align 8, !tbaa !9
  store double %148, ptr %36, align 8, !tbaa !9
  %149 = load double, ptr %7, align 8, !tbaa !9
  store double %149, ptr %37, align 8, !tbaa !9
  br label %150

150:                                              ; preds = %147, %134
  %151 = call double @zlanhe_(ptr noundef nonnull @.str.10, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %17) #6
  %152 = fcmp ogt double %151, 0.000000e+00
  %153 = fcmp olt double %151, %139
  %or.cond410 = select i1 %152, i1 %153, i1 false
  br i1 %or.cond410, label %156, label %154

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

156:                                              ; preds = %154, %150
  %.pn = phi double [ %139, %150 ], [ %145, %154 ]
  %storemerge436 = fdiv double %.pn, %151
  store double %storemerge436, ptr %27, align 8, !tbaa !9
  %157 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %157, ptr %22, align 4, !tbaa !5
  br i1 %.not384, label %167, label %158

158:                                              ; preds = %156
  store i32 1, ptr %26, align 4, !tbaa !5
  %.not393440 = icmp slt i32 %157, 1
  br i1 %.not393440, label %.loopexit438, label %.lr.ph

.lr.ph:                                           ; preds = %158, %.lr.ph
  %storemerge392441 = phi i32 [ %165, %.lr.ph ], [ 1, %158 ]
  %159 = load i32, ptr %3, align 4, !tbaa !5
  %reass.sub = sub i32 %159, %storemerge392441
  %160 = add i32 %reass.sub, 1
  store i32 %160, ptr %23, align 4, !tbaa !5
  %161 = mul i32 %storemerge392441, %39
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds %struct.doublecomplex, ptr %41, i64 %162
  call void @zdscal_(ptr noundef nonnull %23, ptr noundef nonnull %27, ptr noundef %163, ptr noundef nonnull @c__1) #6
  %164 = load i32, ptr %26, align 4, !tbaa !5
  %165 = add nsw i32 %164, 1
  store i32 %165, ptr %26, align 4, !tbaa !5
  %166 = load i32, ptr %22, align 4, !tbaa !5
  %.not393.not = icmp slt i32 %164, %166
  br i1 %.not393.not, label %.lr.ph, label %.loopexit438, !llvm.loop !14

167:                                              ; preds = %156
  %invariant.gep = getelementptr i8, ptr %41, i64 16
  store i32 1, ptr %26, align 4, !tbaa !5
  %.not391442 = icmp slt i32 %157, 1
  br i1 %.not391442, label %.loopexit438, label %.lr.ph444

.lr.ph444:                                        ; preds = %167, %.lr.ph444
  %storemerge443 = phi i32 [ %171, %.lr.ph444 ], [ 1, %167 ]
  %168 = mul nsw i32 %storemerge443, %38
  %169 = sext i32 %168 to i64
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %169
  call void @zdscal_(ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  %170 = load i32, ptr %26, align 4, !tbaa !5
  %171 = add nsw i32 %170, 1
  store i32 %171, ptr %26, align 4, !tbaa !5
  %172 = load i32, ptr %22, align 4, !tbaa !5
  %.not391.not = icmp slt i32 %170, %172
  br i1 %.not391.not, label %.lr.ph444, label %.loopexit438, !llvm.loop !16

.loopexit438:                                     ; preds = %.lr.ph, %.lr.ph444, %158, %167
  %173 = load double, ptr %10, align 8, !tbaa !9
  %174 = fcmp ogt double %173, 0.000000e+00
  br i1 %174, label %175, label %178

175:                                              ; preds = %.loopexit438
  %176 = load double, ptr %27, align 8, !tbaa !9
  %177 = fmul double %173, %176
  store double %177, ptr %33, align 8, !tbaa !9
  br label %178

178:                                              ; preds = %175, %.loopexit438
  br i1 %.not389, label %185, label %179

179:                                              ; preds = %178
  %180 = load double, ptr %6, align 8, !tbaa !9
  %181 = load double, ptr %27, align 8, !tbaa !9
  %182 = fmul double %180, %181
  store double %182, ptr %36, align 8, !tbaa !9
  %183 = load double, ptr %7, align 8, !tbaa !9
  %184 = fmul double %181, %183
  store double %184, ptr %37, align 8, !tbaa !9
  br label %185

185:                                              ; preds = %154, %178, %179
  %186 = phi i1 [ true, %178 ], [ true, %179 ], [ false, %154 ]
  %187 = load i32, ptr %3, align 4, !tbaa !5
  %188 = add nsw i32 %187, 1
  %189 = add nsw i32 %188, %187
  %190 = load i32, ptr %30, align 4, !tbaa !5
  %191 = add nsw i32 %188, %190
  %192 = load i32, ptr %16, align 4, !tbaa !5
  %reass.sub462 = sub i32 %192, %191
  %193 = add i32 %reass.sub462, 1
  store i32 %193, ptr %35, align 4, !tbaa !5
  %194 = sext i32 %188 to i64
  %195 = getelementptr inbounds double, ptr %48, i64 %194
  %196 = getelementptr inbounds %struct.doublecomplex, ptr %47, i64 %194
  %197 = sext i32 %191 to i64
  %198 = getelementptr inbounds %struct.doublecomplex, ptr %47, i64 %197
  call void @zhetrd_2stage_(ptr noundef %0, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %17, ptr noundef nonnull %195, ptr noundef nonnull %15, ptr noundef nonnull %196, ptr noundef nonnull %30, ptr noundef nonnull %198, ptr noundef nonnull %35, ptr noundef nonnull %28) #6
  %.not394 = icmp eq i32 %55, 0
  br i1 %.not394, label %206, label %199

199:                                              ; preds = %185
  %200 = load i32, ptr %8, align 4, !tbaa !5
  %201 = icmp eq i32 %200, 1
  br i1 %201, label %202, label %206

202:                                              ; preds = %199
  %203 = load i32, ptr %9, align 4, !tbaa !5
  %204 = load i32, ptr %3, align 4, !tbaa !5
  %205 = icmp eq i32 %203, %204
  br label %206

206:                                              ; preds = %202, %199, %185
  %207 = phi i1 [ false, %199 ], [ false, %185 ], [ %205, %202 ]
  %or.cond9 = or i1 %60, %207
  br i1 %or.cond9, label %208, label %235

208:                                              ; preds = %206
  %209 = load double, ptr %10, align 8, !tbaa !9
  %210 = fcmp ugt double %209, 0.000000e+00
  br i1 %210, label %235, label %211

211:                                              ; preds = %208
  call void @dcopy_(ptr noundef nonnull %3, ptr noundef %17, ptr noundef nonnull @c__1, ptr noundef %12, ptr noundef nonnull @c__1) #6
  %212 = load i32, ptr %3, align 4, !tbaa !5
  %213 = shl i32 %212, 1
  %214 = add nsw i32 %213, %189
  br i1 %.not387, label %219, label %215

215:                                              ; preds = %211
  %216 = add nsw i32 %212, -1
  store i32 %216, ptr %22, align 4, !tbaa !5
  %217 = sext i32 %214 to i64
  %218 = getelementptr inbounds double, ptr %48, i64 %217
  call void @dcopy_(ptr noundef nonnull %22, ptr noundef nonnull %195, ptr noundef nonnull @c__1, ptr noundef nonnull %218, ptr noundef nonnull @c__1) #6
  call void @dsterf_(ptr noundef nonnull %3, ptr noundef %12, ptr noundef nonnull %218, ptr noundef nonnull %20) #6
  br label %.loopexit437

219:                                              ; preds = %211
  call void @zlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %13, ptr noundef nonnull %14) #6
  call void @zungtr_(ptr noundef %2, ptr noundef nonnull %3, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %15, ptr noundef nonnull %198, ptr noundef nonnull %35, ptr noundef nonnull %28) #6
  %220 = load i32, ptr %3, align 4, !tbaa !5
  %221 = add nsw i32 %220, -1
  store i32 %221, ptr %22, align 4, !tbaa !5
  %222 = sext i32 %214 to i64
  %223 = getelementptr inbounds double, ptr %48, i64 %222
  call void @dcopy_(ptr noundef nonnull %22, ptr noundef nonnull %195, ptr noundef nonnull @c__1, ptr noundef nonnull %223, ptr noundef nonnull @c__1) #6
  %224 = sext i32 %189 to i64
  %225 = getelementptr inbounds double, ptr %48, i64 %224
  call void @zsteqr_(ptr noundef %0, ptr noundef nonnull %3, ptr noundef %12, ptr noundef nonnull %223, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %225, ptr noundef nonnull %20) #6
  %226 = load i32, ptr %20, align 4, !tbaa !5
  %227 = icmp eq i32 %226, 0
  br i1 %227, label %228, label %.thread428

228:                                              ; preds = %219
  %229 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %229, ptr %22, align 4, !tbaa !5
  %.not396445 = icmp slt i32 %229, 1
  br i1 %.not396445, label %.loopexit437, label %.lr.ph447.preheader

.lr.ph447.preheader:                              ; preds = %228
  %230 = zext nneg i32 %229 to i64
  %231 = shl nuw nsw i64 %230, 2
  call void @llvm.memset.p0.i64(ptr align 4 %19, i8 0, i64 %231, i1 false), !tbaa !5
  br label %.loopexit437

.loopexit437:                                     ; preds = %.lr.ph447.preheader, %228, %215
  %.pr427 = load i32, ptr %20, align 4, !tbaa !5
  %232 = icmp eq i32 %.pr427, 0
  br i1 %232, label %233, label %.thread428

233:                                              ; preds = %.loopexit437
  %234 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %234, ptr %11, align 4, !tbaa !5
  br label %246

.thread428:                                       ; preds = %219, %.loopexit437
  store i32 0, ptr %20, align 4, !tbaa !5
  br label %235

235:                                              ; preds = %206, %.thread428, %208
  %.412 = select i1 %.not387, i8 66, i8 69
  store i8 %.412, ptr %29, align 1, !tbaa !17
  %236 = load i32, ptr %3, align 4, !tbaa !5
  %237 = add nsw i32 %236, 1
  %238 = add nsw i32 %237, %236
  %239 = sext i32 %237 to i64
  %240 = getelementptr inbounds i32, ptr %49, i64 %239
  %241 = sext i32 %189 to i64
  %242 = getelementptr inbounds double, ptr %48, i64 %241
  %243 = sext i32 %238 to i64
  %244 = getelementptr inbounds i32, ptr %49, i64 %243
  call void @dstebz_(ptr noundef %1, ptr noundef nonnull %29, ptr noundef nonnull %3, ptr noundef nonnull %36, ptr noundef nonnull %37, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %33, ptr noundef %17, ptr noundef nonnull %195, ptr noundef nonnull %11, ptr noundef nonnull %34, ptr noundef %12, ptr noundef %18, ptr noundef nonnull %240, ptr noundef nonnull %242, ptr noundef nonnull %244, ptr noundef nonnull %20) #6
  br i1 %.not387, label %245, label %246

245:                                              ; preds = %235
  call void @zstein_(ptr noundef nonnull %3, ptr noundef %17, ptr noundef nonnull %195, ptr noundef nonnull %11, ptr noundef %12, ptr noundef %18, ptr noundef nonnull %240, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %242, ptr noundef nonnull %244, ptr noundef %19, ptr noundef nonnull %20) #6
  call void @zunmtr_(ptr noundef nonnull @.str, ptr noundef %2, ptr noundef nonnull @.str.4, ptr noundef nonnull %3, ptr noundef nonnull %11, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %15, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %198, ptr noundef nonnull %35, ptr noundef nonnull %28) #6
  br label %246

246:                                              ; preds = %235, %245, %233
  br i1 %186, label %247, label %257

247:                                              ; preds = %246
  %248 = load i32, ptr %20, align 4, !tbaa !5
  %249 = icmp eq i32 %248, 0
  br i1 %249, label %250, label %252

250:                                              ; preds = %247
  %251 = load i32, ptr %11, align 4, !tbaa !5
  br label %254

252:                                              ; preds = %247
  %253 = add nsw i32 %248, -1
  br label %254

254:                                              ; preds = %252, %250
  %storemerge399 = phi i32 [ %253, %252 ], [ %251, %250 ]
  store i32 %storemerge399, ptr %25, align 4, !tbaa !5
  %255 = load double, ptr %27, align 8, !tbaa !9
  %256 = fdiv double 1.000000e+00, %255
  store double %256, ptr %24, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %25, ptr noundef nonnull %24, ptr noundef %12, ptr noundef nonnull @c__1) #6
  br label %257

257:                                              ; preds = %254, %246
  br i1 %.not387, label %258, label %.loopexit

258:                                              ; preds = %257
  %259 = load i32, ptr %11, align 4, !tbaa !5
  %260 = add nsw i32 %259, -1
  store i32 %260, ptr %22, align 4, !tbaa !5
  %invariant.gep454 = getelementptr i8, ptr %46, i64 16
  store i32 1, ptr %26, align 4, !tbaa !5
  %.not402458 = icmp slt i32 %259, 2
  br i1 %.not402458, label %.loopexit, label %.lr.ph461

.lr.ph461:                                        ; preds = %258, %._crit_edge.thread
  %storemerge401459 = phi i32 [ %300, %._crit_edge.thread ], [ 1, %258 ]
  %261 = sext i32 %storemerge401459 to i64
  %262 = getelementptr inbounds double, ptr %42, i64 %261
  %263 = load double, ptr %262, align 8, !tbaa !9
  %264 = load i32, ptr %11, align 4, !tbaa !5
  store i32 %264, ptr %23, align 4, !tbaa !5
  %.not403.not448 = icmp slt i32 %storemerge401459, %264
  br i1 %.not403.not448, label %.lr.ph452.preheader, label %._crit_edge.thread

.lr.ph452.preheader:                              ; preds = %.lr.ph461
  %wide.trip.count = sext i32 %264 to i64
  %265 = sub nsw i64 %wide.trip.count, %261
  %xtraiter = and i64 %265, 1
  %266 = add nsw i64 %wide.trip.count, -1
  %267 = icmp eq i64 %266, %261
  br i1 %267, label %._crit_edge.unr-lcssa, label %.lr.ph452.preheader.new

.lr.ph452.preheader.new:                          ; preds = %.lr.ph452.preheader
  %unroll_iter = and i64 %265, -2
  br label %.lr.ph452

.lr.ph452:                                        ; preds = %.lr.ph452, %.lr.ph452.preheader.new
  %indvars.iv = phi i64 [ %261, %.lr.ph452.preheader.new ], [ %indvars.iv.next.1, %.lr.ph452 ]
  %.0451 = phi double [ %263, %.lr.ph452.preheader.new ], [ %.1.1, %.lr.ph452 ]
  %.1361450 = phi i32 [ 0, %.lr.ph452.preheader.new ], [ %.2.1, %.lr.ph452 ]
  %niter = phi i64 [ 0, %.lr.ph452.preheader.new ], [ %niter.next.1, %.lr.ph452 ]
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %268 = getelementptr double, ptr %12, i64 %indvars.iv
  %269 = load double, ptr %268, align 8, !tbaa !9
  %270 = fcmp olt double %269, %.0451
  %271 = trunc nsw i64 %indvars.iv.next to i32
  %.2 = select i1 %270, i32 %271, i32 %.1361450
  %.1 = select i1 %270, double %269, double %.0451
  %indvars.iv.next.1 = add nsw i64 %indvars.iv, 2
  %272 = getelementptr double, ptr %12, i64 %indvars.iv.next
  %273 = load double, ptr %272, align 8, !tbaa !9
  %274 = fcmp olt double %273, %.1
  %275 = trunc nsw i64 %indvars.iv.next.1 to i32
  %.2.1 = select i1 %274, i32 %275, i32 %.2
  %.1.1 = select i1 %274, double %273, double %.1
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.unr-lcssa, label %.lr.ph452, !llvm.loop !18

._crit_edge.unr-lcssa:                            ; preds = %.lr.ph452, %.lr.ph452.preheader
  %.2.lcssa.ph = phi i32 [ poison, %.lr.ph452.preheader ], [ %.2.1, %.lr.ph452 ]
  %.1.lcssa.ph = phi double [ poison, %.lr.ph452.preheader ], [ %.1.1, %.lr.ph452 ]
  %indvars.iv.unr = phi i64 [ %261, %.lr.ph452.preheader ], [ %indvars.iv.next.1, %.lr.ph452 ]
  %.0451.unr = phi double [ %263, %.lr.ph452.preheader ], [ %.1.1, %.lr.ph452 ]
  %.1361450.unr = phi i32 [ 0, %.lr.ph452.preheader ], [ %.2.1, %.lr.ph452 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph452.epil

.lr.ph452.epil:                                   ; preds = %._crit_edge.unr-lcssa
  %276 = getelementptr double, ptr %12, i64 %indvars.iv.unr
  %277 = load double, ptr %276, align 8, !tbaa !9
  %278 = fcmp olt double %277, %.0451.unr
  %279 = trunc i64 %indvars.iv.unr to i32
  %280 = add i32 %279, 1
  %.2.epil = select i1 %278, i32 %280, i32 %.1361450.unr
  %.1.epil = select i1 %278, double %277, double %.0451.unr
  br label %._crit_edge

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

281:                                              ; preds = %._crit_edge
  %282 = sext i32 %.2.lcssa to i64
  %283 = getelementptr inbounds i32, ptr %49, i64 %282
  %284 = load i32, ptr %283, align 4, !tbaa !5
  %285 = getelementptr inbounds double, ptr %42, i64 %282
  store double %263, ptr %285, align 8, !tbaa !9
  %286 = getelementptr inbounds i32, ptr %49, i64 %261
  %287 = load i32, ptr %286, align 4, !tbaa !5
  store i32 %287, ptr %283, align 4, !tbaa !5
  store double %.1.lcssa, ptr %262, align 8, !tbaa !9
  store i32 %284, ptr %286, align 4, !tbaa !5
  %288 = mul nsw i32 %.2.lcssa, %43
  %289 = sext i32 %288 to i64
  %gep455 = getelementptr %struct.doublecomplex, ptr %invariant.gep454, i64 %289
  %290 = mul nsw i32 %storemerge401459, %43
  %291 = sext i32 %290 to i64
  %gep457 = getelementptr %struct.doublecomplex, ptr %invariant.gep454, i64 %291
  call void @zswap_(ptr noundef nonnull %3, ptr noundef %gep455, ptr noundef nonnull @c__1, ptr noundef %gep457, ptr noundef nonnull @c__1) #6
  %292 = load i32, ptr %20, align 4, !tbaa !5
  %.not405 = icmp eq i32 %292, 0
  %.pre = load i32, ptr %26, align 4, !tbaa !5
  br i1 %.not405, label %._crit_edge.thread, label %293

293:                                              ; preds = %281
  %294 = getelementptr inbounds i32, ptr %50, i64 %282
  %295 = load i32, ptr %294, align 4, !tbaa !5
  %296 = sext i32 %.pre to i64
  %297 = getelementptr inbounds i32, ptr %50, i64 %296
  %298 = load i32, ptr %297, align 4, !tbaa !5
  store i32 %298, ptr %294, align 4, !tbaa !5
  store i32 %295, ptr %297, align 4, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph461, %._crit_edge, %293, %281
  %299 = phi i32 [ %storemerge401459, %._crit_edge ], [ %.pre, %293 ], [ %.pre, %281 ], [ %storemerge401459, %.lr.ph461 ]
  %300 = add nsw i32 %299, 1
  store i32 %300, ptr %26, align 4, !tbaa !5
  %301 = load i32, ptr %22, align 4, !tbaa !5
  %.not402.not = icmp slt i32 %299, %301
  br i1 %.not402.not, label %.lr.ph461, label %.loopexit, !llvm.loop !19

.loopexit:                                        ; preds = %._crit_edge.thread, %258, %257
  %302 = sitofp i32 %.0362 to double
  store double %302, ptr %15, align 8, !tbaa !11
  store double 0.000000e+00, ptr %106, align 8, !tbaa !13
  br label %303

303:                                              ; preds = %130, %131, %113, %112, %.loopexit, %.thread421
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #6
  ret void
}

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

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

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

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

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

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

declare void @zhetrd_2stage_(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 @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 @zungtr_(ptr noundef, 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 @zunmtr_(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 @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 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = !{!7, !7, i64 0}
!18 = distinct !{!18, !15}
!19 = distinct !{!19, !15}


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