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

; 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.complex = type { float, float }

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

156:                                              ; preds = %26
  store i64 1, ptr %88, align 8, !tbaa !9
  store i64 0, ptr %81, align 8, !tbaa !9
  br label %164

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

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

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

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

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

168:                                              ; preds = %164
  store i64 1, ptr %90, align 8, !tbaa !9
  store i64 0, ptr %82, align 8, !tbaa !9
  br label %176

169:                                              ; preds = %164
  %170 = load ptr, ptr %29, align 8, !tbaa !5
  %171 = call i64 @lsame_(ptr noundef %170, ptr noundef @.str.1)
  %172 = icmp ne i64 %171, 0
  br i1 %172, label %173, label %174

173:                                              ; preds = %169
  store i64 2, ptr %90, align 8, !tbaa !9
  store i64 1, ptr %82, align 8, !tbaa !9
  br label %175

174:                                              ; preds = %169
  store i64 -1, ptr %90, align 8, !tbaa !9
  store i64 0, ptr %82, align 8, !tbaa !9
  br label %175

175:                                              ; preds = %174, %173
  br label %176

176:                                              ; preds = %175, %168
  %177 = load ptr, ptr %30, align 8, !tbaa !5
  %178 = call i64 @lsame_(ptr noundef %177, ptr noundef @.str.2)
  store i64 %178, ptr %101, align 8, !tbaa !9
  %179 = load ptr, ptr %32, align 8, !tbaa !5
  %180 = call i64 @lsame_(ptr noundef %179, ptr noundef @.str)
  store i64 %180, ptr %99, align 8, !tbaa !9
  %181 = load ptr, ptr %32, align 8, !tbaa !5
  %182 = call i64 @lsame_(ptr noundef %181, ptr noundef @.str.3)
  store i64 %182, ptr %93, align 8, !tbaa !9
  %183 = load ptr, ptr %32, align 8, !tbaa !5
  %184 = call i64 @lsame_(ptr noundef %183, ptr noundef @.str.1)
  store i64 %184, ptr %103, align 8, !tbaa !9
  %185 = load ptr, ptr %32, align 8, !tbaa !5
  %186 = call i64 @lsame_(ptr noundef %185, ptr noundef @.str.4)
  store i64 %186, ptr %91, align 8, !tbaa !9
  %187 = load ptr, ptr %48, align 8, !tbaa !5
  %188 = load i64, ptr %187, align 8, !tbaa !9
  %189 = icmp eq i64 %188, -1
  br i1 %189, label %194, label %190

190:                                              ; preds = %176
  %191 = load ptr, ptr %51, align 8, !tbaa !5
  %192 = load i64, ptr %191, align 8, !tbaa !9
  %193 = icmp eq i64 %192, -1
  br label %194

194:                                              ; preds = %190, %176
  %195 = phi i1 [ true, %176 ], [ %193, %190 ]
  %196 = zext i1 %195 to i32
  %197 = sext i32 %196 to i64
  store i64 %197, ptr %102, align 8, !tbaa !9
  %198 = load i64, ptr %99, align 8, !tbaa !9
  %199 = icmp ne i64 %198, 0
  br i1 %199, label %200, label %201

200:                                              ; preds = %194
  store i64 0, ptr %71, align 8, !tbaa !9
  br label %216

201:                                              ; preds = %194
  %202 = load i64, ptr %93, align 8, !tbaa !9
  %203 = icmp ne i64 %202, 0
  br i1 %203, label %204, label %205

204:                                              ; preds = %201
  store i64 1, ptr %71, align 8, !tbaa !9
  br label %215

205:                                              ; preds = %201
  %206 = load i64, ptr %103, align 8, !tbaa !9
  %207 = icmp ne i64 %206, 0
  br i1 %207, label %208, label %209

208:                                              ; preds = %205
  store i64 2, ptr %71, align 8, !tbaa !9
  br label %214

209:                                              ; preds = %205
  %210 = load i64, ptr %91, align 8, !tbaa !9
  %211 = icmp ne i64 %210, 0
  br i1 %211, label %212, label %213

212:                                              ; preds = %209
  store i64 4, ptr %71, align 8, !tbaa !9
  br label %213

213:                                              ; preds = %212, %209
  br label %214

214:                                              ; preds = %213, %208
  br label %215

215:                                              ; preds = %214, %204
  br label %216

216:                                              ; preds = %215, %200
  %217 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 0, ptr %217, align 8, !tbaa !9
  %218 = load i64, ptr %88, align 8, !tbaa !9
  %219 = icmp sle i64 %218, 0
  br i1 %219, label %220, label %222

220:                                              ; preds = %216
  %221 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -1, ptr %221, align 8, !tbaa !9
  br label %330

222:                                              ; preds = %216
  %223 = load i64, ptr %90, align 8, !tbaa !9
  %224 = icmp sle i64 %223, 0
  br i1 %224, label %225, label %227

225:                                              ; preds = %222
  %226 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -2, ptr %226, align 8, !tbaa !9
  br label %329

227:                                              ; preds = %222
  %228 = load i64, ptr %101, align 8, !tbaa !9
  %229 = icmp ne i64 %228, 0
  br i1 %229, label %236, label %230

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

234:                                              ; preds = %230
  %235 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -3, ptr %235, align 8, !tbaa !9
  br label %328

236:                                              ; preds = %230, %227
  %237 = load i64, ptr %99, align 8, !tbaa !9
  %238 = icmp ne i64 %237, 0
  br i1 %238, label %248, label %239

239:                                              ; preds = %236
  %240 = load i64, ptr %93, align 8, !tbaa !9
  %241 = icmp ne i64 %240, 0
  br i1 %241, label %248, label %242

242:                                              ; preds = %239
  %243 = load i64, ptr %103, align 8, !tbaa !9
  %244 = icmp ne i64 %243, 0
  br i1 %244, label %248, label %245

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

248:                                              ; preds = %245, %242, %239, %236
  %249 = load i64, ptr %101, align 8, !tbaa !9
  %250 = icmp ne i64 %249, 0
  br i1 %250, label %256, label %251

251:                                              ; preds = %248
  %252 = load i64, ptr %99, align 8, !tbaa !9
  %253 = icmp ne i64 %252, 0
  br i1 %253, label %256, label %254

254:                                              ; preds = %251, %245
  %255 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -5, ptr %255, align 8, !tbaa !9
  br label %327

256:                                              ; preds = %251, %248
  %257 = load ptr, ptr %33, align 8, !tbaa !5
  %258 = load i64, ptr %257, align 8, !tbaa !9
  %259 = icmp slt i64 %258, 0
  br i1 %259, label %260, label %262

260:                                              ; preds = %256
  %261 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -6, ptr %261, align 8, !tbaa !9
  br label %326

262:                                              ; preds = %256
  %263 = load ptr, ptr %35, align 8, !tbaa !5
  %264 = load i64, ptr %263, align 8, !tbaa !9
  %265 = load ptr, ptr %33, align 8, !tbaa !5
  %266 = load i64, ptr %265, align 8, !tbaa !9
  %267 = icmp sge i64 1, %266
  br i1 %267, label %268, label %269

268:                                              ; preds = %262
  br label %272

269:                                              ; preds = %262
  %270 = load ptr, ptr %33, align 8, !tbaa !5
  %271 = load i64, ptr %270, align 8, !tbaa !9
  br label %272

272:                                              ; preds = %269, %268
  %273 = phi i64 [ 1, %268 ], [ %271, %269 ]
  %274 = icmp slt i64 %264, %273
  br i1 %274, label %275, label %277

275:                                              ; preds = %272
  %276 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -8, ptr %276, align 8, !tbaa !9
  br label %325

277:                                              ; preds = %272
  %278 = load ptr, ptr %37, align 8, !tbaa !5
  %279 = load i64, ptr %278, align 8, !tbaa !9
  %280 = load ptr, ptr %33, align 8, !tbaa !5
  %281 = load i64, ptr %280, align 8, !tbaa !9
  %282 = icmp sge i64 1, %281
  br i1 %282, label %283, label %284

283:                                              ; preds = %277
  br label %287

284:                                              ; preds = %277
  %285 = load ptr, ptr %33, align 8, !tbaa !5
  %286 = load i64, ptr %285, align 8, !tbaa !9
  br label %287

287:                                              ; preds = %284, %283
  %288 = phi i64 [ 1, %283 ], [ %286, %284 ]
  %289 = icmp slt i64 %279, %288
  br i1 %289, label %290, label %292

290:                                              ; preds = %287
  %291 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -10, ptr %291, align 8, !tbaa !9
  br label %324

292:                                              ; preds = %287
  %293 = load ptr, ptr %42, align 8, !tbaa !5
  %294 = load i64, ptr %293, align 8, !tbaa !9
  %295 = icmp slt i64 %294, 1
  br i1 %295, label %305, label %296

296:                                              ; preds = %292
  %297 = load i64, ptr %81, align 8, !tbaa !9
  %298 = icmp ne i64 %297, 0
  br i1 %298, label %299, label %307

299:                                              ; preds = %296
  %300 = load ptr, ptr %42, align 8, !tbaa !5
  %301 = load i64, ptr %300, align 8, !tbaa !9
  %302 = load ptr, ptr %33, align 8, !tbaa !5
  %303 = load i64, ptr %302, align 8, !tbaa !9
  %304 = icmp slt i64 %301, %303
  br i1 %304, label %305, label %307

305:                                              ; preds = %299, %292
  %306 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -15, ptr %306, align 8, !tbaa !9
  br label %323

307:                                              ; preds = %299, %296
  %308 = load ptr, ptr %44, align 8, !tbaa !5
  %309 = load i64, ptr %308, align 8, !tbaa !9
  %310 = icmp slt i64 %309, 1
  br i1 %310, label %320, label %311

311:                                              ; preds = %307
  %312 = load i64, ptr %82, align 8, !tbaa !9
  %313 = icmp ne i64 %312, 0
  br i1 %313, label %314, label %322

314:                                              ; preds = %311
  %315 = load ptr, ptr %44, align 8, !tbaa !5
  %316 = load i64, ptr %315, align 8, !tbaa !9
  %317 = load ptr, ptr %33, align 8, !tbaa !5
  %318 = load i64, ptr %317, align 8, !tbaa !9
  %319 = icmp slt i64 %316, %318
  br i1 %319, label %320, label %322

320:                                              ; preds = %314, %307
  %321 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -17, ptr %321, align 8, !tbaa !9
  br label %322

322:                                              ; preds = %320, %314, %311
  br label %323

323:                                              ; preds = %322, %305
  br label %324

324:                                              ; preds = %323, %290
  br label %325

325:                                              ; preds = %324, %275
  br label %326

326:                                              ; preds = %325, %260
  br label %327

327:                                              ; preds = %326, %254
  br label %328

328:                                              ; preds = %327, %234
  br label %329

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

330:                                              ; preds = %329, %220
  %331 = load ptr, ptr %53, align 8, !tbaa !5
  %332 = load i64, ptr %331, align 8, !tbaa !9
  %333 = icmp eq i64 %332, 0
  br i1 %333, label %334, label %454

334:                                              ; preds = %330
  %335 = load ptr, ptr %33, align 8, !tbaa !5
  %336 = load i64, ptr %335, align 8, !tbaa !9
  %337 = icmp sgt i64 %336, 0
  br i1 %337, label %338, label %408

338:                                              ; preds = %334
  %339 = load ptr, ptr %33, align 8, !tbaa !5
  %340 = load i64, ptr %339, align 8, !tbaa !9
  %341 = shl i64 %340, 1
  store i64 %341, ptr %97, align 8, !tbaa !9
  %342 = load ptr, ptr %33, align 8, !tbaa !5
  %343 = load i64, ptr %342, align 8, !tbaa !9
  %344 = load ptr, ptr %33, align 8, !tbaa !5
  %345 = load ptr, ptr %33, align 8, !tbaa !5
  %346 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %344, ptr noundef @c__1, ptr noundef %345, ptr noundef @c__0)
  %347 = add nsw i64 %346, 1
  %348 = mul nsw i64 %343, %347
  store i64 %348, ptr %98, align 8, !tbaa !9
  %349 = load i64, ptr %98, align 8, !tbaa !9
  store i64 %349, ptr %62, align 8, !tbaa !9
  %350 = load ptr, ptr %33, align 8, !tbaa !5
  %351 = load i64, ptr %350, align 8, !tbaa !9
  %352 = load ptr, ptr %33, align 8, !tbaa !5
  %353 = load ptr, ptr %33, align 8, !tbaa !5
  %354 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.7, ptr noundef @.str.6, ptr noundef %352, ptr noundef @c__1, ptr noundef %353, ptr noundef @c_n1)
  %355 = add nsw i64 %354, 1
  %356 = mul nsw i64 %351, %355
  store i64 %356, ptr %63, align 8, !tbaa !9
  %357 = load i64, ptr %62, align 8, !tbaa !9
  %358 = load i64, ptr %63, align 8, !tbaa !9
  %359 = icmp sge i64 %357, %358
  br i1 %359, label %360, label %362

360:                                              ; preds = %338
  %361 = load i64, ptr %62, align 8, !tbaa !9
  br label %364

362:                                              ; preds = %338
  %363 = load i64, ptr %63, align 8, !tbaa !9
  br label %364

364:                                              ; preds = %362, %360
  %365 = phi i64 [ %361, %360 ], [ %363, %362 ]
  store i64 %365, ptr %98, align 8, !tbaa !9
  %366 = load i64, ptr %81, align 8, !tbaa !9
  %367 = icmp ne i64 %366, 0
  br i1 %367, label %368, label %386

368:                                              ; preds = %364
  %369 = load i64, ptr %98, align 8, !tbaa !9
  store i64 %369, ptr %62, align 8, !tbaa !9
  %370 = load ptr, ptr %33, align 8, !tbaa !5
  %371 = load i64, ptr %370, align 8, !tbaa !9
  %372 = load ptr, ptr %33, align 8, !tbaa !5
  %373 = load ptr, ptr %33, align 8, !tbaa !5
  %374 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.8, ptr noundef @.str.6, ptr noundef %372, ptr noundef @c__1, ptr noundef %373, ptr noundef @c_n1)
  %375 = add nsw i64 %374, 1
  %376 = mul nsw i64 %371, %375
  store i64 %376, ptr %63, align 8, !tbaa !9
  %377 = load i64, ptr %62, align 8, !tbaa !9
  %378 = load i64, ptr %63, align 8, !tbaa !9
  %379 = icmp sge i64 %377, %378
  br i1 %379, label %380, label %382

380:                                              ; preds = %368
  %381 = load i64, ptr %62, align 8, !tbaa !9
  br label %384

382:                                              ; preds = %368
  %383 = load i64, ptr %63, align 8, !tbaa !9
  br label %384

384:                                              ; preds = %382, %380
  %385 = phi i64 [ %381, %380 ], [ %383, %382 ]
  store i64 %385, ptr %98, align 8, !tbaa !9
  br label %386

386:                                              ; preds = %384, %364
  %387 = load i64, ptr %98, align 8, !tbaa !9
  store i64 %387, ptr %77, align 8, !tbaa !9
  %388 = load i64, ptr %71, align 8, !tbaa !9
  %389 = icmp sge i64 %388, 1
  br i1 %389, label %390, label %407

390:                                              ; preds = %386
  %391 = load i64, ptr %77, align 8, !tbaa !9
  store i64 %391, ptr %62, align 8, !tbaa !9
  %392 = load ptr, ptr %33, align 8, !tbaa !5
  %393 = load i64, ptr %392, align 8, !tbaa !9
  %394 = load ptr, ptr %33, align 8, !tbaa !5
  %395 = load i64, ptr %394, align 8, !tbaa !9
  %396 = mul nsw i64 %393, %395
  %397 = sdiv i64 %396, 2
  store i64 %397, ptr %63, align 8, !tbaa !9
  %398 = load i64, ptr %62, align 8, !tbaa !9
  %399 = load i64, ptr %63, align 8, !tbaa !9
  %400 = icmp sge i64 %398, %399
  br i1 %400, label %401, label %403

401:                                              ; preds = %390
  %402 = load i64, ptr %62, align 8, !tbaa !9
  br label %405

403:                                              ; preds = %390
  %404 = load i64, ptr %63, align 8, !tbaa !9
  br label %405

405:                                              ; preds = %403, %401
  %406 = phi i64 [ %402, %401 ], [ %404, %403 ]
  store i64 %406, ptr %77, align 8, !tbaa !9
  br label %407

407:                                              ; preds = %405, %386
  br label %409

408:                                              ; preds = %334
  store i64 1, ptr %97, align 8, !tbaa !9
  store i64 1, ptr %98, align 8, !tbaa !9
  store i64 1, ptr %77, align 8, !tbaa !9
  br label %409

409:                                              ; preds = %408, %407
  %410 = load i64, ptr %77, align 8, !tbaa !9
  %411 = sitofp i64 %410 to float
  %412 = load ptr, ptr %47, align 8, !tbaa !5
  %413 = getelementptr inbounds %struct.complex, ptr %412, i64 1
  %414 = getelementptr inbounds %struct.complex, ptr %413, i32 0, i32 0
  store float %411, ptr %414, align 4, !tbaa !11
  %415 = load ptr, ptr %47, align 8, !tbaa !5
  %416 = getelementptr inbounds %struct.complex, ptr %415, i64 1
  %417 = getelementptr inbounds %struct.complex, ptr %416, i32 0, i32 1
  store float 0.000000e+00, ptr %417, align 4, !tbaa !14
  %418 = load i64, ptr %99, align 8, !tbaa !9
  %419 = icmp ne i64 %418, 0
  br i1 %419, label %424, label %420

420:                                              ; preds = %409
  %421 = load ptr, ptr %33, align 8, !tbaa !5
  %422 = load i64, ptr %421, align 8, !tbaa !9
  %423 = icmp eq i64 %422, 0
  br i1 %423, label %424, label %425

424:                                              ; preds = %420, %409
  store i64 1, ptr %92, align 8, !tbaa !9
  br label %429

425:                                              ; preds = %420
  %426 = load ptr, ptr %33, align 8, !tbaa !5
  %427 = load i64, ptr %426, align 8, !tbaa !9
  %428 = add nsw i64 %427, 2
  store i64 %428, ptr %92, align 8, !tbaa !9
  br label %429

429:                                              ; preds = %425, %424
  %430 = load i64, ptr %92, align 8, !tbaa !9
  %431 = load ptr, ptr %50, align 8, !tbaa !5
  %432 = getelementptr inbounds i64, ptr %431, i64 1
  store i64 %430, ptr %432, align 8, !tbaa !9
  %433 = load ptr, ptr %48, align 8, !tbaa !5
  %434 = load i64, ptr %433, align 8, !tbaa !9
  %435 = load i64, ptr %97, align 8, !tbaa !9
  %436 = icmp slt i64 %434, %435
  br i1 %436, label %437, label %442

437:                                              ; preds = %429
  %438 = load i64, ptr %102, align 8, !tbaa !9
  %439 = icmp ne i64 %438, 0
  br i1 %439, label %442, label %440

440:                                              ; preds = %437
  %441 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -21, ptr %441, align 8, !tbaa !9
  br label %453

442:                                              ; preds = %437, %429
  %443 = load ptr, ptr %51, align 8, !tbaa !5
  %444 = load i64, ptr %443, align 8, !tbaa !9
  %445 = load i64, ptr %92, align 8, !tbaa !9
  %446 = icmp slt i64 %444, %445
  br i1 %446, label %447, label %452

447:                                              ; preds = %442
  %448 = load i64, ptr %102, align 8, !tbaa !9
  %449 = icmp ne i64 %448, 0
  br i1 %449, label %452, label %450

450:                                              ; preds = %447
  %451 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -24, ptr %451, align 8, !tbaa !9
  br label %452

452:                                              ; preds = %450, %447, %442
  br label %453

453:                                              ; preds = %452, %440
  br label %454

454:                                              ; preds = %453, %330
  %455 = load ptr, ptr %53, align 8, !tbaa !5
  %456 = load i64, ptr %455, align 8, !tbaa !9
  %457 = icmp ne i64 %456, 0
  br i1 %457, label %458, label %463

458:                                              ; preds = %454
  %459 = load ptr, ptr %53, align 8, !tbaa !5
  %460 = load i64, ptr %459, align 8, !tbaa !9
  %461 = sub nsw i64 0, %460
  store i64 %461, ptr %62, align 8, !tbaa !9
  %462 = call i32 @xerbla_(ptr noundef @.str.9, ptr noundef %62)
  store i32 0, ptr %27, align 4
  store i32 1, ptr %104, align 4
  br label %1082

463:                                              ; preds = %454
  %464 = load i64, ptr %102, align 8, !tbaa !9
  %465 = icmp ne i64 %464, 0
  br i1 %465, label %466, label %467

466:                                              ; preds = %463
  store i32 0, ptr %27, align 4
  store i32 1, ptr %104, align 4
  br label %1082

467:                                              ; preds = %463
  br label %468

468:                                              ; preds = %467
  %469 = load ptr, ptr %33, align 8, !tbaa !5
  %470 = load i64, ptr %469, align 8, !tbaa !9
  %471 = icmp eq i64 %470, 0
  br i1 %471, label %472, label %474

472:                                              ; preds = %468
  %473 = load ptr, ptr %38, align 8, !tbaa !5
  store i64 0, ptr %473, align 8, !tbaa !9
  store i32 0, ptr %27, align 4
  store i32 1, ptr %104, align 4
  br label %1082

474:                                              ; preds = %468
  %475 = call double @slamch_(ptr noundef @.str.10)
  %476 = fptrunc double %475 to float
  store float %476, ptr %70, align 4, !tbaa !15
  %477 = call double @slamch_(ptr noundef @.str.2)
  %478 = fptrunc double %477 to float
  store float %478, ptr %100, align 4, !tbaa !15
  %479 = load float, ptr %100, align 4, !tbaa !15
  %480 = fdiv float 1.000000e+00, %479
  store float %480, ptr %87, align 4, !tbaa !15
  %481 = call i32 @slabad_(ptr noundef %100, ptr noundef %87)
  %482 = load float, ptr %100, align 4, !tbaa !15
  %483 = fpext float %482 to double
  %484 = call double @sqrt(double noundef %483) #4
  %485 = load float, ptr %70, align 4, !tbaa !15
  %486 = fpext float %485 to double
  %487 = fdiv double %484, %486
  %488 = fptrunc double %487 to float
  store float %488, ptr %100, align 4, !tbaa !15
  %489 = load float, ptr %100, align 4, !tbaa !15
  %490 = fdiv float 1.000000e+00, %489
  store float %490, ptr %87, align 4, !tbaa !15
  %491 = load ptr, ptr %33, align 8, !tbaa !5
  %492 = load ptr, ptr %33, align 8, !tbaa !5
  %493 = load ptr, ptr %34, align 8, !tbaa !5
  %494 = load i64, ptr %55, align 8, !tbaa !9
  %495 = getelementptr inbounds %struct.complex, ptr %493, i64 %494
  %496 = load ptr, ptr %35, align 8, !tbaa !5
  %497 = load ptr, ptr %49, align 8, !tbaa !5
  %498 = getelementptr inbounds float, ptr %497, i64 1
  %499 = call double @clange_(ptr noundef @.str.11, ptr noundef %491, ptr noundef %492, ptr noundef %495, ptr noundef %496, ptr noundef %498)
  %500 = fptrunc double %499 to float
  store float %500, ptr %72, align 4, !tbaa !15
  store i64 0, ptr %85, align 8, !tbaa !9
  %501 = load float, ptr %72, align 4, !tbaa !15
  %502 = fcmp ogt float %501, 0.000000e+00
  br i1 %502, label %503, label %509

503:                                              ; preds = %474
  %504 = load float, ptr %72, align 4, !tbaa !15
  %505 = load float, ptr %100, align 4, !tbaa !15
  %506 = fcmp olt float %504, %505
  br i1 %506, label %507, label %509

507:                                              ; preds = %503
  %508 = load float, ptr %100, align 4, !tbaa !15
  store float %508, ptr %95, align 4, !tbaa !15
  store i64 1, ptr %85, align 8, !tbaa !9
  br label %516

509:                                              ; preds = %503, %474
  %510 = load float, ptr %72, align 4, !tbaa !15
  %511 = load float, ptr %87, align 4, !tbaa !15
  %512 = fcmp ogt float %510, %511
  br i1 %512, label %513, label %515

513:                                              ; preds = %509
  %514 = load float, ptr %87, align 4, !tbaa !15
  store float %514, ptr %95, align 4, !tbaa !15
  store i64 1, ptr %85, align 8, !tbaa !9
  br label %515

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

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

519:                                              ; preds = %516
  %520 = load ptr, ptr %33, align 8, !tbaa !5
  %521 = load ptr, ptr %33, align 8, !tbaa !5
  %522 = load ptr, ptr %34, align 8, !tbaa !5
  %523 = load i64, ptr %55, align 8, !tbaa !9
  %524 = getelementptr inbounds %struct.complex, ptr %522, i64 %523
  %525 = load ptr, ptr %35, align 8, !tbaa !5
  %526 = call i32 @clascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %72, ptr noundef %95, ptr noundef %520, ptr noundef %521, ptr noundef %524, ptr noundef %525, ptr noundef %74)
  br label %527

527:                                              ; preds = %519, %516
  %528 = load ptr, ptr %33, align 8, !tbaa !5
  %529 = load ptr, ptr %33, align 8, !tbaa !5
  %530 = load ptr, ptr %36, align 8, !tbaa !5
  %531 = load i64, ptr %57, align 8, !tbaa !9
  %532 = getelementptr inbounds %struct.complex, ptr %530, i64 %531
  %533 = load ptr, ptr %37, align 8, !tbaa !5
  %534 = load ptr, ptr %49, align 8, !tbaa !5
  %535 = getelementptr inbounds float, ptr %534, i64 1
  %536 = call double @clange_(ptr noundef @.str.11, ptr noundef %528, ptr noundef %529, ptr noundef %532, ptr noundef %533, ptr noundef %535)
  %537 = fptrunc double %536 to float
  store float %537, ptr %73, align 4, !tbaa !15
  store i64 0, ptr %86, align 8, !tbaa !9
  %538 = load float, ptr %73, align 4, !tbaa !15
  %539 = fcmp ogt float %538, 0.000000e+00
  br i1 %539, label %540, label %546

540:                                              ; preds = %527
  %541 = load float, ptr %73, align 4, !tbaa !15
  %542 = load float, ptr %100, align 4, !tbaa !15
  %543 = fcmp olt float %541, %542
  br i1 %543, label %544, label %546

544:                                              ; preds = %540
  %545 = load float, ptr %100, align 4, !tbaa !15
  store float %545, ptr %96, align 4, !tbaa !15
  store i64 1, ptr %86, align 8, !tbaa !9
  br label %553

546:                                              ; preds = %540, %527
  %547 = load float, ptr %73, align 4, !tbaa !15
  %548 = load float, ptr %87, align 4, !tbaa !15
  %549 = fcmp ogt float %547, %548
  br i1 %549, label %550, label %552

550:                                              ; preds = %546
  %551 = load float, ptr %87, align 4, !tbaa !15
  store float %551, ptr %96, align 4, !tbaa !15
  store i64 1, ptr %86, align 8, !tbaa !9
  br label %552

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

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

556:                                              ; preds = %553
  %557 = load ptr, ptr %33, align 8, !tbaa !5
  %558 = load ptr, ptr %33, align 8, !tbaa !5
  %559 = load ptr, ptr %36, align 8, !tbaa !5
  %560 = load i64, ptr %57, align 8, !tbaa !9
  %561 = getelementptr inbounds %struct.complex, ptr %559, i64 %560
  %562 = load ptr, ptr %37, align 8, !tbaa !5
  %563 = call i32 @clascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %73, ptr noundef %96, ptr noundef %557, ptr noundef %558, ptr noundef %561, ptr noundef %562, ptr noundef %74)
  br label %564

564:                                              ; preds = %556, %553
  store i64 1, ptr %78, align 8, !tbaa !9
  %565 = load ptr, ptr %33, align 8, !tbaa !5
  %566 = load i64, ptr %565, align 8, !tbaa !9
  %567 = add nsw i64 %566, 1
  store i64 %567, ptr %89, align 8, !tbaa !9
  %568 = load i64, ptr %89, align 8, !tbaa !9
  %569 = load ptr, ptr %33, align 8, !tbaa !5
  %570 = load i64, ptr %569, align 8, !tbaa !9
  %571 = add nsw i64 %568, %570
  store i64 %571, ptr %83, align 8, !tbaa !9
  %572 = load ptr, ptr %33, align 8, !tbaa !5
  %573 = load ptr, ptr %34, align 8, !tbaa !5
  %574 = load i64, ptr %55, align 8, !tbaa !9
  %575 = getelementptr inbounds %struct.complex, ptr %573, i64 %574
  %576 = load ptr, ptr %35, align 8, !tbaa !5
  %577 = load ptr, ptr %36, align 8, !tbaa !5
  %578 = load i64, ptr %57, align 8, !tbaa !9
  %579 = getelementptr inbounds %struct.complex, ptr %577, i64 %578
  %580 = load ptr, ptr %37, align 8, !tbaa !5
  %581 = load ptr, ptr %49, align 8, !tbaa !5
  %582 = load i64, ptr %78, align 8, !tbaa !9
  %583 = getelementptr inbounds float, ptr %581, i64 %582
  %584 = load ptr, ptr %49, align 8, !tbaa !5
  %585 = load i64, ptr %89, align 8, !tbaa !9
  %586 = getelementptr inbounds float, ptr %584, i64 %585
  %587 = load ptr, ptr %49, align 8, !tbaa !5
  %588 = load i64, ptr %83, align 8, !tbaa !9
  %589 = getelementptr inbounds float, ptr %587, i64 %588
  %590 = call i32 @cggbal_(ptr noundef @.str.10, ptr noundef %572, ptr noundef %575, ptr noundef %576, ptr noundef %579, ptr noundef %580, ptr noundef %69, ptr noundef %68, ptr noundef %583, ptr noundef %586, ptr noundef %589, ptr noundef %74)
  %591 = load i64, ptr %68, align 8, !tbaa !9
  %592 = add nsw i64 %591, 1
  %593 = load i64, ptr %69, align 8, !tbaa !9
  %594 = sub nsw i64 %592, %593
  store i64 %594, ptr %84, align 8, !tbaa !9
  %595 = load ptr, ptr %33, align 8, !tbaa !5
  %596 = load i64, ptr %595, align 8, !tbaa !9
  %597 = add nsw i64 %596, 1
  %598 = load i64, ptr %69, align 8, !tbaa !9
  %599 = sub nsw i64 %597, %598
  store i64 %599, ptr %79, align 8, !tbaa !9
  store i64 1, ptr %75, align 8, !tbaa !9
  %600 = load i64, ptr %75, align 8, !tbaa !9
  %601 = load i64, ptr %84, align 8, !tbaa !9
  %602 = add nsw i64 %600, %601
  store i64 %602, ptr %76, align 8, !tbaa !9
  %603 = load ptr, ptr %48, align 8, !tbaa !5
  %604 = load i64, ptr %603, align 8, !tbaa !9
  %605 = add nsw i64 %604, 1
  %606 = load i64, ptr %76, align 8, !tbaa !9
  %607 = sub nsw i64 %605, %606
  store i64 %607, ptr %62, align 8, !tbaa !9
  %608 = load ptr, ptr %36, align 8, !tbaa !5
  %609 = load i64, ptr %69, align 8, !tbaa !9
  %610 = load i64, ptr %69, align 8, !tbaa !9
  %611 = load i64, ptr %56, align 8, !tbaa !9
  %612 = mul nsw i64 %610, %611
  %613 = add nsw i64 %609, %612
  %614 = getelementptr inbounds %struct.complex, ptr %608, i64 %613
  %615 = load ptr, ptr %37, align 8, !tbaa !5
  %616 = load ptr, ptr %47, align 8, !tbaa !5
  %617 = load i64, ptr %75, align 8, !tbaa !9
  %618 = getelementptr inbounds %struct.complex, ptr %616, i64 %617
  %619 = load ptr, ptr %47, align 8, !tbaa !5
  %620 = load i64, ptr %76, align 8, !tbaa !9
  %621 = getelementptr inbounds %struct.complex, ptr %619, i64 %620
  %622 = call i32 @cgeqrf_(ptr noundef %84, ptr noundef %79, ptr noundef %614, ptr noundef %615, ptr noundef %618, ptr noundef %621, ptr noundef %62, ptr noundef %74)
  %623 = load ptr, ptr %48, align 8, !tbaa !5
  %624 = load i64, ptr %623, align 8, !tbaa !9
  %625 = add nsw i64 %624, 1
  %626 = load i64, ptr %76, align 8, !tbaa !9
  %627 = sub nsw i64 %625, %626
  store i64 %627, ptr %62, align 8, !tbaa !9
  %628 = load ptr, ptr %36, align 8, !tbaa !5
  %629 = load i64, ptr %69, align 8, !tbaa !9
  %630 = load i64, ptr %69, align 8, !tbaa !9
  %631 = load i64, ptr %56, align 8, !tbaa !9
  %632 = mul nsw i64 %630, %631
  %633 = add nsw i64 %629, %632
  %634 = getelementptr inbounds %struct.complex, ptr %628, i64 %633
  %635 = load ptr, ptr %37, align 8, !tbaa !5
  %636 = load ptr, ptr %47, align 8, !tbaa !5
  %637 = load i64, ptr %75, align 8, !tbaa !9
  %638 = getelementptr inbounds %struct.complex, ptr %636, i64 %637
  %639 = load ptr, ptr %34, align 8, !tbaa !5
  %640 = load i64, ptr %69, align 8, !tbaa !9
  %641 = load i64, ptr %69, align 8, !tbaa !9
  %642 = load i64, ptr %54, align 8, !tbaa !9
  %643 = mul nsw i64 %641, %642
  %644 = add nsw i64 %640, %643
  %645 = getelementptr inbounds %struct.complex, ptr %639, i64 %644
  %646 = load ptr, ptr %35, align 8, !tbaa !5
  %647 = load ptr, ptr %47, align 8, !tbaa !5
  %648 = load i64, ptr %76, align 8, !tbaa !9
  %649 = getelementptr inbounds %struct.complex, ptr %647, i64 %648
  %650 = call i32 @cunmqr_(ptr noundef @.str.13, ptr noundef @.str.14, ptr noundef %84, ptr noundef %79, ptr noundef %84, ptr noundef %634, ptr noundef %635, ptr noundef %638, ptr noundef %645, ptr noundef %646, ptr noundef %649, ptr noundef %62, ptr noundef %74)
  %651 = load i64, ptr %81, align 8, !tbaa !9
  %652 = icmp ne i64 %651, 0
  br i1 %652, label %653, label %708

653:                                              ; preds = %564
  %654 = load ptr, ptr %33, align 8, !tbaa !5
  %655 = load ptr, ptr %33, align 8, !tbaa !5
  %656 = load ptr, ptr %41, align 8, !tbaa !5
  %657 = load i64, ptr %59, align 8, !tbaa !9
  %658 = getelementptr inbounds %struct.complex, ptr %656, i64 %657
  %659 = load ptr, ptr %42, align 8, !tbaa !5
  %660 = call i32 @claset_(ptr noundef @.str.15, ptr noundef %654, ptr noundef %655, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %658, ptr noundef %659)
  %661 = load i64, ptr %84, align 8, !tbaa !9
  %662 = icmp sgt i64 %661, 1
  br i1 %662, label %663, label %687

663:                                              ; preds = %653
  %664 = load i64, ptr %84, align 8, !tbaa !9
  %665 = sub nsw i64 %664, 1
  store i64 %665, ptr %62, align 8, !tbaa !9
  %666 = load i64, ptr %84, align 8, !tbaa !9
  %667 = sub nsw i64 %666, 1
  store i64 %667, ptr %63, align 8, !tbaa !9
  %668 = load ptr, ptr %36, align 8, !tbaa !5
  %669 = load i64, ptr %69, align 8, !tbaa !9
  %670 = add nsw i64 %669, 1
  %671 = load i64, ptr %69, align 8, !tbaa !9
  %672 = load i64, ptr %56, align 8, !tbaa !9
  %673 = mul nsw i64 %671, %672
  %674 = add nsw i64 %670, %673
  %675 = getelementptr inbounds %struct.complex, ptr %668, i64 %674
  %676 = load ptr, ptr %37, align 8, !tbaa !5
  %677 = load ptr, ptr %41, align 8, !tbaa !5
  %678 = load i64, ptr %69, align 8, !tbaa !9
  %679 = add nsw i64 %678, 1
  %680 = load i64, ptr %69, align 8, !tbaa !9
  %681 = load i64, ptr %58, align 8, !tbaa !9
  %682 = mul nsw i64 %680, %681
  %683 = add nsw i64 %679, %682
  %684 = getelementptr inbounds %struct.complex, ptr %677, i64 %683
  %685 = load ptr, ptr %42, align 8, !tbaa !5
  %686 = call i32 @clacpy_(ptr noundef @.str.13, ptr noundef %62, ptr noundef %63, ptr noundef %675, ptr noundef %676, ptr noundef %684, ptr noundef %685)
  br label %687

687:                                              ; preds = %663, %653
  %688 = load ptr, ptr %48, align 8, !tbaa !5
  %689 = load i64, ptr %688, align 8, !tbaa !9
  %690 = add nsw i64 %689, 1
  %691 = load i64, ptr %76, align 8, !tbaa !9
  %692 = sub nsw i64 %690, %691
  store i64 %692, ptr %62, align 8, !tbaa !9
  %693 = load ptr, ptr %41, align 8, !tbaa !5
  %694 = load i64, ptr %69, align 8, !tbaa !9
  %695 = load i64, ptr %69, align 8, !tbaa !9
  %696 = load i64, ptr %58, align 8, !tbaa !9
  %697 = mul nsw i64 %695, %696
  %698 = add nsw i64 %694, %697
  %699 = getelementptr inbounds %struct.complex, ptr %693, i64 %698
  %700 = load ptr, ptr %42, align 8, !tbaa !5
  %701 = load ptr, ptr %47, align 8, !tbaa !5
  %702 = load i64, ptr %75, align 8, !tbaa !9
  %703 = getelementptr inbounds %struct.complex, ptr %701, i64 %702
  %704 = load ptr, ptr %47, align 8, !tbaa !5
  %705 = load i64, ptr %76, align 8, !tbaa !9
  %706 = getelementptr inbounds %struct.complex, ptr %704, i64 %705
  %707 = call i32 @cungqr_(ptr noundef %84, ptr noundef %84, ptr noundef %84, ptr noundef %699, ptr noundef %700, ptr noundef %703, ptr noundef %706, ptr noundef %62, ptr noundef %74)
  br label %708

708:                                              ; preds = %687, %564
  %709 = load i64, ptr %82, align 8, !tbaa !9
  %710 = icmp ne i64 %709, 0
  br i1 %710, label %711, label %719

711:                                              ; preds = %708
  %712 = load ptr, ptr %33, align 8, !tbaa !5
  %713 = load ptr, ptr %33, align 8, !tbaa !5
  %714 = load ptr, ptr %43, align 8, !tbaa !5
  %715 = load i64, ptr %61, align 8, !tbaa !9
  %716 = getelementptr inbounds %struct.complex, ptr %714, i64 %715
  %717 = load ptr, ptr %44, align 8, !tbaa !5
  %718 = call i32 @claset_(ptr noundef @.str.15, ptr noundef %712, ptr noundef %713, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %716, ptr noundef %717)
  br label %719

719:                                              ; preds = %711, %708
  %720 = load ptr, ptr %28, align 8, !tbaa !5
  %721 = load ptr, ptr %29, align 8, !tbaa !5
  %722 = load ptr, ptr %33, align 8, !tbaa !5
  %723 = load ptr, ptr %34, align 8, !tbaa !5
  %724 = load i64, ptr %55, align 8, !tbaa !9
  %725 = getelementptr inbounds %struct.complex, ptr %723, i64 %724
  %726 = load ptr, ptr %35, align 8, !tbaa !5
  %727 = load ptr, ptr %36, align 8, !tbaa !5
  %728 = load i64, ptr %57, align 8, !tbaa !9
  %729 = getelementptr inbounds %struct.complex, ptr %727, i64 %728
  %730 = load ptr, ptr %37, align 8, !tbaa !5
  %731 = load ptr, ptr %41, align 8, !tbaa !5
  %732 = load i64, ptr %59, align 8, !tbaa !9
  %733 = getelementptr inbounds %struct.complex, ptr %731, i64 %732
  %734 = load ptr, ptr %42, align 8, !tbaa !5
  %735 = load ptr, ptr %43, align 8, !tbaa !5
  %736 = load i64, ptr %61, align 8, !tbaa !9
  %737 = getelementptr inbounds %struct.complex, ptr %735, i64 %736
  %738 = load ptr, ptr %44, align 8, !tbaa !5
  %739 = call i32 @cgghrd_(ptr noundef %720, ptr noundef %721, ptr noundef %722, ptr noundef %69, ptr noundef %68, ptr noundef %725, ptr noundef %726, ptr noundef %729, ptr noundef %730, ptr noundef %733, ptr noundef %734, ptr noundef %737, ptr noundef %738, ptr noundef %74)
  %740 = load ptr, ptr %38, align 8, !tbaa !5
  store i64 0, ptr %740, align 8, !tbaa !9
  %741 = load i64, ptr %75, align 8, !tbaa !9
  store i64 %741, ptr %76, align 8, !tbaa !9
  %742 = load ptr, ptr %48, align 8, !tbaa !5
  %743 = load i64, ptr %742, align 8, !tbaa !9
  %744 = add nsw i64 %743, 1
  %745 = load i64, ptr %76, align 8, !tbaa !9
  %746 = sub nsw i64 %744, %745
  store i64 %746, ptr %62, align 8, !tbaa !9
  %747 = load ptr, ptr %28, align 8, !tbaa !5
  %748 = load ptr, ptr %29, align 8, !tbaa !5
  %749 = load ptr, ptr %33, align 8, !tbaa !5
  %750 = load ptr, ptr %34, align 8, !tbaa !5
  %751 = load i64, ptr %55, align 8, !tbaa !9
  %752 = getelementptr inbounds %struct.complex, ptr %750, i64 %751
  %753 = load ptr, ptr %35, align 8, !tbaa !5
  %754 = load ptr, ptr %36, align 8, !tbaa !5
  %755 = load i64, ptr %57, align 8, !tbaa !9
  %756 = getelementptr inbounds %struct.complex, ptr %754, i64 %755
  %757 = load ptr, ptr %37, align 8, !tbaa !5
  %758 = load ptr, ptr %39, align 8, !tbaa !5
  %759 = getelementptr inbounds %struct.complex, ptr %758, i64 1
  %760 = load ptr, ptr %40, align 8, !tbaa !5
  %761 = getelementptr inbounds %struct.complex, ptr %760, i64 1
  %762 = load ptr, ptr %41, align 8, !tbaa !5
  %763 = load i64, ptr %59, align 8, !tbaa !9
  %764 = getelementptr inbounds %struct.complex, ptr %762, i64 %763
  %765 = load ptr, ptr %42, align 8, !tbaa !5
  %766 = load ptr, ptr %43, align 8, !tbaa !5
  %767 = load i64, ptr %61, align 8, !tbaa !9
  %768 = getelementptr inbounds %struct.complex, ptr %766, i64 %767
  %769 = load ptr, ptr %44, align 8, !tbaa !5
  %770 = load ptr, ptr %47, align 8, !tbaa !5
  %771 = load i64, ptr %76, align 8, !tbaa !9
  %772 = getelementptr inbounds %struct.complex, ptr %770, i64 %771
  %773 = load ptr, ptr %49, align 8, !tbaa !5
  %774 = load i64, ptr %83, align 8, !tbaa !9
  %775 = getelementptr inbounds float, ptr %773, i64 %774
  %776 = call i32 @chgeqz_(ptr noundef @.str.2, ptr noundef %747, ptr noundef %748, ptr noundef %749, ptr noundef %69, ptr noundef %68, ptr noundef %752, ptr noundef %753, ptr noundef %756, ptr noundef %757, ptr noundef %759, ptr noundef %761, ptr noundef %764, ptr noundef %765, ptr noundef %768, ptr noundef %769, ptr noundef %772, ptr noundef %62, ptr noundef %775, ptr noundef %74)
  %777 = load i64, ptr %74, align 8, !tbaa !9
  %778 = icmp ne i64 %777, 0
  br i1 %778, label %779, label %814

779:                                              ; preds = %719
  %780 = load i64, ptr %74, align 8, !tbaa !9
  %781 = icmp sgt i64 %780, 0
  br i1 %781, label %782, label %790

782:                                              ; preds = %779
  %783 = load i64, ptr %74, align 8, !tbaa !9
  %784 = load ptr, ptr %33, align 8, !tbaa !5
  %785 = load i64, ptr %784, align 8, !tbaa !9
  %786 = icmp sle i64 %783, %785
  br i1 %786, label %787, label %790

787:                                              ; preds = %782
  %788 = load i64, ptr %74, align 8, !tbaa !9
  %789 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 %788, ptr %789, align 8, !tbaa !9
  br label %813

790:                                              ; preds = %782, %779
  %791 = load i64, ptr %74, align 8, !tbaa !9
  %792 = load ptr, ptr %33, align 8, !tbaa !5
  %793 = load i64, ptr %792, align 8, !tbaa !9
  %794 = icmp sgt i64 %791, %793
  br i1 %794, label %795, label %807

795:                                              ; preds = %790
  %796 = load i64, ptr %74, align 8, !tbaa !9
  %797 = load ptr, ptr %33, align 8, !tbaa !5
  %798 = load i64, ptr %797, align 8, !tbaa !9
  %799 = shl i64 %798, 1
  %800 = icmp sle i64 %796, %799
  br i1 %800, label %801, label %807

801:                                              ; preds = %795
  %802 = load i64, ptr %74, align 8, !tbaa !9
  %803 = load ptr, ptr %33, align 8, !tbaa !5
  %804 = load i64, ptr %803, align 8, !tbaa !9
  %805 = sub nsw i64 %802, %804
  %806 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 %805, ptr %806, align 8, !tbaa !9
  br label %812

807:                                              ; preds = %795, %790
  %808 = load ptr, ptr %33, align 8, !tbaa !5
  %809 = load i64, ptr %808, align 8, !tbaa !9
  %810 = add nsw i64 %809, 1
  %811 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 %810, ptr %811, align 8, !tbaa !9
  br label %812

812:                                              ; preds = %807, %801
  br label %813

813:                                              ; preds = %812, %787
  br label %1070

814:                                              ; preds = %719
  %815 = load i64, ptr %101, align 8, !tbaa !9
  %816 = icmp ne i64 %815, 0
  br i1 %816, label %817, label %960

817:                                              ; preds = %814
  %818 = load i64, ptr %85, align 8, !tbaa !9
  %819 = icmp ne i64 %818, 0
  br i1 %819, label %820, label %826

820:                                              ; preds = %817
  %821 = load ptr, ptr %33, align 8, !tbaa !5
  %822 = load ptr, ptr %39, align 8, !tbaa !5
  %823 = getelementptr inbounds %struct.complex, ptr %822, i64 1
  %824 = load ptr, ptr %33, align 8, !tbaa !5
  %825 = call i32 @clascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %95, ptr noundef %72, ptr noundef %821, ptr noundef @c__1, ptr noundef %823, ptr noundef %824, ptr noundef %74)
  br label %826

826:                                              ; preds = %820, %817
  %827 = load i64, ptr %86, align 8, !tbaa !9
  %828 = icmp ne i64 %827, 0
  br i1 %828, label %829, label %835

829:                                              ; preds = %826
  %830 = load ptr, ptr %33, align 8, !tbaa !5
  %831 = load ptr, ptr %40, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct.complex, ptr %831, i64 1
  %833 = load ptr, ptr %33, align 8, !tbaa !5
  %834 = call i32 @clascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %96, ptr noundef %73, ptr noundef %830, ptr noundef @c__1, ptr noundef %832, ptr noundef %833, ptr noundef %74)
  br label %835

835:                                              ; preds = %829, %826
  %836 = load ptr, ptr %33, align 8, !tbaa !5
  %837 = load i64, ptr %836, align 8, !tbaa !9
  store i64 %837, ptr %62, align 8, !tbaa !9
  store i64 1, ptr %64, align 8, !tbaa !9
  br label %838

838:                                              ; preds = %854, %835
  %839 = load i64, ptr %64, align 8, !tbaa !9
  %840 = load i64, ptr %62, align 8, !tbaa !9
  %841 = icmp sle i64 %839, %840
  br i1 %841, label %842, label %857

842:                                              ; preds = %838
  %843 = load ptr, ptr %31, align 8, !tbaa !5
  %844 = load ptr, ptr %39, align 8, !tbaa !5
  %845 = load i64, ptr %64, align 8, !tbaa !9
  %846 = getelementptr inbounds %struct.complex, ptr %844, i64 %845
  %847 = load ptr, ptr %40, align 8, !tbaa !5
  %848 = load i64, ptr %64, align 8, !tbaa !9
  %849 = getelementptr inbounds %struct.complex, ptr %847, i64 %848
  %850 = call i64 (ptr, ptr, ...) %843(ptr noundef %846, ptr noundef %849)
  %851 = load ptr, ptr %52, align 8, !tbaa !5
  %852 = load i64, ptr %64, align 8, !tbaa !9
  %853 = getelementptr inbounds i64, ptr %851, i64 %852
  store i64 %850, ptr %853, align 8, !tbaa !9
  br label %854

854:                                              ; preds = %842
  %855 = load i64, ptr %64, align 8, !tbaa !9
  %856 = add nsw i64 %855, 1
  store i64 %856, ptr %64, align 8, !tbaa !9
  br label %838, !llvm.loop !16

857:                                              ; preds = %838
  %858 = load ptr, ptr %48, align 8, !tbaa !5
  %859 = load i64, ptr %858, align 8, !tbaa !9
  %860 = load i64, ptr %76, align 8, !tbaa !9
  %861 = sub nsw i64 %859, %860
  %862 = add nsw i64 %861, 1
  store i64 %862, ptr %62, align 8, !tbaa !9
  %863 = load ptr, ptr %52, align 8, !tbaa !5
  %864 = getelementptr inbounds i64, ptr %863, i64 1
  %865 = load ptr, ptr %33, align 8, !tbaa !5
  %866 = load ptr, ptr %34, align 8, !tbaa !5
  %867 = load i64, ptr %55, align 8, !tbaa !9
  %868 = getelementptr inbounds %struct.complex, ptr %866, i64 %867
  %869 = load ptr, ptr %35, align 8, !tbaa !5
  %870 = load ptr, ptr %36, align 8, !tbaa !5
  %871 = load i64, ptr %57, align 8, !tbaa !9
  %872 = getelementptr inbounds %struct.complex, ptr %870, i64 %871
  %873 = load ptr, ptr %37, align 8, !tbaa !5
  %874 = load ptr, ptr %39, align 8, !tbaa !5
  %875 = getelementptr inbounds %struct.complex, ptr %874, i64 1
  %876 = load ptr, ptr %40, align 8, !tbaa !5
  %877 = getelementptr inbounds %struct.complex, ptr %876, i64 1
  %878 = load ptr, ptr %41, align 8, !tbaa !5
  %879 = load i64, ptr %59, align 8, !tbaa !9
  %880 = getelementptr inbounds %struct.complex, ptr %878, i64 %879
  %881 = load ptr, ptr %42, align 8, !tbaa !5
  %882 = load ptr, ptr %43, align 8, !tbaa !5
  %883 = load i64, ptr %61, align 8, !tbaa !9
  %884 = getelementptr inbounds %struct.complex, ptr %882, i64 %883
  %885 = load ptr, ptr %44, align 8, !tbaa !5
  %886 = load ptr, ptr %38, align 8, !tbaa !5
  %887 = getelementptr inbounds [2 x float], ptr %67, i64 0, i64 0
  %888 = load ptr, ptr %47, align 8, !tbaa !5
  %889 = load i64, ptr %76, align 8, !tbaa !9
  %890 = getelementptr inbounds %struct.complex, ptr %888, i64 %889
  %891 = load ptr, ptr %50, align 8, !tbaa !5
  %892 = getelementptr inbounds i64, ptr %891, i64 1
  %893 = load ptr, ptr %51, align 8, !tbaa !5
  %894 = call i32 @ctgsen_(ptr noundef %71, ptr noundef %81, ptr noundef %82, ptr noundef %864, ptr noundef %865, ptr noundef %868, ptr noundef %869, ptr noundef %872, ptr noundef %873, ptr noundef %875, ptr noundef %877, ptr noundef %880, ptr noundef %881, ptr noundef %884, ptr noundef %885, ptr noundef %886, ptr noundef %65, ptr noundef %66, ptr noundef %887, ptr noundef %890, ptr noundef %62, ptr noundef %892, ptr noundef %893, ptr noundef %74)
  %895 = load i64, ptr %71, align 8, !tbaa !9
  %896 = icmp sge i64 %895, 1
  br i1 %896, label %897, label %917

897:                                              ; preds = %857
  %898 = load i64, ptr %98, align 8, !tbaa !9
  store i64 %898, ptr %62, align 8, !tbaa !9
  %899 = load ptr, ptr %38, align 8, !tbaa !5
  %900 = load i64, ptr %899, align 8, !tbaa !9
  %901 = shl i64 %900, 1
  %902 = load ptr, ptr %33, align 8, !tbaa !5
  %903 = load i64, ptr %902, align 8, !tbaa !9
  %904 = load ptr, ptr %38, align 8, !tbaa !5
  %905 = load i64, ptr %904, align 8, !tbaa !9
  %906 = sub nsw i64 %903, %905
  %907 = mul nsw i64 %901, %906
  store i64 %907, ptr %63, align 8, !tbaa !9
  %908 = load i64, ptr %62, align 8, !tbaa !9
  %909 = load i64, ptr %63, align 8, !tbaa !9
  %910 = icmp sge i64 %908, %909
  br i1 %910, label %911, label %913

911:                                              ; preds = %897
  %912 = load i64, ptr %62, align 8, !tbaa !9
  br label %915

913:                                              ; preds = %897
  %914 = load i64, ptr %63, align 8, !tbaa !9
  br label %915

915:                                              ; preds = %913, %911
  %916 = phi i64 [ %912, %911 ], [ %914, %913 ]
  store i64 %916, ptr %98, align 8, !tbaa !9
  br label %917

917:                                              ; preds = %915, %857
  %918 = load i64, ptr %74, align 8, !tbaa !9
  %919 = icmp eq i64 %918, -21
  br i1 %919, label %920, label %922

920:                                              ; preds = %917
  %921 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -21, ptr %921, align 8, !tbaa !9
  br label %959

922:                                              ; preds = %917
  %923 = load i64, ptr %71, align 8, !tbaa !9
  %924 = icmp eq i64 %923, 1
  br i1 %924, label %928, label %925

925:                                              ; preds = %922
  %926 = load i64, ptr %71, align 8, !tbaa !9
  %927 = icmp eq i64 %926, 4
  br i1 %927, label %928, label %935

928:                                              ; preds = %925, %922
  %929 = load float, ptr %65, align 4, !tbaa !15
  %930 = load ptr, ptr %45, align 8, !tbaa !5
  %931 = getelementptr inbounds float, ptr %930, i64 1
  store float %929, ptr %931, align 4, !tbaa !15
  %932 = load float, ptr %66, align 4, !tbaa !15
  %933 = load ptr, ptr %45, align 8, !tbaa !5
  %934 = getelementptr inbounds float, ptr %933, i64 2
  store float %932, ptr %934, align 4, !tbaa !15
  br label %935

935:                                              ; preds = %928, %925
  %936 = load i64, ptr %71, align 8, !tbaa !9
  %937 = icmp eq i64 %936, 2
  br i1 %937, label %941, label %938

938:                                              ; preds = %935
  %939 = load i64, ptr %71, align 8, !tbaa !9
  %940 = icmp eq i64 %939, 4
  br i1 %940, label %941, label %950

941:                                              ; preds = %938, %935
  %942 = getelementptr inbounds [2 x float], ptr %67, i64 0, i64 0
  %943 = load float, ptr %942, align 4, !tbaa !15
  %944 = load ptr, ptr %46, align 8, !tbaa !5
  %945 = getelementptr inbounds float, ptr %944, i64 1
  store float %943, ptr %945, align 4, !tbaa !15
  %946 = getelementptr inbounds [2 x float], ptr %67, i64 0, i64 1
  %947 = load float, ptr %946, align 4, !tbaa !15
  %948 = load ptr, ptr %46, align 8, !tbaa !5
  %949 = getelementptr inbounds float, ptr %948, i64 2
  store float %947, ptr %949, align 4, !tbaa !15
  br label %950

950:                                              ; preds = %941, %938
  %951 = load i64, ptr %74, align 8, !tbaa !9
  %952 = icmp eq i64 %951, 1
  br i1 %952, label %953, label %958

953:                                              ; preds = %950
  %954 = load ptr, ptr %33, align 8, !tbaa !5
  %955 = load i64, ptr %954, align 8, !tbaa !9
  %956 = add nsw i64 %955, 3
  %957 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 %956, ptr %957, align 8, !tbaa !9
  br label %958

958:                                              ; preds = %953, %950
  br label %959

959:                                              ; preds = %958, %920
  br label %960

960:                                              ; preds = %959, %814
  %961 = load i64, ptr %81, align 8, !tbaa !9
  %962 = icmp ne i64 %961, 0
  br i1 %962, label %963, label %977

963:                                              ; preds = %960
  %964 = load ptr, ptr %33, align 8, !tbaa !5
  %965 = load ptr, ptr %49, align 8, !tbaa !5
  %966 = load i64, ptr %78, align 8, !tbaa !9
  %967 = getelementptr inbounds float, ptr %965, i64 %966
  %968 = load ptr, ptr %49, align 8, !tbaa !5
  %969 = load i64, ptr %89, align 8, !tbaa !9
  %970 = getelementptr inbounds float, ptr %968, i64 %969
  %971 = load ptr, ptr %33, align 8, !tbaa !5
  %972 = load ptr, ptr %41, align 8, !tbaa !5
  %973 = load i64, ptr %59, align 8, !tbaa !9
  %974 = getelementptr inbounds %struct.complex, ptr %972, i64 %973
  %975 = load ptr, ptr %42, align 8, !tbaa !5
  %976 = call i32 @cggbak_(ptr noundef @.str.10, ptr noundef @.str.13, ptr noundef %964, ptr noundef %69, ptr noundef %68, ptr noundef %967, ptr noundef %970, ptr noundef %971, ptr noundef %974, ptr noundef %975, ptr noundef %74)
  br label %977

977:                                              ; preds = %963, %960
  %978 = load i64, ptr %82, align 8, !tbaa !9
  %979 = icmp ne i64 %978, 0
  br i1 %979, label %980, label %994

980:                                              ; preds = %977
  %981 = load ptr, ptr %33, align 8, !tbaa !5
  %982 = load ptr, ptr %49, align 8, !tbaa !5
  %983 = load i64, ptr %78, align 8, !tbaa !9
  %984 = getelementptr inbounds float, ptr %982, i64 %983
  %985 = load ptr, ptr %49, align 8, !tbaa !5
  %986 = load i64, ptr %89, align 8, !tbaa !9
  %987 = getelementptr inbounds float, ptr %985, i64 %986
  %988 = load ptr, ptr %33, align 8, !tbaa !5
  %989 = load ptr, ptr %43, align 8, !tbaa !5
  %990 = load i64, ptr %61, align 8, !tbaa !9
  %991 = getelementptr inbounds %struct.complex, ptr %989, i64 %990
  %992 = load ptr, ptr %44, align 8, !tbaa !5
  %993 = call i32 @cggbak_(ptr noundef @.str.10, ptr noundef @.str.16, ptr noundef %981, ptr noundef %69, ptr noundef %68, ptr noundef %984, ptr noundef %987, ptr noundef %988, ptr noundef %991, ptr noundef %992, ptr noundef %74)
  br label %994

994:                                              ; preds = %980, %977
  %995 = load i64, ptr %85, align 8, !tbaa !9
  %996 = icmp ne i64 %995, 0
  br i1 %996, label %997, label %1010

997:                                              ; preds = %994
  %998 = load ptr, ptr %33, align 8, !tbaa !5
  %999 = load ptr, ptr %33, align 8, !tbaa !5
  %1000 = load ptr, ptr %34, align 8, !tbaa !5
  %1001 = load i64, ptr %55, align 8, !tbaa !9
  %1002 = getelementptr inbounds %struct.complex, ptr %1000, i64 %1001
  %1003 = load ptr, ptr %35, align 8, !tbaa !5
  %1004 = call i32 @clascl_(ptr noundef @.str.17, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %95, ptr noundef %72, ptr noundef %998, ptr noundef %999, ptr noundef %1002, ptr noundef %1003, ptr noundef %74)
  %1005 = load ptr, ptr %33, align 8, !tbaa !5
  %1006 = load ptr, ptr %39, align 8, !tbaa !5
  %1007 = getelementptr inbounds %struct.complex, ptr %1006, i64 1
  %1008 = load ptr, ptr %33, align 8, !tbaa !5
  %1009 = call i32 @clascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %95, ptr noundef %72, ptr noundef %1005, ptr noundef @c__1, ptr noundef %1007, ptr noundef %1008, ptr noundef %74)
  br label %1010

1010:                                             ; preds = %997, %994
  %1011 = load i64, ptr %86, align 8, !tbaa !9
  %1012 = icmp ne i64 %1011, 0
  br i1 %1012, label %1013, label %1026

1013:                                             ; preds = %1010
  %1014 = load ptr, ptr %33, align 8, !tbaa !5
  %1015 = load ptr, ptr %33, align 8, !tbaa !5
  %1016 = load ptr, ptr %36, align 8, !tbaa !5
  %1017 = load i64, ptr %57, align 8, !tbaa !9
  %1018 = getelementptr inbounds %struct.complex, ptr %1016, i64 %1017
  %1019 = load ptr, ptr %37, align 8, !tbaa !5
  %1020 = call i32 @clascl_(ptr noundef @.str.17, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %96, ptr noundef %73, ptr noundef %1014, ptr noundef %1015, ptr noundef %1018, ptr noundef %1019, ptr noundef %74)
  %1021 = load ptr, ptr %33, align 8, !tbaa !5
  %1022 = load ptr, ptr %40, align 8, !tbaa !5
  %1023 = getelementptr inbounds %struct.complex, ptr %1022, i64 1
  %1024 = load ptr, ptr %33, align 8, !tbaa !5
  %1025 = call i32 @clascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %96, ptr noundef %73, ptr noundef %1021, ptr noundef @c__1, ptr noundef %1023, ptr noundef %1024, ptr noundef %74)
  br label %1026

1026:                                             ; preds = %1013, %1010
  %1027 = load i64, ptr %101, align 8, !tbaa !9
  %1028 = icmp ne i64 %1027, 0
  br i1 %1028, label %1029, label %1069

1029:                                             ; preds = %1026
  store i64 1, ptr %94, align 8, !tbaa !9
  %1030 = load ptr, ptr %38, align 8, !tbaa !5
  store i64 0, ptr %1030, align 8, !tbaa !9
  %1031 = load ptr, ptr %33, align 8, !tbaa !5
  %1032 = load i64, ptr %1031, align 8, !tbaa !9
  store i64 %1032, ptr %62, align 8, !tbaa !9
  store i64 1, ptr %64, align 8, !tbaa !9
  br label %1033

1033:                                             ; preds = %1065, %1029
  %1034 = load i64, ptr %64, align 8, !tbaa !9
  %1035 = load i64, ptr %62, align 8, !tbaa !9
  %1036 = icmp sle i64 %1034, %1035
  br i1 %1036, label %1037, label %1068

1037:                                             ; preds = %1033
  %1038 = load ptr, ptr %31, align 8, !tbaa !5
  %1039 = load ptr, ptr %39, align 8, !tbaa !5
  %1040 = load i64, ptr %64, align 8, !tbaa !9
  %1041 = getelementptr inbounds %struct.complex, ptr %1039, i64 %1040
  %1042 = load ptr, ptr %40, align 8, !tbaa !5
  %1043 = load i64, ptr %64, align 8, !tbaa !9
  %1044 = getelementptr inbounds %struct.complex, ptr %1042, i64 %1043
  %1045 = call i64 (ptr, ptr, ...) %1038(ptr noundef %1041, ptr noundef %1044)
  store i64 %1045, ptr %80, align 8, !tbaa !9
  %1046 = load i64, ptr %80, align 8, !tbaa !9
  %1047 = icmp ne i64 %1046, 0
  br i1 %1047, label %1048, label %1052

1048:                                             ; preds = %1037
  %1049 = load ptr, ptr %38, align 8, !tbaa !5
  %1050 = load i64, ptr %1049, align 8, !tbaa !9
  %1051 = add nsw i64 %1050, 1
  store i64 %1051, ptr %1049, align 8, !tbaa !9
  br label %1052

1052:                                             ; preds = %1048, %1037
  %1053 = load i64, ptr %80, align 8, !tbaa !9
  %1054 = icmp ne i64 %1053, 0
  br i1 %1054, label %1055, label %1063

1055:                                             ; preds = %1052
  %1056 = load i64, ptr %94, align 8, !tbaa !9
  %1057 = icmp ne i64 %1056, 0
  br i1 %1057, label %1063, label %1058

1058:                                             ; preds = %1055
  %1059 = load ptr, ptr %33, align 8, !tbaa !5
  %1060 = load i64, ptr %1059, align 8, !tbaa !9
  %1061 = add nsw i64 %1060, 2
  %1062 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 %1061, ptr %1062, align 8, !tbaa !9
  br label %1063

1063:                                             ; preds = %1058, %1055, %1052
  %1064 = load i64, ptr %80, align 8, !tbaa !9
  store i64 %1064, ptr %94, align 8, !tbaa !9
  br label %1065

1065:                                             ; preds = %1063
  %1066 = load i64, ptr %64, align 8, !tbaa !9
  %1067 = add nsw i64 %1066, 1
  store i64 %1067, ptr %64, align 8, !tbaa !9
  br label %1033, !llvm.loop !18

1068:                                             ; preds = %1033
  br label %1069

1069:                                             ; preds = %1068, %1026
  br label %1070

1070:                                             ; preds = %1069, %813
  %1071 = load i64, ptr %98, align 8, !tbaa !9
  %1072 = sitofp i64 %1071 to float
  %1073 = load ptr, ptr %47, align 8, !tbaa !5
  %1074 = getelementptr inbounds %struct.complex, ptr %1073, i64 1
  %1075 = getelementptr inbounds %struct.complex, ptr %1074, i32 0, i32 0
  store float %1072, ptr %1075, align 4, !tbaa !11
  %1076 = load ptr, ptr %47, align 8, !tbaa !5
  %1077 = getelementptr inbounds %struct.complex, ptr %1076, i64 1
  %1078 = getelementptr inbounds %struct.complex, ptr %1077, i32 0, i32 1
  store float 0.000000e+00, ptr %1078, align 4, !tbaa !14
  %1079 = load i64, ptr %92, align 8, !tbaa !9
  %1080 = load ptr, ptr %50, align 8, !tbaa !5
  %1081 = getelementptr inbounds i64, ptr %1080, i64 1
  store i64 %1079, ptr %1081, align 8, !tbaa !9
  store i32 0, ptr %27, align 4
  store i32 1, ptr %104, align 4
  br label %1082

1082:                                             ; preds = %1070, %472, %466, %458
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  %1083 = load i32, ptr %27, align 4
  ret i32 %1083
}

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

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

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

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

declare double @slamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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

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

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

declare i32 @cggbak_(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 = !{!"long", !7, i64 0}
!11 = !{!12, !13, i64 0}
!12 = !{!"", !13, i64 0, !13, i64 4}
!13 = !{!"float", !7, i64 0}
!14 = !{!12, !13, i64 4}
!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.complex = type { float, float }

@.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 i64, align 8
@.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 i64, align 8
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.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.complex, align 4
@c_b2 = external hidden global %struct.complex, align 4
@.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 noundef i32 @cggesx_(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 i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca float, align 4
  %30 = alloca float, align 4
  %31 = alloca [2 x float], align 8
  %32 = alloca i64, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca float, align 4
  %36 = alloca float, align 4
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca i64, align 8
  %41 = alloca i64, align 8
  %42 = alloca float, align 4
  %43 = alloca float, align 4
  %44 = alloca float, align 4
  %45 = alloca float, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #5
  call void @llvm.lifetime.start.p0(i64 8, 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 4, ptr nonnull %42) #5
  call void @llvm.lifetime.start.p0(i64 4, 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 i64, ptr %7, align 8, !tbaa !5
  %47 = xor i64 %46, -1
  %48 = getelementptr inbounds %struct.complex, ptr %6, i64 %47
  %49 = load i64, ptr %9, align 8, !tbaa !5
  %50 = xor i64 %49, -1
  %51 = getelementptr inbounds %struct.complex, ptr %8, i64 %50
  %52 = getelementptr inbounds i8, ptr %11, i64 -8
  %53 = getelementptr inbounds i8, ptr %12, i64 -8
  %54 = load i64, ptr %14, align 8, !tbaa !5
  %55 = xor i64 %54, -1
  %56 = getelementptr inbounds %struct.complex, ptr %13, i64 %55
  %57 = getelementptr inbounds i8, ptr %24, i64 -8
  %58 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %.not = icmp eq i64 %58, 0
  br i1 %.not, label %60, label %59

59:                                               ; preds = %26
  store i64 0, ptr %39, align 8, !tbaa !5
  br label %64

60:                                               ; preds = %26
  %61 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not404 = icmp eq i64 %61, 0
  br i1 %.not404, label %63, label %62

62:                                               ; preds = %60
  store i64 1, ptr %39, align 8, !tbaa !5
  br label %64

63:                                               ; preds = %60
  store i64 0, ptr %39, align 8, !tbaa !5
  br label %64

64:                                               ; preds = %62, %63, %59
  %.not412 = phi i1 [ false, %59 ], [ true, %62 ], [ false, %63 ]
  %.not415 = phi i1 [ true, %59 ], [ false, %62 ], [ true, %63 ]
  %65 = phi i1 [ false, %59 ], [ false, %62 ], [ true, %63 ]
  %66 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #5
  %.not405 = icmp eq i64 %66, 0
  br i1 %.not405, label %68, label %67

67:                                               ; preds = %64
  store i64 0, ptr %40, align 8, !tbaa !5
  br label %72

68:                                               ; preds = %64
  %69 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %.not406 = icmp eq i64 %69, 0
  br i1 %.not406, label %71, label %70

70:                                               ; preds = %68
  store i64 1, ptr %40, align 8, !tbaa !5
  br label %72

71:                                               ; preds = %68
  store i64 0, ptr %40, align 8, !tbaa !5
  br label %72

72:                                               ; preds = %70, %71, %67
  %.not413 = phi i1 [ false, %67 ], [ true, %70 ], [ false, %71 ]
  %.not422 = phi i1 [ true, %67 ], [ false, %70 ], [ true, %71 ]
  %73 = phi i1 [ false, %67 ], [ false, %70 ], [ true, %71 ]
  %74 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #5
  %75 = tail call i64 @lsame_(ptr noundef %4, ptr noundef nonnull @.str) #5
  %76 = tail call i64 @lsame_(ptr noundef %4, ptr noundef nonnull @.str.3) #5
  %77 = tail call i64 @lsame_(ptr noundef %4, ptr noundef nonnull @.str.1) #5
  %78 = tail call i64 @lsame_(ptr noundef %4, ptr noundef nonnull @.str.4) #5
  %79 = load i64, ptr %20, align 8, !tbaa !5
  %80 = icmp eq i64 %79, -1
  br i1 %80, label %84, label %81

81:                                               ; preds = %72
  %82 = load i64, ptr %23, align 8, !tbaa !5
  %83 = icmp eq i64 %82, -1
  br label %84

84:                                               ; preds = %81, %72
  %85 = phi i1 [ true, %72 ], [ %83, %81 ]
  %86 = icmp eq i64 %75, 0
  br i1 %86, label %88, label %87

87:                                               ; preds = %84
  store i64 0, ptr %34, align 8, !tbaa !5
  br label %94

88:                                               ; preds = %84
  %.not407 = icmp eq i64 %76, 0
  br i1 %.not407, label %90, label %89

89:                                               ; preds = %88
  store i64 1, ptr %34, align 8, !tbaa !5
  br label %94

90:                                               ; preds = %88
  %.not408 = icmp eq i64 %77, 0
  br i1 %.not408, label %92, label %91

91:                                               ; preds = %90
  store i64 2, ptr %34, align 8, !tbaa !5
  br label %94

92:                                               ; preds = %90
  %.not409 = icmp eq i64 %78, 0
  br i1 %.not409, label %94, label %93

93:                                               ; preds = %92
  store i64 4, ptr %34, align 8, !tbaa !5
  br label %94

94:                                               ; preds = %89, %92, %93, %91, %87
  %95 = phi i1 [ true, %89 ], [ false, %92 ], [ true, %93 ], [ true, %91 ], [ false, %87 ]
  store i64 0, ptr %25, align 8, !tbaa !5
  %brmerge = or i1 %65, %73
  %.mux = select i1 %65, i64 -1, i64 -2
  br i1 %brmerge, label %.thread442.sink.split, label %96

96:                                               ; preds = %94
  %.not411 = icmp eq i64 %74, 0
  br i1 %.not411, label %97, label %99

97:                                               ; preds = %96
  %98 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str) #5
  %.not410 = icmp eq i64 %98, 0
  br i1 %.not410, label %.thread442.sink.split, label %99

99:                                               ; preds = %97, %96
  %100 = icmp eq i64 %76, 0
  %or.cond.not = select i1 %86, i1 %100, i1 false
  %101 = icmp eq i64 %77, 0
  %or.cond3 = select i1 %or.cond.not, i1 %101, i1 false
  %102 = icmp eq i64 %78, 0
  %or.cond5 = select i1 %or.cond3, i1 %102, i1 false
  %103 = or i64 %75, %74
  %or.cond7.not = icmp eq i64 %103, 0
  %or.cond433 = select i1 %or.cond5, i1 true, i1 %or.cond7.not
  br i1 %or.cond433, label %.thread442.sink.split, label %104

104:                                              ; preds = %99
  %105 = load i64, ptr %5, align 8, !tbaa !5
  %106 = icmp slt i64 %105, 0
  br i1 %106, label %.thread442.sink.split, label %107

107:                                              ; preds = %104
  %108 = load i64, ptr %7, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %105, i64 1)
  %109 = icmp slt i64 %108, %spec.select
  br i1 %109, label %.thread442.sink.split, label %110

110:                                              ; preds = %107
  %111 = load i64, ptr %9, align 8, !tbaa !5
  %112 = icmp slt i64 %111, %spec.select
  br i1 %112, label %.thread442.sink.split, label %113

113:                                              ; preds = %110
  %114 = load i64, ptr %14, align 8, !tbaa !5
  %115 = icmp slt i64 %114, 1
  %116 = icmp ult i64 %114, %105
  %or.cond462 = and i1 %116, %.not412
  %or.cond479 = or i1 %115, %or.cond462
  br i1 %or.cond479, label %.thread442.sink.split, label %117

117:                                              ; preds = %113
  %118 = load i64, ptr %16, align 8, !tbaa !5
  %119 = icmp slt i64 %118, 1
  %120 = icmp ult i64 %118, %105
  %or.cond463 = and i1 %120, %.not413
  %or.cond480 = or i1 %119, %or.cond463
  br i1 %or.cond480, label %.thread442.sink.split, label %121

121:                                              ; preds = %117
  %.pr = load i64, ptr %25, align 8, !tbaa !5
  %122 = icmp eq i64 %.pr, 0
  br i1 %122, label %123, label %.thread442

123:                                              ; preds = %121
  %.not478 = icmp eq i64 %105, 0
  br i1 %.not478, label %146, label %124

124:                                              ; preds = %123
  %125 = shl nuw i64 %105, 1
  %126 = tail call i64 @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) #5
  %127 = add nsw i64 %126, 1
  %128 = mul nsw i64 %127, %105
  store i64 %128, ptr %27, align 8, !tbaa !5
  %129 = load i64, ptr %5, align 8, !tbaa !5
  %130 = tail call i64 @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) #5
  %131 = add nsw i64 %130, 1
  %132 = mul nsw i64 %131, %129
  store i64 %132, ptr %28, align 8, !tbaa !5
  %133 = tail call i64 @llvm.smax.i64(i64 %128, i64 %132)
  br i1 %.not415, label %140, label %134

134:                                              ; preds = %124
  store i64 %133, ptr %27, align 8, !tbaa !5
  %135 = load i64, ptr %5, align 8, !tbaa !5
  %136 = tail call i64 @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) #5
  %137 = add nsw i64 %136, 1
  %138 = mul nsw i64 %137, %135
  store i64 %138, ptr %28, align 8, !tbaa !5
  %139 = tail call i64 @llvm.smax.i64(i64 %133, i64 %138)
  br label %140

140:                                              ; preds = %134, %124
  %.0376 = phi i64 [ %139, %134 ], [ %133, %124 ]
  br i1 %95, label %141, label %146

141:                                              ; preds = %140
  store i64 %.0376, ptr %27, align 8, !tbaa !5
  %142 = load i64, ptr %5, align 8, !tbaa !5
  %143 = mul nsw i64 %142, %142
  %144 = lshr i64 %143, 1
  store i64 %144, ptr %28, align 8, !tbaa !5
  %145 = tail call i64 @llvm.smax.i64(i64 %.0376, i64 %144)
  br label %146

146:                                              ; preds = %123, %140, %141
  %.0385 = phi i64 [ %145, %141 ], [ %.0376, %140 ], [ 1, %123 ]
  %.0377 = phi i64 [ %125, %141 ], [ %125, %140 ], [ 1, %123 ]
  %.1 = phi i64 [ %.0376, %141 ], [ %.0376, %140 ], [ 1, %123 ]
  %147 = sitofp i64 %.0385 to float
  store float %147, ptr %19, align 4, !tbaa !9
  %148 = getelementptr inbounds i8, ptr %19, i64 4
  store float 0.000000e+00, ptr %148, align 4, !tbaa !12
  br i1 %86, label %149, label %153

149:                                              ; preds = %146
  %150 = load i64, ptr %5, align 8, !tbaa !5
  %151 = icmp eq i64 %150, 0
  %152 = add nsw i64 %150, 2
  %spec.select436 = select i1 %151, i64 1, i64 %152
  br label %153

153:                                              ; preds = %149, %146
  %.0379 = phi i64 [ 1, %146 ], [ %spec.select436, %149 ]
  store i64 %.0379, ptr %22, align 8, !tbaa !5
  %154 = load i64, ptr %20, align 8, !tbaa !5
  %155 = icmp sge i64 %154, %.0377
  %or.cond9 = select i1 %155, i1 true, i1 %85
  br i1 %or.cond9, label %156, label %.thread442.sink.split

156:                                              ; preds = %153
  %157 = load i64, ptr %23, align 8, !tbaa !5
  %158 = icmp sge i64 %157, %.0379
  %or.cond11 = select i1 %158, i1 true, i1 %85
  br i1 %or.cond11, label %.thread, label %.thread442.sink.split

.thread:                                          ; preds = %156
  %.pr438.pr = load i64, ptr %25, align 8, !tbaa !5
  %.not418 = icmp eq i64 %.pr438.pr, 0
  br i1 %.not418, label %162, label %.thread442

.thread442.sink.split:                            ; preds = %94, %156, %153, %117, %113, %110, %107, %104, %99, %97
  %.sink = phi i64 [ %.mux, %94 ], [ -3, %97 ], [ -5, %99 ], [ -6, %104 ], [ -8, %107 ], [ -10, %110 ], [ -15, %113 ], [ -17, %117 ], [ -21, %153 ], [ -24, %156 ]
  store i64 %.sink, ptr %25, align 8, !tbaa !5
  br label %.thread442

.thread442:                                       ; preds = %.thread442.sink.split, %121, %.thread
  %159 = phi i64 [ %.pr438.pr, %.thread ], [ %.pr, %121 ], [ %.sink, %.thread442.sink.split ]
  %160 = sub nsw i64 0, %159
  store i64 %160, ptr %27, align 8, !tbaa !5
  %161 = call i32 @xerbla_(ptr noundef nonnull @.str.9, ptr noundef nonnull %27) #5
  br label %341

162:                                              ; preds = %.thread
  br i1 %85, label %341, label %163

163:                                              ; preds = %162
  %164 = load i64, ptr %5, align 8, !tbaa !5
  %165 = icmp eq i64 %164, 0
  br i1 %165, label %166, label %167

166:                                              ; preds = %163
  store i64 0, ptr %10, align 8, !tbaa !5
  br label %341

167:                                              ; preds = %163
  %168 = tail call double @slamch_(ptr noundef nonnull @.str.10) #5
  %169 = fptrunc double %168 to float
  %170 = tail call double @slamch_(ptr noundef nonnull @.str.2) #5
  %171 = fptrunc double %170 to float
  store float %171, ptr %45, align 4, !tbaa !13
  %172 = fdiv float 1.000000e+00, %171
  store float %172, ptr %42, align 4, !tbaa !13
  %173 = call i32 @slabad_(ptr noundef nonnull %45, ptr noundef nonnull %42) #5
  %174 = load float, ptr %45, align 4, !tbaa !13
  %175 = fpext float %174 to double
  %176 = call double @sqrt(double noundef %175) #5
  %177 = fpext float %169 to double
  %178 = fdiv double %176, %177
  %179 = fptrunc double %178 to float
  store float %179, ptr %45, align 4, !tbaa !13
  %180 = fdiv float 1.000000e+00, %179
  store float %180, ptr %42, align 4, !tbaa !13
  %181 = call double @clange_(ptr noundef nonnull @.str.11, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %21) #5
  %182 = fptrunc double %181 to float
  store float %182, ptr %35, align 4, !tbaa !13
  %183 = fcmp ogt float %182, 0.000000e+00
  %184 = load float, ptr %45, align 4
  %185 = fcmp ogt float %184, %182
  %or.cond = select i1 %183, i1 %185, i1 false
  br i1 %or.cond, label %189, label %186

186:                                              ; preds = %167
  %187 = load float, ptr %42, align 4, !tbaa !13
  %188 = fcmp olt float %187, %182
  br i1 %188, label %189, label %191

189:                                              ; preds = %167, %186
  %storemerge = phi float [ %187, %186 ], [ %184, %167 ]
  store float %storemerge, ptr %43, align 4, !tbaa !13
  %190 = call i32 @clascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %35, ptr noundef nonnull %43, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %37) #5
  br label %191

191:                                              ; preds = %186, %189
  %.not419450 = phi i1 [ false, %189 ], [ true, %186 ]
  %192 = call double @clange_(ptr noundef nonnull @.str.11, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %21) #5
  %193 = fptrunc double %192 to float
  store float %193, ptr %36, align 4, !tbaa !13
  %194 = fcmp ogt float %193, 0.000000e+00
  %195 = load float, ptr %45, align 4
  %196 = fcmp ogt float %195, %193
  %or.cond469 = select i1 %194, i1 %196, i1 false
  br i1 %or.cond469, label %200, label %197

197:                                              ; preds = %191
  %198 = load float, ptr %42, align 4, !tbaa !13
  %199 = fcmp olt float %198, %193
  br i1 %199, label %200, label %202

200:                                              ; preds = %191, %197
  %storemerge466 = phi float [ %198, %197 ], [ %195, %191 ]
  store float %storemerge466, ptr %44, align 4, !tbaa !13
  %201 = call i32 @clascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %36, ptr noundef nonnull %44, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %37) #5
  br label %202

202:                                              ; preds = %197, %200
  %.not420455 = phi i1 [ false, %200 ], [ true, %197 ]
  %203 = load i64, ptr %5, align 8, !tbaa !5
  %204 = getelementptr float, ptr %21, i64 %203
  %.idx = shl i64 %203, 3
  %205 = getelementptr i8, ptr %21, i64 %.idx
  %206 = call i32 @cggbal_(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 %33, ptr noundef nonnull %32, ptr noundef %21, ptr noundef %204, ptr noundef %205, ptr noundef nonnull %37) #5
  %207 = load i64, ptr %32, align 8, !tbaa !5
  %208 = add nsw i64 %207, 1
  %209 = load i64, ptr %33, align 8, !tbaa !5
  %210 = sub i64 %208, %209
  store i64 %210, ptr %41, align 8, !tbaa !5
  %211 = load i64, ptr %5, align 8, !tbaa !5
  %reass.sub = sub i64 %211, %209
  %212 = add i64 %reass.sub, 1
  store i64 %212, ptr %38, align 8, !tbaa !5
  %213 = load i64, ptr %20, align 8, !tbaa !5
  %214 = sub i64 %213, %210
  store i64 %214, ptr %27, align 8, !tbaa !5
  %215 = add i64 %49, 1
  %216 = mul i64 %209, %215
  %217 = getelementptr inbounds %struct.complex, ptr %51, i64 %216
  %218 = getelementptr %struct.complex, ptr %19, i64 %210
  %219 = call i32 @cgeqrf_(ptr noundef nonnull %41, ptr noundef nonnull %38, ptr noundef %217, ptr noundef nonnull %9, ptr noundef nonnull %19, ptr noundef %218, ptr noundef nonnull %27, ptr noundef nonnull %37) #5
  %220 = load i64, ptr %20, align 8, !tbaa !5
  %221 = sub i64 %220, %210
  store i64 %221, ptr %27, align 8, !tbaa !5
  %222 = load i64, ptr %33, align 8, !tbaa !5
  %223 = mul i64 %222, %215
  %224 = getelementptr inbounds %struct.complex, ptr %51, i64 %223
  %225 = add i64 %46, 1
  %226 = mul i64 %222, %225
  %227 = getelementptr inbounds %struct.complex, ptr %48, i64 %226
  %228 = call i32 @cunmqr_(ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.14, ptr noundef nonnull %41, ptr noundef nonnull %38, ptr noundef nonnull %41, ptr noundef %224, ptr noundef nonnull %9, ptr noundef nonnull %19, ptr noundef %227, ptr noundef nonnull %7, ptr noundef %218, ptr noundef nonnull %27, ptr noundef nonnull %37) #5
  br i1 %.not415, label %252, label %229

229:                                              ; preds = %202
  %230 = call i32 @claset_(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
  %231 = load i64, ptr %41, align 8, !tbaa !5
  %232 = icmp sgt i64 %231, 1
  br i1 %232, label %233, label %244

233:                                              ; preds = %229
  %234 = add nsw i64 %231, -1
  store i64 %234, ptr %27, align 8, !tbaa !5
  store i64 %234, ptr %28, align 8, !tbaa !5
  %235 = load i64, ptr %33, align 8, !tbaa !5
  %236 = add nsw i64 %235, 1
  %237 = mul nsw i64 %235, %49
  %238 = getelementptr %struct.complex, ptr %51, i64 %236
  %239 = getelementptr %struct.complex, ptr %238, i64 %237
  %240 = mul nsw i64 %235, %54
  %241 = getelementptr %struct.complex, ptr %56, i64 %236
  %242 = getelementptr %struct.complex, ptr %241, i64 %240
  %243 = call i32 @clacpy_(ptr noundef nonnull @.str.13, ptr noundef nonnull %27, ptr noundef nonnull %28, ptr noundef %239, ptr noundef nonnull %9, ptr noundef %242, ptr noundef nonnull %14) #5
  br label %244

244:                                              ; preds = %233, %229
  %245 = load i64, ptr %20, align 8, !tbaa !5
  %246 = sub i64 %245, %210
  store i64 %246, ptr %27, align 8, !tbaa !5
  %247 = load i64, ptr %33, align 8, !tbaa !5
  %248 = add i64 %54, 1
  %249 = mul i64 %247, %248
  %250 = getelementptr inbounds %struct.complex, ptr %56, i64 %249
  %251 = call i32 @cungqr_(ptr noundef nonnull %41, ptr noundef nonnull %41, ptr noundef nonnull %41, ptr noundef %250, ptr noundef nonnull %14, ptr noundef nonnull %19, ptr noundef %218, ptr noundef nonnull %27, ptr noundef nonnull %37) #5
  br label %252

252:                                              ; preds = %244, %202
  br i1 %.not422, label %255, label %253

253:                                              ; preds = %252
  %254 = call i32 @claset_(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 %255

255:                                              ; preds = %253, %252
  %256 = call i32 @cgghrd_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %5, ptr noundef nonnull %33, ptr noundef nonnull %32, 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 %37) #5
  store i64 0, ptr %10, align 8, !tbaa !5
  %257 = load i64, ptr %20, align 8, !tbaa !5
  store i64 %257, ptr %27, align 8, !tbaa !5
  %258 = call i32 @chgeqz_(ptr noundef nonnull @.str.2, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %5, ptr noundef nonnull %33, ptr noundef nonnull %32, 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 %205, ptr noundef nonnull %37) #5
  %259 = load i64, ptr %37, align 8, !tbaa !5
  %.not423 = icmp eq i64 %259, 0
  br i1 %.not423, label %269, label %260

260:                                              ; preds = %255
  %261 = icmp slt i64 %259, 1
  %.pre = load i64, ptr %5, align 8, !tbaa !5
  %.not431 = icmp sgt i64 %259, %.pre
  %or.cond481 = select i1 %261, i1 true, i1 %.not431
  br i1 %or.cond481, label %262, label %.loopexit.sink.split

262:                                              ; preds = %260
  %263 = icmp sle i64 %259, %.pre
  %264 = shl i64 %.pre, 1
  %.not432 = icmp sgt i64 %259, %264
  %or.cond435 = or i1 %263, %.not432
  br i1 %or.cond435, label %267, label %265

265:                                              ; preds = %262
  %266 = sub nsw i64 %259, %.pre
  br label %.loopexit.sink.split

267:                                              ; preds = %262
  %268 = add nsw i64 %.pre, 1
  br label %.loopexit.sink.split

269:                                              ; preds = %255
  br i1 %.not411, label %310, label %270

270:                                              ; preds = %269
  br i1 %.not419450, label %273, label %271

271:                                              ; preds = %270
  %272 = call i32 @clascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %43, ptr noundef nonnull %35, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull %5, ptr noundef nonnull %37) #5
  br label %273

273:                                              ; preds = %271, %270
  br i1 %.not420455, label %276, label %274

274:                                              ; preds = %273
  %275 = call i32 @clascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %44, ptr noundef nonnull %36, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef %12, ptr noundef nonnull %5, ptr noundef nonnull %37) #5
  br label %276

276:                                              ; preds = %274, %273
  %277 = load i64, ptr %5, align 8, !tbaa !5
  store i64 %277, ptr %27, align 8, !tbaa !5
  %.not425470 = icmp slt i64 %277, 1
  br i1 %.not425470, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %276, %.lr.ph
  %.0386471 = phi i64 [ %282, %.lr.ph ], [ 1, %276 ]
  %278 = getelementptr inbounds %struct.complex, ptr %52, i64 %.0386471
  %279 = getelementptr inbounds %struct.complex, ptr %53, i64 %.0386471
  %280 = call i64 (ptr, ptr, ...) %3(ptr noundef nonnull %278, ptr noundef nonnull %279) #5
  %281 = getelementptr inbounds i64, ptr %57, i64 %.0386471
  store i64 %280, ptr %281, align 8, !tbaa !5
  %282 = add nuw nsw i64 %.0386471, 1
  %283 = load i64, ptr %27, align 8, !tbaa !5
  %.not425.not = icmp slt i64 %.0386471, %283
  br i1 %.not425.not, label %.lr.ph, label %._crit_edge, !llvm.loop !14

._crit_edge:                                      ; preds = %.lr.ph, %276
  %284 = load i64, ptr %20, align 8, !tbaa !5
  store i64 %284, ptr %27, align 8, !tbaa !5
  %285 = call i32 @ctgsen_(ptr noundef nonnull %34, ptr noundef nonnull %39, ptr noundef nonnull %40, 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 %29, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef nonnull %19, ptr noundef nonnull %27, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %37) #5
  %286 = load i64, ptr %34, align 8
  %287 = icmp sgt i64 %286, 0
  br i1 %287, label %288, label %295

288:                                              ; preds = %._crit_edge
  store i64 %.1, ptr %27, align 8, !tbaa !5
  %289 = load i64, ptr %10, align 8, !tbaa !5
  %290 = shl i64 %289, 1
  %291 = load i64, ptr %5, align 8, !tbaa !5
  %292 = sub nsw i64 %291, %289
  %293 = mul nsw i64 %292, %290
  store i64 %293, ptr %28, align 8, !tbaa !5
  %294 = call i64 @llvm.smax.i64(i64 %.1, i64 %293)
  br label %295

295:                                              ; preds = %288, %._crit_edge
  %.3 = phi i64 [ %294, %288 ], [ %.1, %._crit_edge ]
  %296 = load i64, ptr %37, align 8, !tbaa !5
  %297 = icmp eq i64 %296, -21
  br i1 %297, label %.sink.split, label %298

298:                                              ; preds = %295
  switch i64 %286, label %305 [
    i64 4, label %299
    i64 1, label %299
    i64 2, label %303
  ]

299:                                              ; preds = %298, %298
  %300 = load float, ptr %29, align 4, !tbaa !13
  store float %300, ptr %17, align 4, !tbaa !13
  %301 = load float, ptr %30, align 4, !tbaa !13
  %302 = getelementptr inbounds i8, ptr %17, i64 4
  store float %301, ptr %302, align 4, !tbaa !13
  switch i64 %286, label %305 [
    i64 4, label %303
    i64 2, label %303
  ]

303:                                              ; preds = %298, %299, %299
  %304 = load <2 x float>, ptr %31, align 8, !tbaa !13
  store <2 x float> %304, ptr %18, align 4, !tbaa !13
  br label %305

305:                                              ; preds = %298, %299, %303
  %306 = icmp eq i64 %296, 1
  br i1 %306, label %307, label %310

307:                                              ; preds = %305
  %308 = load i64, ptr %5, align 8, !tbaa !5
  %309 = add nsw i64 %308, 3
  br label %.sink.split

.sink.split:                                      ; preds = %295, %307
  %.sink482 = phi i64 [ %309, %307 ], [ -21, %295 ]
  store i64 %.sink482, ptr %25, align 8, !tbaa !5
  br label %310

310:                                              ; preds = %.sink.split, %305, %269
  %.4 = phi i64 [ %.3, %305 ], [ %.1, %269 ], [ %.3, %.sink.split ]
  %311 = load i64, ptr %39, align 8, !tbaa !5
  %.not427 = icmp eq i64 %311, 0
  br i1 %.not427, label %314, label %312

312:                                              ; preds = %310
  %313 = call i32 @cggbak_(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.13, ptr noundef nonnull %5, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef %21, ptr noundef %204, ptr noundef nonnull %5, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %37) #5
  br label %314

314:                                              ; preds = %312, %310
  %315 = load i64, ptr %40, align 8, !tbaa !5
  %.not428 = icmp eq i64 %315, 0
  br i1 %.not428, label %318, label %316

316:                                              ; preds = %314
  %317 = call i32 @cggbak_(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.16, ptr noundef nonnull %5, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef %21, ptr noundef %204, ptr noundef nonnull %5, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull %37) #5
  br label %318

318:                                              ; preds = %316, %314
  br i1 %.not419450, label %322, label %319

319:                                              ; preds = %318
  %320 = call i32 @clascl_(ptr noundef nonnull @.str.17, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %43, ptr noundef nonnull %35, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %37) #5
  %321 = call i32 @clascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %43, ptr noundef nonnull %35, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull %5, ptr noundef nonnull %37) #5
  br label %322

322:                                              ; preds = %319, %318
  br i1 %.not420455, label %326, label %323

323:                                              ; preds = %322
  %324 = call i32 @clascl_(ptr noundef nonnull @.str.17, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %44, ptr noundef nonnull %36, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %37) #5
  %325 = call i32 @clascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %44, ptr noundef nonnull %36, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef %12, ptr noundef nonnull %5, ptr noundef nonnull %37) #5
  br label %326

326:                                              ; preds = %323, %322
  br i1 %.not411, label %.loopexit, label %327

327:                                              ; preds = %326
  store i64 0, ptr %10, align 8, !tbaa !5
  %328 = load i64, ptr %5, align 8, !tbaa !5
  store i64 %328, ptr %27, align 8, !tbaa !5
  %.not429472 = icmp slt i64 %328, 1
  br i1 %.not429472, label %.loopexit, label %.lr.ph476

.lr.ph476:                                        ; preds = %327, %.thread456
  %.0378474 = phi i64 [ %331, %.thread456 ], [ 1, %327 ]
  %.1387473 = phi i64 [ %338, %.thread456 ], [ 1, %327 ]
  %329 = getelementptr inbounds %struct.complex, ptr %52, i64 %.1387473
  %330 = getelementptr inbounds %struct.complex, ptr %53, i64 %.1387473
  %331 = call i64 (ptr, ptr, ...) %3(ptr noundef nonnull %329, ptr noundef nonnull %330) #5
  %.not430 = icmp eq i64 %331, 0
  br i1 %.not430, label %.thread456, label %332

332:                                              ; preds = %.lr.ph476
  %333 = load i64, ptr %10, align 8, !tbaa !5
  %334 = add nsw i64 %333, 1
  store i64 %334, ptr %10, align 8, !tbaa !5
  %.not477 = icmp eq i64 %.0378474, 0
  br i1 %.not477, label %335, label %.thread456

335:                                              ; preds = %332
  %336 = load i64, ptr %5, align 8, !tbaa !5
  %337 = add nsw i64 %336, 2
  store i64 %337, ptr %25, align 8, !tbaa !5
  br label %.thread456

.thread456:                                       ; preds = %.lr.ph476, %335, %332
  %338 = add nuw nsw i64 %.1387473, 1
  %339 = load i64, ptr %27, align 8, !tbaa !5
  %.not429.not = icmp slt i64 %.1387473, %339
  br i1 %.not429.not, label %.lr.ph476, label %.loopexit, !llvm.loop !16

.loopexit.sink.split:                             ; preds = %260, %265, %267
  %.sink483 = phi i64 [ %268, %267 ], [ %266, %265 ], [ %259, %260 ]
  store i64 %.sink483, ptr %25, align 8, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.thread456, %.loopexit.sink.split, %327, %326
  %.5 = phi i64 [ %.4, %326 ], [ %.4, %327 ], [ %.1, %.loopexit.sink.split ], [ %.4, %.thread456 ]
  %340 = sitofp i64 %.5 to float
  store float %340, ptr %19, align 4, !tbaa !9
  store float 0.000000e+00, ptr %148, align 4, !tbaa !12
  store i64 %.0379, ptr %22, align 8, !tbaa !5
  br label %341

341:                                              ; preds = %162, %.loopexit, %166, %.thread442
  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 4, ptr nonnull %43) #5
  call void @llvm.lifetime.end.p0(i64 4, 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 8, ptr nonnull %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  ret i32 0
}

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

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

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

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

declare double @slamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

declare i32 @cggbak_(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 i64 @llvm.smax.i64(i64, i64) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.umax.i64(i64, i64) #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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"", !11, i64 0, !11, i64 4}
!11 = !{!"float", !7, i64 0}
!12 = !{!10, !11, i64 4}
!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,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass