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

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

; Function Attrs: nounwind uwtable
define dso_local void @zgges3_(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 %struct.doublecomplex, align 8
  %54 = alloca double, align 8
  %55 = alloca double, align 8
  %56 = alloca [1 x i32], align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca double, align 8
  %61 = alloca double, align 8
  %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 i32, align 4
  %72 = alloca double, align 8
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca double, align 8
  %77 = alloca double, align 8
  %78 = alloca i32, align 4
  %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 16, ptr %53) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.start.p0(i64 8, 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 4, ptr %59) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.start.p0(i64 8, 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 4, ptr %71) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.start.p0(i64 4, 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 %73, align 4, !tbaa !9
  store i32 0, ptr %66, 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 %73, align 4, !tbaa !9
  store i32 1, ptr %66, align 4, !tbaa !9
  br label %148

147:                                              ; preds = %142
  store i32 -1, ptr %73, align 4, !tbaa !9
  store i32 0, ptr %66, 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 %75, align 4, !tbaa !9
  store i32 0, ptr %67, 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 %75, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %160

159:                                              ; preds = %154
  store i32 -1, ptr %75, align 4, !tbaa !9
  store i32 0, ptr %67, 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 %73, 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 %282

173:                                              ; preds = %161
  %174 = load i32, ptr %75, 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 %281

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 %280

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 %279

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 %278

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 %277

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 %66, 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 %276

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 %67, 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 %275

253:                                              ; preds = %245, %242
  store i32 1, ptr %51, align 4, !tbaa !9
  %254 = load ptr, ptr %26, align 8, !tbaa !5
  %255 = load i32, ptr %254, align 4, !tbaa !9
  %256 = shl i32 %255, 1
  store i32 %256, ptr %52, align 4, !tbaa !9
  %257 = load ptr, ptr %39, align 8, !tbaa !5
  %258 = load i32, ptr %257, align 4, !tbaa !9
  %259 = load i32, ptr %51, align 4, !tbaa !9
  %260 = load i32, ptr %52, align 4, !tbaa !9
  %261 = icmp sge i32 %259, %260
  br i1 %261, label %262, label %264

262:                                              ; preds = %253
  %263 = load i32, ptr %51, align 4, !tbaa !9
  br label %266

264:                                              ; preds = %253
  %265 = load i32, ptr %52, align 4, !tbaa !9
  br label %266

266:                                              ; preds = %264, %262
  %267 = phi i32 [ %263, %262 ], [ %265, %264 ]
  %268 = icmp slt i32 %258, %267
  br i1 %268, label %269, label %274

269:                                              ; preds = %266
  %270 = load i32, ptr %81, align 4, !tbaa !9
  %271 = icmp ne i32 %270, 0
  br i1 %271, label %274, label %272

272:                                              ; preds = %269
  %273 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -18, ptr %273, align 4, !tbaa !9
  br label %274

274:                                              ; preds = %272, %269, %266
  br label %275

275:                                              ; preds = %274, %251
  br label %276

276:                                              ; preds = %275, %236
  br label %277

277:                                              ; preds = %276, %221
  br label %278

278:                                              ; preds = %277, %206
  br label %279

279:                                              ; preds = %278, %191
  br label %280

280:                                              ; preds = %279, %185
  br label %281

281:                                              ; preds = %280, %176
  br label %282

282:                                              ; preds = %281, %171
  %283 = load ptr, ptr %42, align 8, !tbaa !5
  %284 = load i32, ptr %283, align 4, !tbaa !9
  %285 = icmp eq i32 %284, 0
  br i1 %285, label %286, label %540

286:                                              ; preds = %282
  %287 = load ptr, ptr %26, align 8, !tbaa !5
  %288 = load ptr, ptr %26, align 8, !tbaa !5
  %289 = load ptr, ptr %29, align 8, !tbaa !5
  %290 = load i32, ptr %46, align 4, !tbaa !9
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds %struct.doublecomplex, ptr %289, i64 %291
  %293 = load ptr, ptr %30, align 8, !tbaa !5
  %294 = load ptr, ptr %38, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.doublecomplex, ptr %294, i64 1
  %296 = load ptr, ptr %38, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.doublecomplex, ptr %296, i64 1
  call void @zgeqrf_(ptr noundef %287, ptr noundef %288, ptr noundef %292, ptr noundef %293, ptr noundef %295, ptr noundef %297, ptr noundef @c_n1, ptr noundef %57)
  store i32 1, ptr %51, 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 %38, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.doublecomplex, ptr %300, i64 1
  %302 = getelementptr inbounds %struct.doublecomplex, ptr %301, i32 0, i32 0
  %303 = load double, ptr %302, align 8, !tbaa !11
  %304 = fptosi double %303 to i32
  %305 = add nsw i32 %299, %304
  store i32 %305, ptr %52, align 4, !tbaa !9
  %306 = load i32, ptr %51, align 4, !tbaa !9
  %307 = load i32, ptr %52, align 4, !tbaa !9
  %308 = icmp sge i32 %306, %307
  br i1 %308, label %309, label %311

309:                                              ; preds = %286
  %310 = load i32, ptr %51, align 4, !tbaa !9
  br label %313

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

313:                                              ; preds = %311, %309
  %314 = phi i32 [ %310, %309 ], [ %312, %311 ]
  store i32 %314, ptr %82, align 4, !tbaa !9
  %315 = load ptr, ptr %26, align 8, !tbaa !5
  %316 = load ptr, ptr %26, align 8, !tbaa !5
  %317 = load ptr, ptr %26, align 8, !tbaa !5
  %318 = load ptr, ptr %29, align 8, !tbaa !5
  %319 = load i32, ptr %46, align 4, !tbaa !9
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds %struct.doublecomplex, ptr %318, i64 %320
  %322 = load ptr, ptr %30, align 8, !tbaa !5
  %323 = load ptr, ptr %38, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct.doublecomplex, ptr %323, i64 1
  %325 = load ptr, ptr %27, align 8, !tbaa !5
  %326 = load i32, ptr %44, align 4, !tbaa !9
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds %struct.doublecomplex, ptr %325, i64 %327
  %329 = load ptr, ptr %28, align 8, !tbaa !5
  %330 = load ptr, ptr %38, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.doublecomplex, ptr %330, i64 1
  call void @zunmqr_(ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %315, ptr noundef %316, ptr noundef %317, ptr noundef %321, ptr noundef %322, ptr noundef %324, ptr noundef %328, ptr noundef %329, ptr noundef %331, ptr noundef @c_n1, ptr noundef %57)
  %332 = load i32, ptr %82, align 4, !tbaa !9
  store i32 %332, ptr %51, align 4, !tbaa !9
  %333 = load ptr, ptr %26, align 8, !tbaa !5
  %334 = load i32, ptr %333, align 4, !tbaa !9
  %335 = load ptr, ptr %38, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.doublecomplex, ptr %335, i64 1
  %337 = getelementptr inbounds %struct.doublecomplex, ptr %336, i32 0, i32 0
  %338 = load double, ptr %337, align 8, !tbaa !11
  %339 = fptosi double %338 to i32
  %340 = add nsw i32 %334, %339
  store i32 %340, ptr %52, align 4, !tbaa !9
  %341 = load i32, ptr %51, align 4, !tbaa !9
  %342 = load i32, ptr %52, align 4, !tbaa !9
  %343 = icmp sge i32 %341, %342
  br i1 %343, label %344, label %346

344:                                              ; preds = %313
  %345 = load i32, ptr %51, align 4, !tbaa !9
  br label %348

346:                                              ; preds = %313
  %347 = load i32, ptr %52, align 4, !tbaa !9
  br label %348

348:                                              ; preds = %346, %344
  %349 = phi i32 [ %345, %344 ], [ %347, %346 ]
  store i32 %349, ptr %82, align 4, !tbaa !9
  %350 = load i32, ptr %66, align 4, !tbaa !9
  %351 = icmp ne i32 %350, 0
  br i1 %351, label %352, label %383

352:                                              ; preds = %348
  %353 = load ptr, ptr %26, align 8, !tbaa !5
  %354 = load ptr, ptr %26, align 8, !tbaa !5
  %355 = load ptr, ptr %26, align 8, !tbaa !5
  %356 = load ptr, ptr %34, align 8, !tbaa !5
  %357 = load i32, ptr %48, align 4, !tbaa !9
  %358 = sext i32 %357 to i64
  %359 = getelementptr inbounds %struct.doublecomplex, ptr %356, i64 %358
  %360 = load ptr, ptr %35, align 8, !tbaa !5
  %361 = load ptr, ptr %38, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.doublecomplex, ptr %361, i64 1
  %363 = load ptr, ptr %38, align 8, !tbaa !5
  %364 = getelementptr inbounds %struct.doublecomplex, ptr %363, i64 1
  call void @zungqr_(ptr noundef %353, ptr noundef %354, ptr noundef %355, ptr noundef %359, ptr noundef %360, ptr noundef %362, ptr noundef %364, ptr noundef @c_n1, ptr noundef %57)
  %365 = load i32, ptr %82, align 4, !tbaa !9
  store i32 %365, ptr %51, align 4, !tbaa !9
  %366 = load ptr, ptr %26, align 8, !tbaa !5
  %367 = load i32, ptr %366, align 4, !tbaa !9
  %368 = load ptr, ptr %38, align 8, !tbaa !5
  %369 = getelementptr inbounds %struct.doublecomplex, ptr %368, i64 1
  %370 = getelementptr inbounds %struct.doublecomplex, ptr %369, i32 0, i32 0
  %371 = load double, ptr %370, align 8, !tbaa !11
  %372 = fptosi double %371 to i32
  %373 = add nsw i32 %367, %372
  store i32 %373, ptr %52, align 4, !tbaa !9
  %374 = load i32, ptr %51, align 4, !tbaa !9
  %375 = load i32, ptr %52, align 4, !tbaa !9
  %376 = icmp sge i32 %374, %375
  br i1 %376, label %377, label %379

377:                                              ; preds = %352
  %378 = load i32, ptr %51, align 4, !tbaa !9
  br label %381

379:                                              ; preds = %352
  %380 = load i32, ptr %52, align 4, !tbaa !9
  br label %381

381:                                              ; preds = %379, %377
  %382 = phi i32 [ %378, %377 ], [ %380, %379 ]
  store i32 %382, ptr %82, align 4, !tbaa !9
  br label %383

383:                                              ; preds = %381, %348
  %384 = load ptr, ptr %22, align 8, !tbaa !5
  %385 = load ptr, ptr %23, align 8, !tbaa !5
  %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 %29, align 8, !tbaa !5
  %394 = load i32, ptr %46, align 4, !tbaa !9
  %395 = sext i32 %394 to i64
  %396 = getelementptr inbounds %struct.doublecomplex, ptr %393, i64 %395
  %397 = load ptr, ptr %30, align 8, !tbaa !5
  %398 = load ptr, ptr %34, align 8, !tbaa !5
  %399 = load i32, ptr %48, align 4, !tbaa !9
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds %struct.doublecomplex, ptr %398, i64 %400
  %402 = load ptr, ptr %35, align 8, !tbaa !5
  %403 = load ptr, ptr %36, align 8, !tbaa !5
  %404 = load i32, ptr %50, align 4, !tbaa !9
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds %struct.doublecomplex, ptr %403, i64 %405
  %407 = load ptr, ptr %37, align 8, !tbaa !5
  %408 = load ptr, ptr %38, align 8, !tbaa !5
  %409 = getelementptr inbounds %struct.doublecomplex, ptr %408, i64 1
  call void @zgghd3_(ptr noundef %384, ptr noundef %385, ptr noundef %386, ptr noundef @c__1, ptr noundef %387, ptr noundef %391, ptr noundef %392, ptr noundef %396, ptr noundef %397, ptr noundef %401, ptr noundef %402, ptr noundef %406, ptr noundef %407, ptr noundef %409, ptr noundef @c_n1, ptr noundef %57)
  %410 = load i32, ptr %82, align 4, !tbaa !9
  store i32 %410, ptr %51, align 4, !tbaa !9
  %411 = load ptr, ptr %26, align 8, !tbaa !5
  %412 = load i32, ptr %411, align 4, !tbaa !9
  %413 = load ptr, ptr %38, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct.doublecomplex, ptr %413, i64 1
  %415 = getelementptr inbounds %struct.doublecomplex, ptr %414, i32 0, i32 0
  %416 = load double, ptr %415, align 8, !tbaa !11
  %417 = fptosi double %416 to i32
  %418 = add nsw i32 %412, %417
  store i32 %418, ptr %52, align 4, !tbaa !9
  %419 = load i32, ptr %51, align 4, !tbaa !9
  %420 = load i32, ptr %52, align 4, !tbaa !9
  %421 = icmp sge i32 %419, %420
  br i1 %421, label %422, label %424

422:                                              ; preds = %383
  %423 = load i32, ptr %51, align 4, !tbaa !9
  br label %426

424:                                              ; preds = %383
  %425 = load i32, ptr %52, align 4, !tbaa !9
  br label %426

426:                                              ; preds = %424, %422
  %427 = phi i32 [ %423, %422 ], [ %425, %424 ]
  store i32 %427, ptr %82, align 4, !tbaa !9
  %428 = load ptr, ptr %22, align 8, !tbaa !5
  %429 = load ptr, ptr %23, align 8, !tbaa !5
  %430 = load ptr, ptr %26, align 8, !tbaa !5
  %431 = load ptr, ptr %26, align 8, !tbaa !5
  %432 = load ptr, ptr %27, align 8, !tbaa !5
  %433 = load i32, ptr %44, align 4, !tbaa !9
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds %struct.doublecomplex, ptr %432, i64 %434
  %436 = load ptr, ptr %28, align 8, !tbaa !5
  %437 = load ptr, ptr %29, align 8, !tbaa !5
  %438 = load i32, ptr %46, align 4, !tbaa !9
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds %struct.doublecomplex, ptr %437, i64 %439
  %441 = load ptr, ptr %30, align 8, !tbaa !5
  %442 = load ptr, ptr %32, align 8, !tbaa !5
  %443 = getelementptr inbounds %struct.doublecomplex, ptr %442, i64 1
  %444 = load ptr, ptr %33, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.doublecomplex, ptr %444, i64 1
  %446 = load ptr, ptr %34, align 8, !tbaa !5
  %447 = load i32, ptr %48, align 4, !tbaa !9
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds %struct.doublecomplex, ptr %446, i64 %448
  %450 = load ptr, ptr %35, align 8, !tbaa !5
  %451 = load ptr, ptr %36, align 8, !tbaa !5
  %452 = load i32, ptr %50, align 4, !tbaa !9
  %453 = sext i32 %452 to i64
  %454 = getelementptr inbounds %struct.doublecomplex, ptr %451, i64 %453
  %455 = load ptr, ptr %37, align 8, !tbaa !5
  %456 = load ptr, ptr %38, align 8, !tbaa !5
  %457 = getelementptr inbounds %struct.doublecomplex, ptr %456, i64 1
  %458 = load ptr, ptr %40, align 8, !tbaa !5
  %459 = getelementptr inbounds double, ptr %458, i64 1
  call void @zhgeqz_(ptr noundef @.str.2, ptr noundef %428, ptr noundef %429, ptr noundef %430, ptr noundef @c__1, ptr noundef %431, ptr noundef %435, ptr noundef %436, ptr noundef %440, ptr noundef %441, ptr noundef %443, ptr noundef %445, ptr noundef %449, ptr noundef %450, ptr noundef %454, ptr noundef %455, ptr noundef %457, ptr noundef @c_n1, ptr noundef %459, ptr noundef %57)
  %460 = load i32, ptr %82, align 4, !tbaa !9
  store i32 %460, ptr %51, align 4, !tbaa !9
  %461 = load ptr, ptr %38, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.doublecomplex, ptr %461, i64 1
  %463 = getelementptr inbounds %struct.doublecomplex, ptr %462, i32 0, i32 0
  %464 = load double, ptr %463, align 8, !tbaa !11
  %465 = fptosi double %464 to i32
  store i32 %465, ptr %52, align 4, !tbaa !9
  %466 = load i32, ptr %51, align 4, !tbaa !9
  %467 = load i32, ptr %52, align 4, !tbaa !9
  %468 = icmp sge i32 %466, %467
  br i1 %468, label %469, label %471

469:                                              ; preds = %426
  %470 = load i32, ptr %51, align 4, !tbaa !9
  br label %473

471:                                              ; preds = %426
  %472 = load i32, ptr %52, align 4, !tbaa !9
  br label %473

473:                                              ; preds = %471, %469
  %474 = phi i32 [ %470, %469 ], [ %472, %471 ]
  store i32 %474, ptr %82, align 4, !tbaa !9
  %475 = load i32, ptr %80, align 4, !tbaa !9
  %476 = icmp ne i32 %475, 0
  br i1 %476, label %477, label %525

477:                                              ; preds = %473
  %478 = load ptr, ptr %41, align 8, !tbaa !5
  %479 = getelementptr inbounds i32, ptr %478, i64 1
  %480 = load ptr, ptr %26, align 8, !tbaa !5
  %481 = load ptr, ptr %27, align 8, !tbaa !5
  %482 = load i32, ptr %44, align 4, !tbaa !9
  %483 = sext i32 %482 to i64
  %484 = getelementptr inbounds %struct.doublecomplex, ptr %481, i64 %483
  %485 = load ptr, ptr %28, align 8, !tbaa !5
  %486 = load ptr, ptr %29, align 8, !tbaa !5
  %487 = load i32, ptr %46, align 4, !tbaa !9
  %488 = sext i32 %487 to i64
  %489 = getelementptr inbounds %struct.doublecomplex, ptr %486, i64 %488
  %490 = load ptr, ptr %30, align 8, !tbaa !5
  %491 = load ptr, ptr %32, align 8, !tbaa !5
  %492 = getelementptr inbounds %struct.doublecomplex, ptr %491, i64 1
  %493 = load ptr, ptr %33, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct.doublecomplex, ptr %493, i64 1
  %495 = load ptr, ptr %34, align 8, !tbaa !5
  %496 = load i32, ptr %48, align 4, !tbaa !9
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds %struct.doublecomplex, ptr %495, i64 %497
  %499 = load ptr, ptr %35, align 8, !tbaa !5
  %500 = load ptr, ptr %36, align 8, !tbaa !5
  %501 = load i32, ptr %50, align 4, !tbaa !9
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds %struct.doublecomplex, ptr %500, i64 %502
  %504 = load ptr, ptr %37, align 8, !tbaa !5
  %505 = load ptr, ptr %31, align 8, !tbaa !5
  %506 = getelementptr inbounds [2 x double], ptr %83, i64 0, i64 0
  %507 = load ptr, ptr %38, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.doublecomplex, ptr %507, i64 1
  %509 = getelementptr inbounds [1 x i32], ptr %56, i64 0, i64 0
  call void @ztgsen_(ptr noundef @c__0, ptr noundef %66, ptr noundef %67, ptr noundef %479, ptr noundef %480, ptr noundef %484, ptr noundef %485, ptr noundef %489, ptr noundef %490, ptr noundef %492, ptr noundef %494, ptr noundef %498, ptr noundef %499, ptr noundef %503, ptr noundef %504, ptr noundef %505, ptr noundef %60, ptr noundef %61, ptr noundef %506, ptr noundef %508, ptr noundef @c_n1, ptr noundef %509, ptr noundef @c__1, ptr noundef %57)
  %510 = load i32, ptr %82, align 4, !tbaa !9
  store i32 %510, ptr %51, align 4, !tbaa !9
  %511 = load ptr, ptr %38, align 8, !tbaa !5
  %512 = getelementptr inbounds %struct.doublecomplex, ptr %511, i64 1
  %513 = getelementptr inbounds %struct.doublecomplex, ptr %512, i32 0, i32 0
  %514 = load double, ptr %513, align 8, !tbaa !11
  %515 = fptosi double %514 to i32
  store i32 %515, ptr %52, align 4, !tbaa !9
  %516 = load i32, ptr %51, align 4, !tbaa !9
  %517 = load i32, ptr %52, align 4, !tbaa !9
  %518 = icmp sge i32 %516, %517
  br i1 %518, label %519, label %521

519:                                              ; preds = %477
  %520 = load i32, ptr %51, align 4, !tbaa !9
  br label %523

521:                                              ; preds = %477
  %522 = load i32, ptr %52, align 4, !tbaa !9
  br label %523

523:                                              ; preds = %521, %519
  %524 = phi i32 [ %520, %519 ], [ %522, %521 ]
  store i32 %524, ptr %82, align 4, !tbaa !9
  br label %525

525:                                              ; preds = %523, %473
  %526 = load i32, ptr %82, align 4, !tbaa !9
  %527 = sitofp i32 %526 to double
  %528 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  store double %527, ptr %528, align 8, !tbaa !11
  %529 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  store double 0.000000e+00, ptr %529, align 8, !tbaa !14
  %530 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %531 = load double, ptr %530, align 8, !tbaa !11
  %532 = load ptr, ptr %38, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.doublecomplex, ptr %532, i64 1
  %534 = getelementptr inbounds %struct.doublecomplex, ptr %533, i32 0, i32 0
  store double %531, ptr %534, align 8, !tbaa !11
  %535 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %536 = load double, ptr %535, align 8, !tbaa !14
  %537 = load ptr, ptr %38, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.doublecomplex, ptr %537, i64 1
  %539 = getelementptr inbounds %struct.doublecomplex, ptr %538, i32 0, i32 1
  store double %536, ptr %539, align 8, !tbaa !14
  br label %540

540:                                              ; preds = %525, %282
  %541 = load ptr, ptr %42, align 8, !tbaa !5
  %542 = load i32, ptr %541, align 4, !tbaa !9
  %543 = icmp ne i32 %542, 0
  br i1 %543, label %544, label %549

544:                                              ; preds = %540
  %545 = load ptr, ptr %42, align 8, !tbaa !5
  %546 = load i32, ptr %545, align 4, !tbaa !9
  %547 = sub nsw i32 0, %546
  store i32 %547, ptr %51, align 4, !tbaa !9
  %548 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %51, i32 noundef 6)
  store i32 1, ptr %87, align 4
  br label %1144

549:                                              ; preds = %540
  %550 = load i32, ptr %81, align 4, !tbaa !9
  %551 = icmp ne i32 %550, 0
  br i1 %551, label %552, label %553

552:                                              ; preds = %549
  store i32 1, ptr %87, align 4
  br label %1144

553:                                              ; preds = %549
  br label %554

554:                                              ; preds = %553
  %555 = load ptr, ptr %26, align 8, !tbaa !5
  %556 = load i32, ptr %555, align 4, !tbaa !9
  %557 = icmp eq i32 %556, 0
  br i1 %557, label %558, label %560

558:                                              ; preds = %554
  %559 = load ptr, ptr %31, align 8, !tbaa !5
  store i32 0, ptr %559, align 4, !tbaa !9
  store i32 1, ptr %87, align 4
  br label %1144

560:                                              ; preds = %554
  %561 = call double @dlamch_(ptr noundef @.str.6)
  store double %561, ptr %86, align 8, !tbaa !15
  %562 = call double @dlamch_(ptr noundef @.str.2)
  store double %562, ptr %79, align 8, !tbaa !15
  %563 = load double, ptr %79, align 8, !tbaa !15
  %564 = fdiv double 1.000000e+00, %563
  store double %564, ptr %72, align 8, !tbaa !15
  call void @dlabad_(ptr noundef %79, ptr noundef %72)
  %565 = load double, ptr %79, align 8, !tbaa !15
  %566 = call double @sqrt(double noundef %565) #4
  %567 = load double, ptr %86, align 8, !tbaa !15
  %568 = fdiv double %566, %567
  store double %568, ptr %79, align 8, !tbaa !15
  %569 = load double, ptr %79, align 8, !tbaa !15
  %570 = fdiv double 1.000000e+00, %569
  store double %570, ptr %72, align 8, !tbaa !15
  %571 = load ptr, ptr %26, align 8, !tbaa !5
  %572 = load ptr, ptr %26, align 8, !tbaa !5
  %573 = load ptr, ptr %27, align 8, !tbaa !5
  %574 = load i32, ptr %44, align 4, !tbaa !9
  %575 = sext i32 %574 to i64
  %576 = getelementptr inbounds %struct.doublecomplex, ptr %573, i64 %575
  %577 = load ptr, ptr %28, align 8, !tbaa !5
  %578 = load ptr, ptr %40, align 8, !tbaa !5
  %579 = getelementptr inbounds double, ptr %578, i64 1
  %580 = call double @zlange_(ptr noundef @.str.7, ptr noundef %571, ptr noundef %572, ptr noundef %576, ptr noundef %577, ptr noundef %579)
  store double %580, ptr %54, align 8, !tbaa !15
  store i32 0, ptr %70, align 4, !tbaa !9
  %581 = load double, ptr %54, align 8, !tbaa !15
  %582 = fcmp ogt double %581, 0.000000e+00
  br i1 %582, label %583, label %589

583:                                              ; preds = %560
  %584 = load double, ptr %54, align 8, !tbaa !15
  %585 = load double, ptr %79, align 8, !tbaa !15
  %586 = fcmp olt double %584, %585
  br i1 %586, label %587, label %589

587:                                              ; preds = %583
  %588 = load double, ptr %79, align 8, !tbaa !15
  store double %588, ptr %76, align 8, !tbaa !15
  store i32 1, ptr %70, align 4, !tbaa !9
  br label %596

589:                                              ; preds = %583, %560
  %590 = load double, ptr %54, align 8, !tbaa !15
  %591 = load double, ptr %72, align 8, !tbaa !15
  %592 = fcmp ogt double %590, %591
  br i1 %592, label %593, label %595

593:                                              ; preds = %589
  %594 = load double, ptr %72, align 8, !tbaa !15
  store double %594, ptr %76, align 8, !tbaa !15
  store i32 1, ptr %70, align 4, !tbaa !9
  br label %595

595:                                              ; preds = %593, %589
  br label %596

596:                                              ; preds = %595, %587
  %597 = load i32, ptr %70, align 4, !tbaa !9
  %598 = icmp ne i32 %597, 0
  br i1 %598, label %599, label %607

599:                                              ; preds = %596
  %600 = load ptr, ptr %26, align 8, !tbaa !5
  %601 = load ptr, ptr %26, align 8, !tbaa !5
  %602 = load ptr, ptr %27, align 8, !tbaa !5
  %603 = load i32, ptr %44, align 4, !tbaa !9
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds %struct.doublecomplex, ptr %602, i64 %604
  %606 = load ptr, ptr %28, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.8, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %54, ptr noundef %76, ptr noundef %600, ptr noundef %601, ptr noundef %605, ptr noundef %606, ptr noundef %57)
  br label %607

607:                                              ; preds = %599, %596
  %608 = load ptr, ptr %26, align 8, !tbaa !5
  %609 = load ptr, ptr %26, align 8, !tbaa !5
  %610 = load ptr, ptr %29, align 8, !tbaa !5
  %611 = load i32, ptr %46, align 4, !tbaa !9
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds %struct.doublecomplex, ptr %610, i64 %612
  %614 = load ptr, ptr %30, align 8, !tbaa !5
  %615 = load ptr, ptr %40, align 8, !tbaa !5
  %616 = getelementptr inbounds double, ptr %615, i64 1
  %617 = call double @zlange_(ptr noundef @.str.7, ptr noundef %608, ptr noundef %609, ptr noundef %613, ptr noundef %614, ptr noundef %616)
  store double %617, ptr %55, align 8, !tbaa !15
  store i32 0, ptr %71, align 4, !tbaa !9
  %618 = load double, ptr %55, align 8, !tbaa !15
  %619 = fcmp ogt double %618, 0.000000e+00
  br i1 %619, label %620, label %626

620:                                              ; preds = %607
  %621 = load double, ptr %55, align 8, !tbaa !15
  %622 = load double, ptr %79, align 8, !tbaa !15
  %623 = fcmp olt double %621, %622
  br i1 %623, label %624, label %626

624:                                              ; preds = %620
  %625 = load double, ptr %79, align 8, !tbaa !15
  store double %625, ptr %77, align 8, !tbaa !15
  store i32 1, ptr %71, align 4, !tbaa !9
  br label %633

626:                                              ; preds = %620, %607
  %627 = load double, ptr %55, align 8, !tbaa !15
  %628 = load double, ptr %72, align 8, !tbaa !15
  %629 = fcmp ogt double %627, %628
  br i1 %629, label %630, label %632

630:                                              ; preds = %626
  %631 = load double, ptr %72, align 8, !tbaa !15
  store double %631, ptr %77, align 8, !tbaa !15
  store i32 1, ptr %71, align 4, !tbaa !9
  br label %632

632:                                              ; preds = %630, %626
  br label %633

633:                                              ; preds = %632, %624
  %634 = load i32, ptr %71, align 4, !tbaa !9
  %635 = icmp ne i32 %634, 0
  br i1 %635, label %636, label %644

636:                                              ; preds = %633
  %637 = load ptr, ptr %26, align 8, !tbaa !5
  %638 = load ptr, ptr %26, align 8, !tbaa !5
  %639 = load ptr, ptr %29, align 8, !tbaa !5
  %640 = load i32, ptr %46, align 4, !tbaa !9
  %641 = sext i32 %640 to i64
  %642 = getelementptr inbounds %struct.doublecomplex, ptr %639, i64 %641
  %643 = load ptr, ptr %30, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.8, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %55, ptr noundef %77, ptr noundef %637, ptr noundef %638, ptr noundef %642, ptr noundef %643, ptr noundef %57)
  br label %644

644:                                              ; preds = %636, %633
  store i32 1, ptr %63, align 4, !tbaa !9
  %645 = load ptr, ptr %26, align 8, !tbaa !5
  %646 = load i32, ptr %645, align 4, !tbaa !9
  %647 = add nsw i32 %646, 1
  store i32 %647, ptr %74, align 4, !tbaa !9
  %648 = load i32, ptr %74, align 4, !tbaa !9
  %649 = load ptr, ptr %26, align 8, !tbaa !5
  %650 = load i32, ptr %649, align 4, !tbaa !9
  %651 = add nsw i32 %648, %650
  store i32 %651, ptr %68, align 4, !tbaa !9
  %652 = load ptr, ptr %26, align 8, !tbaa !5
  %653 = load ptr, ptr %27, align 8, !tbaa !5
  %654 = load i32, ptr %44, align 4, !tbaa !9
  %655 = sext i32 %654 to i64
  %656 = getelementptr inbounds %struct.doublecomplex, ptr %653, i64 %655
  %657 = load ptr, ptr %28, align 8, !tbaa !5
  %658 = load ptr, ptr %29, align 8, !tbaa !5
  %659 = load i32, ptr %46, align 4, !tbaa !9
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds %struct.doublecomplex, ptr %658, i64 %660
  %662 = load ptr, ptr %30, align 8, !tbaa !5
  %663 = load ptr, ptr %40, align 8, !tbaa !5
  %664 = load i32, ptr %63, align 4, !tbaa !9
  %665 = sext i32 %664 to i64
  %666 = getelementptr inbounds double, ptr %663, i64 %665
  %667 = load ptr, ptr %40, align 8, !tbaa !5
  %668 = load i32, ptr %74, align 4, !tbaa !9
  %669 = sext i32 %668 to i64
  %670 = getelementptr inbounds double, ptr %667, i64 %669
  %671 = load ptr, ptr %40, align 8, !tbaa !5
  %672 = load i32, ptr %68, align 4, !tbaa !9
  %673 = sext i32 %672 to i64
  %674 = getelementptr inbounds double, ptr %671, i64 %673
  call void @zggbal_(ptr noundef @.str.6, ptr noundef %652, ptr noundef %656, ptr noundef %657, ptr noundef %661, ptr noundef %662, ptr noundef %85, ptr noundef %84, ptr noundef %666, ptr noundef %670, ptr noundef %674, ptr noundef %57)
  %675 = load i32, ptr %84, align 4, !tbaa !9
  %676 = add nsw i32 %675, 1
  %677 = load i32, ptr %85, align 4, !tbaa !9
  %678 = sub nsw i32 %676, %677
  store i32 %678, ptr %69, align 4, !tbaa !9
  %679 = load ptr, ptr %26, align 8, !tbaa !5
  %680 = load i32, ptr %679, align 4, !tbaa !9
  %681 = add nsw i32 %680, 1
  %682 = load i32, ptr %85, align 4, !tbaa !9
  %683 = sub nsw i32 %681, %682
  store i32 %683, ptr %64, align 4, !tbaa !9
  store i32 1, ptr %58, align 4, !tbaa !9
  %684 = load i32, ptr %58, align 4, !tbaa !9
  %685 = load i32, ptr %69, align 4, !tbaa !9
  %686 = add nsw i32 %684, %685
  store i32 %686, ptr %59, align 4, !tbaa !9
  %687 = load ptr, ptr %39, align 8, !tbaa !5
  %688 = load i32, ptr %687, align 4, !tbaa !9
  %689 = add nsw i32 %688, 1
  %690 = load i32, ptr %59, align 4, !tbaa !9
  %691 = sub nsw i32 %689, %690
  store i32 %691, ptr %51, align 4, !tbaa !9
  %692 = load ptr, ptr %29, align 8, !tbaa !5
  %693 = load i32, ptr %85, align 4, !tbaa !9
  %694 = load i32, ptr %85, align 4, !tbaa !9
  %695 = load i32, ptr %45, align 4, !tbaa !9
  %696 = mul nsw i32 %694, %695
  %697 = add nsw i32 %693, %696
  %698 = sext i32 %697 to i64
  %699 = getelementptr inbounds %struct.doublecomplex, ptr %692, i64 %698
  %700 = load ptr, ptr %30, align 8, !tbaa !5
  %701 = load ptr, ptr %38, align 8, !tbaa !5
  %702 = load i32, ptr %58, align 4, !tbaa !9
  %703 = sext i32 %702 to i64
  %704 = getelementptr inbounds %struct.doublecomplex, ptr %701, i64 %703
  %705 = load ptr, ptr %38, align 8, !tbaa !5
  %706 = load i32, ptr %59, align 4, !tbaa !9
  %707 = sext i32 %706 to i64
  %708 = getelementptr inbounds %struct.doublecomplex, ptr %705, i64 %707
  call void @zgeqrf_(ptr noundef %69, ptr noundef %64, ptr noundef %699, ptr noundef %700, ptr noundef %704, ptr noundef %708, ptr noundef %51, ptr noundef %57)
  %709 = load ptr, ptr %39, align 8, !tbaa !5
  %710 = load i32, ptr %709, align 4, !tbaa !9
  %711 = add nsw i32 %710, 1
  %712 = load i32, ptr %59, align 4, !tbaa !9
  %713 = sub nsw i32 %711, %712
  store i32 %713, ptr %51, align 4, !tbaa !9
  %714 = load ptr, ptr %29, align 8, !tbaa !5
  %715 = load i32, ptr %85, align 4, !tbaa !9
  %716 = load i32, ptr %85, align 4, !tbaa !9
  %717 = load i32, ptr %45, align 4, !tbaa !9
  %718 = mul nsw i32 %716, %717
  %719 = add nsw i32 %715, %718
  %720 = sext i32 %719 to i64
  %721 = getelementptr inbounds %struct.doublecomplex, ptr %714, i64 %720
  %722 = load ptr, ptr %30, align 8, !tbaa !5
  %723 = load ptr, ptr %38, align 8, !tbaa !5
  %724 = load i32, ptr %58, align 4, !tbaa !9
  %725 = sext i32 %724 to i64
  %726 = getelementptr inbounds %struct.doublecomplex, ptr %723, i64 %725
  %727 = load ptr, ptr %27, align 8, !tbaa !5
  %728 = load i32, ptr %85, align 4, !tbaa !9
  %729 = load i32, ptr %85, align 4, !tbaa !9
  %730 = load i32, ptr %43, align 4, !tbaa !9
  %731 = mul nsw i32 %729, %730
  %732 = add nsw i32 %728, %731
  %733 = sext i32 %732 to i64
  %734 = getelementptr inbounds %struct.doublecomplex, ptr %727, i64 %733
  %735 = load ptr, ptr %28, align 8, !tbaa !5
  %736 = load ptr, ptr %38, align 8, !tbaa !5
  %737 = load i32, ptr %59, align 4, !tbaa !9
  %738 = sext i32 %737 to i64
  %739 = getelementptr inbounds %struct.doublecomplex, ptr %736, i64 %738
  call void @zunmqr_(ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %69, ptr noundef %64, ptr noundef %69, ptr noundef %721, ptr noundef %722, ptr noundef %726, ptr noundef %734, ptr noundef %735, ptr noundef %739, ptr noundef %51, ptr noundef %57)
  %740 = load i32, ptr %66, align 4, !tbaa !9
  %741 = icmp ne i32 %740, 0
  br i1 %741, label %742, label %800

742:                                              ; preds = %644
  %743 = load ptr, ptr %26, align 8, !tbaa !5
  %744 = load ptr, ptr %26, align 8, !tbaa !5
  %745 = load ptr, ptr %34, align 8, !tbaa !5
  %746 = load i32, ptr %48, align 4, !tbaa !9
  %747 = sext i32 %746 to i64
  %748 = getelementptr inbounds %struct.doublecomplex, ptr %745, i64 %747
  %749 = load ptr, ptr %35, align 8, !tbaa !5
  call void @zlaset_(ptr noundef @.str.9, ptr noundef %743, ptr noundef %744, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %748, ptr noundef %749)
  %750 = load i32, ptr %69, align 4, !tbaa !9
  %751 = icmp sgt i32 %750, 1
  br i1 %751, label %752, label %777

752:                                              ; preds = %742
  %753 = load i32, ptr %69, align 4, !tbaa !9
  %754 = sub nsw i32 %753, 1
  store i32 %754, ptr %51, align 4, !tbaa !9
  %755 = load i32, ptr %69, align 4, !tbaa !9
  %756 = sub nsw i32 %755, 1
  store i32 %756, ptr %52, align 4, !tbaa !9
  %757 = load ptr, ptr %29, align 8, !tbaa !5
  %758 = load i32, ptr %85, align 4, !tbaa !9
  %759 = add nsw i32 %758, 1
  %760 = load i32, ptr %85, align 4, !tbaa !9
  %761 = load i32, ptr %45, align 4, !tbaa !9
  %762 = mul nsw i32 %760, %761
  %763 = add nsw i32 %759, %762
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds %struct.doublecomplex, ptr %757, i64 %764
  %766 = load ptr, ptr %30, align 8, !tbaa !5
  %767 = load ptr, ptr %34, align 8, !tbaa !5
  %768 = load i32, ptr %85, align 4, !tbaa !9
  %769 = add nsw i32 %768, 1
  %770 = load i32, ptr %85, align 4, !tbaa !9
  %771 = load i32, ptr %47, align 4, !tbaa !9
  %772 = mul nsw i32 %770, %771
  %773 = add nsw i32 %769, %772
  %774 = sext i32 %773 to i64
  %775 = getelementptr inbounds %struct.doublecomplex, ptr %767, i64 %774
  %776 = load ptr, ptr %35, align 8, !tbaa !5
  call void @zlacpy_(ptr noundef @.str.3, ptr noundef %51, ptr noundef %52, ptr noundef %765, ptr noundef %766, ptr noundef %775, ptr noundef %776)
  br label %777

777:                                              ; preds = %752, %742
  %778 = load ptr, ptr %39, align 8, !tbaa !5
  %779 = load i32, ptr %778, align 4, !tbaa !9
  %780 = add nsw i32 %779, 1
  %781 = load i32, ptr %59, align 4, !tbaa !9
  %782 = sub nsw i32 %780, %781
  store i32 %782, ptr %51, align 4, !tbaa !9
  %783 = load ptr, ptr %34, align 8, !tbaa !5
  %784 = load i32, ptr %85, align 4, !tbaa !9
  %785 = load i32, ptr %85, align 4, !tbaa !9
  %786 = load i32, ptr %47, align 4, !tbaa !9
  %787 = mul nsw i32 %785, %786
  %788 = add nsw i32 %784, %787
  %789 = sext i32 %788 to i64
  %790 = getelementptr inbounds %struct.doublecomplex, ptr %783, i64 %789
  %791 = load ptr, ptr %35, align 8, !tbaa !5
  %792 = load ptr, ptr %38, align 8, !tbaa !5
  %793 = load i32, ptr %58, align 4, !tbaa !9
  %794 = sext i32 %793 to i64
  %795 = getelementptr inbounds %struct.doublecomplex, ptr %792, i64 %794
  %796 = load ptr, ptr %38, align 8, !tbaa !5
  %797 = load i32, ptr %59, align 4, !tbaa !9
  %798 = sext i32 %797 to i64
  %799 = getelementptr inbounds %struct.doublecomplex, ptr %796, i64 %798
  call void @zungqr_(ptr noundef %69, ptr noundef %69, ptr noundef %69, ptr noundef %790, ptr noundef %791, ptr noundef %795, ptr noundef %799, ptr noundef %51, ptr noundef %57)
  br label %800

800:                                              ; preds = %777, %644
  %801 = load i32, ptr %67, align 4, !tbaa !9
  %802 = icmp ne i32 %801, 0
  br i1 %802, label %803, label %811

803:                                              ; preds = %800
  %804 = load ptr, ptr %26, align 8, !tbaa !5
  %805 = load ptr, ptr %26, align 8, !tbaa !5
  %806 = load ptr, ptr %36, align 8, !tbaa !5
  %807 = load i32, ptr %50, align 4, !tbaa !9
  %808 = sext i32 %807 to i64
  %809 = getelementptr inbounds %struct.doublecomplex, ptr %806, i64 %808
  %810 = load ptr, ptr %37, align 8, !tbaa !5
  call void @zlaset_(ptr noundef @.str.9, ptr noundef %804, ptr noundef %805, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %809, ptr noundef %810)
  br label %811

811:                                              ; preds = %803, %800
  %812 = load ptr, ptr %39, align 8, !tbaa !5
  %813 = load i32, ptr %812, align 4, !tbaa !9
  %814 = add nsw i32 %813, 1
  %815 = load i32, ptr %59, align 4, !tbaa !9
  %816 = sub nsw i32 %814, %815
  store i32 %816, ptr %51, align 4, !tbaa !9
  %817 = load ptr, ptr %22, align 8, !tbaa !5
  %818 = load ptr, ptr %23, align 8, !tbaa !5
  %819 = load ptr, ptr %26, align 8, !tbaa !5
  %820 = load ptr, ptr %27, align 8, !tbaa !5
  %821 = load i32, ptr %44, align 4, !tbaa !9
  %822 = sext i32 %821 to i64
  %823 = getelementptr inbounds %struct.doublecomplex, ptr %820, i64 %822
  %824 = load ptr, ptr %28, align 8, !tbaa !5
  %825 = load ptr, ptr %29, align 8, !tbaa !5
  %826 = load i32, ptr %46, align 4, !tbaa !9
  %827 = sext i32 %826 to i64
  %828 = getelementptr inbounds %struct.doublecomplex, ptr %825, i64 %827
  %829 = load ptr, ptr %30, align 8, !tbaa !5
  %830 = load ptr, ptr %34, align 8, !tbaa !5
  %831 = load i32, ptr %48, align 4, !tbaa !9
  %832 = sext i32 %831 to i64
  %833 = getelementptr inbounds %struct.doublecomplex, ptr %830, i64 %832
  %834 = load ptr, ptr %35, align 8, !tbaa !5
  %835 = load ptr, ptr %36, align 8, !tbaa !5
  %836 = load i32, ptr %50, align 4, !tbaa !9
  %837 = sext i32 %836 to i64
  %838 = getelementptr inbounds %struct.doublecomplex, ptr %835, i64 %837
  %839 = load ptr, ptr %37, align 8, !tbaa !5
  %840 = load ptr, ptr %38, align 8, !tbaa !5
  %841 = load i32, ptr %59, align 4, !tbaa !9
  %842 = sext i32 %841 to i64
  %843 = getelementptr inbounds %struct.doublecomplex, ptr %840, i64 %842
  call void @zgghd3_(ptr noundef %817, ptr noundef %818, ptr noundef %819, ptr noundef %85, ptr noundef %84, ptr noundef %823, ptr noundef %824, ptr noundef %828, ptr noundef %829, ptr noundef %833, ptr noundef %834, ptr noundef %838, ptr noundef %839, ptr noundef %843, ptr noundef %51, ptr noundef %57)
  %844 = load ptr, ptr %31, align 8, !tbaa !5
  store i32 0, ptr %844, align 4, !tbaa !9
  %845 = load i32, ptr %58, align 4, !tbaa !9
  store i32 %845, ptr %59, align 4, !tbaa !9
  %846 = load ptr, ptr %39, align 8, !tbaa !5
  %847 = load i32, ptr %846, align 4, !tbaa !9
  %848 = add nsw i32 %847, 1
  %849 = load i32, ptr %59, align 4, !tbaa !9
  %850 = sub nsw i32 %848, %849
  store i32 %850, ptr %51, align 4, !tbaa !9
  %851 = load ptr, ptr %22, align 8, !tbaa !5
  %852 = load ptr, ptr %23, align 8, !tbaa !5
  %853 = load ptr, ptr %26, align 8, !tbaa !5
  %854 = load ptr, ptr %27, align 8, !tbaa !5
  %855 = load i32, ptr %44, align 4, !tbaa !9
  %856 = sext i32 %855 to i64
  %857 = getelementptr inbounds %struct.doublecomplex, ptr %854, i64 %856
  %858 = load ptr, ptr %28, align 8, !tbaa !5
  %859 = load ptr, ptr %29, align 8, !tbaa !5
  %860 = load i32, ptr %46, align 4, !tbaa !9
  %861 = sext i32 %860 to i64
  %862 = getelementptr inbounds %struct.doublecomplex, ptr %859, i64 %861
  %863 = load ptr, ptr %30, align 8, !tbaa !5
  %864 = load ptr, ptr %32, align 8, !tbaa !5
  %865 = getelementptr inbounds %struct.doublecomplex, ptr %864, i64 1
  %866 = load ptr, ptr %33, align 8, !tbaa !5
  %867 = getelementptr inbounds %struct.doublecomplex, ptr %866, i64 1
  %868 = load ptr, ptr %34, align 8, !tbaa !5
  %869 = load i32, ptr %48, align 4, !tbaa !9
  %870 = sext i32 %869 to i64
  %871 = getelementptr inbounds %struct.doublecomplex, ptr %868, i64 %870
  %872 = load ptr, ptr %35, align 8, !tbaa !5
  %873 = load ptr, ptr %36, align 8, !tbaa !5
  %874 = load i32, ptr %50, align 4, !tbaa !9
  %875 = sext i32 %874 to i64
  %876 = getelementptr inbounds %struct.doublecomplex, ptr %873, i64 %875
  %877 = load ptr, ptr %37, align 8, !tbaa !5
  %878 = load ptr, ptr %38, align 8, !tbaa !5
  %879 = load i32, ptr %59, align 4, !tbaa !9
  %880 = sext i32 %879 to i64
  %881 = getelementptr inbounds %struct.doublecomplex, ptr %878, i64 %880
  %882 = load ptr, ptr %40, align 8, !tbaa !5
  %883 = load i32, ptr %68, align 4, !tbaa !9
  %884 = sext i32 %883 to i64
  %885 = getelementptr inbounds double, ptr %882, i64 %884
  call void @zhgeqz_(ptr noundef @.str.2, ptr noundef %851, ptr noundef %852, ptr noundef %853, ptr noundef %85, ptr noundef %84, ptr noundef %857, ptr noundef %858, ptr noundef %862, ptr noundef %863, ptr noundef %865, ptr noundef %867, ptr noundef %871, ptr noundef %872, ptr noundef %876, ptr noundef %877, ptr noundef %881, ptr noundef %51, ptr noundef %885, ptr noundef %57)
  %886 = load i32, ptr %57, align 4, !tbaa !9
  %887 = icmp ne i32 %886, 0
  br i1 %887, label %888, label %923

888:                                              ; preds = %811
  %889 = load i32, ptr %57, align 4, !tbaa !9
  %890 = icmp sgt i32 %889, 0
  br i1 %890, label %891, label %899

891:                                              ; preds = %888
  %892 = load i32, ptr %57, align 4, !tbaa !9
  %893 = load ptr, ptr %26, align 8, !tbaa !5
  %894 = load i32, ptr %893, align 4, !tbaa !9
  %895 = icmp sle i32 %892, %894
  br i1 %895, label %896, label %899

896:                                              ; preds = %891
  %897 = load i32, ptr %57, align 4, !tbaa !9
  %898 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %897, ptr %898, align 4, !tbaa !9
  br label %922

899:                                              ; preds = %891, %888
  %900 = load i32, ptr %57, align 4, !tbaa !9
  %901 = load ptr, ptr %26, align 8, !tbaa !5
  %902 = load i32, ptr %901, align 4, !tbaa !9
  %903 = icmp sgt i32 %900, %902
  br i1 %903, label %904, label %916

904:                                              ; preds = %899
  %905 = load i32, ptr %57, align 4, !tbaa !9
  %906 = load ptr, ptr %26, align 8, !tbaa !5
  %907 = load i32, ptr %906, align 4, !tbaa !9
  %908 = shl i32 %907, 1
  %909 = icmp sle i32 %905, %908
  br i1 %909, label %910, label %916

910:                                              ; preds = %904
  %911 = load i32, ptr %57, align 4, !tbaa !9
  %912 = load ptr, ptr %26, align 8, !tbaa !5
  %913 = load i32, ptr %912, align 4, !tbaa !9
  %914 = sub nsw i32 %911, %913
  %915 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %914, ptr %915, align 4, !tbaa !9
  br label %921

916:                                              ; preds = %904, %899
  %917 = load ptr, ptr %26, align 8, !tbaa !5
  %918 = load i32, ptr %917, align 4, !tbaa !9
  %919 = add nsw i32 %918, 1
  %920 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %919, ptr %920, align 4, !tbaa !9
  br label %921

921:                                              ; preds = %916, %910
  br label %922

922:                                              ; preds = %921, %896
  br label %1129

923:                                              ; preds = %811
  %924 = load i32, ptr %80, align 4, !tbaa !9
  %925 = icmp ne i32 %924, 0
  br i1 %925, label %926, label %1015

926:                                              ; preds = %923
  %927 = load i32, ptr %70, align 4, !tbaa !9
  %928 = icmp ne i32 %927, 0
  br i1 %928, label %929, label %934

929:                                              ; preds = %926
  %930 = load ptr, ptr %26, align 8, !tbaa !5
  %931 = load ptr, ptr %32, align 8, !tbaa !5
  %932 = getelementptr inbounds %struct.doublecomplex, ptr %931, i64 1
  %933 = load ptr, ptr %26, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.8, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %54, ptr noundef %76, ptr noundef %930, ptr noundef @c__1, ptr noundef %932, ptr noundef %933, ptr noundef %57)
  br label %934

934:                                              ; preds = %929, %926
  %935 = load i32, ptr %71, align 4, !tbaa !9
  %936 = icmp ne i32 %935, 0
  br i1 %936, label %937, label %942

937:                                              ; preds = %934
  %938 = load ptr, ptr %26, align 8, !tbaa !5
  %939 = load ptr, ptr %33, align 8, !tbaa !5
  %940 = getelementptr inbounds %struct.doublecomplex, ptr %939, i64 1
  %941 = load ptr, ptr %26, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.8, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %55, ptr noundef %77, ptr noundef %938, ptr noundef @c__1, ptr noundef %940, ptr noundef %941, ptr noundef %57)
  br label %942

942:                                              ; preds = %937, %934
  %943 = load ptr, ptr %26, align 8, !tbaa !5
  %944 = load i32, ptr %943, align 4, !tbaa !9
  store i32 %944, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %945

945:                                              ; preds = %964, %942
  %946 = load i32, ptr %62, align 4, !tbaa !9
  %947 = load i32, ptr %51, align 4, !tbaa !9
  %948 = icmp sle i32 %946, %947
  br i1 %948, label %949, label %967

949:                                              ; preds = %945
  %950 = load ptr, ptr %25, align 8, !tbaa !5
  %951 = load ptr, ptr %32, align 8, !tbaa !5
  %952 = load i32, ptr %62, align 4, !tbaa !9
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds %struct.doublecomplex, ptr %951, i64 %953
  %955 = load ptr, ptr %33, align 8, !tbaa !5
  %956 = load i32, ptr %62, align 4, !tbaa !9
  %957 = sext i32 %956 to i64
  %958 = getelementptr inbounds %struct.doublecomplex, ptr %955, i64 %957
  %959 = call i32 (ptr, ptr, ...) %950(ptr noundef %954, ptr noundef %958)
  %960 = load ptr, ptr %41, align 8, !tbaa !5
  %961 = load i32, ptr %62, align 4, !tbaa !9
  %962 = sext i32 %961 to i64
  %963 = getelementptr inbounds i32, ptr %960, i64 %962
  store i32 %959, ptr %963, align 4, !tbaa !9
  br label %964

964:                                              ; preds = %949
  %965 = load i32, ptr %62, align 4, !tbaa !9
  %966 = add nsw i32 %965, 1
  store i32 %966, ptr %62, align 4, !tbaa !9
  br label %945, !llvm.loop !16

967:                                              ; preds = %945
  %968 = load ptr, ptr %39, align 8, !tbaa !5
  %969 = load i32, ptr %968, align 4, !tbaa !9
  %970 = load i32, ptr %59, align 4, !tbaa !9
  %971 = sub nsw i32 %969, %970
  %972 = add nsw i32 %971, 1
  store i32 %972, ptr %51, align 4, !tbaa !9
  %973 = load ptr, ptr %41, align 8, !tbaa !5
  %974 = getelementptr inbounds i32, ptr %973, i64 1
  %975 = load ptr, ptr %26, align 8, !tbaa !5
  %976 = load ptr, ptr %27, align 8, !tbaa !5
  %977 = load i32, ptr %44, align 4, !tbaa !9
  %978 = sext i32 %977 to i64
  %979 = getelementptr inbounds %struct.doublecomplex, ptr %976, i64 %978
  %980 = load ptr, ptr %28, align 8, !tbaa !5
  %981 = load ptr, ptr %29, align 8, !tbaa !5
  %982 = load i32, ptr %46, align 4, !tbaa !9
  %983 = sext i32 %982 to i64
  %984 = getelementptr inbounds %struct.doublecomplex, ptr %981, i64 %983
  %985 = load ptr, ptr %30, align 8, !tbaa !5
  %986 = load ptr, ptr %32, align 8, !tbaa !5
  %987 = getelementptr inbounds %struct.doublecomplex, ptr %986, i64 1
  %988 = load ptr, ptr %33, align 8, !tbaa !5
  %989 = getelementptr inbounds %struct.doublecomplex, ptr %988, i64 1
  %990 = load ptr, ptr %34, align 8, !tbaa !5
  %991 = load i32, ptr %48, align 4, !tbaa !9
  %992 = sext i32 %991 to i64
  %993 = getelementptr inbounds %struct.doublecomplex, ptr %990, i64 %992
  %994 = load ptr, ptr %35, align 8, !tbaa !5
  %995 = load ptr, ptr %36, align 8, !tbaa !5
  %996 = load i32, ptr %50, align 4, !tbaa !9
  %997 = sext i32 %996 to i64
  %998 = getelementptr inbounds %struct.doublecomplex, ptr %995, i64 %997
  %999 = load ptr, ptr %37, align 8, !tbaa !5
  %1000 = load ptr, ptr %31, align 8, !tbaa !5
  %1001 = getelementptr inbounds [2 x double], ptr %83, i64 0, i64 0
  %1002 = load ptr, ptr %38, align 8, !tbaa !5
  %1003 = load i32, ptr %59, align 4, !tbaa !9
  %1004 = sext i32 %1003 to i64
  %1005 = getelementptr inbounds %struct.doublecomplex, ptr %1002, i64 %1004
  %1006 = getelementptr inbounds [1 x i32], ptr %56, i64 0, i64 0
  call void @ztgsen_(ptr noundef @c__0, ptr noundef %66, ptr noundef %67, ptr noundef %974, ptr noundef %975, ptr noundef %979, ptr noundef %980, ptr noundef %984, ptr noundef %985, ptr noundef %987, ptr noundef %989, ptr noundef %993, ptr noundef %994, ptr noundef %998, ptr noundef %999, ptr noundef %1000, ptr noundef %60, ptr noundef %61, ptr noundef %1001, ptr noundef %1005, ptr noundef %51, ptr noundef %1006, ptr noundef @c__1, ptr noundef %57)
  %1007 = load i32, ptr %57, align 4, !tbaa !9
  %1008 = icmp eq i32 %1007, 1
  br i1 %1008, label %1009, label %1014

1009:                                             ; preds = %967
  %1010 = load ptr, ptr %26, align 8, !tbaa !5
  %1011 = load i32, ptr %1010, align 4, !tbaa !9
  %1012 = add nsw i32 %1011, 3
  %1013 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %1012, ptr %1013, align 4, !tbaa !9
  br label %1014

1014:                                             ; preds = %1009, %967
  br label %1015

1015:                                             ; preds = %1014, %923
  %1016 = load i32, ptr %66, align 4, !tbaa !9
  %1017 = icmp ne i32 %1016, 0
  br i1 %1017, label %1018, label %1034

1018:                                             ; preds = %1015
  %1019 = load ptr, ptr %26, align 8, !tbaa !5
  %1020 = load ptr, ptr %40, align 8, !tbaa !5
  %1021 = load i32, ptr %63, align 4, !tbaa !9
  %1022 = sext i32 %1021 to i64
  %1023 = getelementptr inbounds double, ptr %1020, i64 %1022
  %1024 = load ptr, ptr %40, align 8, !tbaa !5
  %1025 = load i32, ptr %74, align 4, !tbaa !9
  %1026 = sext i32 %1025 to i64
  %1027 = getelementptr inbounds double, ptr %1024, i64 %1026
  %1028 = load ptr, ptr %26, align 8, !tbaa !5
  %1029 = load ptr, ptr %34, align 8, !tbaa !5
  %1030 = load i32, ptr %48, align 4, !tbaa !9
  %1031 = sext i32 %1030 to i64
  %1032 = getelementptr inbounds %struct.doublecomplex, ptr %1029, i64 %1031
  %1033 = load ptr, ptr %35, align 8, !tbaa !5
  call void @zggbak_(ptr noundef @.str.6, ptr noundef @.str.3, ptr noundef %1019, ptr noundef %85, ptr noundef %84, ptr noundef %1023, ptr noundef %1027, ptr noundef %1028, ptr noundef %1032, ptr noundef %1033, ptr noundef %57)
  br label %1034

1034:                                             ; preds = %1018, %1015
  %1035 = load i32, ptr %67, align 4, !tbaa !9
  %1036 = icmp ne i32 %1035, 0
  br i1 %1036, label %1037, label %1053

1037:                                             ; preds = %1034
  %1038 = load ptr, ptr %26, align 8, !tbaa !5
  %1039 = load ptr, ptr %40, align 8, !tbaa !5
  %1040 = load i32, ptr %63, align 4, !tbaa !9
  %1041 = sext i32 %1040 to i64
  %1042 = getelementptr inbounds double, ptr %1039, i64 %1041
  %1043 = load ptr, ptr %40, align 8, !tbaa !5
  %1044 = load i32, ptr %74, align 4, !tbaa !9
  %1045 = sext i32 %1044 to i64
  %1046 = getelementptr inbounds double, ptr %1043, i64 %1045
  %1047 = load ptr, ptr %26, align 8, !tbaa !5
  %1048 = load ptr, ptr %36, align 8, !tbaa !5
  %1049 = load i32, ptr %50, align 4, !tbaa !9
  %1050 = sext i32 %1049 to i64
  %1051 = getelementptr inbounds %struct.doublecomplex, ptr %1048, i64 %1050
  %1052 = load ptr, ptr %37, align 8, !tbaa !5
  call void @zggbak_(ptr noundef @.str.6, ptr noundef @.str.10, ptr noundef %1038, ptr noundef %85, ptr noundef %84, ptr noundef %1042, ptr noundef %1046, ptr noundef %1047, ptr noundef %1051, ptr noundef %1052, ptr noundef %57)
  br label %1053

1053:                                             ; preds = %1037, %1034
  %1054 = load i32, ptr %70, align 4, !tbaa !9
  %1055 = icmp ne i32 %1054, 0
  br i1 %1055, label %1056, label %1068

1056:                                             ; preds = %1053
  %1057 = load ptr, ptr %26, align 8, !tbaa !5
  %1058 = load ptr, ptr %26, align 8, !tbaa !5
  %1059 = load ptr, ptr %27, align 8, !tbaa !5
  %1060 = load i32, ptr %44, align 4, !tbaa !9
  %1061 = sext i32 %1060 to i64
  %1062 = getelementptr inbounds %struct.doublecomplex, ptr %1059, i64 %1061
  %1063 = load ptr, ptr %28, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %76, ptr noundef %54, ptr noundef %1057, ptr noundef %1058, ptr noundef %1062, ptr noundef %1063, ptr noundef %57)
  %1064 = load ptr, ptr %26, align 8, !tbaa !5
  %1065 = load ptr, ptr %32, align 8, !tbaa !5
  %1066 = getelementptr inbounds %struct.doublecomplex, ptr %1065, i64 1
  %1067 = load ptr, ptr %26, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.8, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %76, ptr noundef %54, ptr noundef %1064, ptr noundef @c__1, ptr noundef %1066, ptr noundef %1067, ptr noundef %57)
  br label %1068

1068:                                             ; preds = %1056, %1053
  %1069 = load i32, ptr %71, align 4, !tbaa !9
  %1070 = icmp ne i32 %1069, 0
  br i1 %1070, label %1071, label %1083

1071:                                             ; preds = %1068
  %1072 = load ptr, ptr %26, align 8, !tbaa !5
  %1073 = load ptr, ptr %26, align 8, !tbaa !5
  %1074 = load ptr, ptr %29, align 8, !tbaa !5
  %1075 = load i32, ptr %46, align 4, !tbaa !9
  %1076 = sext i32 %1075 to i64
  %1077 = getelementptr inbounds %struct.doublecomplex, ptr %1074, i64 %1076
  %1078 = load ptr, ptr %30, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %77, ptr noundef %55, ptr noundef %1072, ptr noundef %1073, ptr noundef %1077, ptr noundef %1078, ptr noundef %57)
  %1079 = load ptr, ptr %26, align 8, !tbaa !5
  %1080 = load ptr, ptr %33, align 8, !tbaa !5
  %1081 = getelementptr inbounds %struct.doublecomplex, ptr %1080, i64 1
  %1082 = load ptr, ptr %26, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.8, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %77, ptr noundef %55, ptr noundef %1079, ptr noundef @c__1, ptr noundef %1081, ptr noundef %1082, ptr noundef %57)
  br label %1083

1083:                                             ; preds = %1071, %1068
  %1084 = load i32, ptr %80, align 4, !tbaa !9
  %1085 = icmp ne i32 %1084, 0
  br i1 %1085, label %1086, label %1128

1086:                                             ; preds = %1083
  store i32 1, ptr %78, align 4, !tbaa !9
  %1087 = load ptr, ptr %31, align 8, !tbaa !5
  store i32 0, ptr %1087, align 4, !tbaa !9
  %1088 = load ptr, ptr %26, align 8, !tbaa !5
  %1089 = load i32, ptr %1088, align 4, !tbaa !9
  store i32 %1089, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %1090

1090:                                             ; preds = %1124, %1086
  %1091 = load i32, ptr %62, align 4, !tbaa !9
  %1092 = load i32, ptr %51, align 4, !tbaa !9
  %1093 = icmp sle i32 %1091, %1092
  br i1 %1093, label %1094, label %1127

1094:                                             ; preds = %1090
  %1095 = load ptr, ptr %25, align 8, !tbaa !5
  %1096 = load ptr, ptr %32, align 8, !tbaa !5
  %1097 = load i32, ptr %62, align 4, !tbaa !9
  %1098 = sext i32 %1097 to i64
  %1099 = getelementptr inbounds %struct.doublecomplex, ptr %1096, i64 %1098
  %1100 = load ptr, ptr %33, align 8, !tbaa !5
  %1101 = load i32, ptr %62, align 4, !tbaa !9
  %1102 = sext i32 %1101 to i64
  %1103 = getelementptr inbounds %struct.doublecomplex, ptr %1100, i64 %1102
  %1104 = call i32 (ptr, ptr, ...) %1095(ptr noundef %1099, ptr noundef %1103)
  store i32 %1104, ptr %65, align 4, !tbaa !9
  %1105 = load i32, ptr %65, align 4, !tbaa !9
  %1106 = icmp ne i32 %1105, 0
  br i1 %1106, label %1107, label %1111

1107:                                             ; preds = %1094
  %1108 = load ptr, ptr %31, align 8, !tbaa !5
  %1109 = load i32, ptr %1108, align 4, !tbaa !9
  %1110 = add nsw i32 %1109, 1
  store i32 %1110, ptr %1108, align 4, !tbaa !9
  br label %1111

1111:                                             ; preds = %1107, %1094
  %1112 = load i32, ptr %65, align 4, !tbaa !9
  %1113 = icmp ne i32 %1112, 0
  br i1 %1113, label %1114, label %1122

1114:                                             ; preds = %1111
  %1115 = load i32, ptr %78, align 4, !tbaa !9
  %1116 = icmp ne i32 %1115, 0
  br i1 %1116, label %1122, label %1117

1117:                                             ; preds = %1114
  %1118 = load ptr, ptr %26, align 8, !tbaa !5
  %1119 = load i32, ptr %1118, align 4, !tbaa !9
  %1120 = add nsw i32 %1119, 2
  %1121 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %1120, ptr %1121, align 4, !tbaa !9
  br label %1122

1122:                                             ; preds = %1117, %1114, %1111
  %1123 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %1123, ptr %78, align 4, !tbaa !9
  br label %1124

1124:                                             ; preds = %1122
  %1125 = load i32, ptr %62, align 4, !tbaa !9
  %1126 = add nsw i32 %1125, 1
  store i32 %1126, ptr %62, align 4, !tbaa !9
  br label %1090, !llvm.loop !18

1127:                                             ; preds = %1090
  br label %1128

1128:                                             ; preds = %1127, %1083
  br label %1129

1129:                                             ; preds = %1128, %922
  %1130 = load i32, ptr %82, align 4, !tbaa !9
  %1131 = sitofp i32 %1130 to double
  %1132 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  store double %1131, ptr %1132, align 8, !tbaa !11
  %1133 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  store double 0.000000e+00, ptr %1133, align 8, !tbaa !14
  %1134 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %1135 = load double, ptr %1134, align 8, !tbaa !11
  %1136 = load ptr, ptr %38, align 8, !tbaa !5
  %1137 = getelementptr inbounds %struct.doublecomplex, ptr %1136, i64 1
  %1138 = getelementptr inbounds %struct.doublecomplex, ptr %1137, i32 0, i32 0
  store double %1135, ptr %1138, align 8, !tbaa !11
  %1139 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %1140 = load double, ptr %1139, align 8, !tbaa !14
  %1141 = load ptr, ptr %38, align 8, !tbaa !5
  %1142 = getelementptr inbounds %struct.doublecomplex, ptr %1141, i64 1
  %1143 = getelementptr inbounds %struct.doublecomplex, ptr %1142, i32 0, i32 1
  store double %1140, ptr %1143, align 8, !tbaa !14
  store i32 1, ptr %87, align 4
  br label %1144

1144:                                             ; preds = %1129, %558, %552, %544
  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 4, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 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 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 16, 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 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 @zungqr_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @zgghd3_(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 @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 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 @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 @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_n1 = external hidden global i32, align 4
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@c__0 = external hidden global i32, align 4
@.str.5 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b1 = external hidden global %struct.doublecomplex, align 8
@c_b2 = external hidden global %struct.doublecomplex, align 8
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @zgges3_(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
  %narrow444 = xor i32 %44, -1
  %45 = sext i32 %narrow444 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
  %narrow448 = xor i32 %49, -1
  %50 = sext i32 %narrow448 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
  %.not428 = icmp eq i32 %58, 0
  br i1 %.not428, 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
  %.not433 = phi i1 [ false, %56 ], [ true, %59 ], [ false, %60 ]
  %62 = phi i1 [ false, %56 ], [ false, %59 ], [ true, %60 ]
  %63 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #5
  %.not429 = icmp eq i32 %63, 0
  br i1 %.not429, 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
  %.not430 = icmp eq i32 %66, 0
  br i1 %.not430, 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
  %.not434 = phi i1 [ false, %64 ], [ true, %67 ], [ false, %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 %.thread462.sink.split, label %74

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

75:                                               ; preds = %74
  %76 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str) #5
  %.not432 = icmp eq i32 %76, 0
  br i1 %.not432, label %.thread462.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 %.thread462.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 %.thread462.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 %.thread462.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.cond480 = and i1 %89, %.not433
  %or.cond499 = or i1 %88, %or.cond480
  br i1 %or.cond499, label %.thread462.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.cond481 = and i1 %93, %.not434
  %or.cond500 = or i1 %92, %or.cond481
  br i1 %or.cond500, label %.thread462.sink.split, label %94

94:                                               ; preds = %90
  store i32 1, ptr %22, align 4, !tbaa !5
  %95 = shl nuw i32 %78, 1
  store i32 %95, ptr %23, align 4, !tbaa !5
  %96 = load i32, ptr %17, align 4, !tbaa !5
  %97 = tail call i32 @llvm.smax.i32(i32 %95, i32 1)
  %98 = icmp sge i32 %96, %97
  %or.cond = select i1 %98, i1 true, i1 %73
  br i1 %or.cond, label %99, label %.thread462.sink.split

99:                                               ; preds = %94
  %.pr = load i32, ptr %20, align 4, !tbaa !5
  %100 = icmp eq i32 %.pr, 0
  br i1 %100, label %101, label %.thread462

101:                                              ; preds = %99
  call void @zgeqrf_(ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %16, ptr noundef %16, ptr noundef nonnull @c_n1, ptr noundef nonnull %27) #5
  store i32 1, ptr %22, align 4, !tbaa !5
  %102 = load i32, ptr %4, align 4, !tbaa !5
  %103 = load double, ptr %16, align 8, !tbaa !9
  %104 = fptosi double %103 to i32
  %105 = add nsw i32 %102, %104
  store i32 %105, ptr %23, align 4, !tbaa !5
  %106 = call i32 @llvm.smax.i32(i32 %105, i32 1)
  call void @zunmqr_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %16, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %16, ptr noundef nonnull @c_n1, ptr noundef nonnull %27) #5
  store i32 %106, ptr %22, align 4, !tbaa !5
  %107 = load i32, ptr %4, align 4, !tbaa !5
  %108 = load double, ptr %16, align 8, !tbaa !9
  %109 = fptosi double %108 to i32
  %110 = add nsw i32 %107, %109
  store i32 %110, ptr %23, align 4, !tbaa !5
  %111 = call i32 @llvm.smax.i32(i32 %106, i32 %110)
  %112 = load i32, ptr %31, align 4, !tbaa !5
  %.not436 = icmp eq i32 %112, 0
  br i1 %.not436, label %119, label %113

113:                                              ; preds = %101
  call void @zungqr_(ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %16, ptr noundef nonnull %16, ptr noundef nonnull @c_n1, ptr noundef nonnull %27) #5
  store i32 %111, ptr %22, align 4, !tbaa !5
  %114 = load i32, ptr %4, align 4, !tbaa !5
  %115 = load double, ptr %16, align 8, !tbaa !9
  %116 = fptosi double %115 to i32
  %117 = add nsw i32 %114, %116
  store i32 %117, ptr %23, align 4, !tbaa !5
  %118 = call i32 @llvm.smax.i32(i32 %111, i32 %117)
  br label %119

119:                                              ; preds = %113, %101
  %.0 = phi i32 [ %118, %113 ], [ %111, %101 ]
  call void @zgghd3_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull @c_n1, ptr noundef nonnull %27) #5
  store i32 %.0, ptr %22, align 4, !tbaa !5
  %120 = load i32, ptr %4, align 4, !tbaa !5
  %121 = load double, ptr %16, align 8, !tbaa !9
  %122 = fptosi double %121 to i32
  %123 = add nsw i32 %120, %122
  store i32 %123, ptr %23, align 4, !tbaa !5
  %124 = call i32 @llvm.smax.i32(i32 %.0, i32 %123)
  call void @zhgeqz_(ptr noundef nonnull @.str.2, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef 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 @c_n1, ptr noundef %18, ptr noundef nonnull %27) #5
  store i32 %124, ptr %22, align 4, !tbaa !5
  %125 = load double, ptr %16, align 8, !tbaa !9
  %126 = fptosi double %125 to i32
  store i32 %126, ptr %23, align 4, !tbaa !5
  %127 = call i32 @llvm.smax.i32(i32 %124, i32 %126)
  br i1 %.not431, label %.thread, label %128

128:                                              ; preds = %119
  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 %9, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef nonnull %38, ptr noundef nonnull %16, ptr noundef nonnull @c_n1, ptr noundef nonnull %26, ptr noundef nonnull @c__1, ptr noundef nonnull %27) #5
  store i32 %127, ptr %22, align 4, !tbaa !5
  %129 = load double, ptr %16, align 8, !tbaa !9
  %130 = fptosi double %129 to i32
  store i32 %130, ptr %23, align 4, !tbaa !5
  %131 = call i32 @llvm.smax.i32(i32 %127, i32 %130)
  br label %.thread

.thread:                                          ; preds = %119, %128
  %.1 = phi i32 [ %131, %128 ], [ %127, %119 ]
  %132 = uitofp nneg i32 %.1 to double
  store double %132, ptr %16, align 8, !tbaa !9
  %133 = getelementptr inbounds i8, ptr %16, i64 8
  store double 0.000000e+00, ptr %133, align 8, !tbaa !12
  %.pr461.pr = load i32, ptr %20, align 4, !tbaa !5
  %.not442 = icmp eq i32 %.pr461.pr, 0
  br i1 %.not442, label %137, label %.thread462

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

.thread462:                                       ; preds = %.thread462.sink.split, %99, %.thread
  %134 = phi i32 [ %.pr461.pr, %.thread ], [ %.pr, %99 ], [ %.sink, %.thread462.sink.split ]
  %135 = sub nsw i32 0, %134
  store i32 %135, ptr %22, align 4, !tbaa !5
  %136 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %22, i32 noundef 6) #5
  br label %285

137:                                              ; preds = %.thread
  br i1 %73, label %285, label %138

138:                                              ; preds = %137
  %139 = load i32, ptr %4, align 4, !tbaa !5
  %140 = icmp eq i32 %139, 0
  br i1 %140, label %141, label %142

141:                                              ; preds = %138
  store i32 0, ptr %9, align 4, !tbaa !5
  br label %285

142:                                              ; preds = %138
  %143 = call double @dlamch_(ptr noundef nonnull @.str.6) #5
  %144 = call double @dlamch_(ptr noundef nonnull @.str.2) #5
  store double %144, ptr %37, align 8, !tbaa !13
  %145 = fdiv double 1.000000e+00, %144
  store double %145, ptr %34, align 8, !tbaa !13
  call void @dlabad_(ptr noundef nonnull %37, ptr noundef nonnull %34) #5
  %146 = load double, ptr %37, align 8, !tbaa !13
  %147 = call double @sqrt(double noundef %146) #5
  %148 = fdiv double %147, %143
  store double %148, ptr %37, align 8, !tbaa !13
  %149 = fdiv double 1.000000e+00, %148
  store double %149, ptr %34, align 8, !tbaa !13
  %150 = call double @zlange_(ptr noundef nonnull @.str.7, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %18) #5
  store double %150, ptr %24, align 8, !tbaa !13
  %151 = fcmp ogt double %150, 0.000000e+00
  %152 = load double, ptr %37, align 8
  %153 = fcmp olt double %150, %152
  %or.cond484 = select i1 %151, i1 %153, i1 false
  br i1 %or.cond484, label %157, label %154

154:                                              ; preds = %142
  %155 = load double, ptr %34, align 8, !tbaa !13
  %156 = fcmp ogt double %150, %155
  br i1 %156, label %157, label %158

157:                                              ; preds = %142, %154
  %storemerge = phi double [ %155, %154 ], [ %152, %142 ]
  store double %storemerge, ptr %35, align 8, !tbaa !13
  call void @zlascl_(ptr noundef nonnull @.str.8, 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 %158

158:                                              ; preds = %154, %157
  %.not443469 = phi i1 [ false, %157 ], [ true, %154 ]
  %159 = call double @zlange_(ptr noundef nonnull @.str.7, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %18) #5
  store double %159, ptr %25, align 8, !tbaa !13
  %160 = fcmp ogt double %159, 0.000000e+00
  %161 = load double, ptr %37, align 8
  %162 = fcmp olt double %159, %161
  %or.cond486 = select i1 %160, i1 %162, i1 false
  br i1 %or.cond486, label %166, label %163

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

166:                                              ; preds = %158, %163
  %storemerge482 = phi double [ %164, %163 ], [ %161, %158 ]
  store double %storemerge482, ptr %36, align 8, !tbaa !13
  call void @zlascl_(ptr noundef nonnull @.str.8, 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 %167

167:                                              ; preds = %163, %166
  %.not445474 = phi i1 [ false, %166 ], [ true, %163 ]
  %168 = load i32, ptr %4, align 4, !tbaa !5
  %169 = add nsw i32 %168, 1
  %170 = add nsw i32 %169, %168
  %171 = sext i32 %169 to i64
  %172 = getelementptr inbounds double, ptr %53, i64 %171
  %173 = sext i32 %170 to i64
  %174 = getelementptr inbounds double, ptr %53, i64 %173
  call void @zggbal_(ptr noundef nonnull @.str.6, 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 %172, ptr noundef nonnull %174, ptr noundef nonnull %27) #5
  %175 = load i32, ptr %39, align 4, !tbaa !5
  %176 = add nsw i32 %175, 1
  %177 = load i32, ptr %40, align 4, !tbaa !5
  %178 = sub i32 %176, %177
  store i32 %178, ptr %33, align 4, !tbaa !5
  %179 = load i32, ptr %4, align 4, !tbaa !5
  %reass.sub = sub i32 %179, %177
  %180 = add i32 %reass.sub, 1
  store i32 %180, ptr %30, align 4, !tbaa !5
  %181 = load i32, ptr %17, align 4, !tbaa !5
  %182 = sub i32 %181, %178
  store i32 %182, ptr %22, align 4, !tbaa !5
  %183 = add i32 %44, 1
  %184 = mul i32 %177, %183
  %185 = sext i32 %184 to i64
  %186 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %185
  %187 = sext i32 %178 to i64
  %188 = getelementptr %struct.doublecomplex, ptr %52, i64 %187
  %189 = getelementptr i8, ptr %188, i64 16
  call void @zgeqrf_(ptr noundef nonnull %33, ptr noundef nonnull %30, ptr noundef %186, ptr noundef nonnull %8, ptr noundef nonnull %16, ptr noundef nonnull %189, ptr noundef nonnull %22, ptr noundef nonnull %27) #5
  %190 = load i32, ptr %17, align 4, !tbaa !5
  %191 = sub i32 %190, %178
  store i32 %191, ptr %22, align 4, !tbaa !5
  %192 = load i32, ptr %40, align 4, !tbaa !5
  %193 = mul i32 %192, %183
  %194 = sext i32 %193 to i64
  %195 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %194
  %196 = add i32 %41, 1
  %197 = mul i32 %192, %196
  %198 = sext i32 %197 to i64
  %199 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %198
  call void @zunmqr_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %33, ptr noundef nonnull %30, ptr noundef nonnull %33, ptr noundef %195, ptr noundef nonnull %8, ptr noundef nonnull %16, ptr noundef %199, ptr noundef nonnull %6, ptr noundef nonnull %189, ptr noundef nonnull %22, ptr noundef nonnull %27) #5
  %200 = load i32, ptr %31, align 4, !tbaa !5
  %.not446 = icmp eq i32 %200, 0
  br i1 %.not446, label %224, label %201

201:                                              ; preds = %167
  call void @zlaset_(ptr noundef nonnull @.str.9, 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
  %202 = load i32, ptr %33, align 4, !tbaa !5
  %203 = icmp sgt i32 %202, 1
  br i1 %203, label %204, label %216

204:                                              ; preds = %201
  %205 = add nsw i32 %202, -1
  store i32 %205, ptr %22, align 4, !tbaa !5
  store i32 %205, ptr %23, align 4, !tbaa !5
  %206 = load i32, ptr %40, align 4, !tbaa !5
  %207 = add nsw i32 %206, 1
  %208 = mul nsw i32 %206, %44
  %209 = add nsw i32 %207, %208
  %210 = sext i32 %209 to i64
  %211 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %210
  %212 = mul nsw i32 %206, %49
  %213 = add nsw i32 %207, %212
  %214 = sext i32 %213 to i64
  %215 = getelementptr inbounds %struct.doublecomplex, ptr %51, i64 %214
  call void @zlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef %211, ptr noundef nonnull %8, ptr noundef %215, ptr noundef nonnull %13) #5
  br label %216

216:                                              ; preds = %204, %201
  %217 = load i32, ptr %17, align 4, !tbaa !5
  %218 = sub i32 %217, %178
  store i32 %218, ptr %22, align 4, !tbaa !5
  %219 = load i32, ptr %40, align 4, !tbaa !5
  %220 = add i32 %49, 1
  %221 = mul i32 %219, %220
  %222 = sext i32 %221 to i64
  %223 = getelementptr inbounds %struct.doublecomplex, ptr %51, i64 %222
  call void @zungqr_(ptr noundef nonnull %33, ptr noundef nonnull %33, ptr noundef nonnull %33, ptr noundef %223, ptr noundef nonnull %13, ptr noundef nonnull %16, ptr noundef nonnull %189, ptr noundef nonnull %22, ptr noundef nonnull %27) #5
  br label %224

224:                                              ; preds = %216, %167
  %225 = load i32, ptr %32, align 4, !tbaa !5
  %.not447 = icmp eq i32 %225, 0
  br i1 %.not447, label %227, label %226

226:                                              ; preds = %224
  call void @zlaset_(ptr noundef nonnull @.str.9, 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 %227

227:                                              ; preds = %226, %224
  %228 = load i32, ptr %17, align 4, !tbaa !5
  %229 = sub i32 %228, %178
  store i32 %229, ptr %22, align 4, !tbaa !5
  call void @zgghd3_(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 %189, ptr noundef nonnull %22, ptr noundef nonnull %27) #5
  store i32 0, ptr %9, align 4, !tbaa !5
  %230 = load i32, ptr %17, align 4, !tbaa !5
  store i32 %230, 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 %174, ptr noundef nonnull %27) #5
  %231 = load i32, ptr %27, align 4, !tbaa !5
  %.not449 = icmp eq i32 %231, 0
  br i1 %.not449, label %241, label %232

232:                                              ; preds = %227
  %233 = icmp slt i32 %231, 1
  %.pre = load i32, ptr %4, align 4, !tbaa !5
  %.not456 = icmp sgt i32 %231, %.pre
  %or.cond501 = select i1 %233, i1 true, i1 %.not456
  br i1 %or.cond501, label %234, label %.loopexit.sink.split

234:                                              ; preds = %232
  %235 = icmp sle i32 %231, %.pre
  %236 = shl i32 %.pre, 1
  %.not457 = icmp sgt i32 %231, %236
  %or.cond459 = or i1 %235, %.not457
  br i1 %or.cond459, label %239, label %237

237:                                              ; preds = %234
  %238 = sub nsw i32 %231, %.pre
  br label %.loopexit.sink.split

239:                                              ; preds = %234
  %240 = add nsw i32 %.pre, 1
  br label %.loopexit.sink.split

241:                                              ; preds = %227
  br i1 %.not431, label %260, label %242

242:                                              ; preds = %241
  br i1 %.not443469, label %244, label %243

243:                                              ; preds = %242
  call void @zlascl_(ptr noundef nonnull @.str.8, 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 %244

244:                                              ; preds = %243, %242
  br i1 %.not445474, label %246, label %245

245:                                              ; preds = %244
  call void @zlascl_(ptr noundef nonnull @.str.8, 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 %246

246:                                              ; preds = %245, %244
  %247 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %247, ptr %22, align 4, !tbaa !5
  %.not451487 = icmp slt i32 %247, 1
  br i1 %.not451487, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %246, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 1, %246 ]
  %248 = getelementptr inbounds %struct.doublecomplex, ptr %47, i64 %indvars.iv
  %249 = getelementptr inbounds %struct.doublecomplex, ptr %48, i64 %indvars.iv
  %250 = call i32 (ptr, ptr, ...) %3(ptr noundef nonnull %248, ptr noundef nonnull %249) #5
  %251 = getelementptr inbounds i32, ptr %54, i64 %indvars.iv
  store i32 %250, ptr %251, align 4, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %252 = load i32, ptr %22, align 4, !tbaa !5
  %253 = sext i32 %252 to i64
  %.not451.not = icmp slt i64 %indvars.iv, %253
  br i1 %.not451.not, label %.lr.ph, label %._crit_edge, !llvm.loop !14

._crit_edge:                                      ; preds = %.lr.ph, %246
  %254 = load i32, ptr %17, align 4, !tbaa !5
  store i32 %254, 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
  %255 = load i32, ptr %27, align 4, !tbaa !5
  %256 = icmp eq i32 %255, 1
  br i1 %256, label %257, label %260

257:                                              ; preds = %._crit_edge
  %258 = load i32, ptr %4, align 4, !tbaa !5
  %259 = add nsw i32 %258, 3
  store i32 %259, ptr %20, align 4, !tbaa !5
  br label %260

260:                                              ; preds = %._crit_edge, %257, %241
  %261 = load i32, ptr %31, align 4, !tbaa !5
  %.not452 = icmp eq i32 %261, 0
  br i1 %.not452, label %263, label %262

262:                                              ; preds = %260
  call void @zggbak_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.3, ptr noundef nonnull %4, ptr noundef nonnull %40, ptr noundef nonnull %39, ptr noundef %18, ptr noundef nonnull %172, ptr noundef nonnull %4, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %27) #5
  br label %263

263:                                              ; preds = %262, %260
  %264 = load i32, ptr %32, align 4, !tbaa !5
  %.not453 = icmp eq i32 %264, 0
  br i1 %.not453, label %266, label %265

265:                                              ; preds = %263
  call void @zggbak_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.10, ptr noundef nonnull %4, ptr noundef nonnull %40, ptr noundef nonnull %39, ptr noundef %18, ptr noundef nonnull %172, ptr noundef nonnull %4, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %27) #5
  br label %266

266:                                              ; preds = %265, %263
  br i1 %.not443469, label %268, label %267

267:                                              ; preds = %266
  call void @zlascl_(ptr noundef nonnull @.str.11, 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.8, 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 %268

268:                                              ; preds = %267, %266
  br i1 %.not445474, label %270, label %269

269:                                              ; preds = %268
  call void @zlascl_(ptr noundef nonnull @.str.11, 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.8, 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 %270

270:                                              ; preds = %269, %268
  br i1 %.not431, label %.loopexit, label %271

271:                                              ; preds = %270
  store i32 0, ptr %9, align 4, !tbaa !5
  %272 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %272, ptr %22, align 4, !tbaa !5
  %.not454489 = icmp slt i32 %272, 1
  br i1 %.not454489, label %.loopexit, label %.lr.ph493

.lr.ph493:                                        ; preds = %271, %.thread475
  %indvars.iv496 = phi i64 [ %indvars.iv.next497, %.thread475 ], [ 1, %271 ]
  %.0406491 = phi i32 [ %275, %.thread475 ], [ 1, %271 ]
  %273 = getelementptr inbounds %struct.doublecomplex, ptr %47, i64 %indvars.iv496
  %274 = getelementptr inbounds %struct.doublecomplex, ptr %48, i64 %indvars.iv496
  %275 = call i32 (ptr, ptr, ...) %3(ptr noundef nonnull %273, ptr noundef nonnull %274) #5
  %.not455 = icmp eq i32 %275, 0
  br i1 %.not455, label %.thread475, label %276

276:                                              ; preds = %.lr.ph493
  %277 = load i32, ptr %9, align 4, !tbaa !5
  %278 = add nsw i32 %277, 1
  store i32 %278, ptr %9, align 4, !tbaa !5
  %.not494 = icmp eq i32 %.0406491, 0
  br i1 %.not494, label %279, label %.thread475

279:                                              ; preds = %276
  %280 = load i32, ptr %4, align 4, !tbaa !5
  %281 = add nsw i32 %280, 2
  store i32 %281, ptr %20, align 4, !tbaa !5
  br label %.thread475

.thread475:                                       ; preds = %.lr.ph493, %279, %276
  %indvars.iv.next497 = add nuw nsw i64 %indvars.iv496, 1
  %282 = load i32, ptr %22, align 4, !tbaa !5
  %283 = sext i32 %282 to i64
  %.not454.not = icmp slt i64 %indvars.iv496, %283
  br i1 %.not454.not, label %.lr.ph493, label %.loopexit, !llvm.loop !16

.loopexit.sink.split:                             ; preds = %232, %237, %239
  %.sink502 = phi i32 [ %240, %239 ], [ %238, %237 ], [ %231, %232 ]
  store i32 %.sink502, ptr %20, align 4, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.thread475, %.loopexit.sink.split, %271, %270
  %284 = uitofp nneg i32 %.1 to double
  store double %284, ptr %16, align 8, !tbaa !9
  store double 0.000000e+00, ptr %133, align 8, !tbaa !12
  br label %285

285:                                              ; preds = %137, %.loopexit, %141, %.thread462
  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 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 @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 @zgghd3_(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 @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 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 @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 @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,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass