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

; 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 [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i32, align 4
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [2 x i8], align 1

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

151:                                              ; preds = %22
  %152 = load ptr, ptr %23, align 8, !tbaa !5
  %153 = call i32 @lsame_(ptr noundef %152, ptr noundef @.str.4)
  %154 = icmp ne i32 %153, 0
  br i1 %154, label %165, label %155

155:                                              ; preds = %151
  %156 = load ptr, ptr %23, align 8, !tbaa !5
  %157 = call i32 @lsame_(ptr noundef %156, ptr noundef @.str.5)
  %158 = icmp ne i32 %157, 0
  br i1 %158, label %165, label %159

159:                                              ; preds = %155
  %160 = load ptr, ptr %23, align 8, !tbaa !5
  %161 = call i32 @lsame_(ptr noundef %160, ptr noundef @.str.3)
  %162 = icmp ne i32 %161, 0
  br i1 %162, label %165, label %163

163:                                              ; preds = %159
  %164 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -1, ptr %164, align 4, !tbaa !9
  br label %267

165:                                              ; preds = %159, %155, %151, %22
  %166 = load i32, ptr %73, align 4, !tbaa !9
  %167 = icmp ne i32 %166, 0
  br i1 %167, label %174, label %168

168:                                              ; preds = %165
  %169 = load ptr, ptr %24, align 8, !tbaa !5
  %170 = call i32 @lsame_(ptr noundef %169, ptr noundef @.str.1)
  %171 = icmp ne i32 %170, 0
  br i1 %171, label %174, label %172

172:                                              ; preds = %168
  %173 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -2, ptr %173, align 4, !tbaa !9
  br label %266

174:                                              ; preds = %168, %165
  %175 = load i32, ptr %79, align 4, !tbaa !9
  %176 = icmp ne i32 %175, 0
  br i1 %176, label %183, label %177

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

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

183:                                              ; preds = %177, %174
  %184 = load i32, ptr %80, align 4, !tbaa !9
  %185 = icmp ne i32 %184, 0
  br i1 %185, label %195, label %186

186:                                              ; preds = %183
  %187 = load i32, ptr %76, align 4, !tbaa !9
  %188 = icmp ne i32 %187, 0
  br i1 %188, label %195, label %189

189:                                              ; preds = %186
  %190 = load i32, ptr %74, align 4, !tbaa !9
  %191 = icmp ne i32 %190, 0
  br i1 %191, label %195, label %192

192:                                              ; preds = %189
  %193 = load i32, ptr %81, align 4, !tbaa !9
  %194 = icmp ne i32 %193, 0
  br i1 %194, label %195, label %207

195:                                              ; preds = %192, %189, %186, %183
  %196 = load i32, ptr %76, align 4, !tbaa !9
  %197 = icmp ne i32 %196, 0
  br i1 %197, label %201, label %198

198:                                              ; preds = %195
  %199 = load i32, ptr %74, align 4, !tbaa !9
  %200 = icmp ne i32 %199, 0
  br i1 %200, label %201, label %209

201:                                              ; preds = %198, %195
  %202 = load i32, ptr %73, align 4, !tbaa !9
  %203 = icmp ne i32 %202, 0
  br i1 %203, label %204, label %207

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

207:                                              ; preds = %204, %201, %192
  %208 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -4, ptr %208, align 4, !tbaa !9
  br label %264

209:                                              ; preds = %204, %198
  %210 = load ptr, ptr %27, align 8, !tbaa !5
  %211 = load i32, ptr %210, align 4, !tbaa !9
  %212 = icmp slt i32 %211, 0
  br i1 %212, label %213, label %215

213:                                              ; preds = %209
  %214 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -5, ptr %214, align 4, !tbaa !9
  br label %263

215:                                              ; preds = %209
  %216 = load ptr, ptr %29, align 8, !tbaa !5
  %217 = load i32, ptr %216, align 4, !tbaa !9
  %218 = load ptr, ptr %27, align 8, !tbaa !5
  %219 = load i32, ptr %218, align 4, !tbaa !9
  %220 = icmp sge i32 1, %219
  br i1 %220, label %221, label %222

221:                                              ; preds = %215
  br label %225

222:                                              ; preds = %215
  %223 = load ptr, ptr %27, align 8, !tbaa !5
  %224 = load i32, ptr %223, align 4, !tbaa !9
  br label %225

225:                                              ; preds = %222, %221
  %226 = phi i32 [ 1, %221 ], [ %224, %222 ]
  %227 = icmp slt i32 %217, %226
  br i1 %227, label %228, label %230

228:                                              ; preds = %225
  %229 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -7, ptr %229, align 4, !tbaa !9
  br label %262

230:                                              ; preds = %225
  %231 = load ptr, ptr %32, align 8, !tbaa !5
  %232 = load i32, ptr %231, align 4, !tbaa !9
  %233 = icmp slt i32 %232, 1
  br i1 %233, label %243, label %234

234:                                              ; preds = %230
  %235 = load i32, ptr %73, align 4, !tbaa !9
  %236 = icmp ne i32 %235, 0
  br i1 %236, label %237, label %245

237:                                              ; preds = %234
  %238 = load ptr, ptr %32, align 8, !tbaa !5
  %239 = load i32, ptr %238, align 4, !tbaa !9
  %240 = load ptr, ptr %27, align 8, !tbaa !5
  %241 = load i32, ptr %240, align 4, !tbaa !9
  %242 = icmp slt i32 %239, %241
  br i1 %242, label %243, label %245

243:                                              ; preds = %237, %230
  %244 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -10, ptr %244, align 4, !tbaa !9
  br label %261

245:                                              ; preds = %237, %234
  %246 = load ptr, ptr %34, align 8, !tbaa !5
  %247 = load i32, ptr %246, align 4, !tbaa !9
  %248 = icmp slt i32 %247, 1
  br i1 %248, label %258, label %249

249:                                              ; preds = %245
  %250 = load i32, ptr %79, align 4, !tbaa !9
  %251 = icmp ne i32 %250, 0
  br i1 %251, label %252, label %260

252:                                              ; preds = %249
  %253 = load ptr, ptr %34, align 8, !tbaa !5
  %254 = load i32, ptr %253, align 4, !tbaa !9
  %255 = load ptr, ptr %27, align 8, !tbaa !5
  %256 = load i32, ptr %255, align 4, !tbaa !9
  %257 = icmp slt i32 %254, %256
  br i1 %257, label %258, label %260

258:                                              ; preds = %252, %245
  %259 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -12, ptr %259, align 4, !tbaa !9
  br label %260

260:                                              ; preds = %258, %252, %249
  br label %261

261:                                              ; preds = %260, %243
  br label %262

262:                                              ; preds = %261, %228
  br label %263

263:                                              ; preds = %262, %213
  br label %264

264:                                              ; preds = %263, %207
  br label %265

265:                                              ; preds = %264, %181
  br label %266

266:                                              ; preds = %265, %172
  br label %267

267:                                              ; preds = %266, %163
  %268 = load ptr, ptr %44, align 8, !tbaa !5
  %269 = load i32, ptr %268, align 4, !tbaa !9
  %270 = icmp eq i32 %269, 0
  br i1 %270, label %271, label %643

271:                                              ; preds = %267
  %272 = load ptr, ptr %27, align 8, !tbaa !5
  %273 = load i32, ptr %272, align 4, !tbaa !9
  %274 = icmp eq i32 %273, 0
  br i1 %274, label %275, label %276

275:                                              ; preds = %271
  store i32 1, ptr %71, align 4, !tbaa !9
  store i32 1, ptr %72, align 4, !tbaa !9
  br label %624

276:                                              ; preds = %271
  %277 = load ptr, ptr %27, align 8, !tbaa !5
  %278 = load i32, ptr %277, align 4, !tbaa !9
  %279 = load ptr, ptr %27, align 8, !tbaa !5
  %280 = load i32, ptr %279, align 4, !tbaa !9
  %281 = load ptr, ptr %27, align 8, !tbaa !5
  %282 = load ptr, ptr %27, align 8, !tbaa !5
  %283 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %281, ptr noundef @c__1, ptr noundef %282, ptr noundef @c__0, i32 noundef 6, i32 noundef 1)
  %284 = mul nsw i32 %280, %283
  %285 = add nsw i32 %278, %284
  store i32 %285, ptr %72, align 4, !tbaa !9
  %286 = load i32, ptr %73, align 4, !tbaa !9
  %287 = icmp ne i32 %286, 0
  br i1 %287, label %288, label %342

288:                                              ; preds = %276
  %289 = getelementptr inbounds [1 x i32], ptr %69, i64 0, i64 0
  %290 = load ptr, ptr %27, align 8, !tbaa !5
  %291 = load ptr, ptr %28, align 8, !tbaa !5
  %292 = load i32, ptr %46, align 4, !tbaa !9
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds %struct.doublecomplex, ptr %291, i64 %293
  %295 = load ptr, ptr %29, align 8, !tbaa !5
  %296 = load ptr, ptr %31, align 8, !tbaa !5
  %297 = load i32, ptr %48, align 4, !tbaa !9
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds %struct.doublecomplex, ptr %296, i64 %298
  %300 = load ptr, ptr %32, align 8, !tbaa !5
  %301 = load ptr, ptr %33, align 8, !tbaa !5
  %302 = load i32, ptr %50, align 4, !tbaa !9
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds %struct.doublecomplex, ptr %301, i64 %303
  %305 = load ptr, ptr %34, align 8, !tbaa !5
  %306 = load ptr, ptr %27, align 8, !tbaa !5
  %307 = load ptr, ptr %41, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.doublecomplex, ptr %307, i64 1
  %309 = load ptr, ptr %43, align 8, !tbaa !5
  %310 = getelementptr inbounds double, ptr %309, i64 1
  call void @ztrevc3_(ptr noundef @.str.8, ptr noundef @.str.3, ptr noundef %289, ptr noundef %290, ptr noundef %294, ptr noundef %295, ptr noundef %299, ptr noundef %300, ptr noundef %304, ptr noundef %305, ptr noundef %306, ptr noundef %63, ptr noundef %308, ptr noundef @c_n1, ptr noundef %310, ptr noundef @c_n1, ptr noundef %60)
  %311 = load ptr, ptr %41, align 8, !tbaa !5
  %312 = getelementptr inbounds %struct.doublecomplex, ptr %311, i64 1
  %313 = getelementptr inbounds %struct.doublecomplex, ptr %312, i32 0, i32 0
  %314 = load double, ptr %313, align 8, !tbaa !11
  %315 = fptosi double %314 to i32
  store i32 %315, ptr %87, align 4, !tbaa !9
  %316 = load i32, ptr %72, align 4, !tbaa !9
  %317 = load i32, ptr %87, align 4, !tbaa !9
  %318 = icmp sge i32 %316, %317
  br i1 %318, label %319, label %321

319:                                              ; preds = %288
  %320 = load i32, ptr %72, align 4, !tbaa !9
  br label %323

321:                                              ; preds = %288
  %322 = load i32, ptr %87, align 4, !tbaa !9
  br label %323

323:                                              ; preds = %321, %319
  %324 = phi i32 [ %320, %319 ], [ %322, %321 ]
  store i32 %324, ptr %72, align 4, !tbaa !9
  %325 = load ptr, ptr %27, align 8, !tbaa !5
  %326 = load ptr, ptr %27, align 8, !tbaa !5
  %327 = load ptr, ptr %28, align 8, !tbaa !5
  %328 = load i32, ptr %46, align 4, !tbaa !9
  %329 = sext i32 %328 to i64
  %330 = getelementptr inbounds %struct.doublecomplex, ptr %327, i64 %329
  %331 = load ptr, ptr %29, align 8, !tbaa !5
  %332 = load ptr, ptr %30, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.doublecomplex, ptr %332, i64 1
  %334 = load ptr, ptr %31, align 8, !tbaa !5
  %335 = load i32, ptr %48, align 4, !tbaa !9
  %336 = sext i32 %335 to i64
  %337 = getelementptr inbounds %struct.doublecomplex, ptr %334, i64 %336
  %338 = load ptr, ptr %32, align 8, !tbaa !5
  %339 = load ptr, ptr %41, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.doublecomplex, ptr %339, i64 1
  %341 = load ptr, ptr %44, align 8, !tbaa !5
  call void @zhseqr_(ptr noundef @.str.4, ptr noundef @.str, ptr noundef %325, ptr noundef @c__1, ptr noundef %326, ptr noundef %330, ptr noundef %331, ptr noundef %333, ptr noundef %337, ptr noundef %338, ptr noundef %340, ptr noundef @c_n1, ptr noundef %341)
  br label %440

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

345:                                              ; preds = %342
  %346 = getelementptr inbounds [1 x i32], ptr %69, i64 0, i64 0
  %347 = load ptr, ptr %27, align 8, !tbaa !5
  %348 = load ptr, ptr %28, align 8, !tbaa !5
  %349 = load i32, ptr %46, align 4, !tbaa !9
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds %struct.doublecomplex, ptr %348, i64 %350
  %352 = load ptr, ptr %29, align 8, !tbaa !5
  %353 = load ptr, ptr %31, align 8, !tbaa !5
  %354 = load i32, ptr %48, align 4, !tbaa !9
  %355 = sext i32 %354 to i64
  %356 = getelementptr inbounds %struct.doublecomplex, ptr %353, i64 %355
  %357 = load ptr, ptr %32, align 8, !tbaa !5
  %358 = load ptr, ptr %33, align 8, !tbaa !5
  %359 = load i32, ptr %50, align 4, !tbaa !9
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds %struct.doublecomplex, ptr %358, i64 %360
  %362 = load ptr, ptr %34, align 8, !tbaa !5
  %363 = load ptr, ptr %27, align 8, !tbaa !5
  %364 = load ptr, ptr %41, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.doublecomplex, ptr %364, i64 1
  %366 = load ptr, ptr %43, align 8, !tbaa !5
  %367 = getelementptr inbounds double, ptr %366, i64 1
  call void @ztrevc3_(ptr noundef @.str.9, ptr noundef @.str.3, ptr noundef %346, ptr noundef %347, ptr noundef %351, ptr noundef %352, ptr noundef %356, ptr noundef %357, ptr noundef %361, ptr noundef %362, ptr noundef %363, ptr noundef %63, ptr noundef %365, ptr noundef @c_n1, ptr noundef %367, ptr noundef @c_n1, ptr noundef %60)
  %368 = load ptr, ptr %41, align 8, !tbaa !5
  %369 = getelementptr inbounds %struct.doublecomplex, ptr %368, i64 1
  %370 = getelementptr inbounds %struct.doublecomplex, ptr %369, i32 0, i32 0
  %371 = load double, ptr %370, align 8, !tbaa !11
  %372 = fptosi double %371 to i32
  store i32 %372, ptr %87, align 4, !tbaa !9
  %373 = load i32, ptr %72, align 4, !tbaa !9
  %374 = load i32, ptr %87, align 4, !tbaa !9
  %375 = icmp sge i32 %373, %374
  br i1 %375, label %376, label %378

376:                                              ; preds = %345
  %377 = load i32, ptr %72, align 4, !tbaa !9
  br label %380

378:                                              ; preds = %345
  %379 = load i32, ptr %87, align 4, !tbaa !9
  br label %380

380:                                              ; preds = %378, %376
  %381 = phi i32 [ %377, %376 ], [ %379, %378 ]
  store i32 %381, ptr %72, align 4, !tbaa !9
  %382 = load ptr, ptr %27, align 8, !tbaa !5
  %383 = load ptr, ptr %27, align 8, !tbaa !5
  %384 = load ptr, ptr %28, align 8, !tbaa !5
  %385 = load i32, ptr %46, align 4, !tbaa !9
  %386 = sext i32 %385 to i64
  %387 = getelementptr inbounds %struct.doublecomplex, ptr %384, i64 %386
  %388 = load ptr, ptr %29, align 8, !tbaa !5
  %389 = load ptr, ptr %30, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct.doublecomplex, ptr %389, i64 1
  %391 = load ptr, ptr %33, align 8, !tbaa !5
  %392 = load i32, ptr %50, align 4, !tbaa !9
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds %struct.doublecomplex, ptr %391, i64 %393
  %395 = load ptr, ptr %34, align 8, !tbaa !5
  %396 = load ptr, ptr %41, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.doublecomplex, ptr %396, i64 1
  %398 = load ptr, ptr %44, align 8, !tbaa !5
  call void @zhseqr_(ptr noundef @.str.4, ptr noundef @.str, ptr noundef %382, ptr noundef @c__1, ptr noundef %383, ptr noundef %387, ptr noundef %388, ptr noundef %390, ptr noundef %394, ptr noundef %395, ptr noundef %397, ptr noundef @c_n1, ptr noundef %398)
  br label %439

399:                                              ; preds = %342
  %400 = load i32, ptr %80, align 4, !tbaa !9
  %401 = icmp ne i32 %400, 0
  br i1 %401, label %402, label %420

402:                                              ; preds = %399
  %403 = load ptr, ptr %27, align 8, !tbaa !5
  %404 = load ptr, ptr %27, align 8, !tbaa !5
  %405 = load ptr, ptr %28, align 8, !tbaa !5
  %406 = load i32, ptr %46, align 4, !tbaa !9
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds %struct.doublecomplex, ptr %405, i64 %407
  %409 = load ptr, ptr %29, align 8, !tbaa !5
  %410 = load ptr, ptr %30, align 8, !tbaa !5
  %411 = getelementptr inbounds %struct.doublecomplex, ptr %410, i64 1
  %412 = load ptr, ptr %33, align 8, !tbaa !5
  %413 = load i32, ptr %50, align 4, !tbaa !9
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds %struct.doublecomplex, ptr %412, i64 %414
  %416 = load ptr, ptr %34, align 8, !tbaa !5
  %417 = load ptr, ptr %41, align 8, !tbaa !5
  %418 = getelementptr inbounds %struct.doublecomplex, ptr %417, i64 1
  %419 = load ptr, ptr %44, align 8, !tbaa !5
  call void @zhseqr_(ptr noundef @.str.2, ptr noundef @.str.1, ptr noundef %403, ptr noundef @c__1, ptr noundef %404, ptr noundef %408, ptr noundef %409, ptr noundef %411, ptr noundef %415, ptr noundef %416, ptr noundef %418, ptr noundef @c_n1, ptr noundef %419)
  br label %438

420:                                              ; preds = %399
  %421 = load ptr, ptr %27, align 8, !tbaa !5
  %422 = load ptr, ptr %27, align 8, !tbaa !5
  %423 = load ptr, ptr %28, align 8, !tbaa !5
  %424 = load i32, ptr %46, align 4, !tbaa !9
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds %struct.doublecomplex, ptr %423, i64 %425
  %427 = load ptr, ptr %29, align 8, !tbaa !5
  %428 = load ptr, ptr %30, align 8, !tbaa !5
  %429 = getelementptr inbounds %struct.doublecomplex, ptr %428, i64 1
  %430 = load ptr, ptr %33, align 8, !tbaa !5
  %431 = load i32, ptr %50, align 4, !tbaa !9
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds %struct.doublecomplex, ptr %430, i64 %432
  %434 = load ptr, ptr %34, align 8, !tbaa !5
  %435 = load ptr, ptr %41, align 8, !tbaa !5
  %436 = getelementptr inbounds %struct.doublecomplex, ptr %435, i64 1
  %437 = load ptr, ptr %44, align 8, !tbaa !5
  call void @zhseqr_(ptr noundef @.str.4, ptr noundef @.str.1, ptr noundef %421, ptr noundef @c__1, ptr noundef %422, ptr noundef %426, ptr noundef %427, ptr noundef %429, ptr noundef %433, ptr noundef %434, ptr noundef %436, ptr noundef @c_n1, ptr noundef %437)
  br label %438

438:                                              ; preds = %420, %402
  br label %439

439:                                              ; preds = %438, %380
  br label %440

440:                                              ; preds = %439, %323
  %441 = load ptr, ptr %41, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.doublecomplex, ptr %441, i64 1
  %443 = getelementptr inbounds %struct.doublecomplex, ptr %442, i32 0, i32 0
  %444 = load double, ptr %443, align 8, !tbaa !11
  %445 = fptosi double %444 to i32
  store i32 %445, ptr %75, align 4, !tbaa !9
  %446 = load i32, ptr %73, align 4, !tbaa !9
  %447 = icmp ne i32 %446, 0
  br i1 %447, label %516, label %448

448:                                              ; preds = %440
  %449 = load i32, ptr %79, align 4, !tbaa !9
  %450 = icmp ne i32 %449, 0
  br i1 %450, label %516, label %451

451:                                              ; preds = %448
  %452 = load ptr, ptr %27, align 8, !tbaa !5
  %453 = load i32, ptr %452, align 4, !tbaa !9
  %454 = shl i32 %453, 1
  store i32 %454, ptr %71, align 4, !tbaa !9
  %455 = load i32, ptr %80, align 4, !tbaa !9
  %456 = icmp ne i32 %455, 0
  br i1 %456, label %480, label %457

457:                                              ; preds = %451
  %458 = load i32, ptr %76, align 4, !tbaa !9
  %459 = icmp ne i32 %458, 0
  br i1 %459, label %480, label %460

460:                                              ; preds = %457
  %461 = load i32, ptr %71, align 4, !tbaa !9
  store i32 %461, ptr %51, align 4, !tbaa !9
  %462 = load ptr, ptr %27, align 8, !tbaa !5
  %463 = load i32, ptr %462, align 4, !tbaa !9
  %464 = load ptr, ptr %27, align 8, !tbaa !5
  %465 = load i32, ptr %464, align 4, !tbaa !9
  %466 = mul nsw i32 %463, %465
  %467 = load ptr, ptr %27, align 8, !tbaa !5
  %468 = load i32, ptr %467, align 4, !tbaa !9
  %469 = shl i32 %468, 1
  %470 = add nsw i32 %466, %469
  store i32 %470, ptr %52, align 4, !tbaa !9
  %471 = load i32, ptr %51, align 4, !tbaa !9
  %472 = load i32, ptr %52, align 4, !tbaa !9
  %473 = icmp sge i32 %471, %472
  br i1 %473, label %474, label %476

474:                                              ; preds = %460
  %475 = load i32, ptr %51, align 4, !tbaa !9
  br label %478

476:                                              ; preds = %460
  %477 = load i32, ptr %52, align 4, !tbaa !9
  br label %478

478:                                              ; preds = %476, %474
  %479 = phi i32 [ %475, %474 ], [ %477, %476 ]
  store i32 %479, ptr %71, align 4, !tbaa !9
  br label %480

480:                                              ; preds = %478, %457, %451
  %481 = load i32, ptr %72, align 4, !tbaa !9
  %482 = load i32, ptr %75, align 4, !tbaa !9
  %483 = icmp sge i32 %481, %482
  br i1 %483, label %484, label %486

484:                                              ; preds = %480
  %485 = load i32, ptr %72, align 4, !tbaa !9
  br label %488

486:                                              ; preds = %480
  %487 = load i32, ptr %75, align 4, !tbaa !9
  br label %488

488:                                              ; preds = %486, %484
  %489 = phi i32 [ %485, %484 ], [ %487, %486 ]
  store i32 %489, ptr %72, align 4, !tbaa !9
  %490 = load i32, ptr %80, align 4, !tbaa !9
  %491 = icmp ne i32 %490, 0
  br i1 %491, label %515, label %492

492:                                              ; preds = %488
  %493 = load i32, ptr %76, align 4, !tbaa !9
  %494 = icmp ne i32 %493, 0
  br i1 %494, label %515, label %495

495:                                              ; preds = %492
  %496 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %496, ptr %51, align 4, !tbaa !9
  %497 = load ptr, ptr %27, align 8, !tbaa !5
  %498 = load i32, ptr %497, align 4, !tbaa !9
  %499 = load ptr, ptr %27, align 8, !tbaa !5
  %500 = load i32, ptr %499, align 4, !tbaa !9
  %501 = mul nsw i32 %498, %500
  %502 = load ptr, ptr %27, align 8, !tbaa !5
  %503 = load i32, ptr %502, align 4, !tbaa !9
  %504 = shl i32 %503, 1
  %505 = add nsw i32 %501, %504
  store i32 %505, ptr %52, align 4, !tbaa !9
  %506 = load i32, ptr %51, align 4, !tbaa !9
  %507 = load i32, ptr %52, align 4, !tbaa !9
  %508 = icmp sge i32 %506, %507
  br i1 %508, label %509, label %511

509:                                              ; preds = %495
  %510 = load i32, ptr %51, align 4, !tbaa !9
  br label %513

511:                                              ; preds = %495
  %512 = load i32, ptr %52, align 4, !tbaa !9
  br label %513

513:                                              ; preds = %511, %509
  %514 = phi i32 [ %510, %509 ], [ %512, %511 ]
  store i32 %514, ptr %72, align 4, !tbaa !9
  br label %515

515:                                              ; preds = %513, %492, %488
  br label %614

516:                                              ; preds = %448, %440
  %517 = load ptr, ptr %27, align 8, !tbaa !5
  %518 = load i32, ptr %517, align 4, !tbaa !9
  %519 = shl i32 %518, 1
  store i32 %519, ptr %71, align 4, !tbaa !9
  %520 = load i32, ptr %80, align 4, !tbaa !9
  %521 = icmp ne i32 %520, 0
  br i1 %521, label %545, label %522

522:                                              ; preds = %516
  %523 = load i32, ptr %76, align 4, !tbaa !9
  %524 = icmp ne i32 %523, 0
  br i1 %524, label %545, label %525

525:                                              ; preds = %522
  %526 = load i32, ptr %71, align 4, !tbaa !9
  store i32 %526, ptr %51, align 4, !tbaa !9
  %527 = load ptr, ptr %27, align 8, !tbaa !5
  %528 = load i32, ptr %527, align 4, !tbaa !9
  %529 = load ptr, ptr %27, align 8, !tbaa !5
  %530 = load i32, ptr %529, align 4, !tbaa !9
  %531 = mul nsw i32 %528, %530
  %532 = load ptr, ptr %27, align 8, !tbaa !5
  %533 = load i32, ptr %532, align 4, !tbaa !9
  %534 = shl i32 %533, 1
  %535 = add nsw i32 %531, %534
  store i32 %535, ptr %52, align 4, !tbaa !9
  %536 = load i32, ptr %51, align 4, !tbaa !9
  %537 = load i32, ptr %52, align 4, !tbaa !9
  %538 = icmp sge i32 %536, %537
  br i1 %538, label %539, label %541

539:                                              ; preds = %525
  %540 = load i32, ptr %51, align 4, !tbaa !9
  br label %543

541:                                              ; preds = %525
  %542 = load i32, ptr %52, align 4, !tbaa !9
  br label %543

543:                                              ; preds = %541, %539
  %544 = phi i32 [ %540, %539 ], [ %542, %541 ]
  store i32 %544, ptr %71, align 4, !tbaa !9
  br label %545

545:                                              ; preds = %543, %522, %516
  %546 = load i32, ptr %72, align 4, !tbaa !9
  %547 = load i32, ptr %75, align 4, !tbaa !9
  %548 = icmp sge i32 %546, %547
  br i1 %548, label %549, label %551

549:                                              ; preds = %545
  %550 = load i32, ptr %72, align 4, !tbaa !9
  br label %553

551:                                              ; preds = %545
  %552 = load i32, ptr %75, align 4, !tbaa !9
  br label %553

553:                                              ; preds = %551, %549
  %554 = phi i32 [ %550, %549 ], [ %552, %551 ]
  store i32 %554, ptr %72, align 4, !tbaa !9
  %555 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %555, ptr %51, align 4, !tbaa !9
  %556 = load ptr, ptr %27, align 8, !tbaa !5
  %557 = load i32, ptr %556, align 4, !tbaa !9
  %558 = load ptr, ptr %27, align 8, !tbaa !5
  %559 = load i32, ptr %558, align 4, !tbaa !9
  %560 = sub nsw i32 %559, 1
  %561 = load ptr, ptr %27, align 8, !tbaa !5
  %562 = load ptr, ptr %27, align 8, !tbaa !5
  %563 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.10, ptr noundef @.str.7, ptr noundef %561, ptr noundef @c__1, ptr noundef %562, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  %564 = mul nsw i32 %560, %563
  %565 = add nsw i32 %557, %564
  store i32 %565, ptr %52, align 4, !tbaa !9
  %566 = load i32, ptr %51, align 4, !tbaa !9
  %567 = load i32, ptr %52, align 4, !tbaa !9
  %568 = icmp sge i32 %566, %567
  br i1 %568, label %569, label %571

569:                                              ; preds = %553
  %570 = load i32, ptr %51, align 4, !tbaa !9
  br label %573

571:                                              ; preds = %553
  %572 = load i32, ptr %52, align 4, !tbaa !9
  br label %573

573:                                              ; preds = %571, %569
  %574 = phi i32 [ %570, %569 ], [ %572, %571 ]
  store i32 %574, ptr %72, align 4, !tbaa !9
  %575 = load i32, ptr %80, align 4, !tbaa !9
  %576 = icmp ne i32 %575, 0
  br i1 %576, label %600, label %577

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

580:                                              ; preds = %577
  %581 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %581, ptr %51, align 4, !tbaa !9
  %582 = load ptr, ptr %27, align 8, !tbaa !5
  %583 = load i32, ptr %582, align 4, !tbaa !9
  %584 = load ptr, ptr %27, align 8, !tbaa !5
  %585 = load i32, ptr %584, align 4, !tbaa !9
  %586 = mul nsw i32 %583, %585
  %587 = load ptr, ptr %27, align 8, !tbaa !5
  %588 = load i32, ptr %587, align 4, !tbaa !9
  %589 = shl i32 %588, 1
  %590 = add nsw i32 %586, %589
  store i32 %590, ptr %52, align 4, !tbaa !9
  %591 = load i32, ptr %51, align 4, !tbaa !9
  %592 = load i32, ptr %52, align 4, !tbaa !9
  %593 = icmp sge i32 %591, %592
  br i1 %593, label %594, label %596

594:                                              ; preds = %580
  %595 = load i32, ptr %51, align 4, !tbaa !9
  br label %598

596:                                              ; preds = %580
  %597 = load i32, ptr %52, align 4, !tbaa !9
  br label %598

598:                                              ; preds = %596, %594
  %599 = phi i32 [ %595, %594 ], [ %597, %596 ]
  store i32 %599, ptr %72, align 4, !tbaa !9
  br label %600

600:                                              ; preds = %598, %577, %573
  %601 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %601, ptr %51, align 4, !tbaa !9
  %602 = load ptr, ptr %27, align 8, !tbaa !5
  %603 = load i32, ptr %602, align 4, !tbaa !9
  %604 = shl i32 %603, 1
  store i32 %604, ptr %52, align 4, !tbaa !9
  %605 = load i32, ptr %51, align 4, !tbaa !9
  %606 = load i32, ptr %52, align 4, !tbaa !9
  %607 = icmp sge i32 %605, %606
  br i1 %607, label %608, label %610

608:                                              ; preds = %600
  %609 = load i32, ptr %51, align 4, !tbaa !9
  br label %612

610:                                              ; preds = %600
  %611 = load i32, ptr %52, align 4, !tbaa !9
  br label %612

612:                                              ; preds = %610, %608
  %613 = phi i32 [ %609, %608 ], [ %611, %610 ]
  store i32 %613, ptr %72, align 4, !tbaa !9
  br label %614

614:                                              ; preds = %612, %515
  %615 = load i32, ptr %72, align 4, !tbaa !9
  %616 = load i32, ptr %71, align 4, !tbaa !9
  %617 = icmp sge i32 %615, %616
  br i1 %617, label %618, label %620

618:                                              ; preds = %614
  %619 = load i32, ptr %72, align 4, !tbaa !9
  br label %622

620:                                              ; preds = %614
  %621 = load i32, ptr %71, align 4, !tbaa !9
  br label %622

622:                                              ; preds = %620, %618
  %623 = phi i32 [ %619, %618 ], [ %621, %620 ]
  store i32 %623, ptr %72, align 4, !tbaa !9
  br label %624

624:                                              ; preds = %622, %275
  %625 = load i32, ptr %72, align 4, !tbaa !9
  %626 = sitofp i32 %625 to double
  %627 = load ptr, ptr %41, align 8, !tbaa !5
  %628 = getelementptr inbounds %struct.doublecomplex, ptr %627, i64 1
  %629 = getelementptr inbounds %struct.doublecomplex, ptr %628, i32 0, i32 0
  store double %626, ptr %629, align 8, !tbaa !11
  %630 = load ptr, ptr %41, align 8, !tbaa !5
  %631 = getelementptr inbounds %struct.doublecomplex, ptr %630, i64 1
  %632 = getelementptr inbounds %struct.doublecomplex, ptr %631, i32 0, i32 1
  store double 0.000000e+00, ptr %632, align 8, !tbaa !14
  %633 = load ptr, ptr %42, align 8, !tbaa !5
  %634 = load i32, ptr %633, align 4, !tbaa !9
  %635 = load i32, ptr %71, align 4, !tbaa !9
  %636 = icmp slt i32 %634, %635
  br i1 %636, label %637, label %642

637:                                              ; preds = %624
  %638 = load i32, ptr %78, align 4, !tbaa !9
  %639 = icmp ne i32 %638, 0
  br i1 %639, label %642, label %640

640:                                              ; preds = %637
  %641 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -20, ptr %641, align 4, !tbaa !9
  br label %642

642:                                              ; preds = %640, %637, %624
  br label %643

643:                                              ; preds = %642, %267
  %644 = load ptr, ptr %44, align 8, !tbaa !5
  %645 = load i32, ptr %644, align 4, !tbaa !9
  %646 = icmp ne i32 %645, 0
  br i1 %646, label %647, label %652

647:                                              ; preds = %643
  %648 = load ptr, ptr %44, align 8, !tbaa !5
  %649 = load i32, ptr %648, align 4, !tbaa !9
  %650 = sub nsw i32 0, %649
  store i32 %650, ptr %51, align 4, !tbaa !9
  %651 = call i32 @xerbla_(ptr noundef @.str.11, ptr noundef %51, i32 noundef 6)
  store i32 1, ptr %88, align 4
  br label %1426

652:                                              ; preds = %643
  %653 = load i32, ptr %78, align 4, !tbaa !9
  %654 = icmp ne i32 %653, 0
  br i1 %654, label %655, label %656

655:                                              ; preds = %652
  store i32 1, ptr %88, align 4
  br label %1426

656:                                              ; preds = %652
  br label %657

657:                                              ; preds = %656
  %658 = load ptr, ptr %27, align 8, !tbaa !5
  %659 = load i32, ptr %658, align 4, !tbaa !9
  %660 = icmp eq i32 %659, 0
  br i1 %660, label %661, label %662

661:                                              ; preds = %657
  store i32 1, ptr %88, align 4
  br label %1426

662:                                              ; preds = %657
  %663 = call double @dlamch_(ptr noundef @.str.5)
  store double %663, ptr %85, align 8, !tbaa !15
  %664 = call double @dlamch_(ptr noundef @.str.4)
  store double %664, ptr %77, align 8, !tbaa !15
  %665 = load double, ptr %77, align 8, !tbaa !15
  %666 = fdiv double 1.000000e+00, %665
  store double %666, ptr %70, align 8, !tbaa !15
  call void @dlabad_(ptr noundef %77, ptr noundef %70)
  %667 = load double, ptr %77, align 8, !tbaa !15
  %668 = call double @sqrt(double noundef %667) #6
  %669 = load double, ptr %85, align 8, !tbaa !15
  %670 = fdiv double %668, %669
  store double %670, ptr %77, align 8, !tbaa !15
  %671 = load double, ptr %77, align 8, !tbaa !15
  %672 = fdiv double 1.000000e+00, %671
  store double %672, ptr %70, align 8, !tbaa !15
  store i32 0, ptr %66, align 4, !tbaa !9
  %673 = load ptr, ptr %27, align 8, !tbaa !5
  %674 = load ptr, ptr %27, align 8, !tbaa !5
  %675 = load ptr, ptr %28, align 8, !tbaa !5
  %676 = load i32, ptr %46, align 4, !tbaa !9
  %677 = sext i32 %676 to i64
  %678 = getelementptr inbounds %struct.doublecomplex, ptr %675, i64 %677
  %679 = load ptr, ptr %29, align 8, !tbaa !5
  %680 = getelementptr inbounds [1 x double], ptr %84, i64 0, i64 0
  %681 = call double @zlange_(ptr noundef @.str.12, ptr noundef %673, ptr noundef %674, ptr noundef %678, ptr noundef %679, ptr noundef %680)
  store double %681, ptr %59, align 8, !tbaa !15
  store i32 0, ptr %67, align 4, !tbaa !9
  %682 = load double, ptr %59, align 8, !tbaa !15
  %683 = fcmp ogt double %682, 0.000000e+00
  br i1 %683, label %684, label %690

684:                                              ; preds = %662
  %685 = load double, ptr %59, align 8, !tbaa !15
  %686 = load double, ptr %77, align 8, !tbaa !15
  %687 = fcmp olt double %685, %686
  br i1 %687, label %688, label %690

688:                                              ; preds = %684
  store i32 1, ptr %67, align 4, !tbaa !9
  %689 = load double, ptr %77, align 8, !tbaa !15
  store double %689, ptr %68, align 8, !tbaa !15
  br label %697

690:                                              ; preds = %684, %662
  %691 = load double, ptr %59, align 8, !tbaa !15
  %692 = load double, ptr %70, align 8, !tbaa !15
  %693 = fcmp ogt double %691, %692
  br i1 %693, label %694, label %696

694:                                              ; preds = %690
  store i32 1, ptr %67, align 4, !tbaa !9
  %695 = load double, ptr %70, align 8, !tbaa !15
  store double %695, ptr %68, align 8, !tbaa !15
  br label %696

696:                                              ; preds = %694, %690
  br label %697

697:                                              ; preds = %696, %688
  %698 = load i32, ptr %67, align 4, !tbaa !9
  %699 = icmp ne i32 %698, 0
  br i1 %699, label %700, label %708

700:                                              ; preds = %697
  %701 = load ptr, ptr %27, align 8, !tbaa !5
  %702 = load ptr, ptr %27, align 8, !tbaa !5
  %703 = load ptr, ptr %28, align 8, !tbaa !5
  %704 = load i32, ptr %46, align 4, !tbaa !9
  %705 = sext i32 %704 to i64
  %706 = getelementptr inbounds %struct.doublecomplex, ptr %703, i64 %705
  %707 = load ptr, ptr %29, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.13, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %59, ptr noundef %68, ptr noundef %701, ptr noundef %702, ptr noundef %706, ptr noundef %707, ptr noundef %60)
  br label %708

708:                                              ; preds = %700, %697
  %709 = load ptr, ptr %23, align 8, !tbaa !5
  %710 = load ptr, ptr %27, align 8, !tbaa !5
  %711 = load ptr, ptr %28, align 8, !tbaa !5
  %712 = load i32, ptr %46, align 4, !tbaa !9
  %713 = sext i32 %712 to i64
  %714 = getelementptr inbounds %struct.doublecomplex, ptr %711, i64 %713
  %715 = load ptr, ptr %29, align 8, !tbaa !5
  %716 = load ptr, ptr %35, align 8, !tbaa !5
  %717 = load ptr, ptr %36, align 8, !tbaa !5
  %718 = load ptr, ptr %37, align 8, !tbaa !5
  %719 = getelementptr inbounds double, ptr %718, i64 1
  call void @zgebal_(ptr noundef %709, ptr noundef %710, ptr noundef %714, ptr noundef %715, ptr noundef %716, ptr noundef %717, ptr noundef %719, ptr noundef %60)
  %720 = load ptr, ptr %27, align 8, !tbaa !5
  %721 = load ptr, ptr %27, align 8, !tbaa !5
  %722 = load ptr, ptr %28, align 8, !tbaa !5
  %723 = load i32, ptr %46, align 4, !tbaa !9
  %724 = sext i32 %723 to i64
  %725 = getelementptr inbounds %struct.doublecomplex, ptr %722, i64 %724
  %726 = load ptr, ptr %29, align 8, !tbaa !5
  %727 = getelementptr inbounds [1 x double], ptr %84, i64 0, i64 0
  %728 = call double @zlange_(ptr noundef @.str.14, ptr noundef %720, ptr noundef %721, ptr noundef %725, ptr noundef %726, ptr noundef %727)
  %729 = load ptr, ptr %38, align 8, !tbaa !5
  store double %728, ptr %729, align 8, !tbaa !15
  %730 = load i32, ptr %67, align 4, !tbaa !9
  %731 = icmp ne i32 %730, 0
  br i1 %731, label %732, label %740

732:                                              ; preds = %708
  %733 = load ptr, ptr %38, align 8, !tbaa !5
  %734 = load double, ptr %733, align 8, !tbaa !15
  %735 = getelementptr inbounds [1 x double], ptr %84, i64 0, i64 0
  store double %734, ptr %735, align 8, !tbaa !15
  %736 = getelementptr inbounds [1 x double], ptr %84, i64 0, i64 0
  call void @dlascl_(ptr noundef @.str.13, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %68, ptr noundef %59, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %736, ptr noundef @c__1, ptr noundef %60)
  %737 = getelementptr inbounds [1 x double], ptr %84, i64 0, i64 0
  %738 = load double, ptr %737, align 8, !tbaa !15
  %739 = load ptr, ptr %38, align 8, !tbaa !5
  store double %738, ptr %739, align 8, !tbaa !15
  br label %740

740:                                              ; preds = %732, %708
  store i32 1, ptr %61, align 4, !tbaa !9
  %741 = load i32, ptr %61, align 4, !tbaa !9
  %742 = load ptr, ptr %27, align 8, !tbaa !5
  %743 = load i32, ptr %742, align 4, !tbaa !9
  %744 = add nsw i32 %741, %743
  store i32 %744, ptr %62, align 4, !tbaa !9
  %745 = load ptr, ptr %42, align 8, !tbaa !5
  %746 = load i32, ptr %745, align 4, !tbaa !9
  %747 = load i32, ptr %62, align 4, !tbaa !9
  %748 = sub nsw i32 %746, %747
  %749 = add nsw i32 %748, 1
  store i32 %749, ptr %51, align 4, !tbaa !9
  %750 = load ptr, ptr %27, align 8, !tbaa !5
  %751 = load ptr, ptr %35, align 8, !tbaa !5
  %752 = load ptr, ptr %36, align 8, !tbaa !5
  %753 = load ptr, ptr %28, align 8, !tbaa !5
  %754 = load i32, ptr %46, align 4, !tbaa !9
  %755 = sext i32 %754 to i64
  %756 = getelementptr inbounds %struct.doublecomplex, ptr %753, i64 %755
  %757 = load ptr, ptr %29, align 8, !tbaa !5
  %758 = load ptr, ptr %41, align 8, !tbaa !5
  %759 = load i32, ptr %61, align 4, !tbaa !9
  %760 = sext i32 %759 to i64
  %761 = getelementptr inbounds %struct.doublecomplex, ptr %758, i64 %760
  %762 = load ptr, ptr %41, align 8, !tbaa !5
  %763 = load i32, ptr %62, align 4, !tbaa !9
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds %struct.doublecomplex, ptr %762, i64 %764
  call void @zgehrd_(ptr noundef %750, ptr noundef %751, ptr noundef %752, ptr noundef %756, ptr noundef %757, ptr noundef %761, ptr noundef %765, ptr noundef %51, ptr noundef %60)
  %766 = load i32, ptr %73, align 4, !tbaa !9
  %767 = icmp ne i32 %766, 0
  br i1 %767, label %768, label %846

768:                                              ; preds = %740
  %769 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  store i8 76, ptr %769, align 1, !tbaa !16
  %770 = load ptr, ptr %27, align 8, !tbaa !5
  %771 = load ptr, ptr %27, align 8, !tbaa !5
  %772 = load ptr, ptr %28, align 8, !tbaa !5
  %773 = load i32, ptr %46, align 4, !tbaa !9
  %774 = sext i32 %773 to i64
  %775 = getelementptr inbounds %struct.doublecomplex, ptr %772, i64 %774
  %776 = load ptr, ptr %29, align 8, !tbaa !5
  %777 = load ptr, ptr %31, align 8, !tbaa !5
  %778 = load i32, ptr %48, align 4, !tbaa !9
  %779 = sext i32 %778 to i64
  %780 = getelementptr inbounds %struct.doublecomplex, ptr %777, i64 %779
  %781 = load ptr, ptr %32, align 8, !tbaa !5
  call void @zlacpy_(ptr noundef @.str.8, ptr noundef %770, ptr noundef %771, ptr noundef %775, ptr noundef %776, ptr noundef %780, ptr noundef %781)
  %782 = load ptr, ptr %42, align 8, !tbaa !5
  %783 = load i32, ptr %782, align 4, !tbaa !9
  %784 = load i32, ptr %62, align 4, !tbaa !9
  %785 = sub nsw i32 %783, %784
  %786 = add nsw i32 %785, 1
  store i32 %786, ptr %51, align 4, !tbaa !9
  %787 = load ptr, ptr %27, align 8, !tbaa !5
  %788 = load ptr, ptr %35, align 8, !tbaa !5
  %789 = load ptr, ptr %36, align 8, !tbaa !5
  %790 = load ptr, ptr %31, align 8, !tbaa !5
  %791 = load i32, ptr %48, align 4, !tbaa !9
  %792 = sext i32 %791 to i64
  %793 = getelementptr inbounds %struct.doublecomplex, ptr %790, i64 %792
  %794 = load ptr, ptr %32, align 8, !tbaa !5
  %795 = load ptr, ptr %41, align 8, !tbaa !5
  %796 = load i32, ptr %61, align 4, !tbaa !9
  %797 = sext i32 %796 to i64
  %798 = getelementptr inbounds %struct.doublecomplex, ptr %795, i64 %797
  %799 = load ptr, ptr %41, align 8, !tbaa !5
  %800 = load i32, ptr %62, align 4, !tbaa !9
  %801 = sext i32 %800 to i64
  %802 = getelementptr inbounds %struct.doublecomplex, ptr %799, i64 %801
  call void @zunghr_(ptr noundef %787, ptr noundef %788, ptr noundef %789, ptr noundef %793, ptr noundef %794, ptr noundef %798, ptr noundef %802, ptr noundef %51, ptr noundef %60)
  %803 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %803, ptr %62, align 4, !tbaa !9
  %804 = load ptr, ptr %42, align 8, !tbaa !5
  %805 = load i32, ptr %804, align 4, !tbaa !9
  %806 = load i32, ptr %62, align 4, !tbaa !9
  %807 = sub nsw i32 %805, %806
  %808 = add nsw i32 %807, 1
  store i32 %808, ptr %51, align 4, !tbaa !9
  %809 = load ptr, ptr %27, align 8, !tbaa !5
  %810 = load ptr, ptr %35, align 8, !tbaa !5
  %811 = load ptr, ptr %36, align 8, !tbaa !5
  %812 = load ptr, ptr %28, align 8, !tbaa !5
  %813 = load i32, ptr %46, align 4, !tbaa !9
  %814 = sext i32 %813 to i64
  %815 = getelementptr inbounds %struct.doublecomplex, ptr %812, i64 %814
  %816 = load ptr, ptr %29, align 8, !tbaa !5
  %817 = load ptr, ptr %30, align 8, !tbaa !5
  %818 = getelementptr inbounds %struct.doublecomplex, ptr %817, i64 1
  %819 = load ptr, ptr %31, align 8, !tbaa !5
  %820 = load i32, ptr %48, align 4, !tbaa !9
  %821 = sext i32 %820 to i64
  %822 = getelementptr inbounds %struct.doublecomplex, ptr %819, i64 %821
  %823 = load ptr, ptr %32, align 8, !tbaa !5
  %824 = load ptr, ptr %41, align 8, !tbaa !5
  %825 = load i32, ptr %62, align 4, !tbaa !9
  %826 = sext i32 %825 to i64
  %827 = getelementptr inbounds %struct.doublecomplex, ptr %824, i64 %826
  %828 = load ptr, ptr %44, align 8, !tbaa !5
  call void @zhseqr_(ptr noundef @.str.4, ptr noundef @.str, ptr noundef %809, ptr noundef %810, ptr noundef %811, ptr noundef %815, ptr noundef %816, ptr noundef %818, ptr noundef %822, ptr noundef %823, ptr noundef %827, ptr noundef %51, ptr noundef %828)
  %829 = load i32, ptr %79, align 4, !tbaa !9
  %830 = icmp ne i32 %829, 0
  br i1 %830, label %831, label %845

831:                                              ; preds = %768
  %832 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  store i8 66, ptr %832, align 1, !tbaa !16
  %833 = load ptr, ptr %27, align 8, !tbaa !5
  %834 = load ptr, ptr %27, align 8, !tbaa !5
  %835 = load ptr, ptr %31, align 8, !tbaa !5
  %836 = load i32, ptr %48, align 4, !tbaa !9
  %837 = sext i32 %836 to i64
  %838 = getelementptr inbounds %struct.doublecomplex, ptr %835, i64 %837
  %839 = load ptr, ptr %32, align 8, !tbaa !5
  %840 = load ptr, ptr %33, align 8, !tbaa !5
  %841 = load i32, ptr %50, align 4, !tbaa !9
  %842 = sext i32 %841 to i64
  %843 = getelementptr inbounds %struct.doublecomplex, ptr %840, i64 %842
  %844 = load ptr, ptr %34, align 8, !tbaa !5
  call void @zlacpy_(ptr noundef @.str.15, ptr noundef %833, ptr noundef %834, ptr noundef %838, ptr noundef %839, ptr noundef %843, ptr noundef %844)
  br label %845

845:                                              ; preds = %831, %768
  br label %946

846:                                              ; preds = %740
  %847 = load i32, ptr %79, align 4, !tbaa !9
  %848 = icmp ne i32 %847, 0
  br i1 %848, label %849, label %910

849:                                              ; preds = %846
  %850 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  store i8 82, ptr %850, align 1, !tbaa !16
  %851 = load ptr, ptr %27, align 8, !tbaa !5
  %852 = load ptr, ptr %27, align 8, !tbaa !5
  %853 = load ptr, ptr %28, align 8, !tbaa !5
  %854 = load i32, ptr %46, align 4, !tbaa !9
  %855 = sext i32 %854 to i64
  %856 = getelementptr inbounds %struct.doublecomplex, ptr %853, i64 %855
  %857 = load ptr, ptr %29, align 8, !tbaa !5
  %858 = load ptr, ptr %33, align 8, !tbaa !5
  %859 = load i32, ptr %50, align 4, !tbaa !9
  %860 = sext i32 %859 to i64
  %861 = getelementptr inbounds %struct.doublecomplex, ptr %858, i64 %860
  %862 = load ptr, ptr %34, align 8, !tbaa !5
  call void @zlacpy_(ptr noundef @.str.8, ptr noundef %851, ptr noundef %852, ptr noundef %856, ptr noundef %857, ptr noundef %861, ptr noundef %862)
  %863 = load ptr, ptr %42, align 8, !tbaa !5
  %864 = load i32, ptr %863, align 4, !tbaa !9
  %865 = load i32, ptr %62, align 4, !tbaa !9
  %866 = sub nsw i32 %864, %865
  %867 = add nsw i32 %866, 1
  store i32 %867, ptr %51, align 4, !tbaa !9
  %868 = load ptr, ptr %27, align 8, !tbaa !5
  %869 = load ptr, ptr %35, align 8, !tbaa !5
  %870 = load ptr, ptr %36, align 8, !tbaa !5
  %871 = load ptr, ptr %33, align 8, !tbaa !5
  %872 = load i32, ptr %50, align 4, !tbaa !9
  %873 = sext i32 %872 to i64
  %874 = getelementptr inbounds %struct.doublecomplex, ptr %871, i64 %873
  %875 = load ptr, ptr %34, align 8, !tbaa !5
  %876 = load ptr, ptr %41, align 8, !tbaa !5
  %877 = load i32, ptr %61, align 4, !tbaa !9
  %878 = sext i32 %877 to i64
  %879 = getelementptr inbounds %struct.doublecomplex, ptr %876, i64 %878
  %880 = load ptr, ptr %41, align 8, !tbaa !5
  %881 = load i32, ptr %62, align 4, !tbaa !9
  %882 = sext i32 %881 to i64
  %883 = getelementptr inbounds %struct.doublecomplex, ptr %880, i64 %882
  call void @zunghr_(ptr noundef %868, ptr noundef %869, ptr noundef %870, ptr noundef %874, ptr noundef %875, ptr noundef %879, ptr noundef %883, ptr noundef %51, ptr noundef %60)
  %884 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %884, ptr %62, align 4, !tbaa !9
  %885 = load ptr, ptr %42, align 8, !tbaa !5
  %886 = load i32, ptr %885, align 4, !tbaa !9
  %887 = load i32, ptr %62, align 4, !tbaa !9
  %888 = sub nsw i32 %886, %887
  %889 = add nsw i32 %888, 1
  store i32 %889, ptr %51, align 4, !tbaa !9
  %890 = load ptr, ptr %27, align 8, !tbaa !5
  %891 = load ptr, ptr %35, align 8, !tbaa !5
  %892 = load ptr, ptr %36, align 8, !tbaa !5
  %893 = load ptr, ptr %28, align 8, !tbaa !5
  %894 = load i32, ptr %46, align 4, !tbaa !9
  %895 = sext i32 %894 to i64
  %896 = getelementptr inbounds %struct.doublecomplex, ptr %893, i64 %895
  %897 = load ptr, ptr %29, align 8, !tbaa !5
  %898 = load ptr, ptr %30, align 8, !tbaa !5
  %899 = getelementptr inbounds %struct.doublecomplex, ptr %898, i64 1
  %900 = load ptr, ptr %33, align 8, !tbaa !5
  %901 = load i32, ptr %50, align 4, !tbaa !9
  %902 = sext i32 %901 to i64
  %903 = getelementptr inbounds %struct.doublecomplex, ptr %900, i64 %902
  %904 = load ptr, ptr %34, align 8, !tbaa !5
  %905 = load ptr, ptr %41, align 8, !tbaa !5
  %906 = load i32, ptr %62, align 4, !tbaa !9
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds %struct.doublecomplex, ptr %905, i64 %907
  %909 = load ptr, ptr %44, align 8, !tbaa !5
  call void @zhseqr_(ptr noundef @.str.4, ptr noundef @.str, ptr noundef %890, ptr noundef %891, ptr noundef %892, ptr noundef %896, ptr noundef %897, ptr noundef %899, ptr noundef %903, ptr noundef %904, ptr noundef %908, ptr noundef %51, ptr noundef %909)
  br label %945

910:                                              ; preds = %846
  %911 = load i32, ptr %80, align 4, !tbaa !9
  %912 = icmp ne i32 %911, 0
  br i1 %912, label %913, label %915

913:                                              ; preds = %910
  %914 = getelementptr inbounds [1 x i8], ptr %82, i64 0, i64 0
  store i8 69, ptr %914, align 1, !tbaa !16
  br label %917

915:                                              ; preds = %910
  %916 = getelementptr inbounds [1 x i8], ptr %82, i64 0, i64 0
  store i8 83, ptr %916, align 1, !tbaa !16
  br label %917

917:                                              ; preds = %915, %913
  %918 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %918, ptr %62, align 4, !tbaa !9
  %919 = load ptr, ptr %42, align 8, !tbaa !5
  %920 = load i32, ptr %919, align 4, !tbaa !9
  %921 = load i32, ptr %62, align 4, !tbaa !9
  %922 = sub nsw i32 %920, %921
  %923 = add nsw i32 %922, 1
  store i32 %923, ptr %51, align 4, !tbaa !9
  %924 = getelementptr inbounds [1 x i8], ptr %82, i64 0, i64 0
  %925 = load ptr, ptr %27, align 8, !tbaa !5
  %926 = load ptr, ptr %35, align 8, !tbaa !5
  %927 = load ptr, ptr %36, align 8, !tbaa !5
  %928 = load ptr, ptr %28, align 8, !tbaa !5
  %929 = load i32, ptr %46, align 4, !tbaa !9
  %930 = sext i32 %929 to i64
  %931 = getelementptr inbounds %struct.doublecomplex, ptr %928, i64 %930
  %932 = load ptr, ptr %29, align 8, !tbaa !5
  %933 = load ptr, ptr %30, align 8, !tbaa !5
  %934 = getelementptr inbounds %struct.doublecomplex, ptr %933, i64 1
  %935 = load ptr, ptr %33, align 8, !tbaa !5
  %936 = load i32, ptr %50, align 4, !tbaa !9
  %937 = sext i32 %936 to i64
  %938 = getelementptr inbounds %struct.doublecomplex, ptr %935, i64 %937
  %939 = load ptr, ptr %34, align 8, !tbaa !5
  %940 = load ptr, ptr %41, align 8, !tbaa !5
  %941 = load i32, ptr %62, align 4, !tbaa !9
  %942 = sext i32 %941 to i64
  %943 = getelementptr inbounds %struct.doublecomplex, ptr %940, i64 %942
  %944 = load ptr, ptr %44, align 8, !tbaa !5
  call void @zhseqr_(ptr noundef %924, ptr noundef @.str.1, ptr noundef %925, ptr noundef %926, ptr noundef %927, ptr noundef %931, ptr noundef %932, ptr noundef %934, ptr noundef %938, ptr noundef %939, ptr noundef %943, ptr noundef %51, ptr noundef %944)
  br label %945

945:                                              ; preds = %917, %849
  br label %946

946:                                              ; preds = %945, %845
  %947 = load ptr, ptr %44, align 8, !tbaa !5
  %948 = load i32, ptr %947, align 4, !tbaa !9
  %949 = icmp ne i32 %948, 0
  br i1 %949, label %950, label %951

950:                                              ; preds = %946
  br label %1364

951:                                              ; preds = %946
  %952 = load i32, ptr %73, align 4, !tbaa !9
  %953 = icmp ne i32 %952, 0
  br i1 %953, label %957, label %954

954:                                              ; preds = %951
  %955 = load i32, ptr %79, align 4, !tbaa !9
  %956 = icmp ne i32 %955, 0
  br i1 %956, label %957, label %989

957:                                              ; preds = %954, %951
  %958 = load ptr, ptr %42, align 8, !tbaa !5
  %959 = load i32, ptr %958, align 4, !tbaa !9
  %960 = load i32, ptr %62, align 4, !tbaa !9
  %961 = sub nsw i32 %959, %960
  %962 = add nsw i32 %961, 1
  store i32 %962, ptr %51, align 4, !tbaa !9
  %963 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  %964 = getelementptr inbounds [1 x i32], ptr %69, i64 0, i64 0
  %965 = load ptr, ptr %27, align 8, !tbaa !5
  %966 = load ptr, ptr %28, align 8, !tbaa !5
  %967 = load i32, ptr %46, align 4, !tbaa !9
  %968 = sext i32 %967 to i64
  %969 = getelementptr inbounds %struct.doublecomplex, ptr %966, i64 %968
  %970 = load ptr, ptr %29, align 8, !tbaa !5
  %971 = load ptr, ptr %31, align 8, !tbaa !5
  %972 = load i32, ptr %48, align 4, !tbaa !9
  %973 = sext i32 %972 to i64
  %974 = getelementptr inbounds %struct.doublecomplex, ptr %971, i64 %973
  %975 = load ptr, ptr %32, align 8, !tbaa !5
  %976 = load ptr, ptr %33, align 8, !tbaa !5
  %977 = load i32, ptr %50, align 4, !tbaa !9
  %978 = sext i32 %977 to i64
  %979 = getelementptr inbounds %struct.doublecomplex, ptr %976, i64 %978
  %980 = load ptr, ptr %34, align 8, !tbaa !5
  %981 = load ptr, ptr %27, align 8, !tbaa !5
  %982 = load ptr, ptr %41, align 8, !tbaa !5
  %983 = load i32, ptr %62, align 4, !tbaa !9
  %984 = sext i32 %983 to i64
  %985 = getelementptr inbounds %struct.doublecomplex, ptr %982, i64 %984
  %986 = load ptr, ptr %43, align 8, !tbaa !5
  %987 = getelementptr inbounds double, ptr %986, i64 1
  %988 = load ptr, ptr %27, align 8, !tbaa !5
  call void @ztrevc3_(ptr noundef %963, ptr noundef @.str.3, ptr noundef %964, ptr noundef %965, ptr noundef %969, ptr noundef %970, ptr noundef %974, ptr noundef %975, ptr noundef %979, ptr noundef %980, ptr noundef %981, ptr noundef %63, ptr noundef %985, ptr noundef %51, ptr noundef %987, ptr noundef %988, ptr noundef %60)
  br label %989

989:                                              ; preds = %957, %954
  %990 = load i32, ptr %80, align 4, !tbaa !9
  %991 = icmp ne i32 %990, 0
  br i1 %991, label %1023, label %992

992:                                              ; preds = %989
  %993 = load ptr, ptr %26, align 8, !tbaa !5
  %994 = getelementptr inbounds [1 x i32], ptr %69, i64 0, i64 0
  %995 = load ptr, ptr %27, align 8, !tbaa !5
  %996 = load ptr, ptr %28, align 8, !tbaa !5
  %997 = load i32, ptr %46, align 4, !tbaa !9
  %998 = sext i32 %997 to i64
  %999 = getelementptr inbounds %struct.doublecomplex, ptr %996, i64 %998
  %1000 = load ptr, ptr %29, align 8, !tbaa !5
  %1001 = load ptr, ptr %31, align 8, !tbaa !5
  %1002 = load i32, ptr %48, align 4, !tbaa !9
  %1003 = sext i32 %1002 to i64
  %1004 = getelementptr inbounds %struct.doublecomplex, ptr %1001, i64 %1003
  %1005 = load ptr, ptr %32, align 8, !tbaa !5
  %1006 = load ptr, ptr %33, align 8, !tbaa !5
  %1007 = load i32, ptr %50, align 4, !tbaa !9
  %1008 = sext i32 %1007 to i64
  %1009 = getelementptr inbounds %struct.doublecomplex, ptr %1006, i64 %1008
  %1010 = load ptr, ptr %34, align 8, !tbaa !5
  %1011 = load ptr, ptr %39, align 8, !tbaa !5
  %1012 = getelementptr inbounds double, ptr %1011, i64 1
  %1013 = load ptr, ptr %40, align 8, !tbaa !5
  %1014 = getelementptr inbounds double, ptr %1013, i64 1
  %1015 = load ptr, ptr %27, align 8, !tbaa !5
  %1016 = load ptr, ptr %41, align 8, !tbaa !5
  %1017 = load i32, ptr %62, align 4, !tbaa !9
  %1018 = sext i32 %1017 to i64
  %1019 = getelementptr inbounds %struct.doublecomplex, ptr %1016, i64 %1018
  %1020 = load ptr, ptr %27, align 8, !tbaa !5
  %1021 = load ptr, ptr %43, align 8, !tbaa !5
  %1022 = getelementptr inbounds double, ptr %1021, i64 1
  call void @ztrsna_(ptr noundef %993, ptr noundef @.str.16, ptr noundef %994, ptr noundef %995, ptr noundef %999, ptr noundef %1000, ptr noundef %1004, ptr noundef %1005, ptr noundef %1009, ptr noundef %1010, ptr noundef %1012, ptr noundef %1014, ptr noundef %1015, ptr noundef %63, ptr noundef %1019, ptr noundef %1020, ptr noundef %1022, ptr noundef %66)
  br label %1023

1023:                                             ; preds = %992, %989
  %1024 = load i32, ptr %73, align 4, !tbaa !9
  %1025 = icmp ne i32 %1024, 0
  br i1 %1025, label %1026, label %1193

1026:                                             ; preds = %1023
  %1027 = load ptr, ptr %23, align 8, !tbaa !5
  %1028 = load ptr, ptr %27, align 8, !tbaa !5
  %1029 = load ptr, ptr %35, align 8, !tbaa !5
  %1030 = load ptr, ptr %36, align 8, !tbaa !5
  %1031 = load ptr, ptr %37, align 8, !tbaa !5
  %1032 = getelementptr inbounds double, ptr %1031, i64 1
  %1033 = load ptr, ptr %27, align 8, !tbaa !5
  %1034 = load ptr, ptr %31, align 8, !tbaa !5
  %1035 = load i32, ptr %48, align 4, !tbaa !9
  %1036 = sext i32 %1035 to i64
  %1037 = getelementptr inbounds %struct.doublecomplex, ptr %1034, i64 %1036
  %1038 = load ptr, ptr %32, align 8, !tbaa !5
  call void @zgebak_(ptr noundef %1027, ptr noundef @.str.8, ptr noundef %1028, ptr noundef %1029, ptr noundef %1030, ptr noundef %1032, ptr noundef %1033, ptr noundef %1037, ptr noundef %1038, ptr noundef %60)
  %1039 = load ptr, ptr %27, align 8, !tbaa !5
  %1040 = load i32, ptr %1039, align 4, !tbaa !9
  store i32 %1040, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %1041

1041:                                             ; preds = %1189, %1026
  %1042 = load i32, ptr %64, align 4, !tbaa !9
  %1043 = load i32, ptr %51, align 4, !tbaa !9
  %1044 = icmp sle i32 %1042, %1043
  br i1 %1044, label %1045, label %1192

1045:                                             ; preds = %1041
  %1046 = load ptr, ptr %27, align 8, !tbaa !5
  %1047 = load ptr, ptr %31, align 8, !tbaa !5
  %1048 = load i32, ptr %64, align 4, !tbaa !9
  %1049 = load i32, ptr %47, align 4, !tbaa !9
  %1050 = mul nsw i32 %1048, %1049
  %1051 = add nsw i32 %1050, 1
  %1052 = sext i32 %1051 to i64
  %1053 = getelementptr inbounds %struct.doublecomplex, ptr %1047, i64 %1052
  %1054 = call double @dznrm2_(ptr noundef %1046, ptr noundef %1053, ptr noundef @c__1)
  %1055 = fdiv double 1.000000e+00, %1054
  store double %1055, ptr %83, align 8, !tbaa !15
  %1056 = load ptr, ptr %27, align 8, !tbaa !5
  %1057 = load ptr, ptr %31, align 8, !tbaa !5
  %1058 = load i32, ptr %64, align 4, !tbaa !9
  %1059 = load i32, ptr %47, align 4, !tbaa !9
  %1060 = mul nsw i32 %1058, %1059
  %1061 = add nsw i32 %1060, 1
  %1062 = sext i32 %1061 to i64
  %1063 = getelementptr inbounds %struct.doublecomplex, ptr %1057, i64 %1062
  call void @zdscal_(ptr noundef %1056, ptr noundef %83, ptr noundef %1063, ptr noundef @c__1)
  %1064 = load ptr, ptr %27, align 8, !tbaa !5
  %1065 = load i32, ptr %1064, align 4, !tbaa !9
  store i32 %1065, ptr %52, align 4, !tbaa !9
  store i32 1, ptr %65, align 4, !tbaa !9
  br label %1066

1066:                                             ; preds = %1103, %1045
  %1067 = load i32, ptr %65, align 4, !tbaa !9
  %1068 = load i32, ptr %52, align 4, !tbaa !9
  %1069 = icmp sle i32 %1067, %1068
  br i1 %1069, label %1070, label %1106

1070:                                             ; preds = %1066
  %1071 = load i32, ptr %65, align 4, !tbaa !9
  %1072 = load i32, ptr %64, align 4, !tbaa !9
  %1073 = load i32, ptr %47, align 4, !tbaa !9
  %1074 = mul nsw i32 %1072, %1073
  %1075 = add nsw i32 %1071, %1074
  store i32 %1075, ptr %53, align 4, !tbaa !9
  %1076 = load ptr, ptr %31, align 8, !tbaa !5
  %1077 = load i32, ptr %53, align 4, !tbaa !9
  %1078 = sext i32 %1077 to i64
  %1079 = getelementptr inbounds %struct.doublecomplex, ptr %1076, i64 %1078
  %1080 = getelementptr inbounds %struct.doublecomplex, ptr %1079, i32 0, i32 0
  %1081 = load double, ptr %1080, align 8, !tbaa !11
  store double %1081, ptr %54, align 8, !tbaa !15
  %1082 = load ptr, ptr %31, align 8, !tbaa !5
  %1083 = load i32, ptr %65, align 4, !tbaa !9
  %1084 = load i32, ptr %64, align 4, !tbaa !9
  %1085 = load i32, ptr %47, align 4, !tbaa !9
  %1086 = mul nsw i32 %1084, %1085
  %1087 = add nsw i32 %1083, %1086
  %1088 = sext i32 %1087 to i64
  %1089 = getelementptr inbounds %struct.doublecomplex, ptr %1082, i64 %1088
  %1090 = call { double, double } @Cd(ptr noundef %1089)
  %1091 = extractvalue { double, double } %1090, 0
  %1092 = extractvalue { double, double } %1090, 1
  store double %1092, ptr %55, align 8, !tbaa !15
  %1093 = load double, ptr %54, align 8, !tbaa !15
  %1094 = load double, ptr %54, align 8, !tbaa !15
  %1095 = load double, ptr %55, align 8, !tbaa !15
  %1096 = load double, ptr %55, align 8, !tbaa !15
  %1097 = fmul double %1095, %1096
  %1098 = call double @llvm.fmuladd.f64(double %1093, double %1094, double %1097)
  %1099 = load ptr, ptr %43, align 8, !tbaa !5
  %1100 = load i32, ptr %65, align 4, !tbaa !9
  %1101 = sext i32 %1100 to i64
  %1102 = getelementptr inbounds double, ptr %1099, i64 %1101
  store double %1098, ptr %1102, align 8, !tbaa !15
  br label %1103

1103:                                             ; preds = %1070
  %1104 = load i32, ptr %65, align 4, !tbaa !9
  %1105 = add nsw i32 %1104, 1
  store i32 %1105, ptr %65, align 4, !tbaa !9
  br label %1066, !llvm.loop !17

1106:                                             ; preds = %1066
  %1107 = load ptr, ptr %27, align 8, !tbaa !5
  %1108 = load ptr, ptr %43, align 8, !tbaa !5
  %1109 = getelementptr inbounds double, ptr %1108, i64 1
  %1110 = call i32 @idamax_(ptr noundef %1107, ptr noundef %1109, ptr noundef @c__1)
  store i32 %1110, ptr %65, align 4, !tbaa !9
  %1111 = load ptr, ptr %31, align 8, !tbaa !5
  %1112 = load i32, ptr %65, align 4, !tbaa !9
  %1113 = load i32, ptr %64, align 4, !tbaa !9
  %1114 = load i32, ptr %47, align 4, !tbaa !9
  %1115 = mul nsw i32 %1113, %1114
  %1116 = add nsw i32 %1112, %1115
  %1117 = sext i32 %1116 to i64
  %1118 = getelementptr inbounds %struct.doublecomplex, ptr %1111, i64 %1117
  %1119 = call { double, double } @Cd(ptr noundef %1118)
  %1120 = extractvalue { double, double } %1119, 0
  %1121 = extractvalue { double, double } %1119, 1
  %1122 = fneg double %1121
  %1123 = call ptr @_pCd(ptr noundef %57)
  %1124 = getelementptr inbounds { double, double }, ptr %1123, i32 0, i32 0
  %1125 = getelementptr inbounds { double, double }, ptr %1123, i32 0, i32 1
  store double %1120, ptr %1124, align 8
  store double %1122, ptr %1125, align 8
  %1126 = load ptr, ptr %43, align 8, !tbaa !5
  %1127 = load i32, ptr %65, align 4, !tbaa !9
  %1128 = sext i32 %1127 to i64
  %1129 = getelementptr inbounds double, ptr %1126, i64 %1128
  %1130 = load double, ptr %1129, align 8, !tbaa !15
  %1131 = call double @sqrt(double noundef %1130) #6
  store double %1131, ptr %54, align 8, !tbaa !15
  %1132 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %1133 = load double, ptr %1132, align 8, !tbaa !11
  %1134 = load double, ptr %54, align 8, !tbaa !15
  %1135 = fdiv double %1133, %1134
  %1136 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %1135, ptr %1136, align 8, !tbaa !11
  %1137 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %1138 = load double, ptr %1137, align 8, !tbaa !14
  %1139 = load double, ptr %54, align 8, !tbaa !15
  %1140 = fdiv double %1138, %1139
  %1141 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double %1140, ptr %1141, align 8, !tbaa !14
  %1142 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %1143 = load double, ptr %1142, align 8, !tbaa !11
  %1144 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 0
  store double %1143, ptr %1144, align 8, !tbaa !11
  %1145 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %1146 = load double, ptr %1145, align 8, !tbaa !14
  %1147 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 1
  store double %1146, ptr %1147, align 8, !tbaa !14
  %1148 = load ptr, ptr %27, align 8, !tbaa !5
  %1149 = load ptr, ptr %31, align 8, !tbaa !5
  %1150 = load i32, ptr %64, align 4, !tbaa !9
  %1151 = load i32, ptr %47, align 4, !tbaa !9
  %1152 = mul nsw i32 %1150, %1151
  %1153 = add nsw i32 %1152, 1
  %1154 = sext i32 %1153 to i64
  %1155 = getelementptr inbounds %struct.doublecomplex, ptr %1149, i64 %1154
  call void @zscal_(ptr noundef %1148, ptr noundef %86, ptr noundef %1155, ptr noundef @c__1)
  %1156 = load i32, ptr %65, align 4, !tbaa !9
  %1157 = load i32, ptr %64, align 4, !tbaa !9
  %1158 = load i32, ptr %47, align 4, !tbaa !9
  %1159 = mul nsw i32 %1157, %1158
  %1160 = add nsw i32 %1156, %1159
  store i32 %1160, ptr %52, align 4, !tbaa !9
  %1161 = load i32, ptr %65, align 4, !tbaa !9
  %1162 = load i32, ptr %64, align 4, !tbaa !9
  %1163 = load i32, ptr %47, align 4, !tbaa !9
  %1164 = mul nsw i32 %1162, %1163
  %1165 = add nsw i32 %1161, %1164
  store i32 %1165, ptr %53, align 4, !tbaa !9
  %1166 = load ptr, ptr %31, align 8, !tbaa !5
  %1167 = load i32, ptr %53, align 4, !tbaa !9
  %1168 = sext i32 %1167 to i64
  %1169 = getelementptr inbounds %struct.doublecomplex, ptr %1166, i64 %1168
  %1170 = getelementptr inbounds %struct.doublecomplex, ptr %1169, i32 0, i32 0
  %1171 = load double, ptr %1170, align 8, !tbaa !11
  store double %1171, ptr %54, align 8, !tbaa !15
  %1172 = load double, ptr %54, align 8, !tbaa !15
  %1173 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %1172, ptr %1173, align 8, !tbaa !11
  %1174 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double 0.000000e+00, ptr %1174, align 8, !tbaa !14
  %1175 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %1176 = load double, ptr %1175, align 8, !tbaa !11
  %1177 = load ptr, ptr %31, align 8, !tbaa !5
  %1178 = load i32, ptr %52, align 4, !tbaa !9
  %1179 = sext i32 %1178 to i64
  %1180 = getelementptr inbounds %struct.doublecomplex, ptr %1177, i64 %1179
  %1181 = getelementptr inbounds %struct.doublecomplex, ptr %1180, i32 0, i32 0
  store double %1176, ptr %1181, align 8, !tbaa !11
  %1182 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %1183 = load double, ptr %1182, align 8, !tbaa !14
  %1184 = load ptr, ptr %31, align 8, !tbaa !5
  %1185 = load i32, ptr %52, align 4, !tbaa !9
  %1186 = sext i32 %1185 to i64
  %1187 = getelementptr inbounds %struct.doublecomplex, ptr %1184, i64 %1186
  %1188 = getelementptr inbounds %struct.doublecomplex, ptr %1187, i32 0, i32 1
  store double %1183, ptr %1188, align 8, !tbaa !14
  br label %1189

1189:                                             ; preds = %1106
  %1190 = load i32, ptr %64, align 4, !tbaa !9
  %1191 = add nsw i32 %1190, 1
  store i32 %1191, ptr %64, align 4, !tbaa !9
  br label %1041, !llvm.loop !19

1192:                                             ; preds = %1041
  br label %1193

1193:                                             ; preds = %1192, %1023
  %1194 = load i32, ptr %79, align 4, !tbaa !9
  %1195 = icmp ne i32 %1194, 0
  br i1 %1195, label %1196, label %1363

1196:                                             ; preds = %1193
  %1197 = load ptr, ptr %23, align 8, !tbaa !5
  %1198 = load ptr, ptr %27, align 8, !tbaa !5
  %1199 = load ptr, ptr %35, align 8, !tbaa !5
  %1200 = load ptr, ptr %36, align 8, !tbaa !5
  %1201 = load ptr, ptr %37, align 8, !tbaa !5
  %1202 = getelementptr inbounds double, ptr %1201, i64 1
  %1203 = load ptr, ptr %27, align 8, !tbaa !5
  %1204 = load ptr, ptr %33, align 8, !tbaa !5
  %1205 = load i32, ptr %50, align 4, !tbaa !9
  %1206 = sext i32 %1205 to i64
  %1207 = getelementptr inbounds %struct.doublecomplex, ptr %1204, i64 %1206
  %1208 = load ptr, ptr %34, align 8, !tbaa !5
  call void @zgebak_(ptr noundef %1197, ptr noundef @.str.9, ptr noundef %1198, ptr noundef %1199, ptr noundef %1200, ptr noundef %1202, ptr noundef %1203, ptr noundef %1207, ptr noundef %1208, ptr noundef %60)
  %1209 = load ptr, ptr %27, align 8, !tbaa !5
  %1210 = load i32, ptr %1209, align 4, !tbaa !9
  store i32 %1210, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %1211

1211:                                             ; preds = %1359, %1196
  %1212 = load i32, ptr %64, align 4, !tbaa !9
  %1213 = load i32, ptr %51, align 4, !tbaa !9
  %1214 = icmp sle i32 %1212, %1213
  br i1 %1214, label %1215, label %1362

1215:                                             ; preds = %1211
  %1216 = load ptr, ptr %27, align 8, !tbaa !5
  %1217 = load ptr, ptr %33, align 8, !tbaa !5
  %1218 = load i32, ptr %64, align 4, !tbaa !9
  %1219 = load i32, ptr %49, align 4, !tbaa !9
  %1220 = mul nsw i32 %1218, %1219
  %1221 = add nsw i32 %1220, 1
  %1222 = sext i32 %1221 to i64
  %1223 = getelementptr inbounds %struct.doublecomplex, ptr %1217, i64 %1222
  %1224 = call double @dznrm2_(ptr noundef %1216, ptr noundef %1223, ptr noundef @c__1)
  %1225 = fdiv double 1.000000e+00, %1224
  store double %1225, ptr %83, align 8, !tbaa !15
  %1226 = load ptr, ptr %27, align 8, !tbaa !5
  %1227 = load ptr, ptr %33, align 8, !tbaa !5
  %1228 = load i32, ptr %64, align 4, !tbaa !9
  %1229 = load i32, ptr %49, align 4, !tbaa !9
  %1230 = mul nsw i32 %1228, %1229
  %1231 = add nsw i32 %1230, 1
  %1232 = sext i32 %1231 to i64
  %1233 = getelementptr inbounds %struct.doublecomplex, ptr %1227, i64 %1232
  call void @zdscal_(ptr noundef %1226, ptr noundef %83, ptr noundef %1233, ptr noundef @c__1)
  %1234 = load ptr, ptr %27, align 8, !tbaa !5
  %1235 = load i32, ptr %1234, align 4, !tbaa !9
  store i32 %1235, ptr %52, align 4, !tbaa !9
  store i32 1, ptr %65, align 4, !tbaa !9
  br label %1236

1236:                                             ; preds = %1273, %1215
  %1237 = load i32, ptr %65, align 4, !tbaa !9
  %1238 = load i32, ptr %52, align 4, !tbaa !9
  %1239 = icmp sle i32 %1237, %1238
  br i1 %1239, label %1240, label %1276

1240:                                             ; preds = %1236
  %1241 = load i32, ptr %65, align 4, !tbaa !9
  %1242 = load i32, ptr %64, align 4, !tbaa !9
  %1243 = load i32, ptr %49, align 4, !tbaa !9
  %1244 = mul nsw i32 %1242, %1243
  %1245 = add nsw i32 %1241, %1244
  store i32 %1245, ptr %53, align 4, !tbaa !9
  %1246 = load ptr, ptr %33, align 8, !tbaa !5
  %1247 = load i32, ptr %53, align 4, !tbaa !9
  %1248 = sext i32 %1247 to i64
  %1249 = getelementptr inbounds %struct.doublecomplex, ptr %1246, i64 %1248
  %1250 = getelementptr inbounds %struct.doublecomplex, ptr %1249, i32 0, i32 0
  %1251 = load double, ptr %1250, align 8, !tbaa !11
  store double %1251, ptr %54, align 8, !tbaa !15
  %1252 = load ptr, ptr %33, align 8, !tbaa !5
  %1253 = load i32, ptr %65, align 4, !tbaa !9
  %1254 = load i32, ptr %64, align 4, !tbaa !9
  %1255 = load i32, ptr %49, align 4, !tbaa !9
  %1256 = mul nsw i32 %1254, %1255
  %1257 = add nsw i32 %1253, %1256
  %1258 = sext i32 %1257 to i64
  %1259 = getelementptr inbounds %struct.doublecomplex, ptr %1252, i64 %1258
  %1260 = call { double, double } @Cd(ptr noundef %1259)
  %1261 = extractvalue { double, double } %1260, 0
  %1262 = extractvalue { double, double } %1260, 1
  store double %1262, ptr %55, align 8, !tbaa !15
  %1263 = load double, ptr %54, align 8, !tbaa !15
  %1264 = load double, ptr %54, align 8, !tbaa !15
  %1265 = load double, ptr %55, align 8, !tbaa !15
  %1266 = load double, ptr %55, align 8, !tbaa !15
  %1267 = fmul double %1265, %1266
  %1268 = call double @llvm.fmuladd.f64(double %1263, double %1264, double %1267)
  %1269 = load ptr, ptr %43, align 8, !tbaa !5
  %1270 = load i32, ptr %65, align 4, !tbaa !9
  %1271 = sext i32 %1270 to i64
  %1272 = getelementptr inbounds double, ptr %1269, i64 %1271
  store double %1268, ptr %1272, align 8, !tbaa !15
  br label %1273

1273:                                             ; preds = %1240
  %1274 = load i32, ptr %65, align 4, !tbaa !9
  %1275 = add nsw i32 %1274, 1
  store i32 %1275, ptr %65, align 4, !tbaa !9
  br label %1236, !llvm.loop !20

1276:                                             ; preds = %1236
  %1277 = load ptr, ptr %27, align 8, !tbaa !5
  %1278 = load ptr, ptr %43, align 8, !tbaa !5
  %1279 = getelementptr inbounds double, ptr %1278, i64 1
  %1280 = call i32 @idamax_(ptr noundef %1277, ptr noundef %1279, ptr noundef @c__1)
  store i32 %1280, ptr %65, align 4, !tbaa !9
  %1281 = load ptr, ptr %33, align 8, !tbaa !5
  %1282 = load i32, ptr %65, align 4, !tbaa !9
  %1283 = load i32, ptr %64, align 4, !tbaa !9
  %1284 = load i32, ptr %49, align 4, !tbaa !9
  %1285 = mul nsw i32 %1283, %1284
  %1286 = add nsw i32 %1282, %1285
  %1287 = sext i32 %1286 to i64
  %1288 = getelementptr inbounds %struct.doublecomplex, ptr %1281, i64 %1287
  %1289 = call { double, double } @Cd(ptr noundef %1288)
  %1290 = extractvalue { double, double } %1289, 0
  %1291 = extractvalue { double, double } %1289, 1
  %1292 = fneg double %1291
  %1293 = call ptr @_pCd(ptr noundef %57)
  %1294 = getelementptr inbounds { double, double }, ptr %1293, i32 0, i32 0
  %1295 = getelementptr inbounds { double, double }, ptr %1293, i32 0, i32 1
  store double %1290, ptr %1294, align 8
  store double %1292, ptr %1295, align 8
  %1296 = load ptr, ptr %43, align 8, !tbaa !5
  %1297 = load i32, ptr %65, align 4, !tbaa !9
  %1298 = sext i32 %1297 to i64
  %1299 = getelementptr inbounds double, ptr %1296, i64 %1298
  %1300 = load double, ptr %1299, align 8, !tbaa !15
  %1301 = call double @sqrt(double noundef %1300) #6
  store double %1301, ptr %54, align 8, !tbaa !15
  %1302 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %1303 = load double, ptr %1302, align 8, !tbaa !11
  %1304 = load double, ptr %54, align 8, !tbaa !15
  %1305 = fdiv double %1303, %1304
  %1306 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %1305, ptr %1306, align 8, !tbaa !11
  %1307 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %1308 = load double, ptr %1307, align 8, !tbaa !14
  %1309 = load double, ptr %54, align 8, !tbaa !15
  %1310 = fdiv double %1308, %1309
  %1311 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double %1310, ptr %1311, align 8, !tbaa !14
  %1312 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %1313 = load double, ptr %1312, align 8, !tbaa !11
  %1314 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 0
  store double %1313, ptr %1314, align 8, !tbaa !11
  %1315 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %1316 = load double, ptr %1315, align 8, !tbaa !14
  %1317 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 1
  store double %1316, ptr %1317, align 8, !tbaa !14
  %1318 = load ptr, ptr %27, align 8, !tbaa !5
  %1319 = load ptr, ptr %33, align 8, !tbaa !5
  %1320 = load i32, ptr %64, align 4, !tbaa !9
  %1321 = load i32, ptr %49, align 4, !tbaa !9
  %1322 = mul nsw i32 %1320, %1321
  %1323 = add nsw i32 %1322, 1
  %1324 = sext i32 %1323 to i64
  %1325 = getelementptr inbounds %struct.doublecomplex, ptr %1319, i64 %1324
  call void @zscal_(ptr noundef %1318, ptr noundef %86, ptr noundef %1325, ptr noundef @c__1)
  %1326 = load i32, ptr %65, align 4, !tbaa !9
  %1327 = load i32, ptr %64, align 4, !tbaa !9
  %1328 = load i32, ptr %49, align 4, !tbaa !9
  %1329 = mul nsw i32 %1327, %1328
  %1330 = add nsw i32 %1326, %1329
  store i32 %1330, ptr %52, align 4, !tbaa !9
  %1331 = load i32, ptr %65, align 4, !tbaa !9
  %1332 = load i32, ptr %64, align 4, !tbaa !9
  %1333 = load i32, ptr %49, align 4, !tbaa !9
  %1334 = mul nsw i32 %1332, %1333
  %1335 = add nsw i32 %1331, %1334
  store i32 %1335, ptr %53, align 4, !tbaa !9
  %1336 = load ptr, ptr %33, align 8, !tbaa !5
  %1337 = load i32, ptr %53, align 4, !tbaa !9
  %1338 = sext i32 %1337 to i64
  %1339 = getelementptr inbounds %struct.doublecomplex, ptr %1336, i64 %1338
  %1340 = getelementptr inbounds %struct.doublecomplex, ptr %1339, i32 0, i32 0
  %1341 = load double, ptr %1340, align 8, !tbaa !11
  store double %1341, ptr %54, align 8, !tbaa !15
  %1342 = load double, ptr %54, align 8, !tbaa !15
  %1343 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %1342, ptr %1343, align 8, !tbaa !11
  %1344 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double 0.000000e+00, ptr %1344, align 8, !tbaa !14
  %1345 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %1346 = load double, ptr %1345, align 8, !tbaa !11
  %1347 = load ptr, ptr %33, align 8, !tbaa !5
  %1348 = load i32, ptr %52, align 4, !tbaa !9
  %1349 = sext i32 %1348 to i64
  %1350 = getelementptr inbounds %struct.doublecomplex, ptr %1347, i64 %1349
  %1351 = getelementptr inbounds %struct.doublecomplex, ptr %1350, i32 0, i32 0
  store double %1346, ptr %1351, align 8, !tbaa !11
  %1352 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %1353 = load double, ptr %1352, align 8, !tbaa !14
  %1354 = load ptr, ptr %33, align 8, !tbaa !5
  %1355 = load i32, ptr %52, align 4, !tbaa !9
  %1356 = sext i32 %1355 to i64
  %1357 = getelementptr inbounds %struct.doublecomplex, ptr %1354, i64 %1356
  %1358 = getelementptr inbounds %struct.doublecomplex, ptr %1357, i32 0, i32 1
  store double %1353, ptr %1358, align 8, !tbaa !14
  br label %1359

1359:                                             ; preds = %1276
  %1360 = load i32, ptr %64, align 4, !tbaa !9
  %1361 = add nsw i32 %1360, 1
  store i32 %1361, ptr %64, align 4, !tbaa !9
  br label %1211, !llvm.loop !21

1362:                                             ; preds = %1211
  br label %1363

1363:                                             ; preds = %1362, %1193
  br label %1364

1364:                                             ; preds = %1363, %950
  %1365 = load i32, ptr %67, align 4, !tbaa !9
  %1366 = icmp ne i32 %1365, 0
  br i1 %1366, label %1367, label %1417

1367:                                             ; preds = %1364
  %1368 = load ptr, ptr %27, align 8, !tbaa !5
  %1369 = load i32, ptr %1368, align 4, !tbaa !9
  %1370 = load ptr, ptr %44, align 8, !tbaa !5
  %1371 = load i32, ptr %1370, align 4, !tbaa !9
  %1372 = sub nsw i32 %1369, %1371
  store i32 %1372, ptr %51, align 4, !tbaa !9
  %1373 = load ptr, ptr %27, align 8, !tbaa !5
  %1374 = load i32, ptr %1373, align 4, !tbaa !9
  %1375 = load ptr, ptr %44, align 8, !tbaa !5
  %1376 = load i32, ptr %1375, align 4, !tbaa !9
  %1377 = sub nsw i32 %1374, %1376
  store i32 %1377, ptr %53, align 4, !tbaa !9
  %1378 = load i32, ptr %53, align 4, !tbaa !9
  %1379 = icmp sge i32 %1378, 1
  br i1 %1379, label %1380, label %1382

1380:                                             ; preds = %1367
  %1381 = load i32, ptr %53, align 4, !tbaa !9
  br label %1383

1382:                                             ; preds = %1367
  br label %1383

1383:                                             ; preds = %1382, %1380
  %1384 = phi i32 [ %1381, %1380 ], [ 1, %1382 ]
  store i32 %1384, ptr %52, align 4, !tbaa !9
  %1385 = load ptr, ptr %30, align 8, !tbaa !5
  %1386 = load ptr, ptr %44, align 8, !tbaa !5
  %1387 = load i32, ptr %1386, align 4, !tbaa !9
  %1388 = add nsw i32 %1387, 1
  %1389 = sext i32 %1388 to i64
  %1390 = getelementptr inbounds %struct.doublecomplex, ptr %1385, i64 %1389
  call void @zlascl_(ptr noundef @.str.13, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %68, ptr noundef %59, ptr noundef %51, ptr noundef @c__1, ptr noundef %1390, ptr noundef %52, ptr noundef %60)
  %1391 = load ptr, ptr %44, align 8, !tbaa !5
  %1392 = load i32, ptr %1391, align 4, !tbaa !9
  %1393 = icmp eq i32 %1392, 0
  br i1 %1393, label %1394, label %1409

1394:                                             ; preds = %1383
  %1395 = load i32, ptr %81, align 4, !tbaa !9
  %1396 = icmp ne i32 %1395, 0
  br i1 %1396, label %1400, label %1397

1397:                                             ; preds = %1394
  %1398 = load i32, ptr %74, align 4, !tbaa !9
  %1399 = icmp ne i32 %1398, 0
  br i1 %1399, label %1400, label %1408

1400:                                             ; preds = %1397, %1394
  %1401 = load i32, ptr %66, align 4, !tbaa !9
  %1402 = icmp eq i32 %1401, 0
  br i1 %1402, label %1403, label %1408

1403:                                             ; preds = %1400
  %1404 = load ptr, ptr %27, align 8, !tbaa !5
  %1405 = load ptr, ptr %40, align 8, !tbaa !5
  %1406 = getelementptr inbounds double, ptr %1405, i64 1
  %1407 = load ptr, ptr %27, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.13, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %68, ptr noundef %59, ptr noundef %1404, ptr noundef @c__1, ptr noundef %1406, ptr noundef %1407, ptr noundef %60)
  br label %1408

1408:                                             ; preds = %1403, %1400, %1397
  br label %1416

1409:                                             ; preds = %1383
  %1410 = load ptr, ptr %35, align 8, !tbaa !5
  %1411 = load i32, ptr %1410, align 4, !tbaa !9
  %1412 = sub nsw i32 %1411, 1
  store i32 %1412, ptr %51, align 4, !tbaa !9
  %1413 = load ptr, ptr %30, align 8, !tbaa !5
  %1414 = getelementptr inbounds %struct.doublecomplex, ptr %1413, i64 1
  %1415 = load ptr, ptr %27, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.13, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %68, ptr noundef %59, ptr noundef %51, ptr noundef @c__1, ptr noundef %1414, ptr noundef %1415, ptr noundef %60)
  br label %1416

1416:                                             ; preds = %1409, %1408
  br label %1417

1417:                                             ; preds = %1416, %1364
  %1418 = load i32, ptr %72, align 4, !tbaa !9
  %1419 = sitofp i32 %1418 to double
  %1420 = load ptr, ptr %41, align 8, !tbaa !5
  %1421 = getelementptr inbounds %struct.doublecomplex, ptr %1420, i64 1
  %1422 = getelementptr inbounds %struct.doublecomplex, ptr %1421, i32 0, i32 0
  store double %1419, ptr %1422, align 8, !tbaa !11
  %1423 = load ptr, ptr %41, align 8, !tbaa !5
  %1424 = getelementptr inbounds %struct.doublecomplex, ptr %1423, i64 1
  %1425 = getelementptr inbounds %struct.doublecomplex, ptr %1424, i32 0, i32 1
  store double 0.000000e+00, ptr %1425, align 8, !tbaa !14
  store i32 1, ptr %88, align 4
  br label %1426

1426:                                             ; preds = %1417, %661, %655, %647
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %86) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #6
  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 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #2

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden { double, double } @Cd(ptr noundef) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #5

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden ptr @_pCd(ptr noundef) #4

declare void @zscal_(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 = { inlinehint 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 #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = !{!"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, !13, i64 0}
!12 = !{!"", !13, i64 0, !13, i64 8}
!13 = !{!"double", !7, i64 0}
!14 = !{!12, !13, i64 8}
!15 = !{!13, !13, i64 0}
!16 = !{!7, !7, i64 0}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = distinct !{!19, !18}
!20 = distinct !{!20, !18}
!21 = distinct !{!21, !18}


; 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 [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i32, align 4
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [2 x i8], align 1

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

57:                                               ; preds = %22
  %58 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #7
  %.not591 = icmp eq i32 %58, 0
  br i1 %.not591, label %59, label %63

59:                                               ; preds = %57
  %60 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.5) #7
  %.not592 = icmp eq i32 %60, 0
  br i1 %.not592, label %61, label %63

61:                                               ; preds = %59
  %62 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #7
  %.not593 = icmp eq i32 %62, 0
  br i1 %.not593, label %.thread633.sink.split, label %63

63:                                               ; preds = %61, %59, %57, %22
  %64 = icmp ne i32 %50, 0
  br i1 %64, label %67, label %65

65:                                               ; preds = %63
  %66 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #7
  %.not594 = icmp eq i32 %66, 0
  br i1 %.not594, label %.thread633.sink.split, label %67

67:                                               ; preds = %65, %63
  %68 = icmp ne i32 %51, 0
  br i1 %68, label %71, label %69

69:                                               ; preds = %67
  %70 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #7
  %.not595 = icmp eq i32 %70, 0
  br i1 %.not595, label %.thread633.sink.split, label %71

71:                                               ; preds = %69, %67
  %72 = icmp ne i32 %52, 0
  %73 = icmp ne i32 %53, 0
  %or.cond = select i1 %72, i1 true, i1 %73
  %74 = icmp ne i32 %55, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %74
  %75 = icmp ne i32 %54, 0
  %or.cond5 = select i1 %or.cond3, i1 true, i1 %75
  br i1 %or.cond5, label %76, label %.thread633.sink.split

76:                                               ; preds = %71
  %or.cond7 = select i1 %73, i1 true, i1 %74
  %or.cond7.not = xor i1 %or.cond7, true
  %or.cond9 = and i1 %64, %68
  %or.cond621 = or i1 %or.cond9, %or.cond7.not
  br i1 %or.cond621, label %77, label %.thread633.sink.split

77:                                               ; preds = %76
  %78 = load i32, ptr %4, align 4, !tbaa !5
  %79 = icmp slt i32 %78, 0
  br i1 %79, label %.thread633.sink.split, label %80

80:                                               ; preds = %77
  %81 = load i32, ptr %6, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %78, i32 1)
  %82 = icmp slt i32 %81, %spec.select
  br i1 %82, label %.thread633.sink.split, label %83

83:                                               ; preds = %80
  %84 = load i32, ptr %9, align 4, !tbaa !5
  %85 = icmp slt i32 %84, 1
  %86 = icmp ult i32 %84, %78
  %or.cond644 = and i1 %64, %86
  %or.cond646 = or i1 %85, %or.cond644
  br i1 %or.cond646, label %.thread633.sink.split, label %87

87:                                               ; preds = %83
  %88 = load i32, ptr %11, align 4, !tbaa !5
  %89 = icmp slt i32 %88, 1
  %90 = icmp ult i32 %88, %78
  %or.cond645 = and i1 %68, %90
  %or.cond647 = or i1 %89, %or.cond645
  br i1 %or.cond647, label %.thread633.sink.split, label %91

91:                                               ; preds = %87
  %.pr = load i32, ptr %21, align 4, !tbaa !5
  %92 = icmp eq i32 %.pr, 0
  br i1 %92, label %93, label %.thread633

93:                                               ; preds = %91
  %94 = icmp eq i32 %78, 0
  br i1 %94, label %146, label %95

95:                                               ; preds = %93
  %96 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef nonnull @c__0, i32 noundef 6, i32 noundef 1) #7
  %97 = add i32 %96, 1
  %98 = mul i32 %97, %78
  %.not648 = icmp eq i32 %50, 0
  br i1 %.not648, label %103, label %99

99:                                               ; preds = %95
  call void @ztrevc3_(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.3, ptr noundef nonnull %32, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %4, ptr noundef nonnull %29, ptr noundef %18, ptr noundef nonnull @c_n1, ptr noundef %20, ptr noundef nonnull @c_n1, ptr noundef nonnull %28) #7
  %100 = load double, ptr %18, align 8, !tbaa !9
  %101 = fptosi double %100 to i32
  %102 = call i32 @llvm.smax.i32(i32 %98, i32 %101)
  call void @zhseqr_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %18, ptr noundef nonnull @c_n1, ptr noundef nonnull %21) #7
  br label %.thread623

103:                                              ; preds = %95
  %.not596 = icmp eq i32 %51, 0
  br i1 %.not596, label %108, label %104

104:                                              ; preds = %103
  call void @ztrevc3_(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.3, ptr noundef nonnull %32, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %4, ptr noundef nonnull %29, ptr noundef %18, ptr noundef nonnull @c_n1, ptr noundef %20, ptr noundef nonnull @c_n1, ptr noundef nonnull %28) #7
  %105 = load double, ptr %18, align 8, !tbaa !9
  %106 = fptosi double %105 to i32
  %107 = call i32 @llvm.smax.i32(i32 %98, i32 %106)
  call void @zhseqr_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %18, ptr noundef nonnull @c_n1, ptr noundef nonnull %21) #7
  br label %.thread623

108:                                              ; preds = %103
  %.not597 = icmp eq i32 %52, 0
  %.str.4..str.2 = select i1 %.not597, ptr @.str.4, ptr @.str.2
  tail call void @zhseqr_(ptr noundef nonnull %.str.4..str.2, ptr noundef nonnull @.str.1, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %18, ptr noundef nonnull @c_n1, ptr noundef nonnull %21) #7
  %109 = load double, ptr %18, align 8, !tbaa !9
  %110 = fptosi double %109 to i32
  %111 = load i32, ptr %4, align 4, !tbaa !5
  %112 = shl i32 %111, 1
  br i1 %or.cond, label %.thread627, label %118

.thread623:                                       ; preds = %99, %104
  %.0.ph = phi i32 [ %107, %104 ], [ %102, %99 ]
  %113 = load double, ptr %18, align 8, !tbaa !9
  %114 = fptosi double %113 to i32
  %115 = load i32, ptr %4, align 4, !tbaa !5
  %116 = shl i32 %115, 1
  br i1 %or.cond, label %128, label %124

.thread627:                                       ; preds = %108
  %117 = tail call i32 @llvm.smax.i32(i32 %98, i32 %110)
  br label %143

118:                                              ; preds = %108
  %119 = add i32 %111, 2
  %120 = mul i32 %119, %111
  %121 = tail call i32 @llvm.smax.i32(i32 %112, i32 %120)
  %122 = tail call i32 @llvm.smax.i32(i32 %98, i32 %110)
  store i32 %122, ptr %23, align 4, !tbaa !5
  store i32 %120, ptr %24, align 4, !tbaa !5
  %123 = tail call i32 @llvm.smax.i32(i32 %122, i32 %120)
  br label %143

124:                                              ; preds = %.thread623
  %125 = add i32 %115, 2
  %126 = mul i32 %125, %115
  %127 = call i32 @llvm.smax.i32(i32 %116, i32 %126)
  br label %128

128:                                              ; preds = %124, %.thread623
  %.1574 = phi i32 [ %116, %.thread623 ], [ %127, %124 ]
  %129 = call i32 @llvm.smax.i32(i32 %.0.ph, i32 %114)
  store i32 %129, ptr %23, align 4, !tbaa !5
  %130 = add nsw i32 %115, -1
  %131 = call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.7, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #7
  %132 = mul nsw i32 %131, %130
  %133 = add nsw i32 %132, %115
  %134 = load i32, ptr %23, align 4
  %135 = call i32 @llvm.smax.i32(i32 %134, i32 %133)
  %.pre = load i32, ptr %4, align 4, !tbaa !5
  br i1 %or.cond, label %140, label %136

136:                                              ; preds = %128
  %137 = add i32 %.pre, 2
  %138 = mul i32 %137, %.pre
  %139 = call i32 @llvm.smax.i32(i32 %135, i32 %138)
  br label %140

140:                                              ; preds = %136, %128
  %.1 = phi i32 [ %135, %128 ], [ %139, %136 ]
  store i32 %.1, ptr %23, align 4, !tbaa !5
  %141 = shl i32 %.pre, 1
  store i32 %141, ptr %24, align 4, !tbaa !5
  %142 = call i32 @llvm.smax.i32(i32 %.1, i32 %141)
  br label %143

143:                                              ; preds = %.thread627, %118, %140
  %144 = phi i32 [ %.pre, %140 ], [ %111, %118 ], [ %111, %.thread627 ]
  %.2575 = phi i32 [ %.1574, %140 ], [ %121, %118 ], [ %112, %.thread627 ]
  %.2 = phi i32 [ %142, %140 ], [ %123, %118 ], [ %117, %.thread627 ]
  %145 = call i32 @llvm.smax.i32(i32 %.2, i32 %.2575)
  br label %146

146:                                              ; preds = %93, %143
  %147 = phi i32 [ %144, %143 ], [ 0, %93 ]
  %.3576 = phi i32 [ %.2575, %143 ], [ 1, %93 ]
  %.3 = phi i32 [ %145, %143 ], [ 1, %93 ]
  %148 = sitofp i32 %.3 to double
  store double %148, ptr %18, align 8, !tbaa !9
  %149 = getelementptr inbounds i8, ptr %18, i64 8
  store double 0.000000e+00, ptr %149, align 8, !tbaa !12
  %150 = load i32, ptr %19, align 4, !tbaa !5
  %151 = icmp sge i32 %150, %.3576
  %or.cond21 = select i1 %151, i1 true, i1 %49
  br i1 %or.cond21, label %.thread, label %.thread633.sink.split

.thread:                                          ; preds = %146
  %.pr630.pr = load i32, ptr %21, align 4, !tbaa !5
  %.not609 = icmp eq i32 %.pr630.pr, 0
  br i1 %.not609, label %155, label %.thread633

.thread633.sink.split:                            ; preds = %146, %87, %83, %80, %77, %71, %76, %69, %65, %61
  %.sink = phi i32 [ -1, %61 ], [ -2, %65 ], [ -3, %69 ], [ -4, %76 ], [ -4, %71 ], [ -5, %77 ], [ -7, %80 ], [ -10, %83 ], [ -12, %87 ], [ -20, %146 ]
  store i32 %.sink, ptr %21, align 4, !tbaa !5
  br label %.thread633

.thread633:                                       ; preds = %.thread633.sink.split, %91, %.thread
  %152 = phi i32 [ %.pr630.pr, %.thread ], [ %.pr, %91 ], [ %.sink, %.thread633.sink.split ]
  %153 = sub nsw i32 0, %152
  store i32 %153, ptr %23, align 4, !tbaa !5
  %154 = call i32 @xerbla_(ptr noundef nonnull @.str.11, ptr noundef nonnull %23, i32 noundef 6) #7
  br label %297

155:                                              ; preds = %.thread
  %156 = icmp eq i32 %147, 0
  %or.cond683 = select i1 %49, i1 true, i1 %156
  br i1 %or.cond683, label %297, label %157

157:                                              ; preds = %155
  %158 = call double @dlamch_(ptr noundef nonnull @.str.5) #7
  %159 = call double @dlamch_(ptr noundef nonnull @.str.4) #7
  store double %159, ptr %34, align 8, !tbaa !13
  %160 = fdiv double 1.000000e+00, %159
  store double %160, ptr %33, align 8, !tbaa !13
  call void @dlabad_(ptr noundef nonnull %34, ptr noundef nonnull %33) #7
  %161 = load double, ptr %34, align 8, !tbaa !13
  %162 = call double @sqrt(double noundef %161) #7
  %163 = fdiv double %162, %158
  store double %163, ptr %34, align 8, !tbaa !13
  %164 = fdiv double 1.000000e+00, %163
  store double %164, ptr %33, align 8, !tbaa !13
  store i32 0, ptr %30, align 4, !tbaa !5
  %165 = call double @zlange_(ptr noundef nonnull @.str.12, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %37) #7
  store double %165, ptr %27, align 8, !tbaa !13
  %166 = fcmp ogt double %165, 0.000000e+00
  %167 = load double, ptr %34, align 8
  %168 = fcmp olt double %165, %167
  %or.cond650 = select i1 %166, i1 %168, i1 false
  br i1 %or.cond650, label %172, label %169

169:                                              ; preds = %157
  %170 = load double, ptr %33, align 8, !tbaa !13
  %171 = fcmp ogt double %165, %170
  br i1 %171, label %172, label %173

172:                                              ; preds = %157, %169
  %storemerge = phi double [ %170, %169 ], [ %167, %157 ]
  store double %storemerge, ptr %31, align 8, !tbaa !13
  call void @zlascl_(ptr noundef nonnull @.str.13, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %27, ptr noundef nonnull %31, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %28) #7
  br label %173

173:                                              ; preds = %169, %172
  %.not610640 = phi i1 [ false, %172 ], [ true, %169 ]
  call void @zgebal_(ptr noundef %0, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef nonnull %28) #7
  %174 = call double @zlange_(ptr noundef nonnull @.str.14, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %37) #7
  store double %174, ptr %15, align 8, !tbaa !13
  br i1 %.not610640, label %177, label %175

175:                                              ; preds = %173
  store double %174, ptr %37, align 8, !tbaa !13
  call void @dlascl_(ptr noundef nonnull @.str.13, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %31, ptr noundef nonnull %27, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %37, ptr noundef nonnull @c__1, ptr noundef nonnull %28) #7
  %176 = load double, ptr %37, align 8, !tbaa !13
  store double %176, ptr %15, align 8, !tbaa !13
  br label %177

177:                                              ; preds = %175, %173
  %178 = load i32, ptr %4, align 4, !tbaa !5
  %179 = load i32, ptr %19, align 4, !tbaa !5
  %180 = sub i32 %179, %178
  store i32 %180, ptr %23, align 4, !tbaa !5
  %181 = sext i32 %178 to i64
  %182 = getelementptr %struct.doublecomplex, ptr %46, i64 %181
  %183 = getelementptr i8, ptr %182, i64 16
  call void @zgehrd_(ptr noundef nonnull %4, ptr noundef %12, ptr noundef %13, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %18, ptr noundef nonnull %183, ptr noundef nonnull %23, ptr noundef nonnull %28) #7
  br i1 %64, label %184, label %189

184:                                              ; preds = %177
  store i8 76, ptr %26, align 1, !tbaa !14
  call void @zlacpy_(ptr noundef nonnull @.str.8, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %8, ptr noundef nonnull %9) #7
  %185 = load i32, ptr %19, align 4, !tbaa !5
  %186 = sub i32 %185, %178
  store i32 %186, ptr %23, align 4, !tbaa !5
  call void @zunghr_(ptr noundef nonnull %4, ptr noundef %12, ptr noundef %13, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %18, ptr noundef nonnull %183, ptr noundef nonnull %23, ptr noundef nonnull %28) #7
  %187 = load i32, ptr %19, align 4, !tbaa !5
  store i32 %187, ptr %23, align 4, !tbaa !5
  call void @zhseqr_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str, ptr noundef nonnull %4, ptr noundef %12, ptr noundef %13, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %18, ptr noundef nonnull %23, ptr noundef nonnull %21) #7
  %.not613 = icmp eq i32 %51, 0
  br i1 %.not613, label %196, label %188

188:                                              ; preds = %184
  store i8 66, ptr %26, align 1, !tbaa !14
  call void @zlacpy_(ptr noundef nonnull @.str.15, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %11) #7
  br label %196

189:                                              ; preds = %177
  %.not611 = icmp eq i32 %51, 0
  br i1 %.not611, label %194, label %190

190:                                              ; preds = %189
  store i8 82, ptr %26, align 1, !tbaa !14
  call void @zlacpy_(ptr noundef nonnull @.str.8, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %10, ptr noundef nonnull %11) #7
  %191 = load i32, ptr %19, align 4, !tbaa !5
  %192 = sub i32 %191, %178
  store i32 %192, ptr %23, align 4, !tbaa !5
  call void @zunghr_(ptr noundef nonnull %4, ptr noundef %12, ptr noundef %13, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %18, ptr noundef nonnull %183, ptr noundef nonnull %23, ptr noundef nonnull %28) #7
  %193 = load i32, ptr %19, align 4, !tbaa !5
  store i32 %193, ptr %23, align 4, !tbaa !5
  call void @zhseqr_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str, ptr noundef nonnull %4, ptr noundef %12, ptr noundef %13, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %18, ptr noundef nonnull %23, ptr noundef nonnull %21) #7
  br label %196

194:                                              ; preds = %189
  %.not612 = icmp eq i32 %52, 0
  %. = select i1 %.not612, i8 83, i8 69
  store i8 %., ptr %35, align 1, !tbaa !14
  %195 = load i32, ptr %19, align 4, !tbaa !5
  store i32 %195, ptr %23, align 4, !tbaa !5
  call void @zhseqr_(ptr noundef nonnull %35, ptr noundef nonnull @.str.1, ptr noundef nonnull %4, ptr noundef %12, ptr noundef %13, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %18, ptr noundef nonnull %23, ptr noundef nonnull %21) #7
  br label %196

196:                                              ; preds = %190, %194, %184, %188
  %197 = load i32, ptr %21, align 4, !tbaa !5
  %.not614 = icmp eq i32 %197, 0
  br i1 %.not614, label %198, label %.loopexit

198:                                              ; preds = %196
  %199 = or i32 %50, %51
  %or.cond23.not = icmp eq i32 %199, 0
  br i1 %or.cond23.not, label %202, label %200

200:                                              ; preds = %198
  %201 = load i32, ptr %19, align 4, !tbaa !5
  store i32 %201, ptr %23, align 4, !tbaa !5
  call void @ztrevc3_(ptr noundef nonnull %26, ptr noundef nonnull @.str.3, ptr noundef nonnull %32, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %4, ptr noundef nonnull %29, ptr noundef nonnull %18, ptr noundef nonnull %23, ptr noundef %20, ptr noundef nonnull %4, ptr noundef nonnull %28) #7
  br label %202

202:                                              ; preds = %198, %200
  %.not615 = icmp eq i32 %52, 0
  br i1 %.not615, label %203, label %204

203:                                              ; preds = %202
  call void @ztrsna_(ptr noundef %3, ptr noundef nonnull @.str.16, ptr noundef nonnull %32, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %16, ptr noundef %17, ptr noundef nonnull %4, ptr noundef nonnull %29, ptr noundef nonnull %18, ptr noundef nonnull %4, ptr noundef %20, ptr noundef nonnull %30) #7
  br label %204

204:                                              ; preds = %203, %202
  br i1 %64, label %205, label %.loopexit651

205:                                              ; preds = %204
  call void @zgebak_(ptr noundef %0, ptr noundef nonnull @.str.8, ptr noundef nonnull %4, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %28) #7
  %206 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %206, ptr %23, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %42, i64 16
  %.not616654 = icmp slt i32 %206, 1
  br i1 %.not616654, label %.loopexit651, label %.lr.ph657

.lr.ph657:                                        ; preds = %205
  %207 = sext i32 %40 to i64
  br label %208

208:                                              ; preds = %.lr.ph657, %._crit_edge
  %indvars.iv670 = phi i64 [ 1, %.lr.ph657 ], [ %indvars.iv.next671, %._crit_edge ]
  %209 = mul nsw i64 %indvars.iv670, %207
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %209
  %210 = call double @dznrm2_(ptr noundef nonnull %4, ptr noundef %gep, ptr noundef nonnull @c__1) #7
  %211 = fdiv double 1.000000e+00, %210
  store double %211, ptr %36, align 8, !tbaa !13
  call void @zdscal_(ptr noundef nonnull %4, ptr noundef nonnull %36, ptr noundef %gep, ptr noundef nonnull @c__1) #7
  %212 = load i32, ptr %4, align 4, !tbaa !5
  %.not620652 = icmp slt i32 %212, 1
  br i1 %.not620652, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %208
  %invariant.gep679 = getelementptr %struct.doublecomplex, ptr %42, i64 %209
  %213 = zext nneg i32 %212 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ]
  %gep680 = getelementptr %struct.doublecomplex, ptr %invariant.gep679, i64 %indvars.iv
  %214 = load double, ptr %gep680, align 8, !tbaa !9
  %215 = call { double, double } @Cd(ptr noundef nonnull %gep680)
  %216 = extractvalue { double, double } %215, 1
  %217 = fmul double %216, %216
  %218 = call double @llvm.fmuladd.f64(double %214, double %214, double %217)
  %219 = getelementptr inbounds double, ptr %47, i64 %indvars.iv
  store double %218, ptr %219, align 8, !tbaa !13
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %.not620.not = icmp ult i64 %indvars.iv, %213
  br i1 %.not620.not, label %.lr.ph, label %._crit_edge, !llvm.loop !15

._crit_edge:                                      ; preds = %.lr.ph, %208
  %220 = call i32 @idamax_(ptr noundef nonnull %4, ptr noundef %20, ptr noundef nonnull @c__1) #7
  %221 = trunc nsw i64 %209 to i32
  %222 = add nsw i32 %220, %221
  %223 = sext i32 %222 to i64
  %224 = getelementptr inbounds %struct.doublecomplex, ptr %42, i64 %223
  %225 = call { double, double } @Cd(ptr noundef %224)
  %226 = extractvalue { double, double } %225, 0
  %227 = extractvalue { double, double } %225, 1
  %228 = fneg double %227
  %229 = call ptr @_pCd(ptr noundef nonnull %25)
  %230 = getelementptr inbounds i8, ptr %229, i64 8
  store double %226, ptr %229, align 8
  store double %228, ptr %230, align 8
  %231 = sext i32 %220 to i64
  %232 = getelementptr inbounds double, ptr %47, i64 %231
  %233 = load double, ptr %232, align 8, !tbaa !13
  %234 = call double @sqrt(double noundef %233) #7
  %235 = load <2 x double>, ptr %25, align 16, !tbaa !13
  %236 = insertelement <2 x double> poison, double %234, i64 0
  %237 = shufflevector <2 x double> %236, <2 x double> poison, <2 x i32> zeroinitializer
  %238 = fdiv <2 x double> %235, %237
  store <2 x double> %238, ptr %38, align 16, !tbaa !13
  call void @zscal_(ptr noundef nonnull %4, ptr noundef nonnull %38, ptr noundef %gep, ptr noundef nonnull @c__1) #7
  store i32 %222, ptr %24, align 4, !tbaa !5
  %239 = getelementptr inbounds i8, ptr %224, i64 8
  store double 0.000000e+00, ptr %239, align 8, !tbaa !12
  %indvars.iv.next671 = add nuw nsw i64 %indvars.iv670, 1
  %240 = load i32, ptr %23, align 4, !tbaa !5
  %241 = sext i32 %240 to i64
  %.not616.not = icmp slt i64 %indvars.iv670, %241
  br i1 %.not616.not, label %208, label %.loopexit651, !llvm.loop !17

.loopexit651:                                     ; preds = %._crit_edge, %205, %204
  br i1 %68, label %242, label %.loopexit

242:                                              ; preds = %.loopexit651
  call void @zgebak_(ptr noundef %0, ptr noundef nonnull @.str.9, ptr noundef nonnull %4, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef nonnull %4, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %28) #7
  %243 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %243, ptr %23, align 4, !tbaa !5
  %invariant.gep663 = getelementptr i8, ptr %45, i64 16
  %.not618665 = icmp slt i32 %243, 1
  br i1 %.not618665, label %.loopexit, label %.lr.ph668

.lr.ph668:                                        ; preds = %242
  %244 = sext i32 %43 to i64
  br label %245

245:                                              ; preds = %.lr.ph668, %._crit_edge662
  %indvars.iv676 = phi i64 [ 1, %.lr.ph668 ], [ %indvars.iv.next677, %._crit_edge662 ]
  %246 = mul nsw i64 %indvars.iv676, %244
  %gep664 = getelementptr %struct.doublecomplex, ptr %invariant.gep663, i64 %246
  %247 = call double @dznrm2_(ptr noundef nonnull %4, ptr noundef %gep664, ptr noundef nonnull @c__1) #7
  %248 = fdiv double 1.000000e+00, %247
  store double %248, ptr %36, align 8, !tbaa !13
  call void @zdscal_(ptr noundef nonnull %4, ptr noundef nonnull %36, ptr noundef %gep664, ptr noundef nonnull @c__1) #7
  %249 = load i32, ptr %4, align 4, !tbaa !5
  %.not619658 = icmp slt i32 %249, 1
  br i1 %.not619658, label %._crit_edge662, label %.lr.ph661.preheader

.lr.ph661.preheader:                              ; preds = %245
  %invariant.gep681 = getelementptr %struct.doublecomplex, ptr %45, i64 %246
  %250 = zext nneg i32 %249 to i64
  br label %.lr.ph661

.lr.ph661:                                        ; preds = %.lr.ph661.preheader, %.lr.ph661
  %indvars.iv673 = phi i64 [ 1, %.lr.ph661.preheader ], [ %indvars.iv.next674, %.lr.ph661 ]
  %gep682 = getelementptr %struct.doublecomplex, ptr %invariant.gep681, i64 %indvars.iv673
  %251 = load double, ptr %gep682, align 8, !tbaa !9
  %252 = call { double, double } @Cd(ptr noundef nonnull %gep682)
  %253 = extractvalue { double, double } %252, 1
  %254 = fmul double %253, %253
  %255 = call double @llvm.fmuladd.f64(double %251, double %251, double %254)
  %256 = getelementptr inbounds double, ptr %47, i64 %indvars.iv673
  store double %255, ptr %256, align 8, !tbaa !13
  %indvars.iv.next674 = add nuw nsw i64 %indvars.iv673, 1
  %.not619.not = icmp ult i64 %indvars.iv673, %250
  br i1 %.not619.not, label %.lr.ph661, label %._crit_edge662, !llvm.loop !18

._crit_edge662:                                   ; preds = %.lr.ph661, %245
  %257 = call i32 @idamax_(ptr noundef nonnull %4, ptr noundef %20, ptr noundef nonnull @c__1) #7
  %258 = trunc nsw i64 %246 to i32
  %259 = add nsw i32 %257, %258
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds %struct.doublecomplex, ptr %45, i64 %260
  %262 = call { double, double } @Cd(ptr noundef %261)
  %263 = extractvalue { double, double } %262, 0
  %264 = extractvalue { double, double } %262, 1
  %265 = fneg double %264
  %266 = call ptr @_pCd(ptr noundef nonnull %25)
  %267 = getelementptr inbounds i8, ptr %266, i64 8
  store double %263, ptr %266, align 8
  store double %265, ptr %267, align 8
  %268 = sext i32 %257 to i64
  %269 = getelementptr inbounds double, ptr %47, i64 %268
  %270 = load double, ptr %269, align 8, !tbaa !13
  %271 = call double @sqrt(double noundef %270) #7
  %272 = load <2 x double>, ptr %25, align 16, !tbaa !13
  %273 = insertelement <2 x double> poison, double %271, i64 0
  %274 = shufflevector <2 x double> %273, <2 x double> poison, <2 x i32> zeroinitializer
  %275 = fdiv <2 x double> %272, %274
  store <2 x double> %275, ptr %38, align 16, !tbaa !13
  call void @zscal_(ptr noundef nonnull %4, ptr noundef nonnull %38, ptr noundef %gep664, ptr noundef nonnull @c__1) #7
  store i32 %259, ptr %24, align 4, !tbaa !5
  %276 = getelementptr inbounds i8, ptr %261, i64 8
  store double 0.000000e+00, ptr %276, align 8, !tbaa !12
  %indvars.iv.next677 = add nuw nsw i64 %indvars.iv676, 1
  %277 = load i32, ptr %23, align 4, !tbaa !5
  %278 = sext i32 %277 to i64
  %.not618.not = icmp slt i64 %indvars.iv676, %278
  br i1 %.not618.not, label %245, label %.loopexit, !llvm.loop !19

.loopexit:                                        ; preds = %._crit_edge662, %242, %.loopexit651, %196
  br i1 %.not610640, label %296, label %279

279:                                              ; preds = %.loopexit
  %280 = load i32, ptr %4, align 4, !tbaa !5
  %281 = load i32, ptr %21, align 4, !tbaa !5
  %282 = sub nsw i32 %280, %281
  store i32 %282, ptr %23, align 4, !tbaa !5
  %283 = call i32 @llvm.smax.i32(i32 %282, i32 1)
  store i32 %283, ptr %24, align 4, !tbaa !5
  %284 = sext i32 %281 to i64
  %285 = getelementptr %struct.doublecomplex, ptr %39, i64 %284
  %286 = getelementptr i8, ptr %285, i64 16
  call void @zlascl_(ptr noundef nonnull @.str.13, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %31, ptr noundef nonnull %27, ptr noundef nonnull %23, ptr noundef nonnull @c__1, ptr noundef %286, ptr noundef nonnull %24, ptr noundef nonnull %28) #7
  %287 = load i32, ptr %21, align 4, !tbaa !5
  %288 = icmp eq i32 %287, 0
  br i1 %288, label %289, label %293

289:                                              ; preds = %279
  %or.cond25 = select i1 %75, i1 true, i1 %74
  %290 = load i32, ptr %30, align 4
  %291 = icmp eq i32 %290, 0
  %or.cond27 = select i1 %or.cond25, i1 %291, i1 false
  br i1 %or.cond27, label %292, label %296

292:                                              ; preds = %289
  call void @dlascl_(ptr noundef nonnull @.str.13, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %31, ptr noundef nonnull %27, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %17, ptr noundef nonnull %4, ptr noundef nonnull %28) #7
  br label %296

293:                                              ; preds = %279
  %294 = load i32, ptr %12, align 4, !tbaa !5
  %295 = add nsw i32 %294, -1
  store i32 %295, ptr %23, align 4, !tbaa !5
  call void @zlascl_(ptr noundef nonnull @.str.13, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %31, ptr noundef nonnull %27, ptr noundef nonnull %23, ptr noundef nonnull @c__1, ptr noundef %7, ptr noundef nonnull %4, ptr noundef nonnull %28) #7
  br label %296

296:                                              ; preds = %293, %289, %292, %.loopexit
  store double %148, ptr %18, align 8, !tbaa !9
  store double 0.000000e+00, ptr %149, align 8, !tbaa !12
  br label %297

297:                                              ; preds = %155, %296, %.thread633
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #7
  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 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

declare void @ztrsna_(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 @zgebak_(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 double @dznrm2_(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

; Function Attrs: inlinehint nounwind uwtable
declare hidden { double, double } @Cd(ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #5

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden ptr @_pCd(ptr noundef) local_unnamed_addr #4

declare void @zscal_(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.smax.i32(i32, i32) #6

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

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 = { inlinehint 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 #5 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { 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, !11, i64 0}
!10 = !{!"", !11, i64 0, !11, i64 8}
!11 = !{!"double", !7, i64 0}
!12 = !{!10, !11, i64 8}
!13 = !{!11, !11, i64 0}
!14 = !{!7, !7, i64 0}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16}
!18 = distinct !{!18, !16}
!19 = distinct !{!19, !16}


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