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

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

%struct.doublecomplex = type { double, double }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@.str.3 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i32, align 4
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 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
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = 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.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1

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

141:                                              ; preds = %21
  store i32 1, ptr %72, align 4, !tbaa !9
  store i32 0, ptr %65, align 4, !tbaa !9
  br label %149

142:                                              ; preds = %21
  %143 = load ptr, ptr %22, align 8, !tbaa !5
  %144 = call i32 @lsame_(ptr noundef %143, ptr noundef @.str.1)
  %145 = icmp ne i32 %144, 0
  br i1 %145, label %146, label %147

146:                                              ; preds = %142
  store i32 2, ptr %72, align 4, !tbaa !9
  store i32 1, ptr %65, align 4, !tbaa !9
  br label %148

147:                                              ; preds = %142
  store i32 -1, ptr %72, align 4, !tbaa !9
  store i32 0, ptr %65, align 4, !tbaa !9
  br label %148

148:                                              ; preds = %147, %146
  br label %149

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

153:                                              ; preds = %149
  store i32 1, ptr %74, align 4, !tbaa !9
  store i32 0, ptr %66, align 4, !tbaa !9
  br label %161

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

158:                                              ; preds = %154
  store i32 2, ptr %74, align 4, !tbaa !9
  store i32 1, ptr %66, align 4, !tbaa !9
  br label %160

159:                                              ; preds = %154
  store i32 -1, ptr %74, align 4, !tbaa !9
  store i32 0, ptr %66, align 4, !tbaa !9
  br label %160

160:                                              ; preds = %159, %158
  br label %161

161:                                              ; preds = %160, %153
  %162 = load ptr, ptr %24, align 8, !tbaa !5
  %163 = call i32 @lsame_(ptr noundef %162, ptr noundef @.str.2)
  store i32 %163, ptr %80, align 4, !tbaa !9
  %164 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 0, ptr %164, align 4, !tbaa !9
  %165 = load ptr, ptr %39, align 8, !tbaa !5
  %166 = load i32, ptr %165, align 4, !tbaa !9
  %167 = icmp eq i32 %166, -1
  %168 = zext i1 %167 to i32
  store i32 %168, ptr %81, align 4, !tbaa !9
  %169 = load i32, ptr %72, align 4, !tbaa !9
  %170 = icmp sle i32 %169, 0
  br i1 %170, label %171, label %173

171:                                              ; preds = %161
  %172 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -1, ptr %172, align 4, !tbaa !9
  br label %260

173:                                              ; preds = %161
  %174 = load i32, ptr %74, align 4, !tbaa !9
  %175 = icmp sle i32 %174, 0
  br i1 %175, label %176, label %178

176:                                              ; preds = %173
  %177 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -2, ptr %177, align 4, !tbaa !9
  br label %259

178:                                              ; preds = %173
  %179 = load i32, ptr %80, align 4, !tbaa !9
  %180 = icmp ne i32 %179, 0
  br i1 %180, label %187, label %181

181:                                              ; preds = %178
  %182 = load ptr, ptr %24, align 8, !tbaa !5
  %183 = call i32 @lsame_(ptr noundef %182, ptr noundef @.str)
  %184 = icmp ne i32 %183, 0
  br i1 %184, label %187, label %185

185:                                              ; preds = %181
  %186 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -3, ptr %186, align 4, !tbaa !9
  br label %258

187:                                              ; preds = %181, %178
  %188 = load ptr, ptr %26, align 8, !tbaa !5
  %189 = load i32, ptr %188, align 4, !tbaa !9
  %190 = icmp slt i32 %189, 0
  br i1 %190, label %191, label %193

191:                                              ; preds = %187
  %192 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -5, ptr %192, align 4, !tbaa !9
  br label %257

193:                                              ; preds = %187
  %194 = load ptr, ptr %28, align 8, !tbaa !5
  %195 = load i32, ptr %194, align 4, !tbaa !9
  %196 = load ptr, ptr %26, align 8, !tbaa !5
  %197 = load i32, ptr %196, align 4, !tbaa !9
  %198 = icmp sge i32 1, %197
  br i1 %198, label %199, label %200

199:                                              ; preds = %193
  br label %203

200:                                              ; preds = %193
  %201 = load ptr, ptr %26, align 8, !tbaa !5
  %202 = load i32, ptr %201, align 4, !tbaa !9
  br label %203

203:                                              ; preds = %200, %199
  %204 = phi i32 [ 1, %199 ], [ %202, %200 ]
  %205 = icmp slt i32 %195, %204
  br i1 %205, label %206, label %208

206:                                              ; preds = %203
  %207 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -7, ptr %207, align 4, !tbaa !9
  br label %256

208:                                              ; preds = %203
  %209 = load ptr, ptr %30, align 8, !tbaa !5
  %210 = load i32, ptr %209, align 4, !tbaa !9
  %211 = load ptr, ptr %26, align 8, !tbaa !5
  %212 = load i32, ptr %211, align 4, !tbaa !9
  %213 = icmp sge i32 1, %212
  br i1 %213, label %214, label %215

214:                                              ; preds = %208
  br label %218

215:                                              ; preds = %208
  %216 = load ptr, ptr %26, align 8, !tbaa !5
  %217 = load i32, ptr %216, align 4, !tbaa !9
  br label %218

218:                                              ; preds = %215, %214
  %219 = phi i32 [ 1, %214 ], [ %217, %215 ]
  %220 = icmp slt i32 %210, %219
  br i1 %220, label %221, label %223

221:                                              ; preds = %218
  %222 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -9, ptr %222, align 4, !tbaa !9
  br label %255

223:                                              ; preds = %218
  %224 = load ptr, ptr %35, align 8, !tbaa !5
  %225 = load i32, ptr %224, align 4, !tbaa !9
  %226 = icmp slt i32 %225, 1
  br i1 %226, label %236, label %227

227:                                              ; preds = %223
  %228 = load i32, ptr %65, align 4, !tbaa !9
  %229 = icmp ne i32 %228, 0
  br i1 %229, label %230, label %238

230:                                              ; preds = %227
  %231 = load ptr, ptr %35, align 8, !tbaa !5
  %232 = load i32, ptr %231, align 4, !tbaa !9
  %233 = load ptr, ptr %26, align 8, !tbaa !5
  %234 = load i32, ptr %233, align 4, !tbaa !9
  %235 = icmp slt i32 %232, %234
  br i1 %235, label %236, label %238

236:                                              ; preds = %230, %223
  %237 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -14, ptr %237, align 4, !tbaa !9
  br label %254

238:                                              ; preds = %230, %227
  %239 = load ptr, ptr %37, align 8, !tbaa !5
  %240 = load i32, ptr %239, align 4, !tbaa !9
  %241 = icmp slt i32 %240, 1
  br i1 %241, label %251, label %242

242:                                              ; preds = %238
  %243 = load i32, ptr %66, align 4, !tbaa !9
  %244 = icmp ne i32 %243, 0
  br i1 %244, label %245, label %253

245:                                              ; preds = %242
  %246 = load ptr, ptr %37, align 8, !tbaa !5
  %247 = load i32, ptr %246, align 4, !tbaa !9
  %248 = load ptr, ptr %26, align 8, !tbaa !5
  %249 = load i32, ptr %248, align 4, !tbaa !9
  %250 = icmp slt i32 %247, %249
  br i1 %250, label %251, label %253

251:                                              ; preds = %245, %238
  %252 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -16, ptr %252, align 4, !tbaa !9
  br label %253

253:                                              ; preds = %251, %245, %242
  br label %254

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

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

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

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

258:                                              ; preds = %257, %185
  br label %259

259:                                              ; preds = %258, %176
  br label %260

260:                                              ; preds = %259, %171
  %261 = load ptr, ptr %42, align 8, !tbaa !5
  %262 = load i32, ptr %261, align 4, !tbaa !9
  %263 = icmp eq i32 %262, 0
  br i1 %263, label %264, label %355

264:                                              ; preds = %260
  store i32 1, ptr %51, align 4, !tbaa !9
  %265 = load ptr, ptr %26, align 8, !tbaa !5
  %266 = load i32, ptr %265, align 4, !tbaa !9
  %267 = shl i32 %266, 1
  store i32 %267, ptr %52, align 4, !tbaa !9
  %268 = load i32, ptr %51, align 4, !tbaa !9
  %269 = load i32, ptr %52, align 4, !tbaa !9
  %270 = icmp sge i32 %268, %269
  br i1 %270, label %271, label %273

271:                                              ; preds = %264
  %272 = load i32, ptr %51, align 4, !tbaa !9
  br label %275

273:                                              ; preds = %264
  %274 = load i32, ptr %52, align 4, !tbaa !9
  br label %275

275:                                              ; preds = %273, %271
  %276 = phi i32 [ %272, %271 ], [ %274, %273 ]
  store i32 %276, ptr %76, align 4, !tbaa !9
  store i32 1, ptr %51, align 4, !tbaa !9
  %277 = load ptr, ptr %26, align 8, !tbaa !5
  %278 = load i32, ptr %277, align 4, !tbaa !9
  %279 = load ptr, ptr %26, align 8, !tbaa !5
  %280 = load i32, ptr %279, align 4, !tbaa !9
  %281 = load ptr, ptr %26, align 8, !tbaa !5
  %282 = load ptr, ptr %26, align 8, !tbaa !5
  %283 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %281, ptr noundef @c__1, ptr noundef %282, ptr noundef @c__0, i32 noundef 6, i32 noundef 1)
  %284 = mul nsw i32 %280, %283
  %285 = add nsw i32 %278, %284
  store i32 %285, ptr %52, align 4, !tbaa !9
  %286 = load i32, ptr %51, align 4, !tbaa !9
  %287 = load i32, ptr %52, align 4, !tbaa !9
  %288 = icmp sge i32 %286, %287
  br i1 %288, label %289, label %291

289:                                              ; preds = %275
  %290 = load i32, ptr %51, align 4, !tbaa !9
  br label %293

291:                                              ; preds = %275
  %292 = load i32, ptr %52, align 4, !tbaa !9
  br label %293

293:                                              ; preds = %291, %289
  %294 = phi i32 [ %290, %289 ], [ %292, %291 ]
  store i32 %294, ptr %82, align 4, !tbaa !9
  %295 = load i32, ptr %82, align 4, !tbaa !9
  store i32 %295, ptr %51, align 4, !tbaa !9
  %296 = load ptr, ptr %26, align 8, !tbaa !5
  %297 = load i32, ptr %296, align 4, !tbaa !9
  %298 = load ptr, ptr %26, align 8, !tbaa !5
  %299 = load i32, ptr %298, align 4, !tbaa !9
  %300 = load ptr, ptr %26, align 8, !tbaa !5
  %301 = load ptr, ptr %26, align 8, !tbaa !5
  %302 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.4, ptr noundef %300, ptr noundef @c__1, ptr noundef %301, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  %303 = mul nsw i32 %299, %302
  %304 = add nsw i32 %297, %303
  store i32 %304, ptr %52, align 4, !tbaa !9
  %305 = load i32, ptr %51, align 4, !tbaa !9
  %306 = load i32, ptr %52, align 4, !tbaa !9
  %307 = icmp sge i32 %305, %306
  br i1 %307, label %308, label %310

308:                                              ; preds = %293
  %309 = load i32, ptr %51, align 4, !tbaa !9
  br label %312

310:                                              ; preds = %293
  %311 = load i32, ptr %52, align 4, !tbaa !9
  br label %312

312:                                              ; preds = %310, %308
  %313 = phi i32 [ %309, %308 ], [ %311, %310 ]
  store i32 %313, ptr %82, align 4, !tbaa !9
  %314 = load i32, ptr %65, align 4, !tbaa !9
  %315 = icmp ne i32 %314, 0
  br i1 %315, label %316, label %336

316:                                              ; preds = %312
  %317 = load i32, ptr %82, align 4, !tbaa !9
  store i32 %317, ptr %51, align 4, !tbaa !9
  %318 = load ptr, ptr %26, align 8, !tbaa !5
  %319 = load i32, ptr %318, align 4, !tbaa !9
  %320 = load ptr, ptr %26, align 8, !tbaa !5
  %321 = load i32, ptr %320, align 4, !tbaa !9
  %322 = load ptr, ptr %26, align 8, !tbaa !5
  %323 = load ptr, ptr %26, align 8, !tbaa !5
  %324 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.6, ptr noundef @.str.4, ptr noundef %322, ptr noundef @c__1, ptr noundef %323, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  %325 = mul nsw i32 %321, %324
  %326 = add nsw i32 %319, %325
  store i32 %326, ptr %52, align 4, !tbaa !9
  %327 = load i32, ptr %51, align 4, !tbaa !9
  %328 = load i32, ptr %52, align 4, !tbaa !9
  %329 = icmp sge i32 %327, %328
  br i1 %329, label %330, label %332

330:                                              ; preds = %316
  %331 = load i32, ptr %51, align 4, !tbaa !9
  br label %334

332:                                              ; preds = %316
  %333 = load i32, ptr %52, align 4, !tbaa !9
  br label %334

334:                                              ; preds = %332, %330
  %335 = phi i32 [ %331, %330 ], [ %333, %332 ]
  store i32 %335, ptr %82, align 4, !tbaa !9
  br label %336

336:                                              ; preds = %334, %312
  %337 = load i32, ptr %82, align 4, !tbaa !9
  %338 = sitofp i32 %337 to double
  %339 = load ptr, ptr %38, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.doublecomplex, ptr %339, i64 1
  %341 = getelementptr inbounds %struct.doublecomplex, ptr %340, i32 0, i32 0
  store double %338, ptr %341, align 8, !tbaa !11
  %342 = load ptr, ptr %38, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.doublecomplex, ptr %342, i64 1
  %344 = getelementptr inbounds %struct.doublecomplex, ptr %343, i32 0, i32 1
  store double 0.000000e+00, ptr %344, align 8, !tbaa !14
  %345 = load ptr, ptr %39, align 8, !tbaa !5
  %346 = load i32, ptr %345, align 4, !tbaa !9
  %347 = load i32, ptr %76, align 4, !tbaa !9
  %348 = icmp slt i32 %346, %347
  br i1 %348, label %349, label %354

349:                                              ; preds = %336
  %350 = load i32, ptr %81, align 4, !tbaa !9
  %351 = icmp ne i32 %350, 0
  br i1 %351, label %354, label %352

352:                                              ; preds = %349
  %353 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -18, ptr %353, align 4, !tbaa !9
  br label %354

354:                                              ; preds = %352, %349, %336
  br label %355

355:                                              ; preds = %354, %260
  %356 = load ptr, ptr %42, align 8, !tbaa !5
  %357 = load i32, ptr %356, align 4, !tbaa !9
  %358 = icmp ne i32 %357, 0
  br i1 %358, label %359, label %364

359:                                              ; preds = %355
  %360 = load ptr, ptr %42, align 8, !tbaa !5
  %361 = load i32, ptr %360, align 4, !tbaa !9
  %362 = sub nsw i32 0, %361
  store i32 %362, ptr %51, align 4, !tbaa !9
  %363 = call i32 @xerbla_(ptr noundef @.str.7, ptr noundef %51, i32 noundef 6)
  store i32 1, ptr %87, align 4
  br label %944

364:                                              ; preds = %355
  %365 = load i32, ptr %81, align 4, !tbaa !9
  %366 = icmp ne i32 %365, 0
  br i1 %366, label %367, label %368

367:                                              ; preds = %364
  store i32 1, ptr %87, align 4
  br label %944

368:                                              ; preds = %364
  br label %369

369:                                              ; preds = %368
  %370 = load ptr, ptr %26, align 8, !tbaa !5
  %371 = load i32, ptr %370, align 4, !tbaa !9
  %372 = icmp eq i32 %371, 0
  br i1 %372, label %373, label %375

373:                                              ; preds = %369
  %374 = load ptr, ptr %31, align 8, !tbaa !5
  store i32 0, ptr %374, align 4, !tbaa !9
  store i32 1, ptr %87, align 4
  br label %944

375:                                              ; preds = %369
  %376 = call double @dlamch_(ptr noundef @.str.8)
  store double %376, ptr %86, align 8, !tbaa !15
  %377 = call double @dlamch_(ptr noundef @.str.2)
  store double %377, ptr %79, align 8, !tbaa !15
  %378 = load double, ptr %79, align 8, !tbaa !15
  %379 = fdiv double 1.000000e+00, %378
  store double %379, ptr %71, align 8, !tbaa !15
  call void @dlabad_(ptr noundef %79, ptr noundef %71)
  %380 = load double, ptr %79, align 8, !tbaa !15
  %381 = call double @sqrt(double noundef %380) #4
  %382 = load double, ptr %86, align 8, !tbaa !15
  %383 = fdiv double %381, %382
  store double %383, ptr %79, align 8, !tbaa !15
  %384 = load double, ptr %79, align 8, !tbaa !15
  %385 = fdiv double 1.000000e+00, %384
  store double %385, ptr %71, align 8, !tbaa !15
  %386 = load ptr, ptr %26, align 8, !tbaa !5
  %387 = load ptr, ptr %26, align 8, !tbaa !5
  %388 = load ptr, ptr %27, align 8, !tbaa !5
  %389 = load i32, ptr %44, align 4, !tbaa !9
  %390 = sext i32 %389 to i64
  %391 = getelementptr inbounds %struct.doublecomplex, ptr %388, i64 %390
  %392 = load ptr, ptr %28, align 8, !tbaa !5
  %393 = load ptr, ptr %40, align 8, !tbaa !5
  %394 = getelementptr inbounds double, ptr %393, i64 1
  %395 = call double @zlange_(ptr noundef @.str.9, ptr noundef %386, ptr noundef %387, ptr noundef %391, ptr noundef %392, ptr noundef %394)
  store double %395, ptr %53, align 8, !tbaa !15
  store i32 0, ptr %69, align 4, !tbaa !9
  %396 = load double, ptr %53, align 8, !tbaa !15
  %397 = fcmp ogt double %396, 0.000000e+00
  br i1 %397, label %398, label %404

398:                                              ; preds = %375
  %399 = load double, ptr %53, align 8, !tbaa !15
  %400 = load double, ptr %79, align 8, !tbaa !15
  %401 = fcmp olt double %399, %400
  br i1 %401, label %402, label %404

402:                                              ; preds = %398
  %403 = load double, ptr %79, align 8, !tbaa !15
  store double %403, ptr %75, align 8, !tbaa !15
  store i32 1, ptr %69, align 4, !tbaa !9
  br label %411

404:                                              ; preds = %398, %375
  %405 = load double, ptr %53, align 8, !tbaa !15
  %406 = load double, ptr %71, align 8, !tbaa !15
  %407 = fcmp ogt double %405, %406
  br i1 %407, label %408, label %410

408:                                              ; preds = %404
  %409 = load double, ptr %71, align 8, !tbaa !15
  store double %409, ptr %75, align 8, !tbaa !15
  store i32 1, ptr %69, align 4, !tbaa !9
  br label %410

410:                                              ; preds = %408, %404
  br label %411

411:                                              ; preds = %410, %402
  %412 = load i32, ptr %69, align 4, !tbaa !9
  %413 = icmp ne i32 %412, 0
  br i1 %413, label %414, label %422

414:                                              ; preds = %411
  %415 = load ptr, ptr %26, align 8, !tbaa !5
  %416 = load ptr, ptr %26, align 8, !tbaa !5
  %417 = load ptr, ptr %27, align 8, !tbaa !5
  %418 = load i32, ptr %44, align 4, !tbaa !9
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds %struct.doublecomplex, ptr %417, i64 %419
  %421 = load ptr, ptr %28, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %53, ptr noundef %75, ptr noundef %415, ptr noundef %416, ptr noundef %420, ptr noundef %421, ptr noundef %56)
  br label %422

422:                                              ; preds = %414, %411
  %423 = load ptr, ptr %26, align 8, !tbaa !5
  %424 = load ptr, ptr %26, align 8, !tbaa !5
  %425 = load ptr, ptr %29, align 8, !tbaa !5
  %426 = load i32, ptr %46, align 4, !tbaa !9
  %427 = sext i32 %426 to i64
  %428 = getelementptr inbounds %struct.doublecomplex, ptr %425, i64 %427
  %429 = load ptr, ptr %30, align 8, !tbaa !5
  %430 = load ptr, ptr %40, align 8, !tbaa !5
  %431 = getelementptr inbounds double, ptr %430, i64 1
  %432 = call double @zlange_(ptr noundef @.str.9, ptr noundef %423, ptr noundef %424, ptr noundef %428, ptr noundef %429, ptr noundef %431)
  store double %432, ptr %54, align 8, !tbaa !15
  store i32 0, ptr %70, align 4, !tbaa !9
  %433 = load double, ptr %54, align 8, !tbaa !15
  %434 = fcmp ogt double %433, 0.000000e+00
  br i1 %434, label %435, label %441

435:                                              ; preds = %422
  %436 = load double, ptr %54, align 8, !tbaa !15
  %437 = load double, ptr %79, align 8, !tbaa !15
  %438 = fcmp olt double %436, %437
  br i1 %438, label %439, label %441

439:                                              ; preds = %435
  %440 = load double, ptr %79, align 8, !tbaa !15
  store double %440, ptr %78, align 8, !tbaa !15
  store i32 1, ptr %70, align 4, !tbaa !9
  br label %448

441:                                              ; preds = %435, %422
  %442 = load double, ptr %54, align 8, !tbaa !15
  %443 = load double, ptr %71, align 8, !tbaa !15
  %444 = fcmp ogt double %442, %443
  br i1 %444, label %445, label %447

445:                                              ; preds = %441
  %446 = load double, ptr %71, align 8, !tbaa !15
  store double %446, ptr %78, align 8, !tbaa !15
  store i32 1, ptr %70, align 4, !tbaa !9
  br label %447

447:                                              ; preds = %445, %441
  br label %448

448:                                              ; preds = %447, %439
  %449 = load i32, ptr %70, align 4, !tbaa !9
  %450 = icmp ne i32 %449, 0
  br i1 %450, label %451, label %459

451:                                              ; preds = %448
  %452 = load ptr, ptr %26, align 8, !tbaa !5
  %453 = load ptr, ptr %26, align 8, !tbaa !5
  %454 = load ptr, ptr %29, align 8, !tbaa !5
  %455 = load i32, ptr %46, align 4, !tbaa !9
  %456 = sext i32 %455 to i64
  %457 = getelementptr inbounds %struct.doublecomplex, ptr %454, i64 %456
  %458 = load ptr, ptr %30, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %54, ptr noundef %78, ptr noundef %452, ptr noundef %453, ptr noundef %457, ptr noundef %458, ptr noundef %56)
  br label %459

459:                                              ; preds = %451, %448
  store i32 1, ptr %62, align 4, !tbaa !9
  %460 = load ptr, ptr %26, align 8, !tbaa !5
  %461 = load i32, ptr %460, align 4, !tbaa !9
  %462 = add nsw i32 %461, 1
  store i32 %462, ptr %73, align 4, !tbaa !9
  %463 = load i32, ptr %73, align 4, !tbaa !9
  %464 = load ptr, ptr %26, align 8, !tbaa !5
  %465 = load i32, ptr %464, align 4, !tbaa !9
  %466 = add nsw i32 %463, %465
  store i32 %466, ptr %67, align 4, !tbaa !9
  %467 = load ptr, ptr %26, align 8, !tbaa !5
  %468 = load ptr, ptr %27, align 8, !tbaa !5
  %469 = load i32, ptr %44, align 4, !tbaa !9
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds %struct.doublecomplex, ptr %468, i64 %470
  %472 = load ptr, ptr %28, align 8, !tbaa !5
  %473 = load ptr, ptr %29, align 8, !tbaa !5
  %474 = load i32, ptr %46, align 4, !tbaa !9
  %475 = sext i32 %474 to i64
  %476 = getelementptr inbounds %struct.doublecomplex, ptr %473, i64 %475
  %477 = load ptr, ptr %30, align 8, !tbaa !5
  %478 = load ptr, ptr %40, align 8, !tbaa !5
  %479 = load i32, ptr %62, align 4, !tbaa !9
  %480 = sext i32 %479 to i64
  %481 = getelementptr inbounds double, ptr %478, i64 %480
  %482 = load ptr, ptr %40, align 8, !tbaa !5
  %483 = load i32, ptr %73, align 4, !tbaa !9
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds double, ptr %482, i64 %484
  %486 = load ptr, ptr %40, align 8, !tbaa !5
  %487 = load i32, ptr %67, align 4, !tbaa !9
  %488 = sext i32 %487 to i64
  %489 = getelementptr inbounds double, ptr %486, i64 %488
  call void @zggbal_(ptr noundef @.str.8, ptr noundef %467, ptr noundef %471, ptr noundef %472, ptr noundef %476, ptr noundef %477, ptr noundef %85, ptr noundef %84, ptr noundef %481, ptr noundef %485, ptr noundef %489, ptr noundef %56)
  %490 = load i32, ptr %84, align 4, !tbaa !9
  %491 = add nsw i32 %490, 1
  %492 = load i32, ptr %85, align 4, !tbaa !9
  %493 = sub nsw i32 %491, %492
  store i32 %493, ptr %68, align 4, !tbaa !9
  %494 = load ptr, ptr %26, align 8, !tbaa !5
  %495 = load i32, ptr %494, align 4, !tbaa !9
  %496 = add nsw i32 %495, 1
  %497 = load i32, ptr %85, align 4, !tbaa !9
  %498 = sub nsw i32 %496, %497
  store i32 %498, ptr %63, align 4, !tbaa !9
  store i32 1, ptr %57, align 4, !tbaa !9
  %499 = load i32, ptr %57, align 4, !tbaa !9
  %500 = load i32, ptr %68, align 4, !tbaa !9
  %501 = add nsw i32 %499, %500
  store i32 %501, ptr %58, align 4, !tbaa !9
  %502 = load ptr, ptr %39, align 8, !tbaa !5
  %503 = load i32, ptr %502, align 4, !tbaa !9
  %504 = add nsw i32 %503, 1
  %505 = load i32, ptr %58, align 4, !tbaa !9
  %506 = sub nsw i32 %504, %505
  store i32 %506, ptr %51, align 4, !tbaa !9
  %507 = load ptr, ptr %29, align 8, !tbaa !5
  %508 = load i32, ptr %85, align 4, !tbaa !9
  %509 = load i32, ptr %85, align 4, !tbaa !9
  %510 = load i32, ptr %45, align 4, !tbaa !9
  %511 = mul nsw i32 %509, %510
  %512 = add nsw i32 %508, %511
  %513 = sext i32 %512 to i64
  %514 = getelementptr inbounds %struct.doublecomplex, ptr %507, i64 %513
  %515 = load ptr, ptr %30, align 8, !tbaa !5
  %516 = load ptr, ptr %38, align 8, !tbaa !5
  %517 = load i32, ptr %57, align 4, !tbaa !9
  %518 = sext i32 %517 to i64
  %519 = getelementptr inbounds %struct.doublecomplex, ptr %516, i64 %518
  %520 = load ptr, ptr %38, align 8, !tbaa !5
  %521 = load i32, ptr %58, align 4, !tbaa !9
  %522 = sext i32 %521 to i64
  %523 = getelementptr inbounds %struct.doublecomplex, ptr %520, i64 %522
  call void @zgeqrf_(ptr noundef %68, ptr noundef %63, ptr noundef %514, ptr noundef %515, ptr noundef %519, ptr noundef %523, ptr noundef %51, ptr noundef %56)
  %524 = load ptr, ptr %39, align 8, !tbaa !5
  %525 = load i32, ptr %524, align 4, !tbaa !9
  %526 = add nsw i32 %525, 1
  %527 = load i32, ptr %58, align 4, !tbaa !9
  %528 = sub nsw i32 %526, %527
  store i32 %528, ptr %51, align 4, !tbaa !9
  %529 = load ptr, ptr %29, align 8, !tbaa !5
  %530 = load i32, ptr %85, align 4, !tbaa !9
  %531 = load i32, ptr %85, align 4, !tbaa !9
  %532 = load i32, ptr %45, align 4, !tbaa !9
  %533 = mul nsw i32 %531, %532
  %534 = add nsw i32 %530, %533
  %535 = sext i32 %534 to i64
  %536 = getelementptr inbounds %struct.doublecomplex, ptr %529, i64 %535
  %537 = load ptr, ptr %30, align 8, !tbaa !5
  %538 = load ptr, ptr %38, align 8, !tbaa !5
  %539 = load i32, ptr %57, align 4, !tbaa !9
  %540 = sext i32 %539 to i64
  %541 = getelementptr inbounds %struct.doublecomplex, ptr %538, i64 %540
  %542 = load ptr, ptr %27, align 8, !tbaa !5
  %543 = load i32, ptr %85, align 4, !tbaa !9
  %544 = load i32, ptr %85, align 4, !tbaa !9
  %545 = load i32, ptr %43, align 4, !tbaa !9
  %546 = mul nsw i32 %544, %545
  %547 = add nsw i32 %543, %546
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds %struct.doublecomplex, ptr %542, i64 %548
  %550 = load ptr, ptr %28, align 8, !tbaa !5
  %551 = load ptr, ptr %38, align 8, !tbaa !5
  %552 = load i32, ptr %58, align 4, !tbaa !9
  %553 = sext i32 %552 to i64
  %554 = getelementptr inbounds %struct.doublecomplex, ptr %551, i64 %553
  call void @zunmqr_(ptr noundef @.str.11, ptr noundef @.str.12, ptr noundef %68, ptr noundef %63, ptr noundef %68, ptr noundef %536, ptr noundef %537, ptr noundef %541, ptr noundef %549, ptr noundef %550, ptr noundef %554, ptr noundef %51, ptr noundef %56)
  %555 = load i32, ptr %65, align 4, !tbaa !9
  %556 = icmp ne i32 %555, 0
  br i1 %556, label %557, label %615

557:                                              ; preds = %459
  %558 = load ptr, ptr %26, align 8, !tbaa !5
  %559 = load ptr, ptr %26, align 8, !tbaa !5
  %560 = load ptr, ptr %34, align 8, !tbaa !5
  %561 = load i32, ptr %48, align 4, !tbaa !9
  %562 = sext i32 %561 to i64
  %563 = getelementptr inbounds %struct.doublecomplex, ptr %560, i64 %562
  %564 = load ptr, ptr %35, align 8, !tbaa !5
  call void @zlaset_(ptr noundef @.str.13, ptr noundef %558, ptr noundef %559, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %563, ptr noundef %564)
  %565 = load i32, ptr %68, align 4, !tbaa !9
  %566 = icmp sgt i32 %565, 1
  br i1 %566, label %567, label %592

567:                                              ; preds = %557
  %568 = load i32, ptr %68, align 4, !tbaa !9
  %569 = sub nsw i32 %568, 1
  store i32 %569, ptr %51, align 4, !tbaa !9
  %570 = load i32, ptr %68, align 4, !tbaa !9
  %571 = sub nsw i32 %570, 1
  store i32 %571, ptr %52, align 4, !tbaa !9
  %572 = load ptr, ptr %29, align 8, !tbaa !5
  %573 = load i32, ptr %85, align 4, !tbaa !9
  %574 = add nsw i32 %573, 1
  %575 = load i32, ptr %85, align 4, !tbaa !9
  %576 = load i32, ptr %45, align 4, !tbaa !9
  %577 = mul nsw i32 %575, %576
  %578 = add nsw i32 %574, %577
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds %struct.doublecomplex, ptr %572, i64 %579
  %581 = load ptr, ptr %30, align 8, !tbaa !5
  %582 = load ptr, ptr %34, align 8, !tbaa !5
  %583 = load i32, ptr %85, align 4, !tbaa !9
  %584 = add nsw i32 %583, 1
  %585 = load i32, ptr %85, align 4, !tbaa !9
  %586 = load i32, ptr %47, align 4, !tbaa !9
  %587 = mul nsw i32 %585, %586
  %588 = add nsw i32 %584, %587
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds %struct.doublecomplex, ptr %582, i64 %589
  %591 = load ptr, ptr %35, align 8, !tbaa !5
  call void @zlacpy_(ptr noundef @.str.11, ptr noundef %51, ptr noundef %52, ptr noundef %580, ptr noundef %581, ptr noundef %590, ptr noundef %591)
  br label %592

592:                                              ; preds = %567, %557
  %593 = load ptr, ptr %39, align 8, !tbaa !5
  %594 = load i32, ptr %593, align 4, !tbaa !9
  %595 = add nsw i32 %594, 1
  %596 = load i32, ptr %58, align 4, !tbaa !9
  %597 = sub nsw i32 %595, %596
  store i32 %597, ptr %51, align 4, !tbaa !9
  %598 = load ptr, ptr %34, align 8, !tbaa !5
  %599 = load i32, ptr %85, align 4, !tbaa !9
  %600 = load i32, ptr %85, align 4, !tbaa !9
  %601 = load i32, ptr %47, align 4, !tbaa !9
  %602 = mul nsw i32 %600, %601
  %603 = add nsw i32 %599, %602
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds %struct.doublecomplex, ptr %598, i64 %604
  %606 = load ptr, ptr %35, align 8, !tbaa !5
  %607 = load ptr, ptr %38, align 8, !tbaa !5
  %608 = load i32, ptr %57, align 4, !tbaa !9
  %609 = sext i32 %608 to i64
  %610 = getelementptr inbounds %struct.doublecomplex, ptr %607, i64 %609
  %611 = load ptr, ptr %38, align 8, !tbaa !5
  %612 = load i32, ptr %58, align 4, !tbaa !9
  %613 = sext i32 %612 to i64
  %614 = getelementptr inbounds %struct.doublecomplex, ptr %611, i64 %613
  call void @zungqr_(ptr noundef %68, ptr noundef %68, ptr noundef %68, ptr noundef %605, ptr noundef %606, ptr noundef %610, ptr noundef %614, ptr noundef %51, ptr noundef %56)
  br label %615

615:                                              ; preds = %592, %459
  %616 = load i32, ptr %66, align 4, !tbaa !9
  %617 = icmp ne i32 %616, 0
  br i1 %617, label %618, label %626

618:                                              ; preds = %615
  %619 = load ptr, ptr %26, align 8, !tbaa !5
  %620 = load ptr, ptr %26, align 8, !tbaa !5
  %621 = load ptr, ptr %36, align 8, !tbaa !5
  %622 = load i32, ptr %50, align 4, !tbaa !9
  %623 = sext i32 %622 to i64
  %624 = getelementptr inbounds %struct.doublecomplex, ptr %621, i64 %623
  %625 = load ptr, ptr %37, align 8, !tbaa !5
  call void @zlaset_(ptr noundef @.str.13, ptr noundef %619, ptr noundef %620, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %624, ptr noundef %625)
  br label %626

626:                                              ; preds = %618, %615
  %627 = load ptr, ptr %22, align 8, !tbaa !5
  %628 = load ptr, ptr %23, align 8, !tbaa !5
  %629 = load ptr, ptr %26, align 8, !tbaa !5
  %630 = load ptr, ptr %27, align 8, !tbaa !5
  %631 = load i32, ptr %44, align 4, !tbaa !9
  %632 = sext i32 %631 to i64
  %633 = getelementptr inbounds %struct.doublecomplex, ptr %630, i64 %632
  %634 = load ptr, ptr %28, align 8, !tbaa !5
  %635 = load ptr, ptr %29, align 8, !tbaa !5
  %636 = load i32, ptr %46, align 4, !tbaa !9
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds %struct.doublecomplex, ptr %635, i64 %637
  %639 = load ptr, ptr %30, align 8, !tbaa !5
  %640 = load ptr, ptr %34, align 8, !tbaa !5
  %641 = load i32, ptr %48, align 4, !tbaa !9
  %642 = sext i32 %641 to i64
  %643 = getelementptr inbounds %struct.doublecomplex, ptr %640, i64 %642
  %644 = load ptr, ptr %35, align 8, !tbaa !5
  %645 = load ptr, ptr %36, align 8, !tbaa !5
  %646 = load i32, ptr %50, align 4, !tbaa !9
  %647 = sext i32 %646 to i64
  %648 = getelementptr inbounds %struct.doublecomplex, ptr %645, i64 %647
  %649 = load ptr, ptr %37, align 8, !tbaa !5
  call void @zgghrd_(ptr noundef %627, ptr noundef %628, ptr noundef %629, ptr noundef %85, ptr noundef %84, ptr noundef %633, ptr noundef %634, ptr noundef %638, ptr noundef %639, ptr noundef %643, ptr noundef %644, ptr noundef %648, ptr noundef %649, ptr noundef %56)
  %650 = load ptr, ptr %31, align 8, !tbaa !5
  store i32 0, ptr %650, align 4, !tbaa !9
  %651 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %651, ptr %58, align 4, !tbaa !9
  %652 = load ptr, ptr %39, align 8, !tbaa !5
  %653 = load i32, ptr %652, align 4, !tbaa !9
  %654 = add nsw i32 %653, 1
  %655 = load i32, ptr %58, align 4, !tbaa !9
  %656 = sub nsw i32 %654, %655
  store i32 %656, ptr %51, align 4, !tbaa !9
  %657 = load ptr, ptr %22, align 8, !tbaa !5
  %658 = load ptr, ptr %23, align 8, !tbaa !5
  %659 = load ptr, ptr %26, align 8, !tbaa !5
  %660 = load ptr, ptr %27, align 8, !tbaa !5
  %661 = load i32, ptr %44, align 4, !tbaa !9
  %662 = sext i32 %661 to i64
  %663 = getelementptr inbounds %struct.doublecomplex, ptr %660, i64 %662
  %664 = load ptr, ptr %28, align 8, !tbaa !5
  %665 = load ptr, ptr %29, align 8, !tbaa !5
  %666 = load i32, ptr %46, align 4, !tbaa !9
  %667 = sext i32 %666 to i64
  %668 = getelementptr inbounds %struct.doublecomplex, ptr %665, i64 %667
  %669 = load ptr, ptr %30, align 8, !tbaa !5
  %670 = load ptr, ptr %32, align 8, !tbaa !5
  %671 = getelementptr inbounds %struct.doublecomplex, ptr %670, i64 1
  %672 = load ptr, ptr %33, align 8, !tbaa !5
  %673 = getelementptr inbounds %struct.doublecomplex, ptr %672, i64 1
  %674 = load ptr, ptr %34, align 8, !tbaa !5
  %675 = load i32, ptr %48, align 4, !tbaa !9
  %676 = sext i32 %675 to i64
  %677 = getelementptr inbounds %struct.doublecomplex, ptr %674, i64 %676
  %678 = load ptr, ptr %35, align 8, !tbaa !5
  %679 = load ptr, ptr %36, align 8, !tbaa !5
  %680 = load i32, ptr %50, align 4, !tbaa !9
  %681 = sext i32 %680 to i64
  %682 = getelementptr inbounds %struct.doublecomplex, ptr %679, i64 %681
  %683 = load ptr, ptr %37, align 8, !tbaa !5
  %684 = load ptr, ptr %38, align 8, !tbaa !5
  %685 = load i32, ptr %58, align 4, !tbaa !9
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds %struct.doublecomplex, ptr %684, i64 %686
  %688 = load ptr, ptr %40, align 8, !tbaa !5
  %689 = load i32, ptr %67, align 4, !tbaa !9
  %690 = sext i32 %689 to i64
  %691 = getelementptr inbounds double, ptr %688, i64 %690
  call void @zhgeqz_(ptr noundef @.str.2, ptr noundef %657, ptr noundef %658, ptr noundef %659, ptr noundef %85, ptr noundef %84, ptr noundef %663, ptr noundef %664, ptr noundef %668, ptr noundef %669, ptr noundef %671, ptr noundef %673, ptr noundef %677, ptr noundef %678, ptr noundef %682, ptr noundef %683, ptr noundef %687, ptr noundef %51, ptr noundef %691, ptr noundef %56)
  %692 = load i32, ptr %56, align 4, !tbaa !9
  %693 = icmp ne i32 %692, 0
  br i1 %693, label %694, label %729

694:                                              ; preds = %626
  %695 = load i32, ptr %56, align 4, !tbaa !9
  %696 = icmp sgt i32 %695, 0
  br i1 %696, label %697, label %705

697:                                              ; preds = %694
  %698 = load i32, ptr %56, align 4, !tbaa !9
  %699 = load ptr, ptr %26, align 8, !tbaa !5
  %700 = load i32, ptr %699, align 4, !tbaa !9
  %701 = icmp sle i32 %698, %700
  br i1 %701, label %702, label %705

702:                                              ; preds = %697
  %703 = load i32, ptr %56, align 4, !tbaa !9
  %704 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %703, ptr %704, align 4, !tbaa !9
  br label %728

705:                                              ; preds = %697, %694
  %706 = load i32, ptr %56, align 4, !tbaa !9
  %707 = load ptr, ptr %26, align 8, !tbaa !5
  %708 = load i32, ptr %707, align 4, !tbaa !9
  %709 = icmp sgt i32 %706, %708
  br i1 %709, label %710, label %722

710:                                              ; preds = %705
  %711 = load i32, ptr %56, align 4, !tbaa !9
  %712 = load ptr, ptr %26, align 8, !tbaa !5
  %713 = load i32, ptr %712, align 4, !tbaa !9
  %714 = shl i32 %713, 1
  %715 = icmp sle i32 %711, %714
  br i1 %715, label %716, label %722

716:                                              ; preds = %710
  %717 = load i32, ptr %56, align 4, !tbaa !9
  %718 = load ptr, ptr %26, align 8, !tbaa !5
  %719 = load i32, ptr %718, align 4, !tbaa !9
  %720 = sub nsw i32 %717, %719
  %721 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %720, ptr %721, align 4, !tbaa !9
  br label %727

722:                                              ; preds = %710, %705
  %723 = load ptr, ptr %26, align 8, !tbaa !5
  %724 = load i32, ptr %723, align 4, !tbaa !9
  %725 = add nsw i32 %724, 1
  %726 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %725, ptr %726, align 4, !tbaa !9
  br label %727

727:                                              ; preds = %722, %716
  br label %728

728:                                              ; preds = %727, %702
  br label %935

729:                                              ; preds = %626
  %730 = load i32, ptr %80, align 4, !tbaa !9
  %731 = icmp ne i32 %730, 0
  br i1 %731, label %732, label %821

732:                                              ; preds = %729
  %733 = load i32, ptr %69, align 4, !tbaa !9
  %734 = icmp ne i32 %733, 0
  br i1 %734, label %735, label %740

735:                                              ; preds = %732
  %736 = load ptr, ptr %26, align 8, !tbaa !5
  %737 = load ptr, ptr %32, align 8, !tbaa !5
  %738 = getelementptr inbounds %struct.doublecomplex, ptr %737, i64 1
  %739 = load ptr, ptr %26, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %53, ptr noundef %75, ptr noundef %736, ptr noundef @c__1, ptr noundef %738, ptr noundef %739, ptr noundef %56)
  br label %740

740:                                              ; preds = %735, %732
  %741 = load i32, ptr %70, align 4, !tbaa !9
  %742 = icmp ne i32 %741, 0
  br i1 %742, label %743, label %748

743:                                              ; preds = %740
  %744 = load ptr, ptr %26, align 8, !tbaa !5
  %745 = load ptr, ptr %33, align 8, !tbaa !5
  %746 = getelementptr inbounds %struct.doublecomplex, ptr %745, i64 1
  %747 = load ptr, ptr %26, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %54, ptr noundef %78, ptr noundef %744, ptr noundef @c__1, ptr noundef %746, ptr noundef %747, ptr noundef %56)
  br label %748

748:                                              ; preds = %743, %740
  %749 = load ptr, ptr %26, align 8, !tbaa !5
  %750 = load i32, ptr %749, align 4, !tbaa !9
  store i32 %750, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %61, align 4, !tbaa !9
  br label %751

751:                                              ; preds = %770, %748
  %752 = load i32, ptr %61, align 4, !tbaa !9
  %753 = load i32, ptr %51, align 4, !tbaa !9
  %754 = icmp sle i32 %752, %753
  br i1 %754, label %755, label %773

755:                                              ; preds = %751
  %756 = load ptr, ptr %25, align 8, !tbaa !5
  %757 = load ptr, ptr %32, align 8, !tbaa !5
  %758 = load i32, ptr %61, align 4, !tbaa !9
  %759 = sext i32 %758 to i64
  %760 = getelementptr inbounds %struct.doublecomplex, ptr %757, i64 %759
  %761 = load ptr, ptr %33, align 8, !tbaa !5
  %762 = load i32, ptr %61, align 4, !tbaa !9
  %763 = sext i32 %762 to i64
  %764 = getelementptr inbounds %struct.doublecomplex, ptr %761, i64 %763
  %765 = call i32 (ptr, ptr, ...) %756(ptr noundef %760, ptr noundef %764)
  %766 = load ptr, ptr %41, align 8, !tbaa !5
  %767 = load i32, ptr %61, align 4, !tbaa !9
  %768 = sext i32 %767 to i64
  %769 = getelementptr inbounds i32, ptr %766, i64 %768
  store i32 %765, ptr %769, align 4, !tbaa !9
  br label %770

770:                                              ; preds = %755
  %771 = load i32, ptr %61, align 4, !tbaa !9
  %772 = add nsw i32 %771, 1
  store i32 %772, ptr %61, align 4, !tbaa !9
  br label %751, !llvm.loop !16

773:                                              ; preds = %751
  %774 = load ptr, ptr %39, align 8, !tbaa !5
  %775 = load i32, ptr %774, align 4, !tbaa !9
  %776 = load i32, ptr %58, align 4, !tbaa !9
  %777 = sub nsw i32 %775, %776
  %778 = add nsw i32 %777, 1
  store i32 %778, ptr %51, align 4, !tbaa !9
  %779 = load ptr, ptr %41, align 8, !tbaa !5
  %780 = getelementptr inbounds i32, ptr %779, i64 1
  %781 = load ptr, ptr %26, align 8, !tbaa !5
  %782 = load ptr, ptr %27, align 8, !tbaa !5
  %783 = load i32, ptr %44, align 4, !tbaa !9
  %784 = sext i32 %783 to i64
  %785 = getelementptr inbounds %struct.doublecomplex, ptr %782, i64 %784
  %786 = load ptr, ptr %28, align 8, !tbaa !5
  %787 = load ptr, ptr %29, align 8, !tbaa !5
  %788 = load i32, ptr %46, align 4, !tbaa !9
  %789 = sext i32 %788 to i64
  %790 = getelementptr inbounds %struct.doublecomplex, ptr %787, i64 %789
  %791 = load ptr, ptr %30, align 8, !tbaa !5
  %792 = load ptr, ptr %32, align 8, !tbaa !5
  %793 = getelementptr inbounds %struct.doublecomplex, ptr %792, i64 1
  %794 = load ptr, ptr %33, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.doublecomplex, ptr %794, i64 1
  %796 = load ptr, ptr %34, align 8, !tbaa !5
  %797 = load i32, ptr %48, align 4, !tbaa !9
  %798 = sext i32 %797 to i64
  %799 = getelementptr inbounds %struct.doublecomplex, ptr %796, i64 %798
  %800 = load ptr, ptr %35, align 8, !tbaa !5
  %801 = load ptr, ptr %36, align 8, !tbaa !5
  %802 = load i32, ptr %50, align 4, !tbaa !9
  %803 = sext i32 %802 to i64
  %804 = getelementptr inbounds %struct.doublecomplex, ptr %801, i64 %803
  %805 = load ptr, ptr %37, align 8, !tbaa !5
  %806 = load ptr, ptr %31, align 8, !tbaa !5
  %807 = getelementptr inbounds [2 x double], ptr %83, i64 0, i64 0
  %808 = load ptr, ptr %38, align 8, !tbaa !5
  %809 = load i32, ptr %58, align 4, !tbaa !9
  %810 = sext i32 %809 to i64
  %811 = getelementptr inbounds %struct.doublecomplex, ptr %808, i64 %810
  %812 = getelementptr inbounds [1 x i32], ptr %55, i64 0, i64 0
  call void @ztgsen_(ptr noundef @c__0, ptr noundef %65, ptr noundef %66, ptr noundef %780, ptr noundef %781, ptr noundef %785, ptr noundef %786, ptr noundef %790, ptr noundef %791, ptr noundef %793, ptr noundef %795, ptr noundef %799, ptr noundef %800, ptr noundef %804, ptr noundef %805, ptr noundef %806, ptr noundef %59, ptr noundef %60, ptr noundef %807, ptr noundef %811, ptr noundef %51, ptr noundef %812, ptr noundef @c__1, ptr noundef %56)
  %813 = load i32, ptr %56, align 4, !tbaa !9
  %814 = icmp eq i32 %813, 1
  br i1 %814, label %815, label %820

815:                                              ; preds = %773
  %816 = load ptr, ptr %26, align 8, !tbaa !5
  %817 = load i32, ptr %816, align 4, !tbaa !9
  %818 = add nsw i32 %817, 3
  %819 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %818, ptr %819, align 4, !tbaa !9
  br label %820

820:                                              ; preds = %815, %773
  br label %821

821:                                              ; preds = %820, %729
  %822 = load i32, ptr %65, align 4, !tbaa !9
  %823 = icmp ne i32 %822, 0
  br i1 %823, label %824, label %840

824:                                              ; preds = %821
  %825 = load ptr, ptr %26, align 8, !tbaa !5
  %826 = load ptr, ptr %40, align 8, !tbaa !5
  %827 = load i32, ptr %62, align 4, !tbaa !9
  %828 = sext i32 %827 to i64
  %829 = getelementptr inbounds double, ptr %826, i64 %828
  %830 = load ptr, ptr %40, align 8, !tbaa !5
  %831 = load i32, ptr %73, align 4, !tbaa !9
  %832 = sext i32 %831 to i64
  %833 = getelementptr inbounds double, ptr %830, i64 %832
  %834 = load ptr, ptr %26, align 8, !tbaa !5
  %835 = load ptr, ptr %34, align 8, !tbaa !5
  %836 = load i32, ptr %48, align 4, !tbaa !9
  %837 = sext i32 %836 to i64
  %838 = getelementptr inbounds %struct.doublecomplex, ptr %835, i64 %837
  %839 = load ptr, ptr %35, align 8, !tbaa !5
  call void @zggbak_(ptr noundef @.str.8, ptr noundef @.str.11, ptr noundef %825, ptr noundef %85, ptr noundef %84, ptr noundef %829, ptr noundef %833, ptr noundef %834, ptr noundef %838, ptr noundef %839, ptr noundef %56)
  br label %840

840:                                              ; preds = %824, %821
  %841 = load i32, ptr %66, align 4, !tbaa !9
  %842 = icmp ne i32 %841, 0
  br i1 %842, label %843, label %859

843:                                              ; preds = %840
  %844 = load ptr, ptr %26, align 8, !tbaa !5
  %845 = load ptr, ptr %40, align 8, !tbaa !5
  %846 = load i32, ptr %62, align 4, !tbaa !9
  %847 = sext i32 %846 to i64
  %848 = getelementptr inbounds double, ptr %845, i64 %847
  %849 = load ptr, ptr %40, align 8, !tbaa !5
  %850 = load i32, ptr %73, align 4, !tbaa !9
  %851 = sext i32 %850 to i64
  %852 = getelementptr inbounds double, ptr %849, i64 %851
  %853 = load ptr, ptr %26, align 8, !tbaa !5
  %854 = load ptr, ptr %36, align 8, !tbaa !5
  %855 = load i32, ptr %50, align 4, !tbaa !9
  %856 = sext i32 %855 to i64
  %857 = getelementptr inbounds %struct.doublecomplex, ptr %854, i64 %856
  %858 = load ptr, ptr %37, align 8, !tbaa !5
  call void @zggbak_(ptr noundef @.str.8, ptr noundef @.str.14, ptr noundef %844, ptr noundef %85, ptr noundef %84, ptr noundef %848, ptr noundef %852, ptr noundef %853, ptr noundef %857, ptr noundef %858, ptr noundef %56)
  br label %859

859:                                              ; preds = %843, %840
  %860 = load i32, ptr %69, align 4, !tbaa !9
  %861 = icmp ne i32 %860, 0
  br i1 %861, label %862, label %874

862:                                              ; preds = %859
  %863 = load ptr, ptr %26, align 8, !tbaa !5
  %864 = load ptr, ptr %26, align 8, !tbaa !5
  %865 = load ptr, ptr %27, align 8, !tbaa !5
  %866 = load i32, ptr %44, align 4, !tbaa !9
  %867 = sext i32 %866 to i64
  %868 = getelementptr inbounds %struct.doublecomplex, ptr %865, i64 %867
  %869 = load ptr, ptr %28, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.15, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %75, ptr noundef %53, ptr noundef %863, ptr noundef %864, ptr noundef %868, ptr noundef %869, ptr noundef %56)
  %870 = load ptr, ptr %26, align 8, !tbaa !5
  %871 = load ptr, ptr %32, align 8, !tbaa !5
  %872 = getelementptr inbounds %struct.doublecomplex, ptr %871, i64 1
  %873 = load ptr, ptr %26, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %75, ptr noundef %53, ptr noundef %870, ptr noundef @c__1, ptr noundef %872, ptr noundef %873, ptr noundef %56)
  br label %874

874:                                              ; preds = %862, %859
  %875 = load i32, ptr %70, align 4, !tbaa !9
  %876 = icmp ne i32 %875, 0
  br i1 %876, label %877, label %889

877:                                              ; preds = %874
  %878 = load ptr, ptr %26, align 8, !tbaa !5
  %879 = load ptr, ptr %26, align 8, !tbaa !5
  %880 = load ptr, ptr %29, align 8, !tbaa !5
  %881 = load i32, ptr %46, align 4, !tbaa !9
  %882 = sext i32 %881 to i64
  %883 = getelementptr inbounds %struct.doublecomplex, ptr %880, i64 %882
  %884 = load ptr, ptr %30, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.15, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %78, ptr noundef %54, ptr noundef %878, ptr noundef %879, ptr noundef %883, ptr noundef %884, ptr noundef %56)
  %885 = load ptr, ptr %26, align 8, !tbaa !5
  %886 = load ptr, ptr %33, align 8, !tbaa !5
  %887 = getelementptr inbounds %struct.doublecomplex, ptr %886, i64 1
  %888 = load ptr, ptr %26, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %78, ptr noundef %54, ptr noundef %885, ptr noundef @c__1, ptr noundef %887, ptr noundef %888, ptr noundef %56)
  br label %889

889:                                              ; preds = %877, %874
  %890 = load i32, ptr %80, align 4, !tbaa !9
  %891 = icmp ne i32 %890, 0
  br i1 %891, label %892, label %934

892:                                              ; preds = %889
  store i32 1, ptr %77, align 4, !tbaa !9
  %893 = load ptr, ptr %31, align 8, !tbaa !5
  store i32 0, ptr %893, align 4, !tbaa !9
  %894 = load ptr, ptr %26, align 8, !tbaa !5
  %895 = load i32, ptr %894, align 4, !tbaa !9
  store i32 %895, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %61, align 4, !tbaa !9
  br label %896

896:                                              ; preds = %930, %892
  %897 = load i32, ptr %61, align 4, !tbaa !9
  %898 = load i32, ptr %51, align 4, !tbaa !9
  %899 = icmp sle i32 %897, %898
  br i1 %899, label %900, label %933

900:                                              ; preds = %896
  %901 = load ptr, ptr %25, align 8, !tbaa !5
  %902 = load ptr, ptr %32, align 8, !tbaa !5
  %903 = load i32, ptr %61, align 4, !tbaa !9
  %904 = sext i32 %903 to i64
  %905 = getelementptr inbounds %struct.doublecomplex, ptr %902, i64 %904
  %906 = load ptr, ptr %33, align 8, !tbaa !5
  %907 = load i32, ptr %61, align 4, !tbaa !9
  %908 = sext i32 %907 to i64
  %909 = getelementptr inbounds %struct.doublecomplex, ptr %906, i64 %908
  %910 = call i32 (ptr, ptr, ...) %901(ptr noundef %905, ptr noundef %909)
  store i32 %910, ptr %64, align 4, !tbaa !9
  %911 = load i32, ptr %64, align 4, !tbaa !9
  %912 = icmp ne i32 %911, 0
  br i1 %912, label %913, label %917

913:                                              ; preds = %900
  %914 = load ptr, ptr %31, align 8, !tbaa !5
  %915 = load i32, ptr %914, align 4, !tbaa !9
  %916 = add nsw i32 %915, 1
  store i32 %916, ptr %914, align 4, !tbaa !9
  br label %917

917:                                              ; preds = %913, %900
  %918 = load i32, ptr %64, align 4, !tbaa !9
  %919 = icmp ne i32 %918, 0
  br i1 %919, label %920, label %928

920:                                              ; preds = %917
  %921 = load i32, ptr %77, align 4, !tbaa !9
  %922 = icmp ne i32 %921, 0
  br i1 %922, label %928, label %923

923:                                              ; preds = %920
  %924 = load ptr, ptr %26, align 8, !tbaa !5
  %925 = load i32, ptr %924, align 4, !tbaa !9
  %926 = add nsw i32 %925, 2
  %927 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %926, ptr %927, align 4, !tbaa !9
  br label %928

928:                                              ; preds = %923, %920, %917
  %929 = load i32, ptr %64, align 4, !tbaa !9
  store i32 %929, ptr %77, align 4, !tbaa !9
  br label %930

930:                                              ; preds = %928
  %931 = load i32, ptr %61, align 4, !tbaa !9
  %932 = add nsw i32 %931, 1
  store i32 %932, ptr %61, align 4, !tbaa !9
  br label %896, !llvm.loop !18

933:                                              ; preds = %896
  br label %934

934:                                              ; preds = %933, %889
  br label %935

935:                                              ; preds = %934, %728
  %936 = load i32, ptr %82, align 4, !tbaa !9
  %937 = sitofp i32 %936 to double
  %938 = load ptr, ptr %38, align 8, !tbaa !5
  %939 = getelementptr inbounds %struct.doublecomplex, ptr %938, i64 1
  %940 = getelementptr inbounds %struct.doublecomplex, ptr %939, i32 0, i32 0
  store double %937, ptr %940, align 8, !tbaa !11
  %941 = load ptr, ptr %38, align 8, !tbaa !5
  %942 = getelementptr inbounds %struct.doublecomplex, ptr %941, i64 1
  %943 = getelementptr inbounds %struct.doublecomplex, ptr %942, i32 0, i32 1
  store double 0.000000e+00, ptr %943, align 8, !tbaa !14
  store i32 1, ptr %87, align 4
  br label %944

944:                                              ; preds = %935, %373, %367, %359
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  ret void
}

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

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !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 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.doublecomplex = type { double, double }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@.str.3 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i32, align 4
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 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
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = 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.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1

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

56:                                               ; preds = %21
  store i32 0, ptr %31, align 4, !tbaa !5
  br label %61

57:                                               ; preds = %21
  %58 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not340 = icmp eq i32 %58, 0
  br i1 %.not340, label %60, label %59

59:                                               ; preds = %57
  store i32 1, ptr %31, align 4, !tbaa !5
  br label %61

60:                                               ; preds = %57
  store i32 0, ptr %31, align 4, !tbaa !5
  br label %61

61:                                               ; preds = %59, %60, %56
  %.not345 = phi i1 [ false, %56 ], [ true, %59 ], [ false, %60 ]
  %.not349 = phi i1 [ true, %56 ], [ false, %59 ], [ true, %60 ]
  %62 = phi i1 [ false, %56 ], [ false, %59 ], [ true, %60 ]
  %63 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #5
  %.not341 = icmp eq i32 %63, 0
  br i1 %.not341, label %65, label %64

64:                                               ; preds = %61
  store i32 0, ptr %32, align 4, !tbaa !5
  br label %69

65:                                               ; preds = %61
  %66 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %.not342 = icmp eq i32 %66, 0
  br i1 %.not342, label %68, label %67

67:                                               ; preds = %65
  store i32 1, ptr %32, align 4, !tbaa !5
  br label %69

68:                                               ; preds = %65
  store i32 0, ptr %32, align 4, !tbaa !5
  br label %69

69:                                               ; preds = %67, %68, %64
  %.not346 = phi i1 [ false, %64 ], [ true, %67 ], [ false, %68 ]
  %.not356 = phi i1 [ true, %64 ], [ false, %67 ], [ true, %68 ]
  %70 = phi i1 [ false, %64 ], [ false, %67 ], [ true, %68 ]
  %71 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #5
  store i32 0, ptr %20, align 4, !tbaa !5
  %72 = load i32, ptr %17, align 4, !tbaa !5
  %73 = icmp eq i32 %72, -1
  %brmerge = or i1 %62, %70
  %.mux = select i1 %62, i32 -1, i32 -2
  br i1 %brmerge, label %.thread373.sink.split, label %74

74:                                               ; preds = %69
  %.not343 = icmp eq i32 %71, 0
  br i1 %.not343, label %75, label %77

75:                                               ; preds = %74
  %76 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str) #5
  %.not344 = icmp eq i32 %76, 0
  br i1 %.not344, label %.thread373.sink.split, label %77

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

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

83:                                               ; preds = %80
  %84 = load i32, ptr %8, align 4, !tbaa !5
  %85 = icmp slt i32 %84, %spec.select
  br i1 %85, label %.thread373.sink.split, label %86

86:                                               ; preds = %83
  %87 = load i32, ptr %13, align 4, !tbaa !5
  %88 = icmp slt i32 %87, 1
  %89 = icmp ult i32 %87, %78
  %or.cond391 = and i1 %89, %.not345
  %or.cond410 = or i1 %88, %or.cond391
  br i1 %or.cond410, label %.thread373.sink.split, label %90

90:                                               ; preds = %86
  %91 = load i32, ptr %15, align 4, !tbaa !5
  %92 = icmp slt i32 %91, 1
  %93 = icmp ult i32 %91, %78
  %or.cond392 = and i1 %93, %.not346
  %or.cond411 = or i1 %92, %or.cond392
  br i1 %or.cond411, label %.thread373.sink.split, label %94

94:                                               ; preds = %90
  %.pr = load i32, ptr %20, align 4, !tbaa !5
  %95 = icmp eq i32 %.pr, 0
  br i1 %95, label %96, label %.thread373

96:                                               ; preds = %94
  %97 = shl nuw i32 %78, 1
  %98 = tail call i32 @llvm.smax.i32(i32 %97, i32 1)
  %99 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef nonnull @c__0, i32 noundef 6, i32 noundef 1) #5
  %100 = add i32 %99, 1
  %101 = mul i32 %100, %78
  %102 = tail call i32 @llvm.smax.i32(i32 %101, i32 1)
  store i32 %102, ptr %22, align 4, !tbaa !5
  %103 = load i32, ptr %4, align 4, !tbaa !5
  %104 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.4, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %105 = add i32 %104, 1
  %106 = mul i32 %105, %103
  store i32 %106, ptr %23, align 4, !tbaa !5
  %107 = tail call i32 @llvm.smax.i32(i32 %102, i32 %106)
  br i1 %.not349, label %114, label %108

108:                                              ; preds = %96
  store i32 %107, ptr %22, align 4, !tbaa !5
  %109 = load i32, ptr %4, align 4, !tbaa !5
  %110 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.4, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %111 = add i32 %110, 1
  %112 = mul i32 %111, %109
  store i32 %112, ptr %23, align 4, !tbaa !5
  %113 = tail call i32 @llvm.smax.i32(i32 %107, i32 %112)
  br label %114

114:                                              ; preds = %108, %96
  %.0 = phi i32 [ %113, %108 ], [ %107, %96 ]
  %115 = uitofp nneg i32 %.0 to double
  store double %115, ptr %16, align 8, !tbaa !9
  %116 = getelementptr inbounds i8, ptr %16, i64 8
  store double 0.000000e+00, ptr %116, align 8, !tbaa !12
  %117 = load i32, ptr %17, align 4, !tbaa !5
  %118 = icmp sge i32 %117, %98
  %or.cond = select i1 %118, i1 true, i1 %73
  br i1 %or.cond, label %.thread, label %.thread373.sink.split

.thread:                                          ; preds = %114
  %.pr370.pr = load i32, ptr %20, align 4, !tbaa !5
  %.not351 = icmp eq i32 %.pr370.pr, 0
  br i1 %.not351, label %122, label %.thread373

.thread373.sink.split:                            ; preds = %69, %114, %90, %86, %83, %80, %77, %75
  %.sink = phi i32 [ %.mux, %69 ], [ -3, %75 ], [ -5, %77 ], [ -7, %80 ], [ -9, %83 ], [ -14, %86 ], [ -16, %90 ], [ -18, %114 ]
  store i32 %.sink, ptr %20, align 4, !tbaa !5
  br label %.thread373

.thread373:                                       ; preds = %.thread373.sink.split, %94, %.thread
  %119 = phi i32 [ %.pr370.pr, %.thread ], [ %.pr, %94 ], [ %.sink, %.thread373.sink.split ]
  %120 = sub nsw i32 0, %119
  store i32 %120, ptr %22, align 4, !tbaa !5
  %121 = call i32 @xerbla_(ptr noundef nonnull @.str.7, ptr noundef nonnull %22, i32 noundef 6) #5
  br label %265

122:                                              ; preds = %.thread
  br i1 %73, label %265, label %123

123:                                              ; preds = %122
  %124 = load i32, ptr %4, align 4, !tbaa !5
  %125 = icmp eq i32 %124, 0
  br i1 %125, label %126, label %127

126:                                              ; preds = %123
  store i32 0, ptr %9, align 4, !tbaa !5
  br label %265

127:                                              ; preds = %123
  %128 = tail call double @dlamch_(ptr noundef nonnull @.str.8) #5
  %129 = tail call double @dlamch_(ptr noundef nonnull @.str.2) #5
  store double %129, ptr %37, align 8, !tbaa !13
  %130 = fdiv double 1.000000e+00, %129
  store double %130, ptr %34, align 8, !tbaa !13
  call void @dlabad_(ptr noundef nonnull %37, ptr noundef nonnull %34) #5
  %131 = load double, ptr %37, align 8, !tbaa !13
  %132 = call double @sqrt(double noundef %131) #5
  %133 = fdiv double %132, %128
  store double %133, ptr %37, align 8, !tbaa !13
  %134 = fdiv double 1.000000e+00, %133
  store double %134, ptr %34, align 8, !tbaa !13
  %135 = call double @zlange_(ptr noundef nonnull @.str.9, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %18) #5
  store double %135, ptr %24, align 8, !tbaa !13
  %136 = fcmp ogt double %135, 0.000000e+00
  %137 = load double, ptr %37, align 8
  %138 = fcmp olt double %135, %137
  %or.cond395 = select i1 %136, i1 %138, i1 false
  br i1 %or.cond395, label %142, label %139

139:                                              ; preds = %127
  %140 = load double, ptr %34, align 8, !tbaa !13
  %141 = fcmp ogt double %135, %140
  br i1 %141, label %142, label %143

142:                                              ; preds = %127, %139
  %storemerge = phi double [ %140, %139 ], [ %137, %127 ]
  store double %storemerge, ptr %35, align 8, !tbaa !13
  call void @zlascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %24, ptr noundef nonnull %35, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %27) #5
  br label %143

143:                                              ; preds = %139, %142
  %.not352380 = phi i1 [ false, %142 ], [ true, %139 ]
  %144 = call double @zlange_(ptr noundef nonnull @.str.9, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %18) #5
  store double %144, ptr %25, align 8, !tbaa !13
  %145 = fcmp ogt double %144, 0.000000e+00
  %146 = load double, ptr %37, align 8
  %147 = fcmp olt double %144, %146
  %or.cond397 = select i1 %145, i1 %147, i1 false
  br i1 %or.cond397, label %151, label %148

148:                                              ; preds = %143
  %149 = load double, ptr %34, align 8, !tbaa !13
  %150 = fcmp ogt double %144, %149
  br i1 %150, label %151, label %152

151:                                              ; preds = %143, %148
  %storemerge393 = phi double [ %149, %148 ], [ %146, %143 ]
  store double %storemerge393, ptr %36, align 8, !tbaa !13
  call void @zlascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %25, ptr noundef nonnull %36, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %27) #5
  br label %152

152:                                              ; preds = %148, %151
  %.not354385 = phi i1 [ false, %151 ], [ true, %148 ]
  %153 = load i32, ptr %4, align 4, !tbaa !5
  %154 = add nsw i32 %153, 1
  %155 = add nsw i32 %154, %153
  %156 = sext i32 %154 to i64
  %157 = getelementptr inbounds double, ptr %53, i64 %156
  %158 = sext i32 %155 to i64
  %159 = getelementptr inbounds double, ptr %53, i64 %158
  call void @zggbal_(ptr noundef nonnull @.str.8, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %40, ptr noundef nonnull %39, ptr noundef %18, ptr noundef nonnull %157, ptr noundef nonnull %159, ptr noundef nonnull %27) #5
  %160 = load i32, ptr %39, align 4, !tbaa !5
  %161 = add nsw i32 %160, 1
  %162 = load i32, ptr %40, align 4, !tbaa !5
  %163 = sub i32 %161, %162
  store i32 %163, ptr %33, align 4, !tbaa !5
  %164 = load i32, ptr %4, align 4, !tbaa !5
  %reass.sub = sub i32 %164, %162
  %165 = add i32 %reass.sub, 1
  store i32 %165, ptr %30, align 4, !tbaa !5
  %166 = load i32, ptr %17, align 4, !tbaa !5
  %167 = sub i32 %166, %163
  store i32 %167, ptr %22, align 4, !tbaa !5
  %168 = add i32 %44, 1
  %169 = mul i32 %162, %168
  %170 = sext i32 %169 to i64
  %171 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %170
  %172 = sext i32 %163 to i64
  %173 = getelementptr %struct.doublecomplex, ptr %52, i64 %172
  %174 = getelementptr i8, ptr %173, i64 16
  call void @zgeqrf_(ptr noundef nonnull %33, ptr noundef nonnull %30, ptr noundef %171, ptr noundef nonnull %8, ptr noundef nonnull %16, ptr noundef nonnull %174, ptr noundef nonnull %22, ptr noundef nonnull %27) #5
  %175 = load i32, ptr %17, align 4, !tbaa !5
  %176 = sub i32 %175, %163
  store i32 %176, ptr %22, align 4, !tbaa !5
  %177 = load i32, ptr %40, align 4, !tbaa !5
  %178 = mul i32 %177, %168
  %179 = sext i32 %178 to i64
  %180 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %179
  %181 = add i32 %41, 1
  %182 = mul i32 %177, %181
  %183 = sext i32 %182 to i64
  %184 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %183
  call void @zunmqr_(ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.12, ptr noundef nonnull %33, ptr noundef nonnull %30, ptr noundef nonnull %33, ptr noundef %180, ptr noundef nonnull %8, ptr noundef nonnull %16, ptr noundef %184, ptr noundef nonnull %6, ptr noundef nonnull %174, ptr noundef nonnull %22, ptr noundef nonnull %27) #5
  br i1 %.not349, label %208, label %185

185:                                              ; preds = %152
  call void @zlaset_(ptr noundef nonnull @.str.13, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b2, ptr noundef %12, ptr noundef nonnull %13) #5
  %186 = load i32, ptr %33, align 4, !tbaa !5
  %187 = icmp sgt i32 %186, 1
  br i1 %187, label %188, label %200

188:                                              ; preds = %185
  %189 = add nsw i32 %186, -1
  store i32 %189, ptr %22, align 4, !tbaa !5
  store i32 %189, ptr %23, align 4, !tbaa !5
  %190 = load i32, ptr %40, align 4, !tbaa !5
  %191 = add nsw i32 %190, 1
  %192 = mul nsw i32 %190, %44
  %193 = add nsw i32 %191, %192
  %194 = sext i32 %193 to i64
  %195 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %194
  %196 = mul nsw i32 %190, %49
  %197 = add nsw i32 %191, %196
  %198 = sext i32 %197 to i64
  %199 = getelementptr inbounds %struct.doublecomplex, ptr %51, i64 %198
  call void @zlacpy_(ptr noundef nonnull @.str.11, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef %195, ptr noundef nonnull %8, ptr noundef %199, ptr noundef nonnull %13) #5
  br label %200

200:                                              ; preds = %188, %185
  %201 = load i32, ptr %17, align 4, !tbaa !5
  %202 = sub i32 %201, %163
  store i32 %202, ptr %22, align 4, !tbaa !5
  %203 = load i32, ptr %40, align 4, !tbaa !5
  %204 = add i32 %49, 1
  %205 = mul i32 %203, %204
  %206 = sext i32 %205 to i64
  %207 = getelementptr inbounds %struct.doublecomplex, ptr %51, i64 %206
  call void @zungqr_(ptr noundef nonnull %33, ptr noundef nonnull %33, ptr noundef nonnull %33, ptr noundef %207, ptr noundef nonnull %13, ptr noundef nonnull %16, ptr noundef nonnull %174, ptr noundef nonnull %22, ptr noundef nonnull %27) #5
  br label %208

208:                                              ; preds = %200, %152
  br i1 %.not356, label %210, label %209

209:                                              ; preds = %208
  call void @zlaset_(ptr noundef nonnull @.str.13, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b2, ptr noundef %14, ptr noundef nonnull %15) #5
  br label %210

210:                                              ; preds = %209, %208
  call void @zgghrd_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %4, ptr noundef nonnull %40, ptr noundef nonnull %39, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %27) #5
  store i32 0, ptr %9, align 4, !tbaa !5
  %211 = load i32, ptr %17, align 4, !tbaa !5
  store i32 %211, ptr %22, align 4, !tbaa !5
  call void @zhgeqz_(ptr noundef nonnull @.str.2, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %4, ptr noundef nonnull %40, ptr noundef nonnull %39, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %22, ptr noundef nonnull %159, ptr noundef nonnull %27) #5
  %212 = load i32, ptr %27, align 4, !tbaa !5
  %.not358 = icmp eq i32 %212, 0
  br i1 %.not358, label %222, label %213

213:                                              ; preds = %210
  %214 = icmp slt i32 %212, 1
  %.pre = load i32, ptr %4, align 4, !tbaa !5
  %.not365 = icmp sgt i32 %212, %.pre
  %or.cond412 = select i1 %214, i1 true, i1 %.not365
  br i1 %or.cond412, label %215, label %.loopexit.sink.split

215:                                              ; preds = %213
  %216 = icmp sle i32 %212, %.pre
  %217 = shl i32 %.pre, 1
  %.not366 = icmp sgt i32 %212, %217
  %or.cond368 = or i1 %216, %.not366
  br i1 %or.cond368, label %220, label %218

218:                                              ; preds = %215
  %219 = sub nsw i32 %212, %.pre
  br label %.loopexit.sink.split

220:                                              ; preds = %215
  %221 = add nsw i32 %.pre, 1
  br label %.loopexit.sink.split

222:                                              ; preds = %210
  br i1 %.not343, label %241, label %223

223:                                              ; preds = %222
  br i1 %.not352380, label %225, label %224

224:                                              ; preds = %223
  call void @zlascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %24, ptr noundef nonnull %35, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %10, ptr noundef nonnull %4, ptr noundef nonnull %27) #5
  br label %225

225:                                              ; preds = %224, %223
  br i1 %.not354385, label %227, label %226

226:                                              ; preds = %225
  call void @zlascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %25, ptr noundef nonnull %36, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull %4, ptr noundef nonnull %27) #5
  br label %227

227:                                              ; preds = %226, %225
  %228 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %228, ptr %22, align 4, !tbaa !5
  %.not360398 = icmp slt i32 %228, 1
  br i1 %.not360398, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %227, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 1, %227 ]
  %229 = getelementptr inbounds %struct.doublecomplex, ptr %47, i64 %indvars.iv
  %230 = getelementptr inbounds %struct.doublecomplex, ptr %48, i64 %indvars.iv
  %231 = call i32 (ptr, ptr, ...) %3(ptr noundef nonnull %229, ptr noundef nonnull %230) #5
  %232 = getelementptr inbounds i32, ptr %54, i64 %indvars.iv
  store i32 %231, ptr %232, align 4, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %233 = load i32, ptr %22, align 4, !tbaa !5
  %234 = sext i32 %233 to i64
  %.not360.not = icmp slt i64 %indvars.iv, %234
  br i1 %.not360.not, label %.lr.ph, label %._crit_edge, !llvm.loop !14

._crit_edge:                                      ; preds = %.lr.ph, %227
  %235 = load i32, ptr %17, align 4, !tbaa !5
  store i32 %235, ptr %22, align 4, !tbaa !5
  call void @ztgsen_(ptr noundef nonnull @c__0, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef %19, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %9, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef nonnull %38, ptr noundef nonnull %16, ptr noundef nonnull %22, ptr noundef nonnull %26, ptr noundef nonnull @c__1, ptr noundef nonnull %27) #5
  %236 = load i32, ptr %27, align 4, !tbaa !5
  %237 = icmp eq i32 %236, 1
  br i1 %237, label %238, label %241

238:                                              ; preds = %._crit_edge
  %239 = load i32, ptr %4, align 4, !tbaa !5
  %240 = add nsw i32 %239, 3
  store i32 %240, ptr %20, align 4, !tbaa !5
  br label %241

241:                                              ; preds = %._crit_edge, %238, %222
  %242 = load i32, ptr %31, align 4, !tbaa !5
  %.not361 = icmp eq i32 %242, 0
  br i1 %.not361, label %244, label %243

243:                                              ; preds = %241
  call void @zggbak_(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.11, ptr noundef nonnull %4, ptr noundef nonnull %40, ptr noundef nonnull %39, ptr noundef %18, ptr noundef nonnull %157, ptr noundef nonnull %4, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %27) #5
  br label %244

244:                                              ; preds = %243, %241
  %245 = load i32, ptr %32, align 4, !tbaa !5
  %.not362 = icmp eq i32 %245, 0
  br i1 %.not362, label %247, label %246

246:                                              ; preds = %244
  call void @zggbak_(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.14, ptr noundef nonnull %4, ptr noundef nonnull %40, ptr noundef nonnull %39, ptr noundef %18, ptr noundef nonnull %157, ptr noundef nonnull %4, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %27) #5
  br label %247

247:                                              ; preds = %246, %244
  br i1 %.not352380, label %249, label %248

248:                                              ; preds = %247
  call void @zlascl_(ptr noundef nonnull @.str.15, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %35, ptr noundef nonnull %24, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %27) #5
  call void @zlascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %35, ptr noundef nonnull %24, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %10, ptr noundef nonnull %4, ptr noundef nonnull %27) #5
  br label %249

249:                                              ; preds = %248, %247
  br i1 %.not354385, label %251, label %250

250:                                              ; preds = %249
  call void @zlascl_(ptr noundef nonnull @.str.15, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %36, ptr noundef nonnull %25, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %27) #5
  call void @zlascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %36, ptr noundef nonnull %25, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull %4, ptr noundef nonnull %27) #5
  br label %251

251:                                              ; preds = %250, %249
  br i1 %.not343, label %.loopexit, label %252

252:                                              ; preds = %251
  store i32 0, ptr %9, align 4, !tbaa !5
  %253 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %253, ptr %22, align 4, !tbaa !5
  %.not363400 = icmp slt i32 %253, 1
  br i1 %.not363400, label %.loopexit, label %.lr.ph404

.lr.ph404:                                        ; preds = %252, %.thread386
  %indvars.iv407 = phi i64 [ %indvars.iv.next408, %.thread386 ], [ 1, %252 ]
  %.0318402 = phi i32 [ %256, %.thread386 ], [ 1, %252 ]
  %254 = getelementptr inbounds %struct.doublecomplex, ptr %47, i64 %indvars.iv407
  %255 = getelementptr inbounds %struct.doublecomplex, ptr %48, i64 %indvars.iv407
  %256 = call i32 (ptr, ptr, ...) %3(ptr noundef nonnull %254, ptr noundef nonnull %255) #5
  %.not364 = icmp eq i32 %256, 0
  br i1 %.not364, label %.thread386, label %257

257:                                              ; preds = %.lr.ph404
  %258 = load i32, ptr %9, align 4, !tbaa !5
  %259 = add nsw i32 %258, 1
  store i32 %259, ptr %9, align 4, !tbaa !5
  %.not405 = icmp eq i32 %.0318402, 0
  br i1 %.not405, label %260, label %.thread386

260:                                              ; preds = %257
  %261 = load i32, ptr %4, align 4, !tbaa !5
  %262 = add nsw i32 %261, 2
  store i32 %262, ptr %20, align 4, !tbaa !5
  br label %.thread386

.thread386:                                       ; preds = %.lr.ph404, %260, %257
  %indvars.iv.next408 = add nuw nsw i64 %indvars.iv407, 1
  %263 = load i32, ptr %22, align 4, !tbaa !5
  %264 = sext i32 %263 to i64
  %.not363.not = icmp slt i64 %indvars.iv407, %264
  br i1 %.not363.not, label %.lr.ph404, label %.loopexit, !llvm.loop !16

.loopexit.sink.split:                             ; preds = %213, %218, %220
  %.sink413 = phi i32 [ %221, %220 ], [ %219, %218 ], [ %212, %213 ]
  store i32 %.sink413, ptr %20, align 4, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.thread386, %.loopexit.sink.split, %252, %251
  store double %115, ptr %16, align 8, !tbaa !9
  store double 0.000000e+00, ptr %116, align 8, !tbaa !12
  br label %265

265:                                              ; preds = %122, %.loopexit, %126, %.thread373
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #5
  ret void
}

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

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"", !11, i64 0, !11, i64 8}
!11 = !{!"double", !7, i64 0}
!12 = !{!10, !11, i64 8}
!13 = !{!11, !11, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}


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