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

; 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_n1 = external hidden global i32, align 4
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@c__0 = external hidden global i32, align 4
@.str.5 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b1 = external hidden global %struct.complex, align 4
@c_b2 = external hidden global %struct.complex, align 4
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @cgges3_(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 %struct.complex, align 4
  %54 = alloca float, align 4
  %55 = alloca float, align 4
  %56 = alloca [1 x i32], align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca float, align 4
  %61 = alloca float, 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 i32, align 4
  %72 = alloca float, align 4
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca float, align 4
  %77 = alloca float, align 4
  %78 = alloca i32, 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 8, 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 %73, align 4, !tbaa !9
  store i32 0, ptr %66, 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 %73, align 4, !tbaa !9
  store i32 1, ptr %66, align 4, !tbaa !9
  br label %148

147:                                              ; preds = %142
  store i32 -1, ptr %73, align 4, !tbaa !9
  store i32 0, ptr %66, 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 %75, align 4, !tbaa !9
  store i32 0, ptr %67, 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 %75, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %160

159:                                              ; preds = %154
  store i32 -1, ptr %75, align 4, !tbaa !9
  store i32 0, ptr %67, 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 %73, 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 %282

173:                                              ; preds = %161
  %174 = load i32, ptr %75, 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 %281

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 %280

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 %279

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 %278

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 %277

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 %66, 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 %276

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 %67, 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 %275

253:                                              ; preds = %245, %242
  store i32 1, ptr %51, align 4, !tbaa !9
  %254 = load ptr, ptr %26, align 8, !tbaa !5
  %255 = load i32, ptr %254, align 4, !tbaa !9
  %256 = shl i32 %255, 1
  store i32 %256, ptr %52, align 4, !tbaa !9
  %257 = load ptr, ptr %39, align 8, !tbaa !5
  %258 = load i32, ptr %257, align 4, !tbaa !9
  %259 = load i32, ptr %51, align 4, !tbaa !9
  %260 = load i32, ptr %52, align 4, !tbaa !9
  %261 = icmp sge i32 %259, %260
  br i1 %261, label %262, label %264

262:                                              ; preds = %253
  %263 = load i32, ptr %51, align 4, !tbaa !9
  br label %266

264:                                              ; preds = %253
  %265 = load i32, ptr %52, align 4, !tbaa !9
  br label %266

266:                                              ; preds = %264, %262
  %267 = phi i32 [ %263, %262 ], [ %265, %264 ]
  %268 = icmp slt i32 %258, %267
  br i1 %268, label %269, label %274

269:                                              ; preds = %266
  %270 = load i32, ptr %81, align 4, !tbaa !9
  %271 = icmp ne i32 %270, 0
  br i1 %271, label %274, label %272

272:                                              ; preds = %269
  %273 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -18, ptr %273, align 4, !tbaa !9
  br label %274

274:                                              ; preds = %272, %269, %266
  br label %275

275:                                              ; preds = %274, %251
  br label %276

276:                                              ; preds = %275, %236
  br label %277

277:                                              ; preds = %276, %221
  br label %278

278:                                              ; preds = %277, %206
  br label %279

279:                                              ; preds = %278, %191
  br label %280

280:                                              ; preds = %279, %185
  br label %281

281:                                              ; preds = %280, %176
  br label %282

282:                                              ; preds = %281, %171
  %283 = load ptr, ptr %42, align 8, !tbaa !5
  %284 = load i32, ptr %283, align 4, !tbaa !9
  %285 = icmp eq i32 %284, 0
  br i1 %285, label %286, label %540

286:                                              ; preds = %282
  %287 = load ptr, ptr %26, align 8, !tbaa !5
  %288 = load ptr, ptr %26, align 8, !tbaa !5
  %289 = load ptr, ptr %29, align 8, !tbaa !5
  %290 = load i32, ptr %46, align 4, !tbaa !9
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds %struct.complex, ptr %289, i64 %291
  %293 = load ptr, ptr %30, align 8, !tbaa !5
  %294 = load ptr, ptr %38, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.complex, ptr %294, i64 1
  %296 = load ptr, ptr %38, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.complex, ptr %296, i64 1
  call void @cgeqrf_(ptr noundef %287, ptr noundef %288, ptr noundef %292, ptr noundef %293, ptr noundef %295, ptr noundef %297, ptr noundef @c_n1, ptr noundef %57)
  store i32 1, ptr %51, 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 %38, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.complex, ptr %300, i64 1
  %302 = getelementptr inbounds %struct.complex, ptr %301, i32 0, i32 0
  %303 = load float, ptr %302, align 4, !tbaa !11
  %304 = fptosi float %303 to i32
  %305 = add nsw i32 %299, %304
  store i32 %305, ptr %52, align 4, !tbaa !9
  %306 = load i32, ptr %51, align 4, !tbaa !9
  %307 = load i32, ptr %52, align 4, !tbaa !9
  %308 = icmp sge i32 %306, %307
  br i1 %308, label %309, label %311

309:                                              ; preds = %286
  %310 = load i32, ptr %51, align 4, !tbaa !9
  br label %313

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

313:                                              ; preds = %311, %309
  %314 = phi i32 [ %310, %309 ], [ %312, %311 ]
  store i32 %314, ptr %82, align 4, !tbaa !9
  %315 = load ptr, ptr %26, align 8, !tbaa !5
  %316 = load ptr, ptr %26, align 8, !tbaa !5
  %317 = load ptr, ptr %26, align 8, !tbaa !5
  %318 = load ptr, ptr %29, align 8, !tbaa !5
  %319 = load i32, ptr %46, align 4, !tbaa !9
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds %struct.complex, ptr %318, i64 %320
  %322 = load ptr, ptr %30, align 8, !tbaa !5
  %323 = load ptr, ptr %38, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct.complex, ptr %323, i64 1
  %325 = load ptr, ptr %27, align 8, !tbaa !5
  %326 = load i32, ptr %44, align 4, !tbaa !9
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds %struct.complex, ptr %325, i64 %327
  %329 = load ptr, ptr %28, align 8, !tbaa !5
  %330 = load ptr, ptr %38, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.complex, ptr %330, i64 1
  call void @cunmqr_(ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %315, ptr noundef %316, ptr noundef %317, ptr noundef %321, ptr noundef %322, ptr noundef %324, ptr noundef %328, ptr noundef %329, ptr noundef %331, ptr noundef @c_n1, ptr noundef %57)
  %332 = load i32, ptr %82, align 4, !tbaa !9
  store i32 %332, ptr %51, align 4, !tbaa !9
  %333 = load ptr, ptr %26, align 8, !tbaa !5
  %334 = load i32, ptr %333, align 4, !tbaa !9
  %335 = load ptr, ptr %38, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.complex, ptr %335, i64 1
  %337 = getelementptr inbounds %struct.complex, ptr %336, i32 0, i32 0
  %338 = load float, ptr %337, align 4, !tbaa !11
  %339 = fptosi float %338 to i32
  %340 = add nsw i32 %334, %339
  store i32 %340, ptr %52, align 4, !tbaa !9
  %341 = load i32, ptr %51, align 4, !tbaa !9
  %342 = load i32, ptr %52, align 4, !tbaa !9
  %343 = icmp sge i32 %341, %342
  br i1 %343, label %344, label %346

344:                                              ; preds = %313
  %345 = load i32, ptr %51, align 4, !tbaa !9
  br label %348

346:                                              ; preds = %313
  %347 = load i32, ptr %52, align 4, !tbaa !9
  br label %348

348:                                              ; preds = %346, %344
  %349 = phi i32 [ %345, %344 ], [ %347, %346 ]
  store i32 %349, ptr %82, align 4, !tbaa !9
  %350 = load i32, ptr %66, align 4, !tbaa !9
  %351 = icmp ne i32 %350, 0
  br i1 %351, label %352, label %383

352:                                              ; preds = %348
  %353 = load ptr, ptr %26, align 8, !tbaa !5
  %354 = load ptr, ptr %26, align 8, !tbaa !5
  %355 = load ptr, ptr %26, align 8, !tbaa !5
  %356 = load ptr, ptr %34, align 8, !tbaa !5
  %357 = load i32, ptr %48, align 4, !tbaa !9
  %358 = sext i32 %357 to i64
  %359 = getelementptr inbounds %struct.complex, ptr %356, i64 %358
  %360 = load ptr, ptr %35, align 8, !tbaa !5
  %361 = load ptr, ptr %38, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.complex, ptr %361, i64 1
  %363 = load ptr, ptr %38, align 8, !tbaa !5
  %364 = getelementptr inbounds %struct.complex, ptr %363, i64 1
  call void @cungqr_(ptr noundef %353, ptr noundef %354, ptr noundef %355, ptr noundef %359, ptr noundef %360, ptr noundef %362, ptr noundef %364, ptr noundef @c_n1, ptr noundef %57)
  %365 = load i32, ptr %82, align 4, !tbaa !9
  store i32 %365, ptr %51, align 4, !tbaa !9
  %366 = load ptr, ptr %26, align 8, !tbaa !5
  %367 = load i32, ptr %366, align 4, !tbaa !9
  %368 = load ptr, ptr %38, align 8, !tbaa !5
  %369 = getelementptr inbounds %struct.complex, ptr %368, i64 1
  %370 = getelementptr inbounds %struct.complex, ptr %369, i32 0, i32 0
  %371 = load float, ptr %370, align 4, !tbaa !11
  %372 = fptosi float %371 to i32
  %373 = add nsw i32 %367, %372
  store i32 %373, ptr %52, align 4, !tbaa !9
  %374 = load i32, ptr %51, align 4, !tbaa !9
  %375 = load i32, ptr %52, align 4, !tbaa !9
  %376 = icmp sge i32 %374, %375
  br i1 %376, label %377, label %379

377:                                              ; preds = %352
  %378 = load i32, ptr %51, align 4, !tbaa !9
  br label %381

379:                                              ; preds = %352
  %380 = load i32, ptr %52, align 4, !tbaa !9
  br label %381

381:                                              ; preds = %379, %377
  %382 = phi i32 [ %378, %377 ], [ %380, %379 ]
  store i32 %382, ptr %82, align 4, !tbaa !9
  br label %383

383:                                              ; preds = %381, %348
  %384 = load ptr, ptr %22, align 8, !tbaa !5
  %385 = load ptr, ptr %23, align 8, !tbaa !5
  %386 = load ptr, ptr %26, align 8, !tbaa !5
  %387 = load ptr, ptr %26, align 8, !tbaa !5
  %388 = load ptr, ptr %27, align 8, !tbaa !5
  %389 = load i32, ptr %44, align 4, !tbaa !9
  %390 = sext i32 %389 to i64
  %391 = getelementptr inbounds %struct.complex, ptr %388, i64 %390
  %392 = load ptr, ptr %28, align 8, !tbaa !5
  %393 = load ptr, ptr %29, align 8, !tbaa !5
  %394 = load i32, ptr %46, align 4, !tbaa !9
  %395 = sext i32 %394 to i64
  %396 = getelementptr inbounds %struct.complex, ptr %393, i64 %395
  %397 = load ptr, ptr %30, align 8, !tbaa !5
  %398 = load ptr, ptr %34, align 8, !tbaa !5
  %399 = load i32, ptr %48, align 4, !tbaa !9
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds %struct.complex, ptr %398, i64 %400
  %402 = load ptr, ptr %35, align 8, !tbaa !5
  %403 = load ptr, ptr %36, align 8, !tbaa !5
  %404 = load i32, ptr %50, align 4, !tbaa !9
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds %struct.complex, ptr %403, i64 %405
  %407 = load ptr, ptr %37, align 8, !tbaa !5
  %408 = load ptr, ptr %38, align 8, !tbaa !5
  %409 = getelementptr inbounds %struct.complex, ptr %408, i64 1
  call void @cgghd3_(ptr noundef %384, ptr noundef %385, ptr noundef %386, ptr noundef @c__1, ptr noundef %387, ptr noundef %391, ptr noundef %392, ptr noundef %396, ptr noundef %397, ptr noundef %401, ptr noundef %402, ptr noundef %406, ptr noundef %407, ptr noundef %409, ptr noundef @c_n1, ptr noundef %57)
  %410 = load i32, ptr %82, align 4, !tbaa !9
  store i32 %410, ptr %51, align 4, !tbaa !9
  %411 = load ptr, ptr %26, align 8, !tbaa !5
  %412 = load i32, ptr %411, align 4, !tbaa !9
  %413 = load ptr, ptr %38, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct.complex, ptr %413, i64 1
  %415 = getelementptr inbounds %struct.complex, ptr %414, i32 0, i32 0
  %416 = load float, ptr %415, align 4, !tbaa !11
  %417 = fptosi float %416 to i32
  %418 = add nsw i32 %412, %417
  store i32 %418, ptr %52, align 4, !tbaa !9
  %419 = load i32, ptr %51, align 4, !tbaa !9
  %420 = load i32, ptr %52, align 4, !tbaa !9
  %421 = icmp sge i32 %419, %420
  br i1 %421, label %422, label %424

422:                                              ; preds = %383
  %423 = load i32, ptr %51, align 4, !tbaa !9
  br label %426

424:                                              ; preds = %383
  %425 = load i32, ptr %52, align 4, !tbaa !9
  br label %426

426:                                              ; preds = %424, %422
  %427 = phi i32 [ %423, %422 ], [ %425, %424 ]
  store i32 %427, ptr %82, align 4, !tbaa !9
  %428 = load ptr, ptr %22, align 8, !tbaa !5
  %429 = load ptr, ptr %23, align 8, !tbaa !5
  %430 = load ptr, ptr %26, align 8, !tbaa !5
  %431 = load ptr, ptr %26, align 8, !tbaa !5
  %432 = load ptr, ptr %27, align 8, !tbaa !5
  %433 = load i32, ptr %44, align 4, !tbaa !9
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds %struct.complex, ptr %432, i64 %434
  %436 = load ptr, ptr %28, align 8, !tbaa !5
  %437 = load ptr, ptr %29, align 8, !tbaa !5
  %438 = load i32, ptr %46, align 4, !tbaa !9
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds %struct.complex, ptr %437, i64 %439
  %441 = load ptr, ptr %30, align 8, !tbaa !5
  %442 = load ptr, ptr %32, align 8, !tbaa !5
  %443 = getelementptr inbounds %struct.complex, ptr %442, i64 1
  %444 = load ptr, ptr %33, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.complex, ptr %444, i64 1
  %446 = load ptr, ptr %34, align 8, !tbaa !5
  %447 = load i32, ptr %48, align 4, !tbaa !9
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds %struct.complex, ptr %446, i64 %448
  %450 = load ptr, ptr %35, align 8, !tbaa !5
  %451 = load ptr, ptr %36, align 8, !tbaa !5
  %452 = load i32, ptr %50, align 4, !tbaa !9
  %453 = sext i32 %452 to i64
  %454 = getelementptr inbounds %struct.complex, ptr %451, i64 %453
  %455 = load ptr, ptr %37, align 8, !tbaa !5
  %456 = load ptr, ptr %38, align 8, !tbaa !5
  %457 = getelementptr inbounds %struct.complex, ptr %456, i64 1
  %458 = load ptr, ptr %40, align 8, !tbaa !5
  %459 = getelementptr inbounds float, ptr %458, i64 1
  call void @chgeqz_(ptr noundef @.str.2, ptr noundef %428, ptr noundef %429, ptr noundef %430, ptr noundef @c__1, ptr noundef %431, ptr noundef %435, ptr noundef %436, ptr noundef %440, ptr noundef %441, ptr noundef %443, ptr noundef %445, ptr noundef %449, ptr noundef %450, ptr noundef %454, ptr noundef %455, ptr noundef %457, ptr noundef @c_n1, ptr noundef %459, ptr noundef %57)
  %460 = load i32, ptr %82, align 4, !tbaa !9
  store i32 %460, ptr %51, align 4, !tbaa !9
  %461 = load ptr, ptr %38, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.complex, ptr %461, i64 1
  %463 = getelementptr inbounds %struct.complex, ptr %462, i32 0, i32 0
  %464 = load float, ptr %463, align 4, !tbaa !11
  %465 = fptosi float %464 to i32
  store i32 %465, ptr %52, align 4, !tbaa !9
  %466 = load i32, ptr %51, align 4, !tbaa !9
  %467 = load i32, ptr %52, align 4, !tbaa !9
  %468 = icmp sge i32 %466, %467
  br i1 %468, label %469, label %471

469:                                              ; preds = %426
  %470 = load i32, ptr %51, align 4, !tbaa !9
  br label %473

471:                                              ; preds = %426
  %472 = load i32, ptr %52, align 4, !tbaa !9
  br label %473

473:                                              ; preds = %471, %469
  %474 = phi i32 [ %470, %469 ], [ %472, %471 ]
  store i32 %474, ptr %82, align 4, !tbaa !9
  %475 = load i32, ptr %80, align 4, !tbaa !9
  %476 = icmp ne i32 %475, 0
  br i1 %476, label %477, label %525

477:                                              ; preds = %473
  %478 = load ptr, ptr %41, align 8, !tbaa !5
  %479 = getelementptr inbounds i32, ptr %478, i64 1
  %480 = load ptr, ptr %26, align 8, !tbaa !5
  %481 = load ptr, ptr %27, align 8, !tbaa !5
  %482 = load i32, ptr %44, align 4, !tbaa !9
  %483 = sext i32 %482 to i64
  %484 = getelementptr inbounds %struct.complex, ptr %481, i64 %483
  %485 = load ptr, ptr %28, align 8, !tbaa !5
  %486 = load ptr, ptr %29, align 8, !tbaa !5
  %487 = load i32, ptr %46, align 4, !tbaa !9
  %488 = sext i32 %487 to i64
  %489 = getelementptr inbounds %struct.complex, ptr %486, i64 %488
  %490 = load ptr, ptr %30, align 8, !tbaa !5
  %491 = load ptr, ptr %32, align 8, !tbaa !5
  %492 = getelementptr inbounds %struct.complex, ptr %491, i64 1
  %493 = load ptr, ptr %33, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct.complex, ptr %493, i64 1
  %495 = load ptr, ptr %34, align 8, !tbaa !5
  %496 = load i32, ptr %48, align 4, !tbaa !9
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds %struct.complex, ptr %495, i64 %497
  %499 = load ptr, ptr %35, align 8, !tbaa !5
  %500 = load ptr, ptr %36, align 8, !tbaa !5
  %501 = load i32, ptr %50, align 4, !tbaa !9
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds %struct.complex, ptr %500, i64 %502
  %504 = load ptr, ptr %37, align 8, !tbaa !5
  %505 = load ptr, ptr %31, align 8, !tbaa !5
  %506 = getelementptr inbounds [2 x float], ptr %83, i64 0, i64 0
  %507 = load ptr, ptr %38, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.complex, ptr %507, i64 1
  %509 = getelementptr inbounds [1 x i32], ptr %56, i64 0, i64 0
  call void @ctgsen_(ptr noundef @c__0, ptr noundef %66, ptr noundef %67, ptr noundef %479, ptr noundef %480, ptr noundef %484, ptr noundef %485, ptr noundef %489, ptr noundef %490, ptr noundef %492, ptr noundef %494, ptr noundef %498, ptr noundef %499, ptr noundef %503, ptr noundef %504, ptr noundef %505, ptr noundef %60, ptr noundef %61, ptr noundef %506, ptr noundef %508, ptr noundef @c_n1, ptr noundef %509, ptr noundef @c__1, ptr noundef %57)
  %510 = load i32, ptr %82, align 4, !tbaa !9
  store i32 %510, ptr %51, align 4, !tbaa !9
  %511 = load ptr, ptr %38, align 8, !tbaa !5
  %512 = getelementptr inbounds %struct.complex, ptr %511, i64 1
  %513 = getelementptr inbounds %struct.complex, ptr %512, i32 0, i32 0
  %514 = load float, ptr %513, align 4, !tbaa !11
  %515 = fptosi float %514 to i32
  store i32 %515, ptr %52, align 4, !tbaa !9
  %516 = load i32, ptr %51, align 4, !tbaa !9
  %517 = load i32, ptr %52, align 4, !tbaa !9
  %518 = icmp sge i32 %516, %517
  br i1 %518, label %519, label %521

519:                                              ; preds = %477
  %520 = load i32, ptr %51, align 4, !tbaa !9
  br label %523

521:                                              ; preds = %477
  %522 = load i32, ptr %52, align 4, !tbaa !9
  br label %523

523:                                              ; preds = %521, %519
  %524 = phi i32 [ %520, %519 ], [ %522, %521 ]
  store i32 %524, ptr %82, align 4, !tbaa !9
  br label %525

525:                                              ; preds = %523, %473
  %526 = load i32, ptr %82, align 4, !tbaa !9
  %527 = sitofp i32 %526 to float
  %528 = getelementptr inbounds %struct.complex, ptr %53, i32 0, i32 0
  store float %527, ptr %528, align 4, !tbaa !11
  %529 = getelementptr inbounds %struct.complex, ptr %53, i32 0, i32 1
  store float 0.000000e+00, ptr %529, align 4, !tbaa !14
  %530 = getelementptr inbounds %struct.complex, ptr %53, i32 0, i32 0
  %531 = load float, ptr %530, align 4, !tbaa !11
  %532 = load ptr, ptr %38, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.complex, ptr %532, i64 1
  %534 = getelementptr inbounds %struct.complex, ptr %533, i32 0, i32 0
  store float %531, ptr %534, align 4, !tbaa !11
  %535 = getelementptr inbounds %struct.complex, ptr %53, i32 0, i32 1
  %536 = load float, ptr %535, align 4, !tbaa !14
  %537 = load ptr, ptr %38, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.complex, ptr %537, i64 1
  %539 = getelementptr inbounds %struct.complex, ptr %538, i32 0, i32 1
  store float %536, ptr %539, align 4, !tbaa !14
  br label %540

540:                                              ; preds = %525, %282
  %541 = load ptr, ptr %42, align 8, !tbaa !5
  %542 = load i32, ptr %541, align 4, !tbaa !9
  %543 = icmp ne i32 %542, 0
  br i1 %543, label %544, label %549

544:                                              ; preds = %540
  %545 = load ptr, ptr %42, align 8, !tbaa !5
  %546 = load i32, ptr %545, align 4, !tbaa !9
  %547 = sub nsw i32 0, %546
  store i32 %547, ptr %51, align 4, !tbaa !9
  %548 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %51, i32 noundef 7)
  store i32 1, ptr %87, align 4
  br label %1147

549:                                              ; preds = %540
  %550 = load i32, ptr %81, align 4, !tbaa !9
  %551 = icmp ne i32 %550, 0
  br i1 %551, label %552, label %553

552:                                              ; preds = %549
  store i32 1, ptr %87, align 4
  br label %1147

553:                                              ; preds = %549
  br label %554

554:                                              ; preds = %553
  %555 = load ptr, ptr %26, align 8, !tbaa !5
  %556 = load i32, ptr %555, align 4, !tbaa !9
  %557 = icmp eq i32 %556, 0
  br i1 %557, label %558, label %560

558:                                              ; preds = %554
  %559 = load ptr, ptr %31, align 8, !tbaa !5
  store i32 0, ptr %559, align 4, !tbaa !9
  store i32 1, ptr %87, align 4
  br label %1147

560:                                              ; preds = %554
  %561 = call float @slamch_(ptr noundef @.str.6)
  store float %561, ptr %86, align 4, !tbaa !15
  %562 = call float @slamch_(ptr noundef @.str.2)
  store float %562, ptr %79, align 4, !tbaa !15
  %563 = load float, ptr %79, align 4, !tbaa !15
  %564 = fdiv float 1.000000e+00, %563
  store float %564, ptr %72, align 4, !tbaa !15
  call void @slabad_(ptr noundef %79, ptr noundef %72)
  %565 = load float, ptr %79, align 4, !tbaa !15
  %566 = fpext float %565 to double
  %567 = call double @sqrt(double noundef %566) #4
  %568 = load float, ptr %86, align 4, !tbaa !15
  %569 = fpext float %568 to double
  %570 = fdiv double %567, %569
  %571 = fptrunc double %570 to float
  store float %571, ptr %79, align 4, !tbaa !15
  %572 = load float, ptr %79, align 4, !tbaa !15
  %573 = fdiv float 1.000000e+00, %572
  store float %573, ptr %72, align 4, !tbaa !15
  %574 = load ptr, ptr %26, align 8, !tbaa !5
  %575 = load ptr, ptr %26, align 8, !tbaa !5
  %576 = load ptr, ptr %27, align 8, !tbaa !5
  %577 = load i32, ptr %44, align 4, !tbaa !9
  %578 = sext i32 %577 to i64
  %579 = getelementptr inbounds %struct.complex, ptr %576, i64 %578
  %580 = load ptr, ptr %28, align 8, !tbaa !5
  %581 = load ptr, ptr %40, align 8, !tbaa !5
  %582 = getelementptr inbounds float, ptr %581, i64 1
  %583 = call float @clange_(ptr noundef @.str.7, ptr noundef %574, ptr noundef %575, ptr noundef %579, ptr noundef %580, ptr noundef %582)
  store float %583, ptr %54, align 4, !tbaa !15
  store i32 0, ptr %70, align 4, !tbaa !9
  %584 = load float, ptr %54, align 4, !tbaa !15
  %585 = fcmp ogt float %584, 0.000000e+00
  br i1 %585, label %586, label %592

586:                                              ; preds = %560
  %587 = load float, ptr %54, align 4, !tbaa !15
  %588 = load float, ptr %79, align 4, !tbaa !15
  %589 = fcmp olt float %587, %588
  br i1 %589, label %590, label %592

590:                                              ; preds = %586
  %591 = load float, ptr %79, align 4, !tbaa !15
  store float %591, ptr %76, align 4, !tbaa !15
  store i32 1, ptr %70, align 4, !tbaa !9
  br label %599

592:                                              ; preds = %586, %560
  %593 = load float, ptr %54, align 4, !tbaa !15
  %594 = load float, ptr %72, align 4, !tbaa !15
  %595 = fcmp ogt float %593, %594
  br i1 %595, label %596, label %598

596:                                              ; preds = %592
  %597 = load float, ptr %72, align 4, !tbaa !15
  store float %597, ptr %76, align 4, !tbaa !15
  store i32 1, ptr %70, align 4, !tbaa !9
  br label %598

598:                                              ; preds = %596, %592
  br label %599

599:                                              ; preds = %598, %590
  %600 = load i32, ptr %70, align 4, !tbaa !9
  %601 = icmp ne i32 %600, 0
  br i1 %601, label %602, label %610

602:                                              ; preds = %599
  %603 = load ptr, ptr %26, align 8, !tbaa !5
  %604 = load ptr, ptr %26, align 8, !tbaa !5
  %605 = load ptr, ptr %27, align 8, !tbaa !5
  %606 = load i32, ptr %44, align 4, !tbaa !9
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds %struct.complex, ptr %605, i64 %607
  %609 = load ptr, ptr %28, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.8, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %54, ptr noundef %76, ptr noundef %603, ptr noundef %604, ptr noundef %608, ptr noundef %609, ptr noundef %57)
  br label %610

610:                                              ; preds = %602, %599
  %611 = load ptr, ptr %26, align 8, !tbaa !5
  %612 = load ptr, ptr %26, align 8, !tbaa !5
  %613 = load ptr, ptr %29, align 8, !tbaa !5
  %614 = load i32, ptr %46, align 4, !tbaa !9
  %615 = sext i32 %614 to i64
  %616 = getelementptr inbounds %struct.complex, ptr %613, i64 %615
  %617 = load ptr, ptr %30, align 8, !tbaa !5
  %618 = load ptr, ptr %40, align 8, !tbaa !5
  %619 = getelementptr inbounds float, ptr %618, i64 1
  %620 = call float @clange_(ptr noundef @.str.7, ptr noundef %611, ptr noundef %612, ptr noundef %616, ptr noundef %617, ptr noundef %619)
  store float %620, ptr %55, align 4, !tbaa !15
  store i32 0, ptr %71, align 4, !tbaa !9
  %621 = load float, ptr %55, align 4, !tbaa !15
  %622 = fcmp ogt float %621, 0.000000e+00
  br i1 %622, label %623, label %629

623:                                              ; preds = %610
  %624 = load float, ptr %55, align 4, !tbaa !15
  %625 = load float, ptr %79, align 4, !tbaa !15
  %626 = fcmp olt float %624, %625
  br i1 %626, label %627, label %629

627:                                              ; preds = %623
  %628 = load float, ptr %79, align 4, !tbaa !15
  store float %628, ptr %77, align 4, !tbaa !15
  store i32 1, ptr %71, align 4, !tbaa !9
  br label %636

629:                                              ; preds = %623, %610
  %630 = load float, ptr %55, align 4, !tbaa !15
  %631 = load float, ptr %72, align 4, !tbaa !15
  %632 = fcmp ogt float %630, %631
  br i1 %632, label %633, label %635

633:                                              ; preds = %629
  %634 = load float, ptr %72, align 4, !tbaa !15
  store float %634, ptr %77, align 4, !tbaa !15
  store i32 1, ptr %71, align 4, !tbaa !9
  br label %635

635:                                              ; preds = %633, %629
  br label %636

636:                                              ; preds = %635, %627
  %637 = load i32, ptr %71, align 4, !tbaa !9
  %638 = icmp ne i32 %637, 0
  br i1 %638, label %639, label %647

639:                                              ; preds = %636
  %640 = load ptr, ptr %26, align 8, !tbaa !5
  %641 = load ptr, ptr %26, align 8, !tbaa !5
  %642 = load ptr, ptr %29, align 8, !tbaa !5
  %643 = load i32, ptr %46, align 4, !tbaa !9
  %644 = sext i32 %643 to i64
  %645 = getelementptr inbounds %struct.complex, ptr %642, i64 %644
  %646 = load ptr, ptr %30, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.8, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %55, ptr noundef %77, ptr noundef %640, ptr noundef %641, ptr noundef %645, ptr noundef %646, ptr noundef %57)
  br label %647

647:                                              ; preds = %639, %636
  store i32 1, ptr %63, align 4, !tbaa !9
  %648 = load ptr, ptr %26, align 8, !tbaa !5
  %649 = load i32, ptr %648, align 4, !tbaa !9
  %650 = add nsw i32 %649, 1
  store i32 %650, ptr %74, align 4, !tbaa !9
  %651 = load i32, ptr %74, align 4, !tbaa !9
  %652 = load ptr, ptr %26, align 8, !tbaa !5
  %653 = load i32, ptr %652, align 4, !tbaa !9
  %654 = add nsw i32 %651, %653
  store i32 %654, ptr %68, align 4, !tbaa !9
  %655 = load ptr, ptr %26, align 8, !tbaa !5
  %656 = load ptr, ptr %27, align 8, !tbaa !5
  %657 = load i32, ptr %44, align 4, !tbaa !9
  %658 = sext i32 %657 to i64
  %659 = getelementptr inbounds %struct.complex, ptr %656, i64 %658
  %660 = load ptr, ptr %28, align 8, !tbaa !5
  %661 = load ptr, ptr %29, align 8, !tbaa !5
  %662 = load i32, ptr %46, align 4, !tbaa !9
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds %struct.complex, ptr %661, i64 %663
  %665 = load ptr, ptr %30, align 8, !tbaa !5
  %666 = load ptr, ptr %40, align 8, !tbaa !5
  %667 = load i32, ptr %63, align 4, !tbaa !9
  %668 = sext i32 %667 to i64
  %669 = getelementptr inbounds float, ptr %666, i64 %668
  %670 = load ptr, ptr %40, align 8, !tbaa !5
  %671 = load i32, ptr %74, align 4, !tbaa !9
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds float, ptr %670, i64 %672
  %674 = load ptr, ptr %40, align 8, !tbaa !5
  %675 = load i32, ptr %68, align 4, !tbaa !9
  %676 = sext i32 %675 to i64
  %677 = getelementptr inbounds float, ptr %674, i64 %676
  call void @cggbal_(ptr noundef @.str.6, ptr noundef %655, ptr noundef %659, ptr noundef %660, ptr noundef %664, ptr noundef %665, ptr noundef %85, ptr noundef %84, ptr noundef %669, ptr noundef %673, ptr noundef %677, ptr noundef %57)
  %678 = load i32, ptr %84, align 4, !tbaa !9
  %679 = add nsw i32 %678, 1
  %680 = load i32, ptr %85, align 4, !tbaa !9
  %681 = sub nsw i32 %679, %680
  store i32 %681, ptr %69, align 4, !tbaa !9
  %682 = load ptr, ptr %26, align 8, !tbaa !5
  %683 = load i32, ptr %682, align 4, !tbaa !9
  %684 = add nsw i32 %683, 1
  %685 = load i32, ptr %85, align 4, !tbaa !9
  %686 = sub nsw i32 %684, %685
  store i32 %686, ptr %64, align 4, !tbaa !9
  store i32 1, ptr %58, align 4, !tbaa !9
  %687 = load i32, ptr %58, align 4, !tbaa !9
  %688 = load i32, ptr %69, align 4, !tbaa !9
  %689 = add nsw i32 %687, %688
  store i32 %689, ptr %59, align 4, !tbaa !9
  %690 = load ptr, ptr %39, align 8, !tbaa !5
  %691 = load i32, ptr %690, align 4, !tbaa !9
  %692 = add nsw i32 %691, 1
  %693 = load i32, ptr %59, align 4, !tbaa !9
  %694 = sub nsw i32 %692, %693
  store i32 %694, ptr %51, align 4, !tbaa !9
  %695 = load ptr, ptr %29, align 8, !tbaa !5
  %696 = load i32, ptr %85, align 4, !tbaa !9
  %697 = load i32, ptr %85, align 4, !tbaa !9
  %698 = load i32, ptr %45, align 4, !tbaa !9
  %699 = mul nsw i32 %697, %698
  %700 = add nsw i32 %696, %699
  %701 = sext i32 %700 to i64
  %702 = getelementptr inbounds %struct.complex, ptr %695, i64 %701
  %703 = load ptr, ptr %30, align 8, !tbaa !5
  %704 = load ptr, ptr %38, align 8, !tbaa !5
  %705 = load i32, ptr %58, align 4, !tbaa !9
  %706 = sext i32 %705 to i64
  %707 = getelementptr inbounds %struct.complex, ptr %704, i64 %706
  %708 = load ptr, ptr %38, align 8, !tbaa !5
  %709 = load i32, ptr %59, align 4, !tbaa !9
  %710 = sext i32 %709 to i64
  %711 = getelementptr inbounds %struct.complex, ptr %708, i64 %710
  call void @cgeqrf_(ptr noundef %69, ptr noundef %64, ptr noundef %702, ptr noundef %703, ptr noundef %707, ptr noundef %711, ptr noundef %51, ptr noundef %57)
  %712 = load ptr, ptr %39, align 8, !tbaa !5
  %713 = load i32, ptr %712, align 4, !tbaa !9
  %714 = add nsw i32 %713, 1
  %715 = load i32, ptr %59, align 4, !tbaa !9
  %716 = sub nsw i32 %714, %715
  store i32 %716, ptr %51, align 4, !tbaa !9
  %717 = load ptr, ptr %29, align 8, !tbaa !5
  %718 = load i32, ptr %85, align 4, !tbaa !9
  %719 = load i32, ptr %85, align 4, !tbaa !9
  %720 = load i32, ptr %45, align 4, !tbaa !9
  %721 = mul nsw i32 %719, %720
  %722 = add nsw i32 %718, %721
  %723 = sext i32 %722 to i64
  %724 = getelementptr inbounds %struct.complex, ptr %717, i64 %723
  %725 = load ptr, ptr %30, align 8, !tbaa !5
  %726 = load ptr, ptr %38, align 8, !tbaa !5
  %727 = load i32, ptr %58, align 4, !tbaa !9
  %728 = sext i32 %727 to i64
  %729 = getelementptr inbounds %struct.complex, ptr %726, i64 %728
  %730 = load ptr, ptr %27, align 8, !tbaa !5
  %731 = load i32, ptr %85, align 4, !tbaa !9
  %732 = load i32, ptr %85, align 4, !tbaa !9
  %733 = load i32, ptr %43, align 4, !tbaa !9
  %734 = mul nsw i32 %732, %733
  %735 = add nsw i32 %731, %734
  %736 = sext i32 %735 to i64
  %737 = getelementptr inbounds %struct.complex, ptr %730, i64 %736
  %738 = load ptr, ptr %28, align 8, !tbaa !5
  %739 = load ptr, ptr %38, align 8, !tbaa !5
  %740 = load i32, ptr %59, align 4, !tbaa !9
  %741 = sext i32 %740 to i64
  %742 = getelementptr inbounds %struct.complex, ptr %739, i64 %741
  call void @cunmqr_(ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %69, ptr noundef %64, ptr noundef %69, ptr noundef %724, ptr noundef %725, ptr noundef %729, ptr noundef %737, ptr noundef %738, ptr noundef %742, ptr noundef %51, ptr noundef %57)
  %743 = load i32, ptr %66, align 4, !tbaa !9
  %744 = icmp ne i32 %743, 0
  br i1 %744, label %745, label %803

745:                                              ; preds = %647
  %746 = load ptr, ptr %26, align 8, !tbaa !5
  %747 = load ptr, ptr %26, align 8, !tbaa !5
  %748 = load ptr, ptr %34, align 8, !tbaa !5
  %749 = load i32, ptr %48, align 4, !tbaa !9
  %750 = sext i32 %749 to i64
  %751 = getelementptr inbounds %struct.complex, ptr %748, i64 %750
  %752 = load ptr, ptr %35, align 8, !tbaa !5
  call void @claset_(ptr noundef @.str.9, ptr noundef %746, ptr noundef %747, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %751, ptr noundef %752)
  %753 = load i32, ptr %69, align 4, !tbaa !9
  %754 = icmp sgt i32 %753, 1
  br i1 %754, label %755, label %780

755:                                              ; preds = %745
  %756 = load i32, ptr %69, align 4, !tbaa !9
  %757 = sub nsw i32 %756, 1
  store i32 %757, ptr %51, align 4, !tbaa !9
  %758 = load i32, ptr %69, align 4, !tbaa !9
  %759 = sub nsw i32 %758, 1
  store i32 %759, ptr %52, align 4, !tbaa !9
  %760 = load ptr, ptr %29, align 8, !tbaa !5
  %761 = load i32, ptr %85, align 4, !tbaa !9
  %762 = add nsw i32 %761, 1
  %763 = load i32, ptr %85, align 4, !tbaa !9
  %764 = load i32, ptr %45, align 4, !tbaa !9
  %765 = mul nsw i32 %763, %764
  %766 = add nsw i32 %762, %765
  %767 = sext i32 %766 to i64
  %768 = getelementptr inbounds %struct.complex, ptr %760, i64 %767
  %769 = load ptr, ptr %30, align 8, !tbaa !5
  %770 = load ptr, ptr %34, align 8, !tbaa !5
  %771 = load i32, ptr %85, align 4, !tbaa !9
  %772 = add nsw i32 %771, 1
  %773 = load i32, ptr %85, align 4, !tbaa !9
  %774 = load i32, ptr %47, align 4, !tbaa !9
  %775 = mul nsw i32 %773, %774
  %776 = add nsw i32 %772, %775
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds %struct.complex, ptr %770, i64 %777
  %779 = load ptr, ptr %35, align 8, !tbaa !5
  call void @clacpy_(ptr noundef @.str.3, ptr noundef %51, ptr noundef %52, ptr noundef %768, ptr noundef %769, ptr noundef %778, ptr noundef %779)
  br label %780

780:                                              ; preds = %755, %745
  %781 = load ptr, ptr %39, align 8, !tbaa !5
  %782 = load i32, ptr %781, align 4, !tbaa !9
  %783 = add nsw i32 %782, 1
  %784 = load i32, ptr %59, align 4, !tbaa !9
  %785 = sub nsw i32 %783, %784
  store i32 %785, ptr %51, align 4, !tbaa !9
  %786 = load ptr, ptr %34, align 8, !tbaa !5
  %787 = load i32, ptr %85, align 4, !tbaa !9
  %788 = load i32, ptr %85, align 4, !tbaa !9
  %789 = load i32, ptr %47, align 4, !tbaa !9
  %790 = mul nsw i32 %788, %789
  %791 = add nsw i32 %787, %790
  %792 = sext i32 %791 to i64
  %793 = getelementptr inbounds %struct.complex, ptr %786, i64 %792
  %794 = load ptr, ptr %35, align 8, !tbaa !5
  %795 = load ptr, ptr %38, align 8, !tbaa !5
  %796 = load i32, ptr %58, align 4, !tbaa !9
  %797 = sext i32 %796 to i64
  %798 = getelementptr inbounds %struct.complex, ptr %795, i64 %797
  %799 = load ptr, ptr %38, align 8, !tbaa !5
  %800 = load i32, ptr %59, align 4, !tbaa !9
  %801 = sext i32 %800 to i64
  %802 = getelementptr inbounds %struct.complex, ptr %799, i64 %801
  call void @cungqr_(ptr noundef %69, ptr noundef %69, ptr noundef %69, ptr noundef %793, ptr noundef %794, ptr noundef %798, ptr noundef %802, ptr noundef %51, ptr noundef %57)
  br label %803

803:                                              ; preds = %780, %647
  %804 = load i32, ptr %67, align 4, !tbaa !9
  %805 = icmp ne i32 %804, 0
  br i1 %805, label %806, label %814

806:                                              ; preds = %803
  %807 = load ptr, ptr %26, align 8, !tbaa !5
  %808 = load ptr, ptr %26, align 8, !tbaa !5
  %809 = load ptr, ptr %36, align 8, !tbaa !5
  %810 = load i32, ptr %50, align 4, !tbaa !9
  %811 = sext i32 %810 to i64
  %812 = getelementptr inbounds %struct.complex, ptr %809, i64 %811
  %813 = load ptr, ptr %37, align 8, !tbaa !5
  call void @claset_(ptr noundef @.str.9, ptr noundef %807, ptr noundef %808, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %812, ptr noundef %813)
  br label %814

814:                                              ; preds = %806, %803
  %815 = load ptr, ptr %39, align 8, !tbaa !5
  %816 = load i32, ptr %815, align 4, !tbaa !9
  %817 = add nsw i32 %816, 1
  %818 = load i32, ptr %59, align 4, !tbaa !9
  %819 = sub nsw i32 %817, %818
  store i32 %819, ptr %51, align 4, !tbaa !9
  %820 = load ptr, ptr %22, align 8, !tbaa !5
  %821 = load ptr, ptr %23, align 8, !tbaa !5
  %822 = load ptr, ptr %26, align 8, !tbaa !5
  %823 = load ptr, ptr %27, align 8, !tbaa !5
  %824 = load i32, ptr %44, align 4, !tbaa !9
  %825 = sext i32 %824 to i64
  %826 = getelementptr inbounds %struct.complex, ptr %823, i64 %825
  %827 = load ptr, ptr %28, align 8, !tbaa !5
  %828 = load ptr, ptr %29, align 8, !tbaa !5
  %829 = load i32, ptr %46, align 4, !tbaa !9
  %830 = sext i32 %829 to i64
  %831 = getelementptr inbounds %struct.complex, ptr %828, i64 %830
  %832 = load ptr, ptr %30, align 8, !tbaa !5
  %833 = load ptr, ptr %34, align 8, !tbaa !5
  %834 = load i32, ptr %48, align 4, !tbaa !9
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds %struct.complex, ptr %833, i64 %835
  %837 = load ptr, ptr %35, align 8, !tbaa !5
  %838 = load ptr, ptr %36, align 8, !tbaa !5
  %839 = load i32, ptr %50, align 4, !tbaa !9
  %840 = sext i32 %839 to i64
  %841 = getelementptr inbounds %struct.complex, ptr %838, i64 %840
  %842 = load ptr, ptr %37, align 8, !tbaa !5
  %843 = load ptr, ptr %38, align 8, !tbaa !5
  %844 = load i32, ptr %59, align 4, !tbaa !9
  %845 = sext i32 %844 to i64
  %846 = getelementptr inbounds %struct.complex, ptr %843, i64 %845
  call void @cgghd3_(ptr noundef %820, ptr noundef %821, ptr noundef %822, ptr noundef %85, ptr noundef %84, ptr noundef %826, ptr noundef %827, ptr noundef %831, ptr noundef %832, ptr noundef %836, ptr noundef %837, ptr noundef %841, ptr noundef %842, ptr noundef %846, ptr noundef %51, ptr noundef %57)
  %847 = load ptr, ptr %31, align 8, !tbaa !5
  store i32 0, ptr %847, align 4, !tbaa !9
  %848 = load i32, ptr %58, align 4, !tbaa !9
  store i32 %848, ptr %59, align 4, !tbaa !9
  %849 = load ptr, ptr %39, align 8, !tbaa !5
  %850 = load i32, ptr %849, align 4, !tbaa !9
  %851 = add nsw i32 %850, 1
  %852 = load i32, ptr %59, align 4, !tbaa !9
  %853 = sub nsw i32 %851, %852
  store i32 %853, ptr %51, align 4, !tbaa !9
  %854 = load ptr, ptr %22, align 8, !tbaa !5
  %855 = load ptr, ptr %23, align 8, !tbaa !5
  %856 = load ptr, ptr %26, align 8, !tbaa !5
  %857 = load ptr, ptr %27, align 8, !tbaa !5
  %858 = load i32, ptr %44, align 4, !tbaa !9
  %859 = sext i32 %858 to i64
  %860 = getelementptr inbounds %struct.complex, ptr %857, i64 %859
  %861 = load ptr, ptr %28, align 8, !tbaa !5
  %862 = load ptr, ptr %29, align 8, !tbaa !5
  %863 = load i32, ptr %46, align 4, !tbaa !9
  %864 = sext i32 %863 to i64
  %865 = getelementptr inbounds %struct.complex, ptr %862, i64 %864
  %866 = load ptr, ptr %30, align 8, !tbaa !5
  %867 = load ptr, ptr %32, align 8, !tbaa !5
  %868 = getelementptr inbounds %struct.complex, ptr %867, i64 1
  %869 = load ptr, ptr %33, align 8, !tbaa !5
  %870 = getelementptr inbounds %struct.complex, ptr %869, i64 1
  %871 = load ptr, ptr %34, align 8, !tbaa !5
  %872 = load i32, ptr %48, align 4, !tbaa !9
  %873 = sext i32 %872 to i64
  %874 = getelementptr inbounds %struct.complex, ptr %871, i64 %873
  %875 = load ptr, ptr %35, align 8, !tbaa !5
  %876 = load ptr, ptr %36, align 8, !tbaa !5
  %877 = load i32, ptr %50, align 4, !tbaa !9
  %878 = sext i32 %877 to i64
  %879 = getelementptr inbounds %struct.complex, ptr %876, i64 %878
  %880 = load ptr, ptr %37, align 8, !tbaa !5
  %881 = load ptr, ptr %38, align 8, !tbaa !5
  %882 = load i32, ptr %59, align 4, !tbaa !9
  %883 = sext i32 %882 to i64
  %884 = getelementptr inbounds %struct.complex, ptr %881, i64 %883
  %885 = load ptr, ptr %40, align 8, !tbaa !5
  %886 = load i32, ptr %68, align 4, !tbaa !9
  %887 = sext i32 %886 to i64
  %888 = getelementptr inbounds float, ptr %885, i64 %887
  call void @chgeqz_(ptr noundef @.str.2, ptr noundef %854, ptr noundef %855, ptr noundef %856, ptr noundef %85, ptr noundef %84, ptr noundef %860, ptr noundef %861, ptr noundef %865, ptr noundef %866, ptr noundef %868, ptr noundef %870, ptr noundef %874, ptr noundef %875, ptr noundef %879, ptr noundef %880, ptr noundef %884, ptr noundef %51, ptr noundef %888, ptr noundef %57)
  %889 = load i32, ptr %57, align 4, !tbaa !9
  %890 = icmp ne i32 %889, 0
  br i1 %890, label %891, label %926

891:                                              ; preds = %814
  %892 = load i32, ptr %57, align 4, !tbaa !9
  %893 = icmp sgt i32 %892, 0
  br i1 %893, label %894, label %902

894:                                              ; preds = %891
  %895 = load i32, ptr %57, align 4, !tbaa !9
  %896 = load ptr, ptr %26, align 8, !tbaa !5
  %897 = load i32, ptr %896, align 4, !tbaa !9
  %898 = icmp sle i32 %895, %897
  br i1 %898, label %899, label %902

899:                                              ; preds = %894
  %900 = load i32, ptr %57, align 4, !tbaa !9
  %901 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %900, ptr %901, align 4, !tbaa !9
  br label %925

902:                                              ; preds = %894, %891
  %903 = load i32, ptr %57, align 4, !tbaa !9
  %904 = load ptr, ptr %26, align 8, !tbaa !5
  %905 = load i32, ptr %904, align 4, !tbaa !9
  %906 = icmp sgt i32 %903, %905
  br i1 %906, label %907, label %919

907:                                              ; preds = %902
  %908 = load i32, ptr %57, align 4, !tbaa !9
  %909 = load ptr, ptr %26, align 8, !tbaa !5
  %910 = load i32, ptr %909, align 4, !tbaa !9
  %911 = shl i32 %910, 1
  %912 = icmp sle i32 %908, %911
  br i1 %912, label %913, label %919

913:                                              ; preds = %907
  %914 = load i32, ptr %57, align 4, !tbaa !9
  %915 = load ptr, ptr %26, align 8, !tbaa !5
  %916 = load i32, ptr %915, align 4, !tbaa !9
  %917 = sub nsw i32 %914, %916
  %918 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %917, ptr %918, align 4, !tbaa !9
  br label %924

919:                                              ; preds = %907, %902
  %920 = load ptr, ptr %26, align 8, !tbaa !5
  %921 = load i32, ptr %920, align 4, !tbaa !9
  %922 = add nsw i32 %921, 1
  %923 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %922, ptr %923, align 4, !tbaa !9
  br label %924

924:                                              ; preds = %919, %913
  br label %925

925:                                              ; preds = %924, %899
  br label %1132

926:                                              ; preds = %814
  %927 = load i32, ptr %80, align 4, !tbaa !9
  %928 = icmp ne i32 %927, 0
  br i1 %928, label %929, label %1018

929:                                              ; preds = %926
  %930 = load i32, ptr %70, align 4, !tbaa !9
  %931 = icmp ne i32 %930, 0
  br i1 %931, label %932, label %937

932:                                              ; preds = %929
  %933 = load ptr, ptr %26, align 8, !tbaa !5
  %934 = load ptr, ptr %32, align 8, !tbaa !5
  %935 = getelementptr inbounds %struct.complex, ptr %934, i64 1
  %936 = load ptr, ptr %26, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.8, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %54, ptr noundef %76, ptr noundef %933, ptr noundef @c__1, ptr noundef %935, ptr noundef %936, ptr noundef %57)
  br label %937

937:                                              ; preds = %932, %929
  %938 = load i32, ptr %71, align 4, !tbaa !9
  %939 = icmp ne i32 %938, 0
  br i1 %939, label %940, label %945

940:                                              ; preds = %937
  %941 = load ptr, ptr %26, align 8, !tbaa !5
  %942 = load ptr, ptr %33, align 8, !tbaa !5
  %943 = getelementptr inbounds %struct.complex, ptr %942, i64 1
  %944 = load ptr, ptr %26, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.8, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %55, ptr noundef %77, ptr noundef %941, ptr noundef @c__1, ptr noundef %943, ptr noundef %944, ptr noundef %57)
  br label %945

945:                                              ; preds = %940, %937
  %946 = load ptr, ptr %26, align 8, !tbaa !5
  %947 = load i32, ptr %946, align 4, !tbaa !9
  store i32 %947, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %948

948:                                              ; preds = %967, %945
  %949 = load i32, ptr %62, align 4, !tbaa !9
  %950 = load i32, ptr %51, align 4, !tbaa !9
  %951 = icmp sle i32 %949, %950
  br i1 %951, label %952, label %970

952:                                              ; preds = %948
  %953 = load ptr, ptr %25, align 8, !tbaa !5
  %954 = load ptr, ptr %32, align 8, !tbaa !5
  %955 = load i32, ptr %62, align 4, !tbaa !9
  %956 = sext i32 %955 to i64
  %957 = getelementptr inbounds %struct.complex, ptr %954, i64 %956
  %958 = load ptr, ptr %33, align 8, !tbaa !5
  %959 = load i32, ptr %62, align 4, !tbaa !9
  %960 = sext i32 %959 to i64
  %961 = getelementptr inbounds %struct.complex, ptr %958, i64 %960
  %962 = call i32 (ptr, ptr, ...) %953(ptr noundef %957, ptr noundef %961)
  %963 = load ptr, ptr %41, align 8, !tbaa !5
  %964 = load i32, ptr %62, align 4, !tbaa !9
  %965 = sext i32 %964 to i64
  %966 = getelementptr inbounds i32, ptr %963, i64 %965
  store i32 %962, ptr %966, align 4, !tbaa !9
  br label %967

967:                                              ; preds = %952
  %968 = load i32, ptr %62, align 4, !tbaa !9
  %969 = add nsw i32 %968, 1
  store i32 %969, ptr %62, align 4, !tbaa !9
  br label %948, !llvm.loop !16

970:                                              ; preds = %948
  %971 = load ptr, ptr %39, align 8, !tbaa !5
  %972 = load i32, ptr %971, align 4, !tbaa !9
  %973 = load i32, ptr %59, align 4, !tbaa !9
  %974 = sub nsw i32 %972, %973
  %975 = add nsw i32 %974, 1
  store i32 %975, ptr %51, align 4, !tbaa !9
  %976 = load ptr, ptr %41, align 8, !tbaa !5
  %977 = getelementptr inbounds i32, ptr %976, i64 1
  %978 = load ptr, ptr %26, align 8, !tbaa !5
  %979 = load ptr, ptr %27, align 8, !tbaa !5
  %980 = load i32, ptr %44, align 4, !tbaa !9
  %981 = sext i32 %980 to i64
  %982 = getelementptr inbounds %struct.complex, ptr %979, i64 %981
  %983 = load ptr, ptr %28, align 8, !tbaa !5
  %984 = load ptr, ptr %29, align 8, !tbaa !5
  %985 = load i32, ptr %46, align 4, !tbaa !9
  %986 = sext i32 %985 to i64
  %987 = getelementptr inbounds %struct.complex, ptr %984, i64 %986
  %988 = load ptr, ptr %30, align 8, !tbaa !5
  %989 = load ptr, ptr %32, align 8, !tbaa !5
  %990 = getelementptr inbounds %struct.complex, ptr %989, i64 1
  %991 = load ptr, ptr %33, align 8, !tbaa !5
  %992 = getelementptr inbounds %struct.complex, ptr %991, i64 1
  %993 = load ptr, ptr %34, align 8, !tbaa !5
  %994 = load i32, ptr %48, align 4, !tbaa !9
  %995 = sext i32 %994 to i64
  %996 = getelementptr inbounds %struct.complex, ptr %993, i64 %995
  %997 = load ptr, ptr %35, align 8, !tbaa !5
  %998 = load ptr, ptr %36, align 8, !tbaa !5
  %999 = load i32, ptr %50, align 4, !tbaa !9
  %1000 = sext i32 %999 to i64
  %1001 = getelementptr inbounds %struct.complex, ptr %998, i64 %1000
  %1002 = load ptr, ptr %37, align 8, !tbaa !5
  %1003 = load ptr, ptr %31, align 8, !tbaa !5
  %1004 = getelementptr inbounds [2 x float], ptr %83, i64 0, i64 0
  %1005 = load ptr, ptr %38, align 8, !tbaa !5
  %1006 = load i32, ptr %59, align 4, !tbaa !9
  %1007 = sext i32 %1006 to i64
  %1008 = getelementptr inbounds %struct.complex, ptr %1005, i64 %1007
  %1009 = getelementptr inbounds [1 x i32], ptr %56, i64 0, i64 0
  call void @ctgsen_(ptr noundef @c__0, ptr noundef %66, ptr noundef %67, ptr noundef %977, ptr noundef %978, ptr noundef %982, ptr noundef %983, ptr noundef %987, ptr noundef %988, ptr noundef %990, ptr noundef %992, ptr noundef %996, ptr noundef %997, ptr noundef %1001, ptr noundef %1002, ptr noundef %1003, ptr noundef %60, ptr noundef %61, ptr noundef %1004, ptr noundef %1008, ptr noundef %51, ptr noundef %1009, ptr noundef @c__1, ptr noundef %57)
  %1010 = load i32, ptr %57, align 4, !tbaa !9
  %1011 = icmp eq i32 %1010, 1
  br i1 %1011, label %1012, label %1017

1012:                                             ; preds = %970
  %1013 = load ptr, ptr %26, align 8, !tbaa !5
  %1014 = load i32, ptr %1013, align 4, !tbaa !9
  %1015 = add nsw i32 %1014, 3
  %1016 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %1015, ptr %1016, align 4, !tbaa !9
  br label %1017

1017:                                             ; preds = %1012, %970
  br label %1018

1018:                                             ; preds = %1017, %926
  %1019 = load i32, ptr %66, align 4, !tbaa !9
  %1020 = icmp ne i32 %1019, 0
  br i1 %1020, label %1021, label %1037

1021:                                             ; preds = %1018
  %1022 = load ptr, ptr %26, align 8, !tbaa !5
  %1023 = load ptr, ptr %40, align 8, !tbaa !5
  %1024 = load i32, ptr %63, align 4, !tbaa !9
  %1025 = sext i32 %1024 to i64
  %1026 = getelementptr inbounds float, ptr %1023, i64 %1025
  %1027 = load ptr, ptr %40, align 8, !tbaa !5
  %1028 = load i32, ptr %74, align 4, !tbaa !9
  %1029 = sext i32 %1028 to i64
  %1030 = getelementptr inbounds float, ptr %1027, i64 %1029
  %1031 = load ptr, ptr %26, align 8, !tbaa !5
  %1032 = load ptr, ptr %34, align 8, !tbaa !5
  %1033 = load i32, ptr %48, align 4, !tbaa !9
  %1034 = sext i32 %1033 to i64
  %1035 = getelementptr inbounds %struct.complex, ptr %1032, i64 %1034
  %1036 = load ptr, ptr %35, align 8, !tbaa !5
  call void @cggbak_(ptr noundef @.str.6, ptr noundef @.str.3, ptr noundef %1022, ptr noundef %85, ptr noundef %84, ptr noundef %1026, ptr noundef %1030, ptr noundef %1031, ptr noundef %1035, ptr noundef %1036, ptr noundef %57)
  br label %1037

1037:                                             ; preds = %1021, %1018
  %1038 = load i32, ptr %67, align 4, !tbaa !9
  %1039 = icmp ne i32 %1038, 0
  br i1 %1039, label %1040, label %1056

1040:                                             ; preds = %1037
  %1041 = load ptr, ptr %26, align 8, !tbaa !5
  %1042 = load ptr, ptr %40, align 8, !tbaa !5
  %1043 = load i32, ptr %63, align 4, !tbaa !9
  %1044 = sext i32 %1043 to i64
  %1045 = getelementptr inbounds float, ptr %1042, i64 %1044
  %1046 = load ptr, ptr %40, align 8, !tbaa !5
  %1047 = load i32, ptr %74, align 4, !tbaa !9
  %1048 = sext i32 %1047 to i64
  %1049 = getelementptr inbounds float, ptr %1046, i64 %1048
  %1050 = load ptr, ptr %26, align 8, !tbaa !5
  %1051 = load ptr, ptr %36, align 8, !tbaa !5
  %1052 = load i32, ptr %50, align 4, !tbaa !9
  %1053 = sext i32 %1052 to i64
  %1054 = getelementptr inbounds %struct.complex, ptr %1051, i64 %1053
  %1055 = load ptr, ptr %37, align 8, !tbaa !5
  call void @cggbak_(ptr noundef @.str.6, ptr noundef @.str.10, ptr noundef %1041, ptr noundef %85, ptr noundef %84, ptr noundef %1045, ptr noundef %1049, ptr noundef %1050, ptr noundef %1054, ptr noundef %1055, ptr noundef %57)
  br label %1056

1056:                                             ; preds = %1040, %1037
  %1057 = load i32, ptr %70, align 4, !tbaa !9
  %1058 = icmp ne i32 %1057, 0
  br i1 %1058, label %1059, label %1071

1059:                                             ; preds = %1056
  %1060 = load ptr, ptr %26, align 8, !tbaa !5
  %1061 = load ptr, ptr %26, align 8, !tbaa !5
  %1062 = load ptr, ptr %27, align 8, !tbaa !5
  %1063 = load i32, ptr %44, align 4, !tbaa !9
  %1064 = sext i32 %1063 to i64
  %1065 = getelementptr inbounds %struct.complex, ptr %1062, i64 %1064
  %1066 = load ptr, ptr %28, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %76, ptr noundef %54, ptr noundef %1060, ptr noundef %1061, ptr noundef %1065, ptr noundef %1066, ptr noundef %57)
  %1067 = load ptr, ptr %26, align 8, !tbaa !5
  %1068 = load ptr, ptr %32, align 8, !tbaa !5
  %1069 = getelementptr inbounds %struct.complex, ptr %1068, i64 1
  %1070 = load ptr, ptr %26, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.8, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %76, ptr noundef %54, ptr noundef %1067, ptr noundef @c__1, ptr noundef %1069, ptr noundef %1070, ptr noundef %57)
  br label %1071

1071:                                             ; preds = %1059, %1056
  %1072 = load i32, ptr %71, align 4, !tbaa !9
  %1073 = icmp ne i32 %1072, 0
  br i1 %1073, label %1074, label %1086

1074:                                             ; preds = %1071
  %1075 = load ptr, ptr %26, align 8, !tbaa !5
  %1076 = load ptr, ptr %26, align 8, !tbaa !5
  %1077 = load ptr, ptr %29, align 8, !tbaa !5
  %1078 = load i32, ptr %46, align 4, !tbaa !9
  %1079 = sext i32 %1078 to i64
  %1080 = getelementptr inbounds %struct.complex, ptr %1077, i64 %1079
  %1081 = load ptr, ptr %30, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %77, ptr noundef %55, ptr noundef %1075, ptr noundef %1076, ptr noundef %1080, ptr noundef %1081, ptr noundef %57)
  %1082 = load ptr, ptr %26, align 8, !tbaa !5
  %1083 = load ptr, ptr %33, align 8, !tbaa !5
  %1084 = getelementptr inbounds %struct.complex, ptr %1083, i64 1
  %1085 = load ptr, ptr %26, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.8, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %77, ptr noundef %55, ptr noundef %1082, ptr noundef @c__1, ptr noundef %1084, ptr noundef %1085, ptr noundef %57)
  br label %1086

1086:                                             ; preds = %1074, %1071
  %1087 = load i32, ptr %80, align 4, !tbaa !9
  %1088 = icmp ne i32 %1087, 0
  br i1 %1088, label %1089, label %1131

1089:                                             ; preds = %1086
  store i32 1, ptr %78, align 4, !tbaa !9
  %1090 = load ptr, ptr %31, align 8, !tbaa !5
  store i32 0, ptr %1090, align 4, !tbaa !9
  %1091 = load ptr, ptr %26, align 8, !tbaa !5
  %1092 = load i32, ptr %1091, align 4, !tbaa !9
  store i32 %1092, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %1093

1093:                                             ; preds = %1127, %1089
  %1094 = load i32, ptr %62, align 4, !tbaa !9
  %1095 = load i32, ptr %51, align 4, !tbaa !9
  %1096 = icmp sle i32 %1094, %1095
  br i1 %1096, label %1097, label %1130

1097:                                             ; preds = %1093
  %1098 = load ptr, ptr %25, align 8, !tbaa !5
  %1099 = load ptr, ptr %32, align 8, !tbaa !5
  %1100 = load i32, ptr %62, align 4, !tbaa !9
  %1101 = sext i32 %1100 to i64
  %1102 = getelementptr inbounds %struct.complex, ptr %1099, i64 %1101
  %1103 = load ptr, ptr %33, align 8, !tbaa !5
  %1104 = load i32, ptr %62, align 4, !tbaa !9
  %1105 = sext i32 %1104 to i64
  %1106 = getelementptr inbounds %struct.complex, ptr %1103, i64 %1105
  %1107 = call i32 (ptr, ptr, ...) %1098(ptr noundef %1102, ptr noundef %1106)
  store i32 %1107, ptr %65, align 4, !tbaa !9
  %1108 = load i32, ptr %65, align 4, !tbaa !9
  %1109 = icmp ne i32 %1108, 0
  br i1 %1109, label %1110, label %1114

1110:                                             ; preds = %1097
  %1111 = load ptr, ptr %31, align 8, !tbaa !5
  %1112 = load i32, ptr %1111, align 4, !tbaa !9
  %1113 = add nsw i32 %1112, 1
  store i32 %1113, ptr %1111, align 4, !tbaa !9
  br label %1114

1114:                                             ; preds = %1110, %1097
  %1115 = load i32, ptr %65, align 4, !tbaa !9
  %1116 = icmp ne i32 %1115, 0
  br i1 %1116, label %1117, label %1125

1117:                                             ; preds = %1114
  %1118 = load i32, ptr %78, align 4, !tbaa !9
  %1119 = icmp ne i32 %1118, 0
  br i1 %1119, label %1125, label %1120

1120:                                             ; preds = %1117
  %1121 = load ptr, ptr %26, align 8, !tbaa !5
  %1122 = load i32, ptr %1121, align 4, !tbaa !9
  %1123 = add nsw i32 %1122, 2
  %1124 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %1123, ptr %1124, align 4, !tbaa !9
  br label %1125

1125:                                             ; preds = %1120, %1117, %1114
  %1126 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %1126, ptr %78, align 4, !tbaa !9
  br label %1127

1127:                                             ; preds = %1125
  %1128 = load i32, ptr %62, align 4, !tbaa !9
  %1129 = add nsw i32 %1128, 1
  store i32 %1129, ptr %62, align 4, !tbaa !9
  br label %1093, !llvm.loop !18

1130:                                             ; preds = %1093
  br label %1131

1131:                                             ; preds = %1130, %1086
  br label %1132

1132:                                             ; preds = %1131, %925
  %1133 = load i32, ptr %82, align 4, !tbaa !9
  %1134 = sitofp i32 %1133 to float
  %1135 = getelementptr inbounds %struct.complex, ptr %53, i32 0, i32 0
  store float %1134, ptr %1135, align 4, !tbaa !11
  %1136 = getelementptr inbounds %struct.complex, ptr %53, i32 0, i32 1
  store float 0.000000e+00, ptr %1136, align 4, !tbaa !14
  %1137 = getelementptr inbounds %struct.complex, ptr %53, i32 0, i32 0
  %1138 = load float, ptr %1137, align 4, !tbaa !11
  %1139 = load ptr, ptr %38, align 8, !tbaa !5
  %1140 = getelementptr inbounds %struct.complex, ptr %1139, i64 1
  %1141 = getelementptr inbounds %struct.complex, ptr %1140, i32 0, i32 0
  store float %1138, ptr %1141, align 4, !tbaa !11
  %1142 = getelementptr inbounds %struct.complex, ptr %53, i32 0, i32 1
  %1143 = load float, ptr %1142, align 4, !tbaa !14
  %1144 = load ptr, ptr %38, align 8, !tbaa !5
  %1145 = getelementptr inbounds %struct.complex, ptr %1144, i64 1
  %1146 = getelementptr inbounds %struct.complex, ptr %1145, i32 0, i32 1
  store float %1143, ptr %1146, align 4, !tbaa !14
  store i32 1, ptr %87, align 4
  br label %1147

1147:                                             ; preds = %1132, %558, %552, %544
  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 8, 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 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 @cungqr_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @cgghd3_(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 @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 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 @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 @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_n1 = external hidden global i32, align 4
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@c__0 = external hidden global i32, align 4
@.str.5 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b1 = external hidden global %struct.complex, align 4
@c_b2 = external hidden global %struct.complex, align 4
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @cgges3_(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
  %narrow444 = xor i32 %44, -1
  %45 = sext i32 %narrow444 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
  %narrow448 = xor i32 %49, -1
  %50 = sext i32 %narrow448 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
  %.not428 = icmp eq i32 %58, 0
  br i1 %.not428, 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
  %.not433 = phi i1 [ false, %56 ], [ true, %59 ], [ false, %60 ]
  %62 = phi i1 [ false, %56 ], [ false, %59 ], [ true, %60 ]
  %63 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #5
  %.not429 = icmp eq i32 %63, 0
  br i1 %.not429, 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
  %.not430 = icmp eq i32 %66, 0
  br i1 %.not430, 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
  %.not434 = phi i1 [ false, %64 ], [ true, %67 ], [ false, %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 %.thread462.sink.split, label %74

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

75:                                               ; preds = %74
  %76 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str) #5
  %.not432 = icmp eq i32 %76, 0
  br i1 %.not432, label %.thread462.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 %.thread462.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 %.thread462.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 %.thread462.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.cond480 = and i1 %89, %.not433
  %or.cond499 = or i1 %88, %or.cond480
  br i1 %or.cond499, label %.thread462.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.cond481 = and i1 %93, %.not434
  %or.cond500 = or i1 %92, %or.cond481
  br i1 %or.cond500, label %.thread462.sink.split, label %94

94:                                               ; preds = %90
  store i32 1, ptr %22, align 4, !tbaa !5
  %95 = shl nuw i32 %78, 1
  store i32 %95, ptr %23, align 4, !tbaa !5
  %96 = load i32, ptr %17, align 4, !tbaa !5
  %97 = tail call i32 @llvm.smax.i32(i32 %95, i32 1)
  %98 = icmp sge i32 %96, %97
  %or.cond = select i1 %98, i1 true, i1 %73
  br i1 %or.cond, label %99, label %.thread462.sink.split

99:                                               ; preds = %94
  %.pr = load i32, ptr %20, align 4, !tbaa !5
  %100 = icmp eq i32 %.pr, 0
  br i1 %100, label %101, label %.thread462

101:                                              ; preds = %99
  call void @cgeqrf_(ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %16, ptr noundef %16, ptr noundef nonnull @c_n1, ptr noundef nonnull %27) #5
  store i32 1, ptr %22, align 4, !tbaa !5
  %102 = load i32, ptr %4, align 4, !tbaa !5
  %103 = load float, ptr %16, align 4, !tbaa !9
  %104 = fptosi float %103 to i32
  %105 = add nsw i32 %102, %104
  store i32 %105, ptr %23, align 4, !tbaa !5
  %106 = call i32 @llvm.smax.i32(i32 %105, i32 1)
  call void @cunmqr_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %16, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %16, ptr noundef nonnull @c_n1, ptr noundef nonnull %27) #5
  store i32 %106, ptr %22, align 4, !tbaa !5
  %107 = load i32, ptr %4, align 4, !tbaa !5
  %108 = load float, ptr %16, align 4, !tbaa !9
  %109 = fptosi float %108 to i32
  %110 = add nsw i32 %107, %109
  store i32 %110, ptr %23, align 4, !tbaa !5
  %111 = call i32 @llvm.smax.i32(i32 %106, i32 %110)
  %112 = load i32, ptr %31, align 4, !tbaa !5
  %.not436 = icmp eq i32 %112, 0
  br i1 %.not436, label %119, label %113

113:                                              ; preds = %101
  call void @cungqr_(ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %16, ptr noundef nonnull %16, ptr noundef nonnull @c_n1, ptr noundef nonnull %27) #5
  store i32 %111, ptr %22, align 4, !tbaa !5
  %114 = load i32, ptr %4, align 4, !tbaa !5
  %115 = load float, ptr %16, align 4, !tbaa !9
  %116 = fptosi float %115 to i32
  %117 = add nsw i32 %114, %116
  store i32 %117, ptr %23, align 4, !tbaa !5
  %118 = call i32 @llvm.smax.i32(i32 %111, i32 %117)
  br label %119

119:                                              ; preds = %113, %101
  %.0 = phi i32 [ %118, %113 ], [ %111, %101 ]
  call void @cgghd3_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, 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 %16, ptr noundef nonnull @c_n1, ptr noundef nonnull %27) #5
  store i32 %.0, ptr %22, align 4, !tbaa !5
  %120 = load i32, ptr %4, align 4, !tbaa !5
  %121 = load float, ptr %16, align 4, !tbaa !9
  %122 = fptosi float %121 to i32
  %123 = add nsw i32 %120, %122
  store i32 %123, ptr %23, align 4, !tbaa !5
  %124 = call i32 @llvm.smax.i32(i32 %.0, i32 %123)
  call void @chgeqz_(ptr noundef nonnull @.str.2, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %4, ptr noundef nonnull @c__1, 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 %16, ptr noundef nonnull @c_n1, ptr noundef %18, ptr noundef nonnull %27) #5
  store i32 %124, ptr %22, align 4, !tbaa !5
  %125 = load float, ptr %16, align 4, !tbaa !9
  %126 = fptosi float %125 to i32
  store i32 %126, ptr %23, align 4, !tbaa !5
  %127 = call i32 @llvm.smax.i32(i32 %124, i32 %126)
  br i1 %.not431, label %.thread, label %128

128:                                              ; preds = %119
  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 %9, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef nonnull %38, ptr noundef nonnull %16, ptr noundef nonnull @c_n1, ptr noundef nonnull %26, ptr noundef nonnull @c__1, ptr noundef nonnull %27) #5
  store i32 %127, ptr %22, align 4, !tbaa !5
  %129 = load float, ptr %16, align 4, !tbaa !9
  %130 = fptosi float %129 to i32
  store i32 %130, ptr %23, align 4, !tbaa !5
  %131 = call i32 @llvm.smax.i32(i32 %127, i32 %130)
  br label %.thread

.thread:                                          ; preds = %119, %128
  %.1 = phi i32 [ %131, %128 ], [ %127, %119 ]
  %132 = uitofp nneg i32 %.1 to float
  store float %132, ptr %16, align 4, !tbaa !9
  %133 = getelementptr inbounds i8, ptr %16, i64 4
  store float 0.000000e+00, ptr %133, align 4, !tbaa !12
  %.pr461.pr = load i32, ptr %20, align 4, !tbaa !5
  %.not442 = icmp eq i32 %.pr461.pr, 0
  br i1 %.not442, label %137, label %.thread462

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

.thread462:                                       ; preds = %.thread462.sink.split, %99, %.thread
  %134 = phi i32 [ %.pr461.pr, %.thread ], [ %.pr, %99 ], [ %.sink, %.thread462.sink.split ]
  %135 = sub nsw i32 0, %134
  store i32 %135, ptr %22, align 4, !tbaa !5
  %136 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %22, i32 noundef 7) #5
  br label %288

137:                                              ; preds = %.thread
  br i1 %73, label %288, label %138

138:                                              ; preds = %137
  %139 = load i32, ptr %4, align 4, !tbaa !5
  %140 = icmp eq i32 %139, 0
  br i1 %140, label %141, label %142

141:                                              ; preds = %138
  store i32 0, ptr %9, align 4, !tbaa !5
  br label %288

142:                                              ; preds = %138
  %143 = call float @slamch_(ptr noundef nonnull @.str.6) #5
  %144 = call float @slamch_(ptr noundef nonnull @.str.2) #5
  store float %144, ptr %37, align 4, !tbaa !13
  %145 = fdiv float 1.000000e+00, %144
  store float %145, ptr %34, align 4, !tbaa !13
  call void @slabad_(ptr noundef nonnull %37, ptr noundef nonnull %34) #5
  %146 = load float, ptr %37, align 4, !tbaa !13
  %147 = fpext float %146 to double
  %148 = call double @sqrt(double noundef %147) #5
  %149 = fpext float %143 to double
  %150 = fdiv double %148, %149
  %151 = fptrunc double %150 to float
  store float %151, ptr %37, align 4, !tbaa !13
  %152 = fdiv float 1.000000e+00, %151
  store float %152, ptr %34, align 4, !tbaa !13
  %153 = call float @clange_(ptr noundef nonnull @.str.7, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %18) #5
  store float %153, ptr %24, align 4, !tbaa !13
  %154 = fcmp ogt float %153, 0.000000e+00
  %155 = load float, ptr %37, align 4
  %156 = fcmp olt float %153, %155
  %or.cond484 = select i1 %154, i1 %156, i1 false
  br i1 %or.cond484, label %160, label %157

157:                                              ; preds = %142
  %158 = load float, ptr %34, align 4, !tbaa !13
  %159 = fcmp ogt float %153, %158
  br i1 %159, label %160, label %161

160:                                              ; preds = %142, %157
  %storemerge = phi float [ %158, %157 ], [ %155, %142 ]
  store float %storemerge, ptr %35, align 4, !tbaa !13
  call void @clascl_(ptr noundef nonnull @.str.8, 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 %161

161:                                              ; preds = %157, %160
  %.not443469 = phi i1 [ false, %160 ], [ true, %157 ]
  %162 = call float @clange_(ptr noundef nonnull @.str.7, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %18) #5
  store float %162, ptr %25, align 4, !tbaa !13
  %163 = fcmp ogt float %162, 0.000000e+00
  %164 = load float, ptr %37, align 4
  %165 = fcmp olt float %162, %164
  %or.cond486 = select i1 %163, i1 %165, i1 false
  br i1 %or.cond486, label %169, label %166

166:                                              ; preds = %161
  %167 = load float, ptr %34, align 4, !tbaa !13
  %168 = fcmp ogt float %162, %167
  br i1 %168, label %169, label %170

169:                                              ; preds = %161, %166
  %storemerge482 = phi float [ %167, %166 ], [ %164, %161 ]
  store float %storemerge482, ptr %36, align 4, !tbaa !13
  call void @clascl_(ptr noundef nonnull @.str.8, 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 %170

170:                                              ; preds = %166, %169
  %.not445474 = phi i1 [ false, %169 ], [ true, %166 ]
  %171 = load i32, ptr %4, align 4, !tbaa !5
  %172 = add nsw i32 %171, 1
  %173 = add nsw i32 %172, %171
  %174 = sext i32 %172 to i64
  %175 = getelementptr inbounds float, ptr %53, i64 %174
  %176 = sext i32 %173 to i64
  %177 = getelementptr inbounds float, ptr %53, i64 %176
  call void @cggbal_(ptr noundef nonnull @.str.6, 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 %175, ptr noundef nonnull %177, ptr noundef nonnull %27) #5
  %178 = load i32, ptr %39, align 4, !tbaa !5
  %179 = add nsw i32 %178, 1
  %180 = load i32, ptr %40, align 4, !tbaa !5
  %181 = sub i32 %179, %180
  store i32 %181, ptr %33, align 4, !tbaa !5
  %182 = load i32, ptr %4, align 4, !tbaa !5
  %reass.sub = sub i32 %182, %180
  %183 = add i32 %reass.sub, 1
  store i32 %183, ptr %30, align 4, !tbaa !5
  %184 = load i32, ptr %17, align 4, !tbaa !5
  %185 = sub i32 %184, %181
  store i32 %185, ptr %22, align 4, !tbaa !5
  %186 = add i32 %44, 1
  %187 = mul i32 %180, %186
  %188 = sext i32 %187 to i64
  %189 = getelementptr inbounds %struct.complex, ptr %46, i64 %188
  %190 = sext i32 %181 to i64
  %191 = getelementptr %struct.complex, ptr %52, i64 %190
  %192 = getelementptr i8, ptr %191, i64 8
  call void @cgeqrf_(ptr noundef nonnull %33, ptr noundef nonnull %30, ptr noundef %189, ptr noundef nonnull %8, ptr noundef nonnull %16, ptr noundef nonnull %192, ptr noundef nonnull %22, ptr noundef nonnull %27) #5
  %193 = load i32, ptr %17, align 4, !tbaa !5
  %194 = sub i32 %193, %181
  store i32 %194, ptr %22, align 4, !tbaa !5
  %195 = load i32, ptr %40, align 4, !tbaa !5
  %196 = mul i32 %195, %186
  %197 = sext i32 %196 to i64
  %198 = getelementptr inbounds %struct.complex, ptr %46, i64 %197
  %199 = add i32 %41, 1
  %200 = mul i32 %195, %199
  %201 = sext i32 %200 to i64
  %202 = getelementptr inbounds %struct.complex, ptr %43, i64 %201
  call void @cunmqr_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %33, ptr noundef nonnull %30, ptr noundef nonnull %33, ptr noundef %198, ptr noundef nonnull %8, ptr noundef nonnull %16, ptr noundef %202, ptr noundef nonnull %6, ptr noundef nonnull %192, ptr noundef nonnull %22, ptr noundef nonnull %27) #5
  %203 = load i32, ptr %31, align 4, !tbaa !5
  %.not446 = icmp eq i32 %203, 0
  br i1 %.not446, label %227, label %204

204:                                              ; preds = %170
  call void @claset_(ptr noundef nonnull @.str.9, 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
  %205 = load i32, ptr %33, align 4, !tbaa !5
  %206 = icmp sgt i32 %205, 1
  br i1 %206, label %207, label %219

207:                                              ; preds = %204
  %208 = add nsw i32 %205, -1
  store i32 %208, ptr %22, align 4, !tbaa !5
  store i32 %208, ptr %23, align 4, !tbaa !5
  %209 = load i32, ptr %40, align 4, !tbaa !5
  %210 = add nsw i32 %209, 1
  %211 = mul nsw i32 %209, %44
  %212 = add nsw i32 %210, %211
  %213 = sext i32 %212 to i64
  %214 = getelementptr inbounds %struct.complex, ptr %46, i64 %213
  %215 = mul nsw i32 %209, %49
  %216 = add nsw i32 %210, %215
  %217 = sext i32 %216 to i64
  %218 = getelementptr inbounds %struct.complex, ptr %51, i64 %217
  call void @clacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef %214, ptr noundef nonnull %8, ptr noundef %218, ptr noundef nonnull %13) #5
  br label %219

219:                                              ; preds = %207, %204
  %220 = load i32, ptr %17, align 4, !tbaa !5
  %221 = sub i32 %220, %181
  store i32 %221, ptr %22, align 4, !tbaa !5
  %222 = load i32, ptr %40, align 4, !tbaa !5
  %223 = add i32 %49, 1
  %224 = mul i32 %222, %223
  %225 = sext i32 %224 to i64
  %226 = getelementptr inbounds %struct.complex, ptr %51, i64 %225
  call void @cungqr_(ptr noundef nonnull %33, ptr noundef nonnull %33, ptr noundef nonnull %33, ptr noundef %226, ptr noundef nonnull %13, ptr noundef nonnull %16, ptr noundef nonnull %192, ptr noundef nonnull %22, ptr noundef nonnull %27) #5
  br label %227

227:                                              ; preds = %219, %170
  %228 = load i32, ptr %32, align 4, !tbaa !5
  %.not447 = icmp eq i32 %228, 0
  br i1 %.not447, label %230, label %229

229:                                              ; preds = %227
  call void @claset_(ptr noundef nonnull @.str.9, 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 %230

230:                                              ; preds = %229, %227
  %231 = load i32, ptr %17, align 4, !tbaa !5
  %232 = sub i32 %231, %181
  store i32 %232, ptr %22, align 4, !tbaa !5
  call void @cgghd3_(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 %192, ptr noundef nonnull %22, ptr noundef nonnull %27) #5
  store i32 0, ptr %9, align 4, !tbaa !5
  %233 = load i32, ptr %17, align 4, !tbaa !5
  store i32 %233, 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 %177, ptr noundef nonnull %27) #5
  %234 = load i32, ptr %27, align 4, !tbaa !5
  %.not449 = icmp eq i32 %234, 0
  br i1 %.not449, label %244, label %235

235:                                              ; preds = %230
  %236 = icmp slt i32 %234, 1
  %.pre = load i32, ptr %4, align 4, !tbaa !5
  %.not456 = icmp sgt i32 %234, %.pre
  %or.cond501 = select i1 %236, i1 true, i1 %.not456
  br i1 %or.cond501, label %237, label %.loopexit.sink.split

237:                                              ; preds = %235
  %238 = icmp sle i32 %234, %.pre
  %239 = shl i32 %.pre, 1
  %.not457 = icmp sgt i32 %234, %239
  %or.cond459 = or i1 %238, %.not457
  br i1 %or.cond459, label %242, label %240

240:                                              ; preds = %237
  %241 = sub nsw i32 %234, %.pre
  br label %.loopexit.sink.split

242:                                              ; preds = %237
  %243 = add nsw i32 %.pre, 1
  br label %.loopexit.sink.split

244:                                              ; preds = %230
  br i1 %.not431, label %263, label %245

245:                                              ; preds = %244
  br i1 %.not443469, label %247, label %246

246:                                              ; preds = %245
  call void @clascl_(ptr noundef nonnull @.str.8, 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 %247

247:                                              ; preds = %246, %245
  br i1 %.not445474, label %249, label %248

248:                                              ; preds = %247
  call void @clascl_(ptr noundef nonnull @.str.8, 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 %249

249:                                              ; preds = %248, %247
  %250 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %250, ptr %22, align 4, !tbaa !5
  %.not451487 = icmp slt i32 %250, 1
  br i1 %.not451487, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %249, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 1, %249 ]
  %251 = getelementptr inbounds %struct.complex, ptr %47, i64 %indvars.iv
  %252 = getelementptr inbounds %struct.complex, ptr %48, i64 %indvars.iv
  %253 = call i32 (ptr, ptr, ...) %3(ptr noundef nonnull %251, ptr noundef nonnull %252) #5
  %254 = getelementptr inbounds i32, ptr %54, i64 %indvars.iv
  store i32 %253, ptr %254, align 4, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %255 = load i32, ptr %22, align 4, !tbaa !5
  %256 = sext i32 %255 to i64
  %.not451.not = icmp slt i64 %indvars.iv, %256
  br i1 %.not451.not, label %.lr.ph, label %._crit_edge, !llvm.loop !14

._crit_edge:                                      ; preds = %.lr.ph, %249
  %257 = load i32, ptr %17, align 4, !tbaa !5
  store i32 %257, 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
  %258 = load i32, ptr %27, align 4, !tbaa !5
  %259 = icmp eq i32 %258, 1
  br i1 %259, label %260, label %263

260:                                              ; preds = %._crit_edge
  %261 = load i32, ptr %4, align 4, !tbaa !5
  %262 = add nsw i32 %261, 3
  store i32 %262, ptr %20, align 4, !tbaa !5
  br label %263

263:                                              ; preds = %._crit_edge, %260, %244
  %264 = load i32, ptr %31, align 4, !tbaa !5
  %.not452 = icmp eq i32 %264, 0
  br i1 %.not452, label %266, label %265

265:                                              ; preds = %263
  call void @cggbak_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.3, ptr noundef nonnull %4, ptr noundef nonnull %40, ptr noundef nonnull %39, ptr noundef %18, ptr noundef nonnull %175, ptr noundef nonnull %4, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %27) #5
  br label %266

266:                                              ; preds = %265, %263
  %267 = load i32, ptr %32, align 4, !tbaa !5
  %.not453 = icmp eq i32 %267, 0
  br i1 %.not453, label %269, label %268

268:                                              ; preds = %266
  call void @cggbak_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.10, ptr noundef nonnull %4, ptr noundef nonnull %40, ptr noundef nonnull %39, ptr noundef %18, ptr noundef nonnull %175, ptr noundef nonnull %4, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %27) #5
  br label %269

269:                                              ; preds = %268, %266
  br i1 %.not443469, label %271, label %270

270:                                              ; preds = %269
  call void @clascl_(ptr noundef nonnull @.str.11, 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.8, 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 %271

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

272:                                              ; preds = %271
  call void @clascl_(ptr noundef nonnull @.str.11, 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.8, 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 %273

273:                                              ; preds = %272, %271
  br i1 %.not431, label %.loopexit, label %274

274:                                              ; preds = %273
  store i32 0, ptr %9, align 4, !tbaa !5
  %275 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %275, ptr %22, align 4, !tbaa !5
  %.not454489 = icmp slt i32 %275, 1
  br i1 %.not454489, label %.loopexit, label %.lr.ph493

.lr.ph493:                                        ; preds = %274, %.thread475
  %indvars.iv496 = phi i64 [ %indvars.iv.next497, %.thread475 ], [ 1, %274 ]
  %.0406491 = phi i32 [ %278, %.thread475 ], [ 1, %274 ]
  %276 = getelementptr inbounds %struct.complex, ptr %47, i64 %indvars.iv496
  %277 = getelementptr inbounds %struct.complex, ptr %48, i64 %indvars.iv496
  %278 = call i32 (ptr, ptr, ...) %3(ptr noundef nonnull %276, ptr noundef nonnull %277) #5
  %.not455 = icmp eq i32 %278, 0
  br i1 %.not455, label %.thread475, label %279

279:                                              ; preds = %.lr.ph493
  %280 = load i32, ptr %9, align 4, !tbaa !5
  %281 = add nsw i32 %280, 1
  store i32 %281, ptr %9, align 4, !tbaa !5
  %.not494 = icmp eq i32 %.0406491, 0
  br i1 %.not494, label %282, label %.thread475

282:                                              ; preds = %279
  %283 = load i32, ptr %4, align 4, !tbaa !5
  %284 = add nsw i32 %283, 2
  store i32 %284, ptr %20, align 4, !tbaa !5
  br label %.thread475

.thread475:                                       ; preds = %.lr.ph493, %282, %279
  %indvars.iv.next497 = add nuw nsw i64 %indvars.iv496, 1
  %285 = load i32, ptr %22, align 4, !tbaa !5
  %286 = sext i32 %285 to i64
  %.not454.not = icmp slt i64 %indvars.iv496, %286
  br i1 %.not454.not, label %.lr.ph493, label %.loopexit, !llvm.loop !16

.loopexit.sink.split:                             ; preds = %235, %240, %242
  %.sink502 = phi i32 [ %243, %242 ], [ %241, %240 ], [ %234, %235 ]
  store i32 %.sink502, ptr %20, align 4, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.thread475, %.loopexit.sink.split, %274, %273
  %287 = uitofp nneg i32 %.1 to float
  store float %287, ptr %16, align 4, !tbaa !9
  store float 0.000000e+00, ptr %133, align 4, !tbaa !12
  br label %288

288:                                              ; preds = %137, %.loopexit, %141, %.thread462
  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 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 @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 @cgghd3_(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 @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 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 @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 @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,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass