; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (zgegv)

; 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
@c__1 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b29 = external hidden global double, align 8
@.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 [5 x i8], align 1
@c_b1 = external hidden global %struct.doublecomplex, align 8
@c_b2 = external hidden global %struct.doublecomplex, align 8
@.str.16 = external hidden unnamed_addr constant [2 x i8], align 1

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

144:                                              ; preds = %17
  store i64 1, ptr %92, align 8, !tbaa !9
  store i64 0, ptr %70, align 8, !tbaa !9
  br label %152

145:                                              ; preds = %17
  %146 = load ptr, ptr %19, align 8, !tbaa !5
  %147 = call i64 @lsame_(ptr noundef %146, ptr noundef @.str.1)
  %148 = icmp ne i64 %147, 0
  br i1 %148, label %149, label %150

149:                                              ; preds = %145
  store i64 2, ptr %92, align 8, !tbaa !9
  store i64 1, ptr %70, align 8, !tbaa !9
  br label %151

150:                                              ; preds = %145
  store i64 -1, ptr %92, align 8, !tbaa !9
  store i64 0, ptr %70, align 8, !tbaa !9
  br label %151

151:                                              ; preds = %150, %149
  br label %152

152:                                              ; preds = %151, %144
  %153 = load ptr, ptr %20, align 8, !tbaa !5
  %154 = call i64 @lsame_(ptr noundef %153, ptr noundef @.str)
  %155 = icmp ne i64 %154, 0
  br i1 %155, label %156, label %157

156:                                              ; preds = %152
  store i64 1, ptr %95, align 8, !tbaa !9
  store i64 0, ptr %71, align 8, !tbaa !9
  br label %164

157:                                              ; preds = %152
  %158 = load ptr, ptr %20, align 8, !tbaa !5
  %159 = call i64 @lsame_(ptr noundef %158, ptr noundef @.str.1)
  %160 = icmp ne i64 %159, 0
  br i1 %160, label %161, label %162

161:                                              ; preds = %157
  store i64 2, ptr %95, align 8, !tbaa !9
  store i64 1, ptr %71, align 8, !tbaa !9
  br label %163

162:                                              ; preds = %157
  store i64 -1, ptr %95, align 8, !tbaa !9
  store i64 0, ptr %71, align 8, !tbaa !9
  br label %163

163:                                              ; preds = %162, %161
  br label %164

164:                                              ; preds = %163, %156
  %165 = load i64, ptr %70, align 8, !tbaa !9
  %166 = icmp ne i64 %165, 0
  br i1 %166, label %170, label %167

167:                                              ; preds = %164
  %168 = load i64, ptr %71, align 8, !tbaa !9
  %169 = icmp ne i64 %168, 0
  br label %170

170:                                              ; preds = %167, %164
  %171 = phi i1 [ true, %164 ], [ %169, %167 ]
  %172 = zext i1 %171 to i32
  %173 = sext i32 %172 to i64
  store i64 %173, ptr %64, align 8, !tbaa !9
  %174 = load ptr, ptr %21, align 8, !tbaa !5
  %175 = load i64, ptr %174, align 8, !tbaa !9
  %176 = shl i64 %175, 1
  store i64 %176, ptr %44, align 8, !tbaa !9
  %177 = load i64, ptr %44, align 8, !tbaa !9
  %178 = icmp sge i64 %177, 1
  br i1 %178, label %179, label %181

179:                                              ; preds = %170
  %180 = load i64, ptr %44, align 8, !tbaa !9
  br label %182

181:                                              ; preds = %170
  br label %182

182:                                              ; preds = %181, %179
  %183 = phi i64 [ %180, %179 ], [ 1, %181 ]
  store i64 %183, ptr %96, align 8, !tbaa !9
  %184 = load i64, ptr %96, align 8, !tbaa !9
  store i64 %184, ptr %98, align 8, !tbaa !9
  %185 = load i64, ptr %98, align 8, !tbaa !9
  %186 = sitofp i64 %185 to double
  %187 = load ptr, ptr %32, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.doublecomplex, ptr %187, i64 1
  %189 = getelementptr inbounds %struct.doublecomplex, ptr %188, i32 0, i32 0
  store double %186, ptr %189, align 8, !tbaa !11
  %190 = load ptr, ptr %32, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.doublecomplex, ptr %190, i64 1
  %192 = getelementptr inbounds %struct.doublecomplex, ptr %191, i32 0, i32 1
  store double 0.000000e+00, ptr %192, align 8, !tbaa !14
  %193 = load ptr, ptr %33, align 8, !tbaa !5
  %194 = load i64, ptr %193, align 8, !tbaa !9
  %195 = icmp eq i64 %194, -1
  %196 = zext i1 %195 to i32
  %197 = sext i32 %196 to i64
  store i64 %197, ptr %99, align 8, !tbaa !9
  %198 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 0, ptr %198, align 8, !tbaa !9
  %199 = load i64, ptr %92, align 8, !tbaa !9
  %200 = icmp sle i64 %199, 0
  br i1 %200, label %201, label %203

201:                                              ; preds = %182
  %202 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -1, ptr %202, align 8, !tbaa !9
  br label %291

203:                                              ; preds = %182
  %204 = load i64, ptr %95, align 8, !tbaa !9
  %205 = icmp sle i64 %204, 0
  br i1 %205, label %206, label %208

206:                                              ; preds = %203
  %207 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -2, ptr %207, align 8, !tbaa !9
  br label %290

208:                                              ; preds = %203
  %209 = load ptr, ptr %21, align 8, !tbaa !5
  %210 = load i64, ptr %209, align 8, !tbaa !9
  %211 = icmp slt i64 %210, 0
  br i1 %211, label %212, label %214

212:                                              ; preds = %208
  %213 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -3, ptr %213, align 8, !tbaa !9
  br label %289

214:                                              ; preds = %208
  %215 = load ptr, ptr %23, align 8, !tbaa !5
  %216 = load i64, ptr %215, align 8, !tbaa !9
  %217 = load ptr, ptr %21, align 8, !tbaa !5
  %218 = load i64, ptr %217, align 8, !tbaa !9
  %219 = icmp sge i64 1, %218
  br i1 %219, label %220, label %221

220:                                              ; preds = %214
  br label %224

221:                                              ; preds = %214
  %222 = load ptr, ptr %21, align 8, !tbaa !5
  %223 = load i64, ptr %222, align 8, !tbaa !9
  br label %224

224:                                              ; preds = %221, %220
  %225 = phi i64 [ 1, %220 ], [ %223, %221 ]
  %226 = icmp slt i64 %216, %225
  br i1 %226, label %227, label %229

227:                                              ; preds = %224
  %228 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -5, ptr %228, align 8, !tbaa !9
  br label %288

229:                                              ; preds = %224
  %230 = load ptr, ptr %25, align 8, !tbaa !5
  %231 = load i64, ptr %230, align 8, !tbaa !9
  %232 = load ptr, ptr %21, align 8, !tbaa !5
  %233 = load i64, ptr %232, align 8, !tbaa !9
  %234 = icmp sge i64 1, %233
  br i1 %234, label %235, label %236

235:                                              ; preds = %229
  br label %239

236:                                              ; preds = %229
  %237 = load ptr, ptr %21, align 8, !tbaa !5
  %238 = load i64, ptr %237, align 8, !tbaa !9
  br label %239

239:                                              ; preds = %236, %235
  %240 = phi i64 [ 1, %235 ], [ %238, %236 ]
  %241 = icmp slt i64 %231, %240
  br i1 %241, label %242, label %244

242:                                              ; preds = %239
  %243 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -7, ptr %243, align 8, !tbaa !9
  br label %287

244:                                              ; preds = %239
  %245 = load ptr, ptr %29, align 8, !tbaa !5
  %246 = load i64, ptr %245, align 8, !tbaa !9
  %247 = icmp slt i64 %246, 1
  br i1 %247, label %257, label %248

248:                                              ; preds = %244
  %249 = load i64, ptr %70, align 8, !tbaa !9
  %250 = icmp ne i64 %249, 0
  br i1 %250, label %251, label %259

251:                                              ; preds = %248
  %252 = load ptr, ptr %29, align 8, !tbaa !5
  %253 = load i64, ptr %252, align 8, !tbaa !9
  %254 = load ptr, ptr %21, align 8, !tbaa !5
  %255 = load i64, ptr %254, align 8, !tbaa !9
  %256 = icmp slt i64 %253, %255
  br i1 %256, label %257, label %259

257:                                              ; preds = %251, %244
  %258 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -11, ptr %258, align 8, !tbaa !9
  br label %286

259:                                              ; preds = %251, %248
  %260 = load ptr, ptr %31, align 8, !tbaa !5
  %261 = load i64, ptr %260, align 8, !tbaa !9
  %262 = icmp slt i64 %261, 1
  br i1 %262, label %272, label %263

263:                                              ; preds = %259
  %264 = load i64, ptr %71, align 8, !tbaa !9
  %265 = icmp ne i64 %264, 0
  br i1 %265, label %266, label %274

266:                                              ; preds = %263
  %267 = load ptr, ptr %31, align 8, !tbaa !5
  %268 = load i64, ptr %267, align 8, !tbaa !9
  %269 = load ptr, ptr %21, align 8, !tbaa !5
  %270 = load i64, ptr %269, align 8, !tbaa !9
  %271 = icmp slt i64 %268, %270
  br i1 %271, label %272, label %274

272:                                              ; preds = %266, %259
  %273 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -13, ptr %273, align 8, !tbaa !9
  br label %285

274:                                              ; preds = %266, %263
  %275 = load ptr, ptr %33, align 8, !tbaa !5
  %276 = load i64, ptr %275, align 8, !tbaa !9
  %277 = load i64, ptr %96, align 8, !tbaa !9
  %278 = icmp slt i64 %276, %277
  br i1 %278, label %279, label %284

279:                                              ; preds = %274
  %280 = load i64, ptr %99, align 8, !tbaa !9
  %281 = icmp ne i64 %280, 0
  br i1 %281, label %284, label %282

282:                                              ; preds = %279
  %283 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -15, ptr %283, align 8, !tbaa !9
  br label %284

284:                                              ; preds = %282, %279, %274
  br label %285

285:                                              ; preds = %284, %272
  br label %286

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

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

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

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

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

291:                                              ; preds = %290, %201
  %292 = load ptr, ptr %35, align 8, !tbaa !5
  %293 = load i64, ptr %292, align 8, !tbaa !9
  %294 = icmp eq i64 %293, 0
  br i1 %294, label %295, label %350

295:                                              ; preds = %291
  %296 = load ptr, ptr %21, align 8, !tbaa !5
  %297 = load ptr, ptr %21, align 8, !tbaa !5
  %298 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %296, ptr noundef %297, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %298, ptr %58, align 8, !tbaa !9
  %299 = load ptr, ptr %21, align 8, !tbaa !5
  %300 = load ptr, ptr %21, align 8, !tbaa !5
  %301 = load ptr, ptr %21, align 8, !tbaa !5
  %302 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.4, ptr noundef @.str.3, ptr noundef %299, ptr noundef %300, ptr noundef %301, ptr noundef @c_n1)
  store i64 %302, ptr %59, align 8, !tbaa !9
  %303 = load ptr, ptr %21, align 8, !tbaa !5
  %304 = load ptr, ptr %21, align 8, !tbaa !5
  %305 = load ptr, ptr %21, align 8, !tbaa !5
  %306 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef %303, ptr noundef %304, ptr noundef %305, ptr noundef @c_n1)
  store i64 %306, ptr %60, align 8, !tbaa !9
  %307 = load i64, ptr %58, align 8, !tbaa !9
  %308 = load i64, ptr %59, align 8, !tbaa !9
  %309 = icmp sge i64 %307, %308
  br i1 %309, label %310, label %312

310:                                              ; preds = %295
  %311 = load i64, ptr %58, align 8, !tbaa !9
  br label %314

312:                                              ; preds = %295
  %313 = load i64, ptr %59, align 8, !tbaa !9
  br label %314

314:                                              ; preds = %312, %310
  %315 = phi i64 [ %311, %310 ], [ %313, %312 ]
  store i64 %315, ptr %44, align 8, !tbaa !9
  %316 = load i64, ptr %44, align 8, !tbaa !9
  %317 = load i64, ptr %60, align 8, !tbaa !9
  %318 = icmp sge i64 %316, %317
  br i1 %318, label %319, label %321

319:                                              ; preds = %314
  %320 = load i64, ptr %44, align 8, !tbaa !9
  br label %323

321:                                              ; preds = %314
  %322 = load i64, ptr %60, align 8, !tbaa !9
  br label %323

323:                                              ; preds = %321, %319
  %324 = phi i64 [ %320, %319 ], [ %322, %321 ]
  store i64 %324, ptr %55, align 8, !tbaa !9
  %325 = load ptr, ptr %21, align 8, !tbaa !5
  %326 = load i64, ptr %325, align 8, !tbaa !9
  %327 = shl i64 %326, 1
  store i64 %327, ptr %44, align 8, !tbaa !9
  %328 = load ptr, ptr %21, align 8, !tbaa !5
  %329 = load i64, ptr %328, align 8, !tbaa !9
  %330 = load i64, ptr %55, align 8, !tbaa !9
  %331 = add nsw i64 %330, 1
  %332 = mul nsw i64 %329, %331
  store i64 %332, ptr %45, align 8, !tbaa !9
  %333 = load i64, ptr %44, align 8, !tbaa !9
  %334 = load i64, ptr %45, align 8, !tbaa !9
  %335 = icmp sge i64 %333, %334
  br i1 %335, label %336, label %338

336:                                              ; preds = %323
  %337 = load i64, ptr %44, align 8, !tbaa !9
  br label %340

338:                                              ; preds = %323
  %339 = load i64, ptr %45, align 8, !tbaa !9
  br label %340

340:                                              ; preds = %338, %336
  %341 = phi i64 [ %337, %336 ], [ %339, %338 ]
  store i64 %341, ptr %72, align 8, !tbaa !9
  %342 = load i64, ptr %72, align 8, !tbaa !9
  %343 = sitofp i64 %342 to double
  %344 = load ptr, ptr %32, align 8, !tbaa !5
  %345 = getelementptr inbounds %struct.doublecomplex, ptr %344, i64 1
  %346 = getelementptr inbounds %struct.doublecomplex, ptr %345, i32 0, i32 0
  store double %343, ptr %346, align 8, !tbaa !11
  %347 = load ptr, ptr %32, align 8, !tbaa !5
  %348 = getelementptr inbounds %struct.doublecomplex, ptr %347, i64 1
  %349 = getelementptr inbounds %struct.doublecomplex, ptr %348, i32 0, i32 1
  store double 0.000000e+00, ptr %349, align 8, !tbaa !14
  br label %350

350:                                              ; preds = %340, %291
  %351 = load ptr, ptr %35, align 8, !tbaa !5
  %352 = load i64, ptr %351, align 8, !tbaa !9
  %353 = icmp ne i64 %352, 0
  br i1 %353, label %354, label %359

354:                                              ; preds = %350
  %355 = load ptr, ptr %35, align 8, !tbaa !5
  %356 = load i64, ptr %355, align 8, !tbaa !9
  %357 = sub nsw i64 0, %356
  store i64 %357, ptr %44, align 8, !tbaa !9
  %358 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %44)
  store i32 0, ptr %18, align 4
  store i32 1, ptr %100, align 4
  br label %1665

359:                                              ; preds = %350
  %360 = load i64, ptr %99, align 8, !tbaa !9
  %361 = icmp ne i64 %360, 0
  br i1 %361, label %362, label %363

362:                                              ; preds = %359
  store i32 0, ptr %18, align 4
  store i32 1, ptr %100, align 4
  br label %1665

363:                                              ; preds = %359
  br label %364

364:                                              ; preds = %363
  %365 = load ptr, ptr %21, align 8, !tbaa !5
  %366 = load i64, ptr %365, align 8, !tbaa !9
  %367 = icmp eq i64 %366, 0
  br i1 %367, label %368, label %369

368:                                              ; preds = %364
  store i32 0, ptr %18, align 4
  store i32 1, ptr %100, align 4
  br label %1665

369:                                              ; preds = %364
  %370 = call double @dlamch_(ptr noundef @.str.7)
  %371 = call double @dlamch_(ptr noundef @.str.8)
  %372 = fmul double %370, %371
  store double %372, ptr %63, align 8, !tbaa !15
  %373 = call double @dlamch_(ptr noundef @.str.9)
  store double %373, ptr %88, align 8, !tbaa !15
  %374 = load double, ptr %88, align 8, !tbaa !15
  %375 = load double, ptr %88, align 8, !tbaa !15
  %376 = fadd double %375, %374
  store double %376, ptr %88, align 8, !tbaa !15
  %377 = load double, ptr %88, align 8, !tbaa !15
  %378 = fdiv double 1.000000e+00, %377
  store double %378, ptr %89, align 8, !tbaa !15
  %379 = load ptr, ptr %21, align 8, !tbaa !5
  %380 = load ptr, ptr %21, align 8, !tbaa !5
  %381 = load ptr, ptr %22, align 8, !tbaa !5
  %382 = load i64, ptr %37, align 8, !tbaa !9
  %383 = getelementptr inbounds %struct.doublecomplex, ptr %381, i64 %382
  %384 = load ptr, ptr %23, align 8, !tbaa !5
  %385 = load ptr, ptr %34, align 8, !tbaa !5
  %386 = getelementptr inbounds double, ptr %385, i64 1
  %387 = call double @zlange_(ptr noundef @.str.10, ptr noundef %379, ptr noundef %380, ptr noundef %383, ptr noundef %384, ptr noundef %386)
  store double %387, ptr %66, align 8, !tbaa !15
  %388 = load double, ptr %66, align 8, !tbaa !15
  store double %388, ptr %73, align 8, !tbaa !15
  store double 1.000000e+00, ptr %74, align 8, !tbaa !15
  %389 = load double, ptr %66, align 8, !tbaa !15
  %390 = fcmp olt double %389, 1.000000e+00
  br i1 %390, label %391, label %402

391:                                              ; preds = %369
  %392 = load double, ptr %89, align 8, !tbaa !15
  %393 = load double, ptr %66, align 8, !tbaa !15
  %394 = fmul double %392, %393
  %395 = fcmp olt double %394, 1.000000e+00
  br i1 %395, label %396, label %401

396:                                              ; preds = %391
  %397 = load double, ptr %88, align 8, !tbaa !15
  store double %397, ptr %73, align 8, !tbaa !15
  %398 = load double, ptr %89, align 8, !tbaa !15
  %399 = load double, ptr %66, align 8, !tbaa !15
  %400 = fmul double %398, %399
  store double %400, ptr %74, align 8, !tbaa !15
  br label %401

401:                                              ; preds = %396, %391
  br label %402

402:                                              ; preds = %401, %369
  %403 = load double, ptr %66, align 8, !tbaa !15
  %404 = fcmp ogt double %403, 0.000000e+00
  br i1 %404, label %405, label %421

405:                                              ; preds = %402
  %406 = load ptr, ptr %21, align 8, !tbaa !5
  %407 = load ptr, ptr %21, align 8, !tbaa !5
  %408 = load ptr, ptr %22, align 8, !tbaa !5
  %409 = load i64, ptr %37, align 8, !tbaa !9
  %410 = getelementptr inbounds %struct.doublecomplex, ptr %408, i64 %409
  %411 = load ptr, ptr %23, align 8, !tbaa !5
  %412 = call i32 @zlascl_(ptr noundef @.str.11, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef %66, ptr noundef @c_b29, ptr noundef %406, ptr noundef %407, ptr noundef %410, ptr noundef %411, ptr noundef %82)
  %413 = load i64, ptr %82, align 8, !tbaa !9
  %414 = icmp ne i64 %413, 0
  br i1 %414, label %415, label %420

415:                                              ; preds = %405
  %416 = load ptr, ptr %21, align 8, !tbaa !5
  %417 = load i64, ptr %416, align 8, !tbaa !9
  %418 = add nsw i64 %417, 10
  %419 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %418, ptr %419, align 8, !tbaa !9
  store i32 0, ptr %18, align 4
  store i32 1, ptr %100, align 4
  br label %1665

420:                                              ; preds = %405
  br label %421

421:                                              ; preds = %420, %402
  %422 = load ptr, ptr %21, align 8, !tbaa !5
  %423 = load ptr, ptr %21, align 8, !tbaa !5
  %424 = load ptr, ptr %24, align 8, !tbaa !5
  %425 = load i64, ptr %39, align 8, !tbaa !9
  %426 = getelementptr inbounds %struct.doublecomplex, ptr %424, i64 %425
  %427 = load ptr, ptr %25, align 8, !tbaa !5
  %428 = load ptr, ptr %34, align 8, !tbaa !5
  %429 = getelementptr inbounds double, ptr %428, i64 1
  %430 = call double @zlange_(ptr noundef @.str.10, ptr noundef %422, ptr noundef %423, ptr noundef %426, ptr noundef %427, ptr noundef %429)
  store double %430, ptr %67, align 8, !tbaa !15
  %431 = load double, ptr %67, align 8, !tbaa !15
  store double %431, ptr %75, align 8, !tbaa !15
  store double 1.000000e+00, ptr %76, align 8, !tbaa !15
  %432 = load double, ptr %67, align 8, !tbaa !15
  %433 = fcmp olt double %432, 1.000000e+00
  br i1 %433, label %434, label %445

434:                                              ; preds = %421
  %435 = load double, ptr %89, align 8, !tbaa !15
  %436 = load double, ptr %67, align 8, !tbaa !15
  %437 = fmul double %435, %436
  %438 = fcmp olt double %437, 1.000000e+00
  br i1 %438, label %439, label %444

439:                                              ; preds = %434
  %440 = load double, ptr %88, align 8, !tbaa !15
  store double %440, ptr %75, align 8, !tbaa !15
  %441 = load double, ptr %89, align 8, !tbaa !15
  %442 = load double, ptr %67, align 8, !tbaa !15
  %443 = fmul double %441, %442
  store double %443, ptr %76, align 8, !tbaa !15
  br label %444

444:                                              ; preds = %439, %434
  br label %445

445:                                              ; preds = %444, %421
  %446 = load double, ptr %67, align 8, !tbaa !15
  %447 = fcmp ogt double %446, 0.000000e+00
  br i1 %447, label %448, label %464

448:                                              ; preds = %445
  %449 = load ptr, ptr %21, align 8, !tbaa !5
  %450 = load ptr, ptr %21, align 8, !tbaa !5
  %451 = load ptr, ptr %24, align 8, !tbaa !5
  %452 = load i64, ptr %39, align 8, !tbaa !9
  %453 = getelementptr inbounds %struct.doublecomplex, ptr %451, i64 %452
  %454 = load ptr, ptr %25, align 8, !tbaa !5
  %455 = call i32 @zlascl_(ptr noundef @.str.11, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef %67, ptr noundef @c_b29, ptr noundef %449, ptr noundef %450, ptr noundef %453, ptr noundef %454, ptr noundef %82)
  %456 = load i64, ptr %82, align 8, !tbaa !9
  %457 = icmp ne i64 %456, 0
  br i1 %457, label %458, label %463

458:                                              ; preds = %448
  %459 = load ptr, ptr %21, align 8, !tbaa !5
  %460 = load i64, ptr %459, align 8, !tbaa !9
  %461 = add nsw i64 %460, 10
  %462 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %461, ptr %462, align 8, !tbaa !9
  store i32 0, ptr %18, align 4
  store i32 1, ptr %100, align 4
  br label %1665

463:                                              ; preds = %448
  br label %464

464:                                              ; preds = %463, %445
  store i64 1, ptr %81, align 8, !tbaa !9
  %465 = load ptr, ptr %21, align 8, !tbaa !5
  %466 = load i64, ptr %465, align 8, !tbaa !9
  %467 = add nsw i64 %466, 1
  store i64 %467, ptr %93, align 8, !tbaa !9
  %468 = load i64, ptr %93, align 8, !tbaa !9
  %469 = load ptr, ptr %21, align 8, !tbaa !5
  %470 = load i64, ptr %469, align 8, !tbaa !9
  %471 = add nsw i64 %468, %470
  store i64 %471, ptr %97, align 8, !tbaa !9
  %472 = load ptr, ptr %21, align 8, !tbaa !5
  %473 = load ptr, ptr %22, align 8, !tbaa !5
  %474 = load i64, ptr %37, align 8, !tbaa !9
  %475 = getelementptr inbounds %struct.doublecomplex, ptr %473, i64 %474
  %476 = load ptr, ptr %23, align 8, !tbaa !5
  %477 = load ptr, ptr %24, align 8, !tbaa !5
  %478 = load i64, ptr %39, align 8, !tbaa !9
  %479 = getelementptr inbounds %struct.doublecomplex, ptr %477, i64 %478
  %480 = load ptr, ptr %25, align 8, !tbaa !5
  %481 = load ptr, ptr %34, align 8, !tbaa !5
  %482 = load i64, ptr %81, align 8, !tbaa !9
  %483 = getelementptr inbounds double, ptr %481, i64 %482
  %484 = load ptr, ptr %34, align 8, !tbaa !5
  %485 = load i64, ptr %93, align 8, !tbaa !9
  %486 = getelementptr inbounds double, ptr %484, i64 %485
  %487 = load ptr, ptr %34, align 8, !tbaa !5
  %488 = load i64, ptr %97, align 8, !tbaa !9
  %489 = getelementptr inbounds double, ptr %487, i64 %488
  %490 = call i32 @zggbal_(ptr noundef @.str.12, ptr noundef %472, ptr noundef %475, ptr noundef %476, ptr noundef %479, ptr noundef %480, ptr noundef %62, ptr noundef %61, ptr noundef %483, ptr noundef %486, ptr noundef %489, ptr noundef %82)
  %491 = load i64, ptr %82, align 8, !tbaa !9
  %492 = icmp ne i64 %491, 0
  br i1 %492, label %493, label %498

493:                                              ; preds = %464
  %494 = load ptr, ptr %21, align 8, !tbaa !5
  %495 = load i64, ptr %494, align 8, !tbaa !9
  %496 = add nsw i64 %495, 1
  %497 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %496, ptr %497, align 8, !tbaa !9
  br label %1656

498:                                              ; preds = %464
  %499 = load i64, ptr %61, align 8, !tbaa !9
  %500 = add nsw i64 %499, 1
  %501 = load i64, ptr %62, align 8, !tbaa !9
  %502 = sub nsw i64 %500, %501
  store i64 %502, ptr %85, align 8, !tbaa !9
  %503 = load i64, ptr %64, align 8, !tbaa !9
  %504 = icmp ne i64 %503, 0
  br i1 %504, label %505, label %511

505:                                              ; preds = %498
  %506 = load ptr, ptr %21, align 8, !tbaa !5
  %507 = load i64, ptr %506, align 8, !tbaa !9
  %508 = add nsw i64 %507, 1
  %509 = load i64, ptr %62, align 8, !tbaa !9
  %510 = sub nsw i64 %508, %509
  store i64 %510, ptr %83, align 8, !tbaa !9
  br label %513

511:                                              ; preds = %498
  %512 = load i64, ptr %85, align 8, !tbaa !9
  store i64 %512, ptr %83, align 8, !tbaa !9
  br label %513

513:                                              ; preds = %511, %505
  store i64 1, ptr %68, align 8, !tbaa !9
  %514 = load i64, ptr %68, align 8, !tbaa !9
  %515 = load i64, ptr %85, align 8, !tbaa !9
  %516 = add nsw i64 %514, %515
  store i64 %516, ptr %84, align 8, !tbaa !9
  %517 = load ptr, ptr %33, align 8, !tbaa !5
  %518 = load i64, ptr %517, align 8, !tbaa !9
  %519 = add nsw i64 %518, 1
  %520 = load i64, ptr %84, align 8, !tbaa !9
  %521 = sub nsw i64 %519, %520
  store i64 %521, ptr %44, align 8, !tbaa !9
  %522 = load ptr, ptr %24, align 8, !tbaa !5
  %523 = load i64, ptr %62, align 8, !tbaa !9
  %524 = load i64, ptr %62, align 8, !tbaa !9
  %525 = load i64, ptr %38, align 8, !tbaa !9
  %526 = mul nsw i64 %524, %525
  %527 = add nsw i64 %523, %526
  %528 = getelementptr inbounds %struct.doublecomplex, ptr %522, i64 %527
  %529 = load ptr, ptr %25, align 8, !tbaa !5
  %530 = load ptr, ptr %32, align 8, !tbaa !5
  %531 = load i64, ptr %68, align 8, !tbaa !9
  %532 = getelementptr inbounds %struct.doublecomplex, ptr %530, i64 %531
  %533 = load ptr, ptr %32, align 8, !tbaa !5
  %534 = load i64, ptr %84, align 8, !tbaa !9
  %535 = getelementptr inbounds %struct.doublecomplex, ptr %533, i64 %534
  %536 = call i32 @zgeqrf_(ptr noundef %85, ptr noundef %83, ptr noundef %528, ptr noundef %529, ptr noundef %532, ptr noundef %535, ptr noundef %44, ptr noundef %82)
  %537 = load i64, ptr %82, align 8, !tbaa !9
  %538 = icmp sge i64 %537, 0
  br i1 %538, label %539, label %560

539:                                              ; preds = %513
  %540 = load i64, ptr %84, align 8, !tbaa !9
  store i64 %540, ptr %46, align 8, !tbaa !9
  %541 = load i64, ptr %98, align 8, !tbaa !9
  store i64 %541, ptr %44, align 8, !tbaa !9
  %542 = load ptr, ptr %32, align 8, !tbaa !5
  %543 = load i64, ptr %46, align 8, !tbaa !9
  %544 = getelementptr inbounds %struct.doublecomplex, ptr %542, i64 %543
  %545 = getelementptr inbounds %struct.doublecomplex, ptr %544, i32 0, i32 0
  %546 = load double, ptr %545, align 8, !tbaa !11
  %547 = fptosi double %546 to i64
  %548 = load i64, ptr %84, align 8, !tbaa !9
  %549 = add nsw i64 %547, %548
  %550 = sub nsw i64 %549, 1
  store i64 %550, ptr %45, align 8, !tbaa !9
  %551 = load i64, ptr %44, align 8, !tbaa !9
  %552 = load i64, ptr %45, align 8, !tbaa !9
  %553 = icmp sge i64 %551, %552
  br i1 %553, label %554, label %556

554:                                              ; preds = %539
  %555 = load i64, ptr %44, align 8, !tbaa !9
  br label %558

556:                                              ; preds = %539
  %557 = load i64, ptr %45, align 8, !tbaa !9
  br label %558

558:                                              ; preds = %556, %554
  %559 = phi i64 [ %555, %554 ], [ %557, %556 ]
  store i64 %559, ptr %98, align 8, !tbaa !9
  br label %560

560:                                              ; preds = %558, %513
  %561 = load i64, ptr %82, align 8, !tbaa !9
  %562 = icmp ne i64 %561, 0
  br i1 %562, label %563, label %568

563:                                              ; preds = %560
  %564 = load ptr, ptr %21, align 8, !tbaa !5
  %565 = load i64, ptr %564, align 8, !tbaa !9
  %566 = add nsw i64 %565, 2
  %567 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %566, ptr %567, align 8, !tbaa !9
  br label %1656

568:                                              ; preds = %560
  %569 = load ptr, ptr %33, align 8, !tbaa !5
  %570 = load i64, ptr %569, align 8, !tbaa !9
  %571 = add nsw i64 %570, 1
  %572 = load i64, ptr %84, align 8, !tbaa !9
  %573 = sub nsw i64 %571, %572
  store i64 %573, ptr %44, align 8, !tbaa !9
  %574 = load ptr, ptr %24, align 8, !tbaa !5
  %575 = load i64, ptr %62, align 8, !tbaa !9
  %576 = load i64, ptr %62, align 8, !tbaa !9
  %577 = load i64, ptr %38, align 8, !tbaa !9
  %578 = mul nsw i64 %576, %577
  %579 = add nsw i64 %575, %578
  %580 = getelementptr inbounds %struct.doublecomplex, ptr %574, i64 %579
  %581 = load ptr, ptr %25, align 8, !tbaa !5
  %582 = load ptr, ptr %32, align 8, !tbaa !5
  %583 = load i64, ptr %68, align 8, !tbaa !9
  %584 = getelementptr inbounds %struct.doublecomplex, ptr %582, i64 %583
  %585 = load ptr, ptr %22, align 8, !tbaa !5
  %586 = load i64, ptr %62, align 8, !tbaa !9
  %587 = load i64, ptr %62, align 8, !tbaa !9
  %588 = load i64, ptr %36, align 8, !tbaa !9
  %589 = mul nsw i64 %587, %588
  %590 = add nsw i64 %586, %589
  %591 = getelementptr inbounds %struct.doublecomplex, ptr %585, i64 %590
  %592 = load ptr, ptr %23, align 8, !tbaa !5
  %593 = load ptr, ptr %32, align 8, !tbaa !5
  %594 = load i64, ptr %84, align 8, !tbaa !9
  %595 = getelementptr inbounds %struct.doublecomplex, ptr %593, i64 %594
  %596 = call i32 @zunmqr_(ptr noundef @.str.13, ptr noundef @.str.14, ptr noundef %85, ptr noundef %83, ptr noundef %85, ptr noundef %580, ptr noundef %581, ptr noundef %584, ptr noundef %591, ptr noundef %592, ptr noundef %595, ptr noundef %44, ptr noundef %82)
  %597 = load i64, ptr %82, align 8, !tbaa !9
  %598 = icmp sge i64 %597, 0
  br i1 %598, label %599, label %620

599:                                              ; preds = %568
  %600 = load i64, ptr %84, align 8, !tbaa !9
  store i64 %600, ptr %46, align 8, !tbaa !9
  %601 = load i64, ptr %98, align 8, !tbaa !9
  store i64 %601, ptr %44, align 8, !tbaa !9
  %602 = load ptr, ptr %32, align 8, !tbaa !5
  %603 = load i64, ptr %46, align 8, !tbaa !9
  %604 = getelementptr inbounds %struct.doublecomplex, ptr %602, i64 %603
  %605 = getelementptr inbounds %struct.doublecomplex, ptr %604, i32 0, i32 0
  %606 = load double, ptr %605, align 8, !tbaa !11
  %607 = fptosi double %606 to i64
  %608 = load i64, ptr %84, align 8, !tbaa !9
  %609 = add nsw i64 %607, %608
  %610 = sub nsw i64 %609, 1
  store i64 %610, ptr %45, align 8, !tbaa !9
  %611 = load i64, ptr %44, align 8, !tbaa !9
  %612 = load i64, ptr %45, align 8, !tbaa !9
  %613 = icmp sge i64 %611, %612
  br i1 %613, label %614, label %616

614:                                              ; preds = %599
  %615 = load i64, ptr %44, align 8, !tbaa !9
  br label %618

616:                                              ; preds = %599
  %617 = load i64, ptr %45, align 8, !tbaa !9
  br label %618

618:                                              ; preds = %616, %614
  %619 = phi i64 [ %615, %614 ], [ %617, %616 ]
  store i64 %619, ptr %98, align 8, !tbaa !9
  br label %620

620:                                              ; preds = %618, %568
  %621 = load i64, ptr %82, align 8, !tbaa !9
  %622 = icmp ne i64 %621, 0
  br i1 %622, label %623, label %628

623:                                              ; preds = %620
  %624 = load ptr, ptr %21, align 8, !tbaa !5
  %625 = load i64, ptr %624, align 8, !tbaa !9
  %626 = add nsw i64 %625, 3
  %627 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %626, ptr %627, align 8, !tbaa !9
  br label %1656

628:                                              ; preds = %620
  %629 = load i64, ptr %70, align 8, !tbaa !9
  %630 = icmp ne i64 %629, 0
  br i1 %630, label %631, label %714

631:                                              ; preds = %628
  %632 = load ptr, ptr %21, align 8, !tbaa !5
  %633 = load ptr, ptr %21, align 8, !tbaa !5
  %634 = load ptr, ptr %28, align 8, !tbaa !5
  %635 = load i64, ptr %41, align 8, !tbaa !9
  %636 = getelementptr inbounds %struct.doublecomplex, ptr %634, i64 %635
  %637 = load ptr, ptr %29, align 8, !tbaa !5
  %638 = call i32 @zlaset_(ptr noundef @.str.15, ptr noundef %632, ptr noundef %633, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %636, ptr noundef %637)
  %639 = load i64, ptr %85, align 8, !tbaa !9
  %640 = sub nsw i64 %639, 1
  store i64 %640, ptr %44, align 8, !tbaa !9
  %641 = load i64, ptr %85, align 8, !tbaa !9
  %642 = sub nsw i64 %641, 1
  store i64 %642, ptr %45, align 8, !tbaa !9
  %643 = load ptr, ptr %24, align 8, !tbaa !5
  %644 = load i64, ptr %62, align 8, !tbaa !9
  %645 = add nsw i64 %644, 1
  %646 = load i64, ptr %62, align 8, !tbaa !9
  %647 = load i64, ptr %38, align 8, !tbaa !9
  %648 = mul nsw i64 %646, %647
  %649 = add nsw i64 %645, %648
  %650 = getelementptr inbounds %struct.doublecomplex, ptr %643, i64 %649
  %651 = load ptr, ptr %25, align 8, !tbaa !5
  %652 = load ptr, ptr %28, align 8, !tbaa !5
  %653 = load i64, ptr %62, align 8, !tbaa !9
  %654 = add nsw i64 %653, 1
  %655 = load i64, ptr %62, align 8, !tbaa !9
  %656 = load i64, ptr %40, align 8, !tbaa !9
  %657 = mul nsw i64 %655, %656
  %658 = add nsw i64 %654, %657
  %659 = getelementptr inbounds %struct.doublecomplex, ptr %652, i64 %658
  %660 = load ptr, ptr %29, align 8, !tbaa !5
  %661 = call i32 @zlacpy_(ptr noundef @.str.13, ptr noundef %44, ptr noundef %45, ptr noundef %650, ptr noundef %651, ptr noundef %659, ptr noundef %660)
  %662 = load ptr, ptr %33, align 8, !tbaa !5
  %663 = load i64, ptr %662, align 8, !tbaa !9
  %664 = add nsw i64 %663, 1
  %665 = load i64, ptr %84, align 8, !tbaa !9
  %666 = sub nsw i64 %664, %665
  store i64 %666, ptr %44, align 8, !tbaa !9
  %667 = load ptr, ptr %28, align 8, !tbaa !5
  %668 = load i64, ptr %62, align 8, !tbaa !9
  %669 = load i64, ptr %62, align 8, !tbaa !9
  %670 = load i64, ptr %40, align 8, !tbaa !9
  %671 = mul nsw i64 %669, %670
  %672 = add nsw i64 %668, %671
  %673 = getelementptr inbounds %struct.doublecomplex, ptr %667, i64 %672
  %674 = load ptr, ptr %29, align 8, !tbaa !5
  %675 = load ptr, ptr %32, align 8, !tbaa !5
  %676 = load i64, ptr %68, align 8, !tbaa !9
  %677 = getelementptr inbounds %struct.doublecomplex, ptr %675, i64 %676
  %678 = load ptr, ptr %32, align 8, !tbaa !5
  %679 = load i64, ptr %84, align 8, !tbaa !9
  %680 = getelementptr inbounds %struct.doublecomplex, ptr %678, i64 %679
  %681 = call i32 @zungqr_(ptr noundef %85, ptr noundef %85, ptr noundef %85, ptr noundef %673, ptr noundef %674, ptr noundef %677, ptr noundef %680, ptr noundef %44, ptr noundef %82)
  %682 = load i64, ptr %82, align 8, !tbaa !9
  %683 = icmp sge i64 %682, 0
  br i1 %683, label %684, label %705

684:                                              ; preds = %631
  %685 = load i64, ptr %84, align 8, !tbaa !9
  store i64 %685, ptr %46, align 8, !tbaa !9
  %686 = load i64, ptr %98, align 8, !tbaa !9
  store i64 %686, ptr %44, align 8, !tbaa !9
  %687 = load ptr, ptr %32, align 8, !tbaa !5
  %688 = load i64, ptr %46, align 8, !tbaa !9
  %689 = getelementptr inbounds %struct.doublecomplex, ptr %687, i64 %688
  %690 = getelementptr inbounds %struct.doublecomplex, ptr %689, i32 0, i32 0
  %691 = load double, ptr %690, align 8, !tbaa !11
  %692 = fptosi double %691 to i64
  %693 = load i64, ptr %84, align 8, !tbaa !9
  %694 = add nsw i64 %692, %693
  %695 = sub nsw i64 %694, 1
  store i64 %695, ptr %45, align 8, !tbaa !9
  %696 = load i64, ptr %44, align 8, !tbaa !9
  %697 = load i64, ptr %45, align 8, !tbaa !9
  %698 = icmp sge i64 %696, %697
  br i1 %698, label %699, label %701

699:                                              ; preds = %684
  %700 = load i64, ptr %44, align 8, !tbaa !9
  br label %703

701:                                              ; preds = %684
  %702 = load i64, ptr %45, align 8, !tbaa !9
  br label %703

703:                                              ; preds = %701, %699
  %704 = phi i64 [ %700, %699 ], [ %702, %701 ]
  store i64 %704, ptr %98, align 8, !tbaa !9
  br label %705

705:                                              ; preds = %703, %631
  %706 = load i64, ptr %82, align 8, !tbaa !9
  %707 = icmp ne i64 %706, 0
  br i1 %707, label %708, label %713

708:                                              ; preds = %705
  %709 = load ptr, ptr %21, align 8, !tbaa !5
  %710 = load i64, ptr %709, align 8, !tbaa !9
  %711 = add nsw i64 %710, 4
  %712 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %711, ptr %712, align 8, !tbaa !9
  br label %1656

713:                                              ; preds = %705
  br label %714

714:                                              ; preds = %713, %628
  %715 = load i64, ptr %71, align 8, !tbaa !9
  %716 = icmp ne i64 %715, 0
  br i1 %716, label %717, label %725

717:                                              ; preds = %714
  %718 = load ptr, ptr %21, align 8, !tbaa !5
  %719 = load ptr, ptr %21, align 8, !tbaa !5
  %720 = load ptr, ptr %30, align 8, !tbaa !5
  %721 = load i64, ptr %43, align 8, !tbaa !9
  %722 = getelementptr inbounds %struct.doublecomplex, ptr %720, i64 %721
  %723 = load ptr, ptr %31, align 8, !tbaa !5
  %724 = call i32 @zlaset_(ptr noundef @.str.15, ptr noundef %718, ptr noundef %719, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %722, ptr noundef %723)
  br label %725

725:                                              ; preds = %717, %714
  %726 = load i64, ptr %64, align 8, !tbaa !9
  %727 = icmp ne i64 %726, 0
  br i1 %727, label %728, label %749

728:                                              ; preds = %725
  %729 = load ptr, ptr %19, align 8, !tbaa !5
  %730 = load ptr, ptr %20, align 8, !tbaa !5
  %731 = load ptr, ptr %21, align 8, !tbaa !5
  %732 = load ptr, ptr %22, align 8, !tbaa !5
  %733 = load i64, ptr %37, align 8, !tbaa !9
  %734 = getelementptr inbounds %struct.doublecomplex, ptr %732, i64 %733
  %735 = load ptr, ptr %23, align 8, !tbaa !5
  %736 = load ptr, ptr %24, align 8, !tbaa !5
  %737 = load i64, ptr %39, align 8, !tbaa !9
  %738 = getelementptr inbounds %struct.doublecomplex, ptr %736, i64 %737
  %739 = load ptr, ptr %25, align 8, !tbaa !5
  %740 = load ptr, ptr %28, align 8, !tbaa !5
  %741 = load i64, ptr %41, align 8, !tbaa !9
  %742 = getelementptr inbounds %struct.doublecomplex, ptr %740, i64 %741
  %743 = load ptr, ptr %29, align 8, !tbaa !5
  %744 = load ptr, ptr %30, align 8, !tbaa !5
  %745 = load i64, ptr %43, align 8, !tbaa !9
  %746 = getelementptr inbounds %struct.doublecomplex, ptr %744, i64 %745
  %747 = load ptr, ptr %31, align 8, !tbaa !5
  %748 = call i32 @zgghrd_(ptr noundef %729, ptr noundef %730, ptr noundef %731, ptr noundef %62, ptr noundef %61, ptr noundef %734, ptr noundef %735, ptr noundef %738, ptr noundef %739, ptr noundef %742, ptr noundef %743, ptr noundef %746, ptr noundef %747, ptr noundef %82)
  br label %775

749:                                              ; preds = %725
  %750 = load ptr, ptr %22, align 8, !tbaa !5
  %751 = load i64, ptr %62, align 8, !tbaa !9
  %752 = load i64, ptr %62, align 8, !tbaa !9
  %753 = load i64, ptr %36, align 8, !tbaa !9
  %754 = mul nsw i64 %752, %753
  %755 = add nsw i64 %751, %754
  %756 = getelementptr inbounds %struct.doublecomplex, ptr %750, i64 %755
  %757 = load ptr, ptr %23, align 8, !tbaa !5
  %758 = load ptr, ptr %24, align 8, !tbaa !5
  %759 = load i64, ptr %62, align 8, !tbaa !9
  %760 = load i64, ptr %62, align 8, !tbaa !9
  %761 = load i64, ptr %38, align 8, !tbaa !9
  %762 = mul nsw i64 %760, %761
  %763 = add nsw i64 %759, %762
  %764 = getelementptr inbounds %struct.doublecomplex, ptr %758, i64 %763
  %765 = load ptr, ptr %25, align 8, !tbaa !5
  %766 = load ptr, ptr %28, align 8, !tbaa !5
  %767 = load i64, ptr %41, align 8, !tbaa !9
  %768 = getelementptr inbounds %struct.doublecomplex, ptr %766, i64 %767
  %769 = load ptr, ptr %29, align 8, !tbaa !5
  %770 = load ptr, ptr %30, align 8, !tbaa !5
  %771 = load i64, ptr %43, align 8, !tbaa !9
  %772 = getelementptr inbounds %struct.doublecomplex, ptr %770, i64 %771
  %773 = load ptr, ptr %31, align 8, !tbaa !5
  %774 = call i32 @zgghrd_(ptr noundef @.str, ptr noundef @.str, ptr noundef %85, ptr noundef @c__1, ptr noundef %85, ptr noundef %756, ptr noundef %757, ptr noundef %764, ptr noundef %765, ptr noundef %768, ptr noundef %769, ptr noundef %772, ptr noundef %773, ptr noundef %82)
  br label %775

775:                                              ; preds = %749, %728
  %776 = load i64, ptr %82, align 8, !tbaa !9
  %777 = icmp ne i64 %776, 0
  br i1 %777, label %778, label %783

778:                                              ; preds = %775
  %779 = load ptr, ptr %21, align 8, !tbaa !5
  %780 = load i64, ptr %779, align 8, !tbaa !9
  %781 = add nsw i64 %780, 5
  %782 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %781, ptr %782, align 8, !tbaa !9
  br label %1656

783:                                              ; preds = %775
  %784 = load i64, ptr %68, align 8, !tbaa !9
  store i64 %784, ptr %84, align 8, !tbaa !9
  %785 = load i64, ptr %64, align 8, !tbaa !9
  %786 = icmp ne i64 %785, 0
  br i1 %786, label %787, label %789

787:                                              ; preds = %783
  %788 = getelementptr inbounds [1 x i8], ptr %90, i64 0, i64 0
  store i8 83, ptr %788, align 1, !tbaa !16
  br label %791

789:                                              ; preds = %783
  %790 = getelementptr inbounds [1 x i8], ptr %90, i64 0, i64 0
  store i8 69, ptr %790, align 1, !tbaa !16
  br label %791

791:                                              ; preds = %789, %787
  %792 = load ptr, ptr %33, align 8, !tbaa !5
  %793 = load i64, ptr %792, align 8, !tbaa !9
  %794 = add nsw i64 %793, 1
  %795 = load i64, ptr %84, align 8, !tbaa !9
  %796 = sub nsw i64 %794, %795
  store i64 %796, ptr %44, align 8, !tbaa !9
  %797 = getelementptr inbounds [1 x i8], ptr %90, i64 0, i64 0
  %798 = load ptr, ptr %19, align 8, !tbaa !5
  %799 = load ptr, ptr %20, align 8, !tbaa !5
  %800 = load ptr, ptr %21, align 8, !tbaa !5
  %801 = load ptr, ptr %22, align 8, !tbaa !5
  %802 = load i64, ptr %37, align 8, !tbaa !9
  %803 = getelementptr inbounds %struct.doublecomplex, ptr %801, i64 %802
  %804 = load ptr, ptr %23, align 8, !tbaa !5
  %805 = load ptr, ptr %24, align 8, !tbaa !5
  %806 = load i64, ptr %39, align 8, !tbaa !9
  %807 = getelementptr inbounds %struct.doublecomplex, ptr %805, i64 %806
  %808 = load ptr, ptr %25, align 8, !tbaa !5
  %809 = load ptr, ptr %26, align 8, !tbaa !5
  %810 = getelementptr inbounds %struct.doublecomplex, ptr %809, i64 1
  %811 = load ptr, ptr %27, align 8, !tbaa !5
  %812 = getelementptr inbounds %struct.doublecomplex, ptr %811, i64 1
  %813 = load ptr, ptr %28, align 8, !tbaa !5
  %814 = load i64, ptr %41, align 8, !tbaa !9
  %815 = getelementptr inbounds %struct.doublecomplex, ptr %813, i64 %814
  %816 = load ptr, ptr %29, align 8, !tbaa !5
  %817 = load ptr, ptr %30, align 8, !tbaa !5
  %818 = load i64, ptr %43, align 8, !tbaa !9
  %819 = getelementptr inbounds %struct.doublecomplex, ptr %817, i64 %818
  %820 = load ptr, ptr %31, align 8, !tbaa !5
  %821 = load ptr, ptr %32, align 8, !tbaa !5
  %822 = load i64, ptr %84, align 8, !tbaa !9
  %823 = getelementptr inbounds %struct.doublecomplex, ptr %821, i64 %822
  %824 = load ptr, ptr %34, align 8, !tbaa !5
  %825 = load i64, ptr %97, align 8, !tbaa !9
  %826 = getelementptr inbounds double, ptr %824, i64 %825
  %827 = call i32 @zhgeqz_(ptr noundef %797, ptr noundef %798, ptr noundef %799, ptr noundef %800, ptr noundef %62, ptr noundef %61, ptr noundef %803, ptr noundef %804, ptr noundef %807, ptr noundef %808, ptr noundef %810, ptr noundef %812, ptr noundef %815, ptr noundef %816, ptr noundef %819, ptr noundef %820, ptr noundef %823, ptr noundef %44, ptr noundef %826, ptr noundef %82)
  %828 = load i64, ptr %82, align 8, !tbaa !9
  %829 = icmp sge i64 %828, 0
  br i1 %829, label %830, label %851

830:                                              ; preds = %791
  %831 = load i64, ptr %84, align 8, !tbaa !9
  store i64 %831, ptr %46, align 8, !tbaa !9
  %832 = load i64, ptr %98, align 8, !tbaa !9
  store i64 %832, ptr %44, align 8, !tbaa !9
  %833 = load ptr, ptr %32, align 8, !tbaa !5
  %834 = load i64, ptr %46, align 8, !tbaa !9
  %835 = getelementptr inbounds %struct.doublecomplex, ptr %833, i64 %834
  %836 = getelementptr inbounds %struct.doublecomplex, ptr %835, i32 0, i32 0
  %837 = load double, ptr %836, align 8, !tbaa !11
  %838 = fptosi double %837 to i64
  %839 = load i64, ptr %84, align 8, !tbaa !9
  %840 = add nsw i64 %838, %839
  %841 = sub nsw i64 %840, 1
  store i64 %841, ptr %45, align 8, !tbaa !9
  %842 = load i64, ptr %44, align 8, !tbaa !9
  %843 = load i64, ptr %45, align 8, !tbaa !9
  %844 = icmp sge i64 %842, %843
  br i1 %844, label %845, label %847

845:                                              ; preds = %830
  %846 = load i64, ptr %44, align 8, !tbaa !9
  br label %849

847:                                              ; preds = %830
  %848 = load i64, ptr %45, align 8, !tbaa !9
  br label %849

849:                                              ; preds = %847, %845
  %850 = phi i64 [ %846, %845 ], [ %848, %847 ]
  store i64 %850, ptr %98, align 8, !tbaa !9
  br label %851

851:                                              ; preds = %849, %791
  %852 = load i64, ptr %82, align 8, !tbaa !9
  %853 = icmp ne i64 %852, 0
  br i1 %853, label %854, label %889

854:                                              ; preds = %851
  %855 = load i64, ptr %82, align 8, !tbaa !9
  %856 = icmp sgt i64 %855, 0
  br i1 %856, label %857, label %865

857:                                              ; preds = %854
  %858 = load i64, ptr %82, align 8, !tbaa !9
  %859 = load ptr, ptr %21, align 8, !tbaa !5
  %860 = load i64, ptr %859, align 8, !tbaa !9
  %861 = icmp sle i64 %858, %860
  br i1 %861, label %862, label %865

862:                                              ; preds = %857
  %863 = load i64, ptr %82, align 8, !tbaa !9
  %864 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %863, ptr %864, align 8, !tbaa !9
  br label %888

865:                                              ; preds = %857, %854
  %866 = load i64, ptr %82, align 8, !tbaa !9
  %867 = load ptr, ptr %21, align 8, !tbaa !5
  %868 = load i64, ptr %867, align 8, !tbaa !9
  %869 = icmp sgt i64 %866, %868
  br i1 %869, label %870, label %882

870:                                              ; preds = %865
  %871 = load i64, ptr %82, align 8, !tbaa !9
  %872 = load ptr, ptr %21, align 8, !tbaa !5
  %873 = load i64, ptr %872, align 8, !tbaa !9
  %874 = shl i64 %873, 1
  %875 = icmp sle i64 %871, %874
  br i1 %875, label %876, label %882

876:                                              ; preds = %870
  %877 = load i64, ptr %82, align 8, !tbaa !9
  %878 = load ptr, ptr %21, align 8, !tbaa !5
  %879 = load i64, ptr %878, align 8, !tbaa !9
  %880 = sub nsw i64 %877, %879
  %881 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %880, ptr %881, align 8, !tbaa !9
  br label %887

882:                                              ; preds = %870, %865
  %883 = load ptr, ptr %21, align 8, !tbaa !5
  %884 = load i64, ptr %883, align 8, !tbaa !9
  %885 = add nsw i64 %884, 6
  %886 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %885, ptr %886, align 8, !tbaa !9
  br label %887

887:                                              ; preds = %882, %876
  br label %888

888:                                              ; preds = %887, %862
  br label %1656

889:                                              ; preds = %851
  %890 = load i64, ptr %64, align 8, !tbaa !9
  %891 = icmp ne i64 %890, 0
  br i1 %891, label %892, label %1243

892:                                              ; preds = %889
  %893 = load i64, ptr %70, align 8, !tbaa !9
  %894 = icmp ne i64 %893, 0
  br i1 %894, label %895, label %903

895:                                              ; preds = %892
  %896 = load i64, ptr %71, align 8, !tbaa !9
  %897 = icmp ne i64 %896, 0
  br i1 %897, label %898, label %900

898:                                              ; preds = %895
  %899 = getelementptr inbounds [1 x i8], ptr %90, i64 0, i64 0
  store i8 66, ptr %899, align 1, !tbaa !16
  br label %902

900:                                              ; preds = %895
  %901 = getelementptr inbounds [1 x i8], ptr %90, i64 0, i64 0
  store i8 76, ptr %901, align 1, !tbaa !16
  br label %902

902:                                              ; preds = %900, %898
  br label %905

903:                                              ; preds = %892
  %904 = getelementptr inbounds [1 x i8], ptr %90, i64 0, i64 0
  store i8 82, ptr %904, align 1, !tbaa !16
  br label %905

905:                                              ; preds = %903, %902
  %906 = getelementptr inbounds [1 x i8], ptr %90, i64 0, i64 0
  %907 = getelementptr inbounds [1 x i64], ptr %91, i64 0, i64 0
  %908 = load ptr, ptr %21, align 8, !tbaa !5
  %909 = load ptr, ptr %22, align 8, !tbaa !5
  %910 = load i64, ptr %37, align 8, !tbaa !9
  %911 = getelementptr inbounds %struct.doublecomplex, ptr %909, i64 %910
  %912 = load ptr, ptr %23, align 8, !tbaa !5
  %913 = load ptr, ptr %24, align 8, !tbaa !5
  %914 = load i64, ptr %39, align 8, !tbaa !9
  %915 = getelementptr inbounds %struct.doublecomplex, ptr %913, i64 %914
  %916 = load ptr, ptr %25, align 8, !tbaa !5
  %917 = load ptr, ptr %28, align 8, !tbaa !5
  %918 = load i64, ptr %41, align 8, !tbaa !9
  %919 = getelementptr inbounds %struct.doublecomplex, ptr %917, i64 %918
  %920 = load ptr, ptr %29, align 8, !tbaa !5
  %921 = load ptr, ptr %30, align 8, !tbaa !5
  %922 = load i64, ptr %43, align 8, !tbaa !9
  %923 = getelementptr inbounds %struct.doublecomplex, ptr %921, i64 %922
  %924 = load ptr, ptr %31, align 8, !tbaa !5
  %925 = load ptr, ptr %21, align 8, !tbaa !5
  %926 = load ptr, ptr %32, align 8, !tbaa !5
  %927 = load i64, ptr %84, align 8, !tbaa !9
  %928 = getelementptr inbounds %struct.doublecomplex, ptr %926, i64 %927
  %929 = load ptr, ptr %34, align 8, !tbaa !5
  %930 = load i64, ptr %97, align 8, !tbaa !9
  %931 = getelementptr inbounds double, ptr %929, i64 %930
  %932 = call i32 @ztgevc_(ptr noundef %906, ptr noundef @.str.8, ptr noundef %907, ptr noundef %908, ptr noundef %911, ptr noundef %912, ptr noundef %915, ptr noundef %916, ptr noundef %919, ptr noundef %920, ptr noundef %923, ptr noundef %924, ptr noundef %925, ptr noundef %56, ptr noundef %928, ptr noundef %931, ptr noundef %82)
  %933 = load i64, ptr %82, align 8, !tbaa !9
  %934 = icmp ne i64 %933, 0
  br i1 %934, label %935, label %940

935:                                              ; preds = %905
  %936 = load ptr, ptr %21, align 8, !tbaa !5
  %937 = load i64, ptr %936, align 8, !tbaa !9
  %938 = add nsw i64 %937, 7
  %939 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %938, ptr %939, align 8, !tbaa !9
  br label %1656

940:                                              ; preds = %905
  %941 = load i64, ptr %70, align 8, !tbaa !9
  %942 = icmp ne i64 %941, 0
  br i1 %942, label %943, label %1091

943:                                              ; preds = %940
  %944 = load ptr, ptr %21, align 8, !tbaa !5
  %945 = load ptr, ptr %34, align 8, !tbaa !5
  %946 = load i64, ptr %81, align 8, !tbaa !9
  %947 = getelementptr inbounds double, ptr %945, i64 %946
  %948 = load ptr, ptr %34, align 8, !tbaa !5
  %949 = load i64, ptr %93, align 8, !tbaa !9
  %950 = getelementptr inbounds double, ptr %948, i64 %949
  %951 = load ptr, ptr %21, align 8, !tbaa !5
  %952 = load ptr, ptr %28, align 8, !tbaa !5
  %953 = load i64, ptr %41, align 8, !tbaa !9
  %954 = getelementptr inbounds %struct.doublecomplex, ptr %952, i64 %953
  %955 = load ptr, ptr %29, align 8, !tbaa !5
  %956 = call i32 @zggbak_(ptr noundef @.str.12, ptr noundef @.str.13, ptr noundef %944, ptr noundef %62, ptr noundef %61, ptr noundef %947, ptr noundef %950, ptr noundef %951, ptr noundef %954, ptr noundef %955, ptr noundef %82)
  %957 = load i64, ptr %82, align 8, !tbaa !9
  %958 = icmp ne i64 %957, 0
  br i1 %958, label %959, label %964

959:                                              ; preds = %943
  %960 = load ptr, ptr %21, align 8, !tbaa !5
  %961 = load i64, ptr %960, align 8, !tbaa !9
  %962 = add nsw i64 %961, 8
  %963 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %962, ptr %963, align 8, !tbaa !9
  br label %1656

964:                                              ; preds = %943
  %965 = load ptr, ptr %21, align 8, !tbaa !5
  %966 = load i64, ptr %965, align 8, !tbaa !9
  store i64 %966, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %967

967:                                              ; preds = %1087, %964
  %968 = load i64, ptr %54, align 8, !tbaa !9
  %969 = load i64, ptr %44, align 8, !tbaa !9
  %970 = icmp sle i64 %968, %969
  br i1 %970, label %971, label %1090

971:                                              ; preds = %967
  store double 0.000000e+00, ptr %69, align 8, !tbaa !15
  %972 = load ptr, ptr %21, align 8, !tbaa !5
  %973 = load i64, ptr %972, align 8, !tbaa !9
  store i64 %973, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %57, align 8, !tbaa !9
  br label %974

974:                                              ; preds = %1026, %971
  %975 = load i64, ptr %57, align 8, !tbaa !9
  %976 = load i64, ptr %45, align 8, !tbaa !9
  %977 = icmp sle i64 %975, %976
  br i1 %977, label %978, label %1029

978:                                              ; preds = %974
  %979 = load i64, ptr %57, align 8, !tbaa !9
  %980 = load i64, ptr %54, align 8, !tbaa !9
  %981 = load i64, ptr %40, align 8, !tbaa !9
  %982 = mul nsw i64 %980, %981
  %983 = add nsw i64 %979, %982
  store i64 %983, ptr %46, align 8, !tbaa !9
  %984 = load double, ptr %69, align 8, !tbaa !15
  store double %984, ptr %50, align 8, !tbaa !15
  %985 = load ptr, ptr %28, align 8, !tbaa !5
  %986 = load i64, ptr %46, align 8, !tbaa !9
  %987 = getelementptr inbounds %struct.doublecomplex, ptr %985, i64 %986
  %988 = getelementptr inbounds %struct.doublecomplex, ptr %987, i32 0, i32 0
  %989 = load double, ptr %988, align 8, !tbaa !11
  store double %989, ptr %48, align 8, !tbaa !15
  %990 = load double, ptr %48, align 8, !tbaa !15
  %991 = fcmp oge double %990, 0.000000e+00
  br i1 %991, label %992, label %994

992:                                              ; preds = %978
  %993 = load double, ptr %48, align 8, !tbaa !15
  br label %997

994:                                              ; preds = %978
  %995 = load double, ptr %48, align 8, !tbaa !15
  %996 = fneg double %995
  br label %997

997:                                              ; preds = %994, %992
  %998 = phi double [ %993, %992 ], [ %996, %994 ]
  %999 = load ptr, ptr %28, align 8, !tbaa !5
  %1000 = load i64, ptr %57, align 8, !tbaa !9
  %1001 = load i64, ptr %54, align 8, !tbaa !9
  %1002 = load i64, ptr %40, align 8, !tbaa !9
  %1003 = mul nsw i64 %1001, %1002
  %1004 = add nsw i64 %1000, %1003
  %1005 = getelementptr inbounds %struct.doublecomplex, ptr %999, i64 %1004
  %1006 = call double @d_imag(ptr noundef %1005)
  store double %1006, ptr %49, align 8, !tbaa !15
  %1007 = load double, ptr %49, align 8, !tbaa !15
  %1008 = fcmp oge double %1007, 0.000000e+00
  br i1 %1008, label %1009, label %1011

1009:                                             ; preds = %997
  %1010 = load double, ptr %49, align 8, !tbaa !15
  br label %1014

1011:                                             ; preds = %997
  %1012 = load double, ptr %49, align 8, !tbaa !15
  %1013 = fneg double %1012
  br label %1014

1014:                                             ; preds = %1011, %1009
  %1015 = phi double [ %1010, %1009 ], [ %1013, %1011 ]
  %1016 = fadd double %998, %1015
  store double %1016, ptr %51, align 8, !tbaa !15
  %1017 = load double, ptr %50, align 8, !tbaa !15
  %1018 = load double, ptr %51, align 8, !tbaa !15
  %1019 = fcmp oge double %1017, %1018
  br i1 %1019, label %1020, label %1022

1020:                                             ; preds = %1014
  %1021 = load double, ptr %50, align 8, !tbaa !15
  br label %1024

1022:                                             ; preds = %1014
  %1023 = load double, ptr %51, align 8, !tbaa !15
  br label %1024

1024:                                             ; preds = %1022, %1020
  %1025 = phi double [ %1021, %1020 ], [ %1023, %1022 ]
  store double %1025, ptr %69, align 8, !tbaa !15
  br label %1026

1026:                                             ; preds = %1024
  %1027 = load i64, ptr %57, align 8, !tbaa !9
  %1028 = add nsw i64 %1027, 1
  store i64 %1028, ptr %57, align 8, !tbaa !9
  br label %974, !llvm.loop !17

1029:                                             ; preds = %974
  %1030 = load double, ptr %69, align 8, !tbaa !15
  %1031 = load double, ptr %88, align 8, !tbaa !15
  %1032 = fcmp olt double %1030, %1031
  br i1 %1032, label %1033, label %1034

1033:                                             ; preds = %1029
  br label %1086

1034:                                             ; preds = %1029
  %1035 = load double, ptr %69, align 8, !tbaa !15
  %1036 = fdiv double 1.000000e+00, %1035
  store double %1036, ptr %69, align 8, !tbaa !15
  %1037 = load ptr, ptr %21, align 8, !tbaa !5
  %1038 = load i64, ptr %1037, align 8, !tbaa !9
  store i64 %1038, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %57, align 8, !tbaa !9
  br label %1039

1039:                                             ; preds = %1082, %1034
  %1040 = load i64, ptr %57, align 8, !tbaa !9
  %1041 = load i64, ptr %45, align 8, !tbaa !9
  %1042 = icmp sle i64 %1040, %1041
  br i1 %1042, label %1043, label %1085

1043:                                             ; preds = %1039
  %1044 = load i64, ptr %57, align 8, !tbaa !9
  %1045 = load i64, ptr %54, align 8, !tbaa !9
  %1046 = load i64, ptr %40, align 8, !tbaa !9
  %1047 = mul nsw i64 %1045, %1046
  %1048 = add nsw i64 %1044, %1047
  store i64 %1048, ptr %46, align 8, !tbaa !9
  %1049 = load i64, ptr %57, align 8, !tbaa !9
  %1050 = load i64, ptr %54, align 8, !tbaa !9
  %1051 = load i64, ptr %40, align 8, !tbaa !9
  %1052 = mul nsw i64 %1050, %1051
  %1053 = add nsw i64 %1049, %1052
  store i64 %1053, ptr %47, align 8, !tbaa !9
  %1054 = load double, ptr %69, align 8, !tbaa !15
  %1055 = load ptr, ptr %28, align 8, !tbaa !5
  %1056 = load i64, ptr %47, align 8, !tbaa !9
  %1057 = getelementptr inbounds %struct.doublecomplex, ptr %1055, i64 %1056
  %1058 = getelementptr inbounds %struct.doublecomplex, ptr %1057, i32 0, i32 0
  %1059 = load double, ptr %1058, align 8, !tbaa !11
  %1060 = fmul double %1054, %1059
  %1061 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %1060, ptr %1061, align 8, !tbaa !11
  %1062 = load double, ptr %69, align 8, !tbaa !15
  %1063 = load ptr, ptr %28, align 8, !tbaa !5
  %1064 = load i64, ptr %47, align 8, !tbaa !9
  %1065 = getelementptr inbounds %struct.doublecomplex, ptr %1063, i64 %1064
  %1066 = getelementptr inbounds %struct.doublecomplex, ptr %1065, i32 0, i32 1
  %1067 = load double, ptr %1066, align 8, !tbaa !14
  %1068 = fmul double %1062, %1067
  %1069 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %1068, ptr %1069, align 8, !tbaa !14
  %1070 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %1071 = load double, ptr %1070, align 8, !tbaa !11
  %1072 = load ptr, ptr %28, align 8, !tbaa !5
  %1073 = load i64, ptr %46, align 8, !tbaa !9
  %1074 = getelementptr inbounds %struct.doublecomplex, ptr %1072, i64 %1073
  %1075 = getelementptr inbounds %struct.doublecomplex, ptr %1074, i32 0, i32 0
  store double %1071, ptr %1075, align 8, !tbaa !11
  %1076 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %1077 = load double, ptr %1076, align 8, !tbaa !14
  %1078 = load ptr, ptr %28, align 8, !tbaa !5
  %1079 = load i64, ptr %46, align 8, !tbaa !9
  %1080 = getelementptr inbounds %struct.doublecomplex, ptr %1078, i64 %1079
  %1081 = getelementptr inbounds %struct.doublecomplex, ptr %1080, i32 0, i32 1
  store double %1077, ptr %1081, align 8, !tbaa !14
  br label %1082

1082:                                             ; preds = %1043
  %1083 = load i64, ptr %57, align 8, !tbaa !9
  %1084 = add nsw i64 %1083, 1
  store i64 %1084, ptr %57, align 8, !tbaa !9
  br label %1039, !llvm.loop !19

1085:                                             ; preds = %1039
  br label %1086

1086:                                             ; preds = %1085, %1033
  br label %1087

1087:                                             ; preds = %1086
  %1088 = load i64, ptr %54, align 8, !tbaa !9
  %1089 = add nsw i64 %1088, 1
  store i64 %1089, ptr %54, align 8, !tbaa !9
  br label %967, !llvm.loop !20

1090:                                             ; preds = %967
  br label %1091

1091:                                             ; preds = %1090, %940
  %1092 = load i64, ptr %71, align 8, !tbaa !9
  %1093 = icmp ne i64 %1092, 0
  br i1 %1093, label %1094, label %1242

1094:                                             ; preds = %1091
  %1095 = load ptr, ptr %21, align 8, !tbaa !5
  %1096 = load ptr, ptr %34, align 8, !tbaa !5
  %1097 = load i64, ptr %81, align 8, !tbaa !9
  %1098 = getelementptr inbounds double, ptr %1096, i64 %1097
  %1099 = load ptr, ptr %34, align 8, !tbaa !5
  %1100 = load i64, ptr %93, align 8, !tbaa !9
  %1101 = getelementptr inbounds double, ptr %1099, i64 %1100
  %1102 = load ptr, ptr %21, align 8, !tbaa !5
  %1103 = load ptr, ptr %30, align 8, !tbaa !5
  %1104 = load i64, ptr %43, align 8, !tbaa !9
  %1105 = getelementptr inbounds %struct.doublecomplex, ptr %1103, i64 %1104
  %1106 = load ptr, ptr %31, align 8, !tbaa !5
  %1107 = call i32 @zggbak_(ptr noundef @.str.12, ptr noundef @.str.16, ptr noundef %1095, ptr noundef %62, ptr noundef %61, ptr noundef %1098, ptr noundef %1101, ptr noundef %1102, ptr noundef %1105, ptr noundef %1106, ptr noundef %82)
  %1108 = load i64, ptr %82, align 8, !tbaa !9
  %1109 = icmp ne i64 %1108, 0
  br i1 %1109, label %1110, label %1115

1110:                                             ; preds = %1094
  %1111 = load ptr, ptr %21, align 8, !tbaa !5
  %1112 = load i64, ptr %1111, align 8, !tbaa !9
  %1113 = add nsw i64 %1112, 9
  %1114 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %1113, ptr %1114, align 8, !tbaa !9
  br label %1656

1115:                                             ; preds = %1094
  %1116 = load ptr, ptr %21, align 8, !tbaa !5
  %1117 = load i64, ptr %1116, align 8, !tbaa !9
  store i64 %1117, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %1118

1118:                                             ; preds = %1238, %1115
  %1119 = load i64, ptr %54, align 8, !tbaa !9
  %1120 = load i64, ptr %44, align 8, !tbaa !9
  %1121 = icmp sle i64 %1119, %1120
  br i1 %1121, label %1122, label %1241

1122:                                             ; preds = %1118
  store double 0.000000e+00, ptr %69, align 8, !tbaa !15
  %1123 = load ptr, ptr %21, align 8, !tbaa !5
  %1124 = load i64, ptr %1123, align 8, !tbaa !9
  store i64 %1124, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %57, align 8, !tbaa !9
  br label %1125

1125:                                             ; preds = %1177, %1122
  %1126 = load i64, ptr %57, align 8, !tbaa !9
  %1127 = load i64, ptr %45, align 8, !tbaa !9
  %1128 = icmp sle i64 %1126, %1127
  br i1 %1128, label %1129, label %1180

1129:                                             ; preds = %1125
  %1130 = load i64, ptr %57, align 8, !tbaa !9
  %1131 = load i64, ptr %54, align 8, !tbaa !9
  %1132 = load i64, ptr %42, align 8, !tbaa !9
  %1133 = mul nsw i64 %1131, %1132
  %1134 = add nsw i64 %1130, %1133
  store i64 %1134, ptr %46, align 8, !tbaa !9
  %1135 = load double, ptr %69, align 8, !tbaa !15
  store double %1135, ptr %50, align 8, !tbaa !15
  %1136 = load ptr, ptr %30, align 8, !tbaa !5
  %1137 = load i64, ptr %46, align 8, !tbaa !9
  %1138 = getelementptr inbounds %struct.doublecomplex, ptr %1136, i64 %1137
  %1139 = getelementptr inbounds %struct.doublecomplex, ptr %1138, i32 0, i32 0
  %1140 = load double, ptr %1139, align 8, !tbaa !11
  store double %1140, ptr %48, align 8, !tbaa !15
  %1141 = load double, ptr %48, align 8, !tbaa !15
  %1142 = fcmp oge double %1141, 0.000000e+00
  br i1 %1142, label %1143, label %1145

1143:                                             ; preds = %1129
  %1144 = load double, ptr %48, align 8, !tbaa !15
  br label %1148

1145:                                             ; preds = %1129
  %1146 = load double, ptr %48, align 8, !tbaa !15
  %1147 = fneg double %1146
  br label %1148

1148:                                             ; preds = %1145, %1143
  %1149 = phi double [ %1144, %1143 ], [ %1147, %1145 ]
  %1150 = load ptr, ptr %30, align 8, !tbaa !5
  %1151 = load i64, ptr %57, align 8, !tbaa !9
  %1152 = load i64, ptr %54, align 8, !tbaa !9
  %1153 = load i64, ptr %42, align 8, !tbaa !9
  %1154 = mul nsw i64 %1152, %1153
  %1155 = add nsw i64 %1151, %1154
  %1156 = getelementptr inbounds %struct.doublecomplex, ptr %1150, i64 %1155
  %1157 = call double @d_imag(ptr noundef %1156)
  store double %1157, ptr %49, align 8, !tbaa !15
  %1158 = load double, ptr %49, align 8, !tbaa !15
  %1159 = fcmp oge double %1158, 0.000000e+00
  br i1 %1159, label %1160, label %1162

1160:                                             ; preds = %1148
  %1161 = load double, ptr %49, align 8, !tbaa !15
  br label %1165

1162:                                             ; preds = %1148
  %1163 = load double, ptr %49, align 8, !tbaa !15
  %1164 = fneg double %1163
  br label %1165

1165:                                             ; preds = %1162, %1160
  %1166 = phi double [ %1161, %1160 ], [ %1164, %1162 ]
  %1167 = fadd double %1149, %1166
  store double %1167, ptr %51, align 8, !tbaa !15
  %1168 = load double, ptr %50, align 8, !tbaa !15
  %1169 = load double, ptr %51, align 8, !tbaa !15
  %1170 = fcmp oge double %1168, %1169
  br i1 %1170, label %1171, label %1173

1171:                                             ; preds = %1165
  %1172 = load double, ptr %50, align 8, !tbaa !15
  br label %1175

1173:                                             ; preds = %1165
  %1174 = load double, ptr %51, align 8, !tbaa !15
  br label %1175

1175:                                             ; preds = %1173, %1171
  %1176 = phi double [ %1172, %1171 ], [ %1174, %1173 ]
  store double %1176, ptr %69, align 8, !tbaa !15
  br label %1177

1177:                                             ; preds = %1175
  %1178 = load i64, ptr %57, align 8, !tbaa !9
  %1179 = add nsw i64 %1178, 1
  store i64 %1179, ptr %57, align 8, !tbaa !9
  br label %1125, !llvm.loop !21

1180:                                             ; preds = %1125
  %1181 = load double, ptr %69, align 8, !tbaa !15
  %1182 = load double, ptr %88, align 8, !tbaa !15
  %1183 = fcmp olt double %1181, %1182
  br i1 %1183, label %1184, label %1185

1184:                                             ; preds = %1180
  br label %1237

1185:                                             ; preds = %1180
  %1186 = load double, ptr %69, align 8, !tbaa !15
  %1187 = fdiv double 1.000000e+00, %1186
  store double %1187, ptr %69, align 8, !tbaa !15
  %1188 = load ptr, ptr %21, align 8, !tbaa !5
  %1189 = load i64, ptr %1188, align 8, !tbaa !9
  store i64 %1189, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %57, align 8, !tbaa !9
  br label %1190

1190:                                             ; preds = %1233, %1185
  %1191 = load i64, ptr %57, align 8, !tbaa !9
  %1192 = load i64, ptr %45, align 8, !tbaa !9
  %1193 = icmp sle i64 %1191, %1192
  br i1 %1193, label %1194, label %1236

1194:                                             ; preds = %1190
  %1195 = load i64, ptr %57, align 8, !tbaa !9
  %1196 = load i64, ptr %54, align 8, !tbaa !9
  %1197 = load i64, ptr %42, align 8, !tbaa !9
  %1198 = mul nsw i64 %1196, %1197
  %1199 = add nsw i64 %1195, %1198
  store i64 %1199, ptr %46, align 8, !tbaa !9
  %1200 = load i64, ptr %57, align 8, !tbaa !9
  %1201 = load i64, ptr %54, align 8, !tbaa !9
  %1202 = load i64, ptr %42, align 8, !tbaa !9
  %1203 = mul nsw i64 %1201, %1202
  %1204 = add nsw i64 %1200, %1203
  store i64 %1204, ptr %47, align 8, !tbaa !9
  %1205 = load double, ptr %69, align 8, !tbaa !15
  %1206 = load ptr, ptr %30, align 8, !tbaa !5
  %1207 = load i64, ptr %47, align 8, !tbaa !9
  %1208 = getelementptr inbounds %struct.doublecomplex, ptr %1206, i64 %1207
  %1209 = getelementptr inbounds %struct.doublecomplex, ptr %1208, i32 0, i32 0
  %1210 = load double, ptr %1209, align 8, !tbaa !11
  %1211 = fmul double %1205, %1210
  %1212 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %1211, ptr %1212, align 8, !tbaa !11
  %1213 = load double, ptr %69, align 8, !tbaa !15
  %1214 = load ptr, ptr %30, align 8, !tbaa !5
  %1215 = load i64, ptr %47, align 8, !tbaa !9
  %1216 = getelementptr inbounds %struct.doublecomplex, ptr %1214, i64 %1215
  %1217 = getelementptr inbounds %struct.doublecomplex, ptr %1216, i32 0, i32 1
  %1218 = load double, ptr %1217, align 8, !tbaa !14
  %1219 = fmul double %1213, %1218
  %1220 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %1219, ptr %1220, align 8, !tbaa !14
  %1221 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %1222 = load double, ptr %1221, align 8, !tbaa !11
  %1223 = load ptr, ptr %30, align 8, !tbaa !5
  %1224 = load i64, ptr %46, align 8, !tbaa !9
  %1225 = getelementptr inbounds %struct.doublecomplex, ptr %1223, i64 %1224
  %1226 = getelementptr inbounds %struct.doublecomplex, ptr %1225, i32 0, i32 0
  store double %1222, ptr %1226, align 8, !tbaa !11
  %1227 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %1228 = load double, ptr %1227, align 8, !tbaa !14
  %1229 = load ptr, ptr %30, align 8, !tbaa !5
  %1230 = load i64, ptr %46, align 8, !tbaa !9
  %1231 = getelementptr inbounds %struct.doublecomplex, ptr %1229, i64 %1230
  %1232 = getelementptr inbounds %struct.doublecomplex, ptr %1231, i32 0, i32 1
  store double %1228, ptr %1232, align 8, !tbaa !14
  br label %1233

1233:                                             ; preds = %1194
  %1234 = load i64, ptr %57, align 8, !tbaa !9
  %1235 = add nsw i64 %1234, 1
  store i64 %1235, ptr %57, align 8, !tbaa !9
  br label %1190, !llvm.loop !22

1236:                                             ; preds = %1190
  br label %1237

1237:                                             ; preds = %1236, %1184
  br label %1238

1238:                                             ; preds = %1237
  %1239 = load i64, ptr %54, align 8, !tbaa !9
  %1240 = add nsw i64 %1239, 1
  store i64 %1240, ptr %54, align 8, !tbaa !9
  br label %1118, !llvm.loop !23

1241:                                             ; preds = %1118
  br label %1242

1242:                                             ; preds = %1241, %1091
  br label %1243

1243:                                             ; preds = %1242, %889
  %1244 = load ptr, ptr %21, align 8, !tbaa !5
  %1245 = load i64, ptr %1244, align 8, !tbaa !9
  store i64 %1245, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %1246

1246:                                             ; preds = %1652, %1243
  %1247 = load i64, ptr %54, align 8, !tbaa !9
  %1248 = load i64, ptr %44, align 8, !tbaa !9
  %1249 = icmp sle i64 %1247, %1248
  br i1 %1249, label %1250, label %1655

1250:                                             ; preds = %1246
  %1251 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %1251, ptr %45, align 8, !tbaa !9
  %1252 = load ptr, ptr %26, align 8, !tbaa !5
  %1253 = load i64, ptr %45, align 8, !tbaa !9
  %1254 = getelementptr inbounds %struct.doublecomplex, ptr %1252, i64 %1253
  %1255 = getelementptr inbounds %struct.doublecomplex, ptr %1254, i32 0, i32 0
  %1256 = load double, ptr %1255, align 8, !tbaa !11
  store double %1256, ptr %48, align 8, !tbaa !15
  %1257 = load double, ptr %48, align 8, !tbaa !15
  %1258 = fcmp oge double %1257, 0.000000e+00
  br i1 %1258, label %1259, label %1261

1259:                                             ; preds = %1250
  %1260 = load double, ptr %48, align 8, !tbaa !15
  br label %1264

1261:                                             ; preds = %1250
  %1262 = load double, ptr %48, align 8, !tbaa !15
  %1263 = fneg double %1262
  br label %1264

1264:                                             ; preds = %1261, %1259
  %1265 = phi double [ %1260, %1259 ], [ %1263, %1261 ]
  store double %1265, ptr %79, align 8, !tbaa !15
  %1266 = load ptr, ptr %26, align 8, !tbaa !5
  %1267 = load i64, ptr %54, align 8, !tbaa !9
  %1268 = getelementptr inbounds %struct.doublecomplex, ptr %1266, i64 %1267
  %1269 = call double @d_imag(ptr noundef %1268)
  store double %1269, ptr %48, align 8, !tbaa !15
  %1270 = load double, ptr %48, align 8, !tbaa !15
  %1271 = fcmp oge double %1270, 0.000000e+00
  br i1 %1271, label %1272, label %1274

1272:                                             ; preds = %1264
  %1273 = load double, ptr %48, align 8, !tbaa !15
  br label %1277

1274:                                             ; preds = %1264
  %1275 = load double, ptr %48, align 8, !tbaa !15
  %1276 = fneg double %1275
  br label %1277

1277:                                             ; preds = %1274, %1272
  %1278 = phi double [ %1273, %1272 ], [ %1276, %1274 ]
  store double %1278, ptr %77, align 8, !tbaa !15
  %1279 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %1279, ptr %45, align 8, !tbaa !9
  %1280 = load ptr, ptr %27, align 8, !tbaa !5
  %1281 = load i64, ptr %45, align 8, !tbaa !9
  %1282 = getelementptr inbounds %struct.doublecomplex, ptr %1280, i64 %1281
  %1283 = getelementptr inbounds %struct.doublecomplex, ptr %1282, i32 0, i32 0
  %1284 = load double, ptr %1283, align 8, !tbaa !11
  store double %1284, ptr %48, align 8, !tbaa !15
  %1285 = load double, ptr %48, align 8, !tbaa !15
  %1286 = fcmp oge double %1285, 0.000000e+00
  br i1 %1286, label %1287, label %1289

1287:                                             ; preds = %1277
  %1288 = load double, ptr %48, align 8, !tbaa !15
  br label %1292

1289:                                             ; preds = %1277
  %1290 = load double, ptr %48, align 8, !tbaa !15
  %1291 = fneg double %1290
  br label %1292

1292:                                             ; preds = %1289, %1287
  %1293 = phi double [ %1288, %1287 ], [ %1291, %1289 ]
  store double %1293, ptr %65, align 8, !tbaa !15
  %1294 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %1294, ptr %45, align 8, !tbaa !9
  %1295 = load double, ptr %66, align 8, !tbaa !15
  %1296 = load ptr, ptr %26, align 8, !tbaa !5
  %1297 = load i64, ptr %45, align 8, !tbaa !9
  %1298 = getelementptr inbounds %struct.doublecomplex, ptr %1296, i64 %1297
  %1299 = getelementptr inbounds %struct.doublecomplex, ptr %1298, i32 0, i32 0
  %1300 = load double, ptr %1299, align 8, !tbaa !11
  %1301 = fmul double %1295, %1300
  store double %1301, ptr %87, align 8, !tbaa !15
  %1302 = load double, ptr %66, align 8, !tbaa !15
  %1303 = load ptr, ptr %26, align 8, !tbaa !5
  %1304 = load i64, ptr %54, align 8, !tbaa !9
  %1305 = getelementptr inbounds %struct.doublecomplex, ptr %1303, i64 %1304
  %1306 = call double @d_imag(ptr noundef %1305)
  %1307 = fmul double %1302, %1306
  store double %1307, ptr %86, align 8, !tbaa !15
  %1308 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %1308, ptr %45, align 8, !tbaa !9
  %1309 = load double, ptr %67, align 8, !tbaa !15
  %1310 = load ptr, ptr %27, align 8, !tbaa !5
  %1311 = load i64, ptr %45, align 8, !tbaa !9
  %1312 = getelementptr inbounds %struct.doublecomplex, ptr %1310, i64 %1311
  %1313 = getelementptr inbounds %struct.doublecomplex, ptr %1312, i32 0, i32 0
  %1314 = load double, ptr %1313, align 8, !tbaa !11
  %1315 = fmul double %1309, %1314
  store double %1315, ptr %80, align 8, !tbaa !15
  store i64 0, ptr %94, align 8, !tbaa !9
  store double 1.000000e+00, ptr %78, align 8, !tbaa !15
  %1316 = load double, ptr %88, align 8, !tbaa !15
  store double %1316, ptr %48, align 8, !tbaa !15
  %1317 = load double, ptr %63, align 8, !tbaa !15
  %1318 = load double, ptr %79, align 8, !tbaa !15
  %1319 = fmul double %1317, %1318
  store double %1319, ptr %49, align 8, !tbaa !15
  %1320 = load double, ptr %48, align 8, !tbaa !15
  %1321 = load double, ptr %49, align 8, !tbaa !15
  %1322 = fcmp oge double %1320, %1321
  br i1 %1322, label %1323, label %1325

1323:                                             ; preds = %1292
  %1324 = load double, ptr %48, align 8, !tbaa !15
  br label %1327

1325:                                             ; preds = %1292
  %1326 = load double, ptr %49, align 8, !tbaa !15
  br label %1327

1327:                                             ; preds = %1325, %1323
  %1328 = phi double [ %1324, %1323 ], [ %1326, %1325 ]
  store double %1328, ptr %48, align 8, !tbaa !15
  %1329 = load double, ptr %63, align 8, !tbaa !15
  %1330 = load double, ptr %65, align 8, !tbaa !15
  %1331 = fmul double %1329, %1330
  store double %1331, ptr %49, align 8, !tbaa !15
  %1332 = load double, ptr %86, align 8, !tbaa !15
  %1333 = fcmp oge double %1332, 0.000000e+00
  br i1 %1333, label %1334, label %1336

1334:                                             ; preds = %1327
  %1335 = load double, ptr %86, align 8, !tbaa !15
  br label %1339

1336:                                             ; preds = %1327
  %1337 = load double, ptr %86, align 8, !tbaa !15
  %1338 = fneg double %1337
  br label %1339

1339:                                             ; preds = %1336, %1334
  %1340 = phi double [ %1335, %1334 ], [ %1338, %1336 ]
  %1341 = load double, ptr %88, align 8, !tbaa !15
  %1342 = fcmp olt double %1340, %1341
  br i1 %1342, label %1343, label %1373

1343:                                             ; preds = %1339
  %1344 = load double, ptr %77, align 8, !tbaa !15
  %1345 = load double, ptr %48, align 8, !tbaa !15
  %1346 = load double, ptr %49, align 8, !tbaa !15
  %1347 = fcmp oge double %1345, %1346
  br i1 %1347, label %1348, label %1350

1348:                                             ; preds = %1343
  %1349 = load double, ptr %48, align 8, !tbaa !15
  br label %1352

1350:                                             ; preds = %1343
  %1351 = load double, ptr %49, align 8, !tbaa !15
  br label %1352

1352:                                             ; preds = %1350, %1348
  %1353 = phi double [ %1349, %1348 ], [ %1351, %1350 ]
  %1354 = fcmp oge double %1344, %1353
  br i1 %1354, label %1355, label %1373

1355:                                             ; preds = %1352
  store i64 1, ptr %94, align 8, !tbaa !9
  %1356 = load double, ptr %88, align 8, !tbaa !15
  store double %1356, ptr %48, align 8, !tbaa !15
  %1357 = load double, ptr %74, align 8, !tbaa !15
  %1358 = load double, ptr %77, align 8, !tbaa !15
  %1359 = fmul double %1357, %1358
  store double %1359, ptr %49, align 8, !tbaa !15
  %1360 = load double, ptr %88, align 8, !tbaa !15
  %1361 = load double, ptr %73, align 8, !tbaa !15
  %1362 = fdiv double %1360, %1361
  %1363 = load double, ptr %48, align 8, !tbaa !15
  %1364 = load double, ptr %49, align 8, !tbaa !15
  %1365 = fcmp oge double %1363, %1364
  br i1 %1365, label %1366, label %1368

1366:                                             ; preds = %1355
  %1367 = load double, ptr %48, align 8, !tbaa !15
  br label %1370

1368:                                             ; preds = %1355
  %1369 = load double, ptr %49, align 8, !tbaa !15
  br label %1370

1370:                                             ; preds = %1368, %1366
  %1371 = phi double [ %1367, %1366 ], [ %1369, %1368 ]
  %1372 = fdiv double %1362, %1371
  store double %1372, ptr %78, align 8, !tbaa !15
  br label %1373

1373:                                             ; preds = %1370, %1352, %1339
  %1374 = load double, ptr %88, align 8, !tbaa !15
  store double %1374, ptr %48, align 8, !tbaa !15
  %1375 = load double, ptr %63, align 8, !tbaa !15
  %1376 = load double, ptr %77, align 8, !tbaa !15
  %1377 = fmul double %1375, %1376
  store double %1377, ptr %49, align 8, !tbaa !15
  %1378 = load double, ptr %48, align 8, !tbaa !15
  %1379 = load double, ptr %49, align 8, !tbaa !15
  %1380 = fcmp oge double %1378, %1379
  br i1 %1380, label %1381, label %1383

1381:                                             ; preds = %1373
  %1382 = load double, ptr %48, align 8, !tbaa !15
  br label %1385

1383:                                             ; preds = %1373
  %1384 = load double, ptr %49, align 8, !tbaa !15
  br label %1385

1385:                                             ; preds = %1383, %1381
  %1386 = phi double [ %1382, %1381 ], [ %1384, %1383 ]
  store double %1386, ptr %48, align 8, !tbaa !15
  %1387 = load double, ptr %63, align 8, !tbaa !15
  %1388 = load double, ptr %65, align 8, !tbaa !15
  %1389 = fmul double %1387, %1388
  store double %1389, ptr %49, align 8, !tbaa !15
  %1390 = load double, ptr %87, align 8, !tbaa !15
  %1391 = fcmp oge double %1390, 0.000000e+00
  br i1 %1391, label %1392, label %1394

1392:                                             ; preds = %1385
  %1393 = load double, ptr %87, align 8, !tbaa !15
  br label %1397

1394:                                             ; preds = %1385
  %1395 = load double, ptr %87, align 8, !tbaa !15
  %1396 = fneg double %1395
  br label %1397

1397:                                             ; preds = %1394, %1392
  %1398 = phi double [ %1393, %1392 ], [ %1396, %1394 ]
  %1399 = load double, ptr %88, align 8, !tbaa !15
  %1400 = fcmp olt double %1398, %1399
  br i1 %1400, label %1401, label %1441

1401:                                             ; preds = %1397
  %1402 = load double, ptr %79, align 8, !tbaa !15
  %1403 = load double, ptr %48, align 8, !tbaa !15
  %1404 = load double, ptr %49, align 8, !tbaa !15
  %1405 = fcmp oge double %1403, %1404
  br i1 %1405, label %1406, label %1408

1406:                                             ; preds = %1401
  %1407 = load double, ptr %48, align 8, !tbaa !15
  br label %1410

1408:                                             ; preds = %1401
  %1409 = load double, ptr %49, align 8, !tbaa !15
  br label %1410

1410:                                             ; preds = %1408, %1406
  %1411 = phi double [ %1407, %1406 ], [ %1409, %1408 ]
  %1412 = fcmp oge double %1402, %1411
  br i1 %1412, label %1413, label %1441

1413:                                             ; preds = %1410
  store i64 1, ptr %94, align 8, !tbaa !9
  %1414 = load double, ptr %88, align 8, !tbaa !15
  store double %1414, ptr %50, align 8, !tbaa !15
  %1415 = load double, ptr %74, align 8, !tbaa !15
  %1416 = load double, ptr %79, align 8, !tbaa !15
  %1417 = fmul double %1415, %1416
  store double %1417, ptr %51, align 8, !tbaa !15
  %1418 = load double, ptr %78, align 8, !tbaa !15
  store double %1418, ptr %48, align 8, !tbaa !15
  %1419 = load double, ptr %88, align 8, !tbaa !15
  %1420 = load double, ptr %73, align 8, !tbaa !15
  %1421 = fdiv double %1419, %1420
  %1422 = load double, ptr %50, align 8, !tbaa !15
  %1423 = load double, ptr %51, align 8, !tbaa !15
  %1424 = fcmp oge double %1422, %1423
  br i1 %1424, label %1425, label %1427

1425:                                             ; preds = %1413
  %1426 = load double, ptr %50, align 8, !tbaa !15
  br label %1429

1427:                                             ; preds = %1413
  %1428 = load double, ptr %51, align 8, !tbaa !15
  br label %1429

1429:                                             ; preds = %1427, %1425
  %1430 = phi double [ %1426, %1425 ], [ %1428, %1427 ]
  %1431 = fdiv double %1421, %1430
  store double %1431, ptr %49, align 8, !tbaa !15
  %1432 = load double, ptr %48, align 8, !tbaa !15
  %1433 = load double, ptr %49, align 8, !tbaa !15
  %1434 = fcmp oge double %1432, %1433
  br i1 %1434, label %1435, label %1437

1435:                                             ; preds = %1429
  %1436 = load double, ptr %48, align 8, !tbaa !15
  br label %1439

1437:                                             ; preds = %1429
  %1438 = load double, ptr %49, align 8, !tbaa !15
  br label %1439

1439:                                             ; preds = %1437, %1435
  %1440 = phi double [ %1436, %1435 ], [ %1438, %1437 ]
  store double %1440, ptr %78, align 8, !tbaa !15
  br label %1441

1441:                                             ; preds = %1439, %1410, %1397
  %1442 = load double, ptr %88, align 8, !tbaa !15
  store double %1442, ptr %48, align 8, !tbaa !15
  %1443 = load double, ptr %63, align 8, !tbaa !15
  %1444 = load double, ptr %79, align 8, !tbaa !15
  %1445 = fmul double %1443, %1444
  store double %1445, ptr %49, align 8, !tbaa !15
  %1446 = load double, ptr %48, align 8, !tbaa !15
  %1447 = load double, ptr %49, align 8, !tbaa !15
  %1448 = fcmp oge double %1446, %1447
  br i1 %1448, label %1449, label %1451

1449:                                             ; preds = %1441
  %1450 = load double, ptr %48, align 8, !tbaa !15
  br label %1453

1451:                                             ; preds = %1441
  %1452 = load double, ptr %49, align 8, !tbaa !15
  br label %1453

1453:                                             ; preds = %1451, %1449
  %1454 = phi double [ %1450, %1449 ], [ %1452, %1451 ]
  store double %1454, ptr %48, align 8, !tbaa !15
  %1455 = load double, ptr %63, align 8, !tbaa !15
  %1456 = load double, ptr %77, align 8, !tbaa !15
  %1457 = fmul double %1455, %1456
  store double %1457, ptr %49, align 8, !tbaa !15
  %1458 = load double, ptr %80, align 8, !tbaa !15
  %1459 = fcmp oge double %1458, 0.000000e+00
  br i1 %1459, label %1460, label %1462

1460:                                             ; preds = %1453
  %1461 = load double, ptr %80, align 8, !tbaa !15
  br label %1465

1462:                                             ; preds = %1453
  %1463 = load double, ptr %80, align 8, !tbaa !15
  %1464 = fneg double %1463
  br label %1465

1465:                                             ; preds = %1462, %1460
  %1466 = phi double [ %1461, %1460 ], [ %1464, %1462 ]
  %1467 = load double, ptr %88, align 8, !tbaa !15
  %1468 = fcmp olt double %1466, %1467
  br i1 %1468, label %1469, label %1509

1469:                                             ; preds = %1465
  %1470 = load double, ptr %65, align 8, !tbaa !15
  %1471 = load double, ptr %48, align 8, !tbaa !15
  %1472 = load double, ptr %49, align 8, !tbaa !15
  %1473 = fcmp oge double %1471, %1472
  br i1 %1473, label %1474, label %1476

1474:                                             ; preds = %1469
  %1475 = load double, ptr %48, align 8, !tbaa !15
  br label %1478

1476:                                             ; preds = %1469
  %1477 = load double, ptr %49, align 8, !tbaa !15
  br label %1478

1478:                                             ; preds = %1476, %1474
  %1479 = phi double [ %1475, %1474 ], [ %1477, %1476 ]
  %1480 = fcmp oge double %1470, %1479
  br i1 %1480, label %1481, label %1509

1481:                                             ; preds = %1478
  store i64 1, ptr %94, align 8, !tbaa !9
  %1482 = load double, ptr %88, align 8, !tbaa !15
  store double %1482, ptr %50, align 8, !tbaa !15
  %1483 = load double, ptr %76, align 8, !tbaa !15
  %1484 = load double, ptr %65, align 8, !tbaa !15
  %1485 = fmul double %1483, %1484
  store double %1485, ptr %51, align 8, !tbaa !15
  %1486 = load double, ptr %78, align 8, !tbaa !15
  store double %1486, ptr %48, align 8, !tbaa !15
  %1487 = load double, ptr %88, align 8, !tbaa !15
  %1488 = load double, ptr %75, align 8, !tbaa !15
  %1489 = fdiv double %1487, %1488
  %1490 = load double, ptr %50, align 8, !tbaa !15
  %1491 = load double, ptr %51, align 8, !tbaa !15
  %1492 = fcmp oge double %1490, %1491
  br i1 %1492, label %1493, label %1495

1493:                                             ; preds = %1481
  %1494 = load double, ptr %50, align 8, !tbaa !15
  br label %1497

1495:                                             ; preds = %1481
  %1496 = load double, ptr %51, align 8, !tbaa !15
  br label %1497

1497:                                             ; preds = %1495, %1493
  %1498 = phi double [ %1494, %1493 ], [ %1496, %1495 ]
  %1499 = fdiv double %1489, %1498
  store double %1499, ptr %49, align 8, !tbaa !15
  %1500 = load double, ptr %48, align 8, !tbaa !15
  %1501 = load double, ptr %49, align 8, !tbaa !15
  %1502 = fcmp oge double %1500, %1501
  br i1 %1502, label %1503, label %1505

1503:                                             ; preds = %1497
  %1504 = load double, ptr %48, align 8, !tbaa !15
  br label %1507

1505:                                             ; preds = %1497
  %1506 = load double, ptr %49, align 8, !tbaa !15
  br label %1507

1507:                                             ; preds = %1505, %1503
  %1508 = phi double [ %1504, %1503 ], [ %1506, %1505 ]
  store double %1508, ptr %78, align 8, !tbaa !15
  br label %1509

1509:                                             ; preds = %1507, %1478, %1465
  %1510 = load i64, ptr %94, align 8, !tbaa !9
  %1511 = icmp ne i64 %1510, 0
  br i1 %1511, label %1512, label %1573

1512:                                             ; preds = %1509
  %1513 = load double, ptr %87, align 8, !tbaa !15
  %1514 = fcmp oge double %1513, 0.000000e+00
  br i1 %1514, label %1515, label %1517

1515:                                             ; preds = %1512
  %1516 = load double, ptr %87, align 8, !tbaa !15
  br label %1520

1517:                                             ; preds = %1512
  %1518 = load double, ptr %87, align 8, !tbaa !15
  %1519 = fneg double %1518
  br label %1520

1520:                                             ; preds = %1517, %1515
  %1521 = phi double [ %1516, %1515 ], [ %1519, %1517 ]
  store double %1521, ptr %48, align 8, !tbaa !15
  %1522 = load double, ptr %86, align 8, !tbaa !15
  %1523 = fcmp oge double %1522, 0.000000e+00
  br i1 %1523, label %1524, label %1526

1524:                                             ; preds = %1520
  %1525 = load double, ptr %86, align 8, !tbaa !15
  br label %1529

1526:                                             ; preds = %1520
  %1527 = load double, ptr %86, align 8, !tbaa !15
  %1528 = fneg double %1527
  br label %1529

1529:                                             ; preds = %1526, %1524
  %1530 = phi double [ %1525, %1524 ], [ %1528, %1526 ]
  store double %1530, ptr %49, align 8, !tbaa !15
  %1531 = load double, ptr %48, align 8, !tbaa !15
  %1532 = load double, ptr %49, align 8, !tbaa !15
  %1533 = fcmp oge double %1531, %1532
  br i1 %1533, label %1534, label %1536

1534:                                             ; preds = %1529
  %1535 = load double, ptr %48, align 8, !tbaa !15
  br label %1538

1536:                                             ; preds = %1529
  %1537 = load double, ptr %49, align 8, !tbaa !15
  br label %1538

1538:                                             ; preds = %1536, %1534
  %1539 = phi double [ %1535, %1534 ], [ %1537, %1536 ]
  store double %1539, ptr %48, align 8, !tbaa !15
  %1540 = load double, ptr %80, align 8, !tbaa !15
  %1541 = fcmp oge double %1540, 0.000000e+00
  br i1 %1541, label %1542, label %1544

1542:                                             ; preds = %1538
  %1543 = load double, ptr %80, align 8, !tbaa !15
  br label %1547

1544:                                             ; preds = %1538
  %1545 = load double, ptr %80, align 8, !tbaa !15
  %1546 = fneg double %1545
  br label %1547

1547:                                             ; preds = %1544, %1542
  %1548 = phi double [ %1543, %1542 ], [ %1546, %1544 ]
  store double %1548, ptr %49, align 8, !tbaa !15
  %1549 = load double, ptr %78, align 8, !tbaa !15
  %1550 = load double, ptr %88, align 8, !tbaa !15
  %1551 = fmul double %1549, %1550
  %1552 = load double, ptr %48, align 8, !tbaa !15
  %1553 = load double, ptr %49, align 8, !tbaa !15
  %1554 = fcmp oge double %1552, %1553
  br i1 %1554, label %1555, label %1557

1555:                                             ; preds = %1547
  %1556 = load double, ptr %48, align 8, !tbaa !15
  br label %1559

1557:                                             ; preds = %1547
  %1558 = load double, ptr %49, align 8, !tbaa !15
  br label %1559

1559:                                             ; preds = %1557, %1555
  %1560 = phi double [ %1556, %1555 ], [ %1558, %1557 ]
  %1561 = fmul double %1551, %1560
  store double %1561, ptr %69, align 8, !tbaa !15
  %1562 = load double, ptr %69, align 8, !tbaa !15
  %1563 = fcmp ogt double %1562, 1.000000e+00
  br i1 %1563, label %1564, label %1568

1564:                                             ; preds = %1559
  %1565 = load double, ptr %69, align 8, !tbaa !15
  %1566 = load double, ptr %78, align 8, !tbaa !15
  %1567 = fdiv double %1566, %1565
  store double %1567, ptr %78, align 8, !tbaa !15
  br label %1568

1568:                                             ; preds = %1564, %1559
  %1569 = load double, ptr %78, align 8, !tbaa !15
  %1570 = fcmp olt double %1569, 1.000000e+00
  br i1 %1570, label %1571, label %1572

1571:                                             ; preds = %1568
  store i64 0, ptr %94, align 8, !tbaa !9
  br label %1572

1572:                                             ; preds = %1571, %1568
  br label %1573

1573:                                             ; preds = %1572, %1509
  %1574 = load i64, ptr %94, align 8, !tbaa !9
  %1575 = icmp ne i64 %1574, 0
  br i1 %1575, label %1576, label %1624

1576:                                             ; preds = %1573
  %1577 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %1577, ptr %45, align 8, !tbaa !9
  %1578 = load double, ptr %78, align 8, !tbaa !15
  %1579 = load ptr, ptr %26, align 8, !tbaa !5
  %1580 = load i64, ptr %45, align 8, !tbaa !9
  %1581 = getelementptr inbounds %struct.doublecomplex, ptr %1579, i64 %1580
  %1582 = getelementptr inbounds %struct.doublecomplex, ptr %1581, i32 0, i32 0
  %1583 = load double, ptr %1582, align 8, !tbaa !11
  %1584 = fmul double %1578, %1583
  %1585 = load double, ptr %66, align 8, !tbaa !15
  %1586 = fmul double %1584, %1585
  store double %1586, ptr %87, align 8, !tbaa !15
  %1587 = load double, ptr %78, align 8, !tbaa !15
  %1588 = load ptr, ptr %26, align 8, !tbaa !5
  %1589 = load i64, ptr %54, align 8, !tbaa !9
  %1590 = getelementptr inbounds %struct.doublecomplex, ptr %1588, i64 %1589
  %1591 = call double @d_imag(ptr noundef %1590)
  %1592 = fmul double %1587, %1591
  %1593 = load double, ptr %66, align 8, !tbaa !15
  %1594 = fmul double %1592, %1593
  store double %1594, ptr %86, align 8, !tbaa !15
  %1595 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %1595, ptr %45, align 8, !tbaa !9
  %1596 = load double, ptr %78, align 8, !tbaa !15
  %1597 = load ptr, ptr %27, align 8, !tbaa !5
  %1598 = load i64, ptr %45, align 8, !tbaa !9
  %1599 = getelementptr inbounds %struct.doublecomplex, ptr %1597, i64 %1598
  %1600 = getelementptr inbounds %struct.doublecomplex, ptr %1599, i32 0, i32 0
  %1601 = load double, ptr %1600, align 8, !tbaa !11
  %1602 = fmul double %1596, %1601
  %1603 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  store double %1602, ptr %1603, align 8, !tbaa !11
  %1604 = load double, ptr %78, align 8, !tbaa !15
  %1605 = load ptr, ptr %27, align 8, !tbaa !5
  %1606 = load i64, ptr %45, align 8, !tbaa !9
  %1607 = getelementptr inbounds %struct.doublecomplex, ptr %1605, i64 %1606
  %1608 = getelementptr inbounds %struct.doublecomplex, ptr %1607, i32 0, i32 1
  %1609 = load double, ptr %1608, align 8, !tbaa !14
  %1610 = fmul double %1604, %1609
  %1611 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  store double %1610, ptr %1611, align 8, !tbaa !14
  %1612 = load double, ptr %67, align 8, !tbaa !15
  %1613 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %1614 = load double, ptr %1613, align 8, !tbaa !11
  %1615 = fmul double %1612, %1614
  %1616 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %1615, ptr %1616, align 8, !tbaa !11
  %1617 = load double, ptr %67, align 8, !tbaa !15
  %1618 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %1619 = load double, ptr %1618, align 8, !tbaa !14
  %1620 = fmul double %1617, %1619
  %1621 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %1620, ptr %1621, align 8, !tbaa !14
  %1622 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %1623 = load double, ptr %1622, align 8, !tbaa !11
  store double %1623, ptr %80, align 8, !tbaa !15
  br label %1624

1624:                                             ; preds = %1576, %1573
  %1625 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %1625, ptr %45, align 8, !tbaa !9
  %1626 = load double, ptr %87, align 8, !tbaa !15
  %1627 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %1626, ptr %1627, align 8, !tbaa !11
  %1628 = load double, ptr %86, align 8, !tbaa !15
  %1629 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %1628, ptr %1629, align 8, !tbaa !14
  %1630 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %1631 = load double, ptr %1630, align 8, !tbaa !11
  %1632 = load ptr, ptr %26, align 8, !tbaa !5
  %1633 = load i64, ptr %45, align 8, !tbaa !9
  %1634 = getelementptr inbounds %struct.doublecomplex, ptr %1632, i64 %1633
  %1635 = getelementptr inbounds %struct.doublecomplex, ptr %1634, i32 0, i32 0
  store double %1631, ptr %1635, align 8, !tbaa !11
  %1636 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %1637 = load double, ptr %1636, align 8, !tbaa !14
  %1638 = load ptr, ptr %26, align 8, !tbaa !5
  %1639 = load i64, ptr %45, align 8, !tbaa !9
  %1640 = getelementptr inbounds %struct.doublecomplex, ptr %1638, i64 %1639
  %1641 = getelementptr inbounds %struct.doublecomplex, ptr %1640, i32 0, i32 1
  store double %1637, ptr %1641, align 8, !tbaa !14
  %1642 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %1642, ptr %45, align 8, !tbaa !9
  %1643 = load double, ptr %80, align 8, !tbaa !15
  %1644 = load ptr, ptr %27, align 8, !tbaa !5
  %1645 = load i64, ptr %45, align 8, !tbaa !9
  %1646 = getelementptr inbounds %struct.doublecomplex, ptr %1644, i64 %1645
  %1647 = getelementptr inbounds %struct.doublecomplex, ptr %1646, i32 0, i32 0
  store double %1643, ptr %1647, align 8, !tbaa !11
  %1648 = load ptr, ptr %27, align 8, !tbaa !5
  %1649 = load i64, ptr %45, align 8, !tbaa !9
  %1650 = getelementptr inbounds %struct.doublecomplex, ptr %1648, i64 %1649
  %1651 = getelementptr inbounds %struct.doublecomplex, ptr %1650, i32 0, i32 1
  store double 0.000000e+00, ptr %1651, align 8, !tbaa !14
  br label %1652

1652:                                             ; preds = %1624
  %1653 = load i64, ptr %54, align 8, !tbaa !9
  %1654 = add nsw i64 %1653, 1
  store i64 %1654, ptr %54, align 8, !tbaa !9
  br label %1246, !llvm.loop !24

1655:                                             ; preds = %1246
  br label %1656

1656:                                             ; preds = %1655, %1110, %959, %935, %888, %778, %708, %623, %563, %493
  %1657 = load i64, ptr %98, align 8, !tbaa !9
  %1658 = sitofp i64 %1657 to double
  %1659 = load ptr, ptr %32, align 8, !tbaa !5
  %1660 = getelementptr inbounds %struct.doublecomplex, ptr %1659, i64 1
  %1661 = getelementptr inbounds %struct.doublecomplex, ptr %1660, i32 0, i32 0
  store double %1658, ptr %1661, align 8, !tbaa !11
  %1662 = load ptr, ptr %32, align 8, !tbaa !5
  %1663 = getelementptr inbounds %struct.doublecomplex, ptr %1662, i64 1
  %1664 = getelementptr inbounds %struct.doublecomplex, ptr %1663, i32 0, i32 1
  store double 0.000000e+00, ptr %1664, align 8, !tbaa !14
  store i32 0, ptr %18, align 4
  store i32 1, ptr %100, align 4
  br label %1665

1665:                                             ; preds = %1656, %458, %415, %368, %362, %354
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  %1666 = load i32, ptr %18, align 4
  ret i32 %1666
}

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

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

declare i64 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

declare double @d_imag(ptr noundef) #2

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind }

!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 = !{!"long", !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}


; 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
@c__1 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b29 = external hidden global double, align 8
@.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 [5 x i8], align 1
@c_b1 = external hidden global %struct.doublecomplex, align 8
@c_b2 = external hidden global %struct.doublecomplex, align 8
@.str.16 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @zgegv_(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 nocapture noundef readonly %14, ptr noundef %15, ptr nocapture noundef %16) local_unnamed_addr #0 {
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca [1 x i8], align 1
  %29 = alloca [1 x i64], align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #4
  %30 = load i64, ptr %4, align 8, !tbaa !5
  %31 = xor i64 %30, -1
  %32 = getelementptr inbounds %struct.doublecomplex, ptr %3, i64 %31
  %33 = load i64, ptr %6, align 8, !tbaa !5
  %34 = xor i64 %33, -1
  %35 = getelementptr inbounds %struct.doublecomplex, ptr %5, i64 %34
  %36 = getelementptr inbounds i8, ptr %7, i64 -16
  %37 = getelementptr inbounds i8, ptr %8, i64 -16
  %38 = load i64, ptr %10, align 8, !tbaa !5
  %39 = xor i64 %38, -1
  %40 = getelementptr inbounds %struct.doublecomplex, ptr %9, i64 %39
  %41 = load i64, ptr %12, align 8, !tbaa !5
  %42 = xor i64 %41, -1
  %43 = getelementptr inbounds %struct.doublecomplex, ptr %11, i64 %42
  %44 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %.not = icmp eq i64 %44, 0
  br i1 %.not, label %45, label %47

45:                                               ; preds = %17
  %46 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %.not642 = icmp eq i64 %46, 0
  %not..not642 = xor i1 %.not642, true
  br label %47

47:                                               ; preds = %45, %17
  %48 = phi i1 [ false, %17 ], [ %not..not642, %45 ]
  %49 = phi i1 [ false, %17 ], [ %.not642, %45 ]
  %50 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #4
  %.not643 = icmp eq i64 %50, 0
  br i1 %.not643, label %51, label %53

51:                                               ; preds = %47
  %52 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #4
  %.not644 = icmp eq i64 %52, 0
  %not..not644 = xor i1 %.not644, true
  br label %53

53:                                               ; preds = %51, %47
  %54 = phi i1 [ false, %47 ], [ %not..not644, %51 ]
  %55 = phi i1 [ false, %47 ], [ %.not644, %51 ]
  %56 = or i1 %48, %54
  %57 = load i64, ptr %2, align 8, !tbaa !5
  %58 = shl i64 %57, 1
  %59 = tail call i64 @llvm.smax.i64(i64 %58, i64 1)
  %60 = uitofp nneg i64 %59 to double
  store double %60, ptr %13, align 8, !tbaa !9
  %61 = getelementptr inbounds i8, ptr %13, i64 8
  store double 0.000000e+00, ptr %61, align 8, !tbaa !12
  %62 = load i64, ptr %14, align 8, !tbaa !5
  %63 = icmp eq i64 %62, -1
  store i64 0, ptr %16, align 8, !tbaa !5
  %brmerge = select i1 %49, i1 true, i1 %55
  %.mux = select i1 %49, i64 -1, i64 -2
  br i1 %brmerge, label %.thread684.sink.split, label %64

64:                                               ; preds = %53
  %65 = load i64, ptr %2, align 8, !tbaa !5
  %66 = icmp slt i64 %65, 0
  br i1 %66, label %.thread684.sink.split, label %67

67:                                               ; preds = %64
  %68 = load i64, ptr %4, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %65, i64 1)
  %69 = icmp slt i64 %68, %spec.select
  br i1 %69, label %.thread684.sink.split, label %70

70:                                               ; preds = %67
  %71 = load i64, ptr %6, align 8, !tbaa !5
  %72 = icmp slt i64 %71, %spec.select
  br i1 %72, label %.thread684.sink.split, label %73

73:                                               ; preds = %70
  %74 = load i64, ptr %10, align 8, !tbaa !5
  %75 = icmp slt i64 %74, 1
  %76 = icmp ult i64 %74, %65
  %or.cond729 = and i1 %48, %76
  %or.cond731 = select i1 %75, i1 true, i1 %or.cond729
  br i1 %or.cond731, label %.thread684.sink.split, label %77

77:                                               ; preds = %73
  %78 = load i64, ptr %12, align 8, !tbaa !5
  %79 = icmp slt i64 %78, 1
  %80 = icmp ult i64 %78, %65
  %or.cond730 = and i1 %54, %80
  %or.cond732 = select i1 %79, i1 true, i1 %or.cond730
  br i1 %or.cond732, label %.thread684.sink.split, label %81

81:                                               ; preds = %77
  %82 = load i64, ptr %14, align 8, !tbaa !5
  %83 = icmp sge i64 %82, %59
  %or.cond = select i1 %83, i1 true, i1 %63
  br i1 %or.cond, label %.thread, label %.thread684.sink.split

.thread:                                          ; preds = %81
  %84 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #4
  %85 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_n1) #4
  %86 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_n1) #4
  %87 = tail call i64 @llvm.smax.i64(i64 %84, i64 %85)
  %88 = tail call i64 @llvm.smax.i64(i64 %87, i64 %86)
  %89 = load i64, ptr %2, align 8, !tbaa !5
  %90 = shl i64 %89, 1
  store i64 %90, ptr %18, align 8, !tbaa !5
  %91 = add nsw i64 %88, 1
  %92 = mul nsw i64 %89, %91
  store i64 %92, ptr %19, align 8, !tbaa !5
  %93 = tail call i64 @llvm.smax.i64(i64 %90, i64 %92)
  %94 = sitofp i64 %93 to double
  store double %94, ptr %13, align 8, !tbaa !9
  store double 0.000000e+00, ptr %61, align 8, !tbaa !12
  %.pr683.pr = load i64, ptr %16, align 8, !tbaa !5
  %.not648 = icmp eq i64 %.pr683.pr, 0
  br i1 %.not648, label %98, label %.thread684

.thread684.sink.split:                            ; preds = %53, %81, %77, %73, %70, %67, %64
  %.sink = phi i64 [ %.mux, %53 ], [ -3, %64 ], [ -5, %67 ], [ -7, %70 ], [ -11, %73 ], [ -13, %77 ], [ -15, %81 ]
  store i64 %.sink, ptr %16, align 8, !tbaa !5
  br label %.thread684

.thread684:                                       ; preds = %.thread684.sink.split, %.thread
  %95 = phi i64 [ %.pr683.pr, %.thread ], [ %.sink, %.thread684.sink.split ]
  %96 = sub nsw i64 0, %95
  store i64 %96, ptr %18, align 8, !tbaa !5
  %97 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %18) #4
  br label %496

98:                                               ; preds = %.thread
  %99 = icmp eq i64 %89, 0
  %or.cond780 = select i1 %63, i1 true, i1 %99
  br i1 %or.cond780, label %496, label %100

100:                                              ; preds = %98
  %101 = tail call double @dlamch_(ptr noundef nonnull @.str.7) #4
  %102 = tail call double @dlamch_(ptr noundef nonnull @.str.8) #4
  %103 = fmul double %101, %102
  %104 = tail call double @dlamch_(ptr noundef nonnull @.str.9) #4
  %105 = fadd double %104, %104
  %106 = fdiv double 1.000000e+00, %105
  %107 = tail call double @zlange_(ptr noundef nonnull @.str.10, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %15) #4
  store double %107, ptr %23, align 8, !tbaa !13
  %108 = fcmp olt double %107, 1.000000e+00
  br i1 %108, label %109, label %113

109:                                              ; preds = %100
  %110 = fmul double %107, %106
  %111 = fcmp olt double %110, 1.000000e+00
  br i1 %111, label %112, label %113

112:                                              ; preds = %109
  br label %113

113:                                              ; preds = %109, %112, %100
  %.0610 = phi double [ %105, %112 ], [ %107, %109 ], [ %107, %100 ]
  %.0609 = phi double [ %110, %112 ], [ 1.000000e+00, %109 ], [ 1.000000e+00, %100 ]
  %114 = fcmp ogt double %107, 0.000000e+00
  br i1 %114, label %115, label %121

115:                                              ; preds = %113
  %116 = call i32 @zlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull %23, ptr noundef nonnull @c_b29, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %25) #4
  %117 = load i64, ptr %25, align 8, !tbaa !5
  %.not649 = icmp eq i64 %117, 0
  br i1 %.not649, label %121, label %118

118:                                              ; preds = %115
  %119 = load i64, ptr %2, align 8, !tbaa !5
  %120 = add nsw i64 %119, 10
  store i64 %120, ptr %16, align 8, !tbaa !5
  br label %496

121:                                              ; preds = %115, %113
  %122 = call double @zlange_(ptr noundef nonnull @.str.10, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %15) #4
  store double %122, ptr %24, align 8, !tbaa !13
  %123 = fcmp olt double %122, 1.000000e+00
  br i1 %123, label %124, label %128

124:                                              ; preds = %121
  %125 = fmul double %106, %122
  %126 = fcmp olt double %125, 1.000000e+00
  br i1 %126, label %127, label %128

127:                                              ; preds = %124
  br label %128

128:                                              ; preds = %124, %127, %121
  %.0608 = phi double [ %105, %127 ], [ %122, %124 ], [ %122, %121 ]
  %.0607 = phi double [ %125, %127 ], [ 1.000000e+00, %124 ], [ 1.000000e+00, %121 ]
  %129 = fcmp ogt double %122, 0.000000e+00
  br i1 %129, label %130, label %136

130:                                              ; preds = %128
  %131 = call i32 @zlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull %24, ptr noundef nonnull @c_b29, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %25) #4
  %132 = load i64, ptr %25, align 8, !tbaa !5
  %.not650 = icmp eq i64 %132, 0
  br i1 %.not650, label %136, label %133

133:                                              ; preds = %130
  %134 = load i64, ptr %2, align 8, !tbaa !5
  %135 = add nsw i64 %134, 10
  store i64 %135, ptr %16, align 8, !tbaa !5
  br label %496

136:                                              ; preds = %130, %128
  %137 = load i64, ptr %2, align 8, !tbaa !5
  %138 = getelementptr double, ptr %15, i64 %137
  %.idx = shl i64 %137, 4
  %139 = getelementptr i8, ptr %15, i64 %.idx
  %140 = call i32 @zggbal_(ptr noundef nonnull @.str.12, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef %15, ptr noundef %138, ptr noundef %139, ptr noundef nonnull %25) #4
  %141 = load i64, ptr %25, align 8, !tbaa !5
  %.not651 = icmp eq i64 %141, 0
  br i1 %.not651, label %145, label %142

142:                                              ; preds = %136
  %143 = load i64, ptr %2, align 8, !tbaa !5
  %144 = add nsw i64 %143, 1
  br label %.loopexit.sink.split

145:                                              ; preds = %136
  %146 = load i64, ptr %21, align 8, !tbaa !5
  %147 = add nsw i64 %146, 1
  %148 = load i64, ptr %22, align 8, !tbaa !5
  %149 = sub i64 %147, %148
  store i64 %149, ptr %27, align 8, !tbaa !5
  br i1 %56, label %150, label %153

150:                                              ; preds = %145
  %151 = load i64, ptr %2, align 8, !tbaa !5
  %reass.sub = sub i64 %151, %148
  %152 = add i64 %reass.sub, 1
  br label %153

153:                                              ; preds = %145, %150
  %storemerge = phi i64 [ %152, %150 ], [ %149, %145 ]
  store i64 %storemerge, ptr %26, align 8, !tbaa !5
  %154 = load i64, ptr %14, align 8, !tbaa !5
  %155 = sub i64 %154, %149
  store i64 %155, ptr %18, align 8, !tbaa !5
  %156 = add i64 %33, 1
  %157 = mul i64 %148, %156
  %158 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %157
  %159 = getelementptr %struct.doublecomplex, ptr %13, i64 %149
  %160 = call i32 @zgeqrf_(ptr noundef nonnull %27, ptr noundef nonnull %26, ptr noundef %158, ptr noundef nonnull %6, ptr noundef nonnull %13, ptr noundef %159, ptr noundef nonnull %18, ptr noundef nonnull %25) #4
  %161 = load i64, ptr %25, align 8, !tbaa !5
  %162 = icmp sgt i64 %161, -1
  br i1 %162, label %163, label %.thread686

163:                                              ; preds = %153
  %164 = load double, ptr %159, align 8, !tbaa !9
  %165 = fptosi double %164 to i64
  %166 = add i64 %149, %165
  store i64 %166, ptr %19, align 8, !tbaa !5
  %167 = call i64 @llvm.smax.i64(i64 %59, i64 %166)
  %.not653 = icmp eq i64 %161, 0
  br i1 %.not653, label %170, label %.thread686

.thread686:                                       ; preds = %153, %163
  %.0592689 = phi i64 [ %167, %163 ], [ %59, %153 ]
  %168 = load i64, ptr %2, align 8, !tbaa !5
  %169 = add nsw i64 %168, 2
  br label %.loopexit.sink.split

170:                                              ; preds = %163
  %171 = load i64, ptr %14, align 8, !tbaa !5
  %172 = sub i64 %171, %149
  store i64 %172, ptr %18, align 8, !tbaa !5
  %173 = load i64, ptr %22, align 8, !tbaa !5
  %174 = mul i64 %173, %156
  %175 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %174
  %176 = add i64 %30, 1
  %177 = mul i64 %173, %176
  %178 = getelementptr inbounds %struct.doublecomplex, ptr %32, i64 %177
  %179 = call i32 @zunmqr_(ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.14, ptr noundef nonnull %27, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef %175, ptr noundef nonnull %6, ptr noundef nonnull %13, ptr noundef %178, ptr noundef nonnull %4, ptr noundef nonnull %159, ptr noundef nonnull %18, ptr noundef nonnull %25) #4
  %180 = load i64, ptr %25, align 8, !tbaa !5
  %181 = icmp sgt i64 %180, -1
  br i1 %181, label %182, label %.thread690

182:                                              ; preds = %170
  store i64 %167, ptr %18, align 8, !tbaa !5
  %183 = load double, ptr %159, align 8, !tbaa !9
  %184 = fptosi double %183 to i64
  %185 = add i64 %149, %184
  store i64 %185, ptr %19, align 8, !tbaa !5
  %186 = call i64 @llvm.smax.i64(i64 %167, i64 %185)
  %.not655 = icmp eq i64 %180, 0
  br i1 %.not655, label %189, label %.thread690

.thread690:                                       ; preds = %170, %182
  %.1693 = phi i64 [ %186, %182 ], [ %167, %170 ]
  %187 = load i64, ptr %2, align 8, !tbaa !5
  %188 = add nsw i64 %187, 3
  br label %.loopexit.sink.split

189:                                              ; preds = %182
  br i1 %48, label %190, label %219

190:                                              ; preds = %189
  %191 = call i32 @zlaset_(ptr noundef nonnull @.str.15, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b2, ptr noundef %9, ptr noundef nonnull %10) #4
  %192 = load i64, ptr %27, align 8, !tbaa !5
  %193 = add nsw i64 %192, -1
  store i64 %193, ptr %18, align 8, !tbaa !5
  store i64 %193, ptr %19, align 8, !tbaa !5
  %194 = load i64, ptr %22, align 8, !tbaa !5
  %195 = add nsw i64 %194, 1
  %196 = mul nsw i64 %194, %33
  %197 = getelementptr %struct.doublecomplex, ptr %35, i64 %195
  %198 = getelementptr %struct.doublecomplex, ptr %197, i64 %196
  %199 = mul nsw i64 %194, %38
  %200 = getelementptr %struct.doublecomplex, ptr %40, i64 %195
  %201 = getelementptr %struct.doublecomplex, ptr %200, i64 %199
  %202 = call i32 @zlacpy_(ptr noundef nonnull @.str.13, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef %198, ptr noundef nonnull %6, ptr noundef %201, ptr noundef nonnull %10) #4
  %203 = load i64, ptr %14, align 8, !tbaa !5
  %204 = sub i64 %203, %149
  store i64 %204, ptr %18, align 8, !tbaa !5
  %205 = load i64, ptr %22, align 8, !tbaa !5
  %206 = add i64 %38, 1
  %207 = mul i64 %205, %206
  %208 = getelementptr inbounds %struct.doublecomplex, ptr %40, i64 %207
  %209 = call i32 @zungqr_(ptr noundef nonnull %27, ptr noundef nonnull %27, ptr noundef nonnull %27, ptr noundef %208, ptr noundef nonnull %10, ptr noundef nonnull %13, ptr noundef nonnull %159, ptr noundef nonnull %18, ptr noundef nonnull %25) #4
  %210 = load i64, ptr %25, align 8, !tbaa !5
  %211 = icmp sgt i64 %210, -1
  br i1 %211, label %212, label %.thread694

212:                                              ; preds = %190
  store i64 %186, ptr %18, align 8, !tbaa !5
  %213 = load double, ptr %159, align 8, !tbaa !9
  %214 = fptosi double %213 to i64
  %215 = add i64 %149, %214
  store i64 %215, ptr %19, align 8, !tbaa !5
  %216 = call i64 @llvm.smax.i64(i64 %186, i64 %215)
  %.not657 = icmp eq i64 %210, 0
  br i1 %.not657, label %.thread699, label %.thread694

.thread694:                                       ; preds = %190, %212
  %.2697 = phi i64 [ %216, %212 ], [ %186, %190 ]
  %217 = load i64, ptr %2, align 8, !tbaa !5
  %218 = add nsw i64 %217, 4
  br label %.loopexit.sink.split

219:                                              ; preds = %189
  br i1 %54, label %.thread698, label %221

.thread699:                                       ; preds = %212
  br i1 %54, label %.thread698, label %.thread705

.thread698:                                       ; preds = %219, %.thread699
  %.3704 = phi i64 [ %216, %.thread699 ], [ %186, %219 ]
  %220 = call i32 @zlaset_(ptr noundef nonnull @.str.15, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b2, ptr noundef %11, ptr noundef nonnull %12) #4
  br label %.thread705

221:                                              ; preds = %219
  br i1 %56, label %.thread705, label %223

.thread705:                                       ; preds = %.thread699, %.thread698, %221
  %.3702 = phi i64 [ %.3704, %.thread698 ], [ %186, %221 ], [ %216, %.thread699 ]
  %222 = call i32 @zgghrd_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %25) #4
  br label %230

223:                                              ; preds = %221
  %224 = load i64, ptr %22, align 8, !tbaa !5
  %225 = mul i64 %224, %176
  %226 = getelementptr inbounds %struct.doublecomplex, ptr %32, i64 %225
  %227 = mul i64 %224, %156
  %228 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %227
  %229 = call i32 @zgghrd_(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %27, ptr noundef nonnull @c__1, ptr noundef nonnull %27, ptr noundef %226, ptr noundef nonnull %4, ptr noundef %228, ptr noundef nonnull %6, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %25) #4
  br label %230

230:                                              ; preds = %223, %.thread705
  %.3701 = phi i64 [ %186, %223 ], [ %.3702, %.thread705 ]
  %231 = load i64, ptr %25, align 8, !tbaa !5
  %.not658 = icmp eq i64 %231, 0
  br i1 %.not658, label %235, label %232

232:                                              ; preds = %230
  %233 = load i64, ptr %2, align 8, !tbaa !5
  %234 = add nsw i64 %233, 5
  br label %.loopexit.sink.split

235:                                              ; preds = %230
  %.680 = select i1 %56, i8 83, i8 69
  store i8 %.680, ptr %28, align 1, !tbaa !14
  %236 = load i64, ptr %14, align 8, !tbaa !5
  store i64 %236, ptr %18, align 8, !tbaa !5
  %237 = call i32 @zhgeqz_(ptr noundef nonnull %28, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %18, ptr noundef %139, ptr noundef nonnull %25) #4
  %238 = load i64, ptr %25, align 8, !tbaa !5
  %239 = icmp sgt i64 %238, -1
  br i1 %239, label %240, label %._crit_edge775

._crit_edge775:                                   ; preds = %235
  %.pre = load i64, ptr %2, align 8, !tbaa !5
  br label %246

240:                                              ; preds = %235
  store i64 %.3701, ptr %18, align 8, !tbaa !5
  %241 = load double, ptr %13, align 8, !tbaa !9
  %242 = fptosi double %241 to i64
  store i64 %242, ptr %19, align 8, !tbaa !5
  %243 = call i64 @llvm.smax.i64(i64 %.3701, i64 %242)
  %.not661 = icmp eq i64 %238, 0
  br i1 %.not661, label %254, label %244

244:                                              ; preds = %240
  %245 = load i64, ptr %2, align 8, !tbaa !5
  %.not674 = icmp sgt i64 %238, %245
  br i1 %.not674, label %246, label %.loopexit.sink.split

246:                                              ; preds = %._crit_edge775, %244
  %247 = phi i64 [ %245, %244 ], [ %.pre, %._crit_edge775 ]
  %.4710714 = phi i64 [ %243, %244 ], [ %.3701, %._crit_edge775 ]
  %248 = icmp sle i64 %238, %247
  %249 = shl i64 %247, 1
  %.not675 = icmp sgt i64 %238, %249
  %or.cond681 = or i1 %248, %.not675
  br i1 %or.cond681, label %252, label %250

250:                                              ; preds = %246
  %251 = sub nsw i64 %238, %247
  br label %.loopexit.sink.split

252:                                              ; preds = %246
  %253 = add nsw i64 %247, 6
  br label %.loopexit.sink.split

254:                                              ; preds = %240
  br i1 %56, label %255, label %.loopexit735

255:                                              ; preds = %254
  br i1 %48, label %256, label %.thread715

256:                                              ; preds = %255
  %. = select i1 %54, i8 66, i8 76
  store i8 %., ptr %28, align 1, !tbaa !14
  %257 = call i32 @ztgevc_(ptr noundef nonnull %28, ptr noundef nonnull @.str.8, ptr noundef nonnull %29, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %2, ptr noundef nonnull %20, ptr noundef nonnull %13, ptr noundef %139, ptr noundef nonnull %25) #4
  %258 = load i64, ptr %25, align 8, !tbaa !5
  %.not662 = icmp eq i64 %258, 0
  br i1 %.not662, label %264, label %261

.thread715:                                       ; preds = %255
  store i8 82, ptr %28, align 1, !tbaa !14
  %259 = call i32 @ztgevc_(ptr noundef nonnull %28, ptr noundef nonnull @.str.8, ptr noundef nonnull %29, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %2, ptr noundef nonnull %20, ptr noundef nonnull %13, ptr noundef %139, ptr noundef nonnull %25) #4
  %260 = load i64, ptr %25, align 8, !tbaa !5
  %.not662716 = icmp eq i64 %260, 0
  br i1 %.not662716, label %.thread717, label %261

261:                                              ; preds = %.thread715, %256
  %262 = load i64, ptr %2, align 8, !tbaa !5
  %263 = add nsw i64 %262, 7
  br label %.loopexit.sink.split

264:                                              ; preds = %256
  %265 = call i32 @zggbak_(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.13, ptr noundef nonnull %2, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef %15, ptr noundef %138, ptr noundef nonnull %2, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %25) #4
  %266 = load i64, ptr %25, align 8, !tbaa !5
  %.not663 = icmp eq i64 %266, 0
  %267 = load i64, ptr %2, align 8, !tbaa !5
  br i1 %.not663, label %270, label %268

268:                                              ; preds = %264
  %269 = add nsw i64 %267, 8
  br label %.loopexit.sink.split

270:                                              ; preds = %264
  store i64 %267, ptr %18, align 8, !tbaa !5
  %.not664746 = icmp slt i64 %267, 1
  br i1 %.not664746, label %.thread717, label %.lr.ph749.preheader

.lr.ph749.preheader:                              ; preds = %270
  %271 = shl i64 %38, 4
  br label %.lr.ph749

.lr.ph749thread-pre-split:                        ; preds = %.loopexit736
  %272 = add nuw nsw i64 %.0619747, 1
  %.pr = load i64, ptr %2, align 8, !tbaa !5
  %indvar.next = add i64 %indvar, 1
  br label %.lr.ph749

.lr.ph749:                                        ; preds = %.lr.ph749.preheader, %.lr.ph749thread-pre-split
  %indvar = phi i64 [ 0, %.lr.ph749.preheader ], [ %indvar.next, %.lr.ph749thread-pre-split ]
  %273 = phi i64 [ %267, %.lr.ph749.preheader ], [ %.pr, %.lr.ph749thread-pre-split ]
  %.0619747 = phi i64 [ 1, %.lr.ph749.preheader ], [ %272, %.lr.ph749thread-pre-split ]
  %274 = mul i64 %271, %indvar
  %scevgep = getelementptr i8, ptr %9, i64 %274
  %275 = or disjoint i64 %274, 8
  %scevgep783 = getelementptr i8, ptr %9, i64 %275
  store i64 %273, ptr %19, align 8, !tbaa !5
  %.not672737 = icmp slt i64 %273, 1
  br i1 %.not672737, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph749
  %276 = mul nsw i64 %.0619747, %38
  %invariant.gep = getelementptr %struct.doublecomplex, ptr %40, i64 %276
  br label %277

277:                                              ; preds = %.lr.ph, %277
  %.0613739 = phi double [ 0.000000e+00, %.lr.ph ], [ %288, %277 ]
  %.0615738 = phi i64 [ 1, %.lr.ph ], [ %289, %277 ]
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %.0615738
  %278 = load double, ptr %gep, align 8, !tbaa !9
  %279 = call double @d_imag(ptr noundef nonnull %gep) #4
  %280 = insertelement <2 x double> poison, double %278, i64 0
  %281 = insertelement <2 x double> %280, double %279, i64 1
  %282 = fcmp oge <2 x double> %281, zeroinitializer
  %283 = fneg <2 x double> %281
  %284 = select <2 x i1> %282, <2 x double> %281, <2 x double> %283
  %shift = shufflevector <2 x double> %284, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %285 = fadd <2 x double> %284, %shift
  %286 = extractelement <2 x double> %285, i64 0
  %287 = fcmp oge double %.0613739, %286
  %288 = select i1 %287, double %.0613739, double %286
  %289 = add nuw nsw i64 %.0615738, 1
  %290 = load i64, ptr %19, align 8, !tbaa !5
  %.not672.not = icmp slt i64 %.0615738, %290
  br i1 %.not672.not, label %277, label %._crit_edge, !llvm.loop !15

._crit_edge:                                      ; preds = %277, %.lr.ph749
  %.0613.lcssa = phi double [ 0.000000e+00, %.lr.ph749 ], [ %288, %277 ]
  %291 = fcmp olt double %.0613.lcssa, %105
  br i1 %291, label %.loopexit736, label %292

292:                                              ; preds = %._crit_edge
  %293 = fdiv double 1.000000e+00, %.0613.lcssa
  %294 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %294, ptr %19, align 8, !tbaa !5
  %.not673740 = icmp slt i64 %294, 1
  br i1 %.not673740, label %.loopexit736, label %.lr.ph743

.lr.ph743:                                        ; preds = %292
  %295 = mul nsw i64 %.0619747, %38
  %invariant.gep744 = getelementptr %struct.doublecomplex, ptr %40, i64 %295
  %min.iters.check = icmp ult i64 %294, 12
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph743
  %296 = add nsw i64 %294, -1
  %mul.result = shl i64 %296, 4
  %297 = getelementptr i8, ptr %scevgep, i64 %mul.result
  %298 = icmp ult ptr %297, %scevgep
  %mul.result785 = shl i64 %296, 4
  %mul.overflow786 = icmp ugt i64 %296, 1152921504606846975
  %299 = getelementptr i8, ptr %scevgep783, i64 %mul.result785
  %300 = icmp ult ptr %299, %scevgep783
  %301 = or i1 %300, %mul.overflow786
  %302 = or i1 %298, %301
  br i1 %302, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.scevcheck
  %n.vec = and i64 %294, 2305843009213693950
  %ind.end = or i64 %294, 1
  %broadcast.splatinsert = insertelement <2 x double> poison, double %293, i64 0
  %303 = 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
  %304 = getelementptr %struct.doublecomplex, ptr %invariant.gep744, i64 %offset.idx
  %wide.vec = load <4 x double>, ptr %304, align 8, !tbaa !13
  %interleaved.vec = fmul <4 x double> %303, %wide.vec
  store <4 x double> %interleaved.vec, ptr %304, align 8, !tbaa !13
  %index.next = add nuw i64 %index, 2
  %305 = icmp eq i64 %index.next, %n.vec
  br i1 %305, label %middle.block, label %vector.body, !llvm.loop !17

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

scalar.ph.preheader:                              ; preds = %middle.block, %vector.scevcheck, %.lr.ph743
  %.1616741.ph = phi i64 [ 1, %vector.scevcheck ], [ 1, %.lr.ph743 ], [ %ind.end, %middle.block ]
  %xtraiter = and i64 %294, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %gep745.prol = getelementptr %struct.doublecomplex, ptr %invariant.gep744, i64 %.1616741.ph
  %306 = load <2 x double>, ptr %gep745.prol, align 8, !tbaa !13
  %307 = insertelement <2 x double> poison, double %293, i64 0
  %308 = shufflevector <2 x double> %307, <2 x double> poison, <2 x i32> zeroinitializer
  %309 = fmul <2 x double> %308, %306
  store <2 x double> %309, ptr %gep745.prol, align 8, !tbaa !13
  %310 = add nuw nsw i64 %.1616741.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.1616741.unr = phi i64 [ %.1616741.ph, %scalar.ph.preheader ], [ %310, %scalar.ph.prol ]
  %311 = icmp eq i64 %294, %.1616741.ph
  br i1 %311, label %.loopexit736, label %scalar.ph.preheader.new

scalar.ph.preheader.new:                          ; preds = %scalar.ph.prol.loopexit
  %312 = insertelement <2 x double> poison, double %293, i64 0
  %313 = shufflevector <2 x double> %312, <2 x double> poison, <2 x i32> zeroinitializer
  %314 = insertelement <2 x double> poison, double %293, i64 0
  %315 = shufflevector <2 x double> %314, <2 x double> poison, <2 x i32> zeroinitializer
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %.1616741 = phi i64 [ %.1616741.unr, %scalar.ph.preheader.new ], [ %321, %scalar.ph ]
  %gep745 = getelementptr %struct.doublecomplex, ptr %invariant.gep744, i64 %.1616741
  %316 = load <2 x double>, ptr %gep745, align 8, !tbaa !13
  %317 = fmul <2 x double> %313, %316
  store <2 x double> %317, ptr %gep745, align 8, !tbaa !13
  %318 = add nuw i64 %.1616741, 1
  %gep745.1 = getelementptr %struct.doublecomplex, ptr %invariant.gep744, i64 %318
  %319 = load <2 x double>, ptr %gep745.1, align 8, !tbaa !13
  %320 = fmul <2 x double> %315, %319
  store <2 x double> %320, ptr %gep745.1, align 8, !tbaa !13
  %321 = add nuw i64 %.1616741, 2
  %exitcond.not.1 = icmp eq i64 %318, %294
  br i1 %exitcond.not.1, label %.loopexit736, label %scalar.ph, !llvm.loop !20

.loopexit736:                                     ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block, %292, %._crit_edge
  %322 = load i64, ptr %18, align 8, !tbaa !5
  %.not664.not = icmp slt i64 %.0619747, %322
  br i1 %.not664.not, label %.lr.ph749thread-pre-split, label %.thread717, !llvm.loop !21

.thread717:                                       ; preds = %.loopexit736, %270, %.thread715
  br i1 %54, label %323, label %.loopexit735

323:                                              ; preds = %.thread717
  %324 = call i32 @zggbak_(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.16, ptr noundef nonnull %2, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef %15, ptr noundef %138, ptr noundef nonnull %2, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %25) #4
  %325 = load i64, ptr %25, align 8, !tbaa !5
  %.not665 = icmp eq i64 %325, 0
  %326 = load i64, ptr %2, align 8, !tbaa !5
  br i1 %.not665, label %329, label %327

327:                                              ; preds = %323
  %328 = add nsw i64 %326, 9
  br label %.loopexit.sink.split

329:                                              ; preds = %323
  store i64 %326, ptr %18, align 8, !tbaa !5
  %.not666765 = icmp slt i64 %326, 1
  br i1 %.not666765, label %.loopexit, label %.lr.ph768.preheader

.lr.ph768.preheader:                              ; preds = %329
  %330 = shl i64 %41, 4
  br label %.lr.ph768

.lr.ph768thread-pre-split:                        ; preds = %.loopexit734
  %331 = add nuw nsw i64 %.1620766, 1
  %.pr776 = load i64, ptr %2, align 8, !tbaa !5
  %indvar.next790 = add i64 %indvar789, 1
  br label %.lr.ph768

.lr.ph768:                                        ; preds = %.lr.ph768.preheader, %.lr.ph768thread-pre-split
  %indvar789 = phi i64 [ 0, %.lr.ph768.preheader ], [ %indvar.next790, %.lr.ph768thread-pre-split ]
  %332 = phi i64 [ %326, %.lr.ph768.preheader ], [ %.pr776, %.lr.ph768thread-pre-split ]
  %.1620766 = phi i64 [ 1, %.lr.ph768.preheader ], [ %331, %.lr.ph768thread-pre-split ]
  %333 = mul i64 %330, %indvar789
  %scevgep791 = getelementptr i8, ptr %11, i64 %333
  %334 = or disjoint i64 %333, 8
  %scevgep795 = getelementptr i8, ptr %11, i64 %334
  store i64 %332, ptr %19, align 8, !tbaa !5
  %.not670750 = icmp slt i64 %332, 1
  br i1 %.not670750, label %._crit_edge755, label %.lr.ph754

.lr.ph754:                                        ; preds = %.lr.ph768
  %335 = mul nsw i64 %.1620766, %41
  %invariant.gep757 = getelementptr %struct.doublecomplex, ptr %43, i64 %335
  br label %336

336:                                              ; preds = %.lr.ph754, %336
  %.1614752 = phi double [ 0.000000e+00, %.lr.ph754 ], [ %347, %336 ]
  %.2617751 = phi i64 [ 1, %.lr.ph754 ], [ %348, %336 ]
  %gep758 = getelementptr %struct.doublecomplex, ptr %invariant.gep757, i64 %.2617751
  %337 = load double, ptr %gep758, align 8, !tbaa !9
  %338 = call double @d_imag(ptr noundef nonnull %gep758) #4
  %339 = insertelement <2 x double> poison, double %337, i64 0
  %340 = insertelement <2 x double> %339, double %338, i64 1
  %341 = fcmp oge <2 x double> %340, zeroinitializer
  %342 = fneg <2 x double> %340
  %343 = select <2 x i1> %341, <2 x double> %340, <2 x double> %342
  %shift818 = shufflevector <2 x double> %343, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %344 = fadd <2 x double> %343, %shift818
  %345 = extractelement <2 x double> %344, i64 0
  %346 = fcmp oge double %.1614752, %345
  %347 = select i1 %346, double %.1614752, double %345
  %348 = add nuw nsw i64 %.2617751, 1
  %349 = load i64, ptr %19, align 8, !tbaa !5
  %.not670.not = icmp slt i64 %.2617751, %349
  br i1 %.not670.not, label %336, label %._crit_edge755, !llvm.loop !22

._crit_edge755:                                   ; preds = %336, %.lr.ph768
  %.1614.lcssa = phi double [ 0.000000e+00, %.lr.ph768 ], [ %347, %336 ]
  %350 = fcmp olt double %.1614.lcssa, %105
  br i1 %350, label %.loopexit734, label %351

351:                                              ; preds = %._crit_edge755
  %352 = fdiv double 1.000000e+00, %.1614.lcssa
  %353 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %353, ptr %19, align 8, !tbaa !5
  %.not671759 = icmp slt i64 %353, 1
  br i1 %.not671759, label %.loopexit734, label %.lr.ph762

.lr.ph762:                                        ; preds = %351
  %354 = mul nsw i64 %.1620766, %41
  %invariant.gep763 = getelementptr %struct.doublecomplex, ptr %43, i64 %354
  %min.iters.check801 = icmp ult i64 %353, 12
  br i1 %min.iters.check801, label %scalar.ph800.preheader, label %vector.scevcheck788

vector.scevcheck788:                              ; preds = %.lr.ph762
  %355 = add nsw i64 %353, -1
  %mul.result793 = shl i64 %355, 4
  %356 = getelementptr i8, ptr %scevgep791, i64 %mul.result793
  %357 = icmp ult ptr %356, %scevgep791
  %mul.result797 = shl i64 %355, 4
  %mul.overflow798 = icmp ugt i64 %355, 1152921504606846975
  %358 = getelementptr i8, ptr %scevgep795, i64 %mul.result797
  %359 = icmp ult ptr %358, %scevgep795
  %360 = or i1 %359, %mul.overflow798
  %361 = or i1 %357, %360
  br i1 %361, label %scalar.ph800.preheader, label %vector.ph802

vector.ph802:                                     ; preds = %vector.scevcheck788
  %n.vec804 = and i64 %353, 2305843009213693950
  %ind.end805 = or i64 %353, 1
  %broadcast.splatinsert813 = insertelement <2 x double> poison, double %352, i64 0
  %362 = shufflevector <2 x double> %broadcast.splatinsert813, <2 x double> poison, <4 x i32> zeroinitializer
  br label %vector.body807

vector.body807:                                   ; preds = %vector.body807, %vector.ph802
  %index808 = phi i64 [ 0, %vector.ph802 ], [ %index.next816, %vector.body807 ]
  %offset.idx809 = or disjoint i64 %index808, 1
  %363 = getelementptr %struct.doublecomplex, ptr %invariant.gep763, i64 %offset.idx809
  %wide.vec810 = load <4 x double>, ptr %363, align 8, !tbaa !13
  %interleaved.vec815 = fmul <4 x double> %362, %wide.vec810
  store <4 x double> %interleaved.vec815, ptr %363, align 8, !tbaa !13
  %index.next816 = add nuw i64 %index808, 2
  %364 = icmp eq i64 %index.next816, %n.vec804
  br i1 %364, label %middle.block799, label %vector.body807, !llvm.loop !23

middle.block799:                                  ; preds = %vector.body807
  %cmp.n817 = icmp eq i64 %353, %n.vec804
  br i1 %cmp.n817, label %.loopexit734, label %scalar.ph800.preheader

scalar.ph800.preheader:                           ; preds = %middle.block799, %vector.scevcheck788, %.lr.ph762
  %.3618760.ph = phi i64 [ 1, %vector.scevcheck788 ], [ 1, %.lr.ph762 ], [ %ind.end805, %middle.block799 ]
  %xtraiter820 = and i64 %353, 1
  %lcmp.mod821.not = icmp eq i64 %xtraiter820, 0
  br i1 %lcmp.mod821.not, label %scalar.ph800.prol.loopexit, label %scalar.ph800.prol

scalar.ph800.prol:                                ; preds = %scalar.ph800.preheader
  %gep764.prol = getelementptr %struct.doublecomplex, ptr %invariant.gep763, i64 %.3618760.ph
  %365 = load <2 x double>, ptr %gep764.prol, align 8, !tbaa !13
  %366 = insertelement <2 x double> poison, double %352, i64 0
  %367 = shufflevector <2 x double> %366, <2 x double> poison, <2 x i32> zeroinitializer
  %368 = fmul <2 x double> %367, %365
  store <2 x double> %368, ptr %gep764.prol, align 8, !tbaa !13
  %369 = add nuw nsw i64 %.3618760.ph, 1
  br label %scalar.ph800.prol.loopexit

scalar.ph800.prol.loopexit:                       ; preds = %scalar.ph800.prol, %scalar.ph800.preheader
  %.3618760.unr = phi i64 [ %.3618760.ph, %scalar.ph800.preheader ], [ %369, %scalar.ph800.prol ]
  %370 = icmp eq i64 %353, %.3618760.ph
  br i1 %370, label %.loopexit734, label %scalar.ph800.preheader.new

scalar.ph800.preheader.new:                       ; preds = %scalar.ph800.prol.loopexit
  %371 = insertelement <2 x double> poison, double %352, i64 0
  %372 = shufflevector <2 x double> %371, <2 x double> poison, <2 x i32> zeroinitializer
  %373 = insertelement <2 x double> poison, double %352, i64 0
  %374 = shufflevector <2 x double> %373, <2 x double> poison, <2 x i32> zeroinitializer
  br label %scalar.ph800

scalar.ph800:                                     ; preds = %scalar.ph800, %scalar.ph800.preheader.new
  %.3618760 = phi i64 [ %.3618760.unr, %scalar.ph800.preheader.new ], [ %380, %scalar.ph800 ]
  %gep764 = getelementptr %struct.doublecomplex, ptr %invariant.gep763, i64 %.3618760
  %375 = load <2 x double>, ptr %gep764, align 8, !tbaa !13
  %376 = fmul <2 x double> %372, %375
  store <2 x double> %376, ptr %gep764, align 8, !tbaa !13
  %377 = add nuw i64 %.3618760, 1
  %gep764.1 = getelementptr %struct.doublecomplex, ptr %invariant.gep763, i64 %377
  %378 = load <2 x double>, ptr %gep764.1, align 8, !tbaa !13
  %379 = fmul <2 x double> %374, %378
  store <2 x double> %379, ptr %gep764.1, align 8, !tbaa !13
  %380 = add nuw i64 %.3618760, 2
  %exitcond774.not.1 = icmp eq i64 %377, %353
  br i1 %exitcond774.not.1, label %.loopexit734, label %scalar.ph800, !llvm.loop !24

.loopexit734:                                     ; preds = %scalar.ph800.prol.loopexit, %scalar.ph800, %middle.block799, %351, %._crit_edge755
  %381 = load i64, ptr %18, align 8, !tbaa !5
  %.not666.not = icmp slt i64 %.1620766, %381
  br i1 %.not666.not, label %.lr.ph768thread-pre-split, label %.loopexit735, !llvm.loop !25

.loopexit735:                                     ; preds = %.loopexit734, %.thread717, %254
  %.pr777 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %.pr777, ptr %18, align 8, !tbaa !5
  %.not667769 = icmp slt i64 %.pr777, 1
  br i1 %.not667769, label %.loopexit, label %.lr.ph772

.lr.ph772:                                        ; preds = %.loopexit735
  %382 = fdiv double %105, %.0610
  %383 = fdiv double %105, %.0608
  br label %384

384:                                              ; preds = %.lr.ph772, %.thread724
  %.2621770 = phi i64 [ 1, %.lr.ph772 ], [ %493, %.thread724 ]
  store i64 %.2621770, ptr %19, align 8, !tbaa !5
  %385 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %.2621770
  %386 = load double, ptr %385, align 8, !tbaa !9
  %387 = fcmp oge double %386, 0.000000e+00
  %388 = fneg double %386
  %389 = select i1 %387, double %386, double %388
  %390 = call double @d_imag(ptr noundef nonnull %385) #4
  %391 = fcmp oge double %390, 0.000000e+00
  %392 = fneg double %390
  %393 = select i1 %391, double %390, double %392
  %394 = getelementptr inbounds %struct.doublecomplex, ptr %37, i64 %.2621770
  %395 = load double, ptr %394, align 8, !tbaa !9
  %396 = fcmp oge double %395, 0.000000e+00
  %397 = fneg double %395
  %398 = select i1 %396, double %395, double %397
  store i64 %.2621770, ptr %19, align 8, !tbaa !5
  %399 = load double, ptr %23, align 8, !tbaa !13
  %400 = load double, ptr %385, align 8, !tbaa !9
  %401 = call double @d_imag(ptr noundef nonnull %385) #4
  %402 = insertelement <2 x double> poison, double %399, i64 0
  %403 = shufflevector <2 x double> %402, <2 x double> poison, <2 x i32> zeroinitializer
  %404 = insertelement <2 x double> poison, double %400, i64 0
  %405 = insertelement <2 x double> %404, double %401, i64 1
  %406 = fmul <2 x double> %403, %405
  %407 = load double, ptr %24, align 8, !tbaa !13
  %408 = load double, ptr %394, align 8, !tbaa !9
  %409 = fmul double %407, %408
  %410 = fmul double %103, %389
  %411 = fcmp oge double %105, %410
  %412 = select i1 %411, double %105, double %410
  %413 = fmul double %103, %398
  %414 = extractelement <2 x double> %406, i64 1
  %415 = fcmp oge double %414, 0.000000e+00
  %416 = fneg double %414
  %417 = select i1 %415, double %414, double %416
  %418 = fcmp olt double %417, %105
  br i1 %418, label %419, label %428

419:                                              ; preds = %384
  %420 = fcmp oge double %412, %413
  %421 = select i1 %420, double %412, double %413
  %422 = fcmp ult double %393, %421
  br i1 %422, label %428, label %423

423:                                              ; preds = %419
  %424 = fmul double %.0609, %393
  %425 = fcmp oge double %105, %424
  %426 = select i1 %425, double %105, double %424
  %427 = fdiv double %382, %426
  br label %428

428:                                              ; preds = %423, %419, %384
  %.0602 = phi double [ %427, %423 ], [ 1.000000e+00, %419 ], [ 1.000000e+00, %384 ]
  %.0594 = phi i64 [ 1, %423 ], [ 0, %419 ], [ 0, %384 ]
  %429 = fmul double %103, %393
  %430 = extractelement <2 x double> %406, i64 0
  %431 = fcmp oge double %430, 0.000000e+00
  %432 = fneg double %430
  %433 = select i1 %431, double %430, double %432
  %434 = fcmp olt double %433, %105
  br i1 %434, label %435, label %448

435:                                              ; preds = %428
  %436 = fcmp oge double %105, %429
  %437 = select i1 %436, double %105, double %429
  %438 = fcmp oge double %437, %413
  %439 = select i1 %438, double %437, double %413
  %440 = fcmp ult double %389, %439
  br i1 %440, label %448, label %441

441:                                              ; preds = %435
  %442 = fmul double %.0609, %389
  %443 = fcmp oge double %105, %442
  %444 = select i1 %443, double %105, double %442
  %445 = fdiv double %382, %444
  %446 = fcmp oge double %.0602, %445
  %447 = select i1 %446, double %.0602, double %445
  br label %448

448:                                              ; preds = %441, %435, %428
  %.1603 = phi double [ %447, %441 ], [ %.0602, %435 ], [ %.0602, %428 ]
  %.1595 = phi i64 [ 1, %441 ], [ %.0594, %435 ], [ %.0594, %428 ]
  %449 = fcmp oge double %409, 0.000000e+00
  %450 = fneg double %409
  %451 = select i1 %449, double %409, double %450
  %452 = fcmp olt double %451, %105
  br i1 %452, label %453, label %463

453:                                              ; preds = %448
  %454 = fcmp oge double %412, %429
  %455 = select i1 %454, double %412, double %429
  %456 = fcmp ult double %398, %455
  br i1 %456, label %463, label %.thread718

.thread718:                                       ; preds = %453
  %457 = fmul double %.0607, %398
  %458 = fcmp oge double %105, %457
  %459 = select i1 %458, double %105, double %457
  %460 = fdiv double %383, %459
  %461 = fcmp oge double %.1603, %460
  %462 = select i1 %461, double %.1603, double %460
  br label %464

463:                                              ; preds = %453, %448
  %.not668 = icmp eq i64 %.1595, 0
  br i1 %.not668, label %.thread724, label %464

464:                                              ; preds = %.thread718, %463
  %.2604722 = phi double [ %462, %.thread718 ], [ %.1603, %463 ]
  %465 = fcmp oge double %433, %417
  %466 = select i1 %465, double %433, double %417
  %467 = fmul double %105, %.2604722
  %468 = fcmp oge double %466, %451
  %469 = select i1 %468, double %466, double %451
  %470 = fmul double %469, %467
  %471 = fcmp ogt double %470, 1.000000e+00
  %472 = fdiv double %.2604722, %470
  %.3605 = select i1 %471, double %472, double %.2604722
  %473 = fcmp olt double %.3605, 1.000000e+00
  br i1 %473, label %.thread724, label %474

474:                                              ; preds = %464
  store i64 %.2621770, ptr %19, align 8, !tbaa !5
  %475 = load double, ptr %385, align 8, !tbaa !9
  %476 = load double, ptr %23, align 8, !tbaa !13
  %477 = call double @d_imag(ptr noundef nonnull %385) #4
  %478 = insertelement <2 x double> poison, double %.3605, i64 0
  %479 = shufflevector <2 x double> %478, <2 x double> poison, <2 x i32> zeroinitializer
  %480 = insertelement <2 x double> poison, double %475, i64 0
  %481 = insertelement <2 x double> %480, double %477, i64 1
  %482 = fmul <2 x double> %479, %481
  %483 = load double, ptr %23, align 8, !tbaa !13
  %484 = insertelement <2 x double> poison, double %476, i64 0
  %485 = insertelement <2 x double> %484, double %483, i64 1
  %486 = fmul <2 x double> %482, %485
  %487 = load double, ptr %394, align 8, !tbaa !9
  %488 = fmul double %.3605, %487
  %489 = load double, ptr %24, align 8, !tbaa !13
  %490 = fmul double %489, %488
  br label %.thread724

.thread724:                                       ; preds = %464, %463, %474
  %.0601 = phi double [ %490, %474 ], [ %409, %463 ], [ %409, %464 ]
  %491 = phi <2 x double> [ %486, %474 ], [ %406, %463 ], [ %406, %464 ]
  store <2 x double> %491, ptr %385, align 8, !tbaa !13
  store i64 %.2621770, ptr %19, align 8, !tbaa !5
  store double %.0601, ptr %394, align 8, !tbaa !9
  %492 = getelementptr inbounds %struct.doublecomplex, ptr %37, i64 %.2621770, i32 1
  store double 0.000000e+00, ptr %492, align 8, !tbaa !12
  %493 = add nuw nsw i64 %.2621770, 1
  %494 = load i64, ptr %18, align 8, !tbaa !5
  %.not667.not = icmp slt i64 %.2621770, %494
  br i1 %.not667.not, label %384, label %.loopexit, !llvm.loop !26

.loopexit.sink.split:                             ; preds = %244, %142, %.thread686, %.thread690, %.thread694, %232, %261, %268, %327, %250, %252
  %.sink781 = phi i64 [ %253, %252 ], [ %251, %250 ], [ %328, %327 ], [ %269, %268 ], [ %263, %261 ], [ %234, %232 ], [ %218, %.thread694 ], [ %188, %.thread690 ], [ %169, %.thread686 ], [ %144, %142 ], [ %238, %244 ]
  %.5.ph = phi i64 [ %.4710714, %252 ], [ %.4710714, %250 ], [ %243, %327 ], [ %243, %268 ], [ %243, %261 ], [ %.3701, %232 ], [ %.2697, %.thread694 ], [ %.1693, %.thread690 ], [ %.0592689, %.thread686 ], [ %59, %142 ], [ %243, %244 ]
  store i64 %.sink781, ptr %16, align 8, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.thread724, %.loopexit.sink.split, %329, %.loopexit735
  %.5 = phi i64 [ %243, %.loopexit735 ], [ %243, %329 ], [ %.5.ph, %.loopexit.sink.split ], [ %243, %.thread724 ]
  %495 = uitofp nneg i64 %.5 to double
  store double %495, ptr %13, align 8, !tbaa !9
  store double 0.000000e+00, ptr %61, align 8, !tbaa !12
  br label %496

496:                                              ; preds = %98, %.loopexit, %133, %118, %.thread684
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #4
  ret i32 0
}

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

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

declare i64 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

declare i32 @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 i32 @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 i32 @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 i32 @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

declare double @d_imag(ptr noundef) local_unnamed_addr #2

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #3

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

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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !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, !19}
!18 = !{!"llvm.loop.isvectorized", i32 1}
!19 = !{!"llvm.loop.unroll.runtime.disable"}
!20 = distinct !{!20, !16, !18}
!21 = distinct !{!21, !16}
!22 = distinct !{!22, !16}
!23 = distinct !{!23, !16, !18, !19}
!24 = distinct !{!24, !16, !18}
!25 = distinct !{!25, !16}
!26 = distinct !{!26, !16}


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