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

; 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 [7 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 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 [5 x i8], align 1
@c_b1 = external hidden global %struct.doublecomplex, align 8
@c_b2 = external hidden global %struct.doublecomplex, align 8
@.str.17 = external hidden unnamed_addr constant [2 x i8], align 1

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

177:                                              ; preds = %29
  store i32 1, ptr %99, align 4, !tbaa !9
  store i32 0, ptr %81, align 4, !tbaa !9
  br label %185

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

182:                                              ; preds = %178
  store i32 2, ptr %99, align 4, !tbaa !9
  store i32 1, ptr %81, align 4, !tbaa !9
  br label %184

183:                                              ; preds = %178
  store i32 -1, ptr %99, align 4, !tbaa !9
  store i32 0, ptr %81, align 4, !tbaa !9
  br label %184

184:                                              ; preds = %183, %182
  br label %185

185:                                              ; preds = %184, %177
  %186 = load ptr, ptr %32, align 8, !tbaa !5
  %187 = call i32 @lsame_(ptr noundef %186, ptr noundef @.str)
  %188 = icmp ne i32 %187, 0
  br i1 %188, label %189, label %190

189:                                              ; preds = %185
  store i32 1, ptr %100, align 4, !tbaa !9
  store i32 0, ptr %82, align 4, !tbaa !9
  br label %197

190:                                              ; preds = %185
  %191 = load ptr, ptr %32, align 8, !tbaa !5
  %192 = call i32 @lsame_(ptr noundef %191, ptr noundef @.str.1)
  %193 = icmp ne i32 %192, 0
  br i1 %193, label %194, label %195

194:                                              ; preds = %190
  store i32 2, ptr %100, align 4, !tbaa !9
  store i32 1, ptr %82, align 4, !tbaa !9
  br label %196

195:                                              ; preds = %190
  store i32 -1, ptr %100, align 4, !tbaa !9
  store i32 0, ptr %82, align 4, !tbaa !9
  br label %196

196:                                              ; preds = %195, %194
  br label %197

197:                                              ; preds = %196, %189
  %198 = load i32, ptr %81, align 4, !tbaa !9
  %199 = icmp ne i32 %198, 0
  br i1 %199, label %203, label %200

200:                                              ; preds = %197
  %201 = load i32, ptr %82, align 4, !tbaa !9
  %202 = icmp ne i32 %201, 0
  br label %203

203:                                              ; preds = %200, %197
  %204 = phi i1 [ true, %197 ], [ %202, %200 ]
  %205 = zext i1 %204 to i32
  store i32 %205, ptr %112, align 4, !tbaa !9
  %206 = load ptr, ptr %30, align 8, !tbaa !5
  %207 = call i32 @lsame_(ptr noundef %206, ptr noundef @.str)
  %208 = icmp ne i32 %207, 0
  br i1 %208, label %213, label %209

209:                                              ; preds = %203
  %210 = load ptr, ptr %30, align 8, !tbaa !5
  %211 = call i32 @lsame_(ptr noundef %210, ptr noundef @.str.2)
  %212 = icmp ne i32 %211, 0
  br label %213

213:                                              ; preds = %209, %203
  %214 = phi i1 [ true, %203 ], [ %212, %209 ]
  %215 = zext i1 %214 to i32
  store i32 %215, ptr %89, align 4, !tbaa !9
  %216 = load ptr, ptr %33, align 8, !tbaa !5
  %217 = call i32 @lsame_(ptr noundef %216, ptr noundef @.str)
  store i32 %217, ptr %107, align 4, !tbaa !9
  %218 = load ptr, ptr %33, align 8, !tbaa !5
  %219 = call i32 @lsame_(ptr noundef %218, ptr noundef @.str.3)
  store i32 %219, ptr %103, align 4, !tbaa !9
  %220 = load ptr, ptr %33, align 8, !tbaa !5
  %221 = call i32 @lsame_(ptr noundef %220, ptr noundef @.str.1)
  store i32 %221, ptr %110, align 4, !tbaa !9
  %222 = load ptr, ptr %33, align 8, !tbaa !5
  %223 = call i32 @lsame_(ptr noundef %222, ptr noundef @.str.4)
  store i32 %223, ptr %101, align 4, !tbaa !9
  %224 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 0, ptr %224, align 4, !tbaa !9
  %225 = load ptr, ptr %54, align 8, !tbaa !5
  %226 = load i32, ptr %225, align 4, !tbaa !9
  %227 = icmp eq i32 %226, -1
  %228 = zext i1 %227 to i32
  store i32 %228, ptr %109, align 4, !tbaa !9
  %229 = load i32, ptr %89, align 4, !tbaa !9
  %230 = icmp ne i32 %229, 0
  br i1 %230, label %241, label %231

231:                                              ; preds = %213
  %232 = load ptr, ptr %30, align 8, !tbaa !5
  %233 = call i32 @lsame_(ptr noundef %232, ptr noundef @.str.5)
  %234 = icmp ne i32 %233, 0
  br i1 %234, label %241, label %235

235:                                              ; preds = %231
  %236 = load ptr, ptr %30, align 8, !tbaa !5
  %237 = call i32 @lsame_(ptr noundef %236, ptr noundef @.str.4)
  %238 = icmp ne i32 %237, 0
  br i1 %238, label %241, label %239

239:                                              ; preds = %235
  %240 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -1, ptr %240, align 4, !tbaa !9
  br label %339

241:                                              ; preds = %235, %231, %213
  %242 = load i32, ptr %99, align 4, !tbaa !9
  %243 = icmp sle i32 %242, 0
  br i1 %243, label %244, label %246

244:                                              ; preds = %241
  %245 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -2, ptr %245, align 4, !tbaa !9
  br label %338

246:                                              ; preds = %241
  %247 = load i32, ptr %100, align 4, !tbaa !9
  %248 = icmp sle i32 %247, 0
  br i1 %248, label %249, label %251

249:                                              ; preds = %246
  %250 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -3, ptr %250, align 4, !tbaa !9
  br label %337

251:                                              ; preds = %246
  %252 = load i32, ptr %107, align 4, !tbaa !9
  %253 = icmp ne i32 %252, 0
  br i1 %253, label %265, label %254

254:                                              ; preds = %251
  %255 = load i32, ptr %103, align 4, !tbaa !9
  %256 = icmp ne i32 %255, 0
  br i1 %256, label %265, label %257

257:                                              ; preds = %254
  %258 = load i32, ptr %101, align 4, !tbaa !9
  %259 = icmp ne i32 %258, 0
  br i1 %259, label %265, label %260

260:                                              ; preds = %257
  %261 = load i32, ptr %110, align 4, !tbaa !9
  %262 = icmp ne i32 %261, 0
  br i1 %262, label %265, label %263

263:                                              ; preds = %260
  %264 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -4, ptr %264, align 4, !tbaa !9
  br label %336

265:                                              ; preds = %260, %257, %254, %251
  %266 = load ptr, ptr %34, align 8, !tbaa !5
  %267 = load i32, ptr %266, align 4, !tbaa !9
  %268 = icmp slt i32 %267, 0
  br i1 %268, label %269, label %271

269:                                              ; preds = %265
  %270 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -5, ptr %270, align 4, !tbaa !9
  br label %335

271:                                              ; preds = %265
  %272 = load ptr, ptr %36, align 8, !tbaa !5
  %273 = load i32, ptr %272, align 4, !tbaa !9
  %274 = load ptr, ptr %34, align 8, !tbaa !5
  %275 = load i32, ptr %274, align 4, !tbaa !9
  %276 = icmp sge i32 1, %275
  br i1 %276, label %277, label %278

277:                                              ; preds = %271
  br label %281

278:                                              ; preds = %271
  %279 = load ptr, ptr %34, align 8, !tbaa !5
  %280 = load i32, ptr %279, align 4, !tbaa !9
  br label %281

281:                                              ; preds = %278, %277
  %282 = phi i32 [ 1, %277 ], [ %280, %278 ]
  %283 = icmp slt i32 %273, %282
  br i1 %283, label %284, label %286

284:                                              ; preds = %281
  %285 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -7, ptr %285, align 4, !tbaa !9
  br label %334

286:                                              ; preds = %281
  %287 = load ptr, ptr %38, align 8, !tbaa !5
  %288 = load i32, ptr %287, align 4, !tbaa !9
  %289 = load ptr, ptr %34, align 8, !tbaa !5
  %290 = load i32, ptr %289, align 4, !tbaa !9
  %291 = icmp sge i32 1, %290
  br i1 %291, label %292, label %293

292:                                              ; preds = %286
  br label %296

293:                                              ; preds = %286
  %294 = load ptr, ptr %34, align 8, !tbaa !5
  %295 = load i32, ptr %294, align 4, !tbaa !9
  br label %296

296:                                              ; preds = %293, %292
  %297 = phi i32 [ 1, %292 ], [ %295, %293 ]
  %298 = icmp slt i32 %288, %297
  br i1 %298, label %299, label %301

299:                                              ; preds = %296
  %300 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -9, ptr %300, align 4, !tbaa !9
  br label %333

301:                                              ; preds = %296
  %302 = load ptr, ptr %42, align 8, !tbaa !5
  %303 = load i32, ptr %302, align 4, !tbaa !9
  %304 = icmp slt i32 %303, 1
  br i1 %304, label %314, label %305

305:                                              ; preds = %301
  %306 = load i32, ptr %81, align 4, !tbaa !9
  %307 = icmp ne i32 %306, 0
  br i1 %307, label %308, label %316

308:                                              ; preds = %305
  %309 = load ptr, ptr %42, align 8, !tbaa !5
  %310 = load i32, ptr %309, align 4, !tbaa !9
  %311 = load ptr, ptr %34, align 8, !tbaa !5
  %312 = load i32, ptr %311, align 4, !tbaa !9
  %313 = icmp slt i32 %310, %312
  br i1 %313, label %314, label %316

314:                                              ; preds = %308, %301
  %315 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -13, ptr %315, align 4, !tbaa !9
  br label %332

316:                                              ; preds = %308, %305
  %317 = load ptr, ptr %44, align 8, !tbaa !5
  %318 = load i32, ptr %317, align 4, !tbaa !9
  %319 = icmp slt i32 %318, 1
  br i1 %319, label %329, label %320

320:                                              ; preds = %316
  %321 = load i32, ptr %82, align 4, !tbaa !9
  %322 = icmp ne i32 %321, 0
  br i1 %322, label %323, label %331

323:                                              ; preds = %320
  %324 = load ptr, ptr %44, align 8, !tbaa !5
  %325 = load i32, ptr %324, align 4, !tbaa !9
  %326 = load ptr, ptr %34, align 8, !tbaa !5
  %327 = load i32, ptr %326, align 4, !tbaa !9
  %328 = icmp slt i32 %325, %327
  br i1 %328, label %329, label %331

329:                                              ; preds = %323, %316
  %330 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -15, ptr %330, align 4, !tbaa !9
  br label %331

331:                                              ; preds = %329, %323, %320
  br label %332

332:                                              ; preds = %331, %314
  br label %333

333:                                              ; preds = %332, %299
  br label %334

334:                                              ; preds = %333, %284
  br label %335

335:                                              ; preds = %334, %269
  br label %336

336:                                              ; preds = %335, %263
  br label %337

337:                                              ; preds = %336, %249
  br label %338

338:                                              ; preds = %337, %244
  br label %339

339:                                              ; preds = %338, %239
  %340 = load ptr, ptr %58, align 8, !tbaa !5
  %341 = load i32, ptr %340, align 4, !tbaa !9
  %342 = icmp eq i32 %341, 0
  br i1 %342, label %343, label %455

343:                                              ; preds = %339
  %344 = load ptr, ptr %34, align 8, !tbaa !5
  %345 = load i32, ptr %344, align 4, !tbaa !9
  %346 = icmp eq i32 %345, 0
  br i1 %346, label %347, label %348

347:                                              ; preds = %343
  store i32 1, ptr %105, align 4, !tbaa !9
  store i32 1, ptr %106, align 4, !tbaa !9
  br label %436

348:                                              ; preds = %343
  %349 = load ptr, ptr %34, align 8, !tbaa !5
  %350 = load i32, ptr %349, align 4, !tbaa !9
  %351 = shl i32 %350, 1
  store i32 %351, ptr %105, align 4, !tbaa !9
  %352 = load i32, ptr %103, align 4, !tbaa !9
  %353 = icmp ne i32 %352, 0
  br i1 %353, label %354, label %358

354:                                              ; preds = %348
  %355 = load ptr, ptr %34, align 8, !tbaa !5
  %356 = load i32, ptr %355, align 4, !tbaa !9
  %357 = shl i32 %356, 2
  store i32 %357, ptr %105, align 4, !tbaa !9
  br label %373

358:                                              ; preds = %348
  %359 = load i32, ptr %110, align 4, !tbaa !9
  %360 = icmp ne i32 %359, 0
  br i1 %360, label %364, label %361

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

364:                                              ; preds = %361, %358
  %365 = load ptr, ptr %34, align 8, !tbaa !5
  %366 = load i32, ptr %365, align 4, !tbaa !9
  %367 = shl i32 %366, 1
  %368 = load ptr, ptr %34, align 8, !tbaa !5
  %369 = load i32, ptr %368, align 4, !tbaa !9
  %370 = add nsw i32 %369, 1
  %371 = mul nsw i32 %367, %370
  store i32 %371, ptr %105, align 4, !tbaa !9
  br label %372

372:                                              ; preds = %364, %361
  br label %373

373:                                              ; preds = %372, %354
  %374 = load i32, ptr %105, align 4, !tbaa !9
  store i32 %374, ptr %106, align 4, !tbaa !9
  %375 = load i32, ptr %106, align 4, !tbaa !9
  store i32 %375, ptr %67, align 4, !tbaa !9
  %376 = load ptr, ptr %34, align 8, !tbaa !5
  %377 = load i32, ptr %376, align 4, !tbaa !9
  %378 = load ptr, ptr %34, align 8, !tbaa !5
  %379 = load i32, ptr %378, align 4, !tbaa !9
  %380 = load ptr, ptr %34, align 8, !tbaa !5
  %381 = load ptr, ptr %34, align 8, !tbaa !5
  %382 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %380, ptr noundef @c__1, ptr noundef %381, ptr noundef @c__0, i32 noundef 6, i32 noundef 1)
  %383 = mul nsw i32 %379, %382
  %384 = add nsw i32 %377, %383
  store i32 %384, ptr %68, align 4, !tbaa !9
  %385 = load i32, ptr %67, align 4, !tbaa !9
  %386 = load i32, ptr %68, align 4, !tbaa !9
  %387 = icmp sge i32 %385, %386
  br i1 %387, label %388, label %390

388:                                              ; preds = %373
  %389 = load i32, ptr %67, align 4, !tbaa !9
  br label %392

390:                                              ; preds = %373
  %391 = load i32, ptr %68, align 4, !tbaa !9
  br label %392

392:                                              ; preds = %390, %388
  %393 = phi i32 [ %389, %388 ], [ %391, %390 ]
  store i32 %393, ptr %106, align 4, !tbaa !9
  %394 = load i32, ptr %106, align 4, !tbaa !9
  store i32 %394, ptr %67, align 4, !tbaa !9
  %395 = load ptr, ptr %34, align 8, !tbaa !5
  %396 = load i32, ptr %395, align 4, !tbaa !9
  %397 = load ptr, ptr %34, align 8, !tbaa !5
  %398 = load i32, ptr %397, align 4, !tbaa !9
  %399 = load ptr, ptr %34, align 8, !tbaa !5
  %400 = load ptr, ptr %34, align 8, !tbaa !5
  %401 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.8, ptr noundef @.str.7, ptr noundef %399, ptr noundef @c__1, ptr noundef %400, ptr noundef @c__0, i32 noundef 6, i32 noundef 1)
  %402 = mul nsw i32 %398, %401
  %403 = add nsw i32 %396, %402
  store i32 %403, ptr %68, align 4, !tbaa !9
  %404 = load i32, ptr %67, align 4, !tbaa !9
  %405 = load i32, ptr %68, align 4, !tbaa !9
  %406 = icmp sge i32 %404, %405
  br i1 %406, label %407, label %409

407:                                              ; preds = %392
  %408 = load i32, ptr %67, align 4, !tbaa !9
  br label %411

409:                                              ; preds = %392
  %410 = load i32, ptr %68, align 4, !tbaa !9
  br label %411

411:                                              ; preds = %409, %407
  %412 = phi i32 [ %408, %407 ], [ %410, %409 ]
  store i32 %412, ptr %106, align 4, !tbaa !9
  %413 = load i32, ptr %81, align 4, !tbaa !9
  %414 = icmp ne i32 %413, 0
  br i1 %414, label %415, label %435

415:                                              ; preds = %411
  %416 = load i32, ptr %106, align 4, !tbaa !9
  store i32 %416, ptr %67, align 4, !tbaa !9
  %417 = load ptr, ptr %34, align 8, !tbaa !5
  %418 = load i32, ptr %417, align 4, !tbaa !9
  %419 = load ptr, ptr %34, align 8, !tbaa !5
  %420 = load i32, ptr %419, align 4, !tbaa !9
  %421 = load ptr, ptr %34, align 8, !tbaa !5
  %422 = load ptr, ptr %34, align 8, !tbaa !5
  %423 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.9, ptr noundef @.str.7, ptr noundef %421, ptr noundef @c__1, ptr noundef %422, ptr noundef @c__0, i32 noundef 6, i32 noundef 1)
  %424 = mul nsw i32 %420, %423
  %425 = add nsw i32 %418, %424
  store i32 %425, ptr %68, align 4, !tbaa !9
  %426 = load i32, ptr %67, align 4, !tbaa !9
  %427 = load i32, ptr %68, align 4, !tbaa !9
  %428 = icmp sge i32 %426, %427
  br i1 %428, label %429, label %431

429:                                              ; preds = %415
  %430 = load i32, ptr %67, align 4, !tbaa !9
  br label %433

431:                                              ; preds = %415
  %432 = load i32, ptr %68, align 4, !tbaa !9
  br label %433

433:                                              ; preds = %431, %429
  %434 = phi i32 [ %430, %429 ], [ %432, %431 ]
  store i32 %434, ptr %106, align 4, !tbaa !9
  br label %435

435:                                              ; preds = %433, %411
  br label %436

436:                                              ; preds = %435, %347
  %437 = load i32, ptr %106, align 4, !tbaa !9
  %438 = sitofp i32 %437 to double
  %439 = load ptr, ptr %53, align 8, !tbaa !5
  %440 = getelementptr inbounds %struct.doublecomplex, ptr %439, i64 1
  %441 = getelementptr inbounds %struct.doublecomplex, ptr %440, i32 0, i32 0
  store double %438, ptr %441, align 8, !tbaa !11
  %442 = load ptr, ptr %53, align 8, !tbaa !5
  %443 = getelementptr inbounds %struct.doublecomplex, ptr %442, i64 1
  %444 = getelementptr inbounds %struct.doublecomplex, ptr %443, i32 0, i32 1
  store double 0.000000e+00, ptr %444, align 8, !tbaa !14
  %445 = load ptr, ptr %54, align 8, !tbaa !5
  %446 = load i32, ptr %445, align 4, !tbaa !9
  %447 = load i32, ptr %105, align 4, !tbaa !9
  %448 = icmp slt i32 %446, %447
  br i1 %448, label %449, label %454

449:                                              ; preds = %436
  %450 = load i32, ptr %109, align 4, !tbaa !9
  %451 = icmp ne i32 %450, 0
  br i1 %451, label %454, label %452

452:                                              ; preds = %449
  %453 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -25, ptr %453, align 4, !tbaa !9
  br label %454

454:                                              ; preds = %452, %449, %436
  br label %455

455:                                              ; preds = %454, %339
  %456 = load ptr, ptr %58, align 8, !tbaa !5
  %457 = load i32, ptr %456, align 4, !tbaa !9
  %458 = icmp ne i32 %457, 0
  br i1 %458, label %459, label %464

459:                                              ; preds = %455
  %460 = load ptr, ptr %58, align 8, !tbaa !5
  %461 = load i32, ptr %460, align 4, !tbaa !9
  %462 = sub nsw i32 0, %461
  store i32 %462, ptr %67, align 4, !tbaa !9
  %463 = call i32 @xerbla_(ptr noundef @.str.10, ptr noundef %67, i32 noundef 6)
  store i32 1, ptr %113, align 4
  br label %1460

464:                                              ; preds = %455
  %465 = load i32, ptr %109, align 4, !tbaa !9
  %466 = icmp ne i32 %465, 0
  br i1 %466, label %467, label %468

467:                                              ; preds = %464
  store i32 1, ptr %113, align 4
  br label %1460

468:                                              ; preds = %464
  br label %469

469:                                              ; preds = %468
  %470 = load ptr, ptr %34, align 8, !tbaa !5
  %471 = load i32, ptr %470, align 4, !tbaa !9
  %472 = icmp eq i32 %471, 0
  br i1 %472, label %473, label %474

473:                                              ; preds = %469
  store i32 1, ptr %113, align 4
  br label %1460

474:                                              ; preds = %469
  %475 = call double @dlamch_(ptr noundef @.str.2)
  store double %475, ptr %111, align 8, !tbaa !15
  %476 = call double @dlamch_(ptr noundef @.str.5)
  store double %476, ptr %108, align 8, !tbaa !15
  %477 = load double, ptr %108, align 8, !tbaa !15
  %478 = fdiv double 1.000000e+00, %477
  store double %478, ptr %98, align 8, !tbaa !15
  call void @dlabad_(ptr noundef %108, ptr noundef %98)
  %479 = load double, ptr %108, align 8, !tbaa !15
  %480 = call double @sqrt(double noundef %479) #5
  %481 = load double, ptr %111, align 8, !tbaa !15
  %482 = fdiv double %480, %481
  store double %482, ptr %108, align 8, !tbaa !15
  %483 = load double, ptr %108, align 8, !tbaa !15
  %484 = fdiv double 1.000000e+00, %483
  store double %484, ptr %98, align 8, !tbaa !15
  %485 = load ptr, ptr %34, align 8, !tbaa !5
  %486 = load ptr, ptr %34, align 8, !tbaa !5
  %487 = load ptr, ptr %35, align 8, !tbaa !5
  %488 = load i32, ptr %60, align 4, !tbaa !9
  %489 = sext i32 %488 to i64
  %490 = getelementptr inbounds %struct.doublecomplex, ptr %487, i64 %489
  %491 = load ptr, ptr %36, align 8, !tbaa !5
  %492 = load ptr, ptr %55, align 8, !tbaa !5
  %493 = getelementptr inbounds double, ptr %492, i64 1
  %494 = call double @zlange_(ptr noundef @.str.11, ptr noundef %485, ptr noundef %486, ptr noundef %490, ptr noundef %491, ptr noundef %493)
  store double %494, ptr %76, align 8, !tbaa !15
  store i32 0, ptr %94, align 4, !tbaa !9
  %495 = load double, ptr %76, align 8, !tbaa !15
  %496 = fcmp ogt double %495, 0.000000e+00
  br i1 %496, label %497, label %503

497:                                              ; preds = %474
  %498 = load double, ptr %76, align 8, !tbaa !15
  %499 = load double, ptr %108, align 8, !tbaa !15
  %500 = fcmp olt double %498, %499
  br i1 %500, label %501, label %503

501:                                              ; preds = %497
  %502 = load double, ptr %108, align 8, !tbaa !15
  store double %502, ptr %102, align 8, !tbaa !15
  store i32 1, ptr %94, align 4, !tbaa !9
  br label %510

503:                                              ; preds = %497, %474
  %504 = load double, ptr %76, align 8, !tbaa !15
  %505 = load double, ptr %98, align 8, !tbaa !15
  %506 = fcmp ogt double %504, %505
  br i1 %506, label %507, label %509

507:                                              ; preds = %503
  %508 = load double, ptr %98, align 8, !tbaa !15
  store double %508, ptr %102, align 8, !tbaa !15
  store i32 1, ptr %94, align 4, !tbaa !9
  br label %509

509:                                              ; preds = %507, %503
  br label %510

510:                                              ; preds = %509, %501
  %511 = load i32, ptr %94, align 4, !tbaa !9
  %512 = icmp ne i32 %511, 0
  br i1 %512, label %513, label %521

513:                                              ; preds = %510
  %514 = load ptr, ptr %34, align 8, !tbaa !5
  %515 = load ptr, ptr %34, align 8, !tbaa !5
  %516 = load ptr, ptr %35, align 8, !tbaa !5
  %517 = load i32, ptr %60, align 4, !tbaa !9
  %518 = sext i32 %517 to i64
  %519 = getelementptr inbounds %struct.doublecomplex, ptr %516, i64 %518
  %520 = load ptr, ptr %36, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %76, ptr noundef %102, ptr noundef %514, ptr noundef %515, ptr noundef %519, ptr noundef %520, ptr noundef %78)
  br label %521

521:                                              ; preds = %513, %510
  %522 = load ptr, ptr %34, align 8, !tbaa !5
  %523 = load ptr, ptr %34, align 8, !tbaa !5
  %524 = load ptr, ptr %37, align 8, !tbaa !5
  %525 = load i32, ptr %62, align 4, !tbaa !9
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds %struct.doublecomplex, ptr %524, i64 %526
  %528 = load ptr, ptr %38, align 8, !tbaa !5
  %529 = load ptr, ptr %55, align 8, !tbaa !5
  %530 = getelementptr inbounds double, ptr %529, i64 1
  %531 = call double @zlange_(ptr noundef @.str.11, ptr noundef %522, ptr noundef %523, ptr noundef %527, ptr noundef %528, ptr noundef %530)
  store double %531, ptr %77, align 8, !tbaa !15
  store i32 0, ptr %95, align 4, !tbaa !9
  %532 = load double, ptr %77, align 8, !tbaa !15
  %533 = fcmp ogt double %532, 0.000000e+00
  br i1 %533, label %534, label %540

534:                                              ; preds = %521
  %535 = load double, ptr %77, align 8, !tbaa !15
  %536 = load double, ptr %108, align 8, !tbaa !15
  %537 = fcmp olt double %535, %536
  br i1 %537, label %538, label %540

538:                                              ; preds = %534
  %539 = load double, ptr %108, align 8, !tbaa !15
  store double %539, ptr %104, align 8, !tbaa !15
  store i32 1, ptr %95, align 4, !tbaa !9
  br label %547

540:                                              ; preds = %534, %521
  %541 = load double, ptr %77, align 8, !tbaa !15
  %542 = load double, ptr %98, align 8, !tbaa !15
  %543 = fcmp ogt double %541, %542
  br i1 %543, label %544, label %546

544:                                              ; preds = %540
  %545 = load double, ptr %98, align 8, !tbaa !15
  store double %545, ptr %104, align 8, !tbaa !15
  store i32 1, ptr %95, align 4, !tbaa !9
  br label %546

546:                                              ; preds = %544, %540
  br label %547

547:                                              ; preds = %546, %538
  %548 = load i32, ptr %95, align 4, !tbaa !9
  %549 = icmp ne i32 %548, 0
  br i1 %549, label %550, label %558

550:                                              ; preds = %547
  %551 = load ptr, ptr %34, align 8, !tbaa !5
  %552 = load ptr, ptr %34, align 8, !tbaa !5
  %553 = load ptr, ptr %37, align 8, !tbaa !5
  %554 = load i32, ptr %62, align 4, !tbaa !9
  %555 = sext i32 %554 to i64
  %556 = getelementptr inbounds %struct.doublecomplex, ptr %553, i64 %555
  %557 = load ptr, ptr %38, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %77, ptr noundef %104, ptr noundef %551, ptr noundef %552, ptr noundef %556, ptr noundef %557, ptr noundef %78)
  br label %558

558:                                              ; preds = %550, %547
  %559 = load ptr, ptr %30, align 8, !tbaa !5
  %560 = load ptr, ptr %34, align 8, !tbaa !5
  %561 = load ptr, ptr %35, align 8, !tbaa !5
  %562 = load i32, ptr %60, align 4, !tbaa !9
  %563 = sext i32 %562 to i64
  %564 = getelementptr inbounds %struct.doublecomplex, ptr %561, i64 %563
  %565 = load ptr, ptr %36, align 8, !tbaa !5
  %566 = load ptr, ptr %37, align 8, !tbaa !5
  %567 = load i32, ptr %62, align 4, !tbaa !9
  %568 = sext i32 %567 to i64
  %569 = getelementptr inbounds %struct.doublecomplex, ptr %566, i64 %568
  %570 = load ptr, ptr %38, align 8, !tbaa !5
  %571 = load ptr, ptr %45, align 8, !tbaa !5
  %572 = load ptr, ptr %46, align 8, !tbaa !5
  %573 = load ptr, ptr %47, align 8, !tbaa !5
  %574 = getelementptr inbounds double, ptr %573, i64 1
  %575 = load ptr, ptr %48, align 8, !tbaa !5
  %576 = getelementptr inbounds double, ptr %575, i64 1
  %577 = load ptr, ptr %55, align 8, !tbaa !5
  %578 = getelementptr inbounds double, ptr %577, i64 1
  call void @zggbal_(ptr noundef %559, ptr noundef %560, ptr noundef %564, ptr noundef %565, ptr noundef %569, ptr noundef %570, ptr noundef %571, ptr noundef %572, ptr noundef %574, ptr noundef %576, ptr noundef %578, ptr noundef %78)
  %579 = load ptr, ptr %34, align 8, !tbaa !5
  %580 = load ptr, ptr %34, align 8, !tbaa !5
  %581 = load ptr, ptr %35, align 8, !tbaa !5
  %582 = load i32, ptr %60, align 4, !tbaa !9
  %583 = sext i32 %582 to i64
  %584 = getelementptr inbounds %struct.doublecomplex, ptr %581, i64 %583
  %585 = load ptr, ptr %36, align 8, !tbaa !5
  %586 = load ptr, ptr %55, align 8, !tbaa !5
  %587 = getelementptr inbounds double, ptr %586, i64 1
  %588 = call double @zlange_(ptr noundef @.str.13, ptr noundef %579, ptr noundef %580, ptr noundef %584, ptr noundef %585, ptr noundef %587)
  %589 = load ptr, ptr %49, align 8, !tbaa !5
  store double %588, ptr %589, align 8, !tbaa !15
  %590 = load i32, ptr %94, align 4, !tbaa !9
  %591 = icmp ne i32 %590, 0
  br i1 %591, label %592, label %603

592:                                              ; preds = %558
  %593 = load ptr, ptr %49, align 8, !tbaa !5
  %594 = load double, ptr %593, align 8, !tbaa !15
  %595 = load ptr, ptr %55, align 8, !tbaa !5
  %596 = getelementptr inbounds double, ptr %595, i64 1
  store double %594, ptr %596, align 8, !tbaa !15
  %597 = load ptr, ptr %55, align 8, !tbaa !5
  %598 = getelementptr inbounds double, ptr %597, i64 1
  call void @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %102, ptr noundef %76, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %598, ptr noundef @c__1, ptr noundef %78)
  %599 = load ptr, ptr %55, align 8, !tbaa !5
  %600 = getelementptr inbounds double, ptr %599, i64 1
  %601 = load double, ptr %600, align 8, !tbaa !15
  %602 = load ptr, ptr %49, align 8, !tbaa !5
  store double %601, ptr %602, align 8, !tbaa !15
  br label %603

603:                                              ; preds = %592, %558
  %604 = load ptr, ptr %34, align 8, !tbaa !5
  %605 = load ptr, ptr %34, align 8, !tbaa !5
  %606 = load ptr, ptr %37, align 8, !tbaa !5
  %607 = load i32, ptr %62, align 4, !tbaa !9
  %608 = sext i32 %607 to i64
  %609 = getelementptr inbounds %struct.doublecomplex, ptr %606, i64 %608
  %610 = load ptr, ptr %38, align 8, !tbaa !5
  %611 = load ptr, ptr %55, align 8, !tbaa !5
  %612 = getelementptr inbounds double, ptr %611, i64 1
  %613 = call double @zlange_(ptr noundef @.str.13, ptr noundef %604, ptr noundef %605, ptr noundef %609, ptr noundef %610, ptr noundef %612)
  %614 = load ptr, ptr %50, align 8, !tbaa !5
  store double %613, ptr %614, align 8, !tbaa !15
  %615 = load i32, ptr %95, align 4, !tbaa !9
  %616 = icmp ne i32 %615, 0
  br i1 %616, label %617, label %628

617:                                              ; preds = %603
  %618 = load ptr, ptr %50, align 8, !tbaa !5
  %619 = load double, ptr %618, align 8, !tbaa !15
  %620 = load ptr, ptr %55, align 8, !tbaa !5
  %621 = getelementptr inbounds double, ptr %620, i64 1
  store double %619, ptr %621, align 8, !tbaa !15
  %622 = load ptr, ptr %55, align 8, !tbaa !5
  %623 = getelementptr inbounds double, ptr %622, i64 1
  call void @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %104, ptr noundef %77, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %623, ptr noundef @c__1, ptr noundef %78)
  %624 = load ptr, ptr %55, align 8, !tbaa !5
  %625 = getelementptr inbounds double, ptr %624, i64 1
  %626 = load double, ptr %625, align 8, !tbaa !15
  %627 = load ptr, ptr %50, align 8, !tbaa !5
  store double %626, ptr %627, align 8, !tbaa !15
  br label %628

628:                                              ; preds = %617, %603
  %629 = load ptr, ptr %46, align 8, !tbaa !5
  %630 = load i32, ptr %629, align 4, !tbaa !9
  %631 = add nsw i32 %630, 1
  %632 = load ptr, ptr %45, align 8, !tbaa !5
  %633 = load i32, ptr %632, align 4, !tbaa !9
  %634 = sub nsw i32 %631, %633
  store i32 %634, ptr %90, align 4, !tbaa !9
  %635 = load i32, ptr %112, align 4, !tbaa !9
  %636 = icmp ne i32 %635, 0
  br i1 %636, label %640, label %637

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

640:                                              ; preds = %637, %628
  %641 = load ptr, ptr %34, align 8, !tbaa !5
  %642 = load i32, ptr %641, align 4, !tbaa !9
  %643 = add nsw i32 %642, 1
  %644 = load ptr, ptr %45, align 8, !tbaa !5
  %645 = load i32, ptr %644, align 4, !tbaa !9
  %646 = sub nsw i32 %643, %645
  store i32 %646, ptr %88, align 4, !tbaa !9
  br label %649

647:                                              ; preds = %637
  %648 = load i32, ptr %90, align 4, !tbaa !9
  store i32 %648, ptr %88, align 4, !tbaa !9
  br label %649

649:                                              ; preds = %647, %640
  store i32 1, ptr %79, align 4, !tbaa !9
  %650 = load i32, ptr %79, align 4, !tbaa !9
  %651 = load i32, ptr %90, align 4, !tbaa !9
  %652 = add nsw i32 %650, %651
  store i32 %652, ptr %83, align 4, !tbaa !9
  %653 = load ptr, ptr %54, align 8, !tbaa !5
  %654 = load i32, ptr %653, align 4, !tbaa !9
  %655 = add nsw i32 %654, 1
  %656 = load i32, ptr %83, align 4, !tbaa !9
  %657 = sub nsw i32 %655, %656
  store i32 %657, ptr %67, align 4, !tbaa !9
  %658 = load ptr, ptr %37, align 8, !tbaa !5
  %659 = load ptr, ptr %45, align 8, !tbaa !5
  %660 = load i32, ptr %659, align 4, !tbaa !9
  %661 = load ptr, ptr %45, align 8, !tbaa !5
  %662 = load i32, ptr %661, align 4, !tbaa !9
  %663 = load i32, ptr %61, align 4, !tbaa !9
  %664 = mul nsw i32 %662, %663
  %665 = add nsw i32 %660, %664
  %666 = sext i32 %665 to i64
  %667 = getelementptr inbounds %struct.doublecomplex, ptr %658, i64 %666
  %668 = load ptr, ptr %38, align 8, !tbaa !5
  %669 = load ptr, ptr %53, align 8, !tbaa !5
  %670 = load i32, ptr %79, align 4, !tbaa !9
  %671 = sext i32 %670 to i64
  %672 = getelementptr inbounds %struct.doublecomplex, ptr %669, i64 %671
  %673 = load ptr, ptr %53, align 8, !tbaa !5
  %674 = load i32, ptr %83, align 4, !tbaa !9
  %675 = sext i32 %674 to i64
  %676 = getelementptr inbounds %struct.doublecomplex, ptr %673, i64 %675
  call void @zgeqrf_(ptr noundef %90, ptr noundef %88, ptr noundef %667, ptr noundef %668, ptr noundef %672, ptr noundef %676, ptr noundef %67, ptr noundef %78)
  %677 = load ptr, ptr %54, align 8, !tbaa !5
  %678 = load i32, ptr %677, align 4, !tbaa !9
  %679 = add nsw i32 %678, 1
  %680 = load i32, ptr %83, align 4, !tbaa !9
  %681 = sub nsw i32 %679, %680
  store i32 %681, ptr %67, align 4, !tbaa !9
  %682 = load ptr, ptr %37, align 8, !tbaa !5
  %683 = load ptr, ptr %45, align 8, !tbaa !5
  %684 = load i32, ptr %683, align 4, !tbaa !9
  %685 = load ptr, ptr %45, align 8, !tbaa !5
  %686 = load i32, ptr %685, align 4, !tbaa !9
  %687 = load i32, ptr %61, align 4, !tbaa !9
  %688 = mul nsw i32 %686, %687
  %689 = add nsw i32 %684, %688
  %690 = sext i32 %689 to i64
  %691 = getelementptr inbounds %struct.doublecomplex, ptr %682, i64 %690
  %692 = load ptr, ptr %38, align 8, !tbaa !5
  %693 = load ptr, ptr %53, align 8, !tbaa !5
  %694 = load i32, ptr %79, align 4, !tbaa !9
  %695 = sext i32 %694 to i64
  %696 = getelementptr inbounds %struct.doublecomplex, ptr %693, i64 %695
  %697 = load ptr, ptr %35, align 8, !tbaa !5
  %698 = load ptr, ptr %45, align 8, !tbaa !5
  %699 = load i32, ptr %698, align 4, !tbaa !9
  %700 = load ptr, ptr %45, align 8, !tbaa !5
  %701 = load i32, ptr %700, align 4, !tbaa !9
  %702 = load i32, ptr %59, align 4, !tbaa !9
  %703 = mul nsw i32 %701, %702
  %704 = add nsw i32 %699, %703
  %705 = sext i32 %704 to i64
  %706 = getelementptr inbounds %struct.doublecomplex, ptr %697, i64 %705
  %707 = load ptr, ptr %36, align 8, !tbaa !5
  %708 = load ptr, ptr %53, align 8, !tbaa !5
  %709 = load i32, ptr %83, align 4, !tbaa !9
  %710 = sext i32 %709 to i64
  %711 = getelementptr inbounds %struct.doublecomplex, ptr %708, i64 %710
  call void @zunmqr_(ptr noundef @.str.14, ptr noundef @.str.15, ptr noundef %90, ptr noundef %88, ptr noundef %90, ptr noundef %691, ptr noundef %692, ptr noundef %696, ptr noundef %706, ptr noundef %707, ptr noundef %711, ptr noundef %67, ptr noundef %78)
  %712 = load i32, ptr %81, align 4, !tbaa !9
  %713 = icmp ne i32 %712, 0
  br i1 %713, label %714, label %778

714:                                              ; preds = %649
  %715 = load ptr, ptr %34, align 8, !tbaa !5
  %716 = load ptr, ptr %34, align 8, !tbaa !5
  %717 = load ptr, ptr %41, align 8, !tbaa !5
  %718 = load i32, ptr %64, align 4, !tbaa !9
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds %struct.doublecomplex, ptr %717, i64 %719
  %721 = load ptr, ptr %42, align 8, !tbaa !5
  call void @zlaset_(ptr noundef @.str.16, ptr noundef %715, ptr noundef %716, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %720, ptr noundef %721)
  %722 = load i32, ptr %90, align 4, !tbaa !9
  %723 = icmp sgt i32 %722, 1
  br i1 %723, label %724, label %753

724:                                              ; preds = %714
  %725 = load i32, ptr %90, align 4, !tbaa !9
  %726 = sub nsw i32 %725, 1
  store i32 %726, ptr %67, align 4, !tbaa !9
  %727 = load i32, ptr %90, align 4, !tbaa !9
  %728 = sub nsw i32 %727, 1
  store i32 %728, ptr %68, align 4, !tbaa !9
  %729 = load ptr, ptr %37, align 8, !tbaa !5
  %730 = load ptr, ptr %45, align 8, !tbaa !5
  %731 = load i32, ptr %730, align 4, !tbaa !9
  %732 = add nsw i32 %731, 1
  %733 = load ptr, ptr %45, align 8, !tbaa !5
  %734 = load i32, ptr %733, align 4, !tbaa !9
  %735 = load i32, ptr %61, align 4, !tbaa !9
  %736 = mul nsw i32 %734, %735
  %737 = add nsw i32 %732, %736
  %738 = sext i32 %737 to i64
  %739 = getelementptr inbounds %struct.doublecomplex, ptr %729, i64 %738
  %740 = load ptr, ptr %38, align 8, !tbaa !5
  %741 = load ptr, ptr %41, align 8, !tbaa !5
  %742 = load ptr, ptr %45, align 8, !tbaa !5
  %743 = load i32, ptr %742, align 4, !tbaa !9
  %744 = add nsw i32 %743, 1
  %745 = load ptr, ptr %45, align 8, !tbaa !5
  %746 = load i32, ptr %745, align 4, !tbaa !9
  %747 = load i32, ptr %63, align 4, !tbaa !9
  %748 = mul nsw i32 %746, %747
  %749 = add nsw i32 %744, %748
  %750 = sext i32 %749 to i64
  %751 = getelementptr inbounds %struct.doublecomplex, ptr %741, i64 %750
  %752 = load ptr, ptr %42, align 8, !tbaa !5
  call void @zlacpy_(ptr noundef @.str.14, ptr noundef %67, ptr noundef %68, ptr noundef %739, ptr noundef %740, ptr noundef %751, ptr noundef %752)
  br label %753

753:                                              ; preds = %724, %714
  %754 = load ptr, ptr %54, align 8, !tbaa !5
  %755 = load i32, ptr %754, align 4, !tbaa !9
  %756 = add nsw i32 %755, 1
  %757 = load i32, ptr %83, align 4, !tbaa !9
  %758 = sub nsw i32 %756, %757
  store i32 %758, ptr %67, align 4, !tbaa !9
  %759 = load ptr, ptr %41, align 8, !tbaa !5
  %760 = load ptr, ptr %45, align 8, !tbaa !5
  %761 = load i32, ptr %760, align 4, !tbaa !9
  %762 = load ptr, ptr %45, align 8, !tbaa !5
  %763 = load i32, ptr %762, align 4, !tbaa !9
  %764 = load i32, ptr %63, align 4, !tbaa !9
  %765 = mul nsw i32 %763, %764
  %766 = add nsw i32 %761, %765
  %767 = sext i32 %766 to i64
  %768 = getelementptr inbounds %struct.doublecomplex, ptr %759, i64 %767
  %769 = load ptr, ptr %42, align 8, !tbaa !5
  %770 = load ptr, ptr %53, align 8, !tbaa !5
  %771 = load i32, ptr %79, align 4, !tbaa !9
  %772 = sext i32 %771 to i64
  %773 = getelementptr inbounds %struct.doublecomplex, ptr %770, i64 %772
  %774 = load ptr, ptr %53, align 8, !tbaa !5
  %775 = load i32, ptr %83, align 4, !tbaa !9
  %776 = sext i32 %775 to i64
  %777 = getelementptr inbounds %struct.doublecomplex, ptr %774, i64 %776
  call void @zungqr_(ptr noundef %90, ptr noundef %90, ptr noundef %90, ptr noundef %768, ptr noundef %769, ptr noundef %773, ptr noundef %777, ptr noundef %67, ptr noundef %78)
  br label %778

778:                                              ; preds = %753, %649
  %779 = load i32, ptr %82, align 4, !tbaa !9
  %780 = icmp ne i32 %779, 0
  br i1 %780, label %781, label %789

781:                                              ; preds = %778
  %782 = load ptr, ptr %34, align 8, !tbaa !5
  %783 = load ptr, ptr %34, align 8, !tbaa !5
  %784 = load ptr, ptr %43, align 8, !tbaa !5
  %785 = load i32, ptr %66, align 4, !tbaa !9
  %786 = sext i32 %785 to i64
  %787 = getelementptr inbounds %struct.doublecomplex, ptr %784, i64 %786
  %788 = load ptr, ptr %44, align 8, !tbaa !5
  call void @zlaset_(ptr noundef @.str.16, ptr noundef %782, ptr noundef %783, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %787, ptr noundef %788)
  br label %789

789:                                              ; preds = %781, %778
  %790 = load i32, ptr %112, align 4, !tbaa !9
  %791 = icmp ne i32 %790, 0
  br i1 %791, label %795, label %792

792:                                              ; preds = %789
  %793 = load i32, ptr %107, align 4, !tbaa !9
  %794 = icmp ne i32 %793, 0
  br i1 %794, label %821, label %795

795:                                              ; preds = %792, %789
  %796 = load ptr, ptr %31, align 8, !tbaa !5
  %797 = load ptr, ptr %32, align 8, !tbaa !5
  %798 = load ptr, ptr %34, align 8, !tbaa !5
  %799 = load ptr, ptr %45, align 8, !tbaa !5
  %800 = load ptr, ptr %46, align 8, !tbaa !5
  %801 = load ptr, ptr %35, align 8, !tbaa !5
  %802 = load i32, ptr %60, align 4, !tbaa !9
  %803 = sext i32 %802 to i64
  %804 = getelementptr inbounds %struct.doublecomplex, ptr %801, i64 %803
  %805 = load ptr, ptr %36, align 8, !tbaa !5
  %806 = load ptr, ptr %37, align 8, !tbaa !5
  %807 = load i32, ptr %62, align 4, !tbaa !9
  %808 = sext i32 %807 to i64
  %809 = getelementptr inbounds %struct.doublecomplex, ptr %806, i64 %808
  %810 = load ptr, ptr %38, align 8, !tbaa !5
  %811 = load ptr, ptr %41, align 8, !tbaa !5
  %812 = load i32, ptr %64, align 4, !tbaa !9
  %813 = sext i32 %812 to i64
  %814 = getelementptr inbounds %struct.doublecomplex, ptr %811, i64 %813
  %815 = load ptr, ptr %42, align 8, !tbaa !5
  %816 = load ptr, ptr %43, align 8, !tbaa !5
  %817 = load i32, ptr %66, align 4, !tbaa !9
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds %struct.doublecomplex, ptr %816, i64 %818
  %820 = load ptr, ptr %44, align 8, !tbaa !5
  call void @zgghrd_(ptr noundef %796, ptr noundef %797, ptr noundef %798, ptr noundef %799, ptr noundef %800, ptr noundef %804, ptr noundef %805, ptr noundef %809, ptr noundef %810, ptr noundef %814, ptr noundef %815, ptr noundef %819, ptr noundef %820, ptr noundef %78)
  br label %854

821:                                              ; preds = %792
  %822 = load ptr, ptr %35, align 8, !tbaa !5
  %823 = load ptr, ptr %45, align 8, !tbaa !5
  %824 = load i32, ptr %823, align 4, !tbaa !9
  %825 = load ptr, ptr %45, align 8, !tbaa !5
  %826 = load i32, ptr %825, align 4, !tbaa !9
  %827 = load i32, ptr %59, align 4, !tbaa !9
  %828 = mul nsw i32 %826, %827
  %829 = add nsw i32 %824, %828
  %830 = sext i32 %829 to i64
  %831 = getelementptr inbounds %struct.doublecomplex, ptr %822, i64 %830
  %832 = load ptr, ptr %36, align 8, !tbaa !5
  %833 = load ptr, ptr %37, align 8, !tbaa !5
  %834 = load ptr, ptr %45, align 8, !tbaa !5
  %835 = load i32, ptr %834, align 4, !tbaa !9
  %836 = load ptr, ptr %45, align 8, !tbaa !5
  %837 = load i32, ptr %836, align 4, !tbaa !9
  %838 = load i32, ptr %61, align 4, !tbaa !9
  %839 = mul nsw i32 %837, %838
  %840 = add nsw i32 %835, %839
  %841 = sext i32 %840 to i64
  %842 = getelementptr inbounds %struct.doublecomplex, ptr %833, i64 %841
  %843 = load ptr, ptr %38, align 8, !tbaa !5
  %844 = load ptr, ptr %41, align 8, !tbaa !5
  %845 = load i32, ptr %64, align 4, !tbaa !9
  %846 = sext i32 %845 to i64
  %847 = getelementptr inbounds %struct.doublecomplex, ptr %844, i64 %846
  %848 = load ptr, ptr %42, align 8, !tbaa !5
  %849 = load ptr, ptr %43, align 8, !tbaa !5
  %850 = load i32, ptr %66, align 4, !tbaa !9
  %851 = sext i32 %850 to i64
  %852 = getelementptr inbounds %struct.doublecomplex, ptr %849, i64 %851
  %853 = load ptr, ptr %44, align 8, !tbaa !5
  call void @zgghrd_(ptr noundef @.str, ptr noundef @.str, ptr noundef %90, ptr noundef @c__1, ptr noundef %90, ptr noundef %831, ptr noundef %832, ptr noundef %842, ptr noundef %843, ptr noundef %847, ptr noundef %848, ptr noundef %852, ptr noundef %853, ptr noundef %78)
  br label %854

854:                                              ; preds = %821, %795
  %855 = load i32, ptr %79, align 4, !tbaa !9
  store i32 %855, ptr %83, align 4, !tbaa !9
  %856 = load i32, ptr %112, align 4, !tbaa !9
  %857 = icmp ne i32 %856, 0
  br i1 %857, label %861, label %858

858:                                              ; preds = %854
  %859 = load i32, ptr %107, align 4, !tbaa !9
  %860 = icmp ne i32 %859, 0
  br i1 %860, label %863, label %861

861:                                              ; preds = %858, %854
  %862 = getelementptr inbounds [1 x i8], ptr %97, i64 0, i64 0
  store i8 83, ptr %862, align 1, !tbaa !16
  br label %865

863:                                              ; preds = %858
  %864 = getelementptr inbounds [1 x i8], ptr %97, i64 0, i64 0
  store i8 69, ptr %864, align 1, !tbaa !16
  br label %865

865:                                              ; preds = %863, %861
  %866 = load ptr, ptr %54, align 8, !tbaa !5
  %867 = load i32, ptr %866, align 4, !tbaa !9
  %868 = add nsw i32 %867, 1
  %869 = load i32, ptr %83, align 4, !tbaa !9
  %870 = sub nsw i32 %868, %869
  store i32 %870, ptr %67, align 4, !tbaa !9
  %871 = getelementptr inbounds [1 x i8], ptr %97, i64 0, i64 0
  %872 = load ptr, ptr %31, align 8, !tbaa !5
  %873 = load ptr, ptr %32, align 8, !tbaa !5
  %874 = load ptr, ptr %34, align 8, !tbaa !5
  %875 = load ptr, ptr %45, align 8, !tbaa !5
  %876 = load ptr, ptr %46, align 8, !tbaa !5
  %877 = load ptr, ptr %35, align 8, !tbaa !5
  %878 = load i32, ptr %60, align 4, !tbaa !9
  %879 = sext i32 %878 to i64
  %880 = getelementptr inbounds %struct.doublecomplex, ptr %877, i64 %879
  %881 = load ptr, ptr %36, align 8, !tbaa !5
  %882 = load ptr, ptr %37, align 8, !tbaa !5
  %883 = load i32, ptr %62, align 4, !tbaa !9
  %884 = sext i32 %883 to i64
  %885 = getelementptr inbounds %struct.doublecomplex, ptr %882, i64 %884
  %886 = load ptr, ptr %38, align 8, !tbaa !5
  %887 = load ptr, ptr %39, align 8, !tbaa !5
  %888 = getelementptr inbounds %struct.doublecomplex, ptr %887, i64 1
  %889 = load ptr, ptr %40, align 8, !tbaa !5
  %890 = getelementptr inbounds %struct.doublecomplex, ptr %889, i64 1
  %891 = load ptr, ptr %41, align 8, !tbaa !5
  %892 = load i32, ptr %64, align 4, !tbaa !9
  %893 = sext i32 %892 to i64
  %894 = getelementptr inbounds %struct.doublecomplex, ptr %891, i64 %893
  %895 = load ptr, ptr %42, align 8, !tbaa !5
  %896 = load ptr, ptr %43, align 8, !tbaa !5
  %897 = load i32, ptr %66, align 4, !tbaa !9
  %898 = sext i32 %897 to i64
  %899 = getelementptr inbounds %struct.doublecomplex, ptr %896, i64 %898
  %900 = load ptr, ptr %44, align 8, !tbaa !5
  %901 = load ptr, ptr %53, align 8, !tbaa !5
  %902 = load i32, ptr %83, align 4, !tbaa !9
  %903 = sext i32 %902 to i64
  %904 = getelementptr inbounds %struct.doublecomplex, ptr %901, i64 %903
  %905 = load ptr, ptr %55, align 8, !tbaa !5
  %906 = getelementptr inbounds double, ptr %905, i64 1
  call void @zhgeqz_(ptr noundef %871, ptr noundef %872, ptr noundef %873, ptr noundef %874, ptr noundef %875, ptr noundef %876, ptr noundef %880, ptr noundef %881, ptr noundef %885, ptr noundef %886, ptr noundef %888, ptr noundef %890, ptr noundef %894, ptr noundef %895, ptr noundef %899, ptr noundef %900, ptr noundef %904, ptr noundef %67, ptr noundef %906, ptr noundef %78)
  %907 = load i32, ptr %78, align 4, !tbaa !9
  %908 = icmp ne i32 %907, 0
  br i1 %908, label %909, label %944

909:                                              ; preds = %865
  %910 = load i32, ptr %78, align 4, !tbaa !9
  %911 = icmp sgt i32 %910, 0
  br i1 %911, label %912, label %920

912:                                              ; preds = %909
  %913 = load i32, ptr %78, align 4, !tbaa !9
  %914 = load ptr, ptr %34, align 8, !tbaa !5
  %915 = load i32, ptr %914, align 4, !tbaa !9
  %916 = icmp sle i32 %913, %915
  br i1 %916, label %917, label %920

917:                                              ; preds = %912
  %918 = load i32, ptr %78, align 4, !tbaa !9
  %919 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 %918, ptr %919, align 4, !tbaa !9
  br label %943

920:                                              ; preds = %912, %909
  %921 = load i32, ptr %78, align 4, !tbaa !9
  %922 = load ptr, ptr %34, align 8, !tbaa !5
  %923 = load i32, ptr %922, align 4, !tbaa !9
  %924 = icmp sgt i32 %921, %923
  br i1 %924, label %925, label %937

925:                                              ; preds = %920
  %926 = load i32, ptr %78, align 4, !tbaa !9
  %927 = load ptr, ptr %34, align 8, !tbaa !5
  %928 = load i32, ptr %927, align 4, !tbaa !9
  %929 = shl i32 %928, 1
  %930 = icmp sle i32 %926, %929
  br i1 %930, label %931, label %937

931:                                              ; preds = %925
  %932 = load i32, ptr %78, align 4, !tbaa !9
  %933 = load ptr, ptr %34, align 8, !tbaa !5
  %934 = load i32, ptr %933, align 4, !tbaa !9
  %935 = sub nsw i32 %932, %934
  %936 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 %935, ptr %936, align 4, !tbaa !9
  br label %942

937:                                              ; preds = %925, %920
  %938 = load ptr, ptr %34, align 8, !tbaa !5
  %939 = load i32, ptr %938, align 4, !tbaa !9
  %940 = add nsw i32 %939, 1
  %941 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 %940, ptr %941, align 4, !tbaa !9
  br label %942

942:                                              ; preds = %937, %931
  br label %943

943:                                              ; preds = %942, %917
  br label %1435

944:                                              ; preds = %865
  %945 = load i32, ptr %112, align 4, !tbaa !9
  %946 = icmp ne i32 %945, 0
  br i1 %946, label %950, label %947

947:                                              ; preds = %944
  %948 = load i32, ptr %107, align 4, !tbaa !9
  %949 = icmp ne i32 %948, 0
  br i1 %949, label %1130, label %950

950:                                              ; preds = %947, %944
  %951 = load i32, ptr %112, align 4, !tbaa !9
  %952 = icmp ne i32 %951, 0
  br i1 %952, label %953, label %1005

953:                                              ; preds = %950
  %954 = load i32, ptr %81, align 4, !tbaa !9
  %955 = icmp ne i32 %954, 0
  br i1 %955, label %956, label %964

956:                                              ; preds = %953
  %957 = load i32, ptr %82, align 4, !tbaa !9
  %958 = icmp ne i32 %957, 0
  br i1 %958, label %959, label %961

959:                                              ; preds = %956
  %960 = getelementptr inbounds [1 x i8], ptr %97, i64 0, i64 0
  store i8 66, ptr %960, align 1, !tbaa !16
  br label %963

961:                                              ; preds = %956
  %962 = getelementptr inbounds [1 x i8], ptr %97, i64 0, i64 0
  store i8 76, ptr %962, align 1, !tbaa !16
  br label %963

963:                                              ; preds = %961, %959
  br label %966

964:                                              ; preds = %953
  %965 = getelementptr inbounds [1 x i8], ptr %97, i64 0, i64 0
  store i8 82, ptr %965, align 1, !tbaa !16
  br label %966

966:                                              ; preds = %964, %963
  %967 = getelementptr inbounds [1 x i8], ptr %97, i64 0, i64 0
  %968 = getelementptr inbounds [1 x i32], ptr %96, i64 0, i64 0
  %969 = load ptr, ptr %34, align 8, !tbaa !5
  %970 = load ptr, ptr %35, align 8, !tbaa !5
  %971 = load i32, ptr %60, align 4, !tbaa !9
  %972 = sext i32 %971 to i64
  %973 = getelementptr inbounds %struct.doublecomplex, ptr %970, i64 %972
  %974 = load ptr, ptr %36, align 8, !tbaa !5
  %975 = load ptr, ptr %37, align 8, !tbaa !5
  %976 = load i32, ptr %62, align 4, !tbaa !9
  %977 = sext i32 %976 to i64
  %978 = getelementptr inbounds %struct.doublecomplex, ptr %975, i64 %977
  %979 = load ptr, ptr %38, align 8, !tbaa !5
  %980 = load ptr, ptr %41, align 8, !tbaa !5
  %981 = load i32, ptr %64, align 4, !tbaa !9
  %982 = sext i32 %981 to i64
  %983 = getelementptr inbounds %struct.doublecomplex, ptr %980, i64 %982
  %984 = load ptr, ptr %42, align 8, !tbaa !5
  %985 = load ptr, ptr %43, align 8, !tbaa !5
  %986 = load i32, ptr %66, align 4, !tbaa !9
  %987 = sext i32 %986 to i64
  %988 = getelementptr inbounds %struct.doublecomplex, ptr %985, i64 %987
  %989 = load ptr, ptr %44, align 8, !tbaa !5
  %990 = load ptr, ptr %34, align 8, !tbaa !5
  %991 = load ptr, ptr %53, align 8, !tbaa !5
  %992 = load i32, ptr %83, align 4, !tbaa !9
  %993 = sext i32 %992 to i64
  %994 = getelementptr inbounds %struct.doublecomplex, ptr %991, i64 %993
  %995 = load ptr, ptr %55, align 8, !tbaa !5
  %996 = getelementptr inbounds double, ptr %995, i64 1
  call void @ztgevc_(ptr noundef %967, ptr noundef @.str.4, ptr noundef %968, ptr noundef %969, ptr noundef %973, ptr noundef %974, ptr noundef %978, ptr noundef %979, ptr noundef %983, ptr noundef %984, ptr noundef %988, ptr noundef %989, ptr noundef %990, ptr noundef %92, ptr noundef %994, ptr noundef %996, ptr noundef %78)
  %997 = load i32, ptr %78, align 4, !tbaa !9
  %998 = icmp ne i32 %997, 0
  br i1 %998, label %999, label %1004

999:                                              ; preds = %966
  %1000 = load ptr, ptr %34, align 8, !tbaa !5
  %1001 = load i32, ptr %1000, align 4, !tbaa !9
  %1002 = add nsw i32 %1001, 2
  %1003 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 %1002, ptr %1003, align 4, !tbaa !9
  br label %1435

1004:                                             ; preds = %966
  br label %1005

1005:                                             ; preds = %1004, %950
  %1006 = load i32, ptr %107, align 4, !tbaa !9
  %1007 = icmp ne i32 %1006, 0
  br i1 %1007, label %1129, label %1008

1008:                                             ; preds = %1005
  %1009 = load ptr, ptr %34, align 8, !tbaa !5
  %1010 = load i32, ptr %1009, align 4, !tbaa !9
  store i32 %1010, ptr %67, align 4, !tbaa !9
  store i32 1, ptr %85, align 4, !tbaa !9
  br label %1011

1011:                                             ; preds = %1125, %1008
  %1012 = load i32, ptr %85, align 4, !tbaa !9
  %1013 = load i32, ptr %67, align 4, !tbaa !9
  %1014 = icmp sle i32 %1012, %1013
  br i1 %1014, label %1015, label %1128

1015:                                             ; preds = %1011
  %1016 = load ptr, ptr %34, align 8, !tbaa !5
  %1017 = load i32, ptr %1016, align 4, !tbaa !9
  store i32 %1017, ptr %68, align 4, !tbaa !9
  store i32 1, ptr %86, align 4, !tbaa !9
  br label %1018

1018:                                             ; preds = %1027, %1015
  %1019 = load i32, ptr %86, align 4, !tbaa !9
  %1020 = load i32, ptr %68, align 4, !tbaa !9
  %1021 = icmp sle i32 %1019, %1020
  br i1 %1021, label %1022, label %1030

1022:                                             ; preds = %1018
  %1023 = load ptr, ptr %57, align 8, !tbaa !5
  %1024 = load i32, ptr %86, align 4, !tbaa !9
  %1025 = sext i32 %1024 to i64
  %1026 = getelementptr inbounds i32, ptr %1023, i64 %1025
  store i32 0, ptr %1026, align 4, !tbaa !9
  br label %1027

1027:                                             ; preds = %1022
  %1028 = load i32, ptr %86, align 4, !tbaa !9
  %1029 = add nsw i32 %1028, 1
  store i32 %1029, ptr %86, align 4, !tbaa !9
  br label %1018, !llvm.loop !17

1030:                                             ; preds = %1018
  %1031 = load ptr, ptr %57, align 8, !tbaa !5
  %1032 = load i32, ptr %85, align 4, !tbaa !9
  %1033 = sext i32 %1032 to i64
  %1034 = getelementptr inbounds i32, ptr %1031, i64 %1033
  store i32 1, ptr %1034, align 4, !tbaa !9
  %1035 = load ptr, ptr %34, align 8, !tbaa !5
  %1036 = load i32, ptr %1035, align 4, !tbaa !9
  %1037 = add nsw i32 %1036, 1
  store i32 %1037, ptr %83, align 4, !tbaa !9
  %1038 = load i32, ptr %83, align 4, !tbaa !9
  %1039 = load ptr, ptr %34, align 8, !tbaa !5
  %1040 = load i32, ptr %1039, align 4, !tbaa !9
  %1041 = add nsw i32 %1038, %1040
  store i32 %1041, ptr %84, align 4, !tbaa !9
  %1042 = load i32, ptr %103, align 4, !tbaa !9
  %1043 = icmp ne i32 %1042, 0
  br i1 %1043, label %1047, label %1044

1044:                                             ; preds = %1030
  %1045 = load i32, ptr %101, align 4, !tbaa !9
  %1046 = icmp ne i32 %1045, 0
  br i1 %1046, label %1047, label %1083

1047:                                             ; preds = %1044, %1030
  %1048 = load ptr, ptr %57, align 8, !tbaa !5
  %1049 = getelementptr inbounds i32, ptr %1048, i64 1
  %1050 = load ptr, ptr %34, align 8, !tbaa !5
  %1051 = load ptr, ptr %35, align 8, !tbaa !5
  %1052 = load i32, ptr %60, align 4, !tbaa !9
  %1053 = sext i32 %1052 to i64
  %1054 = getelementptr inbounds %struct.doublecomplex, ptr %1051, i64 %1053
  %1055 = load ptr, ptr %36, align 8, !tbaa !5
  %1056 = load ptr, ptr %37, align 8, !tbaa !5
  %1057 = load i32, ptr %62, align 4, !tbaa !9
  %1058 = sext i32 %1057 to i64
  %1059 = getelementptr inbounds %struct.doublecomplex, ptr %1056, i64 %1058
  %1060 = load ptr, ptr %38, align 8, !tbaa !5
  %1061 = load ptr, ptr %53, align 8, !tbaa !5
  %1062 = getelementptr inbounds %struct.doublecomplex, ptr %1061, i64 1
  %1063 = load ptr, ptr %34, align 8, !tbaa !5
  %1064 = load ptr, ptr %53, align 8, !tbaa !5
  %1065 = load i32, ptr %83, align 4, !tbaa !9
  %1066 = sext i32 %1065 to i64
  %1067 = getelementptr inbounds %struct.doublecomplex, ptr %1064, i64 %1066
  %1068 = load ptr, ptr %34, align 8, !tbaa !5
  %1069 = load ptr, ptr %53, align 8, !tbaa !5
  %1070 = load i32, ptr %84, align 4, !tbaa !9
  %1071 = sext i32 %1070 to i64
  %1072 = getelementptr inbounds %struct.doublecomplex, ptr %1069, i64 %1071
  %1073 = load ptr, ptr %55, align 8, !tbaa !5
  %1074 = getelementptr inbounds double, ptr %1073, i64 1
  call void @ztgevc_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef %1049, ptr noundef %1050, ptr noundef %1054, ptr noundef %1055, ptr noundef %1059, ptr noundef %1060, ptr noundef %1062, ptr noundef %1063, ptr noundef %1067, ptr noundef %1068, ptr noundef @c__1, ptr noundef %87, ptr noundef %1072, ptr noundef %1074, ptr noundef %78)
  %1075 = load i32, ptr %78, align 4, !tbaa !9
  %1076 = icmp ne i32 %1075, 0
  br i1 %1076, label %1077, label %1082

1077:                                             ; preds = %1047
  %1078 = load ptr, ptr %34, align 8, !tbaa !5
  %1079 = load i32, ptr %1078, align 4, !tbaa !9
  %1080 = add nsw i32 %1079, 2
  %1081 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 %1080, ptr %1081, align 4, !tbaa !9
  br label %1435

1082:                                             ; preds = %1047
  br label %1083

1083:                                             ; preds = %1082, %1044
  %1084 = load ptr, ptr %54, align 8, !tbaa !5
  %1085 = load i32, ptr %1084, align 4, !tbaa !9
  %1086 = load i32, ptr %84, align 4, !tbaa !9
  %1087 = sub nsw i32 %1085, %1086
  %1088 = add nsw i32 %1087, 1
  store i32 %1088, ptr %68, align 4, !tbaa !9
  %1089 = load ptr, ptr %33, align 8, !tbaa !5
  %1090 = load ptr, ptr %57, align 8, !tbaa !5
  %1091 = getelementptr inbounds i32, ptr %1090, i64 1
  %1092 = load ptr, ptr %34, align 8, !tbaa !5
  %1093 = load ptr, ptr %35, align 8, !tbaa !5
  %1094 = load i32, ptr %60, align 4, !tbaa !9
  %1095 = sext i32 %1094 to i64
  %1096 = getelementptr inbounds %struct.doublecomplex, ptr %1093, i64 %1095
  %1097 = load ptr, ptr %36, align 8, !tbaa !5
  %1098 = load ptr, ptr %37, align 8, !tbaa !5
  %1099 = load i32, ptr %62, align 4, !tbaa !9
  %1100 = sext i32 %1099 to i64
  %1101 = getelementptr inbounds %struct.doublecomplex, ptr %1098, i64 %1100
  %1102 = load ptr, ptr %38, align 8, !tbaa !5
  %1103 = load ptr, ptr %53, align 8, !tbaa !5
  %1104 = getelementptr inbounds %struct.doublecomplex, ptr %1103, i64 1
  %1105 = load ptr, ptr %34, align 8, !tbaa !5
  %1106 = load ptr, ptr %53, align 8, !tbaa !5
  %1107 = load i32, ptr %83, align 4, !tbaa !9
  %1108 = sext i32 %1107 to i64
  %1109 = getelementptr inbounds %struct.doublecomplex, ptr %1106, i64 %1108
  %1110 = load ptr, ptr %34, align 8, !tbaa !5
  %1111 = load ptr, ptr %51, align 8, !tbaa !5
  %1112 = load i32, ptr %85, align 4, !tbaa !9
  %1113 = sext i32 %1112 to i64
  %1114 = getelementptr inbounds double, ptr %1111, i64 %1113
  %1115 = load ptr, ptr %52, align 8, !tbaa !5
  %1116 = load i32, ptr %85, align 4, !tbaa !9
  %1117 = sext i32 %1116 to i64
  %1118 = getelementptr inbounds double, ptr %1115, i64 %1117
  %1119 = load ptr, ptr %53, align 8, !tbaa !5
  %1120 = load i32, ptr %84, align 4, !tbaa !9
  %1121 = sext i32 %1120 to i64
  %1122 = getelementptr inbounds %struct.doublecomplex, ptr %1119, i64 %1121
  %1123 = load ptr, ptr %56, align 8, !tbaa !5
  %1124 = getelementptr inbounds i32, ptr %1123, i64 1
  call void @ztgsna_(ptr noundef %1089, ptr noundef @.str.5, ptr noundef %1091, ptr noundef %1092, ptr noundef %1096, ptr noundef %1097, ptr noundef %1101, ptr noundef %1102, ptr noundef %1104, ptr noundef %1105, ptr noundef %1109, ptr noundef %1110, ptr noundef %1114, ptr noundef %1118, ptr noundef @c__1, ptr noundef %87, ptr noundef %1122, ptr noundef %68, ptr noundef %1124, ptr noundef %78)
  br label %1125

1125:                                             ; preds = %1083
  %1126 = load i32, ptr %85, align 4, !tbaa !9
  %1127 = add nsw i32 %1126, 1
  store i32 %1127, ptr %85, align 4, !tbaa !9
  br label %1011, !llvm.loop !19

1128:                                             ; preds = %1011
  br label %1129

1129:                                             ; preds = %1128, %1005
  br label %1130

1130:                                             ; preds = %1129, %947
  %1131 = load i32, ptr %81, align 4, !tbaa !9
  %1132 = icmp ne i32 %1131, 0
  br i1 %1132, label %1133, label %1282

1133:                                             ; preds = %1130
  %1134 = load ptr, ptr %30, align 8, !tbaa !5
  %1135 = load ptr, ptr %34, align 8, !tbaa !5
  %1136 = load ptr, ptr %45, align 8, !tbaa !5
  %1137 = load ptr, ptr %46, align 8, !tbaa !5
  %1138 = load ptr, ptr %47, align 8, !tbaa !5
  %1139 = getelementptr inbounds double, ptr %1138, i64 1
  %1140 = load ptr, ptr %48, align 8, !tbaa !5
  %1141 = getelementptr inbounds double, ptr %1140, i64 1
  %1142 = load ptr, ptr %34, align 8, !tbaa !5
  %1143 = load ptr, ptr %41, align 8, !tbaa !5
  %1144 = load i32, ptr %64, align 4, !tbaa !9
  %1145 = sext i32 %1144 to i64
  %1146 = getelementptr inbounds %struct.doublecomplex, ptr %1143, i64 %1145
  %1147 = load ptr, ptr %42, align 8, !tbaa !5
  call void @zggbak_(ptr noundef %1134, ptr noundef @.str.14, ptr noundef %1135, ptr noundef %1136, ptr noundef %1137, ptr noundef %1139, ptr noundef %1141, ptr noundef %1142, ptr noundef %1146, ptr noundef %1147, ptr noundef %78)
  %1148 = load ptr, ptr %34, align 8, !tbaa !5
  %1149 = load i32, ptr %1148, align 4, !tbaa !9
  store i32 %1149, ptr %67, align 4, !tbaa !9
  store i32 1, ptr %91, align 4, !tbaa !9
  br label %1150

1150:                                             ; preds = %1278, %1133
  %1151 = load i32, ptr %91, align 4, !tbaa !9
  %1152 = load i32, ptr %67, align 4, !tbaa !9
  %1153 = icmp sle i32 %1151, %1152
  br i1 %1153, label %1154, label %1281

1154:                                             ; preds = %1150
  store double 0.000000e+00, ptr %80, align 8, !tbaa !15
  %1155 = load ptr, ptr %34, align 8, !tbaa !5
  %1156 = load i32, ptr %1155, align 4, !tbaa !9
  store i32 %1156, ptr %68, align 4, !tbaa !9
  store i32 1, ptr %93, align 4, !tbaa !9
  br label %1157

1157:                                             ; preds = %1213, %1154
  %1158 = load i32, ptr %93, align 4, !tbaa !9
  %1159 = load i32, ptr %68, align 4, !tbaa !9
  %1160 = icmp sle i32 %1158, %1159
  br i1 %1160, label %1161, label %1216

1161:                                             ; preds = %1157
  %1162 = load i32, ptr %93, align 4, !tbaa !9
  %1163 = load i32, ptr %91, align 4, !tbaa !9
  %1164 = load i32, ptr %63, align 4, !tbaa !9
  %1165 = mul nsw i32 %1163, %1164
  %1166 = add nsw i32 %1162, %1165
  store i32 %1166, ptr %69, align 4, !tbaa !9
  %1167 = load double, ptr %80, align 8, !tbaa !15
  store double %1167, ptr %73, align 8, !tbaa !15
  %1168 = load ptr, ptr %41, align 8, !tbaa !5
  %1169 = load i32, ptr %69, align 4, !tbaa !9
  %1170 = sext i32 %1169 to i64
  %1171 = getelementptr inbounds %struct.doublecomplex, ptr %1168, i64 %1170
  %1172 = getelementptr inbounds %struct.doublecomplex, ptr %1171, i32 0, i32 0
  %1173 = load double, ptr %1172, align 8, !tbaa !11
  store double %1173, ptr %71, align 8, !tbaa !15
  %1174 = load double, ptr %71, align 8, !tbaa !15
  %1175 = fcmp oge double %1174, 0.000000e+00
  br i1 %1175, label %1176, label %1178

1176:                                             ; preds = %1161
  %1177 = load double, ptr %71, align 8, !tbaa !15
  br label %1181

1178:                                             ; preds = %1161
  %1179 = load double, ptr %71, align 8, !tbaa !15
  %1180 = fneg double %1179
  br label %1181

1181:                                             ; preds = %1178, %1176
  %1182 = phi double [ %1177, %1176 ], [ %1180, %1178 ]
  %1183 = load ptr, ptr %41, align 8, !tbaa !5
  %1184 = load i32, ptr %93, align 4, !tbaa !9
  %1185 = load i32, ptr %91, align 4, !tbaa !9
  %1186 = load i32, ptr %63, align 4, !tbaa !9
  %1187 = mul nsw i32 %1185, %1186
  %1188 = add nsw i32 %1184, %1187
  %1189 = sext i32 %1188 to i64
  %1190 = getelementptr inbounds %struct.doublecomplex, ptr %1183, i64 %1189
  %1191 = call { double, double } @Cd(ptr noundef %1190)
  %1192 = extractvalue { double, double } %1191, 0
  %1193 = extractvalue { double, double } %1191, 1
  store double %1193, ptr %72, align 8, !tbaa !15
  %1194 = load double, ptr %72, align 8, !tbaa !15
  %1195 = fcmp oge double %1194, 0.000000e+00
  br i1 %1195, label %1196, label %1198

1196:                                             ; preds = %1181
  %1197 = load double, ptr %72, align 8, !tbaa !15
  br label %1201

1198:                                             ; preds = %1181
  %1199 = load double, ptr %72, align 8, !tbaa !15
  %1200 = fneg double %1199
  br label %1201

1201:                                             ; preds = %1198, %1196
  %1202 = phi double [ %1197, %1196 ], [ %1200, %1198 ]
  %1203 = fadd double %1182, %1202
  store double %1203, ptr %74, align 8, !tbaa !15
  %1204 = load double, ptr %73, align 8, !tbaa !15
  %1205 = load double, ptr %74, align 8, !tbaa !15
  %1206 = fcmp oge double %1204, %1205
  br i1 %1206, label %1207, label %1209

1207:                                             ; preds = %1201
  %1208 = load double, ptr %73, align 8, !tbaa !15
  br label %1211

1209:                                             ; preds = %1201
  %1210 = load double, ptr %74, align 8, !tbaa !15
  br label %1211

1211:                                             ; preds = %1209, %1207
  %1212 = phi double [ %1208, %1207 ], [ %1210, %1209 ]
  store double %1212, ptr %80, align 8, !tbaa !15
  br label %1213

1213:                                             ; preds = %1211
  %1214 = load i32, ptr %93, align 4, !tbaa !9
  %1215 = add nsw i32 %1214, 1
  store i32 %1215, ptr %93, align 4, !tbaa !9
  br label %1157, !llvm.loop !20

1216:                                             ; preds = %1157
  %1217 = load double, ptr %80, align 8, !tbaa !15
  %1218 = load double, ptr %108, align 8, !tbaa !15
  %1219 = fcmp olt double %1217, %1218
  br i1 %1219, label %1220, label %1221

1220:                                             ; preds = %1216
  br label %1277

1221:                                             ; preds = %1216
  %1222 = load double, ptr %80, align 8, !tbaa !15
  %1223 = fdiv double 1.000000e+00, %1222
  store double %1223, ptr %80, align 8, !tbaa !15
  %1224 = load ptr, ptr %34, align 8, !tbaa !5
  %1225 = load i32, ptr %1224, align 4, !tbaa !9
  store i32 %1225, ptr %68, align 4, !tbaa !9
  store i32 1, ptr %93, align 4, !tbaa !9
  br label %1226

1226:                                             ; preds = %1273, %1221
  %1227 = load i32, ptr %93, align 4, !tbaa !9
  %1228 = load i32, ptr %68, align 4, !tbaa !9
  %1229 = icmp sle i32 %1227, %1228
  br i1 %1229, label %1230, label %1276

1230:                                             ; preds = %1226
  %1231 = load i32, ptr %93, align 4, !tbaa !9
  %1232 = load i32, ptr %91, align 4, !tbaa !9
  %1233 = load i32, ptr %63, align 4, !tbaa !9
  %1234 = mul nsw i32 %1232, %1233
  %1235 = add nsw i32 %1231, %1234
  store i32 %1235, ptr %69, align 4, !tbaa !9
  %1236 = load i32, ptr %93, align 4, !tbaa !9
  %1237 = load i32, ptr %91, align 4, !tbaa !9
  %1238 = load i32, ptr %63, align 4, !tbaa !9
  %1239 = mul nsw i32 %1237, %1238
  %1240 = add nsw i32 %1236, %1239
  store i32 %1240, ptr %70, align 4, !tbaa !9
  %1241 = load double, ptr %80, align 8, !tbaa !15
  %1242 = load ptr, ptr %41, align 8, !tbaa !5
  %1243 = load i32, ptr %70, align 4, !tbaa !9
  %1244 = sext i32 %1243 to i64
  %1245 = getelementptr inbounds %struct.doublecomplex, ptr %1242, i64 %1244
  %1246 = getelementptr inbounds %struct.doublecomplex, ptr %1245, i32 0, i32 0
  %1247 = load double, ptr %1246, align 8, !tbaa !11
  %1248 = fmul double %1241, %1247
  %1249 = getelementptr inbounds %struct.doublecomplex, ptr %75, i32 0, i32 0
  store double %1248, ptr %1249, align 8, !tbaa !11
  %1250 = load double, ptr %80, align 8, !tbaa !15
  %1251 = load ptr, ptr %41, align 8, !tbaa !5
  %1252 = load i32, ptr %70, align 4, !tbaa !9
  %1253 = sext i32 %1252 to i64
  %1254 = getelementptr inbounds %struct.doublecomplex, ptr %1251, i64 %1253
  %1255 = getelementptr inbounds %struct.doublecomplex, ptr %1254, i32 0, i32 1
  %1256 = load double, ptr %1255, align 8, !tbaa !14
  %1257 = fmul double %1250, %1256
  %1258 = getelementptr inbounds %struct.doublecomplex, ptr %75, i32 0, i32 1
  store double %1257, ptr %1258, align 8, !tbaa !14
  %1259 = getelementptr inbounds %struct.doublecomplex, ptr %75, i32 0, i32 0
  %1260 = load double, ptr %1259, align 8, !tbaa !11
  %1261 = load ptr, ptr %41, align 8, !tbaa !5
  %1262 = load i32, ptr %69, align 4, !tbaa !9
  %1263 = sext i32 %1262 to i64
  %1264 = getelementptr inbounds %struct.doublecomplex, ptr %1261, i64 %1263
  %1265 = getelementptr inbounds %struct.doublecomplex, ptr %1264, i32 0, i32 0
  store double %1260, ptr %1265, align 8, !tbaa !11
  %1266 = getelementptr inbounds %struct.doublecomplex, ptr %75, i32 0, i32 1
  %1267 = load double, ptr %1266, align 8, !tbaa !14
  %1268 = load ptr, ptr %41, align 8, !tbaa !5
  %1269 = load i32, ptr %69, align 4, !tbaa !9
  %1270 = sext i32 %1269 to i64
  %1271 = getelementptr inbounds %struct.doublecomplex, ptr %1268, i64 %1270
  %1272 = getelementptr inbounds %struct.doublecomplex, ptr %1271, i32 0, i32 1
  store double %1267, ptr %1272, align 8, !tbaa !14
  br label %1273

1273:                                             ; preds = %1230
  %1274 = load i32, ptr %93, align 4, !tbaa !9
  %1275 = add nsw i32 %1274, 1
  store i32 %1275, ptr %93, align 4, !tbaa !9
  br label %1226, !llvm.loop !21

1276:                                             ; preds = %1226
  br label %1277

1277:                                             ; preds = %1276, %1220
  br label %1278

1278:                                             ; preds = %1277
  %1279 = load i32, ptr %91, align 4, !tbaa !9
  %1280 = add nsw i32 %1279, 1
  store i32 %1280, ptr %91, align 4, !tbaa !9
  br label %1150, !llvm.loop !22

1281:                                             ; preds = %1150
  br label %1282

1282:                                             ; preds = %1281, %1130
  %1283 = load i32, ptr %82, align 4, !tbaa !9
  %1284 = icmp ne i32 %1283, 0
  br i1 %1284, label %1285, label %1434

1285:                                             ; preds = %1282
  %1286 = load ptr, ptr %30, align 8, !tbaa !5
  %1287 = load ptr, ptr %34, align 8, !tbaa !5
  %1288 = load ptr, ptr %45, align 8, !tbaa !5
  %1289 = load ptr, ptr %46, align 8, !tbaa !5
  %1290 = load ptr, ptr %47, align 8, !tbaa !5
  %1291 = getelementptr inbounds double, ptr %1290, i64 1
  %1292 = load ptr, ptr %48, align 8, !tbaa !5
  %1293 = getelementptr inbounds double, ptr %1292, i64 1
  %1294 = load ptr, ptr %34, align 8, !tbaa !5
  %1295 = load ptr, ptr %43, align 8, !tbaa !5
  %1296 = load i32, ptr %66, align 4, !tbaa !9
  %1297 = sext i32 %1296 to i64
  %1298 = getelementptr inbounds %struct.doublecomplex, ptr %1295, i64 %1297
  %1299 = load ptr, ptr %44, align 8, !tbaa !5
  call void @zggbak_(ptr noundef %1286, ptr noundef @.str.17, ptr noundef %1287, ptr noundef %1288, ptr noundef %1289, ptr noundef %1291, ptr noundef %1293, ptr noundef %1294, ptr noundef %1298, ptr noundef %1299, ptr noundef %78)
  %1300 = load ptr, ptr %34, align 8, !tbaa !5
  %1301 = load i32, ptr %1300, align 4, !tbaa !9
  store i32 %1301, ptr %67, align 4, !tbaa !9
  store i32 1, ptr %91, align 4, !tbaa !9
  br label %1302

1302:                                             ; preds = %1430, %1285
  %1303 = load i32, ptr %91, align 4, !tbaa !9
  %1304 = load i32, ptr %67, align 4, !tbaa !9
  %1305 = icmp sle i32 %1303, %1304
  br i1 %1305, label %1306, label %1433

1306:                                             ; preds = %1302
  store double 0.000000e+00, ptr %80, align 8, !tbaa !15
  %1307 = load ptr, ptr %34, align 8, !tbaa !5
  %1308 = load i32, ptr %1307, align 4, !tbaa !9
  store i32 %1308, ptr %68, align 4, !tbaa !9
  store i32 1, ptr %93, align 4, !tbaa !9
  br label %1309

1309:                                             ; preds = %1365, %1306
  %1310 = load i32, ptr %93, align 4, !tbaa !9
  %1311 = load i32, ptr %68, align 4, !tbaa !9
  %1312 = icmp sle i32 %1310, %1311
  br i1 %1312, label %1313, label %1368

1313:                                             ; preds = %1309
  %1314 = load i32, ptr %93, align 4, !tbaa !9
  %1315 = load i32, ptr %91, align 4, !tbaa !9
  %1316 = load i32, ptr %65, align 4, !tbaa !9
  %1317 = mul nsw i32 %1315, %1316
  %1318 = add nsw i32 %1314, %1317
  store i32 %1318, ptr %69, align 4, !tbaa !9
  %1319 = load double, ptr %80, align 8, !tbaa !15
  store double %1319, ptr %73, align 8, !tbaa !15
  %1320 = load ptr, ptr %43, align 8, !tbaa !5
  %1321 = load i32, ptr %69, align 4, !tbaa !9
  %1322 = sext i32 %1321 to i64
  %1323 = getelementptr inbounds %struct.doublecomplex, ptr %1320, i64 %1322
  %1324 = getelementptr inbounds %struct.doublecomplex, ptr %1323, i32 0, i32 0
  %1325 = load double, ptr %1324, align 8, !tbaa !11
  store double %1325, ptr %71, align 8, !tbaa !15
  %1326 = load double, ptr %71, align 8, !tbaa !15
  %1327 = fcmp oge double %1326, 0.000000e+00
  br i1 %1327, label %1328, label %1330

1328:                                             ; preds = %1313
  %1329 = load double, ptr %71, align 8, !tbaa !15
  br label %1333

1330:                                             ; preds = %1313
  %1331 = load double, ptr %71, align 8, !tbaa !15
  %1332 = fneg double %1331
  br label %1333

1333:                                             ; preds = %1330, %1328
  %1334 = phi double [ %1329, %1328 ], [ %1332, %1330 ]
  %1335 = load ptr, ptr %43, align 8, !tbaa !5
  %1336 = load i32, ptr %93, align 4, !tbaa !9
  %1337 = load i32, ptr %91, align 4, !tbaa !9
  %1338 = load i32, ptr %65, align 4, !tbaa !9
  %1339 = mul nsw i32 %1337, %1338
  %1340 = add nsw i32 %1336, %1339
  %1341 = sext i32 %1340 to i64
  %1342 = getelementptr inbounds %struct.doublecomplex, ptr %1335, i64 %1341
  %1343 = call { double, double } @Cd(ptr noundef %1342)
  %1344 = extractvalue { double, double } %1343, 0
  %1345 = extractvalue { double, double } %1343, 1
  store double %1345, ptr %72, align 8, !tbaa !15
  %1346 = load double, ptr %72, align 8, !tbaa !15
  %1347 = fcmp oge double %1346, 0.000000e+00
  br i1 %1347, label %1348, label %1350

1348:                                             ; preds = %1333
  %1349 = load double, ptr %72, align 8, !tbaa !15
  br label %1353

1350:                                             ; preds = %1333
  %1351 = load double, ptr %72, align 8, !tbaa !15
  %1352 = fneg double %1351
  br label %1353

1353:                                             ; preds = %1350, %1348
  %1354 = phi double [ %1349, %1348 ], [ %1352, %1350 ]
  %1355 = fadd double %1334, %1354
  store double %1355, ptr %74, align 8, !tbaa !15
  %1356 = load double, ptr %73, align 8, !tbaa !15
  %1357 = load double, ptr %74, align 8, !tbaa !15
  %1358 = fcmp oge double %1356, %1357
  br i1 %1358, label %1359, label %1361

1359:                                             ; preds = %1353
  %1360 = load double, ptr %73, align 8, !tbaa !15
  br label %1363

1361:                                             ; preds = %1353
  %1362 = load double, ptr %74, align 8, !tbaa !15
  br label %1363

1363:                                             ; preds = %1361, %1359
  %1364 = phi double [ %1360, %1359 ], [ %1362, %1361 ]
  store double %1364, ptr %80, align 8, !tbaa !15
  br label %1365

1365:                                             ; preds = %1363
  %1366 = load i32, ptr %93, align 4, !tbaa !9
  %1367 = add nsw i32 %1366, 1
  store i32 %1367, ptr %93, align 4, !tbaa !9
  br label %1309, !llvm.loop !23

1368:                                             ; preds = %1309
  %1369 = load double, ptr %80, align 8, !tbaa !15
  %1370 = load double, ptr %108, align 8, !tbaa !15
  %1371 = fcmp olt double %1369, %1370
  br i1 %1371, label %1372, label %1373

1372:                                             ; preds = %1368
  br label %1429

1373:                                             ; preds = %1368
  %1374 = load double, ptr %80, align 8, !tbaa !15
  %1375 = fdiv double 1.000000e+00, %1374
  store double %1375, ptr %80, align 8, !tbaa !15
  %1376 = load ptr, ptr %34, align 8, !tbaa !5
  %1377 = load i32, ptr %1376, align 4, !tbaa !9
  store i32 %1377, ptr %68, align 4, !tbaa !9
  store i32 1, ptr %93, align 4, !tbaa !9
  br label %1378

1378:                                             ; preds = %1425, %1373
  %1379 = load i32, ptr %93, align 4, !tbaa !9
  %1380 = load i32, ptr %68, align 4, !tbaa !9
  %1381 = icmp sle i32 %1379, %1380
  br i1 %1381, label %1382, label %1428

1382:                                             ; preds = %1378
  %1383 = load i32, ptr %93, align 4, !tbaa !9
  %1384 = load i32, ptr %91, align 4, !tbaa !9
  %1385 = load i32, ptr %65, align 4, !tbaa !9
  %1386 = mul nsw i32 %1384, %1385
  %1387 = add nsw i32 %1383, %1386
  store i32 %1387, ptr %69, align 4, !tbaa !9
  %1388 = load i32, ptr %93, align 4, !tbaa !9
  %1389 = load i32, ptr %91, align 4, !tbaa !9
  %1390 = load i32, ptr %65, align 4, !tbaa !9
  %1391 = mul nsw i32 %1389, %1390
  %1392 = add nsw i32 %1388, %1391
  store i32 %1392, ptr %70, align 4, !tbaa !9
  %1393 = load double, ptr %80, align 8, !tbaa !15
  %1394 = load ptr, ptr %43, align 8, !tbaa !5
  %1395 = load i32, ptr %70, align 4, !tbaa !9
  %1396 = sext i32 %1395 to i64
  %1397 = getelementptr inbounds %struct.doublecomplex, ptr %1394, i64 %1396
  %1398 = getelementptr inbounds %struct.doublecomplex, ptr %1397, i32 0, i32 0
  %1399 = load double, ptr %1398, align 8, !tbaa !11
  %1400 = fmul double %1393, %1399
  %1401 = getelementptr inbounds %struct.doublecomplex, ptr %75, i32 0, i32 0
  store double %1400, ptr %1401, align 8, !tbaa !11
  %1402 = load double, ptr %80, align 8, !tbaa !15
  %1403 = load ptr, ptr %43, align 8, !tbaa !5
  %1404 = load i32, ptr %70, align 4, !tbaa !9
  %1405 = sext i32 %1404 to i64
  %1406 = getelementptr inbounds %struct.doublecomplex, ptr %1403, i64 %1405
  %1407 = getelementptr inbounds %struct.doublecomplex, ptr %1406, i32 0, i32 1
  %1408 = load double, ptr %1407, align 8, !tbaa !14
  %1409 = fmul double %1402, %1408
  %1410 = getelementptr inbounds %struct.doublecomplex, ptr %75, i32 0, i32 1
  store double %1409, ptr %1410, align 8, !tbaa !14
  %1411 = getelementptr inbounds %struct.doublecomplex, ptr %75, i32 0, i32 0
  %1412 = load double, ptr %1411, align 8, !tbaa !11
  %1413 = load ptr, ptr %43, align 8, !tbaa !5
  %1414 = load i32, ptr %69, align 4, !tbaa !9
  %1415 = sext i32 %1414 to i64
  %1416 = getelementptr inbounds %struct.doublecomplex, ptr %1413, i64 %1415
  %1417 = getelementptr inbounds %struct.doublecomplex, ptr %1416, i32 0, i32 0
  store double %1412, ptr %1417, align 8, !tbaa !11
  %1418 = getelementptr inbounds %struct.doublecomplex, ptr %75, i32 0, i32 1
  %1419 = load double, ptr %1418, align 8, !tbaa !14
  %1420 = load ptr, ptr %43, align 8, !tbaa !5
  %1421 = load i32, ptr %69, align 4, !tbaa !9
  %1422 = sext i32 %1421 to i64
  %1423 = getelementptr inbounds %struct.doublecomplex, ptr %1420, i64 %1422
  %1424 = getelementptr inbounds %struct.doublecomplex, ptr %1423, i32 0, i32 1
  store double %1419, ptr %1424, align 8, !tbaa !14
  br label %1425

1425:                                             ; preds = %1382
  %1426 = load i32, ptr %93, align 4, !tbaa !9
  %1427 = add nsw i32 %1426, 1
  store i32 %1427, ptr %93, align 4, !tbaa !9
  br label %1378, !llvm.loop !24

1428:                                             ; preds = %1378
  br label %1429

1429:                                             ; preds = %1428, %1372
  br label %1430

1430:                                             ; preds = %1429
  %1431 = load i32, ptr %91, align 4, !tbaa !9
  %1432 = add nsw i32 %1431, 1
  store i32 %1432, ptr %91, align 4, !tbaa !9
  br label %1302, !llvm.loop !25

1433:                                             ; preds = %1302
  br label %1434

1434:                                             ; preds = %1433, %1282
  br label %1435

1435:                                             ; preds = %1434, %1077, %999, %943
  %1436 = load i32, ptr %94, align 4, !tbaa !9
  %1437 = icmp ne i32 %1436, 0
  br i1 %1437, label %1438, label %1443

1438:                                             ; preds = %1435
  %1439 = load ptr, ptr %34, align 8, !tbaa !5
  %1440 = load ptr, ptr %39, align 8, !tbaa !5
  %1441 = getelementptr inbounds %struct.doublecomplex, ptr %1440, i64 1
  %1442 = load ptr, ptr %34, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %102, ptr noundef %76, ptr noundef %1439, ptr noundef @c__1, ptr noundef %1441, ptr noundef %1442, ptr noundef %78)
  br label %1443

1443:                                             ; preds = %1438, %1435
  %1444 = load i32, ptr %95, align 4, !tbaa !9
  %1445 = icmp ne i32 %1444, 0
  br i1 %1445, label %1446, label %1451

1446:                                             ; preds = %1443
  %1447 = load ptr, ptr %34, align 8, !tbaa !5
  %1448 = load ptr, ptr %40, align 8, !tbaa !5
  %1449 = getelementptr inbounds %struct.doublecomplex, ptr %1448, i64 1
  %1450 = load ptr, ptr %34, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %104, ptr noundef %77, ptr noundef %1447, ptr noundef @c__1, ptr noundef %1449, ptr noundef %1450, ptr noundef %78)
  br label %1451

1451:                                             ; preds = %1446, %1443
  %1452 = load i32, ptr %106, align 4, !tbaa !9
  %1453 = sitofp i32 %1452 to double
  %1454 = load ptr, ptr %53, align 8, !tbaa !5
  %1455 = getelementptr inbounds %struct.doublecomplex, ptr %1454, i64 1
  %1456 = getelementptr inbounds %struct.doublecomplex, ptr %1455, i32 0, i32 0
  store double %1453, ptr %1456, align 8, !tbaa !11
  %1457 = load ptr, ptr %53, align 8, !tbaa !5
  %1458 = getelementptr inbounds %struct.doublecomplex, ptr %1457, i64 1
  %1459 = getelementptr inbounds %struct.doublecomplex, ptr %1458, i32 0, i32 1
  store double 0.000000e+00, ptr %1459, align 8, !tbaa !14
  store i32 1, ptr %113, align 4
  br label %1460

1460:                                             ; preds = %1451, %473, %467, %459
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #5
  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 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 @zggbal_(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 @dlascl_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

declare void @zggbak_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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 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 = { 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}
!22 = distinct !{!22, !18}
!23 = distinct !{!23, !18}
!24 = distinct !{!24, !18}
!25 = distinct !{!25, !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 [7 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 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 [5 x i8], align 1
@c_b1 = external hidden global %struct.doublecomplex, align 8
@c_b2 = external hidden global %struct.doublecomplex, align 8
@.str.17 = external hidden unnamed_addr constant [2 x i8], align 1

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

62:                                               ; preds = %29
  %63 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #7
  %.not571 = icmp eq i32 %63, 0
  br label %64

64:                                               ; preds = %62, %29
  %.not585 = phi i1 [ true, %29 ], [ %.not571, %62 ]
  %65 = phi i1 [ false, %29 ], [ %.not571, %62 ]
  %66 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str) #7
  %.not572 = icmp eq i32 %66, 0
  br i1 %.not572, label %67, label %69

67:                                               ; preds = %64
  %68 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #7
  %.not573 = icmp eq i32 %68, 0
  br label %69

69:                                               ; preds = %67, %64
  %.not586 = phi i1 [ true, %64 ], [ %.not573, %67 ]
  %70 = phi i1 [ false, %64 ], [ %.not573, %67 ]
  %.not587 = and i1 %.not585, %.not586
  %71 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #7
  %.not574 = icmp eq i32 %71, 0
  br i1 %.not574, label %72, label %75

72:                                               ; preds = %69
  %73 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #7
  %74 = icmp ne i32 %73, 0
  br label %75

75:                                               ; preds = %72, %69
  %76 = phi i1 [ true, %69 ], [ %74, %72 ]
  %77 = tail call i32 @lsame_(ptr noundef %3, ptr noundef nonnull @.str) #7
  %78 = tail call i32 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.3) #7
  %79 = tail call i32 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.1) #7
  %80 = tail call i32 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.4) #7
  store i32 0, ptr %28, align 4, !tbaa !5
  %81 = load i32, ptr %24, align 4, !tbaa !5
  %82 = icmp eq i32 %81, -1
  br i1 %76, label %87, label %83

83:                                               ; preds = %75
  %84 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.5) #7
  %.not575 = icmp eq i32 %84, 0
  br i1 %.not575, label %85, label %87

85:                                               ; preds = %83
  %86 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #7
  %.not576 = icmp eq i32 %86, 0
  %brmerge = select i1 %.not576, i1 true, i1 %65
  %brmerge719 = select i1 %brmerge, i1 true, i1 %70
  %.mux = select i1 %65, i32 -2, i32 -3
  %.mux.mux = select i1 %.not576, i32 -1, i32 %.mux
  br i1 %brmerge719, label %.thread612.sink.split, label %88

87:                                               ; preds = %83, %75
  %brmerge720 = select i1 %65, i1 true, i1 %70
  %.mux721 = select i1 %65, i32 -2, i32 -3
  br i1 %brmerge720, label %.thread612.sink.split, label %88

88:                                               ; preds = %87, %85
  %89 = icmp ne i32 %77, 0
  %90 = icmp ne i32 %78, 0
  %or.cond = select i1 %89, i1 true, i1 %90
  %91 = icmp ne i32 %80, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %91
  %92 = icmp ne i32 %79, 0
  %or.cond5 = select i1 %or.cond3, i1 true, i1 %92
  br i1 %or.cond5, label %93, label %.thread612.sink.split

93:                                               ; preds = %88
  %94 = load i32, ptr %4, align 4, !tbaa !5
  %95 = icmp slt i32 %94, 0
  br i1 %95, label %.thread612.sink.split, label %96

96:                                               ; preds = %93
  %97 = load i32, ptr %6, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %94, i32 1)
  %98 = icmp slt i32 %97, %spec.select
  br i1 %98, label %.thread612.sink.split, label %99

99:                                               ; preds = %96
  %100 = load i32, ptr %8, align 4, !tbaa !5
  %101 = icmp slt i32 %100, %spec.select
  br i1 %101, label %.thread612.sink.split, label %102

102:                                              ; preds = %99
  %103 = load i32, ptr %12, align 4, !tbaa !5
  %104 = icmp sgt i32 %103, 0
  %105 = icmp uge i32 %103, %94
  %or.cond628.not = or i1 %.not585, %105
  %or.cond634 = select i1 %104, i1 %or.cond628.not, i1 false
  br i1 %or.cond634, label %106, label %.thread612.sink.split

106:                                              ; preds = %102
  %107 = load i32, ptr %14, align 4, !tbaa !5
  %108 = icmp sgt i32 %107, 0
  %109 = icmp uge i32 %107, %94
  %or.cond629.not = or i1 %.not586, %109
  %or.cond635 = select i1 %108, i1 %or.cond629.not, i1 false
  br i1 %or.cond635, label %110, label %.thread612.sink.split

110:                                              ; preds = %106
  %.pr = load i32, ptr %28, align 4, !tbaa !5
  %111 = icmp eq i32 %.pr, 0
  br i1 %111, label %112, label %.thread612

112:                                              ; preds = %110
  %113 = icmp eq i32 %94, 0
  br i1 %113, label %138, label %114

114:                                              ; preds = %112
  %115 = shl nuw i32 %94, 1
  %.not577 = icmp eq i32 %78, 0
  br i1 %.not577, label %118, label %116

116:                                              ; preds = %114
  %117 = shl i32 %94, 2
  br label %122

118:                                              ; preds = %114
  %or.cond7 = select i1 %92, i1 true, i1 %91
  br i1 %or.cond7, label %119, label %122

119:                                              ; preds = %118
  %120 = add nuw nsw i32 %94, 1
  %121 = mul nsw i32 %115, %120
  br label %122

122:                                              ; preds = %119, %118, %116
  %.0539 = phi i32 [ %117, %116 ], [ %121, %119 ], [ %115, %118 ]
  %123 = 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
  %124 = add i32 %123, 1
  %125 = mul i32 %124, %94
  %126 = tail call i32 @llvm.smax.i32(i32 %.0539, i32 %125)
  store i32 %126, ptr %30, align 4, !tbaa !5
  %127 = load i32, ptr %4, align 4, !tbaa !5
  %128 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.8, 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
  %129 = add i32 %128, 1
  %130 = mul i32 %129, %127
  store i32 %130, ptr %31, align 4, !tbaa !5
  %131 = tail call i32 @llvm.smax.i32(i32 %126, i32 %130)
  br i1 %.not585, label %138, label %132

132:                                              ; preds = %122
  store i32 %131, ptr %30, align 4, !tbaa !5
  %133 = load i32, ptr %4, align 4, !tbaa !5
  %134 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.9, 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
  %135 = add i32 %134, 1
  %136 = mul i32 %135, %133
  store i32 %136, ptr %31, align 4, !tbaa !5
  %137 = tail call i32 @llvm.smax.i32(i32 %131, i32 %136)
  br label %138

138:                                              ; preds = %112, %122, %132
  %.1540 = phi i32 [ %.0539, %132 ], [ %.0539, %122 ], [ 1, %112 ]
  %.0 = phi i32 [ %137, %132 ], [ %131, %122 ], [ 1, %112 ]
  %139 = sitofp i32 %.0 to double
  store double %139, ptr %23, align 8, !tbaa !9
  %140 = getelementptr inbounds i8, ptr %23, i64 8
  store double 0.000000e+00, ptr %140, align 8, !tbaa !12
  %141 = load i32, ptr %24, align 4, !tbaa !5
  %142 = icmp sge i32 %141, %.1540
  %or.cond9 = select i1 %142, i1 true, i1 %82
  br i1 %or.cond9, label %.thread, label %.thread612.sink.split

.thread:                                          ; preds = %138
  %.pr609.pr = load i32, ptr %28, align 4, !tbaa !5
  %.not581 = icmp eq i32 %.pr609.pr, 0
  br i1 %.not581, label %146, label %.thread612

.thread612.sink.split:                            ; preds = %87, %85, %138, %106, %102, %99, %96, %93, %88
  %.sink = phi i32 [ %.mux.mux, %85 ], [ %.mux721, %87 ], [ -4, %88 ], [ -5, %93 ], [ -7, %96 ], [ -9, %99 ], [ -13, %102 ], [ -15, %106 ], [ -25, %138 ]
  store i32 %.sink, ptr %28, align 4, !tbaa !5
  br label %.thread612

.thread612:                                       ; preds = %.thread612.sink.split, %110, %.thread
  %143 = phi i32 [ %.pr609.pr, %.thread ], [ %.pr, %110 ], [ %.sink, %.thread612.sink.split ]
  %144 = sub nsw i32 0, %143
  store i32 %144, ptr %30, align 4, !tbaa !5
  %145 = call i32 @xerbla_(ptr noundef nonnull @.str.10, ptr noundef nonnull %30, i32 noundef 6) #7
  br label %377

146:                                              ; preds = %.thread
  br i1 %82, label %377, label %147

147:                                              ; preds = %146
  %148 = load i32, ptr %4, align 4, !tbaa !5
  %149 = icmp eq i32 %148, 0
  br i1 %149, label %377, label %150

150:                                              ; preds = %147
  %151 = tail call double @dlamch_(ptr noundef nonnull @.str.2) #7
  %152 = tail call double @dlamch_(ptr noundef nonnull @.str.5) #7
  store double %152, ptr %44, align 8, !tbaa !13
  %153 = fdiv double 1.000000e+00, %152
  store double %153, ptr %41, align 8, !tbaa !13
  call void @dlabad_(ptr noundef nonnull %44, ptr noundef nonnull %41) #7
  %154 = load double, ptr %44, align 8, !tbaa !13
  %155 = call double @sqrt(double noundef %154) #7
  %156 = fdiv double %155, %151
  store double %156, ptr %44, align 8, !tbaa !13
  %157 = fdiv double 1.000000e+00, %156
  store double %157, ptr %41, align 8, !tbaa !13
  %158 = call double @zlange_(ptr noundef nonnull @.str.11, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %25) #7
  store double %158, ptr %32, align 8, !tbaa !13
  %159 = fcmp ogt double %158, 0.000000e+00
  %160 = load double, ptr %44, align 8
  %161 = fcmp olt double %158, %160
  %or.cond637 = select i1 %159, i1 %161, i1 false
  br i1 %or.cond637, label %165, label %162

162:                                              ; preds = %150
  %163 = load double, ptr %41, align 8, !tbaa !13
  %164 = fcmp ogt double %158, %163
  br i1 %164, label %165, label %166

165:                                              ; preds = %150, %162
  %storemerge632 = phi double [ %163, %162 ], [ %160, %150 ]
  store double %storemerge632, ptr %42, align 8, !tbaa !13
  call void @zlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %32, ptr noundef nonnull %42, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %34) #7
  br label %166

166:                                              ; preds = %162, %165
  %.not582619 = phi i1 [ false, %165 ], [ true, %162 ]
  %167 = call double @zlange_(ptr noundef nonnull @.str.11, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %25) #7
  store double %167, ptr %33, align 8, !tbaa !13
  %168 = fcmp ogt double %167, 0.000000e+00
  %169 = load double, ptr %44, align 8
  %170 = fcmp olt double %167, %169
  %or.cond639 = select i1 %168, i1 %170, i1 false
  br i1 %or.cond639, label %174, label %171

171:                                              ; preds = %166
  %172 = load double, ptr %41, align 8, !tbaa !13
  %173 = fcmp ogt double %167, %172
  br i1 %173, label %174, label %175

174:                                              ; preds = %166, %171
  %storemerge633 = phi double [ %172, %171 ], [ %169, %166 ]
  store double %storemerge633, ptr %43, align 8, !tbaa !13
  call void @zlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %33, ptr noundef nonnull %43, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %34) #7
  br label %175

175:                                              ; preds = %171, %174
  %.not584624 = phi i1 [ false, %174 ], [ true, %171 ]
  call void @zggbal_(ptr noundef %0, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %25, ptr noundef nonnull %34) #7
  %176 = call double @zlange_(ptr noundef nonnull @.str.13, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %25) #7
  store double %176, ptr %19, align 8, !tbaa !13
  br i1 %.not582619, label %179, label %177

177:                                              ; preds = %175
  store double %176, ptr %25, align 8, !tbaa !13
  call void @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %42, ptr noundef nonnull %32, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %25, ptr noundef nonnull @c__1, ptr noundef nonnull %34) #7
  %178 = load double, ptr %25, align 8, !tbaa !13
  store double %178, ptr %19, align 8, !tbaa !13
  br label %179

179:                                              ; preds = %177, %175
  %180 = call double @zlange_(ptr noundef nonnull @.str.13, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %25) #7
  store double %180, ptr %20, align 8, !tbaa !13
  br i1 %.not584624, label %183, label %181

181:                                              ; preds = %179
  store double %180, ptr %25, align 8, !tbaa !13
  call void @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %43, ptr noundef nonnull %33, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %25, ptr noundef nonnull @c__1, ptr noundef nonnull %34) #7
  %182 = load double, ptr %25, align 8, !tbaa !13
  store double %182, ptr %20, align 8, !tbaa !13
  br label %183

183:                                              ; preds = %181, %179
  %184 = load i32, ptr %16, align 4, !tbaa !5
  %185 = add nsw i32 %184, 1
  %186 = load i32, ptr %15, align 4, !tbaa !5
  %187 = sub i32 %185, %186
  store i32 %187, ptr %37, align 4, !tbaa !5
  %or.cond11 = and i1 %.not587, %89
  br i1 %or.cond11, label %191, label %188

188:                                              ; preds = %183
  %189 = load i32, ptr %4, align 4, !tbaa !5
  %reass.sub = sub i32 %189, %186
  %190 = add i32 %reass.sub, 1
  br label %191

191:                                              ; preds = %183, %188
  %storemerge = phi i32 [ %190, %188 ], [ %187, %183 ]
  store i32 %storemerge, ptr %36, align 4, !tbaa !5
  %192 = load i32, ptr %24, align 4, !tbaa !5
  %193 = sub i32 %192, %187
  store i32 %193, ptr %30, align 4, !tbaa !5
  %194 = add i32 %48, 1
  %195 = mul i32 %186, %194
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds %struct.doublecomplex, ptr %50, i64 %196
  %198 = sext i32 %187 to i64
  %199 = getelementptr %struct.doublecomplex, ptr %59, i64 %198
  %200 = getelementptr i8, ptr %199, i64 16
  call void @zgeqrf_(ptr noundef nonnull %37, ptr noundef nonnull %36, ptr noundef %197, ptr noundef nonnull %8, ptr noundef nonnull %23, ptr noundef nonnull %200, ptr noundef nonnull %30, ptr noundef nonnull %34) #7
  %201 = load i32, ptr %24, align 4, !tbaa !5
  %202 = sub i32 %201, %187
  store i32 %202, ptr %30, align 4, !tbaa !5
  %203 = load i32, ptr %15, align 4, !tbaa !5
  %204 = mul i32 %203, %194
  %205 = sext i32 %204 to i64
  %206 = getelementptr inbounds %struct.doublecomplex, ptr %50, i64 %205
  %207 = add i32 %45, 1
  %208 = mul i32 %203, %207
  %209 = sext i32 %208 to i64
  %210 = getelementptr inbounds %struct.doublecomplex, ptr %47, i64 %209
  call void @zunmqr_(ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15, ptr noundef nonnull %37, ptr noundef nonnull %36, ptr noundef nonnull %37, ptr noundef %206, ptr noundef nonnull %8, ptr noundef nonnull %23, ptr noundef %210, ptr noundef nonnull %6, ptr noundef nonnull %200, ptr noundef nonnull %30, ptr noundef nonnull %34) #7
  br i1 %.not585, label %234, label %211

211:                                              ; preds = %191
  call void @zlaset_(ptr noundef nonnull @.str.16, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b2, ptr noundef %11, ptr noundef nonnull %12) #7
  %212 = load i32, ptr %37, align 4, !tbaa !5
  %213 = icmp sgt i32 %212, 1
  br i1 %213, label %214, label %226

214:                                              ; preds = %211
  %215 = add nsw i32 %212, -1
  store i32 %215, ptr %30, align 4, !tbaa !5
  store i32 %215, ptr %31, align 4, !tbaa !5
  %216 = load i32, ptr %15, align 4, !tbaa !5
  %217 = add nsw i32 %216, 1
  %218 = mul nsw i32 %216, %48
  %219 = add nsw i32 %217, %218
  %220 = sext i32 %219 to i64
  %221 = getelementptr inbounds %struct.doublecomplex, ptr %50, i64 %220
  %222 = mul nsw i32 %216, %51
  %223 = add nsw i32 %217, %222
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds %struct.doublecomplex, ptr %53, i64 %224
  call void @zlacpy_(ptr noundef nonnull @.str.14, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %221, ptr noundef nonnull %8, ptr noundef %225, ptr noundef nonnull %12) #7
  br label %226

226:                                              ; preds = %214, %211
  %227 = load i32, ptr %24, align 4, !tbaa !5
  %228 = sub i32 %227, %187
  store i32 %228, ptr %30, align 4, !tbaa !5
  %229 = load i32, ptr %15, align 4, !tbaa !5
  %230 = add i32 %51, 1
  %231 = mul i32 %229, %230
  %232 = sext i32 %231 to i64
  %233 = getelementptr inbounds %struct.doublecomplex, ptr %53, i64 %232
  call void @zungqr_(ptr noundef nonnull %37, ptr noundef nonnull %37, ptr noundef nonnull %37, ptr noundef %233, ptr noundef nonnull %12, ptr noundef nonnull %23, ptr noundef nonnull %200, ptr noundef nonnull %30, ptr noundef nonnull %34) #7
  br label %234

234:                                              ; preds = %226, %191
  br i1 %.not586, label %236, label %235

235:                                              ; preds = %234
  call void @zlaset_(ptr noundef nonnull @.str.16, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b2, ptr noundef %13, ptr noundef nonnull %14) #7
  br label %236

236:                                              ; preds = %235, %234
  br i1 %or.cond11, label %238, label %237

237:                                              ; preds = %236
  call void @zgghrd_(ptr noundef %1, ptr noundef %2, ptr noundef nonnull %4, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %34) #7
  br label %246

238:                                              ; preds = %236
  %239 = load i32, ptr %15, align 4, !tbaa !5
  %240 = mul i32 %239, %207
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds %struct.doublecomplex, ptr %47, i64 %241
  %243 = mul i32 %239, %194
  %244 = sext i32 %243 to i64
  %245 = getelementptr inbounds %struct.doublecomplex, ptr %50, i64 %244
  call void @zgghrd_(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %37, ptr noundef nonnull @c__1, ptr noundef nonnull %37, ptr noundef %242, ptr noundef nonnull %6, ptr noundef %245, ptr noundef nonnull %8, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %34) #7
  br label %246

246:                                              ; preds = %238, %237
  %.606 = phi i8 [ 69, %238 ], [ 83, %237 ]
  store i8 %.606, ptr %40, align 1, !tbaa !14
  %247 = load i32, ptr %24, align 4, !tbaa !5
  store i32 %247, ptr %30, align 4, !tbaa !5
  call void @zhgeqz_(ptr noundef nonnull %40, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %4, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %23, ptr noundef nonnull %30, ptr noundef %25, ptr noundef nonnull %34) #7
  %248 = load i32, ptr %34, align 4, !tbaa !5
  %.not591 = icmp eq i32 %248, 0
  br i1 %.not591, label %258, label %249

249:                                              ; preds = %246
  %250 = icmp slt i32 %248, 1
  %.pre = load i32, ptr %4, align 4, !tbaa !5
  %.not602 = icmp sgt i32 %248, %.pre
  %or.cond717 = select i1 %250, i1 true, i1 %.not602
  br i1 %or.cond717, label %251, label %.loopexit641.sink.split

251:                                              ; preds = %249
  %252 = icmp sle i32 %248, %.pre
  %253 = shl i32 %.pre, 1
  %.not603 = icmp sgt i32 %248, %253
  %or.cond607 = or i1 %252, %.not603
  br i1 %or.cond607, label %256, label %254

254:                                              ; preds = %251
  %255 = sub nsw i32 %248, %.pre
  br label %.loopexit641.sink.split

256:                                              ; preds = %251
  %257 = add nsw i32 %.pre, 1
  br label %.loopexit641.sink.split

258:                                              ; preds = %246
  br i1 %or.cond11, label %.loopexit644, label %259

259:                                              ; preds = %258
  br i1 %.not587, label %270, label %260

260:                                              ; preds = %259
  br i1 %.not585, label %264, label %261

261:                                              ; preds = %260
  br i1 %.not586, label %263, label %262

262:                                              ; preds = %261
  store i8 66, ptr %40, align 1, !tbaa !14
  br label %265

263:                                              ; preds = %261
  store i8 76, ptr %40, align 1, !tbaa !14
  br label %265

264:                                              ; preds = %260
  store i8 82, ptr %40, align 1, !tbaa !14
  br label %265

265:                                              ; preds = %262, %263, %264
  call void @ztgevc_(ptr noundef nonnull %40, ptr noundef nonnull @.str.4, ptr noundef nonnull %39, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %4, ptr noundef nonnull %38, ptr noundef nonnull %23, ptr noundef %25, ptr noundef nonnull %34) #7
  %266 = load i32, ptr %34, align 4, !tbaa !5
  %.not592 = icmp eq i32 %266, 0
  br i1 %.not592, label %270, label %267

267:                                              ; preds = %265
  %268 = load i32, ptr %4, align 4, !tbaa !5
  %269 = add nsw i32 %268, 2
  br label %.loopexit641.sink.split

270:                                              ; preds = %265, %259
  br i1 %89, label %.loopexit644, label %271

271:                                              ; preds = %270
  %272 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %272, ptr %30, align 4, !tbaa !5
  %.not593647 = icmp slt i32 %272, 1
  br i1 %.not593647, label %.loopexit644, label %.lr.ph650

.lr.ph650:                                        ; preds = %271
  %or.cond19 = select i1 %90, i1 true, i1 %91
  br label %273

thread-pre-split:                                 ; preds = %290
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %.pr707 = load i32, ptr %4, align 4, !tbaa !5
  br label %273

273:                                              ; preds = %thread-pre-split, %.lr.ph650
  %274 = phi i32 [ %.pr707, %thread-pre-split ], [ %272, %.lr.ph650 ]
  %indvars.iv = phi i64 [ %indvars.iv.next, %thread-pre-split ], [ 1, %.lr.ph650 ]
  store i32 %274, ptr %31, align 4, !tbaa !5
  %.not594645 = icmp slt i32 %274, 1
  br i1 %.not594645, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %273
  %275 = zext nneg i32 %274 to i64
  %276 = shl nuw nsw i64 %275, 2
  call void @llvm.memset.p0.i64(ptr align 4 %27, i8 0, i64 %276, i1 false), !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.preheader, %273
  %277 = getelementptr inbounds i32, ptr %60, i64 %indvars.iv
  store i32 1, ptr %277, align 4, !tbaa !5
  %278 = load i32, ptr %4, align 4, !tbaa !5
  %279 = add nsw i32 %278, 1
  %280 = add nsw i32 %279, %278
  %281 = sext i32 %279 to i64
  br i1 %or.cond19, label %282, label %._crit_edge._crit_edge

._crit_edge._crit_edge:                           ; preds = %._crit_edge
  %.pre705 = sext i32 %280 to i64
  br label %290

282:                                              ; preds = %._crit_edge
  %283 = getelementptr inbounds %struct.doublecomplex, ptr %59, i64 %281
  %284 = sext i32 %280 to i64
  %285 = getelementptr inbounds %struct.doublecomplex, ptr %59, i64 %284
  call void @ztgevc_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull %27, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %23, ptr noundef nonnull %4, ptr noundef nonnull %283, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %35, ptr noundef nonnull %285, ptr noundef %25, ptr noundef nonnull %34) #7
  %286 = load i32, ptr %34, align 4, !tbaa !5
  %.not595 = icmp eq i32 %286, 0
  br i1 %.not595, label %290, label %287

287:                                              ; preds = %282
  %288 = load i32, ptr %4, align 4, !tbaa !5
  %289 = add nsw i32 %288, 2
  br label %.loopexit641.sink.split

290:                                              ; preds = %._crit_edge._crit_edge, %282
  %.pre-phi706 = phi i64 [ %.pre705, %._crit_edge._crit_edge ], [ %284, %282 ]
  %291 = load i32, ptr %24, align 4, !tbaa !5
  %reass.sub680 = sub i32 %291, %280
  %292 = add i32 %reass.sub680, 1
  store i32 %292, ptr %31, align 4, !tbaa !5
  %293 = getelementptr inbounds %struct.doublecomplex, ptr %59, i64 %281
  %294 = getelementptr inbounds double, ptr %57, i64 %indvars.iv
  %295 = getelementptr inbounds double, ptr %58, i64 %indvars.iv
  %296 = getelementptr inbounds %struct.doublecomplex, ptr %59, i64 %.pre-phi706
  call void @ztgsna_(ptr noundef %3, ptr noundef nonnull @.str.5, ptr noundef nonnull %27, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %23, ptr noundef nonnull %4, ptr noundef nonnull %293, ptr noundef nonnull %4, ptr noundef nonnull %294, ptr noundef nonnull %295, ptr noundef nonnull @c__1, ptr noundef nonnull %35, ptr noundef nonnull %296, ptr noundef nonnull %31, ptr noundef %26, ptr noundef nonnull %34) #7
  %297 = load i32, ptr %30, align 4, !tbaa !5
  %298 = sext i32 %297 to i64
  %.not593.not = icmp slt i64 %indvars.iv, %298
  br i1 %.not593.not, label %thread-pre-split, label %.loopexit644, !llvm.loop !15

.loopexit644:                                     ; preds = %290, %271, %270, %258
  br i1 %.not585, label %.loopexit643, label %299

299:                                              ; preds = %.loopexit644
  call void @zggbak_(ptr noundef %0, ptr noundef nonnull @.str.14, ptr noundef nonnull %4, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef %17, ptr noundef %18, ptr noundef nonnull %4, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %34) #7
  %300 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %300, ptr %30, align 4, !tbaa !5
  %.not596661 = icmp slt i32 %300, 1
  br i1 %.not596661, label %.loopexit643, label %.lr.ph664.preheader

.lr.ph664.preheader:                              ; preds = %299
  %301 = sext i32 %51 to i64
  br label %.lr.ph664

.lr.ph664thread-pre-split:                        ; preds = %.loopexit642
  %indvars.iv.next691 = add nuw nsw i64 %indvars.iv690, 1
  %.pr708 = load i32, ptr %4, align 4, !tbaa !5
  br label %.lr.ph664

.lr.ph664:                                        ; preds = %.lr.ph664thread-pre-split, %.lr.ph664.preheader
  %302 = phi i32 [ %.pr708, %.lr.ph664thread-pre-split ], [ %300, %.lr.ph664.preheader ]
  %indvars.iv690 = phi i64 [ %indvars.iv.next691, %.lr.ph664thread-pre-split ], [ 1, %.lr.ph664.preheader ]
  store i32 %302, ptr %31, align 4, !tbaa !5
  %.not600651 = icmp slt i32 %302, 1
  br i1 %.not600651, label %._crit_edge656, label %.lr.ph655

.lr.ph655:                                        ; preds = %.lr.ph664
  %303 = mul nsw i64 %indvars.iv690, %301
  %invariant.gep = getelementptr %struct.doublecomplex, ptr %53, i64 %303
  br label %304

304:                                              ; preds = %.lr.ph655, %304
  %indvars.iv684 = phi i64 [ 1, %.lr.ph655 ], [ %indvars.iv.next685, %304 ]
  %.0553652 = phi double [ 0.000000e+00, %.lr.ph655 ], [ %316, %304 ]
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %indvars.iv684
  %305 = load double, ptr %gep, align 8, !tbaa !9
  %306 = call { double, double } @Cd(ptr noundef nonnull %gep)
  %307 = extractvalue { double, double } %306, 1
  %308 = insertelement <2 x double> poison, double %305, i64 0
  %309 = insertelement <2 x double> %308, double %307, i64 1
  %310 = fcmp oge <2 x double> %309, zeroinitializer
  %311 = fneg <2 x double> %309
  %312 = select <2 x i1> %310, <2 x double> %309, <2 x double> %311
  %shift = shufflevector <2 x double> %312, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %313 = fadd <2 x double> %312, %shift
  %314 = extractelement <2 x double> %313, i64 0
  %315 = fcmp oge double %.0553652, %314
  %316 = select i1 %315, double %.0553652, double %314
  %indvars.iv.next685 = add nuw nsw i64 %indvars.iv684, 1
  %317 = load i32, ptr %31, align 4, !tbaa !5
  %318 = sext i32 %317 to i64
  %.not600.not = icmp slt i64 %indvars.iv684, %318
  br i1 %.not600.not, label %304, label %._crit_edge656, !llvm.loop !17

._crit_edge656:                                   ; preds = %304, %.lr.ph664
  %.0553.lcssa = phi double [ 0.000000e+00, %.lr.ph664 ], [ %316, %304 ]
  %319 = load double, ptr %44, align 8, !tbaa !13
  %320 = fcmp olt double %.0553.lcssa, %319
  br i1 %320, label %.loopexit642, label %321

321:                                              ; preds = %._crit_edge656
  %322 = fdiv double 1.000000e+00, %.0553.lcssa
  %323 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %323, ptr %31, align 4, !tbaa !5
  %.not601657 = icmp slt i32 %323, 1
  br i1 %.not601657, label %.loopexit642, label %.lr.ph660

.lr.ph660:                                        ; preds = %321
  %324 = mul nsw i64 %indvars.iv690, %301
  %325 = add nuw i32 %323, 1
  %wide.trip.count = zext i32 %325 to i64
  %invariant.gep711 = getelementptr %struct.doublecomplex, ptr %53, i64 %324
  %326 = zext nneg i32 %323 to i64
  %min.iters.check = icmp eq i32 %323, 1
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph660
  %n.vec = and i64 %326, 2147483646
  %ind.end = or i64 %326, 1
  %broadcast.splatinsert = insertelement <2 x double> poison, double %322, i64 0
  %327 = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <4 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %328 = getelementptr %struct.doublecomplex, ptr %invariant.gep711, i64 %offset.idx
  %wide.vec = load <4 x double>, ptr %328, align 8, !tbaa !13
  %interleaved.vec = fmul <4 x double> %327, %wide.vec
  store <4 x double> %interleaved.vec, ptr %328, align 8, !tbaa !13
  %index.next = add nuw i64 %index, 2
  %329 = icmp eq i64 %index.next, %n.vec
  br i1 %329, label %middle.block, label %vector.body, !llvm.loop !18

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %326
  br i1 %cmp.n, label %.loopexit642, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %.lr.ph660
  %indvars.iv687.ph = phi i64 [ 1, %.lr.ph660 ], [ %ind.end, %middle.block ]
  %330 = insertelement <2 x double> poison, double %322, i64 0
  %331 = shufflevector <2 x double> %330, <2 x double> poison, <2 x i32> zeroinitializer
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %indvars.iv687 = phi i64 [ %indvars.iv.next688, %scalar.ph ], [ %indvars.iv687.ph, %scalar.ph.preheader ]
  %gep712 = getelementptr %struct.doublecomplex, ptr %invariant.gep711, i64 %indvars.iv687
  %332 = load <2 x double>, ptr %gep712, align 8, !tbaa !13
  %333 = fmul <2 x double> %331, %332
  store <2 x double> %333, ptr %gep712, align 8, !tbaa !13
  %indvars.iv.next688 = add nuw nsw i64 %indvars.iv687, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next688, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit642, label %scalar.ph, !llvm.loop !21

.loopexit642:                                     ; preds = %scalar.ph, %middle.block, %321, %._crit_edge656
  %334 = load i32, ptr %30, align 4, !tbaa !5
  %335 = sext i32 %334 to i64
  %.not596.not = icmp slt i64 %indvars.iv690, %335
  br i1 %.not596.not, label %.lr.ph664thread-pre-split, label %.loopexit643, !llvm.loop !22

.loopexit643:                                     ; preds = %.loopexit642, %299, %.loopexit644
  br i1 %.not586, label %.loopexit641, label %336

336:                                              ; preds = %.loopexit643
  call void @zggbak_(ptr noundef %0, ptr noundef nonnull @.str.17, ptr noundef nonnull %4, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef %17, ptr noundef %18, ptr noundef nonnull %4, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %34) #7
  %337 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %337, ptr %30, align 4, !tbaa !5
  %.not597676 = icmp slt i32 %337, 1
  br i1 %.not597676, label %.loopexit641, label %.lr.ph679.preheader

.lr.ph679.preheader:                              ; preds = %336
  %338 = sext i32 %54 to i64
  br label %.lr.ph679

.lr.ph679thread-pre-split:                        ; preds = %.loopexit
  %indvars.iv.next702 = add nuw nsw i64 %indvars.iv701, 1
  %.pr709 = load i32, ptr %4, align 4, !tbaa !5
  br label %.lr.ph679

.lr.ph679:                                        ; preds = %.lr.ph679thread-pre-split, %.lr.ph679.preheader
  %339 = phi i32 [ %.pr709, %.lr.ph679thread-pre-split ], [ %337, %.lr.ph679.preheader ]
  %indvars.iv701 = phi i64 [ %indvars.iv.next702, %.lr.ph679thread-pre-split ], [ 1, %.lr.ph679.preheader ]
  store i32 %339, ptr %31, align 4, !tbaa !5
  %.not598665 = icmp slt i32 %339, 1
  br i1 %.not598665, label %._crit_edge670, label %.lr.ph669

.lr.ph669:                                        ; preds = %.lr.ph679
  %340 = mul nsw i64 %indvars.iv701, %338
  %invariant.gep713 = getelementptr %struct.doublecomplex, ptr %56, i64 %340
  br label %341

341:                                              ; preds = %.lr.ph669, %341
  %indvars.iv693 = phi i64 [ 1, %.lr.ph669 ], [ %indvars.iv.next694, %341 ]
  %.1554666 = phi double [ 0.000000e+00, %.lr.ph669 ], [ %353, %341 ]
  %gep714 = getelementptr %struct.doublecomplex, ptr %invariant.gep713, i64 %indvars.iv693
  %342 = load double, ptr %gep714, align 8, !tbaa !9
  %343 = call { double, double } @Cd(ptr noundef nonnull %gep714)
  %344 = extractvalue { double, double } %343, 1
  %345 = insertelement <2 x double> poison, double %342, i64 0
  %346 = insertelement <2 x double> %345, double %344, i64 1
  %347 = fcmp oge <2 x double> %346, zeroinitializer
  %348 = fneg <2 x double> %346
  %349 = select <2 x i1> %347, <2 x double> %346, <2 x double> %348
  %shift743 = shufflevector <2 x double> %349, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %350 = fadd <2 x double> %349, %shift743
  %351 = extractelement <2 x double> %350, i64 0
  %352 = fcmp oge double %.1554666, %351
  %353 = select i1 %352, double %.1554666, double %351
  %indvars.iv.next694 = add nuw nsw i64 %indvars.iv693, 1
  %354 = load i32, ptr %31, align 4, !tbaa !5
  %355 = sext i32 %354 to i64
  %.not598.not = icmp slt i64 %indvars.iv693, %355
  br i1 %.not598.not, label %341, label %._crit_edge670, !llvm.loop !23

._crit_edge670:                                   ; preds = %341, %.lr.ph679
  %.1554.lcssa = phi double [ 0.000000e+00, %.lr.ph679 ], [ %353, %341 ]
  %356 = load double, ptr %44, align 8, !tbaa !13
  %357 = fcmp olt double %.1554.lcssa, %356
  br i1 %357, label %.loopexit, label %358

358:                                              ; preds = %._crit_edge670
  %359 = fdiv double 1.000000e+00, %.1554.lcssa
  %360 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %360, ptr %31, align 4, !tbaa !5
  %.not599672 = icmp slt i32 %360, 1
  br i1 %.not599672, label %.loopexit, label %.lr.ph675

.lr.ph675:                                        ; preds = %358
  %361 = mul nsw i64 %indvars.iv701, %338
  %362 = add nuw i32 %360, 1
  %wide.trip.count699 = zext i32 %362 to i64
  %invariant.gep715 = getelementptr %struct.doublecomplex, ptr %56, i64 %361
  %363 = zext nneg i32 %360 to i64
  %min.iters.check726 = icmp eq i32 %360, 1
  br i1 %min.iters.check726, label %scalar.ph725.preheader, label %vector.ph727

vector.ph727:                                     ; preds = %.lr.ph675
  %n.vec729 = and i64 %363, 2147483646
  %ind.end730 = or i64 %363, 1
  %broadcast.splatinsert738 = insertelement <2 x double> poison, double %359, i64 0
  %364 = shufflevector <2 x double> %broadcast.splatinsert738, <2 x double> poison, <4 x i32> zeroinitializer
  br label %vector.body732

vector.body732:                                   ; preds = %vector.body732, %vector.ph727
  %index733 = phi i64 [ 0, %vector.ph727 ], [ %index.next741, %vector.body732 ]
  %offset.idx734 = or disjoint i64 %index733, 1
  %365 = getelementptr %struct.doublecomplex, ptr %invariant.gep715, i64 %offset.idx734
  %wide.vec735 = load <4 x double>, ptr %365, align 8, !tbaa !13
  %interleaved.vec740 = fmul <4 x double> %364, %wide.vec735
  store <4 x double> %interleaved.vec740, ptr %365, align 8, !tbaa !13
  %index.next741 = add nuw i64 %index733, 2
  %366 = icmp eq i64 %index.next741, %n.vec729
  br i1 %366, label %middle.block724, label %vector.body732, !llvm.loop !24

middle.block724:                                  ; preds = %vector.body732
  %cmp.n742 = icmp eq i64 %n.vec729, %363
  br i1 %cmp.n742, label %.loopexit, label %scalar.ph725.preheader

scalar.ph725.preheader:                           ; preds = %middle.block724, %.lr.ph675
  %indvars.iv696.ph = phi i64 [ 1, %.lr.ph675 ], [ %ind.end730, %middle.block724 ]
  %367 = insertelement <2 x double> poison, double %359, i64 0
  %368 = shufflevector <2 x double> %367, <2 x double> poison, <2 x i32> zeroinitializer
  br label %scalar.ph725

scalar.ph725:                                     ; preds = %scalar.ph725.preheader, %scalar.ph725
  %indvars.iv696 = phi i64 [ %indvars.iv.next697, %scalar.ph725 ], [ %indvars.iv696.ph, %scalar.ph725.preheader ]
  %gep716 = getelementptr %struct.doublecomplex, ptr %invariant.gep715, i64 %indvars.iv696
  %369 = load <2 x double>, ptr %gep716, align 8, !tbaa !13
  %370 = fmul <2 x double> %368, %369
  store <2 x double> %370, ptr %gep716, align 8, !tbaa !13
  %indvars.iv.next697 = add nuw nsw i64 %indvars.iv696, 1
  %exitcond700.not = icmp eq i64 %indvars.iv.next697, %wide.trip.count699
  br i1 %exitcond700.not, label %.loopexit, label %scalar.ph725, !llvm.loop !25

.loopexit:                                        ; preds = %scalar.ph725, %middle.block724, %358, %._crit_edge670
  %371 = load i32, ptr %30, align 4, !tbaa !5
  %372 = sext i32 %371 to i64
  %.not597.not = icmp slt i64 %indvars.iv701, %372
  br i1 %.not597.not, label %.lr.ph679thread-pre-split, label %.loopexit641, !llvm.loop !26

.loopexit641.sink.split:                          ; preds = %249, %267, %287, %254, %256
  %.sink718 = phi i32 [ %257, %256 ], [ %255, %254 ], [ %289, %287 ], [ %269, %267 ], [ %248, %249 ]
  store i32 %.sink718, ptr %28, align 4, !tbaa !5
  br label %.loopexit641

.loopexit641:                                     ; preds = %.loopexit, %.loopexit641.sink.split, %336, %.loopexit643
  br i1 %.not582619, label %374, label %373

373:                                              ; preds = %.loopexit641
  call void @zlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %42, ptr noundef nonnull %32, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %9, ptr noundef nonnull %4, ptr noundef nonnull %34) #7
  br label %374

374:                                              ; preds = %373, %.loopexit641
  br i1 %.not584624, label %376, label %375

375:                                              ; preds = %374
  call void @zlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %43, ptr noundef nonnull %33, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %10, ptr noundef nonnull %4, ptr noundef nonnull %34) #7
  br label %376

376:                                              ; preds = %375, %374
  store double %139, ptr %23, align 8, !tbaa !9
  store double 0.000000e+00, ptr %140, align 8, !tbaa !12
  br label %377

377:                                              ; preds = %147, %146, %376, %.thread612
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #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 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 @zggbal_(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 @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 @zgeqrf_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

declare void @zggbak_(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

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

; 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) #5

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: write) }
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, !20}
!19 = !{!"llvm.loop.isvectorized", i32 1}
!20 = !{!"llvm.loop.unroll.runtime.disable"}
!21 = distinct !{!21, !16, !20, !19}
!22 = distinct !{!22, !16}
!23 = distinct !{!23, !16}
!24 = distinct !{!24, !16, !19, !20}
!25 = distinct !{!25, !16, !20, !19}
!26 = distinct !{!26, !16}


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