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

141:                                              ; preds = %21
  store i32 1, ptr %72, align 4, !tbaa !9
  store i32 0, ptr %65, align 4, !tbaa !9
  br label %149

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

146:                                              ; preds = %142
  store i32 2, ptr %72, align 4, !tbaa !9
  store i32 1, ptr %65, align 4, !tbaa !9
  br label %148

147:                                              ; preds = %142
  store i32 -1, ptr %72, align 4, !tbaa !9
  store i32 0, ptr %65, align 4, !tbaa !9
  br label %148

148:                                              ; preds = %147, %146
  br label %149

149:                                              ; preds = %148, %141
  %150 = load ptr, ptr %23, align 8, !tbaa !5
  %151 = call i32 @lsame_(ptr noundef %150, ptr noundef @.str)
  %152 = icmp ne i32 %151, 0
  br i1 %152, label %153, label %154

153:                                              ; preds = %149
  store i32 1, ptr %74, align 4, !tbaa !9
  store i32 0, ptr %66, align 4, !tbaa !9
  br label %161

154:                                              ; preds = %149
  %155 = load ptr, ptr %23, align 8, !tbaa !5
  %156 = call i32 @lsame_(ptr noundef %155, ptr noundef @.str.1)
  %157 = icmp ne i32 %156, 0
  br i1 %157, label %158, label %159

158:                                              ; preds = %154
  store i32 2, ptr %74, align 4, !tbaa !9
  store i32 1, ptr %66, align 4, !tbaa !9
  br label %160

159:                                              ; preds = %154
  store i32 -1, ptr %74, align 4, !tbaa !9
  store i32 0, ptr %66, align 4, !tbaa !9
  br label %160

160:                                              ; preds = %159, %158
  br label %161

161:                                              ; preds = %160, %153
  %162 = load ptr, ptr %24, align 8, !tbaa !5
  %163 = call i32 @lsame_(ptr noundef %162, ptr noundef @.str.2)
  store i32 %163, ptr %80, align 4, !tbaa !9
  %164 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 0, ptr %164, align 4, !tbaa !9
  %165 = load ptr, ptr %39, align 8, !tbaa !5
  %166 = load i32, ptr %165, align 4, !tbaa !9
  %167 = icmp eq i32 %166, -1
  %168 = zext i1 %167 to i32
  store i32 %168, ptr %81, align 4, !tbaa !9
  %169 = load i32, ptr %72, align 4, !tbaa !9
  %170 = icmp sle i32 %169, 0
  br i1 %170, label %171, label %173

171:                                              ; preds = %161
  %172 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -1, ptr %172, align 4, !tbaa !9
  br label %260

173:                                              ; preds = %161
  %174 = load i32, ptr %74, align 4, !tbaa !9
  %175 = icmp sle i32 %174, 0
  br i1 %175, label %176, label %178

176:                                              ; preds = %173
  %177 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -2, ptr %177, align 4, !tbaa !9
  br label %259

178:                                              ; preds = %173
  %179 = load i32, ptr %80, align 4, !tbaa !9
  %180 = icmp ne i32 %179, 0
  br i1 %180, label %187, label %181

181:                                              ; preds = %178
  %182 = load ptr, ptr %24, align 8, !tbaa !5
  %183 = call i32 @lsame_(ptr noundef %182, ptr noundef @.str)
  %184 = icmp ne i32 %183, 0
  br i1 %184, label %187, label %185

185:                                              ; preds = %181
  %186 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -3, ptr %186, align 4, !tbaa !9
  br label %258

187:                                              ; preds = %181, %178
  %188 = load ptr, ptr %26, align 8, !tbaa !5
  %189 = load i32, ptr %188, align 4, !tbaa !9
  %190 = icmp slt i32 %189, 0
  br i1 %190, label %191, label %193

191:                                              ; preds = %187
  %192 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -5, ptr %192, align 4, !tbaa !9
  br label %257

193:                                              ; preds = %187
  %194 = load ptr, ptr %28, align 8, !tbaa !5
  %195 = load i32, ptr %194, align 4, !tbaa !9
  %196 = load ptr, ptr %26, align 8, !tbaa !5
  %197 = load i32, ptr %196, align 4, !tbaa !9
  %198 = icmp sge i32 1, %197
  br i1 %198, label %199, label %200

199:                                              ; preds = %193
  br label %203

200:                                              ; preds = %193
  %201 = load ptr, ptr %26, align 8, !tbaa !5
  %202 = load i32, ptr %201, align 4, !tbaa !9
  br label %203

203:                                              ; preds = %200, %199
  %204 = phi i32 [ 1, %199 ], [ %202, %200 ]
  %205 = icmp slt i32 %195, %204
  br i1 %205, label %206, label %208

206:                                              ; preds = %203
  %207 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -7, ptr %207, align 4, !tbaa !9
  br label %256

208:                                              ; preds = %203
  %209 = load ptr, ptr %30, align 8, !tbaa !5
  %210 = load i32, ptr %209, align 4, !tbaa !9
  %211 = load ptr, ptr %26, align 8, !tbaa !5
  %212 = load i32, ptr %211, align 4, !tbaa !9
  %213 = icmp sge i32 1, %212
  br i1 %213, label %214, label %215

214:                                              ; preds = %208
  br label %218

215:                                              ; preds = %208
  %216 = load ptr, ptr %26, align 8, !tbaa !5
  %217 = load i32, ptr %216, align 4, !tbaa !9
  br label %218

218:                                              ; preds = %215, %214
  %219 = phi i32 [ 1, %214 ], [ %217, %215 ]
  %220 = icmp slt i32 %210, %219
  br i1 %220, label %221, label %223

221:                                              ; preds = %218
  %222 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -9, ptr %222, align 4, !tbaa !9
  br label %255

223:                                              ; preds = %218
  %224 = load ptr, ptr %35, align 8, !tbaa !5
  %225 = load i32, ptr %224, align 4, !tbaa !9
  %226 = icmp slt i32 %225, 1
  br i1 %226, label %236, label %227

227:                                              ; preds = %223
  %228 = load i32, ptr %65, align 4, !tbaa !9
  %229 = icmp ne i32 %228, 0
  br i1 %229, label %230, label %238

230:                                              ; preds = %227
  %231 = load ptr, ptr %35, align 8, !tbaa !5
  %232 = load i32, ptr %231, align 4, !tbaa !9
  %233 = load ptr, ptr %26, align 8, !tbaa !5
  %234 = load i32, ptr %233, align 4, !tbaa !9
  %235 = icmp slt i32 %232, %234
  br i1 %235, label %236, label %238

236:                                              ; preds = %230, %223
  %237 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -14, ptr %237, align 4, !tbaa !9
  br label %254

238:                                              ; preds = %230, %227
  %239 = load ptr, ptr %37, align 8, !tbaa !5
  %240 = load i32, ptr %239, align 4, !tbaa !9
  %241 = icmp slt i32 %240, 1
  br i1 %241, label %251, label %242

242:                                              ; preds = %238
  %243 = load i32, ptr %66, align 4, !tbaa !9
  %244 = icmp ne i32 %243, 0
  br i1 %244, label %245, label %253

245:                                              ; preds = %242
  %246 = load ptr, ptr %37, align 8, !tbaa !5
  %247 = load i32, ptr %246, align 4, !tbaa !9
  %248 = load ptr, ptr %26, align 8, !tbaa !5
  %249 = load i32, ptr %248, align 4, !tbaa !9
  %250 = icmp slt i32 %247, %249
  br i1 %250, label %251, label %253

251:                                              ; preds = %245, %238
  %252 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -16, ptr %252, align 4, !tbaa !9
  br label %253

253:                                              ; preds = %251, %245, %242
  br label %254

254:                                              ; preds = %253, %236
  br label %255

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

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

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

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

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

260:                                              ; preds = %259, %171
  %261 = load ptr, ptr %42, align 8, !tbaa !5
  %262 = load i32, ptr %261, align 4, !tbaa !9
  %263 = icmp eq i32 %262, 0
  br i1 %263, label %264, label %355

264:                                              ; preds = %260
  store i32 1, ptr %51, align 4, !tbaa !9
  %265 = load ptr, ptr %26, align 8, !tbaa !5
  %266 = load i32, ptr %265, align 4, !tbaa !9
  %267 = shl i32 %266, 1
  store i32 %267, ptr %52, align 4, !tbaa !9
  %268 = load i32, ptr %51, align 4, !tbaa !9
  %269 = load i32, ptr %52, align 4, !tbaa !9
  %270 = icmp sge i32 %268, %269
  br i1 %270, label %271, label %273

271:                                              ; preds = %264
  %272 = load i32, ptr %51, align 4, !tbaa !9
  br label %275

273:                                              ; preds = %264
  %274 = load i32, ptr %52, align 4, !tbaa !9
  br label %275

275:                                              ; preds = %273, %271
  %276 = phi i32 [ %272, %271 ], [ %274, %273 ]
  store i32 %276, ptr %76, align 4, !tbaa !9
  store i32 1, ptr %51, align 4, !tbaa !9
  %277 = load ptr, ptr %26, align 8, !tbaa !5
  %278 = load i32, ptr %277, align 4, !tbaa !9
  %279 = load ptr, ptr %26, align 8, !tbaa !5
  %280 = load i32, ptr %279, align 4, !tbaa !9
  %281 = load ptr, ptr %26, align 8, !tbaa !5
  %282 = load ptr, ptr %26, align 8, !tbaa !5
  %283 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %281, ptr noundef @c__1, ptr noundef %282, ptr noundef @c__0, i32 noundef 6, i32 noundef 1)
  %284 = mul nsw i32 %280, %283
  %285 = add nsw i32 %278, %284
  store i32 %285, ptr %52, align 4, !tbaa !9
  %286 = load i32, ptr %51, align 4, !tbaa !9
  %287 = load i32, ptr %52, align 4, !tbaa !9
  %288 = icmp sge i32 %286, %287
  br i1 %288, label %289, label %291

289:                                              ; preds = %275
  %290 = load i32, ptr %51, align 4, !tbaa !9
  br label %293

291:                                              ; preds = %275
  %292 = load i32, ptr %52, align 4, !tbaa !9
  br label %293

293:                                              ; preds = %291, %289
  %294 = phi i32 [ %290, %289 ], [ %292, %291 ]
  store i32 %294, ptr %82, align 4, !tbaa !9
  %295 = load i32, ptr %82, align 4, !tbaa !9
  store i32 %295, ptr %51, align 4, !tbaa !9
  %296 = load ptr, ptr %26, align 8, !tbaa !5
  %297 = load i32, ptr %296, align 4, !tbaa !9
  %298 = load ptr, ptr %26, align 8, !tbaa !5
  %299 = load i32, ptr %298, align 4, !tbaa !9
  %300 = load ptr, ptr %26, align 8, !tbaa !5
  %301 = load ptr, ptr %26, align 8, !tbaa !5
  %302 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.4, ptr noundef %300, ptr noundef @c__1, ptr noundef %301, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  %303 = mul nsw i32 %299, %302
  %304 = add nsw i32 %297, %303
  store i32 %304, ptr %52, align 4, !tbaa !9
  %305 = load i32, ptr %51, align 4, !tbaa !9
  %306 = load i32, ptr %52, align 4, !tbaa !9
  %307 = icmp sge i32 %305, %306
  br i1 %307, label %308, label %310

308:                                              ; preds = %293
  %309 = load i32, ptr %51, align 4, !tbaa !9
  br label %312

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

312:                                              ; preds = %310, %308
  %313 = phi i32 [ %309, %308 ], [ %311, %310 ]
  store i32 %313, ptr %82, align 4, !tbaa !9
  %314 = load i32, ptr %65, align 4, !tbaa !9
  %315 = icmp ne i32 %314, 0
  br i1 %315, label %316, label %336

316:                                              ; preds = %312
  %317 = load i32, ptr %82, align 4, !tbaa !9
  store i32 %317, ptr %51, align 4, !tbaa !9
  %318 = load ptr, ptr %26, align 8, !tbaa !5
  %319 = load i32, ptr %318, align 4, !tbaa !9
  %320 = load ptr, ptr %26, align 8, !tbaa !5
  %321 = load i32, ptr %320, align 4, !tbaa !9
  %322 = load ptr, ptr %26, align 8, !tbaa !5
  %323 = load ptr, ptr %26, align 8, !tbaa !5
  %324 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.6, ptr noundef @.str.4, ptr noundef %322, ptr noundef @c__1, ptr noundef %323, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  %325 = mul nsw i32 %321, %324
  %326 = add nsw i32 %319, %325
  store i32 %326, ptr %52, align 4, !tbaa !9
  %327 = load i32, ptr %51, align 4, !tbaa !9
  %328 = load i32, ptr %52, align 4, !tbaa !9
  %329 = icmp sge i32 %327, %328
  br i1 %329, label %330, label %332

330:                                              ; preds = %316
  %331 = load i32, ptr %51, align 4, !tbaa !9
  br label %334

332:                                              ; preds = %316
  %333 = load i32, ptr %52, align 4, !tbaa !9
  br label %334

334:                                              ; preds = %332, %330
  %335 = phi i32 [ %331, %330 ], [ %333, %332 ]
  store i32 %335, ptr %82, align 4, !tbaa !9
  br label %336

336:                                              ; preds = %334, %312
  %337 = load i32, ptr %82, align 4, !tbaa !9
  %338 = sitofp i32 %337 to float
  %339 = load ptr, ptr %38, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.complex, ptr %339, i64 1
  %341 = getelementptr inbounds %struct.complex, ptr %340, i32 0, i32 0
  store float %338, ptr %341, align 4, !tbaa !11
  %342 = load ptr, ptr %38, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.complex, ptr %342, i64 1
  %344 = getelementptr inbounds %struct.complex, ptr %343, i32 0, i32 1
  store float 0.000000e+00, ptr %344, align 4, !tbaa !14
  %345 = load ptr, ptr %39, align 8, !tbaa !5
  %346 = load i32, ptr %345, align 4, !tbaa !9
  %347 = load i32, ptr %76, align 4, !tbaa !9
  %348 = icmp slt i32 %346, %347
  br i1 %348, label %349, label %354

349:                                              ; preds = %336
  %350 = load i32, ptr %81, align 4, !tbaa !9
  %351 = icmp ne i32 %350, 0
  br i1 %351, label %354, label %352

352:                                              ; preds = %349
  %353 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -18, ptr %353, align 4, !tbaa !9
  br label %354

354:                                              ; preds = %352, %349, %336
  br label %355

355:                                              ; preds = %354, %260
  %356 = load ptr, ptr %42, align 8, !tbaa !5
  %357 = load i32, ptr %356, align 4, !tbaa !9
  %358 = icmp ne i32 %357, 0
  br i1 %358, label %359, label %364

359:                                              ; preds = %355
  %360 = load ptr, ptr %42, align 8, !tbaa !5
  %361 = load i32, ptr %360, align 4, !tbaa !9
  %362 = sub nsw i32 0, %361
  store i32 %362, ptr %51, align 4, !tbaa !9
  %363 = call i32 @xerbla_(ptr noundef @.str.7, ptr noundef %51, i32 noundef 6)
  store i32 1, ptr %87, align 4
  br label %947

364:                                              ; preds = %355
  %365 = load i32, ptr %81, align 4, !tbaa !9
  %366 = icmp ne i32 %365, 0
  br i1 %366, label %367, label %368

367:                                              ; preds = %364
  store i32 1, ptr %87, align 4
  br label %947

368:                                              ; preds = %364
  br label %369

369:                                              ; preds = %368
  %370 = load ptr, ptr %26, align 8, !tbaa !5
  %371 = load i32, ptr %370, align 4, !tbaa !9
  %372 = icmp eq i32 %371, 0
  br i1 %372, label %373, label %375

373:                                              ; preds = %369
  %374 = load ptr, ptr %31, align 8, !tbaa !5
  store i32 0, ptr %374, align 4, !tbaa !9
  store i32 1, ptr %87, align 4
  br label %947

375:                                              ; preds = %369
  %376 = call float @slamch_(ptr noundef @.str.8)
  store float %376, ptr %86, align 4, !tbaa !15
  %377 = call float @slamch_(ptr noundef @.str.2)
  store float %377, ptr %79, align 4, !tbaa !15
  %378 = load float, ptr %79, align 4, !tbaa !15
  %379 = fdiv float 1.000000e+00, %378
  store float %379, ptr %71, align 4, !tbaa !15
  call void @slabad_(ptr noundef %79, ptr noundef %71)
  %380 = load float, ptr %79, align 4, !tbaa !15
  %381 = fpext float %380 to double
  %382 = call double @sqrt(double noundef %381) #4
  %383 = load float, ptr %86, align 4, !tbaa !15
  %384 = fpext float %383 to double
  %385 = fdiv double %382, %384
  %386 = fptrunc double %385 to float
  store float %386, ptr %79, align 4, !tbaa !15
  %387 = load float, ptr %79, align 4, !tbaa !15
  %388 = fdiv float 1.000000e+00, %387
  store float %388, ptr %71, align 4, !tbaa !15
  %389 = load ptr, ptr %26, align 8, !tbaa !5
  %390 = load ptr, ptr %26, align 8, !tbaa !5
  %391 = load ptr, ptr %27, align 8, !tbaa !5
  %392 = load i32, ptr %44, align 4, !tbaa !9
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds %struct.complex, ptr %391, i64 %393
  %395 = load ptr, ptr %28, align 8, !tbaa !5
  %396 = load ptr, ptr %40, align 8, !tbaa !5
  %397 = getelementptr inbounds float, ptr %396, i64 1
  %398 = call float @clange_(ptr noundef @.str.9, ptr noundef %389, ptr noundef %390, ptr noundef %394, ptr noundef %395, ptr noundef %397)
  store float %398, ptr %53, align 4, !tbaa !15
  store i32 0, ptr %69, align 4, !tbaa !9
  %399 = load float, ptr %53, align 4, !tbaa !15
  %400 = fcmp ogt float %399, 0.000000e+00
  br i1 %400, label %401, label %407

401:                                              ; preds = %375
  %402 = load float, ptr %53, align 4, !tbaa !15
  %403 = load float, ptr %79, align 4, !tbaa !15
  %404 = fcmp olt float %402, %403
  br i1 %404, label %405, label %407

405:                                              ; preds = %401
  %406 = load float, ptr %79, align 4, !tbaa !15
  store float %406, ptr %75, align 4, !tbaa !15
  store i32 1, ptr %69, align 4, !tbaa !9
  br label %414

407:                                              ; preds = %401, %375
  %408 = load float, ptr %53, align 4, !tbaa !15
  %409 = load float, ptr %71, align 4, !tbaa !15
  %410 = fcmp ogt float %408, %409
  br i1 %410, label %411, label %413

411:                                              ; preds = %407
  %412 = load float, ptr %71, align 4, !tbaa !15
  store float %412, ptr %75, align 4, !tbaa !15
  store i32 1, ptr %69, align 4, !tbaa !9
  br label %413

413:                                              ; preds = %411, %407
  br label %414

414:                                              ; preds = %413, %405
  %415 = load i32, ptr %69, align 4, !tbaa !9
  %416 = icmp ne i32 %415, 0
  br i1 %416, label %417, label %425

417:                                              ; preds = %414
  %418 = load ptr, ptr %26, align 8, !tbaa !5
  %419 = load ptr, ptr %26, align 8, !tbaa !5
  %420 = load ptr, ptr %27, align 8, !tbaa !5
  %421 = load i32, ptr %44, align 4, !tbaa !9
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds %struct.complex, ptr %420, i64 %422
  %424 = load ptr, ptr %28, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %53, ptr noundef %75, ptr noundef %418, ptr noundef %419, ptr noundef %423, ptr noundef %424, ptr noundef %56)
  br label %425

425:                                              ; preds = %417, %414
  %426 = load ptr, ptr %26, align 8, !tbaa !5
  %427 = load ptr, ptr %26, align 8, !tbaa !5
  %428 = load ptr, ptr %29, align 8, !tbaa !5
  %429 = load i32, ptr %46, align 4, !tbaa !9
  %430 = sext i32 %429 to i64
  %431 = getelementptr inbounds %struct.complex, ptr %428, i64 %430
  %432 = load ptr, ptr %30, align 8, !tbaa !5
  %433 = load ptr, ptr %40, align 8, !tbaa !5
  %434 = getelementptr inbounds float, ptr %433, i64 1
  %435 = call float @clange_(ptr noundef @.str.9, ptr noundef %426, ptr noundef %427, ptr noundef %431, ptr noundef %432, ptr noundef %434)
  store float %435, ptr %54, align 4, !tbaa !15
  store i32 0, ptr %70, align 4, !tbaa !9
  %436 = load float, ptr %54, align 4, !tbaa !15
  %437 = fcmp ogt float %436, 0.000000e+00
  br i1 %437, label %438, label %444

438:                                              ; preds = %425
  %439 = load float, ptr %54, align 4, !tbaa !15
  %440 = load float, ptr %79, align 4, !tbaa !15
  %441 = fcmp olt float %439, %440
  br i1 %441, label %442, label %444

442:                                              ; preds = %438
  %443 = load float, ptr %79, align 4, !tbaa !15
  store float %443, ptr %78, align 4, !tbaa !15
  store i32 1, ptr %70, align 4, !tbaa !9
  br label %451

444:                                              ; preds = %438, %425
  %445 = load float, ptr %54, align 4, !tbaa !15
  %446 = load float, ptr %71, align 4, !tbaa !15
  %447 = fcmp ogt float %445, %446
  br i1 %447, label %448, label %450

448:                                              ; preds = %444
  %449 = load float, ptr %71, align 4, !tbaa !15
  store float %449, ptr %78, align 4, !tbaa !15
  store i32 1, ptr %70, align 4, !tbaa !9
  br label %450

450:                                              ; preds = %448, %444
  br label %451

451:                                              ; preds = %450, %442
  %452 = load i32, ptr %70, align 4, !tbaa !9
  %453 = icmp ne i32 %452, 0
  br i1 %453, label %454, label %462

454:                                              ; preds = %451
  %455 = load ptr, ptr %26, align 8, !tbaa !5
  %456 = load ptr, ptr %26, align 8, !tbaa !5
  %457 = load ptr, ptr %29, align 8, !tbaa !5
  %458 = load i32, ptr %46, align 4, !tbaa !9
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds %struct.complex, ptr %457, i64 %459
  %461 = load ptr, ptr %30, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %54, ptr noundef %78, ptr noundef %455, ptr noundef %456, ptr noundef %460, ptr noundef %461, ptr noundef %56)
  br label %462

462:                                              ; preds = %454, %451
  store i32 1, ptr %62, align 4, !tbaa !9
  %463 = load ptr, ptr %26, align 8, !tbaa !5
  %464 = load i32, ptr %463, align 4, !tbaa !9
  %465 = add nsw i32 %464, 1
  store i32 %465, ptr %73, align 4, !tbaa !9
  %466 = load i32, ptr %73, align 4, !tbaa !9
  %467 = load ptr, ptr %26, align 8, !tbaa !5
  %468 = load i32, ptr %467, align 4, !tbaa !9
  %469 = add nsw i32 %466, %468
  store i32 %469, ptr %67, align 4, !tbaa !9
  %470 = load ptr, ptr %26, align 8, !tbaa !5
  %471 = load ptr, ptr %27, align 8, !tbaa !5
  %472 = load i32, ptr %44, align 4, !tbaa !9
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds %struct.complex, ptr %471, i64 %473
  %475 = load ptr, ptr %28, align 8, !tbaa !5
  %476 = load ptr, ptr %29, align 8, !tbaa !5
  %477 = load i32, ptr %46, align 4, !tbaa !9
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds %struct.complex, ptr %476, i64 %478
  %480 = load ptr, ptr %30, align 8, !tbaa !5
  %481 = load ptr, ptr %40, align 8, !tbaa !5
  %482 = load i32, ptr %62, align 4, !tbaa !9
  %483 = sext i32 %482 to i64
  %484 = getelementptr inbounds float, ptr %481, i64 %483
  %485 = load ptr, ptr %40, align 8, !tbaa !5
  %486 = load i32, ptr %73, align 4, !tbaa !9
  %487 = sext i32 %486 to i64
  %488 = getelementptr inbounds float, ptr %485, i64 %487
  %489 = load ptr, ptr %40, align 8, !tbaa !5
  %490 = load i32, ptr %67, align 4, !tbaa !9
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds float, ptr %489, i64 %491
  call void @cggbal_(ptr noundef @.str.8, ptr noundef %470, ptr noundef %474, ptr noundef %475, ptr noundef %479, ptr noundef %480, ptr noundef %85, ptr noundef %84, ptr noundef %484, ptr noundef %488, ptr noundef %492, ptr noundef %56)
  %493 = load i32, ptr %84, align 4, !tbaa !9
  %494 = add nsw i32 %493, 1
  %495 = load i32, ptr %85, align 4, !tbaa !9
  %496 = sub nsw i32 %494, %495
  store i32 %496, ptr %68, align 4, !tbaa !9
  %497 = load ptr, ptr %26, align 8, !tbaa !5
  %498 = load i32, ptr %497, align 4, !tbaa !9
  %499 = add nsw i32 %498, 1
  %500 = load i32, ptr %85, align 4, !tbaa !9
  %501 = sub nsw i32 %499, %500
  store i32 %501, ptr %63, align 4, !tbaa !9
  store i32 1, ptr %57, align 4, !tbaa !9
  %502 = load i32, ptr %57, align 4, !tbaa !9
  %503 = load i32, ptr %68, align 4, !tbaa !9
  %504 = add nsw i32 %502, %503
  store i32 %504, ptr %58, align 4, !tbaa !9
  %505 = load ptr, ptr %39, align 8, !tbaa !5
  %506 = load i32, ptr %505, align 4, !tbaa !9
  %507 = add nsw i32 %506, 1
  %508 = load i32, ptr %58, align 4, !tbaa !9
  %509 = sub nsw i32 %507, %508
  store i32 %509, ptr %51, align 4, !tbaa !9
  %510 = load ptr, ptr %29, align 8, !tbaa !5
  %511 = load i32, ptr %85, align 4, !tbaa !9
  %512 = load i32, ptr %85, align 4, !tbaa !9
  %513 = load i32, ptr %45, align 4, !tbaa !9
  %514 = mul nsw i32 %512, %513
  %515 = add nsw i32 %511, %514
  %516 = sext i32 %515 to i64
  %517 = getelementptr inbounds %struct.complex, ptr %510, i64 %516
  %518 = load ptr, ptr %30, align 8, !tbaa !5
  %519 = load ptr, ptr %38, align 8, !tbaa !5
  %520 = load i32, ptr %57, align 4, !tbaa !9
  %521 = sext i32 %520 to i64
  %522 = getelementptr inbounds %struct.complex, ptr %519, i64 %521
  %523 = load ptr, ptr %38, align 8, !tbaa !5
  %524 = load i32, ptr %58, align 4, !tbaa !9
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds %struct.complex, ptr %523, i64 %525
  call void @cgeqrf_(ptr noundef %68, ptr noundef %63, ptr noundef %517, ptr noundef %518, ptr noundef %522, ptr noundef %526, ptr noundef %51, ptr noundef %56)
  %527 = load ptr, ptr %39, align 8, !tbaa !5
  %528 = load i32, ptr %527, align 4, !tbaa !9
  %529 = add nsw i32 %528, 1
  %530 = load i32, ptr %58, align 4, !tbaa !9
  %531 = sub nsw i32 %529, %530
  store i32 %531, ptr %51, align 4, !tbaa !9
  %532 = load ptr, ptr %29, align 8, !tbaa !5
  %533 = load i32, ptr %85, align 4, !tbaa !9
  %534 = load i32, ptr %85, align 4, !tbaa !9
  %535 = load i32, ptr %45, align 4, !tbaa !9
  %536 = mul nsw i32 %534, %535
  %537 = add nsw i32 %533, %536
  %538 = sext i32 %537 to i64
  %539 = getelementptr inbounds %struct.complex, ptr %532, i64 %538
  %540 = load ptr, ptr %30, align 8, !tbaa !5
  %541 = load ptr, ptr %38, align 8, !tbaa !5
  %542 = load i32, ptr %57, align 4, !tbaa !9
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds %struct.complex, ptr %541, i64 %543
  %545 = load ptr, ptr %27, align 8, !tbaa !5
  %546 = load i32, ptr %85, align 4, !tbaa !9
  %547 = load i32, ptr %85, align 4, !tbaa !9
  %548 = load i32, ptr %43, align 4, !tbaa !9
  %549 = mul nsw i32 %547, %548
  %550 = add nsw i32 %546, %549
  %551 = sext i32 %550 to i64
  %552 = getelementptr inbounds %struct.complex, ptr %545, i64 %551
  %553 = load ptr, ptr %28, align 8, !tbaa !5
  %554 = load ptr, ptr %38, align 8, !tbaa !5
  %555 = load i32, ptr %58, align 4, !tbaa !9
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds %struct.complex, ptr %554, i64 %556
  call void @cunmqr_(ptr noundef @.str.11, ptr noundef @.str.12, ptr noundef %68, ptr noundef %63, ptr noundef %68, ptr noundef %539, ptr noundef %540, ptr noundef %544, ptr noundef %552, ptr noundef %553, ptr noundef %557, ptr noundef %51, ptr noundef %56)
  %558 = load i32, ptr %65, align 4, !tbaa !9
  %559 = icmp ne i32 %558, 0
  br i1 %559, label %560, label %618

560:                                              ; preds = %462
  %561 = load ptr, ptr %26, align 8, !tbaa !5
  %562 = load ptr, ptr %26, align 8, !tbaa !5
  %563 = load ptr, ptr %34, align 8, !tbaa !5
  %564 = load i32, ptr %48, align 4, !tbaa !9
  %565 = sext i32 %564 to i64
  %566 = getelementptr inbounds %struct.complex, ptr %563, i64 %565
  %567 = load ptr, ptr %35, align 8, !tbaa !5
  call void @claset_(ptr noundef @.str.13, ptr noundef %561, ptr noundef %562, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %566, ptr noundef %567)
  %568 = load i32, ptr %68, align 4, !tbaa !9
  %569 = icmp sgt i32 %568, 1
  br i1 %569, label %570, label %595

570:                                              ; preds = %560
  %571 = load i32, ptr %68, align 4, !tbaa !9
  %572 = sub nsw i32 %571, 1
  store i32 %572, ptr %51, align 4, !tbaa !9
  %573 = load i32, ptr %68, align 4, !tbaa !9
  %574 = sub nsw i32 %573, 1
  store i32 %574, ptr %52, align 4, !tbaa !9
  %575 = load ptr, ptr %29, align 8, !tbaa !5
  %576 = load i32, ptr %85, align 4, !tbaa !9
  %577 = add nsw i32 %576, 1
  %578 = load i32, ptr %85, align 4, !tbaa !9
  %579 = load i32, ptr %45, align 4, !tbaa !9
  %580 = mul nsw i32 %578, %579
  %581 = add nsw i32 %577, %580
  %582 = sext i32 %581 to i64
  %583 = getelementptr inbounds %struct.complex, ptr %575, i64 %582
  %584 = load ptr, ptr %30, align 8, !tbaa !5
  %585 = load ptr, ptr %34, align 8, !tbaa !5
  %586 = load i32, ptr %85, align 4, !tbaa !9
  %587 = add nsw i32 %586, 1
  %588 = load i32, ptr %85, align 4, !tbaa !9
  %589 = load i32, ptr %47, align 4, !tbaa !9
  %590 = mul nsw i32 %588, %589
  %591 = add nsw i32 %587, %590
  %592 = sext i32 %591 to i64
  %593 = getelementptr inbounds %struct.complex, ptr %585, i64 %592
  %594 = load ptr, ptr %35, align 8, !tbaa !5
  call void @clacpy_(ptr noundef @.str.11, ptr noundef %51, ptr noundef %52, ptr noundef %583, ptr noundef %584, ptr noundef %593, ptr noundef %594)
  br label %595

595:                                              ; preds = %570, %560
  %596 = load ptr, ptr %39, align 8, !tbaa !5
  %597 = load i32, ptr %596, align 4, !tbaa !9
  %598 = add nsw i32 %597, 1
  %599 = load i32, ptr %58, align 4, !tbaa !9
  %600 = sub nsw i32 %598, %599
  store i32 %600, ptr %51, align 4, !tbaa !9
  %601 = load ptr, ptr %34, align 8, !tbaa !5
  %602 = load i32, ptr %85, align 4, !tbaa !9
  %603 = load i32, ptr %85, align 4, !tbaa !9
  %604 = load i32, ptr %47, align 4, !tbaa !9
  %605 = mul nsw i32 %603, %604
  %606 = add nsw i32 %602, %605
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds %struct.complex, ptr %601, i64 %607
  %609 = load ptr, ptr %35, align 8, !tbaa !5
  %610 = load ptr, ptr %38, align 8, !tbaa !5
  %611 = load i32, ptr %57, align 4, !tbaa !9
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds %struct.complex, ptr %610, i64 %612
  %614 = load ptr, ptr %38, align 8, !tbaa !5
  %615 = load i32, ptr %58, align 4, !tbaa !9
  %616 = sext i32 %615 to i64
  %617 = getelementptr inbounds %struct.complex, ptr %614, i64 %616
  call void @cungqr_(ptr noundef %68, ptr noundef %68, ptr noundef %68, ptr noundef %608, ptr noundef %609, ptr noundef %613, ptr noundef %617, ptr noundef %51, ptr noundef %56)
  br label %618

618:                                              ; preds = %595, %462
  %619 = load i32, ptr %66, align 4, !tbaa !9
  %620 = icmp ne i32 %619, 0
  br i1 %620, label %621, label %629

621:                                              ; preds = %618
  %622 = load ptr, ptr %26, align 8, !tbaa !5
  %623 = load ptr, ptr %26, align 8, !tbaa !5
  %624 = load ptr, ptr %36, align 8, !tbaa !5
  %625 = load i32, ptr %50, align 4, !tbaa !9
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds %struct.complex, ptr %624, i64 %626
  %628 = load ptr, ptr %37, align 8, !tbaa !5
  call void @claset_(ptr noundef @.str.13, ptr noundef %622, ptr noundef %623, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %627, ptr noundef %628)
  br label %629

629:                                              ; preds = %621, %618
  %630 = load ptr, ptr %22, align 8, !tbaa !5
  %631 = load ptr, ptr %23, align 8, !tbaa !5
  %632 = load ptr, ptr %26, align 8, !tbaa !5
  %633 = load ptr, ptr %27, align 8, !tbaa !5
  %634 = load i32, ptr %44, align 4, !tbaa !9
  %635 = sext i32 %634 to i64
  %636 = getelementptr inbounds %struct.complex, ptr %633, i64 %635
  %637 = load ptr, ptr %28, align 8, !tbaa !5
  %638 = load ptr, ptr %29, align 8, !tbaa !5
  %639 = load i32, ptr %46, align 4, !tbaa !9
  %640 = sext i32 %639 to i64
  %641 = getelementptr inbounds %struct.complex, ptr %638, i64 %640
  %642 = load ptr, ptr %30, align 8, !tbaa !5
  %643 = load ptr, ptr %34, align 8, !tbaa !5
  %644 = load i32, ptr %48, align 4, !tbaa !9
  %645 = sext i32 %644 to i64
  %646 = getelementptr inbounds %struct.complex, ptr %643, i64 %645
  %647 = load ptr, ptr %35, align 8, !tbaa !5
  %648 = load ptr, ptr %36, align 8, !tbaa !5
  %649 = load i32, ptr %50, align 4, !tbaa !9
  %650 = sext i32 %649 to i64
  %651 = getelementptr inbounds %struct.complex, ptr %648, i64 %650
  %652 = load ptr, ptr %37, align 8, !tbaa !5
  call void @cgghrd_(ptr noundef %630, ptr noundef %631, ptr noundef %632, ptr noundef %85, ptr noundef %84, ptr noundef %636, ptr noundef %637, ptr noundef %641, ptr noundef %642, ptr noundef %646, ptr noundef %647, ptr noundef %651, ptr noundef %652, ptr noundef %56)
  %653 = load ptr, ptr %31, align 8, !tbaa !5
  store i32 0, ptr %653, align 4, !tbaa !9
  %654 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %654, ptr %58, align 4, !tbaa !9
  %655 = load ptr, ptr %39, align 8, !tbaa !5
  %656 = load i32, ptr %655, align 4, !tbaa !9
  %657 = add nsw i32 %656, 1
  %658 = load i32, ptr %58, align 4, !tbaa !9
  %659 = sub nsw i32 %657, %658
  store i32 %659, ptr %51, align 4, !tbaa !9
  %660 = load ptr, ptr %22, align 8, !tbaa !5
  %661 = load ptr, ptr %23, align 8, !tbaa !5
  %662 = load ptr, ptr %26, align 8, !tbaa !5
  %663 = load ptr, ptr %27, align 8, !tbaa !5
  %664 = load i32, ptr %44, align 4, !tbaa !9
  %665 = sext i32 %664 to i64
  %666 = getelementptr inbounds %struct.complex, ptr %663, i64 %665
  %667 = load ptr, ptr %28, align 8, !tbaa !5
  %668 = load ptr, ptr %29, align 8, !tbaa !5
  %669 = load i32, ptr %46, align 4, !tbaa !9
  %670 = sext i32 %669 to i64
  %671 = getelementptr inbounds %struct.complex, ptr %668, i64 %670
  %672 = load ptr, ptr %30, align 8, !tbaa !5
  %673 = load ptr, ptr %32, align 8, !tbaa !5
  %674 = getelementptr inbounds %struct.complex, ptr %673, i64 1
  %675 = load ptr, ptr %33, align 8, !tbaa !5
  %676 = getelementptr inbounds %struct.complex, ptr %675, i64 1
  %677 = load ptr, ptr %34, align 8, !tbaa !5
  %678 = load i32, ptr %48, align 4, !tbaa !9
  %679 = sext i32 %678 to i64
  %680 = getelementptr inbounds %struct.complex, ptr %677, i64 %679
  %681 = load ptr, ptr %35, align 8, !tbaa !5
  %682 = load ptr, ptr %36, align 8, !tbaa !5
  %683 = load i32, ptr %50, align 4, !tbaa !9
  %684 = sext i32 %683 to i64
  %685 = getelementptr inbounds %struct.complex, ptr %682, i64 %684
  %686 = load ptr, ptr %37, align 8, !tbaa !5
  %687 = load ptr, ptr %38, align 8, !tbaa !5
  %688 = load i32, ptr %58, align 4, !tbaa !9
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds %struct.complex, ptr %687, i64 %689
  %691 = load ptr, ptr %40, align 8, !tbaa !5
  %692 = load i32, ptr %67, align 4, !tbaa !9
  %693 = sext i32 %692 to i64
  %694 = getelementptr inbounds float, ptr %691, i64 %693
  call void @chgeqz_(ptr noundef @.str.2, ptr noundef %660, ptr noundef %661, ptr noundef %662, ptr noundef %85, ptr noundef %84, ptr noundef %666, ptr noundef %667, ptr noundef %671, ptr noundef %672, ptr noundef %674, ptr noundef %676, ptr noundef %680, ptr noundef %681, ptr noundef %685, ptr noundef %686, ptr noundef %690, ptr noundef %51, ptr noundef %694, ptr noundef %56)
  %695 = load i32, ptr %56, align 4, !tbaa !9
  %696 = icmp ne i32 %695, 0
  br i1 %696, label %697, label %732

697:                                              ; preds = %629
  %698 = load i32, ptr %56, align 4, !tbaa !9
  %699 = icmp sgt i32 %698, 0
  br i1 %699, label %700, label %708

700:                                              ; preds = %697
  %701 = load i32, ptr %56, align 4, !tbaa !9
  %702 = load ptr, ptr %26, align 8, !tbaa !5
  %703 = load i32, ptr %702, align 4, !tbaa !9
  %704 = icmp sle i32 %701, %703
  br i1 %704, label %705, label %708

705:                                              ; preds = %700
  %706 = load i32, ptr %56, align 4, !tbaa !9
  %707 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %706, ptr %707, align 4, !tbaa !9
  br label %731

708:                                              ; preds = %700, %697
  %709 = load i32, ptr %56, align 4, !tbaa !9
  %710 = load ptr, ptr %26, align 8, !tbaa !5
  %711 = load i32, ptr %710, align 4, !tbaa !9
  %712 = icmp sgt i32 %709, %711
  br i1 %712, label %713, label %725

713:                                              ; preds = %708
  %714 = load i32, ptr %56, align 4, !tbaa !9
  %715 = load ptr, ptr %26, align 8, !tbaa !5
  %716 = load i32, ptr %715, align 4, !tbaa !9
  %717 = shl i32 %716, 1
  %718 = icmp sle i32 %714, %717
  br i1 %718, label %719, label %725

719:                                              ; preds = %713
  %720 = load i32, ptr %56, align 4, !tbaa !9
  %721 = load ptr, ptr %26, align 8, !tbaa !5
  %722 = load i32, ptr %721, align 4, !tbaa !9
  %723 = sub nsw i32 %720, %722
  %724 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %723, ptr %724, align 4, !tbaa !9
  br label %730

725:                                              ; preds = %713, %708
  %726 = load ptr, ptr %26, align 8, !tbaa !5
  %727 = load i32, ptr %726, align 4, !tbaa !9
  %728 = add nsw i32 %727, 1
  %729 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %728, ptr %729, align 4, !tbaa !9
  br label %730

730:                                              ; preds = %725, %719
  br label %731

731:                                              ; preds = %730, %705
  br label %938

732:                                              ; preds = %629
  %733 = load i32, ptr %80, align 4, !tbaa !9
  %734 = icmp ne i32 %733, 0
  br i1 %734, label %735, label %824

735:                                              ; preds = %732
  %736 = load i32, ptr %69, align 4, !tbaa !9
  %737 = icmp ne i32 %736, 0
  br i1 %737, label %738, label %743

738:                                              ; preds = %735
  %739 = load ptr, ptr %26, align 8, !tbaa !5
  %740 = load ptr, ptr %32, align 8, !tbaa !5
  %741 = getelementptr inbounds %struct.complex, ptr %740, i64 1
  %742 = load ptr, ptr %26, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %53, ptr noundef %75, ptr noundef %739, ptr noundef @c__1, ptr noundef %741, ptr noundef %742, ptr noundef %56)
  br label %743

743:                                              ; preds = %738, %735
  %744 = load i32, ptr %70, align 4, !tbaa !9
  %745 = icmp ne i32 %744, 0
  br i1 %745, label %746, label %751

746:                                              ; preds = %743
  %747 = load ptr, ptr %26, align 8, !tbaa !5
  %748 = load ptr, ptr %33, align 8, !tbaa !5
  %749 = getelementptr inbounds %struct.complex, ptr %748, i64 1
  %750 = load ptr, ptr %26, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %54, ptr noundef %78, ptr noundef %747, ptr noundef @c__1, ptr noundef %749, ptr noundef %750, ptr noundef %56)
  br label %751

751:                                              ; preds = %746, %743
  %752 = load ptr, ptr %26, align 8, !tbaa !5
  %753 = load i32, ptr %752, align 4, !tbaa !9
  store i32 %753, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %61, align 4, !tbaa !9
  br label %754

754:                                              ; preds = %773, %751
  %755 = load i32, ptr %61, align 4, !tbaa !9
  %756 = load i32, ptr %51, align 4, !tbaa !9
  %757 = icmp sle i32 %755, %756
  br i1 %757, label %758, label %776

758:                                              ; preds = %754
  %759 = load ptr, ptr %25, align 8, !tbaa !5
  %760 = load ptr, ptr %32, align 8, !tbaa !5
  %761 = load i32, ptr %61, align 4, !tbaa !9
  %762 = sext i32 %761 to i64
  %763 = getelementptr inbounds %struct.complex, ptr %760, i64 %762
  %764 = load ptr, ptr %33, align 8, !tbaa !5
  %765 = load i32, ptr %61, align 4, !tbaa !9
  %766 = sext i32 %765 to i64
  %767 = getelementptr inbounds %struct.complex, ptr %764, i64 %766
  %768 = call i32 (ptr, ptr, ...) %759(ptr noundef %763, ptr noundef %767)
  %769 = load ptr, ptr %41, align 8, !tbaa !5
  %770 = load i32, ptr %61, align 4, !tbaa !9
  %771 = sext i32 %770 to i64
  %772 = getelementptr inbounds i32, ptr %769, i64 %771
  store i32 %768, ptr %772, align 4, !tbaa !9
  br label %773

773:                                              ; preds = %758
  %774 = load i32, ptr %61, align 4, !tbaa !9
  %775 = add nsw i32 %774, 1
  store i32 %775, ptr %61, align 4, !tbaa !9
  br label %754, !llvm.loop !16

776:                                              ; preds = %754
  %777 = load ptr, ptr %39, align 8, !tbaa !5
  %778 = load i32, ptr %777, align 4, !tbaa !9
  %779 = load i32, ptr %58, align 4, !tbaa !9
  %780 = sub nsw i32 %778, %779
  %781 = add nsw i32 %780, 1
  store i32 %781, ptr %51, align 4, !tbaa !9
  %782 = load ptr, ptr %41, align 8, !tbaa !5
  %783 = getelementptr inbounds i32, ptr %782, i64 1
  %784 = load ptr, ptr %26, align 8, !tbaa !5
  %785 = load ptr, ptr %27, align 8, !tbaa !5
  %786 = load i32, ptr %44, align 4, !tbaa !9
  %787 = sext i32 %786 to i64
  %788 = getelementptr inbounds %struct.complex, ptr %785, i64 %787
  %789 = load ptr, ptr %28, align 8, !tbaa !5
  %790 = load ptr, ptr %29, align 8, !tbaa !5
  %791 = load i32, ptr %46, align 4, !tbaa !9
  %792 = sext i32 %791 to i64
  %793 = getelementptr inbounds %struct.complex, ptr %790, i64 %792
  %794 = load ptr, ptr %30, align 8, !tbaa !5
  %795 = load ptr, ptr %32, align 8, !tbaa !5
  %796 = getelementptr inbounds %struct.complex, ptr %795, i64 1
  %797 = load ptr, ptr %33, align 8, !tbaa !5
  %798 = getelementptr inbounds %struct.complex, ptr %797, i64 1
  %799 = load ptr, ptr %34, align 8, !tbaa !5
  %800 = load i32, ptr %48, align 4, !tbaa !9
  %801 = sext i32 %800 to i64
  %802 = getelementptr inbounds %struct.complex, ptr %799, i64 %801
  %803 = load ptr, ptr %35, align 8, !tbaa !5
  %804 = load ptr, ptr %36, align 8, !tbaa !5
  %805 = load i32, ptr %50, align 4, !tbaa !9
  %806 = sext i32 %805 to i64
  %807 = getelementptr inbounds %struct.complex, ptr %804, i64 %806
  %808 = load ptr, ptr %37, align 8, !tbaa !5
  %809 = load ptr, ptr %31, align 8, !tbaa !5
  %810 = getelementptr inbounds [2 x float], ptr %83, i64 0, i64 0
  %811 = load ptr, ptr %38, align 8, !tbaa !5
  %812 = load i32, ptr %58, align 4, !tbaa !9
  %813 = sext i32 %812 to i64
  %814 = getelementptr inbounds %struct.complex, ptr %811, i64 %813
  %815 = getelementptr inbounds [1 x i32], ptr %55, i64 0, i64 0
  call void @ctgsen_(ptr noundef @c__0, ptr noundef %65, ptr noundef %66, ptr noundef %783, ptr noundef %784, ptr noundef %788, ptr noundef %789, ptr noundef %793, ptr noundef %794, ptr noundef %796, ptr noundef %798, ptr noundef %802, ptr noundef %803, ptr noundef %807, ptr noundef %808, ptr noundef %809, ptr noundef %59, ptr noundef %60, ptr noundef %810, ptr noundef %814, ptr noundef %51, ptr noundef %815, ptr noundef @c__1, ptr noundef %56)
  %816 = load i32, ptr %56, align 4, !tbaa !9
  %817 = icmp eq i32 %816, 1
  br i1 %817, label %818, label %823

818:                                              ; preds = %776
  %819 = load ptr, ptr %26, align 8, !tbaa !5
  %820 = load i32, ptr %819, align 4, !tbaa !9
  %821 = add nsw i32 %820, 3
  %822 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %821, ptr %822, align 4, !tbaa !9
  br label %823

823:                                              ; preds = %818, %776
  br label %824

824:                                              ; preds = %823, %732
  %825 = load i32, ptr %65, align 4, !tbaa !9
  %826 = icmp ne i32 %825, 0
  br i1 %826, label %827, label %843

827:                                              ; preds = %824
  %828 = load ptr, ptr %26, align 8, !tbaa !5
  %829 = load ptr, ptr %40, align 8, !tbaa !5
  %830 = load i32, ptr %62, align 4, !tbaa !9
  %831 = sext i32 %830 to i64
  %832 = getelementptr inbounds float, ptr %829, i64 %831
  %833 = load ptr, ptr %40, align 8, !tbaa !5
  %834 = load i32, ptr %73, align 4, !tbaa !9
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds float, ptr %833, i64 %835
  %837 = load ptr, ptr %26, align 8, !tbaa !5
  %838 = load ptr, ptr %34, align 8, !tbaa !5
  %839 = load i32, ptr %48, align 4, !tbaa !9
  %840 = sext i32 %839 to i64
  %841 = getelementptr inbounds %struct.complex, ptr %838, i64 %840
  %842 = load ptr, ptr %35, align 8, !tbaa !5
  call void @cggbak_(ptr noundef @.str.8, ptr noundef @.str.11, ptr noundef %828, ptr noundef %85, ptr noundef %84, ptr noundef %832, ptr noundef %836, ptr noundef %837, ptr noundef %841, ptr noundef %842, ptr noundef %56)
  br label %843

843:                                              ; preds = %827, %824
  %844 = load i32, ptr %66, align 4, !tbaa !9
  %845 = icmp ne i32 %844, 0
  br i1 %845, label %846, label %862

846:                                              ; preds = %843
  %847 = load ptr, ptr %26, align 8, !tbaa !5
  %848 = load ptr, ptr %40, align 8, !tbaa !5
  %849 = load i32, ptr %62, align 4, !tbaa !9
  %850 = sext i32 %849 to i64
  %851 = getelementptr inbounds float, ptr %848, i64 %850
  %852 = load ptr, ptr %40, align 8, !tbaa !5
  %853 = load i32, ptr %73, align 4, !tbaa !9
  %854 = sext i32 %853 to i64
  %855 = getelementptr inbounds float, ptr %852, i64 %854
  %856 = load ptr, ptr %26, align 8, !tbaa !5
  %857 = load ptr, ptr %36, align 8, !tbaa !5
  %858 = load i32, ptr %50, align 4, !tbaa !9
  %859 = sext i32 %858 to i64
  %860 = getelementptr inbounds %struct.complex, ptr %857, i64 %859
  %861 = load ptr, ptr %37, align 8, !tbaa !5
  call void @cggbak_(ptr noundef @.str.8, ptr noundef @.str.14, ptr noundef %847, ptr noundef %85, ptr noundef %84, ptr noundef %851, ptr noundef %855, ptr noundef %856, ptr noundef %860, ptr noundef %861, ptr noundef %56)
  br label %862

862:                                              ; preds = %846, %843
  %863 = load i32, ptr %69, align 4, !tbaa !9
  %864 = icmp ne i32 %863, 0
  br i1 %864, label %865, label %877

865:                                              ; preds = %862
  %866 = load ptr, ptr %26, align 8, !tbaa !5
  %867 = load ptr, ptr %26, align 8, !tbaa !5
  %868 = load ptr, ptr %27, align 8, !tbaa !5
  %869 = load i32, ptr %44, align 4, !tbaa !9
  %870 = sext i32 %869 to i64
  %871 = getelementptr inbounds %struct.complex, ptr %868, i64 %870
  %872 = load ptr, ptr %28, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.15, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %75, ptr noundef %53, ptr noundef %866, ptr noundef %867, ptr noundef %871, ptr noundef %872, ptr noundef %56)
  %873 = load ptr, ptr %26, align 8, !tbaa !5
  %874 = load ptr, ptr %32, align 8, !tbaa !5
  %875 = getelementptr inbounds %struct.complex, ptr %874, i64 1
  %876 = load ptr, ptr %26, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %75, ptr noundef %53, ptr noundef %873, ptr noundef @c__1, ptr noundef %875, ptr noundef %876, ptr noundef %56)
  br label %877

877:                                              ; preds = %865, %862
  %878 = load i32, ptr %70, align 4, !tbaa !9
  %879 = icmp ne i32 %878, 0
  br i1 %879, label %880, label %892

880:                                              ; preds = %877
  %881 = load ptr, ptr %26, align 8, !tbaa !5
  %882 = load ptr, ptr %26, align 8, !tbaa !5
  %883 = load ptr, ptr %29, align 8, !tbaa !5
  %884 = load i32, ptr %46, align 4, !tbaa !9
  %885 = sext i32 %884 to i64
  %886 = getelementptr inbounds %struct.complex, ptr %883, i64 %885
  %887 = load ptr, ptr %30, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.15, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %78, ptr noundef %54, ptr noundef %881, ptr noundef %882, ptr noundef %886, ptr noundef %887, ptr noundef %56)
  %888 = load ptr, ptr %26, align 8, !tbaa !5
  %889 = load ptr, ptr %33, align 8, !tbaa !5
  %890 = getelementptr inbounds %struct.complex, ptr %889, i64 1
  %891 = load ptr, ptr %26, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %78, ptr noundef %54, ptr noundef %888, ptr noundef @c__1, ptr noundef %890, ptr noundef %891, ptr noundef %56)
  br label %892

892:                                              ; preds = %880, %877
  %893 = load i32, ptr %80, align 4, !tbaa !9
  %894 = icmp ne i32 %893, 0
  br i1 %894, label %895, label %937

895:                                              ; preds = %892
  store i32 1, ptr %77, align 4, !tbaa !9
  %896 = load ptr, ptr %31, align 8, !tbaa !5
  store i32 0, ptr %896, align 4, !tbaa !9
  %897 = load ptr, ptr %26, align 8, !tbaa !5
  %898 = load i32, ptr %897, align 4, !tbaa !9
  store i32 %898, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %61, align 4, !tbaa !9
  br label %899

899:                                              ; preds = %933, %895
  %900 = load i32, ptr %61, align 4, !tbaa !9
  %901 = load i32, ptr %51, align 4, !tbaa !9
  %902 = icmp sle i32 %900, %901
  br i1 %902, label %903, label %936

903:                                              ; preds = %899
  %904 = load ptr, ptr %25, align 8, !tbaa !5
  %905 = load ptr, ptr %32, align 8, !tbaa !5
  %906 = load i32, ptr %61, align 4, !tbaa !9
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds %struct.complex, ptr %905, i64 %907
  %909 = load ptr, ptr %33, align 8, !tbaa !5
  %910 = load i32, ptr %61, align 4, !tbaa !9
  %911 = sext i32 %910 to i64
  %912 = getelementptr inbounds %struct.complex, ptr %909, i64 %911
  %913 = call i32 (ptr, ptr, ...) %904(ptr noundef %908, ptr noundef %912)
  store i32 %913, ptr %64, align 4, !tbaa !9
  %914 = load i32, ptr %64, align 4, !tbaa !9
  %915 = icmp ne i32 %914, 0
  br i1 %915, label %916, label %920

916:                                              ; preds = %903
  %917 = load ptr, ptr %31, align 8, !tbaa !5
  %918 = load i32, ptr %917, align 4, !tbaa !9
  %919 = add nsw i32 %918, 1
  store i32 %919, ptr %917, align 4, !tbaa !9
  br label %920

920:                                              ; preds = %916, %903
  %921 = load i32, ptr %64, align 4, !tbaa !9
  %922 = icmp ne i32 %921, 0
  br i1 %922, label %923, label %931

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

926:                                              ; preds = %923
  %927 = load ptr, ptr %26, align 8, !tbaa !5
  %928 = load i32, ptr %927, align 4, !tbaa !9
  %929 = add nsw i32 %928, 2
  %930 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %929, ptr %930, align 4, !tbaa !9
  br label %931

931:                                              ; preds = %926, %923, %920
  %932 = load i32, ptr %64, align 4, !tbaa !9
  store i32 %932, ptr %77, align 4, !tbaa !9
  br label %933

933:                                              ; preds = %931
  %934 = load i32, ptr %61, align 4, !tbaa !9
  %935 = add nsw i32 %934, 1
  store i32 %935, ptr %61, align 4, !tbaa !9
  br label %899, !llvm.loop !18

936:                                              ; preds = %899
  br label %937

937:                                              ; preds = %936, %892
  br label %938

938:                                              ; preds = %937, %731
  %939 = load i32, ptr %82, align 4, !tbaa !9
  %940 = sitofp i32 %939 to float
  %941 = load ptr, ptr %38, align 8, !tbaa !5
  %942 = getelementptr inbounds %struct.complex, ptr %941, i64 1
  %943 = getelementptr inbounds %struct.complex, ptr %942, i32 0, i32 0
  store float %940, ptr %943, align 4, !tbaa !11
  %944 = load ptr, ptr %38, align 8, !tbaa !5
  %945 = getelementptr inbounds %struct.complex, ptr %944, i64 1
  %946 = getelementptr inbounds %struct.complex, ptr %945, i32 0, i32 1
  store float 0.000000e+00, ptr %946, align 4, !tbaa !14
  store i32 1, ptr %87, align 4
  br label %947

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

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

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

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

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

declare float @slamch_(ptr noundef) #2

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

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

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

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

declare void @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 void @cgeqrf_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @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 void @claset_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

declare void @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 void @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 void @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 void @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 = !{!"int", !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 i32, align 4
@.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 i32, align 4
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.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 void @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 i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca float, align 4
  %25 = alloca float, align 4
  %26 = alloca [1 x i32], align 4
  %27 = alloca i32, align 4
  %28 = alloca float, align 4
  %29 = alloca float, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca float, align 4
  %35 = alloca float, align 4
  %36 = alloca float, align 4
  %37 = alloca float, align 4
  %38 = alloca [2 x float], align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %36) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %39) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %40) #5
  %41 = load i32, ptr %6, align 4, !tbaa !5
  %narrow = xor i32 %41, -1
  %42 = sext i32 %narrow to i64
  %43 = getelementptr inbounds %struct.complex, ptr %5, i64 %42
  %44 = load i32, ptr %8, align 4, !tbaa !5
  %narrow353 = xor i32 %44, -1
  %45 = sext i32 %narrow353 to i64
  %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 i32, ptr %13, align 4, !tbaa !5
  %narrow357 = xor i32 %49, -1
  %50 = sext i32 %narrow357 to i64
  %51 = getelementptr inbounds %struct.complex, ptr %12, i64 %50
  %52 = getelementptr inbounds i8, ptr %16, i64 -8
  %53 = getelementptr inbounds i8, ptr %18, i64 -4
  %54 = getelementptr inbounds i8, ptr %19, i64 -4
  %55 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %.not = icmp eq i32 %55, 0
  br i1 %.not, label %57, label %56

56:                                               ; preds = %21
  store i32 0, ptr %31, align 4, !tbaa !5
  br label %61

57:                                               ; preds = %21
  %58 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not340 = icmp eq i32 %58, 0
  br i1 %.not340, label %60, label %59

59:                                               ; preds = %57
  store i32 1, ptr %31, align 4, !tbaa !5
  br label %61

60:                                               ; preds = %57
  store i32 0, ptr %31, align 4, !tbaa !5
  br label %61

61:                                               ; preds = %59, %60, %56
  %.not345 = phi i1 [ false, %56 ], [ true, %59 ], [ false, %60 ]
  %.not349 = phi i1 [ true, %56 ], [ false, %59 ], [ true, %60 ]
  %62 = phi i1 [ false, %56 ], [ false, %59 ], [ true, %60 ]
  %63 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #5
  %.not341 = icmp eq i32 %63, 0
  br i1 %.not341, label %65, label %64

64:                                               ; preds = %61
  store i32 0, ptr %32, align 4, !tbaa !5
  br label %69

65:                                               ; preds = %61
  %66 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %.not342 = icmp eq i32 %66, 0
  br i1 %.not342, label %68, label %67

67:                                               ; preds = %65
  store i32 1, ptr %32, align 4, !tbaa !5
  br label %69

68:                                               ; preds = %65
  store i32 0, ptr %32, align 4, !tbaa !5
  br label %69

69:                                               ; preds = %67, %68, %64
  %.not346 = phi i1 [ false, %64 ], [ true, %67 ], [ false, %68 ]
  %.not356 = phi i1 [ true, %64 ], [ false, %67 ], [ true, %68 ]
  %70 = phi i1 [ false, %64 ], [ false, %67 ], [ true, %68 ]
  %71 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #5
  store i32 0, ptr %20, align 4, !tbaa !5
  %72 = load i32, ptr %17, align 4, !tbaa !5
  %73 = icmp eq i32 %72, -1
  %brmerge = or i1 %62, %70
  %.mux = select i1 %62, i32 -1, i32 -2
  br i1 %brmerge, label %.thread373.sink.split, label %74

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

75:                                               ; preds = %74
  %76 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str) #5
  %.not344 = icmp eq i32 %76, 0
  br i1 %.not344, label %.thread373.sink.split, label %77

77:                                               ; preds = %75, %74
  %78 = load i32, ptr %4, align 4, !tbaa !5
  %79 = icmp slt i32 %78, 0
  br i1 %79, label %.thread373.sink.split, label %80

80:                                               ; preds = %77
  %81 = load i32, ptr %6, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %78, i32 1)
  %82 = icmp slt i32 %81, %spec.select
  br i1 %82, label %.thread373.sink.split, label %83

83:                                               ; preds = %80
  %84 = load i32, ptr %8, align 4, !tbaa !5
  %85 = icmp slt i32 %84, %spec.select
  br i1 %85, label %.thread373.sink.split, label %86

86:                                               ; preds = %83
  %87 = load i32, ptr %13, align 4, !tbaa !5
  %88 = icmp slt i32 %87, 1
  %89 = icmp ult i32 %87, %78
  %or.cond391 = and i1 %89, %.not345
  %or.cond410 = or i1 %88, %or.cond391
  br i1 %or.cond410, label %.thread373.sink.split, label %90

90:                                               ; preds = %86
  %91 = load i32, ptr %15, align 4, !tbaa !5
  %92 = icmp slt i32 %91, 1
  %93 = icmp ult i32 %91, %78
  %or.cond392 = and i1 %93, %.not346
  %or.cond411 = or i1 %92, %or.cond392
  br i1 %or.cond411, label %.thread373.sink.split, label %94

94:                                               ; preds = %90
  %.pr = load i32, ptr %20, align 4, !tbaa !5
  %95 = icmp eq i32 %.pr, 0
  br i1 %95, label %96, label %.thread373

96:                                               ; preds = %94
  %97 = shl nuw i32 %78, 1
  %98 = tail call i32 @llvm.smax.i32(i32 %97, i32 1)
  %99 = tail call i32 @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, i32 noundef 6, i32 noundef 1) #5
  %100 = add i32 %99, 1
  %101 = mul i32 %100, %78
  %102 = tail call i32 @llvm.smax.i32(i32 %101, i32 1)
  store i32 %102, ptr %22, align 4, !tbaa !5
  %103 = load i32, ptr %4, align 4, !tbaa !5
  %104 = tail call i32 @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, i32 noundef 6, i32 noundef 1) #5
  %105 = add i32 %104, 1
  %106 = mul i32 %105, %103
  store i32 %106, ptr %23, align 4, !tbaa !5
  %107 = tail call i32 @llvm.smax.i32(i32 %102, i32 %106)
  br i1 %.not349, label %114, label %108

108:                                              ; preds = %96
  store i32 %107, ptr %22, align 4, !tbaa !5
  %109 = load i32, ptr %4, align 4, !tbaa !5
  %110 = tail call i32 @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, i32 noundef 6, i32 noundef 1) #5
  %111 = add i32 %110, 1
  %112 = mul i32 %111, %109
  store i32 %112, ptr %23, align 4, !tbaa !5
  %113 = tail call i32 @llvm.smax.i32(i32 %107, i32 %112)
  br label %114

114:                                              ; preds = %108, %96
  %.0 = phi i32 [ %113, %108 ], [ %107, %96 ]
  %115 = uitofp nneg i32 %.0 to float
  store float %115, ptr %16, align 4, !tbaa !9
  %116 = getelementptr inbounds i8, ptr %16, i64 4
  store float 0.000000e+00, ptr %116, align 4, !tbaa !12
  %117 = load i32, ptr %17, align 4, !tbaa !5
  %118 = icmp sge i32 %117, %98
  %or.cond = select i1 %118, i1 true, i1 %73
  br i1 %or.cond, label %.thread, label %.thread373.sink.split

.thread:                                          ; preds = %114
  %.pr370.pr = load i32, ptr %20, align 4, !tbaa !5
  %.not351 = icmp eq i32 %.pr370.pr, 0
  br i1 %.not351, label %122, label %.thread373

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

.thread373:                                       ; preds = %.thread373.sink.split, %94, %.thread
  %119 = phi i32 [ %.pr370.pr, %.thread ], [ %.pr, %94 ], [ %.sink, %.thread373.sink.split ]
  %120 = sub nsw i32 0, %119
  store i32 %120, ptr %22, align 4, !tbaa !5
  %121 = call i32 @xerbla_(ptr noundef nonnull @.str.7, ptr noundef nonnull %22, i32 noundef 6) #5
  br label %268

122:                                              ; preds = %.thread
  br i1 %73, label %268, label %123

123:                                              ; preds = %122
  %124 = load i32, ptr %4, align 4, !tbaa !5
  %125 = icmp eq i32 %124, 0
  br i1 %125, label %126, label %127

126:                                              ; preds = %123
  store i32 0, ptr %9, align 4, !tbaa !5
  br label %268

127:                                              ; preds = %123
  %128 = tail call float @slamch_(ptr noundef nonnull @.str.8) #5
  %129 = tail call float @slamch_(ptr noundef nonnull @.str.2) #5
  store float %129, ptr %37, align 4, !tbaa !13
  %130 = fdiv float 1.000000e+00, %129
  store float %130, ptr %34, align 4, !tbaa !13
  call void @slabad_(ptr noundef nonnull %37, ptr noundef nonnull %34) #5
  %131 = load float, ptr %37, align 4, !tbaa !13
  %132 = fpext float %131 to double
  %133 = call double @sqrt(double noundef %132) #5
  %134 = fpext float %128 to double
  %135 = fdiv double %133, %134
  %136 = fptrunc double %135 to float
  store float %136, ptr %37, align 4, !tbaa !13
  %137 = fdiv float 1.000000e+00, %136
  store float %137, ptr %34, align 4, !tbaa !13
  %138 = call float @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
  store float %138, ptr %24, align 4, !tbaa !13
  %139 = fcmp ogt float %138, 0.000000e+00
  %140 = load float, ptr %37, align 4
  %141 = fcmp olt float %138, %140
  %or.cond395 = select i1 %139, i1 %141, i1 false
  br i1 %or.cond395, label %145, label %142

142:                                              ; preds = %127
  %143 = load float, ptr %34, align 4, !tbaa !13
  %144 = fcmp ogt float %138, %143
  br i1 %144, label %145, label %146

145:                                              ; preds = %127, %142
  %storemerge = phi float [ %143, %142 ], [ %140, %127 ]
  store float %storemerge, ptr %35, align 4, !tbaa !13
  call void @clascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %24, ptr noundef nonnull %35, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %27) #5
  br label %146

146:                                              ; preds = %142, %145
  %.not352380 = phi i1 [ false, %145 ], [ true, %142 ]
  %147 = call float @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
  store float %147, ptr %25, align 4, !tbaa !13
  %148 = fcmp ogt float %147, 0.000000e+00
  %149 = load float, ptr %37, align 4
  %150 = fcmp olt float %147, %149
  %or.cond397 = select i1 %148, i1 %150, i1 false
  br i1 %or.cond397, label %154, label %151

151:                                              ; preds = %146
  %152 = load float, ptr %34, align 4, !tbaa !13
  %153 = fcmp ogt float %147, %152
  br i1 %153, label %154, label %155

154:                                              ; preds = %146, %151
  %storemerge393 = phi float [ %152, %151 ], [ %149, %146 ]
  store float %storemerge393, ptr %36, align 4, !tbaa !13
  call void @clascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %25, ptr noundef nonnull %36, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %27) #5
  br label %155

155:                                              ; preds = %151, %154
  %.not354385 = phi i1 [ false, %154 ], [ true, %151 ]
  %156 = load i32, ptr %4, align 4, !tbaa !5
  %157 = add nsw i32 %156, 1
  %158 = add nsw i32 %157, %156
  %159 = sext i32 %157 to i64
  %160 = getelementptr inbounds float, ptr %53, i64 %159
  %161 = sext i32 %158 to i64
  %162 = getelementptr inbounds float, ptr %53, i64 %161
  call void @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 %40, ptr noundef nonnull %39, ptr noundef %18, ptr noundef nonnull %160, ptr noundef nonnull %162, ptr noundef nonnull %27) #5
  %163 = load i32, ptr %39, align 4, !tbaa !5
  %164 = add nsw i32 %163, 1
  %165 = load i32, ptr %40, align 4, !tbaa !5
  %166 = sub i32 %164, %165
  store i32 %166, ptr %33, align 4, !tbaa !5
  %167 = load i32, ptr %4, align 4, !tbaa !5
  %reass.sub = sub i32 %167, %165
  %168 = add i32 %reass.sub, 1
  store i32 %168, ptr %30, align 4, !tbaa !5
  %169 = load i32, ptr %17, align 4, !tbaa !5
  %170 = sub i32 %169, %166
  store i32 %170, ptr %22, align 4, !tbaa !5
  %171 = add i32 %44, 1
  %172 = mul i32 %165, %171
  %173 = sext i32 %172 to i64
  %174 = getelementptr inbounds %struct.complex, ptr %46, i64 %173
  %175 = sext i32 %166 to i64
  %176 = getelementptr %struct.complex, ptr %52, i64 %175
  %177 = getelementptr i8, ptr %176, i64 8
  call void @cgeqrf_(ptr noundef nonnull %33, ptr noundef nonnull %30, ptr noundef %174, ptr noundef nonnull %8, ptr noundef nonnull %16, ptr noundef nonnull %177, ptr noundef nonnull %22, ptr noundef nonnull %27) #5
  %178 = load i32, ptr %17, align 4, !tbaa !5
  %179 = sub i32 %178, %166
  store i32 %179, ptr %22, align 4, !tbaa !5
  %180 = load i32, ptr %40, align 4, !tbaa !5
  %181 = mul i32 %180, %171
  %182 = sext i32 %181 to i64
  %183 = getelementptr inbounds %struct.complex, ptr %46, i64 %182
  %184 = add i32 %41, 1
  %185 = mul i32 %180, %184
  %186 = sext i32 %185 to i64
  %187 = getelementptr inbounds %struct.complex, ptr %43, i64 %186
  call void @cunmqr_(ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.12, ptr noundef nonnull %33, ptr noundef nonnull %30, ptr noundef nonnull %33, ptr noundef %183, ptr noundef nonnull %8, ptr noundef nonnull %16, ptr noundef %187, ptr noundef nonnull %6, ptr noundef nonnull %177, ptr noundef nonnull %22, ptr noundef nonnull %27) #5
  br i1 %.not349, label %211, label %188

188:                                              ; preds = %155
  call void @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 i32, ptr %33, align 4, !tbaa !5
  %190 = icmp sgt i32 %189, 1
  br i1 %190, label %191, label %203

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

203:                                              ; preds = %191, %188
  %204 = load i32, ptr %17, align 4, !tbaa !5
  %205 = sub i32 %204, %166
  store i32 %205, ptr %22, align 4, !tbaa !5
  %206 = load i32, ptr %40, align 4, !tbaa !5
  %207 = add i32 %49, 1
  %208 = mul i32 %206, %207
  %209 = sext i32 %208 to i64
  %210 = getelementptr inbounds %struct.complex, ptr %51, i64 %209
  call void @cungqr_(ptr noundef nonnull %33, ptr noundef nonnull %33, ptr noundef nonnull %33, ptr noundef %210, ptr noundef nonnull %13, ptr noundef nonnull %16, ptr noundef nonnull %177, ptr noundef nonnull %22, ptr noundef nonnull %27) #5
  br label %211

211:                                              ; preds = %203, %155
  br i1 %.not356, label %213, label %212

212:                                              ; preds = %211
  call void @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 = %212, %211
  call void @cgghrd_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %4, ptr noundef nonnull %40, ptr noundef nonnull %39, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %27) #5
  store i32 0, ptr %9, align 4, !tbaa !5
  %214 = load i32, ptr %17, align 4, !tbaa !5
  store i32 %214, ptr %22, align 4, !tbaa !5
  call void @chgeqz_(ptr noundef nonnull @.str.2, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %4, ptr noundef nonnull %40, ptr noundef nonnull %39, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %22, ptr noundef nonnull %162, ptr noundef nonnull %27) #5
  %215 = load i32, ptr %27, align 4, !tbaa !5
  %.not358 = icmp eq i32 %215, 0
  br i1 %.not358, label %225, label %216

216:                                              ; preds = %213
  %217 = icmp slt i32 %215, 1
  %.pre = load i32, ptr %4, align 4, !tbaa !5
  %.not365 = icmp sgt i32 %215, %.pre
  %or.cond412 = select i1 %217, i1 true, i1 %.not365
  br i1 %or.cond412, label %218, label %.loopexit.sink.split

218:                                              ; preds = %216
  %219 = icmp sle i32 %215, %.pre
  %220 = shl i32 %.pre, 1
  %.not366 = icmp sgt i32 %215, %220
  %or.cond368 = or i1 %219, %.not366
  br i1 %or.cond368, label %223, label %221

221:                                              ; preds = %218
  %222 = sub nsw i32 %215, %.pre
  br label %.loopexit.sink.split

223:                                              ; preds = %218
  %224 = add nsw i32 %.pre, 1
  br label %.loopexit.sink.split

225:                                              ; preds = %213
  br i1 %.not343, label %244, label %226

226:                                              ; preds = %225
  br i1 %.not352380, label %228, label %227

227:                                              ; preds = %226
  call void @clascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %24, ptr noundef nonnull %35, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %10, ptr noundef nonnull %4, ptr noundef nonnull %27) #5
  br label %228

228:                                              ; preds = %227, %226
  br i1 %.not354385, label %230, label %229

229:                                              ; preds = %228
  call void @clascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %25, ptr noundef nonnull %36, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull %4, ptr noundef nonnull %27) #5
  br label %230

230:                                              ; preds = %229, %228
  %231 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %231, ptr %22, align 4, !tbaa !5
  %.not360398 = icmp slt i32 %231, 1
  br i1 %.not360398, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %230, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 1, %230 ]
  %232 = getelementptr inbounds %struct.complex, ptr %47, i64 %indvars.iv
  %233 = getelementptr inbounds %struct.complex, ptr %48, i64 %indvars.iv
  %234 = call i32 (ptr, ptr, ...) %3(ptr noundef nonnull %232, ptr noundef nonnull %233) #5
  %235 = getelementptr inbounds i32, ptr %54, i64 %indvars.iv
  store i32 %234, ptr %235, align 4, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %236 = load i32, ptr %22, align 4, !tbaa !5
  %237 = sext i32 %236 to i64
  %.not360.not = icmp slt i64 %indvars.iv, %237
  br i1 %.not360.not, label %.lr.ph, label %._crit_edge, !llvm.loop !14

._crit_edge:                                      ; preds = %.lr.ph, %230
  %238 = load i32, ptr %17, align 4, !tbaa !5
  store i32 %238, ptr %22, align 4, !tbaa !5
  call void @ctgsen_(ptr noundef nonnull @c__0, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef %19, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %9, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef nonnull %38, ptr noundef nonnull %16, ptr noundef nonnull %22, ptr noundef nonnull %26, ptr noundef nonnull @c__1, ptr noundef nonnull %27) #5
  %239 = load i32, ptr %27, align 4, !tbaa !5
  %240 = icmp eq i32 %239, 1
  br i1 %240, label %241, label %244

241:                                              ; preds = %._crit_edge
  %242 = load i32, ptr %4, align 4, !tbaa !5
  %243 = add nsw i32 %242, 3
  store i32 %243, ptr %20, align 4, !tbaa !5
  br label %244

244:                                              ; preds = %._crit_edge, %241, %225
  %245 = load i32, ptr %31, align 4, !tbaa !5
  %.not361 = icmp eq i32 %245, 0
  br i1 %.not361, label %247, label %246

246:                                              ; preds = %244
  call void @cggbak_(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.11, ptr noundef nonnull %4, ptr noundef nonnull %40, ptr noundef nonnull %39, ptr noundef %18, ptr noundef nonnull %160, ptr noundef nonnull %4, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %27) #5
  br label %247

247:                                              ; preds = %246, %244
  %248 = load i32, ptr %32, align 4, !tbaa !5
  %.not362 = icmp eq i32 %248, 0
  br i1 %.not362, label %250, label %249

249:                                              ; preds = %247
  call void @cggbak_(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.14, ptr noundef nonnull %4, ptr noundef nonnull %40, ptr noundef nonnull %39, ptr noundef %18, ptr noundef nonnull %160, ptr noundef nonnull %4, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %27) #5
  br label %250

250:                                              ; preds = %249, %247
  br i1 %.not352380, label %252, label %251

251:                                              ; preds = %250
  call void @clascl_(ptr noundef nonnull @.str.15, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %35, ptr noundef nonnull %24, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %27) #5
  call void @clascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %35, ptr noundef nonnull %24, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %10, ptr noundef nonnull %4, ptr noundef nonnull %27) #5
  br label %252

252:                                              ; preds = %251, %250
  br i1 %.not354385, label %254, label %253

253:                                              ; preds = %252
  call void @clascl_(ptr noundef nonnull @.str.15, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %36, ptr noundef nonnull %25, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %27) #5
  call void @clascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %36, ptr noundef nonnull %25, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull %4, ptr noundef nonnull %27) #5
  br label %254

254:                                              ; preds = %253, %252
  br i1 %.not343, label %.loopexit, label %255

255:                                              ; preds = %254
  store i32 0, ptr %9, align 4, !tbaa !5
  %256 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %256, ptr %22, align 4, !tbaa !5
  %.not363400 = icmp slt i32 %256, 1
  br i1 %.not363400, label %.loopexit, label %.lr.ph404

.lr.ph404:                                        ; preds = %255, %.thread386
  %indvars.iv407 = phi i64 [ %indvars.iv.next408, %.thread386 ], [ 1, %255 ]
  %.0318402 = phi i32 [ %259, %.thread386 ], [ 1, %255 ]
  %257 = getelementptr inbounds %struct.complex, ptr %47, i64 %indvars.iv407
  %258 = getelementptr inbounds %struct.complex, ptr %48, i64 %indvars.iv407
  %259 = call i32 (ptr, ptr, ...) %3(ptr noundef nonnull %257, ptr noundef nonnull %258) #5
  %.not364 = icmp eq i32 %259, 0
  br i1 %.not364, label %.thread386, label %260

260:                                              ; preds = %.lr.ph404
  %261 = load i32, ptr %9, align 4, !tbaa !5
  %262 = add nsw i32 %261, 1
  store i32 %262, ptr %9, align 4, !tbaa !5
  %.not405 = icmp eq i32 %.0318402, 0
  br i1 %.not405, label %263, label %.thread386

263:                                              ; preds = %260
  %264 = load i32, ptr %4, align 4, !tbaa !5
  %265 = add nsw i32 %264, 2
  store i32 %265, ptr %20, align 4, !tbaa !5
  br label %.thread386

.thread386:                                       ; preds = %.lr.ph404, %263, %260
  %indvars.iv.next408 = add nuw nsw i64 %indvars.iv407, 1
  %266 = load i32, ptr %22, align 4, !tbaa !5
  %267 = sext i32 %266 to i64
  %.not363.not = icmp slt i64 %indvars.iv407, %267
  br i1 %.not363.not, label %.lr.ph404, label %.loopexit, !llvm.loop !16

.loopexit.sink.split:                             ; preds = %216, %221, %223
  %.sink413 = phi i32 [ %224, %223 ], [ %222, %221 ], [ %215, %216 ]
  store i32 %.sink413, ptr %20, align 4, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.thread386, %.loopexit.sink.split, %255, %254
  store float %115, ptr %16, align 4, !tbaa !9
  store float 0.000000e+00, ptr %116, align 4, !tbaa !12
  br label %268

268:                                              ; preds = %122, %.loopexit, %126, %.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 8, ptr nonnull %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #5
  ret void
}

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

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

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

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

declare float @slamch_(ptr noundef) local_unnamed_addr #2

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

declare void @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 void @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 void @cgeqrf_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @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 void @claset_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"", !11, i64 0, !11, i64 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,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass