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

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

%struct.complex = type { float, float }

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

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

134:                                              ; preds = %21
  store i64 1, ptr %77, align 8, !tbaa !9
  store i64 0, ptr %70, align 8, !tbaa !9
  br label %142

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

139:                                              ; preds = %135
  store i64 2, ptr %77, align 8, !tbaa !9
  store i64 1, ptr %70, align 8, !tbaa !9
  br label %141

140:                                              ; preds = %135
  store i64 -1, ptr %77, align 8, !tbaa !9
  store i64 0, ptr %70, align 8, !tbaa !9
  br label %141

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

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

146:                                              ; preds = %142
  store i64 1, ptr %79, align 8, !tbaa !9
  store i64 0, ptr %71, align 8, !tbaa !9
  br label %154

147:                                              ; preds = %142
  %148 = load ptr, ptr %24, align 8, !tbaa !5
  %149 = call i64 @lsame_(ptr noundef %148, ptr noundef @.str.1)
  %150 = icmp ne i64 %149, 0
  br i1 %150, label %151, label %152

151:                                              ; preds = %147
  store i64 2, ptr %79, align 8, !tbaa !9
  store i64 1, ptr %71, align 8, !tbaa !9
  br label %153

152:                                              ; preds = %147
  store i64 -1, ptr %79, align 8, !tbaa !9
  store i64 0, ptr %71, align 8, !tbaa !9
  br label %153

153:                                              ; preds = %152, %151
  br label %154

154:                                              ; preds = %153, %146
  %155 = load ptr, ptr %25, align 8, !tbaa !5
  %156 = call i64 @lsame_(ptr noundef %155, ptr noundef @.str.2)
  store i64 %156, ptr %85, align 8, !tbaa !9
  %157 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 0, ptr %157, align 8, !tbaa !9
  %158 = load ptr, ptr %40, align 8, !tbaa !5
  %159 = load i64, ptr %158, align 8, !tbaa !9
  %160 = icmp eq i64 %159, -1
  %161 = zext i1 %160 to i32
  %162 = sext i32 %161 to i64
  store i64 %162, ptr %86, align 8, !tbaa !9
  %163 = load i64, ptr %77, align 8, !tbaa !9
  %164 = icmp sle i64 %163, 0
  br i1 %164, label %165, label %167

165:                                              ; preds = %154
  %166 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -1, ptr %166, align 8, !tbaa !9
  br label %254

167:                                              ; preds = %154
  %168 = load i64, ptr %79, align 8, !tbaa !9
  %169 = icmp sle i64 %168, 0
  br i1 %169, label %170, label %172

170:                                              ; preds = %167
  %171 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -2, ptr %171, align 8, !tbaa !9
  br label %253

172:                                              ; preds = %167
  %173 = load i64, ptr %85, align 8, !tbaa !9
  %174 = icmp ne i64 %173, 0
  br i1 %174, label %181, label %175

175:                                              ; preds = %172
  %176 = load ptr, ptr %25, align 8, !tbaa !5
  %177 = call i64 @lsame_(ptr noundef %176, ptr noundef @.str)
  %178 = icmp ne i64 %177, 0
  br i1 %178, label %181, label %179

179:                                              ; preds = %175
  %180 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -3, ptr %180, align 8, !tbaa !9
  br label %252

181:                                              ; preds = %175, %172
  %182 = load ptr, ptr %27, align 8, !tbaa !5
  %183 = load i64, ptr %182, align 8, !tbaa !9
  %184 = icmp slt i64 %183, 0
  br i1 %184, label %185, label %187

185:                                              ; preds = %181
  %186 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -5, ptr %186, align 8, !tbaa !9
  br label %251

187:                                              ; preds = %181
  %188 = load ptr, ptr %29, align 8, !tbaa !5
  %189 = load i64, ptr %188, align 8, !tbaa !9
  %190 = load ptr, ptr %27, align 8, !tbaa !5
  %191 = load i64, ptr %190, align 8, !tbaa !9
  %192 = icmp sge i64 1, %191
  br i1 %192, label %193, label %194

193:                                              ; preds = %187
  br label %197

194:                                              ; preds = %187
  %195 = load ptr, ptr %27, align 8, !tbaa !5
  %196 = load i64, ptr %195, align 8, !tbaa !9
  br label %197

197:                                              ; preds = %194, %193
  %198 = phi i64 [ 1, %193 ], [ %196, %194 ]
  %199 = icmp slt i64 %189, %198
  br i1 %199, label %200, label %202

200:                                              ; preds = %197
  %201 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -7, ptr %201, align 8, !tbaa !9
  br label %250

202:                                              ; preds = %197
  %203 = load ptr, ptr %31, align 8, !tbaa !5
  %204 = load i64, ptr %203, align 8, !tbaa !9
  %205 = load ptr, ptr %27, align 8, !tbaa !5
  %206 = load i64, ptr %205, align 8, !tbaa !9
  %207 = icmp sge i64 1, %206
  br i1 %207, label %208, label %209

208:                                              ; preds = %202
  br label %212

209:                                              ; preds = %202
  %210 = load ptr, ptr %27, align 8, !tbaa !5
  %211 = load i64, ptr %210, align 8, !tbaa !9
  br label %212

212:                                              ; preds = %209, %208
  %213 = phi i64 [ 1, %208 ], [ %211, %209 ]
  %214 = icmp slt i64 %204, %213
  br i1 %214, label %215, label %217

215:                                              ; preds = %212
  %216 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -9, ptr %216, align 8, !tbaa !9
  br label %249

217:                                              ; preds = %212
  %218 = load ptr, ptr %36, align 8, !tbaa !5
  %219 = load i64, ptr %218, align 8, !tbaa !9
  %220 = icmp slt i64 %219, 1
  br i1 %220, label %230, label %221

221:                                              ; preds = %217
  %222 = load i64, ptr %70, align 8, !tbaa !9
  %223 = icmp ne i64 %222, 0
  br i1 %223, label %224, label %232

224:                                              ; preds = %221
  %225 = load ptr, ptr %36, align 8, !tbaa !5
  %226 = load i64, ptr %225, align 8, !tbaa !9
  %227 = load ptr, ptr %27, align 8, !tbaa !5
  %228 = load i64, ptr %227, align 8, !tbaa !9
  %229 = icmp slt i64 %226, %228
  br i1 %229, label %230, label %232

230:                                              ; preds = %224, %217
  %231 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -14, ptr %231, align 8, !tbaa !9
  br label %248

232:                                              ; preds = %224, %221
  %233 = load ptr, ptr %38, align 8, !tbaa !5
  %234 = load i64, ptr %233, align 8, !tbaa !9
  %235 = icmp slt i64 %234, 1
  br i1 %235, label %245, label %236

236:                                              ; preds = %232
  %237 = load i64, ptr %71, align 8, !tbaa !9
  %238 = icmp ne i64 %237, 0
  br i1 %238, label %239, label %247

239:                                              ; preds = %236
  %240 = load ptr, ptr %38, align 8, !tbaa !5
  %241 = load i64, ptr %240, align 8, !tbaa !9
  %242 = load ptr, ptr %27, align 8, !tbaa !5
  %243 = load i64, ptr %242, align 8, !tbaa !9
  %244 = icmp slt i64 %241, %243
  br i1 %244, label %245, label %247

245:                                              ; preds = %239, %232
  %246 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -16, ptr %246, align 8, !tbaa !9
  br label %247

247:                                              ; preds = %245, %239, %236
  br label %248

248:                                              ; preds = %247, %230
  br label %249

249:                                              ; preds = %248, %215
  br label %250

250:                                              ; preds = %249, %200
  br label %251

251:                                              ; preds = %250, %185
  br label %252

252:                                              ; preds = %251, %179
  br label %253

253:                                              ; preds = %252, %170
  br label %254

254:                                              ; preds = %253, %165
  %255 = load ptr, ptr %43, align 8, !tbaa !5
  %256 = load i64, ptr %255, align 8, !tbaa !9
  %257 = icmp eq i64 %256, 0
  br i1 %257, label %258, label %349

258:                                              ; preds = %254
  store i64 1, ptr %52, align 8, !tbaa !9
  %259 = load ptr, ptr %27, align 8, !tbaa !5
  %260 = load i64, ptr %259, align 8, !tbaa !9
  %261 = shl i64 %260, 1
  store i64 %261, ptr %53, align 8, !tbaa !9
  %262 = load i64, ptr %52, align 8, !tbaa !9
  %263 = load i64, ptr %53, align 8, !tbaa !9
  %264 = icmp sge i64 %262, %263
  br i1 %264, label %265, label %267

265:                                              ; preds = %258
  %266 = load i64, ptr %52, align 8, !tbaa !9
  br label %269

267:                                              ; preds = %258
  %268 = load i64, ptr %53, align 8, !tbaa !9
  br label %269

269:                                              ; preds = %267, %265
  %270 = phi i64 [ %266, %265 ], [ %268, %267 ]
  store i64 %270, ptr %81, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  %271 = load ptr, ptr %27, align 8, !tbaa !5
  %272 = load i64, ptr %271, align 8, !tbaa !9
  %273 = load ptr, ptr %27, align 8, !tbaa !5
  %274 = load i64, ptr %273, align 8, !tbaa !9
  %275 = load ptr, ptr %27, align 8, !tbaa !5
  %276 = load ptr, ptr %27, align 8, !tbaa !5
  %277 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %275, ptr noundef @c__1, ptr noundef %276, ptr noundef @c__0)
  %278 = mul nsw i64 %274, %277
  %279 = add nsw i64 %272, %278
  store i64 %279, ptr %53, align 8, !tbaa !9
  %280 = load i64, ptr %52, align 8, !tbaa !9
  %281 = load i64, ptr %53, align 8, !tbaa !9
  %282 = icmp sge i64 %280, %281
  br i1 %282, label %283, label %285

283:                                              ; preds = %269
  %284 = load i64, ptr %52, align 8, !tbaa !9
  br label %287

285:                                              ; preds = %269
  %286 = load i64, ptr %53, align 8, !tbaa !9
  br label %287

287:                                              ; preds = %285, %283
  %288 = phi i64 [ %284, %283 ], [ %286, %285 ]
  store i64 %288, ptr %87, align 8, !tbaa !9
  %289 = load i64, ptr %87, align 8, !tbaa !9
  store i64 %289, ptr %52, align 8, !tbaa !9
  %290 = load ptr, ptr %27, align 8, !tbaa !5
  %291 = load i64, ptr %290, align 8, !tbaa !9
  %292 = load ptr, ptr %27, align 8, !tbaa !5
  %293 = load i64, ptr %292, align 8, !tbaa !9
  %294 = load ptr, ptr %27, align 8, !tbaa !5
  %295 = load ptr, ptr %27, align 8, !tbaa !5
  %296 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.4, ptr noundef %294, ptr noundef @c__1, ptr noundef %295, ptr noundef @c_n1)
  %297 = mul nsw i64 %293, %296
  %298 = add nsw i64 %291, %297
  store i64 %298, ptr %53, align 8, !tbaa !9
  %299 = load i64, ptr %52, align 8, !tbaa !9
  %300 = load i64, ptr %53, align 8, !tbaa !9
  %301 = icmp sge i64 %299, %300
  br i1 %301, label %302, label %304

302:                                              ; preds = %287
  %303 = load i64, ptr %52, align 8, !tbaa !9
  br label %306

304:                                              ; preds = %287
  %305 = load i64, ptr %53, align 8, !tbaa !9
  br label %306

306:                                              ; preds = %304, %302
  %307 = phi i64 [ %303, %302 ], [ %305, %304 ]
  store i64 %307, ptr %87, align 8, !tbaa !9
  %308 = load i64, ptr %70, align 8, !tbaa !9
  %309 = icmp ne i64 %308, 0
  br i1 %309, label %310, label %330

310:                                              ; preds = %306
  %311 = load i64, ptr %87, align 8, !tbaa !9
  store i64 %311, ptr %52, align 8, !tbaa !9
  %312 = load ptr, ptr %27, align 8, !tbaa !5
  %313 = load i64, ptr %312, align 8, !tbaa !9
  %314 = load ptr, ptr %27, align 8, !tbaa !5
  %315 = load i64, ptr %314, align 8, !tbaa !9
  %316 = load ptr, ptr %27, align 8, !tbaa !5
  %317 = load ptr, ptr %27, align 8, !tbaa !5
  %318 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.6, ptr noundef @.str.4, ptr noundef %316, ptr noundef @c__1, ptr noundef %317, ptr noundef @c_n1)
  %319 = mul nsw i64 %315, %318
  %320 = add nsw i64 %313, %319
  store i64 %320, ptr %53, align 8, !tbaa !9
  %321 = load i64, ptr %52, align 8, !tbaa !9
  %322 = load i64, ptr %53, align 8, !tbaa !9
  %323 = icmp sge i64 %321, %322
  br i1 %323, label %324, label %326

324:                                              ; preds = %310
  %325 = load i64, ptr %52, align 8, !tbaa !9
  br label %328

326:                                              ; preds = %310
  %327 = load i64, ptr %53, align 8, !tbaa !9
  br label %328

328:                                              ; preds = %326, %324
  %329 = phi i64 [ %325, %324 ], [ %327, %326 ]
  store i64 %329, ptr %87, align 8, !tbaa !9
  br label %330

330:                                              ; preds = %328, %306
  %331 = load i64, ptr %87, align 8, !tbaa !9
  %332 = sitofp i64 %331 to float
  %333 = load ptr, ptr %39, align 8, !tbaa !5
  %334 = getelementptr inbounds %struct.complex, ptr %333, i64 1
  %335 = getelementptr inbounds %struct.complex, ptr %334, i32 0, i32 0
  store float %332, ptr %335, align 4, !tbaa !11
  %336 = load ptr, ptr %39, align 8, !tbaa !5
  %337 = getelementptr inbounds %struct.complex, ptr %336, i64 1
  %338 = getelementptr inbounds %struct.complex, ptr %337, i32 0, i32 1
  store float 0.000000e+00, ptr %338, align 4, !tbaa !14
  %339 = load ptr, ptr %40, align 8, !tbaa !5
  %340 = load i64, ptr %339, align 8, !tbaa !9
  %341 = load i64, ptr %81, align 8, !tbaa !9
  %342 = icmp slt i64 %340, %341
  br i1 %342, label %343, label %348

343:                                              ; preds = %330
  %344 = load i64, ptr %86, align 8, !tbaa !9
  %345 = icmp ne i64 %344, 0
  br i1 %345, label %348, label %346

346:                                              ; preds = %343
  %347 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -18, ptr %347, align 8, !tbaa !9
  br label %348

348:                                              ; preds = %346, %343, %330
  br label %349

349:                                              ; preds = %348, %254
  %350 = load ptr, ptr %43, align 8, !tbaa !5
  %351 = load i64, ptr %350, align 8, !tbaa !9
  %352 = icmp ne i64 %351, 0
  br i1 %352, label %353, label %358

353:                                              ; preds = %349
  %354 = load ptr, ptr %43, align 8, !tbaa !5
  %355 = load i64, ptr %354, align 8, !tbaa !9
  %356 = sub nsw i64 0, %355
  store i64 %356, ptr %52, align 8, !tbaa !9
  %357 = call i32 @xerbla_(ptr noundef @.str.7, ptr noundef %52)
  store i32 0, ptr %22, align 4
  store i32 1, ptr %88, align 4
  br label %915

358:                                              ; preds = %349
  %359 = load i64, ptr %86, align 8, !tbaa !9
  %360 = icmp ne i64 %359, 0
  br i1 %360, label %361, label %362

361:                                              ; preds = %358
  store i32 0, ptr %22, align 4
  store i32 1, ptr %88, align 4
  br label %915

362:                                              ; preds = %358
  br label %363

363:                                              ; preds = %362
  %364 = load ptr, ptr %27, align 8, !tbaa !5
  %365 = load i64, ptr %364, align 8, !tbaa !9
  %366 = icmp eq i64 %365, 0
  br i1 %366, label %367, label %369

367:                                              ; preds = %363
  %368 = load ptr, ptr %32, align 8, !tbaa !5
  store i64 0, ptr %368, align 8, !tbaa !9
  store i32 0, ptr %22, align 4
  store i32 1, ptr %88, align 4
  br label %915

369:                                              ; preds = %363
  %370 = call double @slamch_(ptr noundef @.str.8)
  %371 = fptrunc double %370 to float
  store float %371, ptr %58, align 4, !tbaa !15
  %372 = call double @slamch_(ptr noundef @.str.2)
  %373 = fptrunc double %372 to float
  store float %373, ptr %84, align 4, !tbaa !15
  %374 = load float, ptr %84, align 4, !tbaa !15
  %375 = fdiv float 1.000000e+00, %374
  store float %375, ptr %76, align 4, !tbaa !15
  %376 = call i32 @slabad_(ptr noundef %84, ptr noundef %76)
  %377 = load float, ptr %84, align 4, !tbaa !15
  %378 = fpext float %377 to double
  %379 = call double @sqrt(double noundef %378) #4
  %380 = load float, ptr %58, align 4, !tbaa !15
  %381 = fpext float %380 to double
  %382 = fdiv double %379, %381
  %383 = fptrunc double %382 to float
  store float %383, ptr %84, align 4, !tbaa !15
  %384 = load float, ptr %84, align 4, !tbaa !15
  %385 = fdiv float 1.000000e+00, %384
  store float %385, ptr %76, align 4, !tbaa !15
  %386 = load ptr, ptr %27, align 8, !tbaa !5
  %387 = load ptr, ptr %27, align 8, !tbaa !5
  %388 = load ptr, ptr %28, align 8, !tbaa !5
  %389 = load i64, ptr %45, align 8, !tbaa !9
  %390 = getelementptr inbounds %struct.complex, ptr %388, i64 %389
  %391 = load ptr, ptr %29, align 8, !tbaa !5
  %392 = load ptr, ptr %41, align 8, !tbaa !5
  %393 = getelementptr inbounds float, ptr %392, i64 1
  %394 = call double @clange_(ptr noundef @.str.9, ptr noundef %386, ptr noundef %387, ptr noundef %390, ptr noundef %391, ptr noundef %393)
  %395 = fptrunc double %394 to float
  store float %395, ptr %59, align 4, !tbaa !15
  store i64 0, ptr %74, align 8, !tbaa !9
  %396 = load float, ptr %59, align 4, !tbaa !15
  %397 = fcmp ogt float %396, 0.000000e+00
  br i1 %397, label %398, label %404

398:                                              ; preds = %369
  %399 = load float, ptr %59, align 4, !tbaa !15
  %400 = load float, ptr %84, align 4, !tbaa !15
  %401 = fcmp olt float %399, %400
  br i1 %401, label %402, label %404

402:                                              ; preds = %398
  %403 = load float, ptr %84, align 4, !tbaa !15
  store float %403, ptr %80, align 4, !tbaa !15
  store i64 1, ptr %74, align 8, !tbaa !9
  br label %411

404:                                              ; preds = %398, %369
  %405 = load float, ptr %59, align 4, !tbaa !15
  %406 = load float, ptr %76, align 4, !tbaa !15
  %407 = fcmp ogt float %405, %406
  br i1 %407, label %408, label %410

408:                                              ; preds = %404
  %409 = load float, ptr %76, align 4, !tbaa !15
  store float %409, ptr %80, align 4, !tbaa !15
  store i64 1, ptr %74, align 8, !tbaa !9
  br label %410

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

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

414:                                              ; preds = %411
  %415 = load ptr, ptr %27, align 8, !tbaa !5
  %416 = load ptr, ptr %27, align 8, !tbaa !5
  %417 = load ptr, ptr %28, align 8, !tbaa !5
  %418 = load i64, ptr %45, align 8, !tbaa !9
  %419 = getelementptr inbounds %struct.complex, ptr %417, i64 %418
  %420 = load ptr, ptr %29, align 8, !tbaa !5
  %421 = call i32 @clascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %59, ptr noundef %80, ptr noundef %415, ptr noundef %416, ptr noundef %419, ptr noundef %420, ptr noundef %62)
  br label %422

422:                                              ; preds = %414, %411
  %423 = load ptr, ptr %27, align 8, !tbaa !5
  %424 = load ptr, ptr %27, align 8, !tbaa !5
  %425 = load ptr, ptr %30, align 8, !tbaa !5
  %426 = load i64, ptr %47, align 8, !tbaa !9
  %427 = getelementptr inbounds %struct.complex, ptr %425, i64 %426
  %428 = load ptr, ptr %31, align 8, !tbaa !5
  %429 = load ptr, ptr %41, align 8, !tbaa !5
  %430 = getelementptr inbounds float, ptr %429, i64 1
  %431 = call double @clange_(ptr noundef @.str.9, ptr noundef %423, ptr noundef %424, ptr noundef %427, ptr noundef %428, ptr noundef %430)
  %432 = fptrunc double %431 to float
  store float %432, ptr %60, align 4, !tbaa !15
  store i64 0, ptr %75, align 8, !tbaa !9
  %433 = load float, ptr %60, align 4, !tbaa !15
  %434 = fcmp ogt float %433, 0.000000e+00
  br i1 %434, label %435, label %441

435:                                              ; preds = %422
  %436 = load float, ptr %60, align 4, !tbaa !15
  %437 = load float, ptr %84, align 4, !tbaa !15
  %438 = fcmp olt float %436, %437
  br i1 %438, label %439, label %441

439:                                              ; preds = %435
  %440 = load float, ptr %84, align 4, !tbaa !15
  store float %440, ptr %83, align 4, !tbaa !15
  store i64 1, ptr %75, align 8, !tbaa !9
  br label %448

441:                                              ; preds = %435, %422
  %442 = load float, ptr %60, align 4, !tbaa !15
  %443 = load float, ptr %76, align 4, !tbaa !15
  %444 = fcmp ogt float %442, %443
  br i1 %444, label %445, label %447

445:                                              ; preds = %441
  %446 = load float, ptr %76, align 4, !tbaa !15
  store float %446, ptr %83, align 4, !tbaa !15
  store i64 1, ptr %75, align 8, !tbaa !9
  br label %447

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

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

451:                                              ; preds = %448
  %452 = load ptr, ptr %27, align 8, !tbaa !5
  %453 = load ptr, ptr %27, align 8, !tbaa !5
  %454 = load ptr, ptr %30, align 8, !tbaa !5
  %455 = load i64, ptr %47, align 8, !tbaa !9
  %456 = getelementptr inbounds %struct.complex, ptr %454, i64 %455
  %457 = load ptr, ptr %31, align 8, !tbaa !5
  %458 = call i32 @clascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %60, ptr noundef %83, ptr noundef %452, ptr noundef %453, ptr noundef %456, ptr noundef %457, ptr noundef %62)
  br label %459

459:                                              ; preds = %451, %448
  store i64 1, ptr %67, align 8, !tbaa !9
  %460 = load ptr, ptr %27, align 8, !tbaa !5
  %461 = load i64, ptr %460, align 8, !tbaa !9
  %462 = add nsw i64 %461, 1
  store i64 %462, ptr %78, align 8, !tbaa !9
  %463 = load i64, ptr %78, align 8, !tbaa !9
  %464 = load ptr, ptr %27, align 8, !tbaa !5
  %465 = load i64, ptr %464, align 8, !tbaa !9
  %466 = add nsw i64 %463, %465
  store i64 %466, ptr %72, align 8, !tbaa !9
  %467 = load ptr, ptr %27, align 8, !tbaa !5
  %468 = load ptr, ptr %28, align 8, !tbaa !5
  %469 = load i64, ptr %45, align 8, !tbaa !9
  %470 = getelementptr inbounds %struct.complex, ptr %468, i64 %469
  %471 = load ptr, ptr %29, align 8, !tbaa !5
  %472 = load ptr, ptr %30, align 8, !tbaa !5
  %473 = load i64, ptr %47, align 8, !tbaa !9
  %474 = getelementptr inbounds %struct.complex, ptr %472, i64 %473
  %475 = load ptr, ptr %31, align 8, !tbaa !5
  %476 = load ptr, ptr %41, align 8, !tbaa !5
  %477 = load i64, ptr %67, align 8, !tbaa !9
  %478 = getelementptr inbounds float, ptr %476, i64 %477
  %479 = load ptr, ptr %41, align 8, !tbaa !5
  %480 = load i64, ptr %78, align 8, !tbaa !9
  %481 = getelementptr inbounds float, ptr %479, i64 %480
  %482 = load ptr, ptr %41, align 8, !tbaa !5
  %483 = load i64, ptr %72, align 8, !tbaa !9
  %484 = getelementptr inbounds float, ptr %482, i64 %483
  %485 = call i32 @cggbal_(ptr noundef @.str.8, ptr noundef %467, ptr noundef %470, ptr noundef %471, ptr noundef %474, ptr noundef %475, ptr noundef %57, ptr noundef %56, ptr noundef %478, ptr noundef %481, ptr noundef %484, ptr noundef %62)
  %486 = load i64, ptr %56, align 8, !tbaa !9
  %487 = add nsw i64 %486, 1
  %488 = load i64, ptr %57, align 8, !tbaa !9
  %489 = sub nsw i64 %487, %488
  store i64 %489, ptr %73, align 8, !tbaa !9
  %490 = load ptr, ptr %27, align 8, !tbaa !5
  %491 = load i64, ptr %490, align 8, !tbaa !9
  %492 = add nsw i64 %491, 1
  %493 = load i64, ptr %57, align 8, !tbaa !9
  %494 = sub nsw i64 %492, %493
  store i64 %494, ptr %68, align 8, !tbaa !9
  store i64 1, ptr %63, align 8, !tbaa !9
  %495 = load i64, ptr %63, align 8, !tbaa !9
  %496 = load i64, ptr %73, align 8, !tbaa !9
  %497 = add nsw i64 %495, %496
  store i64 %497, ptr %64, align 8, !tbaa !9
  %498 = load ptr, ptr %40, align 8, !tbaa !5
  %499 = load i64, ptr %498, align 8, !tbaa !9
  %500 = add nsw i64 %499, 1
  %501 = load i64, ptr %64, align 8, !tbaa !9
  %502 = sub nsw i64 %500, %501
  store i64 %502, ptr %52, align 8, !tbaa !9
  %503 = load ptr, ptr %30, align 8, !tbaa !5
  %504 = load i64, ptr %57, align 8, !tbaa !9
  %505 = load i64, ptr %57, align 8, !tbaa !9
  %506 = load i64, ptr %46, align 8, !tbaa !9
  %507 = mul nsw i64 %505, %506
  %508 = add nsw i64 %504, %507
  %509 = getelementptr inbounds %struct.complex, ptr %503, i64 %508
  %510 = load ptr, ptr %31, align 8, !tbaa !5
  %511 = load ptr, ptr %39, align 8, !tbaa !5
  %512 = load i64, ptr %63, align 8, !tbaa !9
  %513 = getelementptr inbounds %struct.complex, ptr %511, i64 %512
  %514 = load ptr, ptr %39, align 8, !tbaa !5
  %515 = load i64, ptr %64, align 8, !tbaa !9
  %516 = getelementptr inbounds %struct.complex, ptr %514, i64 %515
  %517 = call i32 @cgeqrf_(ptr noundef %73, ptr noundef %68, ptr noundef %509, ptr noundef %510, ptr noundef %513, ptr noundef %516, ptr noundef %52, ptr noundef %62)
  %518 = load ptr, ptr %40, align 8, !tbaa !5
  %519 = load i64, ptr %518, align 8, !tbaa !9
  %520 = add nsw i64 %519, 1
  %521 = load i64, ptr %64, align 8, !tbaa !9
  %522 = sub nsw i64 %520, %521
  store i64 %522, ptr %52, align 8, !tbaa !9
  %523 = load ptr, ptr %30, align 8, !tbaa !5
  %524 = load i64, ptr %57, align 8, !tbaa !9
  %525 = load i64, ptr %57, align 8, !tbaa !9
  %526 = load i64, ptr %46, align 8, !tbaa !9
  %527 = mul nsw i64 %525, %526
  %528 = add nsw i64 %524, %527
  %529 = getelementptr inbounds %struct.complex, ptr %523, i64 %528
  %530 = load ptr, ptr %31, align 8, !tbaa !5
  %531 = load ptr, ptr %39, align 8, !tbaa !5
  %532 = load i64, ptr %63, align 8, !tbaa !9
  %533 = getelementptr inbounds %struct.complex, ptr %531, i64 %532
  %534 = load ptr, ptr %28, align 8, !tbaa !5
  %535 = load i64, ptr %57, align 8, !tbaa !9
  %536 = load i64, ptr %57, align 8, !tbaa !9
  %537 = load i64, ptr %44, align 8, !tbaa !9
  %538 = mul nsw i64 %536, %537
  %539 = add nsw i64 %535, %538
  %540 = getelementptr inbounds %struct.complex, ptr %534, i64 %539
  %541 = load ptr, ptr %29, align 8, !tbaa !5
  %542 = load ptr, ptr %39, align 8, !tbaa !5
  %543 = load i64, ptr %64, align 8, !tbaa !9
  %544 = getelementptr inbounds %struct.complex, ptr %542, i64 %543
  %545 = call i32 @cunmqr_(ptr noundef @.str.11, ptr noundef @.str.12, ptr noundef %73, ptr noundef %68, ptr noundef %73, ptr noundef %529, ptr noundef %530, ptr noundef %533, ptr noundef %540, ptr noundef %541, ptr noundef %544, ptr noundef %52, ptr noundef %62)
  %546 = load i64, ptr %70, align 8, !tbaa !9
  %547 = icmp ne i64 %546, 0
  br i1 %547, label %548, label %603

548:                                              ; preds = %459
  %549 = load ptr, ptr %27, align 8, !tbaa !5
  %550 = load ptr, ptr %27, align 8, !tbaa !5
  %551 = load ptr, ptr %35, align 8, !tbaa !5
  %552 = load i64, ptr %49, align 8, !tbaa !9
  %553 = getelementptr inbounds %struct.complex, ptr %551, i64 %552
  %554 = load ptr, ptr %36, align 8, !tbaa !5
  %555 = call i32 @claset_(ptr noundef @.str.13, ptr noundef %549, ptr noundef %550, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %553, ptr noundef %554)
  %556 = load i64, ptr %73, align 8, !tbaa !9
  %557 = icmp sgt i64 %556, 1
  br i1 %557, label %558, label %582

558:                                              ; preds = %548
  %559 = load i64, ptr %73, align 8, !tbaa !9
  %560 = sub nsw i64 %559, 1
  store i64 %560, ptr %52, align 8, !tbaa !9
  %561 = load i64, ptr %73, align 8, !tbaa !9
  %562 = sub nsw i64 %561, 1
  store i64 %562, ptr %53, align 8, !tbaa !9
  %563 = load ptr, ptr %30, align 8, !tbaa !5
  %564 = load i64, ptr %57, align 8, !tbaa !9
  %565 = add nsw i64 %564, 1
  %566 = load i64, ptr %57, align 8, !tbaa !9
  %567 = load i64, ptr %46, align 8, !tbaa !9
  %568 = mul nsw i64 %566, %567
  %569 = add nsw i64 %565, %568
  %570 = getelementptr inbounds %struct.complex, ptr %563, i64 %569
  %571 = load ptr, ptr %31, align 8, !tbaa !5
  %572 = load ptr, ptr %35, align 8, !tbaa !5
  %573 = load i64, ptr %57, align 8, !tbaa !9
  %574 = add nsw i64 %573, 1
  %575 = load i64, ptr %57, align 8, !tbaa !9
  %576 = load i64, ptr %48, align 8, !tbaa !9
  %577 = mul nsw i64 %575, %576
  %578 = add nsw i64 %574, %577
  %579 = getelementptr inbounds %struct.complex, ptr %572, i64 %578
  %580 = load ptr, ptr %36, align 8, !tbaa !5
  %581 = call i32 @clacpy_(ptr noundef @.str.11, ptr noundef %52, ptr noundef %53, ptr noundef %570, ptr noundef %571, ptr noundef %579, ptr noundef %580)
  br label %582

582:                                              ; preds = %558, %548
  %583 = load ptr, ptr %40, align 8, !tbaa !5
  %584 = load i64, ptr %583, align 8, !tbaa !9
  %585 = add nsw i64 %584, 1
  %586 = load i64, ptr %64, align 8, !tbaa !9
  %587 = sub nsw i64 %585, %586
  store i64 %587, ptr %52, align 8, !tbaa !9
  %588 = load ptr, ptr %35, align 8, !tbaa !5
  %589 = load i64, ptr %57, align 8, !tbaa !9
  %590 = load i64, ptr %57, align 8, !tbaa !9
  %591 = load i64, ptr %48, align 8, !tbaa !9
  %592 = mul nsw i64 %590, %591
  %593 = add nsw i64 %589, %592
  %594 = getelementptr inbounds %struct.complex, ptr %588, i64 %593
  %595 = load ptr, ptr %36, align 8, !tbaa !5
  %596 = load ptr, ptr %39, align 8, !tbaa !5
  %597 = load i64, ptr %63, align 8, !tbaa !9
  %598 = getelementptr inbounds %struct.complex, ptr %596, i64 %597
  %599 = load ptr, ptr %39, align 8, !tbaa !5
  %600 = load i64, ptr %64, align 8, !tbaa !9
  %601 = getelementptr inbounds %struct.complex, ptr %599, i64 %600
  %602 = call i32 @cungqr_(ptr noundef %73, ptr noundef %73, ptr noundef %73, ptr noundef %594, ptr noundef %595, ptr noundef %598, ptr noundef %601, ptr noundef %52, ptr noundef %62)
  br label %603

603:                                              ; preds = %582, %459
  %604 = load i64, ptr %71, align 8, !tbaa !9
  %605 = icmp ne i64 %604, 0
  br i1 %605, label %606, label %614

606:                                              ; preds = %603
  %607 = load ptr, ptr %27, align 8, !tbaa !5
  %608 = load ptr, ptr %27, align 8, !tbaa !5
  %609 = load ptr, ptr %37, align 8, !tbaa !5
  %610 = load i64, ptr %51, align 8, !tbaa !9
  %611 = getelementptr inbounds %struct.complex, ptr %609, i64 %610
  %612 = load ptr, ptr %38, align 8, !tbaa !5
  %613 = call i32 @claset_(ptr noundef @.str.13, ptr noundef %607, ptr noundef %608, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %611, ptr noundef %612)
  br label %614

614:                                              ; preds = %606, %603
  %615 = load ptr, ptr %23, align 8, !tbaa !5
  %616 = load ptr, ptr %24, align 8, !tbaa !5
  %617 = load ptr, ptr %27, align 8, !tbaa !5
  %618 = load ptr, ptr %28, align 8, !tbaa !5
  %619 = load i64, ptr %45, align 8, !tbaa !9
  %620 = getelementptr inbounds %struct.complex, ptr %618, i64 %619
  %621 = load ptr, ptr %29, align 8, !tbaa !5
  %622 = load ptr, ptr %30, align 8, !tbaa !5
  %623 = load i64, ptr %47, align 8, !tbaa !9
  %624 = getelementptr inbounds %struct.complex, ptr %622, i64 %623
  %625 = load ptr, ptr %31, align 8, !tbaa !5
  %626 = load ptr, ptr %35, align 8, !tbaa !5
  %627 = load i64, ptr %49, align 8, !tbaa !9
  %628 = getelementptr inbounds %struct.complex, ptr %626, i64 %627
  %629 = load ptr, ptr %36, align 8, !tbaa !5
  %630 = load ptr, ptr %37, align 8, !tbaa !5
  %631 = load i64, ptr %51, align 8, !tbaa !9
  %632 = getelementptr inbounds %struct.complex, ptr %630, i64 %631
  %633 = load ptr, ptr %38, align 8, !tbaa !5
  %634 = call i32 @cgghrd_(ptr noundef %615, ptr noundef %616, ptr noundef %617, ptr noundef %57, ptr noundef %56, ptr noundef %620, ptr noundef %621, ptr noundef %624, ptr noundef %625, ptr noundef %628, ptr noundef %629, ptr noundef %632, ptr noundef %633, ptr noundef %62)
  %635 = load ptr, ptr %32, align 8, !tbaa !5
  store i64 0, ptr %635, align 8, !tbaa !9
  %636 = load i64, ptr %63, align 8, !tbaa !9
  store i64 %636, ptr %64, align 8, !tbaa !9
  %637 = load ptr, ptr %40, align 8, !tbaa !5
  %638 = load i64, ptr %637, align 8, !tbaa !9
  %639 = add nsw i64 %638, 1
  %640 = load i64, ptr %64, align 8, !tbaa !9
  %641 = sub nsw i64 %639, %640
  store i64 %641, ptr %52, align 8, !tbaa !9
  %642 = load ptr, ptr %23, align 8, !tbaa !5
  %643 = load ptr, ptr %24, align 8, !tbaa !5
  %644 = load ptr, ptr %27, align 8, !tbaa !5
  %645 = load ptr, ptr %28, align 8, !tbaa !5
  %646 = load i64, ptr %45, align 8, !tbaa !9
  %647 = getelementptr inbounds %struct.complex, ptr %645, i64 %646
  %648 = load ptr, ptr %29, align 8, !tbaa !5
  %649 = load ptr, ptr %30, align 8, !tbaa !5
  %650 = load i64, ptr %47, align 8, !tbaa !9
  %651 = getelementptr inbounds %struct.complex, ptr %649, i64 %650
  %652 = load ptr, ptr %31, align 8, !tbaa !5
  %653 = load ptr, ptr %33, align 8, !tbaa !5
  %654 = getelementptr inbounds %struct.complex, ptr %653, i64 1
  %655 = load ptr, ptr %34, align 8, !tbaa !5
  %656 = getelementptr inbounds %struct.complex, ptr %655, i64 1
  %657 = load ptr, ptr %35, align 8, !tbaa !5
  %658 = load i64, ptr %49, align 8, !tbaa !9
  %659 = getelementptr inbounds %struct.complex, ptr %657, i64 %658
  %660 = load ptr, ptr %36, align 8, !tbaa !5
  %661 = load ptr, ptr %37, align 8, !tbaa !5
  %662 = load i64, ptr %51, align 8, !tbaa !9
  %663 = getelementptr inbounds %struct.complex, ptr %661, i64 %662
  %664 = load ptr, ptr %38, align 8, !tbaa !5
  %665 = load ptr, ptr %39, align 8, !tbaa !5
  %666 = load i64, ptr %64, align 8, !tbaa !9
  %667 = getelementptr inbounds %struct.complex, ptr %665, i64 %666
  %668 = load ptr, ptr %41, align 8, !tbaa !5
  %669 = load i64, ptr %72, align 8, !tbaa !9
  %670 = getelementptr inbounds float, ptr %668, i64 %669
  %671 = call i32 @chgeqz_(ptr noundef @.str.2, ptr noundef %642, ptr noundef %643, ptr noundef %644, ptr noundef %57, ptr noundef %56, ptr noundef %647, ptr noundef %648, ptr noundef %651, ptr noundef %652, ptr noundef %654, ptr noundef %656, ptr noundef %659, ptr noundef %660, ptr noundef %663, ptr noundef %664, ptr noundef %667, ptr noundef %52, ptr noundef %670, ptr noundef %62)
  %672 = load i64, ptr %62, align 8, !tbaa !9
  %673 = icmp ne i64 %672, 0
  br i1 %673, label %674, label %709

674:                                              ; preds = %614
  %675 = load i64, ptr %62, align 8, !tbaa !9
  %676 = icmp sgt i64 %675, 0
  br i1 %676, label %677, label %685

677:                                              ; preds = %674
  %678 = load i64, ptr %62, align 8, !tbaa !9
  %679 = load ptr, ptr %27, align 8, !tbaa !5
  %680 = load i64, ptr %679, align 8, !tbaa !9
  %681 = icmp sle i64 %678, %680
  br i1 %681, label %682, label %685

682:                                              ; preds = %677
  %683 = load i64, ptr %62, align 8, !tbaa !9
  %684 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 %683, ptr %684, align 8, !tbaa !9
  br label %708

685:                                              ; preds = %677, %674
  %686 = load i64, ptr %62, align 8, !tbaa !9
  %687 = load ptr, ptr %27, align 8, !tbaa !5
  %688 = load i64, ptr %687, align 8, !tbaa !9
  %689 = icmp sgt i64 %686, %688
  br i1 %689, label %690, label %702

690:                                              ; preds = %685
  %691 = load i64, ptr %62, align 8, !tbaa !9
  %692 = load ptr, ptr %27, align 8, !tbaa !5
  %693 = load i64, ptr %692, align 8, !tbaa !9
  %694 = shl i64 %693, 1
  %695 = icmp sle i64 %691, %694
  br i1 %695, label %696, label %702

696:                                              ; preds = %690
  %697 = load i64, ptr %62, align 8, !tbaa !9
  %698 = load ptr, ptr %27, align 8, !tbaa !5
  %699 = load i64, ptr %698, align 8, !tbaa !9
  %700 = sub nsw i64 %697, %699
  %701 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 %700, ptr %701, align 8, !tbaa !9
  br label %707

702:                                              ; preds = %690, %685
  %703 = load ptr, ptr %27, align 8, !tbaa !5
  %704 = load i64, ptr %703, align 8, !tbaa !9
  %705 = add nsw i64 %704, 1
  %706 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 %705, ptr %706, align 8, !tbaa !9
  br label %707

707:                                              ; preds = %702, %696
  br label %708

708:                                              ; preds = %707, %682
  br label %906

709:                                              ; preds = %614
  %710 = load i64, ptr %85, align 8, !tbaa !9
  %711 = icmp ne i64 %710, 0
  br i1 %711, label %712, label %796

712:                                              ; preds = %709
  %713 = load i64, ptr %74, align 8, !tbaa !9
  %714 = icmp ne i64 %713, 0
  br i1 %714, label %715, label %721

715:                                              ; preds = %712
  %716 = load ptr, ptr %27, align 8, !tbaa !5
  %717 = load ptr, ptr %33, align 8, !tbaa !5
  %718 = getelementptr inbounds %struct.complex, ptr %717, i64 1
  %719 = load ptr, ptr %27, align 8, !tbaa !5
  %720 = call i32 @clascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %59, ptr noundef %80, ptr noundef %716, ptr noundef @c__1, ptr noundef %718, ptr noundef %719, ptr noundef %62)
  br label %721

721:                                              ; preds = %715, %712
  %722 = load i64, ptr %75, align 8, !tbaa !9
  %723 = icmp ne i64 %722, 0
  br i1 %723, label %724, label %730

724:                                              ; preds = %721
  %725 = load ptr, ptr %27, align 8, !tbaa !5
  %726 = load ptr, ptr %34, align 8, !tbaa !5
  %727 = getelementptr inbounds %struct.complex, ptr %726, i64 1
  %728 = load ptr, ptr %27, align 8, !tbaa !5
  %729 = call i32 @clascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %60, ptr noundef %83, ptr noundef %725, ptr noundef @c__1, ptr noundef %727, ptr noundef %728, ptr noundef %62)
  br label %730

730:                                              ; preds = %724, %721
  %731 = load ptr, ptr %27, align 8, !tbaa !5
  %732 = load i64, ptr %731, align 8, !tbaa !9
  store i64 %732, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %733

733:                                              ; preds = %749, %730
  %734 = load i64, ptr %54, align 8, !tbaa !9
  %735 = load i64, ptr %52, align 8, !tbaa !9
  %736 = icmp sle i64 %734, %735
  br i1 %736, label %737, label %752

737:                                              ; preds = %733
  %738 = load ptr, ptr %26, align 8, !tbaa !5
  %739 = load ptr, ptr %33, align 8, !tbaa !5
  %740 = load i64, ptr %54, align 8, !tbaa !9
  %741 = getelementptr inbounds %struct.complex, ptr %739, i64 %740
  %742 = load ptr, ptr %34, align 8, !tbaa !5
  %743 = load i64, ptr %54, align 8, !tbaa !9
  %744 = getelementptr inbounds %struct.complex, ptr %742, i64 %743
  %745 = call i64 (ptr, ptr, ...) %738(ptr noundef %741, ptr noundef %744)
  %746 = load ptr, ptr %42, align 8, !tbaa !5
  %747 = load i64, ptr %54, align 8, !tbaa !9
  %748 = getelementptr inbounds i64, ptr %746, i64 %747
  store i64 %745, ptr %748, align 8, !tbaa !9
  br label %749

749:                                              ; preds = %737
  %750 = load i64, ptr %54, align 8, !tbaa !9
  %751 = add nsw i64 %750, 1
  store i64 %751, ptr %54, align 8, !tbaa !9
  br label %733, !llvm.loop !16

752:                                              ; preds = %733
  %753 = load ptr, ptr %40, align 8, !tbaa !5
  %754 = load i64, ptr %753, align 8, !tbaa !9
  %755 = load i64, ptr %64, align 8, !tbaa !9
  %756 = sub nsw i64 %754, %755
  %757 = add nsw i64 %756, 1
  store i64 %757, ptr %52, align 8, !tbaa !9
  %758 = load ptr, ptr %42, align 8, !tbaa !5
  %759 = getelementptr inbounds i64, ptr %758, i64 1
  %760 = load ptr, ptr %27, align 8, !tbaa !5
  %761 = load ptr, ptr %28, align 8, !tbaa !5
  %762 = load i64, ptr %45, align 8, !tbaa !9
  %763 = getelementptr inbounds %struct.complex, ptr %761, i64 %762
  %764 = load ptr, ptr %29, align 8, !tbaa !5
  %765 = load ptr, ptr %30, align 8, !tbaa !5
  %766 = load i64, ptr %47, align 8, !tbaa !9
  %767 = getelementptr inbounds %struct.complex, ptr %765, i64 %766
  %768 = load ptr, ptr %31, align 8, !tbaa !5
  %769 = load ptr, ptr %33, align 8, !tbaa !5
  %770 = getelementptr inbounds %struct.complex, ptr %769, i64 1
  %771 = load ptr, ptr %34, align 8, !tbaa !5
  %772 = getelementptr inbounds %struct.complex, ptr %771, i64 1
  %773 = load ptr, ptr %35, align 8, !tbaa !5
  %774 = load i64, ptr %49, align 8, !tbaa !9
  %775 = getelementptr inbounds %struct.complex, ptr %773, i64 %774
  %776 = load ptr, ptr %36, align 8, !tbaa !5
  %777 = load ptr, ptr %37, align 8, !tbaa !5
  %778 = load i64, ptr %51, align 8, !tbaa !9
  %779 = getelementptr inbounds %struct.complex, ptr %777, i64 %778
  %780 = load ptr, ptr %38, align 8, !tbaa !5
  %781 = load ptr, ptr %32, align 8, !tbaa !5
  %782 = getelementptr inbounds [2 x float], ptr %55, i64 0, i64 0
  %783 = load ptr, ptr %39, align 8, !tbaa !5
  %784 = load i64, ptr %64, align 8, !tbaa !9
  %785 = getelementptr inbounds %struct.complex, ptr %783, i64 %784
  %786 = getelementptr inbounds [1 x i64], ptr %61, i64 0, i64 0
  %787 = call i32 @ctgsen_(ptr noundef @c__0, ptr noundef %70, ptr noundef %71, ptr noundef %759, ptr noundef %760, ptr noundef %763, ptr noundef %764, ptr noundef %767, ptr noundef %768, ptr noundef %770, ptr noundef %772, ptr noundef %775, ptr noundef %776, ptr noundef %779, ptr noundef %780, ptr noundef %781, ptr noundef %65, ptr noundef %66, ptr noundef %782, ptr noundef %785, ptr noundef %52, ptr noundef %786, ptr noundef @c__1, ptr noundef %62)
  %788 = load i64, ptr %62, align 8, !tbaa !9
  %789 = icmp eq i64 %788, 1
  br i1 %789, label %790, label %795

790:                                              ; preds = %752
  %791 = load ptr, ptr %27, align 8, !tbaa !5
  %792 = load i64, ptr %791, align 8, !tbaa !9
  %793 = add nsw i64 %792, 3
  %794 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 %793, ptr %794, align 8, !tbaa !9
  br label %795

795:                                              ; preds = %790, %752
  br label %796

796:                                              ; preds = %795, %709
  %797 = load i64, ptr %70, align 8, !tbaa !9
  %798 = icmp ne i64 %797, 0
  br i1 %798, label %799, label %813

799:                                              ; preds = %796
  %800 = load ptr, ptr %27, align 8, !tbaa !5
  %801 = load ptr, ptr %41, align 8, !tbaa !5
  %802 = load i64, ptr %67, align 8, !tbaa !9
  %803 = getelementptr inbounds float, ptr %801, i64 %802
  %804 = load ptr, ptr %41, align 8, !tbaa !5
  %805 = load i64, ptr %78, align 8, !tbaa !9
  %806 = getelementptr inbounds float, ptr %804, i64 %805
  %807 = load ptr, ptr %27, align 8, !tbaa !5
  %808 = load ptr, ptr %35, align 8, !tbaa !5
  %809 = load i64, ptr %49, align 8, !tbaa !9
  %810 = getelementptr inbounds %struct.complex, ptr %808, i64 %809
  %811 = load ptr, ptr %36, align 8, !tbaa !5
  %812 = call i32 @cggbak_(ptr noundef @.str.8, ptr noundef @.str.11, ptr noundef %800, ptr noundef %57, ptr noundef %56, ptr noundef %803, ptr noundef %806, ptr noundef %807, ptr noundef %810, ptr noundef %811, ptr noundef %62)
  br label %813

813:                                              ; preds = %799, %796
  %814 = load i64, ptr %71, align 8, !tbaa !9
  %815 = icmp ne i64 %814, 0
  br i1 %815, label %816, label %830

816:                                              ; preds = %813
  %817 = load ptr, ptr %27, align 8, !tbaa !5
  %818 = load ptr, ptr %41, align 8, !tbaa !5
  %819 = load i64, ptr %67, align 8, !tbaa !9
  %820 = getelementptr inbounds float, ptr %818, i64 %819
  %821 = load ptr, ptr %41, align 8, !tbaa !5
  %822 = load i64, ptr %78, align 8, !tbaa !9
  %823 = getelementptr inbounds float, ptr %821, i64 %822
  %824 = load ptr, ptr %27, align 8, !tbaa !5
  %825 = load ptr, ptr %37, align 8, !tbaa !5
  %826 = load i64, ptr %51, align 8, !tbaa !9
  %827 = getelementptr inbounds %struct.complex, ptr %825, i64 %826
  %828 = load ptr, ptr %38, align 8, !tbaa !5
  %829 = call i32 @cggbak_(ptr noundef @.str.8, ptr noundef @.str.14, ptr noundef %817, ptr noundef %57, ptr noundef %56, ptr noundef %820, ptr noundef %823, ptr noundef %824, ptr noundef %827, ptr noundef %828, ptr noundef %62)
  br label %830

830:                                              ; preds = %816, %813
  %831 = load i64, ptr %74, align 8, !tbaa !9
  %832 = icmp ne i64 %831, 0
  br i1 %832, label %833, label %846

833:                                              ; preds = %830
  %834 = load ptr, ptr %27, align 8, !tbaa !5
  %835 = load ptr, ptr %27, align 8, !tbaa !5
  %836 = load ptr, ptr %28, align 8, !tbaa !5
  %837 = load i64, ptr %45, align 8, !tbaa !9
  %838 = getelementptr inbounds %struct.complex, ptr %836, i64 %837
  %839 = load ptr, ptr %29, align 8, !tbaa !5
  %840 = call i32 @clascl_(ptr noundef @.str.15, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %80, ptr noundef %59, ptr noundef %834, ptr noundef %835, ptr noundef %838, ptr noundef %839, ptr noundef %62)
  %841 = load ptr, ptr %27, align 8, !tbaa !5
  %842 = load ptr, ptr %33, align 8, !tbaa !5
  %843 = getelementptr inbounds %struct.complex, ptr %842, i64 1
  %844 = load ptr, ptr %27, align 8, !tbaa !5
  %845 = call i32 @clascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %80, ptr noundef %59, ptr noundef %841, ptr noundef @c__1, ptr noundef %843, ptr noundef %844, ptr noundef %62)
  br label %846

846:                                              ; preds = %833, %830
  %847 = load i64, ptr %75, align 8, !tbaa !9
  %848 = icmp ne i64 %847, 0
  br i1 %848, label %849, label %862

849:                                              ; preds = %846
  %850 = load ptr, ptr %27, align 8, !tbaa !5
  %851 = load ptr, ptr %27, align 8, !tbaa !5
  %852 = load ptr, ptr %30, align 8, !tbaa !5
  %853 = load i64, ptr %47, align 8, !tbaa !9
  %854 = getelementptr inbounds %struct.complex, ptr %852, i64 %853
  %855 = load ptr, ptr %31, align 8, !tbaa !5
  %856 = call i32 @clascl_(ptr noundef @.str.15, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %83, ptr noundef %60, ptr noundef %850, ptr noundef %851, ptr noundef %854, ptr noundef %855, ptr noundef %62)
  %857 = load ptr, ptr %27, align 8, !tbaa !5
  %858 = load ptr, ptr %34, align 8, !tbaa !5
  %859 = getelementptr inbounds %struct.complex, ptr %858, i64 1
  %860 = load ptr, ptr %27, align 8, !tbaa !5
  %861 = call i32 @clascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %83, ptr noundef %60, ptr noundef %857, ptr noundef @c__1, ptr noundef %859, ptr noundef %860, ptr noundef %62)
  br label %862

862:                                              ; preds = %849, %846
  %863 = load i64, ptr %85, align 8, !tbaa !9
  %864 = icmp ne i64 %863, 0
  br i1 %864, label %865, label %905

865:                                              ; preds = %862
  store i64 1, ptr %82, align 8, !tbaa !9
  %866 = load ptr, ptr %32, align 8, !tbaa !5
  store i64 0, ptr %866, align 8, !tbaa !9
  %867 = load ptr, ptr %27, align 8, !tbaa !5
  %868 = load i64, ptr %867, align 8, !tbaa !9
  store i64 %868, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %869

869:                                              ; preds = %901, %865
  %870 = load i64, ptr %54, align 8, !tbaa !9
  %871 = load i64, ptr %52, align 8, !tbaa !9
  %872 = icmp sle i64 %870, %871
  br i1 %872, label %873, label %904

873:                                              ; preds = %869
  %874 = load ptr, ptr %26, align 8, !tbaa !5
  %875 = load ptr, ptr %33, align 8, !tbaa !5
  %876 = load i64, ptr %54, align 8, !tbaa !9
  %877 = getelementptr inbounds %struct.complex, ptr %875, i64 %876
  %878 = load ptr, ptr %34, align 8, !tbaa !5
  %879 = load i64, ptr %54, align 8, !tbaa !9
  %880 = getelementptr inbounds %struct.complex, ptr %878, i64 %879
  %881 = call i64 (ptr, ptr, ...) %874(ptr noundef %877, ptr noundef %880)
  store i64 %881, ptr %69, align 8, !tbaa !9
  %882 = load i64, ptr %69, align 8, !tbaa !9
  %883 = icmp ne i64 %882, 0
  br i1 %883, label %884, label %888

884:                                              ; preds = %873
  %885 = load ptr, ptr %32, align 8, !tbaa !5
  %886 = load i64, ptr %885, align 8, !tbaa !9
  %887 = add nsw i64 %886, 1
  store i64 %887, ptr %885, align 8, !tbaa !9
  br label %888

888:                                              ; preds = %884, %873
  %889 = load i64, ptr %69, align 8, !tbaa !9
  %890 = icmp ne i64 %889, 0
  br i1 %890, label %891, label %899

891:                                              ; preds = %888
  %892 = load i64, ptr %82, align 8, !tbaa !9
  %893 = icmp ne i64 %892, 0
  br i1 %893, label %899, label %894

894:                                              ; preds = %891
  %895 = load ptr, ptr %27, align 8, !tbaa !5
  %896 = load i64, ptr %895, align 8, !tbaa !9
  %897 = add nsw i64 %896, 2
  %898 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 %897, ptr %898, align 8, !tbaa !9
  br label %899

899:                                              ; preds = %894, %891, %888
  %900 = load i64, ptr %69, align 8, !tbaa !9
  store i64 %900, ptr %82, align 8, !tbaa !9
  br label %901

901:                                              ; preds = %899
  %902 = load i64, ptr %54, align 8, !tbaa !9
  %903 = add nsw i64 %902, 1
  store i64 %903, ptr %54, align 8, !tbaa !9
  br label %869, !llvm.loop !18

904:                                              ; preds = %869
  br label %905

905:                                              ; preds = %904, %862
  br label %906

906:                                              ; preds = %905, %708
  %907 = load i64, ptr %87, align 8, !tbaa !9
  %908 = sitofp i64 %907 to float
  %909 = load ptr, ptr %39, align 8, !tbaa !5
  %910 = getelementptr inbounds %struct.complex, ptr %909, i64 1
  %911 = getelementptr inbounds %struct.complex, ptr %910, i32 0, i32 0
  store float %908, ptr %911, align 4, !tbaa !11
  %912 = load ptr, ptr %39, align 8, !tbaa !5
  %913 = getelementptr inbounds %struct.complex, ptr %912, i64 1
  %914 = getelementptr inbounds %struct.complex, ptr %913, i32 0, i32 1
  store float 0.000000e+00, ptr %914, align 4, !tbaa !14
  store i32 0, ptr %22, align 4
  store i32 1, ptr %88, align 4
  br label %915

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

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

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

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

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

declare double @slamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

%struct.complex = type { float, float }

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

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

54:                                               ; preds = %21
  store i64 0, ptr %34, align 8, !tbaa !5
  br label %59

55:                                               ; preds = %21
  %56 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not342 = icmp eq i64 %56, 0
  br i1 %.not342, label %58, label %57

57:                                               ; preds = %55
  store i64 1, ptr %34, align 8, !tbaa !5
  br label %59

58:                                               ; preds = %55
  store i64 0, ptr %34, align 8, !tbaa !5
  br label %59

59:                                               ; preds = %57, %58, %54
  %.not347 = phi i1 [ false, %54 ], [ true, %57 ], [ false, %58 ]
  %.not351 = phi i1 [ true, %54 ], [ false, %57 ], [ true, %58 ]
  %60 = phi i1 [ false, %54 ], [ false, %57 ], [ true, %58 ]
  %61 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #5
  %.not343 = icmp eq i64 %61, 0
  br i1 %.not343, label %63, label %62

62:                                               ; preds = %59
  store i64 0, ptr %35, align 8, !tbaa !5
  br label %67

63:                                               ; preds = %59
  %64 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %.not344 = icmp eq i64 %64, 0
  br i1 %.not344, label %66, label %65

65:                                               ; preds = %63
  store i64 1, ptr %35, align 8, !tbaa !5
  br label %67

66:                                               ; preds = %63
  store i64 0, ptr %35, align 8, !tbaa !5
  br label %67

67:                                               ; preds = %65, %66, %62
  %.not348 = phi i1 [ false, %62 ], [ true, %65 ], [ false, %66 ]
  %.not357 = phi i1 [ true, %62 ], [ false, %65 ], [ true, %66 ]
  %68 = phi i1 [ false, %62 ], [ false, %65 ], [ true, %66 ]
  %69 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #5
  store i64 0, ptr %20, align 8, !tbaa !5
  %70 = load i64, ptr %17, align 8, !tbaa !5
  %71 = icmp eq i64 %70, -1
  %brmerge = or i1 %60, %68
  %.mux = select i1 %60, i64 -1, i64 -2
  br i1 %brmerge, label %.thread373.sink.split, label %72

72:                                               ; preds = %67
  %.not345 = icmp eq i64 %69, 0
  br i1 %.not345, label %73, label %75

73:                                               ; preds = %72
  %74 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str) #5
  %.not346 = icmp eq i64 %74, 0
  br i1 %.not346, label %.thread373.sink.split, label %75

75:                                               ; preds = %73, %72
  %76 = load i64, ptr %4, align 8, !tbaa !5
  %77 = icmp slt i64 %76, 0
  br i1 %77, label %.thread373.sink.split, label %78

78:                                               ; preds = %75
  %79 = load i64, ptr %6, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %76, i64 1)
  %80 = icmp slt i64 %79, %spec.select
  br i1 %80, label %.thread373.sink.split, label %81

81:                                               ; preds = %78
  %82 = load i64, ptr %8, align 8, !tbaa !5
  %83 = icmp slt i64 %82, %spec.select
  br i1 %83, label %.thread373.sink.split, label %84

84:                                               ; preds = %81
  %85 = load i64, ptr %13, align 8, !tbaa !5
  %86 = icmp slt i64 %85, 1
  %87 = icmp ult i64 %85, %76
  %or.cond391 = and i1 %87, %.not347
  %or.cond406 = or i1 %86, %or.cond391
  br i1 %or.cond406, label %.thread373.sink.split, label %88

88:                                               ; preds = %84
  %89 = load i64, ptr %15, align 8, !tbaa !5
  %90 = icmp slt i64 %89, 1
  %91 = icmp ult i64 %89, %76
  %or.cond392 = and i1 %91, %.not348
  %or.cond407 = or i1 %90, %or.cond392
  br i1 %or.cond407, label %.thread373.sink.split, label %92

92:                                               ; preds = %88
  %.pr = load i64, ptr %20, align 8, !tbaa !5
  %93 = icmp eq i64 %.pr, 0
  br i1 %93, label %94, label %.thread373

94:                                               ; preds = %92
  %95 = shl nuw i64 %76, 1
  %96 = tail call i64 @llvm.smax.i64(i64 %95, i64 1)
  %97 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef nonnull @c__0) #5
  %98 = add i64 %97, 1
  %99 = mul i64 %98, %76
  %100 = tail call i64 @llvm.smax.i64(i64 %99, i64 1)
  store i64 %100, ptr %22, align 8, !tbaa !5
  %101 = load i64, ptr %4, align 8, !tbaa !5
  %102 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.4, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef nonnull @c_n1) #5
  %103 = add i64 %102, 1
  %104 = mul i64 %103, %101
  store i64 %104, ptr %23, align 8, !tbaa !5
  %105 = tail call i64 @llvm.smax.i64(i64 %100, i64 %104)
  br i1 %.not351, label %112, label %106

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

112:                                              ; preds = %106, %94
  %.0 = phi i64 [ %111, %106 ], [ %105, %94 ]
  %113 = uitofp nneg i64 %.0 to float
  store float %113, ptr %16, align 4, !tbaa !9
  %114 = getelementptr inbounds i8, ptr %16, i64 4
  store float 0.000000e+00, ptr %114, align 4, !tbaa !12
  %115 = load i64, ptr %17, align 8, !tbaa !5
  %116 = icmp sge i64 %115, %96
  %or.cond = select i1 %116, i1 true, i1 %71
  br i1 %or.cond, label %.thread, label %.thread373.sink.split

.thread:                                          ; preds = %112
  %.pr370.pr = load i64, ptr %20, align 8, !tbaa !5
  %.not353 = icmp eq i64 %.pr370.pr, 0
  br i1 %.not353, label %120, label %.thread373

.thread373.sink.split:                            ; preds = %67, %112, %88, %84, %81, %78, %75, %73
  %.sink = phi i64 [ %.mux, %67 ], [ -3, %73 ], [ -5, %75 ], [ -7, %78 ], [ -9, %81 ], [ -14, %84 ], [ -16, %88 ], [ -18, %112 ]
  store i64 %.sink, ptr %20, align 8, !tbaa !5
  br label %.thread373

.thread373:                                       ; preds = %.thread373.sink.split, %92, %.thread
  %117 = phi i64 [ %.pr370.pr, %.thread ], [ %.pr, %92 ], [ %.sink, %.thread373.sink.split ]
  %118 = sub nsw i64 0, %117
  store i64 %118, ptr %22, align 8, !tbaa !5
  %119 = call i32 @xerbla_(ptr noundef nonnull @.str.7, ptr noundef nonnull %22) #5
  br label %279

120:                                              ; preds = %.thread
  br i1 %71, label %279, label %121

121:                                              ; preds = %120
  %122 = load i64, ptr %4, align 8, !tbaa !5
  %123 = icmp eq i64 %122, 0
  br i1 %123, label %124, label %125

124:                                              ; preds = %121
  store i64 0, ptr %9, align 8, !tbaa !5
  br label %279

125:                                              ; preds = %121
  %126 = tail call double @slamch_(ptr noundef nonnull @.str.8) #5
  %127 = fptrunc double %126 to float
  %128 = tail call double @slamch_(ptr noundef nonnull @.str.2) #5
  %129 = fptrunc double %128 to float
  store float %129, ptr %40, align 4, !tbaa !13
  %130 = fdiv float 1.000000e+00, %129
  store float %130, ptr %37, align 4, !tbaa !13
  %131 = call i32 @slabad_(ptr noundef nonnull %40, ptr noundef nonnull %37) #5
  %132 = load float, ptr %40, align 4, !tbaa !13
  %133 = fpext float %132 to double
  %134 = call double @sqrt(double noundef %133) #5
  %135 = fpext float %127 to double
  %136 = fdiv double %134, %135
  %137 = fptrunc double %136 to float
  store float %137, ptr %40, align 4, !tbaa !13
  %138 = fdiv float 1.000000e+00, %137
  store float %138, ptr %37, align 4, !tbaa !13
  %139 = call double @clange_(ptr noundef nonnull @.str.9, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %18) #5
  %140 = fptrunc double %139 to float
  store float %140, ptr %27, align 4, !tbaa !13
  %141 = fcmp ogt float %140, 0.000000e+00
  %142 = load float, ptr %40, align 4
  %143 = fcmp ogt float %142, %140
  %or.cond395 = select i1 %141, i1 %143, i1 false
  br i1 %or.cond395, label %147, label %144

144:                                              ; preds = %125
  %145 = load float, ptr %37, align 4, !tbaa !13
  %146 = fcmp olt float %145, %140
  br i1 %146, label %147, label %149

147:                                              ; preds = %125, %144
  %storemerge = phi float [ %145, %144 ], [ %142, %125 ]
  store float %storemerge, ptr %38, align 4, !tbaa !13
  %148 = call i32 @clascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %27, ptr noundef nonnull %38, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %30) #5
  br label %149

149:                                              ; preds = %144, %147
  %.not354380 = phi i1 [ false, %147 ], [ true, %144 ]
  %150 = call double @clange_(ptr noundef nonnull @.str.9, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %18) #5
  %151 = fptrunc double %150 to float
  store float %151, ptr %28, align 4, !tbaa !13
  %152 = fcmp ogt float %151, 0.000000e+00
  %153 = load float, ptr %40, align 4
  %154 = fcmp ogt float %153, %151
  %or.cond397 = select i1 %152, i1 %154, i1 false
  br i1 %or.cond397, label %158, label %155

155:                                              ; preds = %149
  %156 = load float, ptr %37, align 4, !tbaa !13
  %157 = fcmp olt float %156, %151
  br i1 %157, label %158, label %160

158:                                              ; preds = %149, %155
  %storemerge393 = phi float [ %156, %155 ], [ %153, %149 ]
  store float %storemerge393, ptr %39, align 4, !tbaa !13
  %159 = call i32 @clascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %28, ptr noundef nonnull %39, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %30) #5
  br label %160

160:                                              ; preds = %155, %158
  %.not355385 = phi i1 [ false, %158 ], [ true, %155 ]
  %161 = load i64, ptr %4, align 8, !tbaa !5
  %162 = getelementptr float, ptr %18, i64 %161
  %.idx = shl i64 %161, 3
  %163 = getelementptr i8, ptr %18, i64 %.idx
  %164 = call i32 @cggbal_(ptr noundef nonnull @.str.8, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %26, ptr noundef nonnull %25, ptr noundef %18, ptr noundef %162, ptr noundef %163, ptr noundef nonnull %30) #5
  %165 = load i64, ptr %25, align 8, !tbaa !5
  %166 = add nsw i64 %165, 1
  %167 = load i64, ptr %26, align 8, !tbaa !5
  %168 = sub i64 %166, %167
  store i64 %168, ptr %36, align 8, !tbaa !5
  %169 = load i64, ptr %4, align 8, !tbaa !5
  %reass.sub = sub i64 %169, %167
  %170 = add i64 %reass.sub, 1
  store i64 %170, ptr %33, align 8, !tbaa !5
  %171 = load i64, ptr %17, align 8, !tbaa !5
  %172 = sub i64 %171, %168
  store i64 %172, ptr %22, align 8, !tbaa !5
  %173 = add i64 %44, 1
  %174 = mul i64 %167, %173
  %175 = getelementptr inbounds %struct.complex, ptr %46, i64 %174
  %176 = getelementptr %struct.complex, ptr %16, i64 %168
  %177 = call i32 @cgeqrf_(ptr noundef nonnull %36, ptr noundef nonnull %33, ptr noundef %175, ptr noundef nonnull %8, ptr noundef nonnull %16, ptr noundef %176, ptr noundef nonnull %22, ptr noundef nonnull %30) #5
  %178 = load i64, ptr %17, align 8, !tbaa !5
  %179 = sub i64 %178, %168
  store i64 %179, ptr %22, align 8, !tbaa !5
  %180 = load i64, ptr %26, align 8, !tbaa !5
  %181 = mul i64 %180, %173
  %182 = getelementptr inbounds %struct.complex, ptr %46, i64 %181
  %183 = add i64 %41, 1
  %184 = mul i64 %180, %183
  %185 = getelementptr inbounds %struct.complex, ptr %43, i64 %184
  %186 = call i32 @cunmqr_(ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.12, ptr noundef nonnull %36, ptr noundef nonnull %33, ptr noundef nonnull %36, ptr noundef %182, ptr noundef nonnull %8, ptr noundef nonnull %16, ptr noundef %185, ptr noundef nonnull %6, ptr noundef %176, ptr noundef nonnull %22, ptr noundef nonnull %30) #5
  br i1 %.not351, label %210, label %187

187:                                              ; preds = %160
  %188 = call i32 @claset_(ptr noundef nonnull @.str.13, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b2, ptr noundef %12, ptr noundef nonnull %13) #5
  %189 = load i64, ptr %36, align 8, !tbaa !5
  %190 = icmp sgt i64 %189, 1
  br i1 %190, label %191, label %202

191:                                              ; preds = %187
  %192 = add nsw i64 %189, -1
  store i64 %192, ptr %22, align 8, !tbaa !5
  store i64 %192, ptr %23, align 8, !tbaa !5
  %193 = load i64, ptr %26, align 8, !tbaa !5
  %194 = add nsw i64 %193, 1
  %195 = mul nsw i64 %193, %44
  %196 = getelementptr %struct.complex, ptr %46, i64 %194
  %197 = getelementptr %struct.complex, ptr %196, i64 %195
  %198 = mul nsw i64 %193, %49
  %199 = getelementptr %struct.complex, ptr %51, i64 %194
  %200 = getelementptr %struct.complex, ptr %199, i64 %198
  %201 = call i32 @clacpy_(ptr noundef nonnull @.str.11, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef %197, ptr noundef nonnull %8, ptr noundef %200, ptr noundef nonnull %13) #5
  br label %202

202:                                              ; preds = %191, %187
  %203 = load i64, ptr %17, align 8, !tbaa !5
  %204 = sub i64 %203, %168
  store i64 %204, ptr %22, align 8, !tbaa !5
  %205 = load i64, ptr %26, align 8, !tbaa !5
  %206 = add i64 %49, 1
  %207 = mul i64 %205, %206
  %208 = getelementptr inbounds %struct.complex, ptr %51, i64 %207
  %209 = call i32 @cungqr_(ptr noundef nonnull %36, ptr noundef nonnull %36, ptr noundef nonnull %36, ptr noundef %208, ptr noundef nonnull %13, ptr noundef nonnull %16, ptr noundef %176, ptr noundef nonnull %22, ptr noundef nonnull %30) #5
  br label %210

210:                                              ; preds = %202, %160
  br i1 %.not357, label %213, label %211

211:                                              ; preds = %210
  %212 = call i32 @claset_(ptr noundef nonnull @.str.13, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b2, ptr noundef %14, ptr noundef nonnull %15) #5
  br label %213

213:                                              ; preds = %211, %210
  %214 = call i32 @cgghrd_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %4, ptr noundef nonnull %26, ptr noundef nonnull %25, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %30) #5
  store i64 0, ptr %9, align 8, !tbaa !5
  %215 = load i64, ptr %17, align 8, !tbaa !5
  store i64 %215, ptr %22, align 8, !tbaa !5
  %216 = call i32 @chgeqz_(ptr noundef nonnull @.str.2, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %4, ptr noundef nonnull %26, ptr noundef nonnull %25, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %22, ptr noundef %163, ptr noundef nonnull %30) #5
  %217 = load i64, ptr %30, align 8, !tbaa !5
  %.not358 = icmp eq i64 %217, 0
  br i1 %.not358, label %227, label %218

218:                                              ; preds = %213
  %219 = icmp slt i64 %217, 1
  %.pre = load i64, ptr %4, align 8, !tbaa !5
  %.not365 = icmp sgt i64 %217, %.pre
  %or.cond408 = select i1 %219, i1 true, i1 %.not365
  br i1 %or.cond408, label %220, label %.loopexit.sink.split

220:                                              ; preds = %218
  %221 = icmp sle i64 %217, %.pre
  %222 = shl i64 %.pre, 1
  %.not366 = icmp sgt i64 %217, %222
  %or.cond368 = or i1 %221, %.not366
  br i1 %or.cond368, label %225, label %223

223:                                              ; preds = %220
  %224 = sub nsw i64 %217, %.pre
  br label %.loopexit.sink.split

225:                                              ; preds = %220
  %226 = add nsw i64 %.pre, 1
  br label %.loopexit.sink.split

227:                                              ; preds = %213
  br i1 %.not345, label %249, label %228

228:                                              ; preds = %227
  br i1 %.not354380, label %231, label %229

229:                                              ; preds = %228
  %230 = call i32 @clascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %27, ptr noundef nonnull %38, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %10, ptr noundef nonnull %4, ptr noundef nonnull %30) #5
  br label %231

231:                                              ; preds = %229, %228
  br i1 %.not355385, label %234, label %232

232:                                              ; preds = %231
  %233 = call i32 @clascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %28, ptr noundef nonnull %39, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull %4, ptr noundef nonnull %30) #5
  br label %234

234:                                              ; preds = %232, %231
  %235 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %235, ptr %22, align 8, !tbaa !5
  %.not360398 = icmp slt i64 %235, 1
  br i1 %.not360398, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %234, %.lr.ph
  %.0325399 = phi i64 [ %240, %.lr.ph ], [ 1, %234 ]
  %236 = getelementptr inbounds %struct.complex, ptr %47, i64 %.0325399
  %237 = getelementptr inbounds %struct.complex, ptr %48, i64 %.0325399
  %238 = call i64 (ptr, ptr, ...) %3(ptr noundef nonnull %236, ptr noundef nonnull %237) #5
  %239 = getelementptr inbounds i64, ptr %52, i64 %.0325399
  store i64 %238, ptr %239, align 8, !tbaa !5
  %240 = add nuw nsw i64 %.0325399, 1
  %241 = load i64, ptr %22, align 8, !tbaa !5
  %.not360.not = icmp slt i64 %.0325399, %241
  br i1 %.not360.not, label %.lr.ph, label %._crit_edge, !llvm.loop !14

._crit_edge:                                      ; preds = %.lr.ph, %234
  %242 = load i64, ptr %17, align 8, !tbaa !5
  store i64 %242, ptr %22, align 8, !tbaa !5
  %243 = call i32 @ctgsen_(ptr noundef nonnull @c__0, ptr noundef nonnull %34, ptr noundef nonnull %35, ptr noundef %19, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %9, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef nonnull %24, ptr noundef nonnull %16, ptr noundef nonnull %22, ptr noundef nonnull %29, ptr noundef nonnull @c__1, ptr noundef nonnull %30) #5
  %244 = load i64, ptr %30, align 8, !tbaa !5
  %245 = icmp eq i64 %244, 1
  br i1 %245, label %246, label %249

246:                                              ; preds = %._crit_edge
  %247 = load i64, ptr %4, align 8, !tbaa !5
  %248 = add nsw i64 %247, 3
  store i64 %248, ptr %20, align 8, !tbaa !5
  br label %249

249:                                              ; preds = %._crit_edge, %246, %227
  %250 = load i64, ptr %34, align 8, !tbaa !5
  %.not361 = icmp eq i64 %250, 0
  br i1 %.not361, label %253, label %251

251:                                              ; preds = %249
  %252 = call i32 @cggbak_(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.11, ptr noundef nonnull %4, ptr noundef nonnull %26, ptr noundef nonnull %25, ptr noundef %18, ptr noundef %162, ptr noundef nonnull %4, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %30) #5
  br label %253

253:                                              ; preds = %251, %249
  %254 = load i64, ptr %35, align 8, !tbaa !5
  %.not362 = icmp eq i64 %254, 0
  br i1 %.not362, label %257, label %255

255:                                              ; preds = %253
  %256 = call i32 @cggbak_(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.14, ptr noundef nonnull %4, ptr noundef nonnull %26, ptr noundef nonnull %25, ptr noundef %18, ptr noundef %162, ptr noundef nonnull %4, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %30) #5
  br label %257

257:                                              ; preds = %255, %253
  br i1 %.not354380, label %261, label %258

258:                                              ; preds = %257
  %259 = call i32 @clascl_(ptr noundef nonnull @.str.15, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %38, ptr noundef nonnull %27, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %30) #5
  %260 = call i32 @clascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %38, ptr noundef nonnull %27, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %10, ptr noundef nonnull %4, ptr noundef nonnull %30) #5
  br label %261

261:                                              ; preds = %258, %257
  br i1 %.not355385, label %265, label %262

262:                                              ; preds = %261
  %263 = call i32 @clascl_(ptr noundef nonnull @.str.15, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %39, ptr noundef nonnull %28, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %30) #5
  %264 = call i32 @clascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %39, ptr noundef nonnull %28, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull %4, ptr noundef nonnull %30) #5
  br label %265

265:                                              ; preds = %262, %261
  br i1 %.not345, label %.loopexit, label %266

266:                                              ; preds = %265
  store i64 0, ptr %9, align 8, !tbaa !5
  %267 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %267, ptr %22, align 8, !tbaa !5
  %.not363400 = icmp slt i64 %267, 1
  br i1 %.not363400, label %.loopexit, label %.lr.ph404

.lr.ph404:                                        ; preds = %266, %.thread386
  %.0320402 = phi i64 [ %270, %.thread386 ], [ 1, %266 ]
  %.1326401 = phi i64 [ %277, %.thread386 ], [ 1, %266 ]
  %268 = getelementptr inbounds %struct.complex, ptr %47, i64 %.1326401
  %269 = getelementptr inbounds %struct.complex, ptr %48, i64 %.1326401
  %270 = call i64 (ptr, ptr, ...) %3(ptr noundef nonnull %268, ptr noundef nonnull %269) #5
  %.not364 = icmp eq i64 %270, 0
  br i1 %.not364, label %.thread386, label %271

271:                                              ; preds = %.lr.ph404
  %272 = load i64, ptr %9, align 8, !tbaa !5
  %273 = add nsw i64 %272, 1
  store i64 %273, ptr %9, align 8, !tbaa !5
  %.not405 = icmp eq i64 %.0320402, 0
  br i1 %.not405, label %274, label %.thread386

274:                                              ; preds = %271
  %275 = load i64, ptr %4, align 8, !tbaa !5
  %276 = add nsw i64 %275, 2
  store i64 %276, ptr %20, align 8, !tbaa !5
  br label %.thread386

.thread386:                                       ; preds = %.lr.ph404, %274, %271
  %277 = add nuw nsw i64 %.1326401, 1
  %278 = load i64, ptr %22, align 8, !tbaa !5
  %.not363.not = icmp slt i64 %.1326401, %278
  br i1 %.not363.not, label %.lr.ph404, label %.loopexit, !llvm.loop !16

.loopexit.sink.split:                             ; preds = %218, %223, %225
  %.sink409 = phi i64 [ %226, %225 ], [ %224, %223 ], [ %217, %218 ]
  store i64 %.sink409, ptr %20, align 8, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.thread386, %.loopexit.sink.split, %266, %265
  store float %113, ptr %16, align 4, !tbaa !9
  store float 0.000000e+00, ptr %114, align 4, !tbaa !12
  br label %279

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

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

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

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

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

declare double @slamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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