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

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

123:                                              ; preds = %17
  store i64 1, ptr %69, align 8, !tbaa !9
  store i64 0, ptr %61, align 8, !tbaa !9
  br label %131

124:                                              ; preds = %17
  %125 = load ptr, ptr %19, align 8, !tbaa !5
  %126 = call i64 @lsame_(ptr noundef %125, ptr noundef @.str.1)
  %127 = icmp ne i64 %126, 0
  br i1 %127, label %128, label %129

128:                                              ; preds = %124
  store i64 2, ptr %69, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %130

129:                                              ; preds = %124
  store i64 -1, ptr %69, align 8, !tbaa !9
  store i64 0, ptr %61, align 8, !tbaa !9
  br label %130

130:                                              ; preds = %129, %128
  br label %131

131:                                              ; preds = %130, %123
  %132 = load ptr, ptr %20, align 8, !tbaa !5
  %133 = call i64 @lsame_(ptr noundef %132, ptr noundef @.str)
  %134 = icmp ne i64 %133, 0
  br i1 %134, label %135, label %136

135:                                              ; preds = %131
  store i64 1, ptr %71, align 8, !tbaa !9
  store i64 0, ptr %63, align 8, !tbaa !9
  br label %143

136:                                              ; preds = %131
  %137 = load ptr, ptr %20, align 8, !tbaa !5
  %138 = call i64 @lsame_(ptr noundef %137, ptr noundef @.str.1)
  %139 = icmp ne i64 %138, 0
  br i1 %139, label %140, label %141

140:                                              ; preds = %136
  store i64 2, ptr %71, align 8, !tbaa !9
  store i64 1, ptr %63, align 8, !tbaa !9
  br label %142

141:                                              ; preds = %136
  store i64 -1, ptr %71, align 8, !tbaa !9
  store i64 0, ptr %63, align 8, !tbaa !9
  br label %142

142:                                              ; preds = %141, %140
  br label %143

143:                                              ; preds = %142, %135
  %144 = load ptr, ptr %21, align 8, !tbaa !5
  %145 = load i64, ptr %144, align 8, !tbaa !9
  %146 = shl i64 %145, 1
  store i64 %146, ptr %44, align 8, !tbaa !9
  %147 = load i64, ptr %44, align 8, !tbaa !9
  %148 = icmp sge i64 %147, 1
  br i1 %148, label %149, label %151

149:                                              ; preds = %143
  %150 = load i64, ptr %44, align 8, !tbaa !9
  br label %152

151:                                              ; preds = %143
  br label %152

152:                                              ; preds = %151, %149
  %153 = phi i64 [ %150, %149 ], [ 1, %151 ]
  store i64 %153, ptr %73, align 8, !tbaa !9
  %154 = load i64, ptr %73, align 8, !tbaa !9
  store i64 %154, ptr %77, align 8, !tbaa !9
  %155 = load i64, ptr %77, align 8, !tbaa !9
  %156 = sitofp i64 %155 to float
  %157 = load ptr, ptr %32, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct.complex, ptr %157, i64 1
  %159 = getelementptr inbounds %struct.complex, ptr %158, i32 0, i32 0
  store float %156, ptr %159, align 4, !tbaa !11
  %160 = load ptr, ptr %32, align 8, !tbaa !5
  %161 = getelementptr inbounds %struct.complex, ptr %160, i64 1
  %162 = getelementptr inbounds %struct.complex, ptr %161, i32 0, i32 1
  store float 0.000000e+00, ptr %162, align 4, !tbaa !14
  %163 = load ptr, ptr %33, align 8, !tbaa !5
  %164 = load i64, ptr %163, align 8, !tbaa !9
  %165 = icmp eq i64 %164, -1
  %166 = zext i1 %165 to i32
  %167 = sext i32 %166 to i64
  store i64 %167, ptr %78, align 8, !tbaa !9
  %168 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 0, ptr %168, align 8, !tbaa !9
  %169 = load i64, ptr %69, align 8, !tbaa !9
  %170 = icmp sle i64 %169, 0
  br i1 %170, label %171, label %173

171:                                              ; preds = %152
  %172 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -1, ptr %172, align 8, !tbaa !9
  br label %261

173:                                              ; preds = %152
  %174 = load i64, ptr %71, align 8, !tbaa !9
  %175 = icmp sle i64 %174, 0
  br i1 %175, label %176, label %178

176:                                              ; preds = %173
  %177 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -2, ptr %177, align 8, !tbaa !9
  br label %260

178:                                              ; preds = %173
  %179 = load ptr, ptr %21, align 8, !tbaa !5
  %180 = load i64, ptr %179, align 8, !tbaa !9
  %181 = icmp slt i64 %180, 0
  br i1 %181, label %182, label %184

182:                                              ; preds = %178
  %183 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -3, ptr %183, align 8, !tbaa !9
  br label %259

184:                                              ; preds = %178
  %185 = load ptr, ptr %23, align 8, !tbaa !5
  %186 = load i64, ptr %185, align 8, !tbaa !9
  %187 = load ptr, ptr %21, align 8, !tbaa !5
  %188 = load i64, ptr %187, align 8, !tbaa !9
  %189 = icmp sge i64 1, %188
  br i1 %189, label %190, label %191

190:                                              ; preds = %184
  br label %194

191:                                              ; preds = %184
  %192 = load ptr, ptr %21, align 8, !tbaa !5
  %193 = load i64, ptr %192, align 8, !tbaa !9
  br label %194

194:                                              ; preds = %191, %190
  %195 = phi i64 [ 1, %190 ], [ %193, %191 ]
  %196 = icmp slt i64 %186, %195
  br i1 %196, label %197, label %199

197:                                              ; preds = %194
  %198 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -5, ptr %198, align 8, !tbaa !9
  br label %258

199:                                              ; preds = %194
  %200 = load ptr, ptr %25, align 8, !tbaa !5
  %201 = load i64, ptr %200, align 8, !tbaa !9
  %202 = load ptr, ptr %21, align 8, !tbaa !5
  %203 = load i64, ptr %202, align 8, !tbaa !9
  %204 = icmp sge i64 1, %203
  br i1 %204, label %205, label %206

205:                                              ; preds = %199
  br label %209

206:                                              ; preds = %199
  %207 = load ptr, ptr %21, align 8, !tbaa !5
  %208 = load i64, ptr %207, align 8, !tbaa !9
  br label %209

209:                                              ; preds = %206, %205
  %210 = phi i64 [ 1, %205 ], [ %208, %206 ]
  %211 = icmp slt i64 %201, %210
  br i1 %211, label %212, label %214

212:                                              ; preds = %209
  %213 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -7, ptr %213, align 8, !tbaa !9
  br label %257

214:                                              ; preds = %209
  %215 = load ptr, ptr %29, align 8, !tbaa !5
  %216 = load i64, ptr %215, align 8, !tbaa !9
  %217 = icmp slt i64 %216, 1
  br i1 %217, label %227, label %218

218:                                              ; preds = %214
  %219 = load i64, ptr %61, align 8, !tbaa !9
  %220 = icmp ne i64 %219, 0
  br i1 %220, label %221, label %229

221:                                              ; preds = %218
  %222 = load ptr, ptr %29, align 8, !tbaa !5
  %223 = load i64, ptr %222, align 8, !tbaa !9
  %224 = load ptr, ptr %21, align 8, !tbaa !5
  %225 = load i64, ptr %224, align 8, !tbaa !9
  %226 = icmp slt i64 %223, %225
  br i1 %226, label %227, label %229

227:                                              ; preds = %221, %214
  %228 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -11, ptr %228, align 8, !tbaa !9
  br label %256

229:                                              ; preds = %221, %218
  %230 = load ptr, ptr %31, align 8, !tbaa !5
  %231 = load i64, ptr %230, align 8, !tbaa !9
  %232 = icmp slt i64 %231, 1
  br i1 %232, label %242, label %233

233:                                              ; preds = %229
  %234 = load i64, ptr %63, align 8, !tbaa !9
  %235 = icmp ne i64 %234, 0
  br i1 %235, label %236, label %244

236:                                              ; preds = %233
  %237 = load ptr, ptr %31, align 8, !tbaa !5
  %238 = load i64, ptr %237, align 8, !tbaa !9
  %239 = load ptr, ptr %21, align 8, !tbaa !5
  %240 = load i64, ptr %239, align 8, !tbaa !9
  %241 = icmp slt i64 %238, %240
  br i1 %241, label %242, label %244

242:                                              ; preds = %236, %229
  %243 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -13, ptr %243, align 8, !tbaa !9
  br label %255

244:                                              ; preds = %236, %233
  %245 = load ptr, ptr %33, align 8, !tbaa !5
  %246 = load i64, ptr %245, align 8, !tbaa !9
  %247 = load i64, ptr %73, align 8, !tbaa !9
  %248 = icmp slt i64 %246, %247
  br i1 %248, label %249, label %254

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

252:                                              ; preds = %249
  %253 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -15, ptr %253, align 8, !tbaa !9
  br label %254

254:                                              ; preds = %252, %249, %244
  br label %255

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

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

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

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

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

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

261:                                              ; preds = %260, %171
  %262 = load ptr, ptr %35, align 8, !tbaa !5
  %263 = load i64, ptr %262, align 8, !tbaa !9
  %264 = icmp eq i64 %263, 0
  br i1 %264, label %265, label %308

265:                                              ; preds = %261
  %266 = load ptr, ptr %21, align 8, !tbaa !5
  %267 = load ptr, ptr %21, align 8, !tbaa !5
  %268 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %266, ptr noundef %267, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %268, ptr %48, align 8, !tbaa !9
  %269 = load ptr, ptr %21, align 8, !tbaa !5
  %270 = load ptr, ptr %21, align 8, !tbaa !5
  %271 = load ptr, ptr %21, align 8, !tbaa !5
  %272 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.4, ptr noundef @.str.3, ptr noundef %269, ptr noundef %270, ptr noundef %271, ptr noundef @c_n1)
  store i64 %272, ptr %49, align 8, !tbaa !9
  %273 = load ptr, ptr %21, align 8, !tbaa !5
  %274 = load ptr, ptr %21, align 8, !tbaa !5
  %275 = load ptr, ptr %21, align 8, !tbaa !5
  %276 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef %273, ptr noundef %274, ptr noundef %275, ptr noundef @c_n1)
  store i64 %276, ptr %50, align 8, !tbaa !9
  %277 = load i64, ptr %48, align 8, !tbaa !9
  %278 = load i64, ptr %49, align 8, !tbaa !9
  %279 = icmp sge i64 %277, %278
  br i1 %279, label %280, label %282

280:                                              ; preds = %265
  %281 = load i64, ptr %48, align 8, !tbaa !9
  br label %284

282:                                              ; preds = %265
  %283 = load i64, ptr %49, align 8, !tbaa !9
  br label %284

284:                                              ; preds = %282, %280
  %285 = phi i64 [ %281, %280 ], [ %283, %282 ]
  store i64 %285, ptr %44, align 8, !tbaa !9
  %286 = load i64, ptr %44, align 8, !tbaa !9
  %287 = load i64, ptr %50, align 8, !tbaa !9
  %288 = icmp sge i64 %286, %287
  br i1 %288, label %289, label %291

289:                                              ; preds = %284
  %290 = load i64, ptr %44, align 8, !tbaa !9
  br label %293

291:                                              ; preds = %284
  %292 = load i64, ptr %50, align 8, !tbaa !9
  br label %293

293:                                              ; preds = %291, %289
  %294 = phi i64 [ %290, %289 ], [ %292, %291 ]
  store i64 %294, ptr %47, align 8, !tbaa !9
  %295 = load ptr, ptr %21, align 8, !tbaa !5
  %296 = load i64, ptr %295, align 8, !tbaa !9
  %297 = load i64, ptr %47, align 8, !tbaa !9
  %298 = add nsw i64 %297, 1
  %299 = mul nsw i64 %296, %298
  store i64 %299, ptr %57, align 8, !tbaa !9
  %300 = load i64, ptr %57, align 8, !tbaa !9
  %301 = sitofp i64 %300 to float
  %302 = load ptr, ptr %32, align 8, !tbaa !5
  %303 = getelementptr inbounds %struct.complex, ptr %302, i64 1
  %304 = getelementptr inbounds %struct.complex, ptr %303, i32 0, i32 0
  store float %301, ptr %304, align 4, !tbaa !11
  %305 = load ptr, ptr %32, align 8, !tbaa !5
  %306 = getelementptr inbounds %struct.complex, ptr %305, i64 1
  %307 = getelementptr inbounds %struct.complex, ptr %306, i32 0, i32 1
  store float 0.000000e+00, ptr %307, align 4, !tbaa !14
  br label %308

308:                                              ; preds = %293, %261
  %309 = load ptr, ptr %35, align 8, !tbaa !5
  %310 = load i64, ptr %309, align 8, !tbaa !9
  %311 = icmp ne i64 %310, 0
  br i1 %311, label %312, label %317

312:                                              ; preds = %308
  %313 = load ptr, ptr %35, align 8, !tbaa !5
  %314 = load i64, ptr %313, align 8, !tbaa !9
  %315 = sub nsw i64 0, %314
  store i64 %315, ptr %44, align 8, !tbaa !9
  %316 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %44)
  store i32 0, ptr %18, align 4
  store i32 1, ptr %79, align 4
  br label %938

317:                                              ; preds = %308
  %318 = load i64, ptr %78, align 8, !tbaa !9
  %319 = icmp ne i64 %318, 0
  br i1 %319, label %320, label %321

320:                                              ; preds = %317
  store i32 0, ptr %18, align 4
  store i32 1, ptr %79, align 4
  br label %938

321:                                              ; preds = %317
  br label %322

322:                                              ; preds = %321
  %323 = load ptr, ptr %21, align 8, !tbaa !5
  %324 = load i64, ptr %323, align 8, !tbaa !9
  %325 = icmp eq i64 %324, 0
  br i1 %325, label %326, label %327

326:                                              ; preds = %322
  store i32 0, ptr %18, align 4
  store i32 1, ptr %79, align 4
  br label %938

327:                                              ; preds = %322
  %328 = call double @slamch_(ptr noundef @.str.7)
  %329 = call double @slamch_(ptr noundef @.str.8)
  %330 = fmul double %328, %329
  %331 = fptrunc double %330 to float
  store float %331, ptr %53, align 4, !tbaa !15
  %332 = call double @slamch_(ptr noundef @.str.9)
  %333 = fptrunc double %332 to float
  store float %333, ptr %67, align 4, !tbaa !15
  %334 = load ptr, ptr %21, align 8, !tbaa !5
  %335 = load i64, ptr %334, align 8, !tbaa !9
  %336 = sitofp i64 %335 to float
  %337 = load float, ptr %67, align 4, !tbaa !15
  %338 = fmul float %336, %337
  %339 = load float, ptr %53, align 4, !tbaa !15
  %340 = fdiv float %338, %339
  store float %340, ptr %75, align 4, !tbaa !15
  %341 = load float, ptr %75, align 4, !tbaa !15
  %342 = fdiv float 1.000000e+00, %341
  store float %342, ptr %68, align 4, !tbaa !15
  %343 = load ptr, ptr %21, align 8, !tbaa !5
  %344 = load ptr, ptr %21, align 8, !tbaa !5
  %345 = load ptr, ptr %22, align 8, !tbaa !5
  %346 = load i64, ptr %37, align 8, !tbaa !9
  %347 = getelementptr inbounds %struct.complex, ptr %345, i64 %346
  %348 = load ptr, ptr %23, align 8, !tbaa !5
  %349 = load ptr, ptr %34, align 8, !tbaa !5
  %350 = getelementptr inbounds float, ptr %349, i64 1
  %351 = call double @clange_(ptr noundef @.str.10, ptr noundef %343, ptr noundef %344, ptr noundef %347, ptr noundef %348, ptr noundef %350)
  %352 = fptrunc double %351 to float
  store float %352, ptr %54, align 4, !tbaa !15
  store i64 0, ptr %65, align 8, !tbaa !9
  %353 = load float, ptr %54, align 4, !tbaa !15
  %354 = fcmp ogt float %353, 0.000000e+00
  br i1 %354, label %355, label %361

355:                                              ; preds = %327
  %356 = load float, ptr %54, align 4, !tbaa !15
  %357 = load float, ptr %75, align 4, !tbaa !15
  %358 = fcmp olt float %356, %357
  br i1 %358, label %359, label %361

359:                                              ; preds = %355
  %360 = load float, ptr %75, align 4, !tbaa !15
  store float %360, ptr %72, align 4, !tbaa !15
  store i64 1, ptr %65, align 8, !tbaa !9
  br label %368

361:                                              ; preds = %355, %327
  %362 = load float, ptr %54, align 4, !tbaa !15
  %363 = load float, ptr %68, align 4, !tbaa !15
  %364 = fcmp ogt float %362, %363
  br i1 %364, label %365, label %367

365:                                              ; preds = %361
  %366 = load float, ptr %68, align 4, !tbaa !15
  store float %366, ptr %72, align 4, !tbaa !15
  store i64 1, ptr %65, align 8, !tbaa !9
  br label %367

367:                                              ; preds = %365, %361
  br label %368

368:                                              ; preds = %367, %359
  %369 = load i64, ptr %65, align 8, !tbaa !9
  %370 = icmp ne i64 %369, 0
  br i1 %370, label %371, label %387

371:                                              ; preds = %368
  %372 = load ptr, ptr %21, align 8, !tbaa !5
  %373 = load ptr, ptr %21, align 8, !tbaa !5
  %374 = load ptr, ptr %22, align 8, !tbaa !5
  %375 = load i64, ptr %37, align 8, !tbaa !9
  %376 = getelementptr inbounds %struct.complex, ptr %374, i64 %375
  %377 = load ptr, ptr %23, align 8, !tbaa !5
  %378 = call i32 @clascl_(ptr noundef @.str.11, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef %54, ptr noundef %72, ptr noundef %372, ptr noundef %373, ptr noundef %376, ptr noundef %377, ptr noundef %59)
  %379 = load i64, ptr %59, align 8, !tbaa !9
  %380 = icmp ne i64 %379, 0
  br i1 %380, label %381, label %386

381:                                              ; preds = %371
  %382 = load ptr, ptr %21, align 8, !tbaa !5
  %383 = load i64, ptr %382, align 8, !tbaa !9
  %384 = add nsw i64 %383, 9
  %385 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %384, ptr %385, align 8, !tbaa !9
  store i32 0, ptr %18, align 4
  store i32 1, ptr %79, align 4
  br label %938

386:                                              ; preds = %371
  br label %387

387:                                              ; preds = %386, %368
  %388 = load ptr, ptr %21, align 8, !tbaa !5
  %389 = load ptr, ptr %21, align 8, !tbaa !5
  %390 = load ptr, ptr %24, align 8, !tbaa !5
  %391 = load i64, ptr %39, align 8, !tbaa !9
  %392 = getelementptr inbounds %struct.complex, ptr %390, i64 %391
  %393 = load ptr, ptr %25, align 8, !tbaa !5
  %394 = load ptr, ptr %34, align 8, !tbaa !5
  %395 = getelementptr inbounds float, ptr %394, i64 1
  %396 = call double @clange_(ptr noundef @.str.10, ptr noundef %388, ptr noundef %389, ptr noundef %392, ptr noundef %393, ptr noundef %395)
  %397 = fptrunc double %396 to float
  store float %397, ptr %55, align 4, !tbaa !15
  store i64 0, ptr %66, align 8, !tbaa !9
  %398 = load float, ptr %55, align 4, !tbaa !15
  %399 = fcmp ogt float %398, 0.000000e+00
  br i1 %399, label %400, label %406

400:                                              ; preds = %387
  %401 = load float, ptr %55, align 4, !tbaa !15
  %402 = load float, ptr %75, align 4, !tbaa !15
  %403 = fcmp olt float %401, %402
  br i1 %403, label %404, label %406

404:                                              ; preds = %400
  %405 = load float, ptr %75, align 4, !tbaa !15
  store float %405, ptr %74, align 4, !tbaa !15
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %413

406:                                              ; preds = %400, %387
  %407 = load float, ptr %55, align 4, !tbaa !15
  %408 = load float, ptr %68, align 4, !tbaa !15
  %409 = fcmp ogt float %407, %408
  br i1 %409, label %410, label %412

410:                                              ; preds = %406
  %411 = load float, ptr %68, align 4, !tbaa !15
  store float %411, ptr %74, align 4, !tbaa !15
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %412

412:                                              ; preds = %410, %406
  br label %413

413:                                              ; preds = %412, %404
  %414 = load i64, ptr %66, align 8, !tbaa !9
  %415 = icmp ne i64 %414, 0
  br i1 %415, label %416, label %432

416:                                              ; preds = %413
  %417 = load ptr, ptr %21, align 8, !tbaa !5
  %418 = load ptr, ptr %21, align 8, !tbaa !5
  %419 = load ptr, ptr %24, align 8, !tbaa !5
  %420 = load i64, ptr %39, align 8, !tbaa !9
  %421 = getelementptr inbounds %struct.complex, ptr %419, i64 %420
  %422 = load ptr, ptr %25, align 8, !tbaa !5
  %423 = call i32 @clascl_(ptr noundef @.str.11, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef %55, ptr noundef %74, ptr noundef %417, ptr noundef %418, ptr noundef %421, ptr noundef %422, ptr noundef %59)
  %424 = load i64, ptr %59, align 8, !tbaa !9
  %425 = icmp ne i64 %424, 0
  br i1 %425, label %426, label %431

426:                                              ; preds = %416
  %427 = load ptr, ptr %21, align 8, !tbaa !5
  %428 = load i64, ptr %427, align 8, !tbaa !9
  %429 = add nsw i64 %428, 9
  %430 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %429, ptr %430, align 8, !tbaa !9
  store i32 0, ptr %18, align 4
  store i32 1, ptr %79, align 4
  br label %938

431:                                              ; preds = %416
  br label %432

432:                                              ; preds = %431, %413
  store i64 1, ptr %58, align 8, !tbaa !9
  %433 = load ptr, ptr %21, align 8, !tbaa !5
  %434 = load i64, ptr %433, align 8, !tbaa !9
  %435 = add nsw i64 %434, 1
  store i64 %435, ptr %70, align 8, !tbaa !9
  %436 = load i64, ptr %70, align 8, !tbaa !9
  %437 = load ptr, ptr %21, align 8, !tbaa !5
  %438 = load i64, ptr %437, align 8, !tbaa !9
  %439 = add nsw i64 %436, %438
  store i64 %439, ptr %76, align 8, !tbaa !9
  store i64 1, ptr %62, align 8, !tbaa !9
  %440 = load ptr, ptr %21, align 8, !tbaa !5
  %441 = load ptr, ptr %22, align 8, !tbaa !5
  %442 = load i64, ptr %37, align 8, !tbaa !9
  %443 = getelementptr inbounds %struct.complex, ptr %441, i64 %442
  %444 = load ptr, ptr %23, align 8, !tbaa !5
  %445 = load ptr, ptr %24, align 8, !tbaa !5
  %446 = load i64, ptr %39, align 8, !tbaa !9
  %447 = getelementptr inbounds %struct.complex, ptr %445, i64 %446
  %448 = load ptr, ptr %25, align 8, !tbaa !5
  %449 = load ptr, ptr %34, align 8, !tbaa !5
  %450 = load i64, ptr %58, align 8, !tbaa !9
  %451 = getelementptr inbounds float, ptr %449, i64 %450
  %452 = load ptr, ptr %34, align 8, !tbaa !5
  %453 = load i64, ptr %70, align 8, !tbaa !9
  %454 = getelementptr inbounds float, ptr %452, i64 %453
  %455 = load ptr, ptr %34, align 8, !tbaa !5
  %456 = load i64, ptr %76, align 8, !tbaa !9
  %457 = getelementptr inbounds float, ptr %455, i64 %456
  %458 = call i32 @cggbal_(ptr noundef @.str.12, ptr noundef %440, ptr noundef %443, ptr noundef %444, ptr noundef %447, ptr noundef %448, ptr noundef %52, ptr noundef %51, ptr noundef %451, ptr noundef %454, ptr noundef %457, ptr noundef %59)
  %459 = load i64, ptr %59, align 8, !tbaa !9
  %460 = icmp ne i64 %459, 0
  br i1 %460, label %461, label %466

461:                                              ; preds = %432
  %462 = load ptr, ptr %21, align 8, !tbaa !5
  %463 = load i64, ptr %462, align 8, !tbaa !9
  %464 = add nsw i64 %463, 1
  %465 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %464, ptr %465, align 8, !tbaa !9
  br label %929

466:                                              ; preds = %432
  %467 = load i64, ptr %51, align 8, !tbaa !9
  %468 = add nsw i64 %467, 1
  %469 = load i64, ptr %52, align 8, !tbaa !9
  %470 = sub nsw i64 %468, %469
  store i64 %470, ptr %64, align 8, !tbaa !9
  %471 = load ptr, ptr %21, align 8, !tbaa !5
  %472 = load i64, ptr %471, align 8, !tbaa !9
  %473 = add nsw i64 %472, 1
  %474 = load i64, ptr %52, align 8, !tbaa !9
  %475 = sub nsw i64 %473, %474
  store i64 %475, ptr %60, align 8, !tbaa !9
  %476 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %476, ptr %56, align 8, !tbaa !9
  %477 = load i64, ptr %56, align 8, !tbaa !9
  %478 = load i64, ptr %64, align 8, !tbaa !9
  %479 = add nsw i64 %477, %478
  store i64 %479, ptr %62, align 8, !tbaa !9
  %480 = load ptr, ptr %33, align 8, !tbaa !5
  %481 = load i64, ptr %480, align 8, !tbaa !9
  %482 = add nsw i64 %481, 1
  %483 = load i64, ptr %62, align 8, !tbaa !9
  %484 = sub nsw i64 %482, %483
  store i64 %484, ptr %44, align 8, !tbaa !9
  %485 = load ptr, ptr %24, align 8, !tbaa !5
  %486 = load i64, ptr %52, align 8, !tbaa !9
  %487 = load i64, ptr %52, align 8, !tbaa !9
  %488 = load i64, ptr %38, align 8, !tbaa !9
  %489 = mul nsw i64 %487, %488
  %490 = add nsw i64 %486, %489
  %491 = getelementptr inbounds %struct.complex, ptr %485, i64 %490
  %492 = load ptr, ptr %25, align 8, !tbaa !5
  %493 = load ptr, ptr %32, align 8, !tbaa !5
  %494 = load i64, ptr %56, align 8, !tbaa !9
  %495 = getelementptr inbounds %struct.complex, ptr %493, i64 %494
  %496 = load ptr, ptr %32, align 8, !tbaa !5
  %497 = load i64, ptr %62, align 8, !tbaa !9
  %498 = getelementptr inbounds %struct.complex, ptr %496, i64 %497
  %499 = call i32 @cgeqrf_(ptr noundef %64, ptr noundef %60, ptr noundef %491, ptr noundef %492, ptr noundef %495, ptr noundef %498, ptr noundef %44, ptr noundef %59)
  %500 = load i64, ptr %59, align 8, !tbaa !9
  %501 = icmp sge i64 %500, 0
  br i1 %501, label %502, label %523

502:                                              ; preds = %466
  %503 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %503, ptr %46, align 8, !tbaa !9
  %504 = load i64, ptr %77, align 8, !tbaa !9
  store i64 %504, ptr %44, align 8, !tbaa !9
  %505 = load ptr, ptr %32, align 8, !tbaa !5
  %506 = load i64, ptr %46, align 8, !tbaa !9
  %507 = getelementptr inbounds %struct.complex, ptr %505, i64 %506
  %508 = getelementptr inbounds %struct.complex, ptr %507, i32 0, i32 0
  %509 = load float, ptr %508, align 4, !tbaa !11
  %510 = fptosi float %509 to i64
  %511 = load i64, ptr %62, align 8, !tbaa !9
  %512 = add nsw i64 %510, %511
  %513 = sub nsw i64 %512, 1
  store i64 %513, ptr %45, align 8, !tbaa !9
  %514 = load i64, ptr %44, align 8, !tbaa !9
  %515 = load i64, ptr %45, align 8, !tbaa !9
  %516 = icmp sge i64 %514, %515
  br i1 %516, label %517, label %519

517:                                              ; preds = %502
  %518 = load i64, ptr %44, align 8, !tbaa !9
  br label %521

519:                                              ; preds = %502
  %520 = load i64, ptr %45, align 8, !tbaa !9
  br label %521

521:                                              ; preds = %519, %517
  %522 = phi i64 [ %518, %517 ], [ %520, %519 ]
  store i64 %522, ptr %77, align 8, !tbaa !9
  br label %523

523:                                              ; preds = %521, %466
  %524 = load i64, ptr %59, align 8, !tbaa !9
  %525 = icmp ne i64 %524, 0
  br i1 %525, label %526, label %531

526:                                              ; preds = %523
  %527 = load ptr, ptr %21, align 8, !tbaa !5
  %528 = load i64, ptr %527, align 8, !tbaa !9
  %529 = add nsw i64 %528, 2
  %530 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %529, ptr %530, align 8, !tbaa !9
  br label %929

531:                                              ; preds = %523
  %532 = load ptr, ptr %33, align 8, !tbaa !5
  %533 = load i64, ptr %532, align 8, !tbaa !9
  %534 = add nsw i64 %533, 1
  %535 = load i64, ptr %62, align 8, !tbaa !9
  %536 = sub nsw i64 %534, %535
  store i64 %536, ptr %44, align 8, !tbaa !9
  %537 = load ptr, ptr %24, align 8, !tbaa !5
  %538 = load i64, ptr %52, align 8, !tbaa !9
  %539 = load i64, ptr %52, align 8, !tbaa !9
  %540 = load i64, ptr %38, align 8, !tbaa !9
  %541 = mul nsw i64 %539, %540
  %542 = add nsw i64 %538, %541
  %543 = getelementptr inbounds %struct.complex, ptr %537, i64 %542
  %544 = load ptr, ptr %25, align 8, !tbaa !5
  %545 = load ptr, ptr %32, align 8, !tbaa !5
  %546 = load i64, ptr %56, align 8, !tbaa !9
  %547 = getelementptr inbounds %struct.complex, ptr %545, i64 %546
  %548 = load ptr, ptr %22, align 8, !tbaa !5
  %549 = load i64, ptr %52, align 8, !tbaa !9
  %550 = load i64, ptr %52, align 8, !tbaa !9
  %551 = load i64, ptr %36, align 8, !tbaa !9
  %552 = mul nsw i64 %550, %551
  %553 = add nsw i64 %549, %552
  %554 = getelementptr inbounds %struct.complex, ptr %548, i64 %553
  %555 = load ptr, ptr %23, align 8, !tbaa !5
  %556 = load ptr, ptr %32, align 8, !tbaa !5
  %557 = load i64, ptr %62, align 8, !tbaa !9
  %558 = getelementptr inbounds %struct.complex, ptr %556, i64 %557
  %559 = call i32 @cunmqr_(ptr noundef @.str.13, ptr noundef @.str.14, ptr noundef %64, ptr noundef %60, ptr noundef %64, ptr noundef %543, ptr noundef %544, ptr noundef %547, ptr noundef %554, ptr noundef %555, ptr noundef %558, ptr noundef %44, ptr noundef %59)
  %560 = load i64, ptr %59, align 8, !tbaa !9
  %561 = icmp sge i64 %560, 0
  br i1 %561, label %562, label %583

562:                                              ; preds = %531
  %563 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %563, ptr %46, align 8, !tbaa !9
  %564 = load i64, ptr %77, align 8, !tbaa !9
  store i64 %564, ptr %44, align 8, !tbaa !9
  %565 = load ptr, ptr %32, align 8, !tbaa !5
  %566 = load i64, ptr %46, align 8, !tbaa !9
  %567 = getelementptr inbounds %struct.complex, ptr %565, i64 %566
  %568 = getelementptr inbounds %struct.complex, ptr %567, i32 0, i32 0
  %569 = load float, ptr %568, align 4, !tbaa !11
  %570 = fptosi float %569 to i64
  %571 = load i64, ptr %62, align 8, !tbaa !9
  %572 = add nsw i64 %570, %571
  %573 = sub nsw i64 %572, 1
  store i64 %573, ptr %45, align 8, !tbaa !9
  %574 = load i64, ptr %44, align 8, !tbaa !9
  %575 = load i64, ptr %45, align 8, !tbaa !9
  %576 = icmp sge i64 %574, %575
  br i1 %576, label %577, label %579

577:                                              ; preds = %562
  %578 = load i64, ptr %44, align 8, !tbaa !9
  br label %581

579:                                              ; preds = %562
  %580 = load i64, ptr %45, align 8, !tbaa !9
  br label %581

581:                                              ; preds = %579, %577
  %582 = phi i64 [ %578, %577 ], [ %580, %579 ]
  store i64 %582, ptr %77, align 8, !tbaa !9
  br label %583

583:                                              ; preds = %581, %531
  %584 = load i64, ptr %59, align 8, !tbaa !9
  %585 = icmp ne i64 %584, 0
  br i1 %585, label %586, label %591

586:                                              ; preds = %583
  %587 = load ptr, ptr %21, align 8, !tbaa !5
  %588 = load i64, ptr %587, align 8, !tbaa !9
  %589 = add nsw i64 %588, 3
  %590 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %589, ptr %590, align 8, !tbaa !9
  br label %929

591:                                              ; preds = %583
  %592 = load i64, ptr %61, align 8, !tbaa !9
  %593 = icmp ne i64 %592, 0
  br i1 %593, label %594, label %677

594:                                              ; preds = %591
  %595 = load ptr, ptr %21, align 8, !tbaa !5
  %596 = load ptr, ptr %21, align 8, !tbaa !5
  %597 = load ptr, ptr %28, align 8, !tbaa !5
  %598 = load i64, ptr %41, align 8, !tbaa !9
  %599 = getelementptr inbounds %struct.complex, ptr %597, i64 %598
  %600 = load ptr, ptr %29, align 8, !tbaa !5
  %601 = call i32 @claset_(ptr noundef @.str.15, ptr noundef %595, ptr noundef %596, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %599, ptr noundef %600)
  %602 = load i64, ptr %64, align 8, !tbaa !9
  %603 = sub nsw i64 %602, 1
  store i64 %603, ptr %44, align 8, !tbaa !9
  %604 = load i64, ptr %64, align 8, !tbaa !9
  %605 = sub nsw i64 %604, 1
  store i64 %605, ptr %45, align 8, !tbaa !9
  %606 = load ptr, ptr %24, align 8, !tbaa !5
  %607 = load i64, ptr %52, align 8, !tbaa !9
  %608 = add nsw i64 %607, 1
  %609 = load i64, ptr %52, align 8, !tbaa !9
  %610 = load i64, ptr %38, align 8, !tbaa !9
  %611 = mul nsw i64 %609, %610
  %612 = add nsw i64 %608, %611
  %613 = getelementptr inbounds %struct.complex, ptr %606, i64 %612
  %614 = load ptr, ptr %25, align 8, !tbaa !5
  %615 = load ptr, ptr %28, align 8, !tbaa !5
  %616 = load i64, ptr %52, align 8, !tbaa !9
  %617 = add nsw i64 %616, 1
  %618 = load i64, ptr %52, align 8, !tbaa !9
  %619 = load i64, ptr %40, align 8, !tbaa !9
  %620 = mul nsw i64 %618, %619
  %621 = add nsw i64 %617, %620
  %622 = getelementptr inbounds %struct.complex, ptr %615, i64 %621
  %623 = load ptr, ptr %29, align 8, !tbaa !5
  %624 = call i32 @clacpy_(ptr noundef @.str.13, ptr noundef %44, ptr noundef %45, ptr noundef %613, ptr noundef %614, ptr noundef %622, ptr noundef %623)
  %625 = load ptr, ptr %33, align 8, !tbaa !5
  %626 = load i64, ptr %625, align 8, !tbaa !9
  %627 = add nsw i64 %626, 1
  %628 = load i64, ptr %62, align 8, !tbaa !9
  %629 = sub nsw i64 %627, %628
  store i64 %629, ptr %44, align 8, !tbaa !9
  %630 = load ptr, ptr %28, align 8, !tbaa !5
  %631 = load i64, ptr %52, align 8, !tbaa !9
  %632 = load i64, ptr %52, align 8, !tbaa !9
  %633 = load i64, ptr %40, align 8, !tbaa !9
  %634 = mul nsw i64 %632, %633
  %635 = add nsw i64 %631, %634
  %636 = getelementptr inbounds %struct.complex, ptr %630, i64 %635
  %637 = load ptr, ptr %29, align 8, !tbaa !5
  %638 = load ptr, ptr %32, align 8, !tbaa !5
  %639 = load i64, ptr %56, align 8, !tbaa !9
  %640 = getelementptr inbounds %struct.complex, ptr %638, i64 %639
  %641 = load ptr, ptr %32, align 8, !tbaa !5
  %642 = load i64, ptr %62, align 8, !tbaa !9
  %643 = getelementptr inbounds %struct.complex, ptr %641, i64 %642
  %644 = call i32 @cungqr_(ptr noundef %64, ptr noundef %64, ptr noundef %64, ptr noundef %636, ptr noundef %637, ptr noundef %640, ptr noundef %643, ptr noundef %44, ptr noundef %59)
  %645 = load i64, ptr %59, align 8, !tbaa !9
  %646 = icmp sge i64 %645, 0
  br i1 %646, label %647, label %668

647:                                              ; preds = %594
  %648 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %648, ptr %46, align 8, !tbaa !9
  %649 = load i64, ptr %77, align 8, !tbaa !9
  store i64 %649, ptr %44, align 8, !tbaa !9
  %650 = load ptr, ptr %32, align 8, !tbaa !5
  %651 = load i64, ptr %46, align 8, !tbaa !9
  %652 = getelementptr inbounds %struct.complex, ptr %650, i64 %651
  %653 = getelementptr inbounds %struct.complex, ptr %652, i32 0, i32 0
  %654 = load float, ptr %653, align 4, !tbaa !11
  %655 = fptosi float %654 to i64
  %656 = load i64, ptr %62, align 8, !tbaa !9
  %657 = add nsw i64 %655, %656
  %658 = sub nsw i64 %657, 1
  store i64 %658, ptr %45, align 8, !tbaa !9
  %659 = load i64, ptr %44, align 8, !tbaa !9
  %660 = load i64, ptr %45, align 8, !tbaa !9
  %661 = icmp sge i64 %659, %660
  br i1 %661, label %662, label %664

662:                                              ; preds = %647
  %663 = load i64, ptr %44, align 8, !tbaa !9
  br label %666

664:                                              ; preds = %647
  %665 = load i64, ptr %45, align 8, !tbaa !9
  br label %666

666:                                              ; preds = %664, %662
  %667 = phi i64 [ %663, %662 ], [ %665, %664 ]
  store i64 %667, ptr %77, align 8, !tbaa !9
  br label %668

668:                                              ; preds = %666, %594
  %669 = load i64, ptr %59, align 8, !tbaa !9
  %670 = icmp ne i64 %669, 0
  br i1 %670, label %671, label %676

671:                                              ; preds = %668
  %672 = load ptr, ptr %21, align 8, !tbaa !5
  %673 = load i64, ptr %672, align 8, !tbaa !9
  %674 = add nsw i64 %673, 4
  %675 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %674, ptr %675, align 8, !tbaa !9
  br label %929

676:                                              ; preds = %668
  br label %677

677:                                              ; preds = %676, %591
  %678 = load i64, ptr %63, align 8, !tbaa !9
  %679 = icmp ne i64 %678, 0
  br i1 %679, label %680, label %688

680:                                              ; preds = %677
  %681 = load ptr, ptr %21, align 8, !tbaa !5
  %682 = load ptr, ptr %21, align 8, !tbaa !5
  %683 = load ptr, ptr %30, align 8, !tbaa !5
  %684 = load i64, ptr %43, align 8, !tbaa !9
  %685 = getelementptr inbounds %struct.complex, ptr %683, i64 %684
  %686 = load ptr, ptr %31, align 8, !tbaa !5
  %687 = call i32 @claset_(ptr noundef @.str.15, ptr noundef %681, ptr noundef %682, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %685, ptr noundef %686)
  br label %688

688:                                              ; preds = %680, %677
  %689 = load ptr, ptr %19, align 8, !tbaa !5
  %690 = load ptr, ptr %20, align 8, !tbaa !5
  %691 = load ptr, ptr %21, align 8, !tbaa !5
  %692 = load ptr, ptr %22, align 8, !tbaa !5
  %693 = load i64, ptr %37, align 8, !tbaa !9
  %694 = getelementptr inbounds %struct.complex, ptr %692, i64 %693
  %695 = load ptr, ptr %23, align 8, !tbaa !5
  %696 = load ptr, ptr %24, align 8, !tbaa !5
  %697 = load i64, ptr %39, align 8, !tbaa !9
  %698 = getelementptr inbounds %struct.complex, ptr %696, i64 %697
  %699 = load ptr, ptr %25, align 8, !tbaa !5
  %700 = load ptr, ptr %28, align 8, !tbaa !5
  %701 = load i64, ptr %41, align 8, !tbaa !9
  %702 = getelementptr inbounds %struct.complex, ptr %700, i64 %701
  %703 = load ptr, ptr %29, align 8, !tbaa !5
  %704 = load ptr, ptr %30, align 8, !tbaa !5
  %705 = load i64, ptr %43, align 8, !tbaa !9
  %706 = getelementptr inbounds %struct.complex, ptr %704, i64 %705
  %707 = load ptr, ptr %31, align 8, !tbaa !5
  %708 = call i32 @cgghrd_(ptr noundef %689, ptr noundef %690, ptr noundef %691, ptr noundef %52, ptr noundef %51, ptr noundef %694, ptr noundef %695, ptr noundef %698, ptr noundef %699, ptr noundef %702, ptr noundef %703, ptr noundef %706, ptr noundef %707, ptr noundef %59)
  %709 = load i64, ptr %59, align 8, !tbaa !9
  %710 = icmp ne i64 %709, 0
  br i1 %710, label %711, label %716

711:                                              ; preds = %688
  %712 = load ptr, ptr %21, align 8, !tbaa !5
  %713 = load i64, ptr %712, align 8, !tbaa !9
  %714 = add nsw i64 %713, 5
  %715 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %714, ptr %715, align 8, !tbaa !9
  br label %929

716:                                              ; preds = %688
  %717 = load i64, ptr %56, align 8, !tbaa !9
  store i64 %717, ptr %62, align 8, !tbaa !9
  %718 = load ptr, ptr %33, align 8, !tbaa !5
  %719 = load i64, ptr %718, align 8, !tbaa !9
  %720 = add nsw i64 %719, 1
  %721 = load i64, ptr %62, align 8, !tbaa !9
  %722 = sub nsw i64 %720, %721
  store i64 %722, ptr %44, align 8, !tbaa !9
  %723 = load ptr, ptr %19, align 8, !tbaa !5
  %724 = load ptr, ptr %20, align 8, !tbaa !5
  %725 = load ptr, ptr %21, align 8, !tbaa !5
  %726 = load ptr, ptr %22, align 8, !tbaa !5
  %727 = load i64, ptr %37, align 8, !tbaa !9
  %728 = getelementptr inbounds %struct.complex, ptr %726, i64 %727
  %729 = load ptr, ptr %23, align 8, !tbaa !5
  %730 = load ptr, ptr %24, align 8, !tbaa !5
  %731 = load i64, ptr %39, align 8, !tbaa !9
  %732 = getelementptr inbounds %struct.complex, ptr %730, i64 %731
  %733 = load ptr, ptr %25, align 8, !tbaa !5
  %734 = load ptr, ptr %26, align 8, !tbaa !5
  %735 = getelementptr inbounds %struct.complex, ptr %734, i64 1
  %736 = load ptr, ptr %27, align 8, !tbaa !5
  %737 = getelementptr inbounds %struct.complex, ptr %736, i64 1
  %738 = load ptr, ptr %28, align 8, !tbaa !5
  %739 = load i64, ptr %41, align 8, !tbaa !9
  %740 = getelementptr inbounds %struct.complex, ptr %738, i64 %739
  %741 = load ptr, ptr %29, align 8, !tbaa !5
  %742 = load ptr, ptr %30, align 8, !tbaa !5
  %743 = load i64, ptr %43, align 8, !tbaa !9
  %744 = getelementptr inbounds %struct.complex, ptr %742, i64 %743
  %745 = load ptr, ptr %31, align 8, !tbaa !5
  %746 = load ptr, ptr %32, align 8, !tbaa !5
  %747 = load i64, ptr %62, align 8, !tbaa !9
  %748 = getelementptr inbounds %struct.complex, ptr %746, i64 %747
  %749 = load ptr, ptr %34, align 8, !tbaa !5
  %750 = load i64, ptr %76, align 8, !tbaa !9
  %751 = getelementptr inbounds float, ptr %749, i64 %750
  %752 = call i32 @chgeqz_(ptr noundef @.str.9, ptr noundef %723, ptr noundef %724, ptr noundef %725, ptr noundef %52, ptr noundef %51, ptr noundef %728, ptr noundef %729, ptr noundef %732, ptr noundef %733, ptr noundef %735, ptr noundef %737, ptr noundef %740, ptr noundef %741, ptr noundef %744, ptr noundef %745, ptr noundef %748, ptr noundef %44, ptr noundef %751, ptr noundef %59)
  %753 = load i64, ptr %59, align 8, !tbaa !9
  %754 = icmp sge i64 %753, 0
  br i1 %754, label %755, label %776

755:                                              ; preds = %716
  %756 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %756, ptr %46, align 8, !tbaa !9
  %757 = load i64, ptr %77, align 8, !tbaa !9
  store i64 %757, ptr %44, align 8, !tbaa !9
  %758 = load ptr, ptr %32, align 8, !tbaa !5
  %759 = load i64, ptr %46, align 8, !tbaa !9
  %760 = getelementptr inbounds %struct.complex, ptr %758, i64 %759
  %761 = getelementptr inbounds %struct.complex, ptr %760, i32 0, i32 0
  %762 = load float, ptr %761, align 4, !tbaa !11
  %763 = fptosi float %762 to i64
  %764 = load i64, ptr %62, align 8, !tbaa !9
  %765 = add nsw i64 %763, %764
  %766 = sub nsw i64 %765, 1
  store i64 %766, ptr %45, align 8, !tbaa !9
  %767 = load i64, ptr %44, align 8, !tbaa !9
  %768 = load i64, ptr %45, align 8, !tbaa !9
  %769 = icmp sge i64 %767, %768
  br i1 %769, label %770, label %772

770:                                              ; preds = %755
  %771 = load i64, ptr %44, align 8, !tbaa !9
  br label %774

772:                                              ; preds = %755
  %773 = load i64, ptr %45, align 8, !tbaa !9
  br label %774

774:                                              ; preds = %772, %770
  %775 = phi i64 [ %771, %770 ], [ %773, %772 ]
  store i64 %775, ptr %77, align 8, !tbaa !9
  br label %776

776:                                              ; preds = %774, %716
  %777 = load i64, ptr %59, align 8, !tbaa !9
  %778 = icmp ne i64 %777, 0
  br i1 %778, label %779, label %814

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

782:                                              ; preds = %779
  %783 = load i64, ptr %59, align 8, !tbaa !9
  %784 = load ptr, ptr %21, 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 %59, align 8, !tbaa !9
  %789 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %788, ptr %789, align 8, !tbaa !9
  br label %813

790:                                              ; preds = %782, %779
  %791 = load i64, ptr %59, align 8, !tbaa !9
  %792 = load ptr, ptr %21, 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 %59, align 8, !tbaa !9
  %797 = load ptr, ptr %21, 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 %59, align 8, !tbaa !9
  %803 = load ptr, ptr %21, align 8, !tbaa !5
  %804 = load i64, ptr %803, align 8, !tbaa !9
  %805 = sub nsw i64 %802, %804
  %806 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %805, ptr %806, align 8, !tbaa !9
  br label %812

807:                                              ; preds = %795, %790
  %808 = load ptr, ptr %21, align 8, !tbaa !5
  %809 = load i64, ptr %808, align 8, !tbaa !9
  %810 = add nsw i64 %809, 6
  %811 = load ptr, ptr %35, 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 %929

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

817:                                              ; preds = %814
  %818 = load ptr, ptr %21, align 8, !tbaa !5
  %819 = load ptr, ptr %34, align 8, !tbaa !5
  %820 = load i64, ptr %58, align 8, !tbaa !9
  %821 = getelementptr inbounds float, ptr %819, i64 %820
  %822 = load ptr, ptr %34, align 8, !tbaa !5
  %823 = load i64, ptr %70, align 8, !tbaa !9
  %824 = getelementptr inbounds float, ptr %822, i64 %823
  %825 = load ptr, ptr %21, align 8, !tbaa !5
  %826 = load ptr, ptr %28, align 8, !tbaa !5
  %827 = load i64, ptr %41, align 8, !tbaa !9
  %828 = getelementptr inbounds %struct.complex, ptr %826, i64 %827
  %829 = load ptr, ptr %29, align 8, !tbaa !5
  %830 = call i32 @cggbak_(ptr noundef @.str.12, ptr noundef @.str.13, ptr noundef %818, ptr noundef %52, ptr noundef %51, ptr noundef %821, ptr noundef %824, ptr noundef %825, ptr noundef %828, ptr noundef %829, ptr noundef %59)
  %831 = load i64, ptr %59, align 8, !tbaa !9
  %832 = icmp ne i64 %831, 0
  br i1 %832, label %833, label %838

833:                                              ; preds = %817
  %834 = load ptr, ptr %21, align 8, !tbaa !5
  %835 = load i64, ptr %834, align 8, !tbaa !9
  %836 = add nsw i64 %835, 7
  %837 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %836, ptr %837, align 8, !tbaa !9
  br label %929

838:                                              ; preds = %817
  br label %839

839:                                              ; preds = %838, %814
  %840 = load i64, ptr %63, align 8, !tbaa !9
  %841 = icmp ne i64 %840, 0
  br i1 %841, label %842, label %864

842:                                              ; preds = %839
  %843 = load ptr, ptr %21, align 8, !tbaa !5
  %844 = load ptr, ptr %34, align 8, !tbaa !5
  %845 = load i64, ptr %58, align 8, !tbaa !9
  %846 = getelementptr inbounds float, ptr %844, i64 %845
  %847 = load ptr, ptr %34, align 8, !tbaa !5
  %848 = load i64, ptr %70, align 8, !tbaa !9
  %849 = getelementptr inbounds float, ptr %847, i64 %848
  %850 = load ptr, ptr %21, align 8, !tbaa !5
  %851 = load ptr, ptr %30, align 8, !tbaa !5
  %852 = load i64, ptr %43, align 8, !tbaa !9
  %853 = getelementptr inbounds %struct.complex, ptr %851, i64 %852
  %854 = load ptr, ptr %31, align 8, !tbaa !5
  %855 = call i32 @cggbak_(ptr noundef @.str.12, ptr noundef @.str.16, ptr noundef %843, ptr noundef %52, ptr noundef %51, ptr noundef %846, ptr noundef %849, ptr noundef %850, ptr noundef %853, ptr noundef %854, ptr noundef %59)
  %856 = load i64, ptr %59, align 8, !tbaa !9
  %857 = icmp ne i64 %856, 0
  br i1 %857, label %858, label %863

858:                                              ; preds = %842
  %859 = load ptr, ptr %21, align 8, !tbaa !5
  %860 = load i64, ptr %859, align 8, !tbaa !9
  %861 = add nsw i64 %860, 8
  %862 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %861, ptr %862, align 8, !tbaa !9
  br label %929

863:                                              ; preds = %842
  br label %864

864:                                              ; preds = %863, %839
  %865 = load i64, ptr %65, align 8, !tbaa !9
  %866 = icmp ne i64 %865, 0
  br i1 %866, label %867, label %896

867:                                              ; preds = %864
  %868 = load ptr, ptr %21, align 8, !tbaa !5
  %869 = load ptr, ptr %21, align 8, !tbaa !5
  %870 = load ptr, ptr %22, align 8, !tbaa !5
  %871 = load i64, ptr %37, align 8, !tbaa !9
  %872 = getelementptr inbounds %struct.complex, ptr %870, i64 %871
  %873 = load ptr, ptr %23, align 8, !tbaa !5
  %874 = call i32 @clascl_(ptr noundef @.str.17, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef %72, ptr noundef %54, ptr noundef %868, ptr noundef %869, ptr noundef %872, ptr noundef %873, ptr noundef %59)
  %875 = load i64, ptr %59, align 8, !tbaa !9
  %876 = icmp ne i64 %875, 0
  br i1 %876, label %877, label %882

877:                                              ; preds = %867
  %878 = load ptr, ptr %21, align 8, !tbaa !5
  %879 = load i64, ptr %878, align 8, !tbaa !9
  %880 = add nsw i64 %879, 9
  %881 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %880, ptr %881, align 8, !tbaa !9
  store i32 0, ptr %18, align 4
  store i32 1, ptr %79, align 4
  br label %938

882:                                              ; preds = %867
  %883 = load ptr, ptr %21, align 8, !tbaa !5
  %884 = load ptr, ptr %26, align 8, !tbaa !5
  %885 = getelementptr inbounds %struct.complex, ptr %884, i64 1
  %886 = load ptr, ptr %21, align 8, !tbaa !5
  %887 = call i32 @clascl_(ptr noundef @.str.11, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef %72, ptr noundef %54, ptr noundef %883, ptr noundef @c__1, ptr noundef %885, ptr noundef %886, ptr noundef %59)
  %888 = load i64, ptr %59, align 8, !tbaa !9
  %889 = icmp ne i64 %888, 0
  br i1 %889, label %890, label %895

890:                                              ; preds = %882
  %891 = load ptr, ptr %21, align 8, !tbaa !5
  %892 = load i64, ptr %891, align 8, !tbaa !9
  %893 = add nsw i64 %892, 9
  %894 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %893, ptr %894, align 8, !tbaa !9
  store i32 0, ptr %18, align 4
  store i32 1, ptr %79, align 4
  br label %938

895:                                              ; preds = %882
  br label %896

896:                                              ; preds = %895, %864
  %897 = load i64, ptr %66, align 8, !tbaa !9
  %898 = icmp ne i64 %897, 0
  br i1 %898, label %899, label %928

899:                                              ; preds = %896
  %900 = load ptr, ptr %21, align 8, !tbaa !5
  %901 = load ptr, ptr %21, align 8, !tbaa !5
  %902 = load ptr, ptr %24, align 8, !tbaa !5
  %903 = load i64, ptr %39, align 8, !tbaa !9
  %904 = getelementptr inbounds %struct.complex, ptr %902, i64 %903
  %905 = load ptr, ptr %25, align 8, !tbaa !5
  %906 = call i32 @clascl_(ptr noundef @.str.17, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef %74, ptr noundef %55, ptr noundef %900, ptr noundef %901, ptr noundef %904, ptr noundef %905, ptr noundef %59)
  %907 = load i64, ptr %59, align 8, !tbaa !9
  %908 = icmp ne i64 %907, 0
  br i1 %908, label %909, label %914

909:                                              ; preds = %899
  %910 = load ptr, ptr %21, align 8, !tbaa !5
  %911 = load i64, ptr %910, align 8, !tbaa !9
  %912 = add nsw i64 %911, 9
  %913 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %912, ptr %913, align 8, !tbaa !9
  store i32 0, ptr %18, align 4
  store i32 1, ptr %79, align 4
  br label %938

914:                                              ; preds = %899
  %915 = load ptr, ptr %21, align 8, !tbaa !5
  %916 = load ptr, ptr %27, align 8, !tbaa !5
  %917 = getelementptr inbounds %struct.complex, ptr %916, i64 1
  %918 = load ptr, ptr %21, align 8, !tbaa !5
  %919 = call i32 @clascl_(ptr noundef @.str.11, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef %74, ptr noundef %55, ptr noundef %915, ptr noundef @c__1, ptr noundef %917, ptr noundef %918, ptr noundef %59)
  %920 = load i64, ptr %59, align 8, !tbaa !9
  %921 = icmp ne i64 %920, 0
  br i1 %921, label %922, label %927

922:                                              ; preds = %914
  %923 = load ptr, ptr %21, align 8, !tbaa !5
  %924 = load i64, ptr %923, align 8, !tbaa !9
  %925 = add nsw i64 %924, 9
  %926 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %925, ptr %926, align 8, !tbaa !9
  store i32 0, ptr %18, align 4
  store i32 1, ptr %79, align 4
  br label %938

927:                                              ; preds = %914
  br label %928

928:                                              ; preds = %927, %896
  br label %929

929:                                              ; preds = %928, %858, %833, %813, %711, %671, %586, %526, %461
  %930 = load i64, ptr %77, align 8, !tbaa !9
  %931 = sitofp i64 %930 to float
  %932 = load ptr, ptr %32, align 8, !tbaa !5
  %933 = getelementptr inbounds %struct.complex, ptr %932, i64 1
  %934 = getelementptr inbounds %struct.complex, ptr %933, i32 0, i32 0
  store float %931, ptr %934, align 4, !tbaa !11
  %935 = load ptr, ptr %32, align 8, !tbaa !5
  %936 = getelementptr inbounds %struct.complex, ptr %935, i64 1
  %937 = getelementptr inbounds %struct.complex, ptr %936, i32 0, i32 1
  store float 0.000000e+00, ptr %937, align 4, !tbaa !14
  store i32 0, ptr %18, align 4
  store i32 1, ptr %79, align 4
  br label %938

938:                                              ; preds = %929, %922, %909, %890, %877, %426, %381, %326, %320, %312
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  %939 = load i32, ptr %18, align 4
  ret i32 %939
}

; 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 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 @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 }

!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}


; 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
@c__1 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.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 @cgegs_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr nocapture noundef readonly %14, ptr noundef %15, ptr nocapture noundef %16) local_unnamed_addr #0 {
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca float, align 4
  %23 = alloca float, align 4
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca float, align 4
  %28 = alloca float, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #4
  %29 = load i64, ptr %4, align 8, !tbaa !5
  %30 = xor i64 %29, -1
  %31 = getelementptr inbounds %struct.complex, ptr %3, i64 %30
  %32 = load i64, ptr %6, align 8, !tbaa !5
  %33 = xor i64 %32, -1
  %34 = getelementptr inbounds %struct.complex, ptr %5, i64 %33
  %35 = load i64, ptr %10, align 8, !tbaa !5
  %36 = xor i64 %35, -1
  %37 = getelementptr inbounds %struct.complex, ptr %9, i64 %36
  %38 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %.not = icmp eq i64 %38, 0
  br i1 %.not, label %39, label %41

39:                                               ; preds = %17
  %40 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %.not341 = icmp eq i64 %40, 0
  br label %41

41:                                               ; preds = %39, %17
  %.not344 = phi i1 [ true, %17 ], [ %.not341, %39 ]
  %42 = phi i1 [ false, %17 ], [ %.not341, %39 ]
  %43 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #4
  %.not342 = icmp eq i64 %43, 0
  br i1 %.not342, label %44, label %46

44:                                               ; preds = %41
  %45 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #4
  %.not343 = icmp eq i64 %45, 0
  br label %46

46:                                               ; preds = %44, %41
  %.not345 = phi i1 [ true, %41 ], [ %.not343, %44 ]
  %47 = phi i1 [ false, %41 ], [ %.not343, %44 ]
  %48 = load i64, ptr %2, align 8, !tbaa !5
  %49 = shl i64 %48, 1
  %50 = tail call i64 @llvm.smax.i64(i64 %49, i64 1)
  %51 = uitofp nneg i64 %50 to float
  store float %51, ptr %13, align 4, !tbaa !9
  %52 = getelementptr inbounds i8, ptr %13, i64 4
  store float 0.000000e+00, ptr %52, align 4, !tbaa !12
  %53 = load i64, ptr %14, align 8, !tbaa !5
  %54 = icmp eq i64 %53, -1
  store i64 0, ptr %16, align 8, !tbaa !5
  %brmerge = select i1 %42, i1 true, i1 %47
  %.mux = select i1 %42, i64 -1, i64 -2
  br i1 %brmerge, label %.thread380.sink.split, label %55

55:                                               ; preds = %46
  %56 = load i64, ptr %2, align 8, !tbaa !5
  %57 = icmp slt i64 %56, 0
  br i1 %57, label %.thread380.sink.split, label %58

58:                                               ; preds = %55
  %59 = load i64, ptr %4, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %56, i64 1)
  %60 = icmp slt i64 %59, %spec.select
  br i1 %60, label %.thread380.sink.split, label %61

61:                                               ; preds = %58
  %62 = load i64, ptr %6, align 8, !tbaa !5
  %63 = icmp slt i64 %62, %spec.select
  br i1 %63, label %.thread380.sink.split, label %64

64:                                               ; preds = %61
  %65 = load i64, ptr %10, align 8, !tbaa !5
  %66 = icmp sgt i64 %65, 0
  %67 = icmp uge i64 %65, %56
  %or.cond414.not = or i1 %.not344, %67
  %or.cond419 = select i1 %66, i1 %or.cond414.not, i1 false
  br i1 %or.cond419, label %68, label %.thread380.sink.split

68:                                               ; preds = %64
  %69 = load i64, ptr %12, align 8, !tbaa !5
  %70 = icmp sgt i64 %69, 0
  %71 = icmp uge i64 %69, %56
  %or.cond415.not = or i1 %.not345, %71
  %or.cond420 = select i1 %70, i1 %or.cond415.not, i1 false
  br i1 %or.cond420, label %72, label %.thread380.sink.split

72:                                               ; preds = %68
  %73 = load i64, ptr %14, align 8, !tbaa !5
  %74 = icmp sge i64 %73, %50
  %or.cond = select i1 %74, i1 true, i1 %54
  br i1 %or.cond, label %.thread, label %.thread380.sink.split

.thread:                                          ; preds = %72
  %75 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #4
  %76 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_n1) #4
  %77 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_n1) #4
  %78 = tail call i64 @llvm.smax.i64(i64 %75, i64 %76)
  store i64 %78, ptr %18, align 8, !tbaa !5
  %79 = tail call i64 @llvm.smax.i64(i64 %78, i64 %77)
  %80 = load i64, ptr %2, align 8, !tbaa !5
  %81 = add nsw i64 %79, 1
  %82 = mul nsw i64 %80, %81
  %83 = sitofp i64 %82 to float
  store float %83, ptr %13, align 4, !tbaa !9
  store float 0.000000e+00, ptr %52, align 4, !tbaa !12
  %.pr379.pr = load i64, ptr %16, align 8, !tbaa !5
  %.not348 = icmp eq i64 %.pr379.pr, 0
  br i1 %.not348, label %87, label %.thread380

.thread380.sink.split:                            ; preds = %46, %72, %68, %64, %61, %58, %55
  %.sink = phi i64 [ %.mux, %46 ], [ -3, %55 ], [ -5, %58 ], [ -7, %61 ], [ -11, %64 ], [ -13, %68 ], [ -15, %72 ]
  store i64 %.sink, ptr %16, align 8, !tbaa !5
  br label %.thread380

.thread380:                                       ; preds = %.thread380.sink.split, %.thread
  %84 = phi i64 [ %.pr379.pr, %.thread ], [ %.sink, %.thread380.sink.split ]
  %85 = sub nsw i64 0, %84
  store i64 %85, ptr %18, align 8, !tbaa !5
  %86 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %18) #4
  br label %277

87:                                               ; preds = %.thread
  %88 = icmp eq i64 %80, 0
  %or.cond421 = select i1 %54, i1 true, i1 %88
  br i1 %or.cond421, label %277, label %89

89:                                               ; preds = %87
  %90 = tail call double @slamch_(ptr noundef nonnull @.str.7) #4
  %91 = tail call double @slamch_(ptr noundef nonnull @.str.8) #4
  %92 = fmul double %90, %91
  %93 = fptrunc double %92 to float
  %94 = tail call double @slamch_(ptr noundef nonnull @.str.9) #4
  %95 = fptrunc double %94 to float
  %96 = load i64, ptr %2, align 8, !tbaa !5
  %97 = sitofp i64 %96 to float
  %98 = fmul float %95, %97
  %99 = fdiv float %98, %93
  %100 = fdiv float 1.000000e+00, %99
  %101 = tail call double @clange_(ptr noundef nonnull @.str.10, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %15) #4
  %102 = fptrunc double %101 to float
  store float %102, ptr %22, align 4, !tbaa !13
  %103 = fcmp ogt float %102, 0.000000e+00
  %104 = fcmp ogt float %99, %102
  %or.cond375 = select i1 %103, i1 %104, i1 false
  br i1 %or.cond375, label %107, label %105

105:                                              ; preds = %89
  %106 = fcmp olt float %100, %102
  br i1 %106, label %107, label %113

107:                                              ; preds = %105, %89
  %storemerge = phi float [ %99, %89 ], [ %100, %105 ]
  store float %storemerge, ptr %27, align 4, !tbaa !13
  %108 = call i32 @clascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull %22, ptr noundef nonnull %27, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %24) #4
  %109 = load i64, ptr %24, align 8, !tbaa !5
  %.not350 = icmp eq i64 %109, 0
  br i1 %.not350, label %113, label %110

110:                                              ; preds = %107
  %111 = load i64, ptr %2, align 8, !tbaa !5
  %112 = add nsw i64 %111, 9
  store i64 %112, ptr %16, align 8, !tbaa !5
  br label %277

113:                                              ; preds = %105, %107
  %.not349386 = phi i1 [ false, %107 ], [ true, %105 ]
  %114 = call double @clange_(ptr noundef nonnull @.str.10, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %15) #4
  %115 = fptrunc double %114 to float
  store float %115, ptr %23, align 4, !tbaa !13
  %116 = fcmp ogt float %115, 0.000000e+00
  %117 = fcmp ogt float %99, %115
  %or.cond376 = select i1 %116, i1 %117, i1 false
  br i1 %or.cond376, label %120, label %118

118:                                              ; preds = %113
  %119 = fcmp olt float %100, %115
  br i1 %119, label %120, label %126

120:                                              ; preds = %118, %113
  %storemerge418 = phi float [ %99, %113 ], [ %100, %118 ]
  store float %storemerge418, ptr %28, align 4, !tbaa !13
  %121 = call i32 @clascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull %23, ptr noundef nonnull %28, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %24) #4
  %122 = load i64, ptr %24, align 8, !tbaa !5
  %.not352 = icmp eq i64 %122, 0
  br i1 %.not352, label %126, label %123

123:                                              ; preds = %120
  %124 = load i64, ptr %2, align 8, !tbaa !5
  %125 = add nsw i64 %124, 9
  store i64 %125, ptr %16, align 8, !tbaa !5
  br label %277

126:                                              ; preds = %118, %120
  %.not351391 = phi i1 [ false, %120 ], [ true, %118 ]
  %127 = load i64, ptr %2, align 8, !tbaa !5
  %128 = getelementptr float, ptr %15, i64 %127
  %.idx = shl i64 %127, 3
  %129 = getelementptr i8, ptr %15, i64 %.idx
  %130 = call i32 @cggbal_(ptr noundef nonnull @.str.12, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %21, ptr noundef nonnull %20, ptr noundef %15, ptr noundef %128, ptr noundef %129, ptr noundef nonnull %24) #4
  %131 = load i64, ptr %24, align 8, !tbaa !5
  %.not353 = icmp eq i64 %131, 0
  br i1 %.not353, label %135, label %132

132:                                              ; preds = %126
  %133 = load i64, ptr %2, align 8, !tbaa !5
  %134 = add nsw i64 %133, 1
  br label %.sink.split

135:                                              ; preds = %126
  %136 = load i64, ptr %20, align 8, !tbaa !5
  %137 = add nsw i64 %136, 1
  %138 = load i64, ptr %21, align 8, !tbaa !5
  %139 = sub i64 %137, %138
  store i64 %139, ptr %26, align 8, !tbaa !5
  %140 = load i64, ptr %2, align 8, !tbaa !5
  %reass.sub = sub i64 %140, %138
  %141 = add i64 %reass.sub, 1
  store i64 %141, ptr %25, align 8, !tbaa !5
  %142 = load i64, ptr %14, align 8, !tbaa !5
  %143 = sub i64 %142, %139
  store i64 %143, ptr %18, align 8, !tbaa !5
  %144 = add i64 %32, 1
  %145 = mul i64 %138, %144
  %146 = getelementptr inbounds %struct.complex, ptr %34, i64 %145
  %147 = getelementptr %struct.complex, ptr %13, i64 %139
  %148 = call i32 @cgeqrf_(ptr noundef nonnull %26, ptr noundef nonnull %25, ptr noundef %146, ptr noundef nonnull %6, ptr noundef nonnull %13, ptr noundef %147, ptr noundef nonnull %18, ptr noundef nonnull %24) #4
  %149 = load i64, ptr %24, align 8, !tbaa !5
  %150 = icmp sgt i64 %149, -1
  br i1 %150, label %151, label %.thread392

151:                                              ; preds = %135
  %152 = load float, ptr %147, align 4, !tbaa !9
  %153 = fptosi float %152 to i64
  %154 = add i64 %139, %153
  store i64 %154, ptr %19, align 8, !tbaa !5
  %155 = call i64 @llvm.smax.i64(i64 %50, i64 %154)
  %.not355 = icmp eq i64 %149, 0
  br i1 %.not355, label %158, label %.thread392

.thread392:                                       ; preds = %135, %151
  %.0321395 = phi i64 [ %155, %151 ], [ %50, %135 ]
  %156 = load i64, ptr %2, align 8, !tbaa !5
  %157 = add nsw i64 %156, 2
  br label %.sink.split

158:                                              ; preds = %151
  %159 = load i64, ptr %14, align 8, !tbaa !5
  %160 = sub i64 %159, %139
  store i64 %160, ptr %18, align 8, !tbaa !5
  %161 = load i64, ptr %21, align 8, !tbaa !5
  %162 = mul i64 %161, %144
  %163 = getelementptr inbounds %struct.complex, ptr %34, i64 %162
  %164 = add i64 %29, 1
  %165 = mul i64 %161, %164
  %166 = getelementptr inbounds %struct.complex, ptr %31, i64 %165
  %167 = call i32 @cunmqr_(ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.14, ptr noundef nonnull %26, ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef %163, ptr noundef nonnull %6, ptr noundef nonnull %13, ptr noundef %166, ptr noundef nonnull %4, ptr noundef nonnull %147, ptr noundef nonnull %18, ptr noundef nonnull %24) #4
  %168 = load i64, ptr %24, align 8, !tbaa !5
  %169 = icmp sgt i64 %168, -1
  br i1 %169, label %170, label %.thread396

170:                                              ; preds = %158
  store i64 %155, ptr %18, align 8, !tbaa !5
  %171 = load float, ptr %147, align 4, !tbaa !9
  %172 = fptosi float %171 to i64
  %173 = add i64 %139, %172
  store i64 %173, ptr %19, align 8, !tbaa !5
  %174 = call i64 @llvm.smax.i64(i64 %155, i64 %173)
  %.not357 = icmp eq i64 %168, 0
  br i1 %.not357, label %177, label %.thread396

.thread396:                                       ; preds = %158, %170
  %.1399 = phi i64 [ %174, %170 ], [ %155, %158 ]
  %175 = load i64, ptr %2, align 8, !tbaa !5
  %176 = add nsw i64 %175, 3
  br label %.sink.split

177:                                              ; preds = %170
  br i1 %.not344, label %207, label %178

178:                                              ; preds = %177
  %179 = call i32 @claset_(ptr noundef nonnull @.str.15, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b2, ptr noundef %9, ptr noundef nonnull %10) #4
  %180 = load i64, ptr %26, align 8, !tbaa !5
  %181 = add nsw i64 %180, -1
  store i64 %181, ptr %18, align 8, !tbaa !5
  store i64 %181, ptr %19, align 8, !tbaa !5
  %182 = load i64, ptr %21, align 8, !tbaa !5
  %183 = add nsw i64 %182, 1
  %184 = mul nsw i64 %182, %32
  %185 = getelementptr %struct.complex, ptr %34, i64 %183
  %186 = getelementptr %struct.complex, ptr %185, i64 %184
  %187 = mul nsw i64 %182, %35
  %188 = getelementptr %struct.complex, ptr %37, i64 %183
  %189 = getelementptr %struct.complex, ptr %188, i64 %187
  %190 = call i32 @clacpy_(ptr noundef nonnull @.str.13, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef %186, ptr noundef nonnull %6, ptr noundef %189, ptr noundef nonnull %10) #4
  %191 = load i64, ptr %14, align 8, !tbaa !5
  %192 = sub i64 %191, %139
  store i64 %192, ptr %18, align 8, !tbaa !5
  %193 = load i64, ptr %21, align 8, !tbaa !5
  %194 = add i64 %35, 1
  %195 = mul i64 %193, %194
  %196 = getelementptr inbounds %struct.complex, ptr %37, i64 %195
  %197 = call i32 @cungqr_(ptr noundef nonnull %26, ptr noundef nonnull %26, ptr noundef nonnull %26, ptr noundef %196, ptr noundef nonnull %10, ptr noundef nonnull %13, ptr noundef nonnull %147, ptr noundef nonnull %18, ptr noundef nonnull %24) #4
  %198 = load i64, ptr %24, align 8, !tbaa !5
  %199 = icmp sgt i64 %198, -1
  br i1 %199, label %200, label %.thread400

200:                                              ; preds = %178
  store i64 %174, ptr %18, align 8, !tbaa !5
  %201 = load float, ptr %147, align 4, !tbaa !9
  %202 = fptosi float %201 to i64
  %203 = add i64 %139, %202
  store i64 %203, ptr %19, align 8, !tbaa !5
  %204 = call i64 @llvm.smax.i64(i64 %174, i64 %203)
  %.not360 = icmp eq i64 %198, 0
  br i1 %.not360, label %207, label %.thread400

.thread400:                                       ; preds = %178, %200
  %.2403 = phi i64 [ %204, %200 ], [ %174, %178 ]
  %205 = load i64, ptr %2, align 8, !tbaa !5
  %206 = add nsw i64 %205, 4
  br label %.sink.split

207:                                              ; preds = %200, %177
  %.3 = phi i64 [ %204, %200 ], [ %174, %177 ]
  br i1 %.not345, label %210, label %208

208:                                              ; preds = %207
  %209 = call i32 @claset_(ptr noundef nonnull @.str.15, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b2, ptr noundef %11, ptr noundef nonnull %12) #4
  br label %210

210:                                              ; preds = %208, %207
  %211 = call i32 @cgghrd_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %21, ptr noundef nonnull %20, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %24) #4
  %212 = load i64, ptr %24, align 8, !tbaa !5
  %.not362 = icmp eq i64 %212, 0
  br i1 %.not362, label %216, label %213

213:                                              ; preds = %210
  %214 = load i64, ptr %2, align 8, !tbaa !5
  %215 = add nsw i64 %214, 5
  br label %.sink.split

216:                                              ; preds = %210
  %217 = load i64, ptr %14, align 8, !tbaa !5
  store i64 %217, ptr %18, align 8, !tbaa !5
  %218 = call i32 @chgeqz_(ptr noundef nonnull @.str.9, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %21, ptr noundef nonnull %20, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %18, ptr noundef %129, ptr noundef nonnull %24) #4
  %219 = load i64, ptr %24, align 8, !tbaa !5
  %220 = icmp sgt i64 %219, -1
  br i1 %220, label %221, label %._crit_edge

._crit_edge:                                      ; preds = %216
  %.pre = load i64, ptr %2, align 8, !tbaa !5
  br label %227

221:                                              ; preds = %216
  store i64 %.3, ptr %18, align 8, !tbaa !5
  %222 = load float, ptr %13, align 4, !tbaa !9
  %223 = fptosi float %222 to i64
  store i64 %223, ptr %19, align 8, !tbaa !5
  %224 = call i64 @llvm.smax.i64(i64 %.3, i64 %223)
  %.not364 = icmp eq i64 %219, 0
  br i1 %.not364, label %235, label %225

225:                                              ; preds = %221
  %226 = load i64, ptr %2, align 8, !tbaa !5
  %.not371 = icmp sgt i64 %219, %226
  br i1 %.not371, label %227, label %.sink.split

227:                                              ; preds = %._crit_edge, %225
  %228 = phi i64 [ %226, %225 ], [ %.pre, %._crit_edge ]
  %.4407411 = phi i64 [ %224, %225 ], [ %.3, %._crit_edge ]
  %229 = icmp sle i64 %219, %228
  %230 = shl i64 %228, 1
  %.not372 = icmp sgt i64 %219, %230
  %or.cond377 = or i1 %229, %.not372
  br i1 %or.cond377, label %233, label %231

231:                                              ; preds = %227
  %232 = sub nsw i64 %219, %228
  br label %.sink.split

233:                                              ; preds = %227
  %234 = add nsw i64 %228, 6
  br label %.sink.split

235:                                              ; preds = %221
  br i1 %.not344, label %242, label %236

236:                                              ; preds = %235
  %237 = call i32 @cggbak_(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.13, ptr noundef nonnull %2, ptr noundef nonnull %21, ptr noundef nonnull %20, ptr noundef %15, ptr noundef %128, ptr noundef nonnull %2, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %24) #4
  %238 = load i64, ptr %24, align 8, !tbaa !5
  %.not365 = icmp eq i64 %238, 0
  br i1 %.not365, label %242, label %239

239:                                              ; preds = %236
  %240 = load i64, ptr %2, align 8, !tbaa !5
  %241 = add nsw i64 %240, 7
  br label %.sink.split

242:                                              ; preds = %236, %235
  br i1 %.not345, label %249, label %243

243:                                              ; preds = %242
  %244 = call i32 @cggbak_(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.16, ptr noundef nonnull %2, ptr noundef nonnull %21, ptr noundef nonnull %20, ptr noundef %15, ptr noundef %128, ptr noundef nonnull %2, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %24) #4
  %245 = load i64, ptr %24, align 8, !tbaa !5
  %.not366 = icmp eq i64 %245, 0
  br i1 %.not366, label %249, label %246

246:                                              ; preds = %243
  %247 = load i64, ptr %2, align 8, !tbaa !5
  %248 = add nsw i64 %247, 8
  br label %.sink.split

249:                                              ; preds = %243, %242
  br i1 %.not349386, label %262, label %250

250:                                              ; preds = %249
  %251 = call i32 @clascl_(ptr noundef nonnull @.str.17, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull %27, ptr noundef nonnull %22, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %24) #4
  %252 = load i64, ptr %24, align 8, !tbaa !5
  %.not367 = icmp eq i64 %252, 0
  br i1 %.not367, label %256, label %253

253:                                              ; preds = %250
  %254 = load i64, ptr %2, align 8, !tbaa !5
  %255 = add nsw i64 %254, 9
  store i64 %255, ptr %16, align 8, !tbaa !5
  br label %277

256:                                              ; preds = %250
  %257 = call i32 @clascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull %27, ptr noundef nonnull %22, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %7, ptr noundef nonnull %2, ptr noundef nonnull %24) #4
  %258 = load i64, ptr %24, align 8, !tbaa !5
  %.not368 = icmp eq i64 %258, 0
  br i1 %.not368, label %262, label %259

259:                                              ; preds = %256
  %260 = load i64, ptr %2, align 8, !tbaa !5
  %261 = add nsw i64 %260, 9
  store i64 %261, ptr %16, align 8, !tbaa !5
  br label %277

262:                                              ; preds = %256, %249
  br i1 %.not351391, label %275, label %263

263:                                              ; preds = %262
  %264 = call i32 @clascl_(ptr noundef nonnull @.str.17, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull %28, ptr noundef nonnull %23, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %24) #4
  %265 = load i64, ptr %24, align 8, !tbaa !5
  %.not369 = icmp eq i64 %265, 0
  br i1 %.not369, label %269, label %266

266:                                              ; preds = %263
  %267 = load i64, ptr %2, align 8, !tbaa !5
  %268 = add nsw i64 %267, 9
  store i64 %268, ptr %16, align 8, !tbaa !5
  br label %277

269:                                              ; preds = %263
  %270 = call i32 @clascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull %28, ptr noundef nonnull %23, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %8, ptr noundef nonnull %2, ptr noundef nonnull %24) #4
  %271 = load i64, ptr %24, align 8, !tbaa !5
  %.not370 = icmp eq i64 %271, 0
  br i1 %.not370, label %275, label %272

272:                                              ; preds = %269
  %273 = load i64, ptr %2, align 8, !tbaa !5
  %274 = add nsw i64 %273, 9
  store i64 %274, ptr %16, align 8, !tbaa !5
  br label %277

.sink.split:                                      ; preds = %225, %132, %.thread392, %.thread396, %.thread400, %213, %239, %246, %231, %233
  %.sink422 = phi i64 [ %234, %233 ], [ %232, %231 ], [ %248, %246 ], [ %241, %239 ], [ %215, %213 ], [ %206, %.thread400 ], [ %176, %.thread396 ], [ %157, %.thread392 ], [ %134, %132 ], [ %219, %225 ]
  %.5.ph = phi i64 [ %.4407411, %233 ], [ %.4407411, %231 ], [ %224, %246 ], [ %224, %239 ], [ %.3, %213 ], [ %.2403, %.thread400 ], [ %.1399, %.thread396 ], [ %.0321395, %.thread392 ], [ %50, %132 ], [ %224, %225 ]
  store i64 %.sink422, ptr %16, align 8, !tbaa !5
  br label %275

275:                                              ; preds = %.sink.split, %262, %269
  %.5 = phi i64 [ %224, %269 ], [ %224, %262 ], [ %.5.ph, %.sink.split ]
  %276 = uitofp nneg i64 %.5 to float
  store float %276, ptr %13, align 4, !tbaa !9
  store float 0.000000e+00, ptr %52, align 4, !tbaa !12
  br label %277

277:                                              ; preds = %87, %275, %272, %266, %259, %253, %123, %110, %.thread380
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #4
  ret i32 0
}

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

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

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

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

declare double @slamch_(ptr noundef) local_unnamed_addr #2

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 @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) #3

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

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

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

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


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass