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

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

%struct.doublecomplex = type { double, double }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i32, align 4
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.8 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b1 = external hidden global %struct.doublecomplex, align 8
@c_b2 = external hidden global %struct.doublecomplex, align 8
@.str.16 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [2 x i8], align 1

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

163:                                              ; preds = %26
  store i32 1, ptr %83, align 4, !tbaa !9
  store i32 0, ptr %74, align 4, !tbaa !9
  br label %171

164:                                              ; preds = %26
  %165 = load ptr, ptr %27, align 8, !tbaa !5
  %166 = call i32 @lsame_(ptr noundef %165, ptr noundef @.str.1)
  %167 = icmp ne i32 %166, 0
  br i1 %167, label %168, label %169

168:                                              ; preds = %164
  store i32 2, ptr %83, align 4, !tbaa !9
  store i32 1, ptr %74, align 4, !tbaa !9
  br label %170

169:                                              ; preds = %164
  store i32 -1, ptr %83, align 4, !tbaa !9
  store i32 0, ptr %74, align 4, !tbaa !9
  br label %170

170:                                              ; preds = %169, %168
  br label %171

171:                                              ; preds = %170, %163
  %172 = load ptr, ptr %28, align 8, !tbaa !5
  %173 = call i32 @lsame_(ptr noundef %172, ptr noundef @.str)
  %174 = icmp ne i32 %173, 0
  br i1 %174, label %175, label %176

175:                                              ; preds = %171
  store i32 1, ptr %85, align 4, !tbaa !9
  store i32 0, ptr %75, align 4, !tbaa !9
  br label %183

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

180:                                              ; preds = %176
  store i32 2, ptr %85, align 4, !tbaa !9
  store i32 1, ptr %75, align 4, !tbaa !9
  br label %182

181:                                              ; preds = %176
  store i32 -1, ptr %85, align 4, !tbaa !9
  store i32 0, ptr %75, align 4, !tbaa !9
  br label %182

182:                                              ; preds = %181, %180
  br label %183

183:                                              ; preds = %182, %175
  %184 = load ptr, ptr %29, align 8, !tbaa !5
  %185 = call i32 @lsame_(ptr noundef %184, ptr noundef @.str.2)
  store i32 %185, ptr %96, align 4, !tbaa !9
  %186 = load ptr, ptr %31, align 8, !tbaa !5
  %187 = call i32 @lsame_(ptr noundef %186, ptr noundef @.str)
  store i32 %187, ptr %93, align 4, !tbaa !9
  %188 = load ptr, ptr %31, align 8, !tbaa !5
  %189 = call i32 @lsame_(ptr noundef %188, ptr noundef @.str.3)
  store i32 %189, ptr %88, align 4, !tbaa !9
  %190 = load ptr, ptr %31, align 8, !tbaa !5
  %191 = call i32 @lsame_(ptr noundef %190, ptr noundef @.str.1)
  store i32 %191, ptr %98, align 4, !tbaa !9
  %192 = load ptr, ptr %31, align 8, !tbaa !5
  %193 = call i32 @lsame_(ptr noundef %192, ptr noundef @.str.4)
  store i32 %193, ptr %86, align 4, !tbaa !9
  %194 = load ptr, ptr %47, align 8, !tbaa !5
  %195 = load i32, ptr %194, align 4, !tbaa !9
  %196 = icmp eq i32 %195, -1
  br i1 %196, label %201, label %197

197:                                              ; preds = %183
  %198 = load ptr, ptr %50, align 8, !tbaa !5
  %199 = load i32, ptr %198, align 4, !tbaa !9
  %200 = icmp eq i32 %199, -1
  br label %201

201:                                              ; preds = %197, %183
  %202 = phi i1 [ true, %183 ], [ %200, %197 ]
  %203 = zext i1 %202 to i32
  store i32 %203, ptr %97, align 4, !tbaa !9
  %204 = load i32, ptr %93, align 4, !tbaa !9
  %205 = icmp ne i32 %204, 0
  br i1 %205, label %206, label %207

206:                                              ; preds = %201
  store i32 0, ptr %63, align 4, !tbaa !9
  br label %222

207:                                              ; preds = %201
  %208 = load i32, ptr %88, align 4, !tbaa !9
  %209 = icmp ne i32 %208, 0
  br i1 %209, label %210, label %211

210:                                              ; preds = %207
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %221

211:                                              ; preds = %207
  %212 = load i32, ptr %98, align 4, !tbaa !9
  %213 = icmp ne i32 %212, 0
  br i1 %213, label %214, label %215

214:                                              ; preds = %211
  store i32 2, ptr %63, align 4, !tbaa !9
  br label %220

215:                                              ; preds = %211
  %216 = load i32, ptr %86, align 4, !tbaa !9
  %217 = icmp ne i32 %216, 0
  br i1 %217, label %218, label %219

218:                                              ; preds = %215
  store i32 4, ptr %63, align 4, !tbaa !9
  br label %219

219:                                              ; preds = %218, %215
  br label %220

220:                                              ; preds = %219, %214
  br label %221

221:                                              ; preds = %220, %210
  br label %222

222:                                              ; preds = %221, %206
  %223 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 0, ptr %223, align 4, !tbaa !9
  %224 = load i32, ptr %83, align 4, !tbaa !9
  %225 = icmp sle i32 %224, 0
  br i1 %225, label %226, label %228

226:                                              ; preds = %222
  %227 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -1, ptr %227, align 4, !tbaa !9
  br label %336

228:                                              ; preds = %222
  %229 = load i32, ptr %85, align 4, !tbaa !9
  %230 = icmp sle i32 %229, 0
  br i1 %230, label %231, label %233

231:                                              ; preds = %228
  %232 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -2, ptr %232, align 4, !tbaa !9
  br label %335

233:                                              ; preds = %228
  %234 = load i32, ptr %96, align 4, !tbaa !9
  %235 = icmp ne i32 %234, 0
  br i1 %235, label %242, label %236

236:                                              ; preds = %233
  %237 = load ptr, ptr %29, align 8, !tbaa !5
  %238 = call i32 @lsame_(ptr noundef %237, ptr noundef @.str)
  %239 = icmp ne i32 %238, 0
  br i1 %239, label %242, label %240

240:                                              ; preds = %236
  %241 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -3, ptr %241, align 4, !tbaa !9
  br label %334

242:                                              ; preds = %236, %233
  %243 = load i32, ptr %93, align 4, !tbaa !9
  %244 = icmp ne i32 %243, 0
  br i1 %244, label %254, label %245

245:                                              ; preds = %242
  %246 = load i32, ptr %88, align 4, !tbaa !9
  %247 = icmp ne i32 %246, 0
  br i1 %247, label %254, label %248

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

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

254:                                              ; preds = %251, %248, %245, %242
  %255 = load i32, ptr %96, align 4, !tbaa !9
  %256 = icmp ne i32 %255, 0
  br i1 %256, label %262, label %257

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

260:                                              ; preds = %257, %251
  %261 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -5, ptr %261, align 4, !tbaa !9
  br label %333

262:                                              ; preds = %257, %254
  %263 = load ptr, ptr %32, align 8, !tbaa !5
  %264 = load i32, ptr %263, align 4, !tbaa !9
  %265 = icmp slt i32 %264, 0
  br i1 %265, label %266, label %268

266:                                              ; preds = %262
  %267 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -6, ptr %267, align 4, !tbaa !9
  br label %332

268:                                              ; preds = %262
  %269 = load ptr, ptr %34, align 8, !tbaa !5
  %270 = load i32, ptr %269, align 4, !tbaa !9
  %271 = load ptr, ptr %32, align 8, !tbaa !5
  %272 = load i32, ptr %271, align 4, !tbaa !9
  %273 = icmp sge i32 1, %272
  br i1 %273, label %274, label %275

274:                                              ; preds = %268
  br label %278

275:                                              ; preds = %268
  %276 = load ptr, ptr %32, align 8, !tbaa !5
  %277 = load i32, ptr %276, align 4, !tbaa !9
  br label %278

278:                                              ; preds = %275, %274
  %279 = phi i32 [ 1, %274 ], [ %277, %275 ]
  %280 = icmp slt i32 %270, %279
  br i1 %280, label %281, label %283

281:                                              ; preds = %278
  %282 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -8, ptr %282, align 4, !tbaa !9
  br label %331

283:                                              ; preds = %278
  %284 = load ptr, ptr %36, align 8, !tbaa !5
  %285 = load i32, ptr %284, align 4, !tbaa !9
  %286 = load ptr, ptr %32, align 8, !tbaa !5
  %287 = load i32, ptr %286, align 4, !tbaa !9
  %288 = icmp sge i32 1, %287
  br i1 %288, label %289, label %290

289:                                              ; preds = %283
  br label %293

290:                                              ; preds = %283
  %291 = load ptr, ptr %32, align 8, !tbaa !5
  %292 = load i32, ptr %291, align 4, !tbaa !9
  br label %293

293:                                              ; preds = %290, %289
  %294 = phi i32 [ 1, %289 ], [ %292, %290 ]
  %295 = icmp slt i32 %285, %294
  br i1 %295, label %296, label %298

296:                                              ; preds = %293
  %297 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -10, ptr %297, align 4, !tbaa !9
  br label %330

298:                                              ; preds = %293
  %299 = load ptr, ptr %41, align 8, !tbaa !5
  %300 = load i32, ptr %299, align 4, !tbaa !9
  %301 = icmp slt i32 %300, 1
  br i1 %301, label %311, label %302

302:                                              ; preds = %298
  %303 = load i32, ptr %74, align 4, !tbaa !9
  %304 = icmp ne i32 %303, 0
  br i1 %304, label %305, label %313

305:                                              ; preds = %302
  %306 = load ptr, ptr %41, align 8, !tbaa !5
  %307 = load i32, ptr %306, align 4, !tbaa !9
  %308 = load ptr, ptr %32, align 8, !tbaa !5
  %309 = load i32, ptr %308, align 4, !tbaa !9
  %310 = icmp slt i32 %307, %309
  br i1 %310, label %311, label %313

311:                                              ; preds = %305, %298
  %312 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -15, ptr %312, align 4, !tbaa !9
  br label %329

313:                                              ; preds = %305, %302
  %314 = load ptr, ptr %43, align 8, !tbaa !5
  %315 = load i32, ptr %314, align 4, !tbaa !9
  %316 = icmp slt i32 %315, 1
  br i1 %316, label %326, label %317

317:                                              ; preds = %313
  %318 = load i32, ptr %75, align 4, !tbaa !9
  %319 = icmp ne i32 %318, 0
  br i1 %319, label %320, label %328

320:                                              ; preds = %317
  %321 = load ptr, ptr %43, align 8, !tbaa !5
  %322 = load i32, ptr %321, align 4, !tbaa !9
  %323 = load ptr, ptr %32, align 8, !tbaa !5
  %324 = load i32, ptr %323, align 4, !tbaa !9
  %325 = icmp slt i32 %322, %324
  br i1 %325, label %326, label %328

326:                                              ; preds = %320, %313
  %327 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -17, ptr %327, align 4, !tbaa !9
  br label %328

328:                                              ; preds = %326, %320, %317
  br label %329

329:                                              ; preds = %328, %311
  br label %330

330:                                              ; preds = %329, %296
  br label %331

331:                                              ; preds = %330, %281
  br label %332

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

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

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

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

336:                                              ; preds = %335, %226
  %337 = load ptr, ptr %52, align 8, !tbaa !5
  %338 = load i32, ptr %337, align 4, !tbaa !9
  %339 = icmp eq i32 %338, 0
  br i1 %339, label %340, label %460

340:                                              ; preds = %336
  %341 = load ptr, ptr %32, align 8, !tbaa !5
  %342 = load i32, ptr %341, align 4, !tbaa !9
  %343 = icmp sgt i32 %342, 0
  br i1 %343, label %344, label %414

344:                                              ; preds = %340
  %345 = load ptr, ptr %32, align 8, !tbaa !5
  %346 = load i32, ptr %345, align 4, !tbaa !9
  %347 = shl i32 %346, 1
  store i32 %347, ptr %94, align 4, !tbaa !9
  %348 = load ptr, ptr %32, align 8, !tbaa !5
  %349 = load i32, ptr %348, align 4, !tbaa !9
  %350 = load ptr, ptr %32, align 8, !tbaa !5
  %351 = load ptr, ptr %32, align 8, !tbaa !5
  %352 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %350, ptr noundef @c__1, ptr noundef %351, ptr noundef @c__0, i32 noundef 6, i32 noundef 1)
  %353 = add nsw i32 %352, 1
  %354 = mul nsw i32 %349, %353
  store i32 %354, ptr %92, align 4, !tbaa !9
  %355 = load i32, ptr %92, align 4, !tbaa !9
  store i32 %355, ptr %61, align 4, !tbaa !9
  %356 = load ptr, ptr %32, align 8, !tbaa !5
  %357 = load i32, ptr %356, align 4, !tbaa !9
  %358 = load ptr, ptr %32, align 8, !tbaa !5
  %359 = load ptr, ptr %32, align 8, !tbaa !5
  %360 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.7, ptr noundef @.str.6, ptr noundef %358, ptr noundef @c__1, ptr noundef %359, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  %361 = add nsw i32 %360, 1
  %362 = mul nsw i32 %357, %361
  store i32 %362, ptr %62, align 4, !tbaa !9
  %363 = load i32, ptr %61, align 4, !tbaa !9
  %364 = load i32, ptr %62, align 4, !tbaa !9
  %365 = icmp sge i32 %363, %364
  br i1 %365, label %366, label %368

366:                                              ; preds = %344
  %367 = load i32, ptr %61, align 4, !tbaa !9
  br label %370

368:                                              ; preds = %344
  %369 = load i32, ptr %62, align 4, !tbaa !9
  br label %370

370:                                              ; preds = %368, %366
  %371 = phi i32 [ %367, %366 ], [ %369, %368 ]
  store i32 %371, ptr %92, align 4, !tbaa !9
  %372 = load i32, ptr %74, align 4, !tbaa !9
  %373 = icmp ne i32 %372, 0
  br i1 %373, label %374, label %392

374:                                              ; preds = %370
  %375 = load i32, ptr %92, align 4, !tbaa !9
  store i32 %375, ptr %61, align 4, !tbaa !9
  %376 = load ptr, ptr %32, align 8, !tbaa !5
  %377 = load i32, ptr %376, align 4, !tbaa !9
  %378 = load ptr, ptr %32, align 8, !tbaa !5
  %379 = load ptr, ptr %32, align 8, !tbaa !5
  %380 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.8, ptr noundef @.str.6, ptr noundef %378, ptr noundef @c__1, ptr noundef %379, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  %381 = add nsw i32 %380, 1
  %382 = mul nsw i32 %377, %381
  store i32 %382, ptr %62, align 4, !tbaa !9
  %383 = load i32, ptr %61, align 4, !tbaa !9
  %384 = load i32, ptr %62, align 4, !tbaa !9
  %385 = icmp sge i32 %383, %384
  br i1 %385, label %386, label %388

386:                                              ; preds = %374
  %387 = load i32, ptr %61, align 4, !tbaa !9
  br label %390

388:                                              ; preds = %374
  %389 = load i32, ptr %62, align 4, !tbaa !9
  br label %390

390:                                              ; preds = %388, %386
  %391 = phi i32 [ %387, %386 ], [ %389, %388 ]
  store i32 %391, ptr %92, align 4, !tbaa !9
  br label %392

392:                                              ; preds = %390, %370
  %393 = load i32, ptr %92, align 4, !tbaa !9
  store i32 %393, ptr %69, align 4, !tbaa !9
  %394 = load i32, ptr %63, align 4, !tbaa !9
  %395 = icmp sge i32 %394, 1
  br i1 %395, label %396, label %413

396:                                              ; preds = %392
  %397 = load i32, ptr %69, align 4, !tbaa !9
  store i32 %397, ptr %61, align 4, !tbaa !9
  %398 = load ptr, ptr %32, align 8, !tbaa !5
  %399 = load i32, ptr %398, align 4, !tbaa !9
  %400 = load ptr, ptr %32, align 8, !tbaa !5
  %401 = load i32, ptr %400, align 4, !tbaa !9
  %402 = mul nsw i32 %399, %401
  %403 = sdiv i32 %402, 2
  store i32 %403, ptr %62, align 4, !tbaa !9
  %404 = load i32, ptr %61, align 4, !tbaa !9
  %405 = load i32, ptr %62, align 4, !tbaa !9
  %406 = icmp sge i32 %404, %405
  br i1 %406, label %407, label %409

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

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

411:                                              ; preds = %409, %407
  %412 = phi i32 [ %408, %407 ], [ %410, %409 ]
  store i32 %412, ptr %69, align 4, !tbaa !9
  br label %413

413:                                              ; preds = %411, %392
  br label %415

414:                                              ; preds = %340
  store i32 1, ptr %94, align 4, !tbaa !9
  store i32 1, ptr %92, align 4, !tbaa !9
  store i32 1, ptr %69, align 4, !tbaa !9
  br label %415

415:                                              ; preds = %414, %413
  %416 = load i32, ptr %69, align 4, !tbaa !9
  %417 = sitofp i32 %416 to double
  %418 = load ptr, ptr %46, align 8, !tbaa !5
  %419 = getelementptr inbounds %struct.doublecomplex, ptr %418, i64 1
  %420 = getelementptr inbounds %struct.doublecomplex, ptr %419, i32 0, i32 0
  store double %417, ptr %420, align 8, !tbaa !11
  %421 = load ptr, ptr %46, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.doublecomplex, ptr %421, i64 1
  %423 = getelementptr inbounds %struct.doublecomplex, ptr %422, i32 0, i32 1
  store double 0.000000e+00, ptr %423, align 8, !tbaa !14
  %424 = load i32, ptr %93, align 4, !tbaa !9
  %425 = icmp ne i32 %424, 0
  br i1 %425, label %430, label %426

426:                                              ; preds = %415
  %427 = load ptr, ptr %32, align 8, !tbaa !5
  %428 = load i32, ptr %427, align 4, !tbaa !9
  %429 = icmp eq i32 %428, 0
  br i1 %429, label %430, label %431

430:                                              ; preds = %426, %415
  store i32 1, ptr %87, align 4, !tbaa !9
  br label %435

431:                                              ; preds = %426
  %432 = load ptr, ptr %32, align 8, !tbaa !5
  %433 = load i32, ptr %432, align 4, !tbaa !9
  %434 = add nsw i32 %433, 2
  store i32 %434, ptr %87, align 4, !tbaa !9
  br label %435

435:                                              ; preds = %431, %430
  %436 = load i32, ptr %87, align 4, !tbaa !9
  %437 = load ptr, ptr %49, align 8, !tbaa !5
  %438 = getelementptr inbounds i32, ptr %437, i64 1
  store i32 %436, ptr %438, align 4, !tbaa !9
  %439 = load ptr, ptr %47, align 8, !tbaa !5
  %440 = load i32, ptr %439, align 4, !tbaa !9
  %441 = load i32, ptr %94, align 4, !tbaa !9
  %442 = icmp slt i32 %440, %441
  br i1 %442, label %443, label %448

443:                                              ; preds = %435
  %444 = load i32, ptr %97, align 4, !tbaa !9
  %445 = icmp ne i32 %444, 0
  br i1 %445, label %448, label %446

446:                                              ; preds = %443
  %447 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -21, ptr %447, align 4, !tbaa !9
  br label %459

448:                                              ; preds = %443, %435
  %449 = load ptr, ptr %50, align 8, !tbaa !5
  %450 = load i32, ptr %449, align 4, !tbaa !9
  %451 = load i32, ptr %87, align 4, !tbaa !9
  %452 = icmp slt i32 %450, %451
  br i1 %452, label %453, label %458

453:                                              ; preds = %448
  %454 = load i32, ptr %97, align 4, !tbaa !9
  %455 = icmp ne i32 %454, 0
  br i1 %455, label %458, label %456

456:                                              ; preds = %453
  %457 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -24, ptr %457, align 4, !tbaa !9
  br label %458

458:                                              ; preds = %456, %453, %448
  br label %459

459:                                              ; preds = %458, %446
  br label %460

460:                                              ; preds = %459, %336
  %461 = load ptr, ptr %52, align 8, !tbaa !5
  %462 = load i32, ptr %461, align 4, !tbaa !9
  %463 = icmp ne i32 %462, 0
  br i1 %463, label %464, label %469

464:                                              ; preds = %460
  %465 = load ptr, ptr %52, align 8, !tbaa !5
  %466 = load i32, ptr %465, align 4, !tbaa !9
  %467 = sub nsw i32 0, %466
  store i32 %467, ptr %61, align 4, !tbaa !9
  %468 = call i32 @xerbla_(ptr noundef @.str.9, ptr noundef %61, i32 noundef 6)
  store i32 1, ptr %103, align 4
  br label %1111

469:                                              ; preds = %460
  %470 = load i32, ptr %97, align 4, !tbaa !9
  %471 = icmp ne i32 %470, 0
  br i1 %471, label %472, label %473

472:                                              ; preds = %469
  store i32 1, ptr %103, align 4
  br label %1111

473:                                              ; preds = %469
  br label %474

474:                                              ; preds = %473
  %475 = load ptr, ptr %32, align 8, !tbaa !5
  %476 = load i32, ptr %475, align 4, !tbaa !9
  %477 = icmp eq i32 %476, 0
  br i1 %477, label %478, label %480

478:                                              ; preds = %474
  %479 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 0, ptr %479, align 4, !tbaa !9
  store i32 1, ptr %103, align 4
  br label %1111

480:                                              ; preds = %474
  %481 = call double @dlamch_(ptr noundef @.str.10)
  store double %481, ptr %102, align 8, !tbaa !15
  %482 = call double @dlamch_(ptr noundef @.str.2)
  store double %482, ptr %95, align 8, !tbaa !15
  %483 = load double, ptr %95, align 8, !tbaa !15
  %484 = fdiv double 1.000000e+00, %483
  store double %484, ptr %82, align 8, !tbaa !15
  call void @dlabad_(ptr noundef %95, ptr noundef %82)
  %485 = load double, ptr %95, align 8, !tbaa !15
  %486 = call double @sqrt(double noundef %485) #4
  %487 = load double, ptr %102, align 8, !tbaa !15
  %488 = fdiv double %486, %487
  store double %488, ptr %95, align 8, !tbaa !15
  %489 = load double, ptr %95, align 8, !tbaa !15
  %490 = fdiv double 1.000000e+00, %489
  store double %490, ptr %82, align 8, !tbaa !15
  %491 = load ptr, ptr %32, align 8, !tbaa !5
  %492 = load ptr, ptr %32, align 8, !tbaa !5
  %493 = load ptr, ptr %33, align 8, !tbaa !5
  %494 = load i32, ptr %54, align 4, !tbaa !9
  %495 = sext i32 %494 to i64
  %496 = getelementptr inbounds %struct.doublecomplex, ptr %493, i64 %495
  %497 = load ptr, ptr %34, align 8, !tbaa !5
  %498 = load ptr, ptr %48, align 8, !tbaa !5
  %499 = getelementptr inbounds double, ptr %498, i64 1
  %500 = call double @zlange_(ptr noundef @.str.11, ptr noundef %491, ptr noundef %492, ptr noundef %496, ptr noundef %497, ptr noundef %499)
  store double %500, ptr %64, align 8, !tbaa !15
  store i32 0, ptr %80, align 4, !tbaa !9
  %501 = load double, ptr %64, align 8, !tbaa !15
  %502 = fcmp ogt double %501, 0.000000e+00
  br i1 %502, label %503, label %509

503:                                              ; preds = %480
  %504 = load double, ptr %64, align 8, !tbaa !15
  %505 = load double, ptr %95, align 8, !tbaa !15
  %506 = fcmp olt double %504, %505
  br i1 %506, label %507, label %509

507:                                              ; preds = %503
  %508 = load double, ptr %95, align 8, !tbaa !15
  store double %508, ptr %90, align 8, !tbaa !15
  store i32 1, ptr %80, align 4, !tbaa !9
  br label %516

509:                                              ; preds = %503, %480
  %510 = load double, ptr %64, align 8, !tbaa !15
  %511 = load double, ptr %82, align 8, !tbaa !15
  %512 = fcmp ogt double %510, %511
  br i1 %512, label %513, label %515

513:                                              ; preds = %509
  %514 = load double, ptr %82, align 8, !tbaa !15
  store double %514, ptr %90, align 8, !tbaa !15
  store i32 1, ptr %80, align 4, !tbaa !9
  br label %515

515:                                              ; preds = %513, %509
  br label %516

516:                                              ; preds = %515, %507
  %517 = load i32, ptr %80, align 4, !tbaa !9
  %518 = icmp ne i32 %517, 0
  br i1 %518, label %519, label %527

519:                                              ; preds = %516
  %520 = load ptr, ptr %32, align 8, !tbaa !5
  %521 = load ptr, ptr %32, align 8, !tbaa !5
  %522 = load ptr, ptr %33, align 8, !tbaa !5
  %523 = load i32, ptr %54, align 4, !tbaa !9
  %524 = sext i32 %523 to i64
  %525 = getelementptr inbounds %struct.doublecomplex, ptr %522, i64 %524
  %526 = load ptr, ptr %34, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %64, ptr noundef %90, ptr noundef %520, ptr noundef %521, ptr noundef %525, ptr noundef %526, ptr noundef %66)
  br label %527

527:                                              ; preds = %519, %516
  %528 = load ptr, ptr %32, align 8, !tbaa !5
  %529 = load ptr, ptr %32, align 8, !tbaa !5
  %530 = load ptr, ptr %35, align 8, !tbaa !5
  %531 = load i32, ptr %56, align 4, !tbaa !9
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds %struct.doublecomplex, ptr %530, i64 %532
  %534 = load ptr, ptr %36, align 8, !tbaa !5
  %535 = load ptr, ptr %48, align 8, !tbaa !5
  %536 = getelementptr inbounds double, ptr %535, i64 1
  %537 = call double @zlange_(ptr noundef @.str.11, ptr noundef %528, ptr noundef %529, ptr noundef %533, ptr noundef %534, ptr noundef %536)
  store double %537, ptr %65, align 8, !tbaa !15
  store i32 0, ptr %81, align 4, !tbaa !9
  %538 = load double, ptr %65, align 8, !tbaa !15
  %539 = fcmp ogt double %538, 0.000000e+00
  br i1 %539, label %540, label %546

540:                                              ; preds = %527
  %541 = load double, ptr %65, align 8, !tbaa !15
  %542 = load double, ptr %95, align 8, !tbaa !15
  %543 = fcmp olt double %541, %542
  br i1 %543, label %544, label %546

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

546:                                              ; preds = %540, %527
  %547 = load double, ptr %65, align 8, !tbaa !15
  %548 = load double, ptr %82, align 8, !tbaa !15
  %549 = fcmp ogt double %547, %548
  br i1 %549, label %550, label %552

550:                                              ; preds = %546
  %551 = load double, ptr %82, align 8, !tbaa !15
  store double %551, ptr %91, align 8, !tbaa !15
  store i32 1, ptr %81, align 4, !tbaa !9
  br label %552

552:                                              ; preds = %550, %546
  br label %553

553:                                              ; preds = %552, %544
  %554 = load i32, ptr %81, align 4, !tbaa !9
  %555 = icmp ne i32 %554, 0
  br i1 %555, label %556, label %564

556:                                              ; preds = %553
  %557 = load ptr, ptr %32, align 8, !tbaa !5
  %558 = load ptr, ptr %32, align 8, !tbaa !5
  %559 = load ptr, ptr %35, align 8, !tbaa !5
  %560 = load i32, ptr %56, align 4, !tbaa !9
  %561 = sext i32 %560 to i64
  %562 = getelementptr inbounds %struct.doublecomplex, ptr %559, i64 %561
  %563 = load ptr, ptr %36, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %65, ptr noundef %91, ptr noundef %557, ptr noundef %558, ptr noundef %562, ptr noundef %563, ptr noundef %66)
  br label %564

564:                                              ; preds = %556, %553
  store i32 1, ptr %71, align 4, !tbaa !9
  %565 = load ptr, ptr %32, align 8, !tbaa !5
  %566 = load i32, ptr %565, align 4, !tbaa !9
  %567 = add nsw i32 %566, 1
  store i32 %567, ptr %84, align 4, !tbaa !9
  %568 = load i32, ptr %84, align 4, !tbaa !9
  %569 = load ptr, ptr %32, align 8, !tbaa !5
  %570 = load i32, ptr %569, align 4, !tbaa !9
  %571 = add nsw i32 %568, %570
  store i32 %571, ptr %76, align 4, !tbaa !9
  %572 = load ptr, ptr %32, align 8, !tbaa !5
  %573 = load ptr, ptr %33, align 8, !tbaa !5
  %574 = load i32, ptr %54, align 4, !tbaa !9
  %575 = sext i32 %574 to i64
  %576 = getelementptr inbounds %struct.doublecomplex, ptr %573, i64 %575
  %577 = load ptr, ptr %34, align 8, !tbaa !5
  %578 = load ptr, ptr %35, align 8, !tbaa !5
  %579 = load i32, ptr %56, align 4, !tbaa !9
  %580 = sext i32 %579 to i64
  %581 = getelementptr inbounds %struct.doublecomplex, ptr %578, i64 %580
  %582 = load ptr, ptr %36, align 8, !tbaa !5
  %583 = load ptr, ptr %48, align 8, !tbaa !5
  %584 = load i32, ptr %71, align 4, !tbaa !9
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds double, ptr %583, i64 %585
  %587 = load ptr, ptr %48, align 8, !tbaa !5
  %588 = load i32, ptr %84, align 4, !tbaa !9
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds double, ptr %587, i64 %589
  %591 = load ptr, ptr %48, align 8, !tbaa !5
  %592 = load i32, ptr %76, align 4, !tbaa !9
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds double, ptr %591, i64 %593
  call void @zggbal_(ptr noundef @.str.10, ptr noundef %572, ptr noundef %576, ptr noundef %577, ptr noundef %581, ptr noundef %582, ptr noundef %101, ptr noundef %100, ptr noundef %586, ptr noundef %590, ptr noundef %594, ptr noundef %66)
  %595 = load i32, ptr %100, align 4, !tbaa !9
  %596 = add nsw i32 %595, 1
  %597 = load i32, ptr %101, align 4, !tbaa !9
  %598 = sub nsw i32 %596, %597
  store i32 %598, ptr %77, align 4, !tbaa !9
  %599 = load ptr, ptr %32, align 8, !tbaa !5
  %600 = load i32, ptr %599, align 4, !tbaa !9
  %601 = add nsw i32 %600, 1
  %602 = load i32, ptr %101, align 4, !tbaa !9
  %603 = sub nsw i32 %601, %602
  store i32 %603, ptr %72, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  %604 = load i32, ptr %67, align 4, !tbaa !9
  %605 = load i32, ptr %77, align 4, !tbaa !9
  %606 = add nsw i32 %604, %605
  store i32 %606, ptr %68, align 4, !tbaa !9
  %607 = load ptr, ptr %47, align 8, !tbaa !5
  %608 = load i32, ptr %607, align 4, !tbaa !9
  %609 = add nsw i32 %608, 1
  %610 = load i32, ptr %68, align 4, !tbaa !9
  %611 = sub nsw i32 %609, %610
  store i32 %611, ptr %61, align 4, !tbaa !9
  %612 = load ptr, ptr %35, align 8, !tbaa !5
  %613 = load i32, ptr %101, align 4, !tbaa !9
  %614 = load i32, ptr %101, align 4, !tbaa !9
  %615 = load i32, ptr %55, align 4, !tbaa !9
  %616 = mul nsw i32 %614, %615
  %617 = add nsw i32 %613, %616
  %618 = sext i32 %617 to i64
  %619 = getelementptr inbounds %struct.doublecomplex, ptr %612, i64 %618
  %620 = load ptr, ptr %36, align 8, !tbaa !5
  %621 = load ptr, ptr %46, align 8, !tbaa !5
  %622 = load i32, ptr %67, align 4, !tbaa !9
  %623 = sext i32 %622 to i64
  %624 = getelementptr inbounds %struct.doublecomplex, ptr %621, i64 %623
  %625 = load ptr, ptr %46, align 8, !tbaa !5
  %626 = load i32, ptr %68, align 4, !tbaa !9
  %627 = sext i32 %626 to i64
  %628 = getelementptr inbounds %struct.doublecomplex, ptr %625, i64 %627
  call void @zgeqrf_(ptr noundef %77, ptr noundef %72, ptr noundef %619, ptr noundef %620, ptr noundef %624, ptr noundef %628, ptr noundef %61, ptr noundef %66)
  %629 = load ptr, ptr %47, align 8, !tbaa !5
  %630 = load i32, ptr %629, align 4, !tbaa !9
  %631 = add nsw i32 %630, 1
  %632 = load i32, ptr %68, align 4, !tbaa !9
  %633 = sub nsw i32 %631, %632
  store i32 %633, ptr %61, align 4, !tbaa !9
  %634 = load ptr, ptr %35, align 8, !tbaa !5
  %635 = load i32, ptr %101, align 4, !tbaa !9
  %636 = load i32, ptr %101, align 4, !tbaa !9
  %637 = load i32, ptr %55, align 4, !tbaa !9
  %638 = mul nsw i32 %636, %637
  %639 = add nsw i32 %635, %638
  %640 = sext i32 %639 to i64
  %641 = getelementptr inbounds %struct.doublecomplex, ptr %634, i64 %640
  %642 = load ptr, ptr %36, align 8, !tbaa !5
  %643 = load ptr, ptr %46, align 8, !tbaa !5
  %644 = load i32, ptr %67, align 4, !tbaa !9
  %645 = sext i32 %644 to i64
  %646 = getelementptr inbounds %struct.doublecomplex, ptr %643, i64 %645
  %647 = load ptr, ptr %33, align 8, !tbaa !5
  %648 = load i32, ptr %101, align 4, !tbaa !9
  %649 = load i32, ptr %101, align 4, !tbaa !9
  %650 = load i32, ptr %53, align 4, !tbaa !9
  %651 = mul nsw i32 %649, %650
  %652 = add nsw i32 %648, %651
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds %struct.doublecomplex, ptr %647, i64 %653
  %655 = load ptr, ptr %34, align 8, !tbaa !5
  %656 = load ptr, ptr %46, align 8, !tbaa !5
  %657 = load i32, ptr %68, align 4, !tbaa !9
  %658 = sext i32 %657 to i64
  %659 = getelementptr inbounds %struct.doublecomplex, ptr %656, i64 %658
  call void @zunmqr_(ptr noundef @.str.13, ptr noundef @.str.14, ptr noundef %77, ptr noundef %72, ptr noundef %77, ptr noundef %641, ptr noundef %642, ptr noundef %646, ptr noundef %654, ptr noundef %655, ptr noundef %659, ptr noundef %61, ptr noundef %66)
  %660 = load i32, ptr %74, align 4, !tbaa !9
  %661 = icmp ne i32 %660, 0
  br i1 %661, label %662, label %720

662:                                              ; preds = %564
  %663 = load ptr, ptr %32, align 8, !tbaa !5
  %664 = load ptr, ptr %32, align 8, !tbaa !5
  %665 = load ptr, ptr %40, align 8, !tbaa !5
  %666 = load i32, ptr %58, align 4, !tbaa !9
  %667 = sext i32 %666 to i64
  %668 = getelementptr inbounds %struct.doublecomplex, ptr %665, i64 %667
  %669 = load ptr, ptr %41, align 8, !tbaa !5
  call void @zlaset_(ptr noundef @.str.15, ptr noundef %663, ptr noundef %664, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %668, ptr noundef %669)
  %670 = load i32, ptr %77, align 4, !tbaa !9
  %671 = icmp sgt i32 %670, 1
  br i1 %671, label %672, label %697

672:                                              ; preds = %662
  %673 = load i32, ptr %77, align 4, !tbaa !9
  %674 = sub nsw i32 %673, 1
  store i32 %674, ptr %61, align 4, !tbaa !9
  %675 = load i32, ptr %77, align 4, !tbaa !9
  %676 = sub nsw i32 %675, 1
  store i32 %676, ptr %62, align 4, !tbaa !9
  %677 = load ptr, ptr %35, align 8, !tbaa !5
  %678 = load i32, ptr %101, align 4, !tbaa !9
  %679 = add nsw i32 %678, 1
  %680 = load i32, ptr %101, align 4, !tbaa !9
  %681 = load i32, ptr %55, align 4, !tbaa !9
  %682 = mul nsw i32 %680, %681
  %683 = add nsw i32 %679, %682
  %684 = sext i32 %683 to i64
  %685 = getelementptr inbounds %struct.doublecomplex, ptr %677, i64 %684
  %686 = load ptr, ptr %36, align 8, !tbaa !5
  %687 = load ptr, ptr %40, align 8, !tbaa !5
  %688 = load i32, ptr %101, align 4, !tbaa !9
  %689 = add nsw i32 %688, 1
  %690 = load i32, ptr %101, align 4, !tbaa !9
  %691 = load i32, ptr %57, align 4, !tbaa !9
  %692 = mul nsw i32 %690, %691
  %693 = add nsw i32 %689, %692
  %694 = sext i32 %693 to i64
  %695 = getelementptr inbounds %struct.doublecomplex, ptr %687, i64 %694
  %696 = load ptr, ptr %41, align 8, !tbaa !5
  call void @zlacpy_(ptr noundef @.str.13, ptr noundef %61, ptr noundef %62, ptr noundef %685, ptr noundef %686, ptr noundef %695, ptr noundef %696)
  br label %697

697:                                              ; preds = %672, %662
  %698 = load ptr, ptr %47, align 8, !tbaa !5
  %699 = load i32, ptr %698, align 4, !tbaa !9
  %700 = add nsw i32 %699, 1
  %701 = load i32, ptr %68, align 4, !tbaa !9
  %702 = sub nsw i32 %700, %701
  store i32 %702, ptr %61, align 4, !tbaa !9
  %703 = load ptr, ptr %40, align 8, !tbaa !5
  %704 = load i32, ptr %101, align 4, !tbaa !9
  %705 = load i32, ptr %101, align 4, !tbaa !9
  %706 = load i32, ptr %57, align 4, !tbaa !9
  %707 = mul nsw i32 %705, %706
  %708 = add nsw i32 %704, %707
  %709 = sext i32 %708 to i64
  %710 = getelementptr inbounds %struct.doublecomplex, ptr %703, i64 %709
  %711 = load ptr, ptr %41, align 8, !tbaa !5
  %712 = load ptr, ptr %46, align 8, !tbaa !5
  %713 = load i32, ptr %67, align 4, !tbaa !9
  %714 = sext i32 %713 to i64
  %715 = getelementptr inbounds %struct.doublecomplex, ptr %712, i64 %714
  %716 = load ptr, ptr %46, align 8, !tbaa !5
  %717 = load i32, ptr %68, align 4, !tbaa !9
  %718 = sext i32 %717 to i64
  %719 = getelementptr inbounds %struct.doublecomplex, ptr %716, i64 %718
  call void @zungqr_(ptr noundef %77, ptr noundef %77, ptr noundef %77, ptr noundef %710, ptr noundef %711, ptr noundef %715, ptr noundef %719, ptr noundef %61, ptr noundef %66)
  br label %720

720:                                              ; preds = %697, %564
  %721 = load i32, ptr %75, align 4, !tbaa !9
  %722 = icmp ne i32 %721, 0
  br i1 %722, label %723, label %731

723:                                              ; preds = %720
  %724 = load ptr, ptr %32, align 8, !tbaa !5
  %725 = load ptr, ptr %32, align 8, !tbaa !5
  %726 = load ptr, ptr %42, align 8, !tbaa !5
  %727 = load i32, ptr %60, align 4, !tbaa !9
  %728 = sext i32 %727 to i64
  %729 = getelementptr inbounds %struct.doublecomplex, ptr %726, i64 %728
  %730 = load ptr, ptr %43, align 8, !tbaa !5
  call void @zlaset_(ptr noundef @.str.15, ptr noundef %724, ptr noundef %725, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %729, ptr noundef %730)
  br label %731

731:                                              ; preds = %723, %720
  %732 = load ptr, ptr %27, align 8, !tbaa !5
  %733 = load ptr, ptr %28, align 8, !tbaa !5
  %734 = load ptr, ptr %32, align 8, !tbaa !5
  %735 = load ptr, ptr %33, align 8, !tbaa !5
  %736 = load i32, ptr %54, align 4, !tbaa !9
  %737 = sext i32 %736 to i64
  %738 = getelementptr inbounds %struct.doublecomplex, ptr %735, i64 %737
  %739 = load ptr, ptr %34, align 8, !tbaa !5
  %740 = load ptr, ptr %35, align 8, !tbaa !5
  %741 = load i32, ptr %56, align 4, !tbaa !9
  %742 = sext i32 %741 to i64
  %743 = getelementptr inbounds %struct.doublecomplex, ptr %740, i64 %742
  %744 = load ptr, ptr %36, align 8, !tbaa !5
  %745 = load ptr, ptr %40, align 8, !tbaa !5
  %746 = load i32, ptr %58, align 4, !tbaa !9
  %747 = sext i32 %746 to i64
  %748 = getelementptr inbounds %struct.doublecomplex, ptr %745, i64 %747
  %749 = load ptr, ptr %41, align 8, !tbaa !5
  %750 = load ptr, ptr %42, align 8, !tbaa !5
  %751 = load i32, ptr %60, align 4, !tbaa !9
  %752 = sext i32 %751 to i64
  %753 = getelementptr inbounds %struct.doublecomplex, ptr %750, i64 %752
  %754 = load ptr, ptr %43, align 8, !tbaa !5
  call void @zgghrd_(ptr noundef %732, ptr noundef %733, ptr noundef %734, ptr noundef %101, ptr noundef %100, ptr noundef %738, ptr noundef %739, ptr noundef %743, ptr noundef %744, ptr noundef %748, ptr noundef %749, ptr noundef %753, ptr noundef %754, ptr noundef %66)
  %755 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 0, ptr %755, align 4, !tbaa !9
  %756 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %756, ptr %68, align 4, !tbaa !9
  %757 = load ptr, ptr %47, align 8, !tbaa !5
  %758 = load i32, ptr %757, align 4, !tbaa !9
  %759 = add nsw i32 %758, 1
  %760 = load i32, ptr %68, align 4, !tbaa !9
  %761 = sub nsw i32 %759, %760
  store i32 %761, ptr %61, align 4, !tbaa !9
  %762 = load ptr, ptr %27, align 8, !tbaa !5
  %763 = load ptr, ptr %28, align 8, !tbaa !5
  %764 = load ptr, ptr %32, align 8, !tbaa !5
  %765 = load ptr, ptr %33, align 8, !tbaa !5
  %766 = load i32, ptr %54, align 4, !tbaa !9
  %767 = sext i32 %766 to i64
  %768 = getelementptr inbounds %struct.doublecomplex, ptr %765, i64 %767
  %769 = load ptr, ptr %34, align 8, !tbaa !5
  %770 = load ptr, ptr %35, align 8, !tbaa !5
  %771 = load i32, ptr %56, align 4, !tbaa !9
  %772 = sext i32 %771 to i64
  %773 = getelementptr inbounds %struct.doublecomplex, ptr %770, i64 %772
  %774 = load ptr, ptr %36, align 8, !tbaa !5
  %775 = load ptr, ptr %38, align 8, !tbaa !5
  %776 = getelementptr inbounds %struct.doublecomplex, ptr %775, i64 1
  %777 = load ptr, ptr %39, align 8, !tbaa !5
  %778 = getelementptr inbounds %struct.doublecomplex, ptr %777, i64 1
  %779 = load ptr, ptr %40, align 8, !tbaa !5
  %780 = load i32, ptr %58, align 4, !tbaa !9
  %781 = sext i32 %780 to i64
  %782 = getelementptr inbounds %struct.doublecomplex, ptr %779, i64 %781
  %783 = load ptr, ptr %41, align 8, !tbaa !5
  %784 = load ptr, ptr %42, align 8, !tbaa !5
  %785 = load i32, ptr %60, align 4, !tbaa !9
  %786 = sext i32 %785 to i64
  %787 = getelementptr inbounds %struct.doublecomplex, ptr %784, i64 %786
  %788 = load ptr, ptr %43, align 8, !tbaa !5
  %789 = load ptr, ptr %46, align 8, !tbaa !5
  %790 = load i32, ptr %68, align 4, !tbaa !9
  %791 = sext i32 %790 to i64
  %792 = getelementptr inbounds %struct.doublecomplex, ptr %789, i64 %791
  %793 = load ptr, ptr %48, align 8, !tbaa !5
  %794 = load i32, ptr %76, align 4, !tbaa !9
  %795 = sext i32 %794 to i64
  %796 = getelementptr inbounds double, ptr %793, i64 %795
  call void @zhgeqz_(ptr noundef @.str.2, ptr noundef %762, ptr noundef %763, ptr noundef %764, ptr noundef %101, ptr noundef %100, ptr noundef %768, ptr noundef %769, ptr noundef %773, ptr noundef %774, ptr noundef %776, ptr noundef %778, ptr noundef %782, ptr noundef %783, ptr noundef %787, ptr noundef %788, ptr noundef %792, ptr noundef %61, ptr noundef %796, ptr noundef %66)
  %797 = load i32, ptr %66, align 4, !tbaa !9
  %798 = icmp ne i32 %797, 0
  br i1 %798, label %799, label %834

799:                                              ; preds = %731
  %800 = load i32, ptr %66, align 4, !tbaa !9
  %801 = icmp sgt i32 %800, 0
  br i1 %801, label %802, label %810

802:                                              ; preds = %799
  %803 = load i32, ptr %66, align 4, !tbaa !9
  %804 = load ptr, ptr %32, align 8, !tbaa !5
  %805 = load i32, ptr %804, align 4, !tbaa !9
  %806 = icmp sle i32 %803, %805
  br i1 %806, label %807, label %810

807:                                              ; preds = %802
  %808 = load i32, ptr %66, align 4, !tbaa !9
  %809 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 %808, ptr %809, align 4, !tbaa !9
  br label %833

810:                                              ; preds = %802, %799
  %811 = load i32, ptr %66, align 4, !tbaa !9
  %812 = load ptr, ptr %32, align 8, !tbaa !5
  %813 = load i32, ptr %812, align 4, !tbaa !9
  %814 = icmp sgt i32 %811, %813
  br i1 %814, label %815, label %827

815:                                              ; preds = %810
  %816 = load i32, ptr %66, align 4, !tbaa !9
  %817 = load ptr, ptr %32, align 8, !tbaa !5
  %818 = load i32, ptr %817, align 4, !tbaa !9
  %819 = shl i32 %818, 1
  %820 = icmp sle i32 %816, %819
  br i1 %820, label %821, label %827

821:                                              ; preds = %815
  %822 = load i32, ptr %66, align 4, !tbaa !9
  %823 = load ptr, ptr %32, align 8, !tbaa !5
  %824 = load i32, ptr %823, align 4, !tbaa !9
  %825 = sub nsw i32 %822, %824
  %826 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 %825, ptr %826, align 4, !tbaa !9
  br label %832

827:                                              ; preds = %815, %810
  %828 = load ptr, ptr %32, align 8, !tbaa !5
  %829 = load i32, ptr %828, align 4, !tbaa !9
  %830 = add nsw i32 %829, 1
  %831 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 %830, ptr %831, align 4, !tbaa !9
  br label %832

832:                                              ; preds = %827, %821
  br label %833

833:                                              ; preds = %832, %807
  br label %1099

834:                                              ; preds = %731
  %835 = load i32, ptr %96, align 4, !tbaa !9
  %836 = icmp ne i32 %835, 0
  br i1 %836, label %837, label %985

837:                                              ; preds = %834
  %838 = load i32, ptr %80, align 4, !tbaa !9
  %839 = icmp ne i32 %838, 0
  br i1 %839, label %840, label %845

840:                                              ; preds = %837
  %841 = load ptr, ptr %32, align 8, !tbaa !5
  %842 = load ptr, ptr %38, align 8, !tbaa !5
  %843 = getelementptr inbounds %struct.doublecomplex, ptr %842, i64 1
  %844 = load ptr, ptr %32, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %90, ptr noundef %64, ptr noundef %841, ptr noundef @c__1, ptr noundef %843, ptr noundef %844, ptr noundef %66)
  br label %845

845:                                              ; preds = %840, %837
  %846 = load i32, ptr %81, align 4, !tbaa !9
  %847 = icmp ne i32 %846, 0
  br i1 %847, label %848, label %853

848:                                              ; preds = %845
  %849 = load ptr, ptr %32, align 8, !tbaa !5
  %850 = load ptr, ptr %39, align 8, !tbaa !5
  %851 = getelementptr inbounds %struct.doublecomplex, ptr %850, i64 1
  %852 = load ptr, ptr %32, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %91, ptr noundef %65, ptr noundef %849, ptr noundef @c__1, ptr noundef %851, ptr noundef %852, ptr noundef %66)
  br label %853

853:                                              ; preds = %848, %845
  %854 = load ptr, ptr %32, align 8, !tbaa !5
  %855 = load i32, ptr %854, align 4, !tbaa !9
  store i32 %855, ptr %61, align 4, !tbaa !9
  store i32 1, ptr %70, align 4, !tbaa !9
  br label %856

856:                                              ; preds = %875, %853
  %857 = load i32, ptr %70, align 4, !tbaa !9
  %858 = load i32, ptr %61, align 4, !tbaa !9
  %859 = icmp sle i32 %857, %858
  br i1 %859, label %860, label %878

860:                                              ; preds = %856
  %861 = load ptr, ptr %30, align 8, !tbaa !5
  %862 = load ptr, ptr %38, align 8, !tbaa !5
  %863 = load i32, ptr %70, align 4, !tbaa !9
  %864 = sext i32 %863 to i64
  %865 = getelementptr inbounds %struct.doublecomplex, ptr %862, i64 %864
  %866 = load ptr, ptr %39, align 8, !tbaa !5
  %867 = load i32, ptr %70, align 4, !tbaa !9
  %868 = sext i32 %867 to i64
  %869 = getelementptr inbounds %struct.doublecomplex, ptr %866, i64 %868
  %870 = call i32 (ptr, ptr, ...) %861(ptr noundef %865, ptr noundef %869)
  %871 = load ptr, ptr %51, align 8, !tbaa !5
  %872 = load i32, ptr %70, align 4, !tbaa !9
  %873 = sext i32 %872 to i64
  %874 = getelementptr inbounds i32, ptr %871, i64 %873
  store i32 %870, ptr %874, align 4, !tbaa !9
  br label %875

875:                                              ; preds = %860
  %876 = load i32, ptr %70, align 4, !tbaa !9
  %877 = add nsw i32 %876, 1
  store i32 %877, ptr %70, align 4, !tbaa !9
  br label %856, !llvm.loop !16

878:                                              ; preds = %856
  %879 = load ptr, ptr %47, align 8, !tbaa !5
  %880 = load i32, ptr %879, align 4, !tbaa !9
  %881 = load i32, ptr %68, align 4, !tbaa !9
  %882 = sub nsw i32 %880, %881
  %883 = add nsw i32 %882, 1
  store i32 %883, ptr %61, align 4, !tbaa !9
  %884 = load ptr, ptr %51, align 8, !tbaa !5
  %885 = getelementptr inbounds i32, ptr %884, i64 1
  %886 = load ptr, ptr %32, align 8, !tbaa !5
  %887 = load ptr, ptr %33, align 8, !tbaa !5
  %888 = load i32, ptr %54, align 4, !tbaa !9
  %889 = sext i32 %888 to i64
  %890 = getelementptr inbounds %struct.doublecomplex, ptr %887, i64 %889
  %891 = load ptr, ptr %34, align 8, !tbaa !5
  %892 = load ptr, ptr %35, align 8, !tbaa !5
  %893 = load i32, ptr %56, align 4, !tbaa !9
  %894 = sext i32 %893 to i64
  %895 = getelementptr inbounds %struct.doublecomplex, ptr %892, i64 %894
  %896 = load ptr, ptr %36, align 8, !tbaa !5
  %897 = load ptr, ptr %38, align 8, !tbaa !5
  %898 = getelementptr inbounds %struct.doublecomplex, ptr %897, i64 1
  %899 = load ptr, ptr %39, align 8, !tbaa !5
  %900 = getelementptr inbounds %struct.doublecomplex, ptr %899, i64 1
  %901 = load ptr, ptr %40, align 8, !tbaa !5
  %902 = load i32, ptr %58, align 4, !tbaa !9
  %903 = sext i32 %902 to i64
  %904 = getelementptr inbounds %struct.doublecomplex, ptr %901, i64 %903
  %905 = load ptr, ptr %41, align 8, !tbaa !5
  %906 = load ptr, ptr %42, align 8, !tbaa !5
  %907 = load i32, ptr %60, align 4, !tbaa !9
  %908 = sext i32 %907 to i64
  %909 = getelementptr inbounds %struct.doublecomplex, ptr %906, i64 %908
  %910 = load ptr, ptr %43, align 8, !tbaa !5
  %911 = load ptr, ptr %37, align 8, !tbaa !5
  %912 = getelementptr inbounds [2 x double], ptr %99, i64 0, i64 0
  %913 = load ptr, ptr %46, align 8, !tbaa !5
  %914 = load i32, ptr %68, align 4, !tbaa !9
  %915 = sext i32 %914 to i64
  %916 = getelementptr inbounds %struct.doublecomplex, ptr %913, i64 %915
  %917 = load ptr, ptr %49, align 8, !tbaa !5
  %918 = getelementptr inbounds i32, ptr %917, i64 1
  %919 = load ptr, ptr %50, align 8, !tbaa !5
  call void @ztgsen_(ptr noundef %63, ptr noundef %74, ptr noundef %75, ptr noundef %885, ptr noundef %886, ptr noundef %890, ptr noundef %891, ptr noundef %895, ptr noundef %896, ptr noundef %898, ptr noundef %900, ptr noundef %904, ptr noundef %905, ptr noundef %909, ptr noundef %910, ptr noundef %911, ptr noundef %78, ptr noundef %79, ptr noundef %912, ptr noundef %916, ptr noundef %61, ptr noundef %918, ptr noundef %919, ptr noundef %66)
  %920 = load i32, ptr %63, align 4, !tbaa !9
  %921 = icmp sge i32 %920, 1
  br i1 %921, label %922, label %942

922:                                              ; preds = %878
  %923 = load i32, ptr %92, align 4, !tbaa !9
  store i32 %923, ptr %61, align 4, !tbaa !9
  %924 = load ptr, ptr %37, align 8, !tbaa !5
  %925 = load i32, ptr %924, align 4, !tbaa !9
  %926 = shl i32 %925, 1
  %927 = load ptr, ptr %32, align 8, !tbaa !5
  %928 = load i32, ptr %927, align 4, !tbaa !9
  %929 = load ptr, ptr %37, align 8, !tbaa !5
  %930 = load i32, ptr %929, align 4, !tbaa !9
  %931 = sub nsw i32 %928, %930
  %932 = mul nsw i32 %926, %931
  store i32 %932, ptr %62, align 4, !tbaa !9
  %933 = load i32, ptr %61, align 4, !tbaa !9
  %934 = load i32, ptr %62, align 4, !tbaa !9
  %935 = icmp sge i32 %933, %934
  br i1 %935, label %936, label %938

936:                                              ; preds = %922
  %937 = load i32, ptr %61, align 4, !tbaa !9
  br label %940

938:                                              ; preds = %922
  %939 = load i32, ptr %62, align 4, !tbaa !9
  br label %940

940:                                              ; preds = %938, %936
  %941 = phi i32 [ %937, %936 ], [ %939, %938 ]
  store i32 %941, ptr %92, align 4, !tbaa !9
  br label %942

942:                                              ; preds = %940, %878
  %943 = load i32, ptr %66, align 4, !tbaa !9
  %944 = icmp eq i32 %943, -21
  br i1 %944, label %945, label %947

945:                                              ; preds = %942
  %946 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -21, ptr %946, align 4, !tbaa !9
  br label %984

947:                                              ; preds = %942
  %948 = load i32, ptr %63, align 4, !tbaa !9
  %949 = icmp eq i32 %948, 1
  br i1 %949, label %953, label %950

950:                                              ; preds = %947
  %951 = load i32, ptr %63, align 4, !tbaa !9
  %952 = icmp eq i32 %951, 4
  br i1 %952, label %953, label %960

953:                                              ; preds = %950, %947
  %954 = load double, ptr %78, align 8, !tbaa !15
  %955 = load ptr, ptr %44, align 8, !tbaa !5
  %956 = getelementptr inbounds double, ptr %955, i64 1
  store double %954, ptr %956, align 8, !tbaa !15
  %957 = load double, ptr %79, align 8, !tbaa !15
  %958 = load ptr, ptr %44, align 8, !tbaa !5
  %959 = getelementptr inbounds double, ptr %958, i64 2
  store double %957, ptr %959, align 8, !tbaa !15
  br label %960

960:                                              ; preds = %953, %950
  %961 = load i32, ptr %63, align 4, !tbaa !9
  %962 = icmp eq i32 %961, 2
  br i1 %962, label %966, label %963

963:                                              ; preds = %960
  %964 = load i32, ptr %63, align 4, !tbaa !9
  %965 = icmp eq i32 %964, 4
  br i1 %965, label %966, label %975

966:                                              ; preds = %963, %960
  %967 = getelementptr inbounds [2 x double], ptr %99, i64 0, i64 0
  %968 = load double, ptr %967, align 16, !tbaa !15
  %969 = load ptr, ptr %45, align 8, !tbaa !5
  %970 = getelementptr inbounds double, ptr %969, i64 1
  store double %968, ptr %970, align 8, !tbaa !15
  %971 = getelementptr inbounds [2 x double], ptr %99, i64 0, i64 1
  %972 = load double, ptr %971, align 8, !tbaa !15
  %973 = load ptr, ptr %45, align 8, !tbaa !5
  %974 = getelementptr inbounds double, ptr %973, i64 2
  store double %972, ptr %974, align 8, !tbaa !15
  br label %975

975:                                              ; preds = %966, %963
  %976 = load i32, ptr %66, align 4, !tbaa !9
  %977 = icmp eq i32 %976, 1
  br i1 %977, label %978, label %983

978:                                              ; preds = %975
  %979 = load ptr, ptr %32, align 8, !tbaa !5
  %980 = load i32, ptr %979, align 4, !tbaa !9
  %981 = add nsw i32 %980, 3
  %982 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 %981, ptr %982, align 4, !tbaa !9
  br label %983

983:                                              ; preds = %978, %975
  br label %984

984:                                              ; preds = %983, %945
  br label %985

985:                                              ; preds = %984, %834
  %986 = load i32, ptr %74, align 4, !tbaa !9
  %987 = icmp ne i32 %986, 0
  br i1 %987, label %988, label %1004

988:                                              ; preds = %985
  %989 = load ptr, ptr %32, align 8, !tbaa !5
  %990 = load ptr, ptr %48, align 8, !tbaa !5
  %991 = load i32, ptr %71, align 4, !tbaa !9
  %992 = sext i32 %991 to i64
  %993 = getelementptr inbounds double, ptr %990, i64 %992
  %994 = load ptr, ptr %48, align 8, !tbaa !5
  %995 = load i32, ptr %84, align 4, !tbaa !9
  %996 = sext i32 %995 to i64
  %997 = getelementptr inbounds double, ptr %994, i64 %996
  %998 = load ptr, ptr %32, align 8, !tbaa !5
  %999 = load ptr, ptr %40, align 8, !tbaa !5
  %1000 = load i32, ptr %58, align 4, !tbaa !9
  %1001 = sext i32 %1000 to i64
  %1002 = getelementptr inbounds %struct.doublecomplex, ptr %999, i64 %1001
  %1003 = load ptr, ptr %41, align 8, !tbaa !5
  call void @zggbak_(ptr noundef @.str.10, ptr noundef @.str.13, ptr noundef %989, ptr noundef %101, ptr noundef %100, ptr noundef %993, ptr noundef %997, ptr noundef %998, ptr noundef %1002, ptr noundef %1003, ptr noundef %66)
  br label %1004

1004:                                             ; preds = %988, %985
  %1005 = load i32, ptr %75, align 4, !tbaa !9
  %1006 = icmp ne i32 %1005, 0
  br i1 %1006, label %1007, label %1023

1007:                                             ; preds = %1004
  %1008 = load ptr, ptr %32, align 8, !tbaa !5
  %1009 = load ptr, ptr %48, align 8, !tbaa !5
  %1010 = load i32, ptr %71, align 4, !tbaa !9
  %1011 = sext i32 %1010 to i64
  %1012 = getelementptr inbounds double, ptr %1009, i64 %1011
  %1013 = load ptr, ptr %48, align 8, !tbaa !5
  %1014 = load i32, ptr %84, align 4, !tbaa !9
  %1015 = sext i32 %1014 to i64
  %1016 = getelementptr inbounds double, ptr %1013, i64 %1015
  %1017 = load ptr, ptr %32, align 8, !tbaa !5
  %1018 = load ptr, ptr %42, align 8, !tbaa !5
  %1019 = load i32, ptr %60, align 4, !tbaa !9
  %1020 = sext i32 %1019 to i64
  %1021 = getelementptr inbounds %struct.doublecomplex, ptr %1018, i64 %1020
  %1022 = load ptr, ptr %43, align 8, !tbaa !5
  call void @zggbak_(ptr noundef @.str.10, ptr noundef @.str.16, ptr noundef %1008, ptr noundef %101, ptr noundef %100, ptr noundef %1012, ptr noundef %1016, ptr noundef %1017, ptr noundef %1021, ptr noundef %1022, ptr noundef %66)
  br label %1023

1023:                                             ; preds = %1007, %1004
  %1024 = load i32, ptr %80, align 4, !tbaa !9
  %1025 = icmp ne i32 %1024, 0
  br i1 %1025, label %1026, label %1038

1026:                                             ; preds = %1023
  %1027 = load ptr, ptr %32, align 8, !tbaa !5
  %1028 = load ptr, ptr %32, align 8, !tbaa !5
  %1029 = load ptr, ptr %33, align 8, !tbaa !5
  %1030 = load i32, ptr %54, align 4, !tbaa !9
  %1031 = sext i32 %1030 to i64
  %1032 = getelementptr inbounds %struct.doublecomplex, ptr %1029, i64 %1031
  %1033 = load ptr, ptr %34, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.17, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %90, ptr noundef %64, ptr noundef %1027, ptr noundef %1028, ptr noundef %1032, ptr noundef %1033, ptr noundef %66)
  %1034 = load ptr, ptr %32, align 8, !tbaa !5
  %1035 = load ptr, ptr %38, align 8, !tbaa !5
  %1036 = getelementptr inbounds %struct.doublecomplex, ptr %1035, i64 1
  %1037 = load ptr, ptr %32, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %90, ptr noundef %64, ptr noundef %1034, ptr noundef @c__1, ptr noundef %1036, ptr noundef %1037, ptr noundef %66)
  br label %1038

1038:                                             ; preds = %1026, %1023
  %1039 = load i32, ptr %81, align 4, !tbaa !9
  %1040 = icmp ne i32 %1039, 0
  br i1 %1040, label %1041, label %1053

1041:                                             ; preds = %1038
  %1042 = load ptr, ptr %32, align 8, !tbaa !5
  %1043 = load ptr, ptr %32, align 8, !tbaa !5
  %1044 = load ptr, ptr %35, align 8, !tbaa !5
  %1045 = load i32, ptr %56, align 4, !tbaa !9
  %1046 = sext i32 %1045 to i64
  %1047 = getelementptr inbounds %struct.doublecomplex, ptr %1044, i64 %1046
  %1048 = load ptr, ptr %36, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.17, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %91, ptr noundef %65, ptr noundef %1042, ptr noundef %1043, ptr noundef %1047, ptr noundef %1048, ptr noundef %66)
  %1049 = load ptr, ptr %32, align 8, !tbaa !5
  %1050 = load ptr, ptr %39, align 8, !tbaa !5
  %1051 = getelementptr inbounds %struct.doublecomplex, ptr %1050, i64 1
  %1052 = load ptr, ptr %32, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %91, ptr noundef %65, ptr noundef %1049, ptr noundef @c__1, ptr noundef %1051, ptr noundef %1052, ptr noundef %66)
  br label %1053

1053:                                             ; preds = %1041, %1038
  %1054 = load i32, ptr %96, align 4, !tbaa !9
  %1055 = icmp ne i32 %1054, 0
  br i1 %1055, label %1056, label %1098

1056:                                             ; preds = %1053
  store i32 1, ptr %89, align 4, !tbaa !9
  %1057 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 0, ptr %1057, align 4, !tbaa !9
  %1058 = load ptr, ptr %32, align 8, !tbaa !5
  %1059 = load i32, ptr %1058, align 4, !tbaa !9
  store i32 %1059, ptr %61, align 4, !tbaa !9
  store i32 1, ptr %70, align 4, !tbaa !9
  br label %1060

1060:                                             ; preds = %1094, %1056
  %1061 = load i32, ptr %70, align 4, !tbaa !9
  %1062 = load i32, ptr %61, align 4, !tbaa !9
  %1063 = icmp sle i32 %1061, %1062
  br i1 %1063, label %1064, label %1097

1064:                                             ; preds = %1060
  %1065 = load ptr, ptr %30, align 8, !tbaa !5
  %1066 = load ptr, ptr %38, align 8, !tbaa !5
  %1067 = load i32, ptr %70, align 4, !tbaa !9
  %1068 = sext i32 %1067 to i64
  %1069 = getelementptr inbounds %struct.doublecomplex, ptr %1066, i64 %1068
  %1070 = load ptr, ptr %39, align 8, !tbaa !5
  %1071 = load i32, ptr %70, align 4, !tbaa !9
  %1072 = sext i32 %1071 to i64
  %1073 = getelementptr inbounds %struct.doublecomplex, ptr %1070, i64 %1072
  %1074 = call i32 (ptr, ptr, ...) %1065(ptr noundef %1069, ptr noundef %1073)
  store i32 %1074, ptr %73, align 4, !tbaa !9
  %1075 = load i32, ptr %73, align 4, !tbaa !9
  %1076 = icmp ne i32 %1075, 0
  br i1 %1076, label %1077, label %1081

1077:                                             ; preds = %1064
  %1078 = load ptr, ptr %37, align 8, !tbaa !5
  %1079 = load i32, ptr %1078, align 4, !tbaa !9
  %1080 = add nsw i32 %1079, 1
  store i32 %1080, ptr %1078, align 4, !tbaa !9
  br label %1081

1081:                                             ; preds = %1077, %1064
  %1082 = load i32, ptr %73, align 4, !tbaa !9
  %1083 = icmp ne i32 %1082, 0
  br i1 %1083, label %1084, label %1092

1084:                                             ; preds = %1081
  %1085 = load i32, ptr %89, align 4, !tbaa !9
  %1086 = icmp ne i32 %1085, 0
  br i1 %1086, label %1092, label %1087

1087:                                             ; preds = %1084
  %1088 = load ptr, ptr %32, align 8, !tbaa !5
  %1089 = load i32, ptr %1088, align 4, !tbaa !9
  %1090 = add nsw i32 %1089, 2
  %1091 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 %1090, ptr %1091, align 4, !tbaa !9
  br label %1092

1092:                                             ; preds = %1087, %1084, %1081
  %1093 = load i32, ptr %73, align 4, !tbaa !9
  store i32 %1093, ptr %89, align 4, !tbaa !9
  br label %1094

1094:                                             ; preds = %1092
  %1095 = load i32, ptr %70, align 4, !tbaa !9
  %1096 = add nsw i32 %1095, 1
  store i32 %1096, ptr %70, align 4, !tbaa !9
  br label %1060, !llvm.loop !18

1097:                                             ; preds = %1060
  br label %1098

1098:                                             ; preds = %1097, %1053
  br label %1099

1099:                                             ; preds = %1098, %833
  %1100 = load i32, ptr %92, align 4, !tbaa !9
  %1101 = sitofp i32 %1100 to double
  %1102 = load ptr, ptr %46, align 8, !tbaa !5
  %1103 = getelementptr inbounds %struct.doublecomplex, ptr %1102, i64 1
  %1104 = getelementptr inbounds %struct.doublecomplex, ptr %1103, i32 0, i32 0
  store double %1101, ptr %1104, align 8, !tbaa !11
  %1105 = load ptr, ptr %46, align 8, !tbaa !5
  %1106 = getelementptr inbounds %struct.doublecomplex, ptr %1105, i64 1
  %1107 = getelementptr inbounds %struct.doublecomplex, ptr %1106, i32 0, i32 1
  store double 0.000000e+00, ptr %1107, align 8, !tbaa !14
  %1108 = load i32, ptr %87, align 4, !tbaa !9
  %1109 = load ptr, ptr %49, align 8, !tbaa !5
  %1110 = getelementptr inbounds i32, ptr %1109, i64 1
  store i32 %1108, ptr %1110, align 4, !tbaa !9
  store i32 1, ptr %103, align 4
  br label %1111

1111:                                             ; preds = %1099, %478, %472, %464
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %99) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 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 4, 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 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  ret void
}

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

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

%struct.doublecomplex = type { double, double }

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

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

61:                                               ; preds = %26
  store i32 0, ptr %34, align 4, !tbaa !5
  br label %66

62:                                               ; preds = %26
  %63 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not403 = icmp eq i32 %63, 0
  br i1 %.not403, label %65, label %64

64:                                               ; preds = %62
  store i32 1, ptr %34, align 4, !tbaa !5
  br label %66

65:                                               ; preds = %62
  store i32 0, ptr %34, align 4, !tbaa !5
  br label %66

66:                                               ; preds = %64, %65, %61
  %.not411 = phi i1 [ false, %61 ], [ true, %64 ], [ false, %65 ]
  %.not414 = phi i1 [ true, %61 ], [ false, %64 ], [ true, %65 ]
  %67 = phi i1 [ false, %61 ], [ false, %64 ], [ true, %65 ]
  %68 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #5
  %.not404 = icmp eq i32 %68, 0
  br i1 %.not404, label %70, label %69

69:                                               ; preds = %66
  store i32 0, ptr %35, align 4, !tbaa !5
  br label %74

70:                                               ; preds = %66
  %71 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %.not405 = icmp eq i32 %71, 0
  br i1 %.not405, label %73, label %72

72:                                               ; preds = %70
  store i32 1, ptr %35, align 4, !tbaa !5
  br label %74

73:                                               ; preds = %70
  store i32 0, ptr %35, align 4, !tbaa !5
  br label %74

74:                                               ; preds = %72, %73, %69
  %.not412 = phi i1 [ false, %69 ], [ true, %72 ], [ false, %73 ]
  %.not422 = phi i1 [ true, %69 ], [ false, %72 ], [ true, %73 ]
  %75 = phi i1 [ false, %69 ], [ false, %72 ], [ true, %73 ]
  %76 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #5
  %77 = tail call i32 @lsame_(ptr noundef %4, ptr noundef nonnull @.str) #5
  %78 = tail call i32 @lsame_(ptr noundef %4, ptr noundef nonnull @.str.3) #5
  %79 = tail call i32 @lsame_(ptr noundef %4, ptr noundef nonnull @.str.1) #5
  %80 = tail call i32 @lsame_(ptr noundef %4, ptr noundef nonnull @.str.4) #5
  %81 = load i32, ptr %20, align 4, !tbaa !5
  %82 = icmp eq i32 %81, -1
  br i1 %82, label %86, label %83

83:                                               ; preds = %74
  %84 = load i32, ptr %23, align 4, !tbaa !5
  %85 = icmp eq i32 %84, -1
  br label %86

86:                                               ; preds = %83, %74
  %87 = phi i1 [ true, %74 ], [ %85, %83 ]
  %88 = icmp eq i32 %77, 0
  br i1 %88, label %90, label %89

89:                                               ; preds = %86
  store i32 0, ptr %29, align 4, !tbaa !5
  br label %96

90:                                               ; preds = %86
  %.not406 = icmp eq i32 %78, 0
  br i1 %.not406, label %92, label %91

91:                                               ; preds = %90
  store i32 1, ptr %29, align 4, !tbaa !5
  br label %96

92:                                               ; preds = %90
  %.not407 = icmp eq i32 %79, 0
  br i1 %.not407, label %94, label %93

93:                                               ; preds = %92
  store i32 2, ptr %29, align 4, !tbaa !5
  br label %96

94:                                               ; preds = %92
  %.not408 = icmp eq i32 %80, 0
  br i1 %.not408, label %96, label %95

95:                                               ; preds = %94
  store i32 4, ptr %29, align 4, !tbaa !5
  br label %96

96:                                               ; preds = %91, %94, %95, %93, %89
  %97 = phi i1 [ true, %91 ], [ false, %94 ], [ true, %95 ], [ true, %93 ], [ false, %89 ]
  store i32 0, ptr %25, align 4, !tbaa !5
  %brmerge = or i1 %67, %75
  %.mux = select i1 %67, i32 -1, i32 -2
  br i1 %brmerge, label %.thread443.sink.split, label %98

98:                                               ; preds = %96
  %.not410 = icmp eq i32 %76, 0
  br i1 %.not410, label %99, label %101

99:                                               ; preds = %98
  %100 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str) #5
  %.not409 = icmp eq i32 %100, 0
  br i1 %.not409, label %.thread443.sink.split, label %101

101:                                              ; preds = %99, %98
  %102 = icmp eq i32 %78, 0
  %or.cond.not = select i1 %88, i1 %102, i1 false
  %103 = icmp eq i32 %79, 0
  %or.cond3 = select i1 %or.cond.not, i1 %103, i1 false
  %104 = icmp eq i32 %80, 0
  %or.cond5 = select i1 %or.cond3, i1 %104, i1 false
  %105 = or i32 %77, %76
  %or.cond7.not = icmp eq i32 %105, 0
  %or.cond434 = select i1 %or.cond5, i1 true, i1 %or.cond7.not
  br i1 %or.cond434, label %.thread443.sink.split, label %106

106:                                              ; preds = %101
  %107 = load i32, ptr %5, align 4, !tbaa !5
  %108 = icmp slt i32 %107, 0
  br i1 %108, label %.thread443.sink.split, label %109

109:                                              ; preds = %106
  %110 = load i32, ptr %7, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %107, i32 1)
  %111 = icmp slt i32 %110, %spec.select
  br i1 %111, label %.thread443.sink.split, label %112

112:                                              ; preds = %109
  %113 = load i32, ptr %9, align 4, !tbaa !5
  %114 = icmp slt i32 %113, %spec.select
  br i1 %114, label %.thread443.sink.split, label %115

115:                                              ; preds = %112
  %116 = load i32, ptr %14, align 4, !tbaa !5
  %117 = icmp slt i32 %116, 1
  %118 = icmp ult i32 %116, %107
  %or.cond463 = and i1 %118, %.not411
  %or.cond484 = or i1 %117, %or.cond463
  br i1 %or.cond484, label %.thread443.sink.split, label %119

119:                                              ; preds = %115
  %120 = load i32, ptr %16, align 4, !tbaa !5
  %121 = icmp slt i32 %120, 1
  %122 = icmp ult i32 %120, %107
  %or.cond464 = and i1 %122, %.not412
  %or.cond485 = or i1 %121, %or.cond464
  br i1 %or.cond485, label %.thread443.sink.split, label %123

123:                                              ; preds = %119
  %.pr = load i32, ptr %25, align 4, !tbaa !5
  %124 = icmp eq i32 %.pr, 0
  br i1 %124, label %125, label %.thread443

125:                                              ; preds = %123
  %.not483 = icmp eq i32 %107, 0
  br i1 %.not483, label %148, label %126

126:                                              ; preds = %125
  %127 = shl nuw i32 %107, 1
  %128 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef nonnull %5, ptr noundef nonnull @c__0, i32 noundef 6, i32 noundef 1) #5
  %129 = add nsw i32 %128, 1
  %130 = mul nsw i32 %129, %107
  store i32 %130, ptr %27, align 4, !tbaa !5
  %131 = load i32, ptr %5, align 4, !tbaa !5
  %132 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.6, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef nonnull %5, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %133 = add nsw i32 %132, 1
  %134 = mul nsw i32 %133, %131
  store i32 %134, ptr %28, align 4, !tbaa !5
  %135 = tail call i32 @llvm.smax.i32(i32 %130, i32 %134)
  br i1 %.not414, label %142, label %136

136:                                              ; preds = %126
  store i32 %135, ptr %27, align 4, !tbaa !5
  %137 = load i32, ptr %5, align 4, !tbaa !5
  %138 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.6, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef nonnull %5, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %139 = add nsw i32 %138, 1
  %140 = mul nsw i32 %139, %137
  store i32 %140, ptr %28, align 4, !tbaa !5
  %141 = tail call i32 @llvm.smax.i32(i32 %135, i32 %140)
  br label %142

142:                                              ; preds = %136, %126
  %.0375 = phi i32 [ %141, %136 ], [ %135, %126 ]
  br i1 %97, label %143, label %148

143:                                              ; preds = %142
  store i32 %.0375, ptr %27, align 4, !tbaa !5
  %144 = load i32, ptr %5, align 4, !tbaa !5
  %145 = mul nsw i32 %144, %144
  %146 = lshr i32 %145, 1
  store i32 %146, ptr %28, align 4, !tbaa !5
  %147 = tail call i32 @llvm.smax.i32(i32 %.0375, i32 %146)
  br label %148

148:                                              ; preds = %125, %142, %143
  %.0385 = phi i32 [ %147, %143 ], [ %.0375, %142 ], [ 1, %125 ]
  %.1 = phi i32 [ %.0375, %143 ], [ %.0375, %142 ], [ 1, %125 ]
  %.0 = phi i32 [ %127, %143 ], [ %127, %142 ], [ 1, %125 ]
  %149 = sitofp i32 %.0385 to double
  store double %149, ptr %19, align 8, !tbaa !9
  %150 = getelementptr inbounds i8, ptr %19, i64 8
  store double 0.000000e+00, ptr %150, align 8, !tbaa !12
  br i1 %88, label %151, label %155

151:                                              ; preds = %148
  %152 = load i32, ptr %5, align 4, !tbaa !5
  %153 = icmp eq i32 %152, 0
  %154 = add nsw i32 %152, 2
  %spec.select437 = select i1 %153, i32 1, i32 %154
  br label %155

155:                                              ; preds = %151, %148
  %.0377 = phi i32 [ 1, %148 ], [ %spec.select437, %151 ]
  store i32 %.0377, ptr %22, align 4, !tbaa !5
  %156 = load i32, ptr %20, align 4, !tbaa !5
  %157 = icmp sge i32 %156, %.0
  %or.cond9 = select i1 %157, i1 true, i1 %87
  br i1 %or.cond9, label %158, label %.thread443.sink.split

158:                                              ; preds = %155
  %159 = load i32, ptr %23, align 4, !tbaa !5
  %160 = icmp sge i32 %159, %.0377
  %or.cond11 = select i1 %160, i1 true, i1 %87
  br i1 %or.cond11, label %.thread, label %.thread443.sink.split

.thread:                                          ; preds = %158
  %.pr439.pr = load i32, ptr %25, align 4, !tbaa !5
  %.not417 = icmp eq i32 %.pr439.pr, 0
  br i1 %.not417, label %164, label %.thread443

.thread443.sink.split:                            ; preds = %96, %158, %155, %119, %115, %112, %109, %106, %101, %99
  %.sink = phi i32 [ %.mux, %96 ], [ -3, %99 ], [ -5, %101 ], [ -6, %106 ], [ -8, %109 ], [ -10, %112 ], [ -15, %115 ], [ -17, %119 ], [ -21, %155 ], [ -24, %158 ]
  store i32 %.sink, ptr %25, align 4, !tbaa !5
  br label %.thread443

.thread443:                                       ; preds = %.thread443.sink.split, %123, %.thread
  %161 = phi i32 [ %.pr439.pr, %.thread ], [ %.pr, %123 ], [ %.sink, %.thread443.sink.split ]
  %162 = sub nsw i32 0, %161
  store i32 %162, ptr %27, align 4, !tbaa !5
  %163 = call i32 @xerbla_(ptr noundef nonnull @.str.9, ptr noundef nonnull %27, i32 noundef 6) #5
  br label %327

164:                                              ; preds = %.thread
  br i1 %87, label %327, label %165

165:                                              ; preds = %164
  %166 = load i32, ptr %5, align 4, !tbaa !5
  %167 = icmp eq i32 %166, 0
  br i1 %167, label %168, label %169

168:                                              ; preds = %165
  store i32 0, ptr %10, align 4, !tbaa !5
  br label %327

169:                                              ; preds = %165
  %170 = tail call double @dlamch_(ptr noundef nonnull @.str.10) #5
  %171 = tail call double @dlamch_(ptr noundef nonnull @.str.2) #5
  store double %171, ptr %42, align 8, !tbaa !13
  %172 = fdiv double 1.000000e+00, %171
  store double %172, ptr %39, align 8, !tbaa !13
  call void @dlabad_(ptr noundef nonnull %42, ptr noundef nonnull %39) #5
  %173 = load double, ptr %42, align 8, !tbaa !13
  %174 = call double @sqrt(double noundef %173) #5
  %175 = fdiv double %174, %170
  store double %175, ptr %42, align 8, !tbaa !13
  %176 = fdiv double 1.000000e+00, %175
  store double %176, ptr %39, align 8, !tbaa !13
  %177 = call double @zlange_(ptr noundef nonnull @.str.11, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %21) #5
  store double %177, ptr %30, align 8, !tbaa !13
  %178 = fcmp ogt double %177, 0.000000e+00
  %179 = load double, ptr %42, align 8
  %180 = fcmp olt double %177, %179
  %or.cond = select i1 %178, i1 %180, i1 false
  br i1 %or.cond, label %184, label %181

181:                                              ; preds = %169
  %182 = load double, ptr %39, align 8, !tbaa !13
  %183 = fcmp ogt double %177, %182
  br i1 %183, label %184, label %185

184:                                              ; preds = %169, %181
  %storemerge = phi double [ %182, %181 ], [ %179, %169 ]
  store double %storemerge, ptr %40, align 8, !tbaa !13
  call void @zlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %30, ptr noundef nonnull %40, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %32) #5
  br label %185

185:                                              ; preds = %181, %184
  %.not418451 = phi i1 [ false, %184 ], [ true, %181 ]
  %186 = call double @zlange_(ptr noundef nonnull @.str.11, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %21) #5
  store double %186, ptr %31, align 8, !tbaa !13
  %187 = fcmp ogt double %186, 0.000000e+00
  %188 = load double, ptr %42, align 8
  %189 = fcmp olt double %186, %188
  %or.cond470 = select i1 %187, i1 %189, i1 false
  br i1 %or.cond470, label %193, label %190

190:                                              ; preds = %185
  %191 = load double, ptr %39, align 8, !tbaa !13
  %192 = fcmp ogt double %186, %191
  br i1 %192, label %193, label %194

193:                                              ; preds = %185, %190
  %storemerge467 = phi double [ %191, %190 ], [ %188, %185 ]
  store double %storemerge467, ptr %41, align 8, !tbaa !13
  call void @zlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %31, ptr noundef nonnull %41, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %32) #5
  br label %194

194:                                              ; preds = %190, %193
  %.not420456 = phi i1 [ false, %193 ], [ true, %190 ]
  %195 = load i32, ptr %5, align 4, !tbaa !5
  %196 = add nsw i32 %195, 1
  %197 = add nsw i32 %196, %195
  %198 = sext i32 %196 to i64
  %199 = getelementptr inbounds double, ptr %58, i64 %198
  %200 = sext i32 %197 to i64
  %201 = getelementptr inbounds double, ptr %58, i64 %200
  call void @zggbal_(ptr noundef nonnull @.str.10, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %45, ptr noundef nonnull %44, ptr noundef %21, ptr noundef nonnull %199, ptr noundef nonnull %201, ptr noundef nonnull %32) #5
  %202 = load i32, ptr %44, align 4, !tbaa !5
  %203 = add nsw i32 %202, 1
  %204 = load i32, ptr %45, align 4, !tbaa !5
  %205 = sub i32 %203, %204
  store i32 %205, ptr %36, align 4, !tbaa !5
  %206 = load i32, ptr %5, align 4, !tbaa !5
  %reass.sub = sub i32 %206, %204
  %207 = add i32 %reass.sub, 1
  store i32 %207, ptr %33, align 4, !tbaa !5
  %208 = load i32, ptr %20, align 4, !tbaa !5
  %209 = sub i32 %208, %205
  store i32 %209, ptr %27, align 4, !tbaa !5
  %210 = add i32 %49, 1
  %211 = mul i32 %204, %210
  %212 = sext i32 %211 to i64
  %213 = getelementptr inbounds %struct.doublecomplex, ptr %51, i64 %212
  %214 = sext i32 %205 to i64
  %215 = getelementptr %struct.doublecomplex, ptr %57, i64 %214
  %216 = getelementptr i8, ptr %215, i64 16
  call void @zgeqrf_(ptr noundef nonnull %36, ptr noundef nonnull %33, ptr noundef %213, ptr noundef nonnull %9, ptr noundef nonnull %19, ptr noundef nonnull %216, ptr noundef nonnull %27, ptr noundef nonnull %32) #5
  %217 = load i32, ptr %20, align 4, !tbaa !5
  %218 = sub i32 %217, %205
  store i32 %218, ptr %27, align 4, !tbaa !5
  %219 = load i32, ptr %45, align 4, !tbaa !5
  %220 = mul i32 %219, %210
  %221 = sext i32 %220 to i64
  %222 = getelementptr inbounds %struct.doublecomplex, ptr %51, i64 %221
  %223 = add i32 %46, 1
  %224 = mul i32 %219, %223
  %225 = sext i32 %224 to i64
  %226 = getelementptr inbounds %struct.doublecomplex, ptr %48, i64 %225
  call void @zunmqr_(ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.14, ptr noundef nonnull %36, ptr noundef nonnull %33, ptr noundef nonnull %36, ptr noundef %222, ptr noundef nonnull %9, ptr noundef nonnull %19, ptr noundef %226, ptr noundef nonnull %7, ptr noundef nonnull %216, ptr noundef nonnull %27, ptr noundef nonnull %32) #5
  br i1 %.not414, label %250, label %227

227:                                              ; preds = %194
  call void @zlaset_(ptr noundef nonnull @.str.15, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b2, ptr noundef %13, ptr noundef nonnull %14) #5
  %228 = load i32, ptr %36, align 4, !tbaa !5
  %229 = icmp sgt i32 %228, 1
  br i1 %229, label %230, label %242

230:                                              ; preds = %227
  %231 = add nsw i32 %228, -1
  store i32 %231, ptr %27, align 4, !tbaa !5
  store i32 %231, ptr %28, align 4, !tbaa !5
  %232 = load i32, ptr %45, align 4, !tbaa !5
  %233 = add nsw i32 %232, 1
  %234 = mul nsw i32 %232, %49
  %235 = add nsw i32 %233, %234
  %236 = sext i32 %235 to i64
  %237 = getelementptr inbounds %struct.doublecomplex, ptr %51, i64 %236
  %238 = mul nsw i32 %232, %54
  %239 = add nsw i32 %233, %238
  %240 = sext i32 %239 to i64
  %241 = getelementptr inbounds %struct.doublecomplex, ptr %56, i64 %240
  call void @zlacpy_(ptr noundef nonnull @.str.13, ptr noundef nonnull %27, ptr noundef nonnull %28, ptr noundef %237, ptr noundef nonnull %9, ptr noundef %241, ptr noundef nonnull %14) #5
  br label %242

242:                                              ; preds = %230, %227
  %243 = load i32, ptr %20, align 4, !tbaa !5
  %244 = sub i32 %243, %205
  store i32 %244, ptr %27, align 4, !tbaa !5
  %245 = load i32, ptr %45, align 4, !tbaa !5
  %246 = add i32 %54, 1
  %247 = mul i32 %245, %246
  %248 = sext i32 %247 to i64
  %249 = getelementptr inbounds %struct.doublecomplex, ptr %56, i64 %248
  call void @zungqr_(ptr noundef nonnull %36, ptr noundef nonnull %36, ptr noundef nonnull %36, ptr noundef %249, ptr noundef nonnull %14, ptr noundef nonnull %19, ptr noundef nonnull %216, ptr noundef nonnull %27, ptr noundef nonnull %32) #5
  br label %250

250:                                              ; preds = %242, %194
  br i1 %.not422, label %252, label %251

251:                                              ; preds = %250
  call void @zlaset_(ptr noundef nonnull @.str.15, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b2, ptr noundef %15, ptr noundef nonnull %16) #5
  br label %252

252:                                              ; preds = %251, %250
  call void @zgghrd_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %5, ptr noundef nonnull %45, ptr noundef nonnull %44, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull %32) #5
  store i32 0, ptr %10, align 4, !tbaa !5
  %253 = load i32, ptr %20, align 4, !tbaa !5
  store i32 %253, ptr %27, align 4, !tbaa !5
  call void @zhgeqz_(ptr noundef nonnull @.str.2, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %5, ptr noundef nonnull %45, ptr noundef nonnull %44, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull %19, ptr noundef nonnull %27, ptr noundef nonnull %201, ptr noundef nonnull %32) #5
  %254 = load i32, ptr %32, align 4, !tbaa !5
  %.not424 = icmp eq i32 %254, 0
  br i1 %.not424, label %264, label %255

255:                                              ; preds = %252
  %256 = icmp slt i32 %254, 1
  %.pre = load i32, ptr %5, align 4, !tbaa !5
  %.not432 = icmp sgt i32 %254, %.pre
  %or.cond486 = select i1 %256, i1 true, i1 %.not432
  br i1 %or.cond486, label %257, label %.loopexit.sink.split

257:                                              ; preds = %255
  %258 = icmp sle i32 %254, %.pre
  %259 = shl i32 %.pre, 1
  %.not433 = icmp sgt i32 %254, %259
  %or.cond436 = or i1 %258, %.not433
  br i1 %or.cond436, label %262, label %260

260:                                              ; preds = %257
  %261 = sub nsw i32 %254, %.pre
  br label %.loopexit.sink.split

262:                                              ; preds = %257
  %263 = add nsw i32 %.pre, 1
  br label %.loopexit.sink.split

264:                                              ; preds = %252
  br i1 %.not410, label %302, label %265

265:                                              ; preds = %264
  br i1 %.not418451, label %267, label %266

266:                                              ; preds = %265
  call void @zlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %40, ptr noundef nonnull %30, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull %5, ptr noundef nonnull %32) #5
  br label %267

267:                                              ; preds = %266, %265
  br i1 %.not420456, label %269, label %268

268:                                              ; preds = %267
  call void @zlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %41, ptr noundef nonnull %31, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef %12, ptr noundef nonnull %5, ptr noundef nonnull %32) #5
  br label %269

269:                                              ; preds = %268, %267
  %270 = load i32, ptr %5, align 4, !tbaa !5
  store i32 %270, ptr %27, align 4, !tbaa !5
  %.not426471 = icmp slt i32 %270, 1
  br i1 %.not426471, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %269, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 1, %269 ]
  %271 = getelementptr inbounds %struct.doublecomplex, ptr %52, i64 %indvars.iv
  %272 = getelementptr inbounds %struct.doublecomplex, ptr %53, i64 %indvars.iv
  %273 = call i32 (ptr, ptr, ...) %3(ptr noundef nonnull %271, ptr noundef nonnull %272) #5
  %274 = getelementptr inbounds i32, ptr %59, i64 %indvars.iv
  store i32 %273, ptr %274, align 4, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %275 = load i32, ptr %27, align 4, !tbaa !5
  %276 = sext i32 %275 to i64
  %.not426.not = icmp slt i64 %indvars.iv, %276
  br i1 %.not426.not, label %.lr.ph, label %._crit_edge, !llvm.loop !14

._crit_edge:                                      ; preds = %.lr.ph, %269
  %277 = load i32, ptr %20, align 4, !tbaa !5
  store i32 %277, ptr %27, align 4, !tbaa !5
  call void @ztgsen_(ptr noundef nonnull %29, ptr noundef nonnull %34, ptr noundef nonnull %35, ptr noundef %24, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull %10, ptr noundef nonnull %37, ptr noundef nonnull %38, ptr noundef nonnull %43, ptr noundef nonnull %19, ptr noundef nonnull %27, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %32) #5
  %278 = load i32, ptr %29, align 4
  %279 = icmp sgt i32 %278, 0
  br i1 %279, label %280, label %287

280:                                              ; preds = %._crit_edge
  store i32 %.1, ptr %27, align 4, !tbaa !5
  %281 = load i32, ptr %10, align 4, !tbaa !5
  %282 = shl i32 %281, 1
  %283 = load i32, ptr %5, align 4, !tbaa !5
  %284 = sub nsw i32 %283, %281
  %285 = mul nsw i32 %284, %282
  store i32 %285, ptr %28, align 4, !tbaa !5
  %286 = call i32 @llvm.smax.i32(i32 %.1, i32 %285)
  br label %287

287:                                              ; preds = %280, %._crit_edge
  %.3 = phi i32 [ %286, %280 ], [ %.1, %._crit_edge ]
  %288 = load i32, ptr %32, align 4, !tbaa !5
  %289 = icmp eq i32 %288, -21
  br i1 %289, label %.sink.split, label %290

290:                                              ; preds = %287
  switch i32 %278, label %297 [
    i32 4, label %291
    i32 1, label %291
    i32 2, label %295
  ]

291:                                              ; preds = %290, %290
  %292 = load double, ptr %37, align 8, !tbaa !13
  store double %292, ptr %17, align 8, !tbaa !13
  %293 = load double, ptr %38, align 8, !tbaa !13
  %294 = getelementptr inbounds i8, ptr %17, i64 8
  store double %293, ptr %294, align 8, !tbaa !13
  switch i32 %278, label %297 [
    i32 4, label %295
    i32 2, label %295
  ]

295:                                              ; preds = %290, %291, %291
  %296 = load <2 x double>, ptr %43, align 16, !tbaa !13
  store <2 x double> %296, ptr %18, align 8, !tbaa !13
  br label %297

297:                                              ; preds = %290, %291, %295
  %298 = icmp eq i32 %288, 1
  br i1 %298, label %299, label %302

299:                                              ; preds = %297
  %300 = load i32, ptr %5, align 4, !tbaa !5
  %301 = add nsw i32 %300, 3
  br label %.sink.split

.sink.split:                                      ; preds = %287, %299
  %.sink487 = phi i32 [ %301, %299 ], [ -21, %287 ]
  store i32 %.sink487, ptr %25, align 4, !tbaa !5
  br label %302

302:                                              ; preds = %.sink.split, %297, %264
  %.4 = phi i32 [ %.3, %297 ], [ %.1, %264 ], [ %.3, %.sink.split ]
  %303 = load i32, ptr %34, align 4, !tbaa !5
  %.not428 = icmp eq i32 %303, 0
  br i1 %.not428, label %305, label %304

304:                                              ; preds = %302
  call void @zggbak_(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.13, ptr noundef nonnull %5, ptr noundef nonnull %45, ptr noundef nonnull %44, ptr noundef %21, ptr noundef nonnull %199, ptr noundef nonnull %5, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %32) #5
  br label %305

305:                                              ; preds = %304, %302
  %306 = load i32, ptr %35, align 4, !tbaa !5
  %.not429 = icmp eq i32 %306, 0
  br i1 %.not429, label %308, label %307

307:                                              ; preds = %305
  call void @zggbak_(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.16, ptr noundef nonnull %5, ptr noundef nonnull %45, ptr noundef nonnull %44, ptr noundef %21, ptr noundef nonnull %199, ptr noundef nonnull %5, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull %32) #5
  br label %308

308:                                              ; preds = %307, %305
  br i1 %.not418451, label %310, label %309

309:                                              ; preds = %308
  call void @zlascl_(ptr noundef nonnull @.str.17, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %40, ptr noundef nonnull %30, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %32) #5
  call void @zlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %40, ptr noundef nonnull %30, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull %5, ptr noundef nonnull %32) #5
  br label %310

310:                                              ; preds = %309, %308
  br i1 %.not420456, label %312, label %311

311:                                              ; preds = %310
  call void @zlascl_(ptr noundef nonnull @.str.17, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %41, ptr noundef nonnull %31, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %32) #5
  call void @zlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %41, ptr noundef nonnull %31, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef %12, ptr noundef nonnull %5, ptr noundef nonnull %32) #5
  br label %312

312:                                              ; preds = %311, %310
  br i1 %.not410, label %.loopexit, label %313

313:                                              ; preds = %312
  store i32 0, ptr %10, align 4, !tbaa !5
  %314 = load i32, ptr %5, align 4, !tbaa !5
  store i32 %314, ptr %27, align 4, !tbaa !5
  %.not430473 = icmp slt i32 %314, 1
  br i1 %.not430473, label %.loopexit, label %.lr.ph477

.lr.ph477:                                        ; preds = %313, %.thread457
  %indvars.iv480 = phi i64 [ %indvars.iv.next481, %.thread457 ], [ 1, %313 ]
  %.0376475 = phi i32 [ %317, %.thread457 ], [ 1, %313 ]
  %315 = getelementptr inbounds %struct.doublecomplex, ptr %52, i64 %indvars.iv480
  %316 = getelementptr inbounds %struct.doublecomplex, ptr %53, i64 %indvars.iv480
  %317 = call i32 (ptr, ptr, ...) %3(ptr noundef nonnull %315, ptr noundef nonnull %316) #5
  %.not431 = icmp eq i32 %317, 0
  br i1 %.not431, label %.thread457, label %318

318:                                              ; preds = %.lr.ph477
  %319 = load i32, ptr %10, align 4, !tbaa !5
  %320 = add nsw i32 %319, 1
  store i32 %320, ptr %10, align 4, !tbaa !5
  %.not478 = icmp eq i32 %.0376475, 0
  br i1 %.not478, label %321, label %.thread457

321:                                              ; preds = %318
  %322 = load i32, ptr %5, align 4, !tbaa !5
  %323 = add nsw i32 %322, 2
  store i32 %323, ptr %25, align 4, !tbaa !5
  br label %.thread457

.thread457:                                       ; preds = %.lr.ph477, %321, %318
  %indvars.iv.next481 = add nuw nsw i64 %indvars.iv480, 1
  %324 = load i32, ptr %27, align 4, !tbaa !5
  %325 = sext i32 %324 to i64
  %.not430.not = icmp slt i64 %indvars.iv480, %325
  br i1 %.not430.not, label %.lr.ph477, label %.loopexit, !llvm.loop !16

.loopexit.sink.split:                             ; preds = %255, %260, %262
  %.sink488 = phi i32 [ %263, %262 ], [ %261, %260 ], [ %254, %255 ]
  store i32 %.sink488, ptr %25, align 4, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.thread457, %.loopexit.sink.split, %313, %312
  %.5 = phi i32 [ %.4, %312 ], [ %.4, %313 ], [ %.1, %.loopexit.sink.split ], [ %.4, %.thread457 ]
  %326 = sitofp i32 %.5 to double
  store double %326, ptr %19, align 8, !tbaa !9
  store double 0.000000e+00, ptr %150, align 8, !tbaa !12
  store i32 %.0377, ptr %22, align 4, !tbaa !5
  br label %327

327:                                              ; preds = %164, %.loopexit, %168, %.thread443
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %45) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %44) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #5
  call void @llvm.lifetime.end.p0(i64 4, 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 8, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #5
  ret void
}

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

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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