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

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

%struct.complex = type { float, float }

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

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

163:                                              ; preds = %26
  store i32 1, ptr %83, align 4, !tbaa !9
  store i32 0, ptr %74, align 4, !tbaa !9
  br label %171

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

168:                                              ; preds = %164
  store i32 2, ptr %83, align 4, !tbaa !9
  store i32 1, ptr %74, align 4, !tbaa !9
  br label %170

169:                                              ; preds = %164
  store i32 -1, ptr %83, align 4, !tbaa !9
  store i32 0, ptr %74, align 4, !tbaa !9
  br label %170

170:                                              ; preds = %169, %168
  br label %171

171:                                              ; preds = %170, %163
  %172 = load ptr, ptr %28, align 8, !tbaa !5
  %173 = call i32 @lsame_(ptr noundef %172, ptr noundef @.str)
  %174 = icmp ne i32 %173, 0
  br i1 %174, label %175, label %176

175:                                              ; preds = %171
  store i32 1, ptr %85, align 4, !tbaa !9
  store i32 0, ptr %75, align 4, !tbaa !9
  br label %183

176:                                              ; preds = %171
  %177 = load ptr, ptr %28, align 8, !tbaa !5
  %178 = call i32 @lsame_(ptr noundef %177, ptr noundef @.str.1)
  %179 = icmp ne i32 %178, 0
  br i1 %179, label %180, label %181

180:                                              ; preds = %176
  store i32 2, ptr %85, align 4, !tbaa !9
  store i32 1, ptr %75, align 4, !tbaa !9
  br label %182

181:                                              ; preds = %176
  store i32 -1, ptr %85, align 4, !tbaa !9
  store i32 0, ptr %75, align 4, !tbaa !9
  br label %182

182:                                              ; preds = %181, %180
  br label %183

183:                                              ; preds = %182, %175
  %184 = load ptr, ptr %29, align 8, !tbaa !5
  %185 = call i32 @lsame_(ptr noundef %184, ptr noundef @.str.2)
  store i32 %185, ptr %96, align 4, !tbaa !9
  %186 = load ptr, ptr %31, align 8, !tbaa !5
  %187 = call i32 @lsame_(ptr noundef %186, ptr noundef @.str)
  store i32 %187, ptr %94, align 4, !tbaa !9
  %188 = load ptr, ptr %31, align 8, !tbaa !5
  %189 = call i32 @lsame_(ptr noundef %188, ptr noundef @.str.3)
  store i32 %189, ptr %88, align 4, !tbaa !9
  %190 = load ptr, ptr %31, align 8, !tbaa !5
  %191 = call i32 @lsame_(ptr noundef %190, ptr noundef @.str.1)
  store i32 %191, ptr %98, align 4, !tbaa !9
  %192 = load ptr, ptr %31, align 8, !tbaa !5
  %193 = call i32 @lsame_(ptr noundef %192, ptr noundef @.str.4)
  store i32 %193, ptr %86, align 4, !tbaa !9
  %194 = load ptr, ptr %47, align 8, !tbaa !5
  %195 = load i32, ptr %194, align 4, !tbaa !9
  %196 = icmp eq i32 %195, -1
  br i1 %196, label %201, label %197

197:                                              ; preds = %183
  %198 = load ptr, ptr %50, align 8, !tbaa !5
  %199 = load i32, ptr %198, align 4, !tbaa !9
  %200 = icmp eq i32 %199, -1
  br label %201

201:                                              ; preds = %197, %183
  %202 = phi i1 [ true, %183 ], [ %200, %197 ]
  %203 = zext i1 %202 to i32
  store i32 %203, ptr %97, align 4, !tbaa !9
  %204 = load i32, ptr %94, align 4, !tbaa !9
  %205 = icmp ne i32 %204, 0
  br i1 %205, label %206, label %207

206:                                              ; preds = %201
  store i32 0, ptr %63, align 4, !tbaa !9
  br label %222

207:                                              ; preds = %201
  %208 = load i32, ptr %88, align 4, !tbaa !9
  %209 = icmp ne i32 %208, 0
  br i1 %209, label %210, label %211

210:                                              ; preds = %207
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %221

211:                                              ; preds = %207
  %212 = load i32, ptr %98, align 4, !tbaa !9
  %213 = icmp ne i32 %212, 0
  br i1 %213, label %214, label %215

214:                                              ; preds = %211
  store i32 2, ptr %63, align 4, !tbaa !9
  br label %220

215:                                              ; preds = %211
  %216 = load i32, ptr %86, align 4, !tbaa !9
  %217 = icmp ne i32 %216, 0
  br i1 %217, label %218, label %219

218:                                              ; preds = %215
  store i32 4, ptr %63, align 4, !tbaa !9
  br label %219

219:                                              ; preds = %218, %215
  br label %220

220:                                              ; preds = %219, %214
  br label %221

221:                                              ; preds = %220, %210
  br label %222

222:                                              ; preds = %221, %206
  %223 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 0, ptr %223, align 4, !tbaa !9
  %224 = load i32, ptr %83, align 4, !tbaa !9
  %225 = icmp sle i32 %224, 0
  br i1 %225, label %226, label %228

226:                                              ; preds = %222
  %227 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -1, ptr %227, align 4, !tbaa !9
  br label %336

228:                                              ; preds = %222
  %229 = load i32, ptr %85, align 4, !tbaa !9
  %230 = icmp sle i32 %229, 0
  br i1 %230, label %231, label %233

231:                                              ; preds = %228
  %232 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -2, ptr %232, align 4, !tbaa !9
  br label %335

233:                                              ; preds = %228
  %234 = load i32, ptr %96, align 4, !tbaa !9
  %235 = icmp ne i32 %234, 0
  br i1 %235, label %242, label %236

236:                                              ; preds = %233
  %237 = load ptr, ptr %29, align 8, !tbaa !5
  %238 = call i32 @lsame_(ptr noundef %237, ptr noundef @.str)
  %239 = icmp ne i32 %238, 0
  br i1 %239, label %242, label %240

240:                                              ; preds = %236
  %241 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -3, ptr %241, align 4, !tbaa !9
  br label %334

242:                                              ; preds = %236, %233
  %243 = load i32, ptr %94, align 4, !tbaa !9
  %244 = icmp ne i32 %243, 0
  br i1 %244, label %254, label %245

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

248:                                              ; preds = %245
  %249 = load i32, ptr %98, align 4, !tbaa !9
  %250 = icmp ne i32 %249, 0
  br i1 %250, label %254, label %251

251:                                              ; preds = %248
  %252 = load i32, ptr %86, align 4, !tbaa !9
  %253 = icmp ne i32 %252, 0
  br i1 %253, label %254, label %260

254:                                              ; preds = %251, %248, %245, %242
  %255 = load i32, ptr %96, align 4, !tbaa !9
  %256 = icmp ne i32 %255, 0
  br i1 %256, label %262, label %257

257:                                              ; preds = %254
  %258 = load i32, ptr %94, align 4, !tbaa !9
  %259 = icmp ne i32 %258, 0
  br i1 %259, label %262, label %260

260:                                              ; preds = %257, %251
  %261 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -5, ptr %261, align 4, !tbaa !9
  br label %333

262:                                              ; preds = %257, %254
  %263 = load ptr, ptr %32, align 8, !tbaa !5
  %264 = load i32, ptr %263, align 4, !tbaa !9
  %265 = icmp slt i32 %264, 0
  br i1 %265, label %266, label %268

266:                                              ; preds = %262
  %267 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -6, ptr %267, align 4, !tbaa !9
  br label %332

268:                                              ; preds = %262
  %269 = load ptr, ptr %34, align 8, !tbaa !5
  %270 = load i32, ptr %269, align 4, !tbaa !9
  %271 = load ptr, ptr %32, align 8, !tbaa !5
  %272 = load i32, ptr %271, align 4, !tbaa !9
  %273 = icmp sge i32 1, %272
  br i1 %273, label %274, label %275

274:                                              ; preds = %268
  br label %278

275:                                              ; preds = %268
  %276 = load ptr, ptr %32, align 8, !tbaa !5
  %277 = load i32, ptr %276, align 4, !tbaa !9
  br label %278

278:                                              ; preds = %275, %274
  %279 = phi i32 [ 1, %274 ], [ %277, %275 ]
  %280 = icmp slt i32 %270, %279
  br i1 %280, label %281, label %283

281:                                              ; preds = %278
  %282 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -8, ptr %282, align 4, !tbaa !9
  br label %331

283:                                              ; preds = %278
  %284 = load ptr, ptr %36, align 8, !tbaa !5
  %285 = load i32, ptr %284, align 4, !tbaa !9
  %286 = load ptr, ptr %32, align 8, !tbaa !5
  %287 = load i32, ptr %286, align 4, !tbaa !9
  %288 = icmp sge i32 1, %287
  br i1 %288, label %289, label %290

289:                                              ; preds = %283
  br label %293

290:                                              ; preds = %283
  %291 = load ptr, ptr %32, align 8, !tbaa !5
  %292 = load i32, ptr %291, align 4, !tbaa !9
  br label %293

293:                                              ; preds = %290, %289
  %294 = phi i32 [ 1, %289 ], [ %292, %290 ]
  %295 = icmp slt i32 %285, %294
  br i1 %295, label %296, label %298

296:                                              ; preds = %293
  %297 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -10, ptr %297, align 4, !tbaa !9
  br label %330

298:                                              ; preds = %293
  %299 = load ptr, ptr %41, align 8, !tbaa !5
  %300 = load i32, ptr %299, align 4, !tbaa !9
  %301 = icmp slt i32 %300, 1
  br i1 %301, label %311, label %302

302:                                              ; preds = %298
  %303 = load i32, ptr %74, align 4, !tbaa !9
  %304 = icmp ne i32 %303, 0
  br i1 %304, label %305, label %313

305:                                              ; preds = %302
  %306 = load ptr, ptr %41, align 8, !tbaa !5
  %307 = load i32, ptr %306, align 4, !tbaa !9
  %308 = load ptr, ptr %32, align 8, !tbaa !5
  %309 = load i32, ptr %308, align 4, !tbaa !9
  %310 = icmp slt i32 %307, %309
  br i1 %310, label %311, label %313

311:                                              ; preds = %305, %298
  %312 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -15, ptr %312, align 4, !tbaa !9
  br label %329

313:                                              ; preds = %305, %302
  %314 = load ptr, ptr %43, align 8, !tbaa !5
  %315 = load i32, ptr %314, align 4, !tbaa !9
  %316 = icmp slt i32 %315, 1
  br i1 %316, label %326, label %317

317:                                              ; preds = %313
  %318 = load i32, ptr %75, align 4, !tbaa !9
  %319 = icmp ne i32 %318, 0
  br i1 %319, label %320, label %328

320:                                              ; preds = %317
  %321 = load ptr, ptr %43, align 8, !tbaa !5
  %322 = load i32, ptr %321, align 4, !tbaa !9
  %323 = load ptr, ptr %32, align 8, !tbaa !5
  %324 = load i32, ptr %323, align 4, !tbaa !9
  %325 = icmp slt i32 %322, %324
  br i1 %325, label %326, label %328

326:                                              ; preds = %320, %313
  %327 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -17, ptr %327, align 4, !tbaa !9
  br label %328

328:                                              ; preds = %326, %320, %317
  br label %329

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

330:                                              ; preds = %329, %296
  br label %331

331:                                              ; preds = %330, %281
  br label %332

332:                                              ; preds = %331, %266
  br label %333

333:                                              ; preds = %332, %260
  br label %334

334:                                              ; preds = %333, %240
  br label %335

335:                                              ; preds = %334, %231
  br label %336

336:                                              ; preds = %335, %226
  %337 = load ptr, ptr %52, align 8, !tbaa !5
  %338 = load i32, ptr %337, align 4, !tbaa !9
  %339 = icmp eq i32 %338, 0
  br i1 %339, label %340, label %460

340:                                              ; preds = %336
  %341 = load ptr, ptr %32, align 8, !tbaa !5
  %342 = load i32, ptr %341, align 4, !tbaa !9
  %343 = icmp sgt i32 %342, 0
  br i1 %343, label %344, label %414

344:                                              ; preds = %340
  %345 = load ptr, ptr %32, align 8, !tbaa !5
  %346 = load i32, ptr %345, align 4, !tbaa !9
  %347 = shl i32 %346, 1
  store i32 %347, ptr %92, align 4, !tbaa !9
  %348 = load ptr, ptr %32, align 8, !tbaa !5
  %349 = load i32, ptr %348, align 4, !tbaa !9
  %350 = load ptr, ptr %32, align 8, !tbaa !5
  %351 = load ptr, ptr %32, align 8, !tbaa !5
  %352 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %350, ptr noundef @c__1, ptr noundef %351, ptr noundef @c__0, i32 noundef 6, i32 noundef 1)
  %353 = add nsw i32 %352, 1
  %354 = mul nsw i32 %349, %353
  store i32 %354, ptr %93, align 4, !tbaa !9
  %355 = load i32, ptr %93, align 4, !tbaa !9
  store i32 %355, ptr %61, align 4, !tbaa !9
  %356 = load ptr, ptr %32, align 8, !tbaa !5
  %357 = load i32, ptr %356, align 4, !tbaa !9
  %358 = load ptr, ptr %32, align 8, !tbaa !5
  %359 = load ptr, ptr %32, align 8, !tbaa !5
  %360 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.7, ptr noundef @.str.6, ptr noundef %358, ptr noundef @c__1, ptr noundef %359, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  %361 = add nsw i32 %360, 1
  %362 = mul nsw i32 %357, %361
  store i32 %362, ptr %62, align 4, !tbaa !9
  %363 = load i32, ptr %61, align 4, !tbaa !9
  %364 = load i32, ptr %62, align 4, !tbaa !9
  %365 = icmp sge i32 %363, %364
  br i1 %365, label %366, label %368

366:                                              ; preds = %344
  %367 = load i32, ptr %61, align 4, !tbaa !9
  br label %370

368:                                              ; preds = %344
  %369 = load i32, ptr %62, align 4, !tbaa !9
  br label %370

370:                                              ; preds = %368, %366
  %371 = phi i32 [ %367, %366 ], [ %369, %368 ]
  store i32 %371, ptr %93, align 4, !tbaa !9
  %372 = load i32, ptr %74, align 4, !tbaa !9
  %373 = icmp ne i32 %372, 0
  br i1 %373, label %374, label %392

374:                                              ; preds = %370
  %375 = load i32, ptr %93, align 4, !tbaa !9
  store i32 %375, ptr %61, align 4, !tbaa !9
  %376 = load ptr, ptr %32, align 8, !tbaa !5
  %377 = load i32, ptr %376, align 4, !tbaa !9
  %378 = load ptr, ptr %32, align 8, !tbaa !5
  %379 = load ptr, ptr %32, align 8, !tbaa !5
  %380 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.8, ptr noundef @.str.6, ptr noundef %378, ptr noundef @c__1, ptr noundef %379, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  %381 = add nsw i32 %380, 1
  %382 = mul nsw i32 %377, %381
  store i32 %382, ptr %62, align 4, !tbaa !9
  %383 = load i32, ptr %61, align 4, !tbaa !9
  %384 = load i32, ptr %62, align 4, !tbaa !9
  %385 = icmp sge i32 %383, %384
  br i1 %385, label %386, label %388

386:                                              ; preds = %374
  %387 = load i32, ptr %61, align 4, !tbaa !9
  br label %390

388:                                              ; preds = %374
  %389 = load i32, ptr %62, align 4, !tbaa !9
  br label %390

390:                                              ; preds = %388, %386
  %391 = phi i32 [ %387, %386 ], [ %389, %388 ]
  store i32 %391, ptr %93, align 4, !tbaa !9
  br label %392

392:                                              ; preds = %390, %370
  %393 = load i32, ptr %93, align 4, !tbaa !9
  store i32 %393, ptr %69, align 4, !tbaa !9
  %394 = load i32, ptr %63, align 4, !tbaa !9
  %395 = icmp sge i32 %394, 1
  br i1 %395, label %396, label %413

396:                                              ; preds = %392
  %397 = load i32, ptr %69, align 4, !tbaa !9
  store i32 %397, ptr %61, align 4, !tbaa !9
  %398 = load ptr, ptr %32, align 8, !tbaa !5
  %399 = load i32, ptr %398, align 4, !tbaa !9
  %400 = load ptr, ptr %32, align 8, !tbaa !5
  %401 = load i32, ptr %400, align 4, !tbaa !9
  %402 = mul nsw i32 %399, %401
  %403 = sdiv i32 %402, 2
  store i32 %403, ptr %62, align 4, !tbaa !9
  %404 = load i32, ptr %61, align 4, !tbaa !9
  %405 = load i32, ptr %62, align 4, !tbaa !9
  %406 = icmp sge i32 %404, %405
  br i1 %406, label %407, label %409

407:                                              ; preds = %396
  %408 = load i32, ptr %61, align 4, !tbaa !9
  br label %411

409:                                              ; preds = %396
  %410 = load i32, ptr %62, align 4, !tbaa !9
  br label %411

411:                                              ; preds = %409, %407
  %412 = phi i32 [ %408, %407 ], [ %410, %409 ]
  store i32 %412, ptr %69, align 4, !tbaa !9
  br label %413

413:                                              ; preds = %411, %392
  br label %415

414:                                              ; preds = %340
  store i32 1, ptr %92, align 4, !tbaa !9
  store i32 1, ptr %93, align 4, !tbaa !9
  store i32 1, ptr %69, align 4, !tbaa !9
  br label %415

415:                                              ; preds = %414, %413
  %416 = load i32, ptr %69, align 4, !tbaa !9
  %417 = sitofp i32 %416 to float
  %418 = load ptr, ptr %46, align 8, !tbaa !5
  %419 = getelementptr inbounds %struct.complex, ptr %418, i64 1
  %420 = getelementptr inbounds %struct.complex, ptr %419, i32 0, i32 0
  store float %417, ptr %420, align 4, !tbaa !11
  %421 = load ptr, ptr %46, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.complex, ptr %421, i64 1
  %423 = getelementptr inbounds %struct.complex, ptr %422, i32 0, i32 1
  store float 0.000000e+00, ptr %423, align 4, !tbaa !14
  %424 = load i32, ptr %94, align 4, !tbaa !9
  %425 = icmp ne i32 %424, 0
  br i1 %425, label %430, label %426

426:                                              ; preds = %415
  %427 = load ptr, ptr %32, align 8, !tbaa !5
  %428 = load i32, ptr %427, align 4, !tbaa !9
  %429 = icmp eq i32 %428, 0
  br i1 %429, label %430, label %431

430:                                              ; preds = %426, %415
  store i32 1, ptr %87, align 4, !tbaa !9
  br label %435

431:                                              ; preds = %426
  %432 = load ptr, ptr %32, align 8, !tbaa !5
  %433 = load i32, ptr %432, align 4, !tbaa !9
  %434 = add nsw i32 %433, 2
  store i32 %434, ptr %87, align 4, !tbaa !9
  br label %435

435:                                              ; preds = %431, %430
  %436 = load i32, ptr %87, align 4, !tbaa !9
  %437 = load ptr, ptr %49, align 8, !tbaa !5
  %438 = getelementptr inbounds i32, ptr %437, i64 1
  store i32 %436, ptr %438, align 4, !tbaa !9
  %439 = load ptr, ptr %47, align 8, !tbaa !5
  %440 = load i32, ptr %439, align 4, !tbaa !9
  %441 = load i32, ptr %92, align 4, !tbaa !9
  %442 = icmp slt i32 %440, %441
  br i1 %442, label %443, label %448

443:                                              ; preds = %435
  %444 = load i32, ptr %97, align 4, !tbaa !9
  %445 = icmp ne i32 %444, 0
  br i1 %445, label %448, label %446

446:                                              ; preds = %443
  %447 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -21, ptr %447, align 4, !tbaa !9
  br label %459

448:                                              ; preds = %443, %435
  %449 = load ptr, ptr %50, align 8, !tbaa !5
  %450 = load i32, ptr %449, align 4, !tbaa !9
  %451 = load i32, ptr %87, align 4, !tbaa !9
  %452 = icmp slt i32 %450, %451
  br i1 %452, label %453, label %458

453:                                              ; preds = %448
  %454 = load i32, ptr %97, align 4, !tbaa !9
  %455 = icmp ne i32 %454, 0
  br i1 %455, label %458, label %456

456:                                              ; preds = %453
  %457 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -24, ptr %457, align 4, !tbaa !9
  br label %458

458:                                              ; preds = %456, %453, %448
  br label %459

459:                                              ; preds = %458, %446
  br label %460

460:                                              ; preds = %459, %336
  %461 = load ptr, ptr %52, align 8, !tbaa !5
  %462 = load i32, ptr %461, align 4, !tbaa !9
  %463 = icmp ne i32 %462, 0
  br i1 %463, label %464, label %469

464:                                              ; preds = %460
  %465 = load ptr, ptr %52, align 8, !tbaa !5
  %466 = load i32, ptr %465, align 4, !tbaa !9
  %467 = sub nsw i32 0, %466
  store i32 %467, ptr %61, align 4, !tbaa !9
  %468 = call i32 @xerbla_(ptr noundef @.str.9, ptr noundef %61, i32 noundef 6)
  store i32 1, ptr %103, align 4
  br label %1114

469:                                              ; preds = %460
  %470 = load i32, ptr %97, align 4, !tbaa !9
  %471 = icmp ne i32 %470, 0
  br i1 %471, label %472, label %473

472:                                              ; preds = %469
  store i32 1, ptr %103, align 4
  br label %1114

473:                                              ; preds = %469
  br label %474

474:                                              ; preds = %473
  %475 = load ptr, ptr %32, align 8, !tbaa !5
  %476 = load i32, ptr %475, align 4, !tbaa !9
  %477 = icmp eq i32 %476, 0
  br i1 %477, label %478, label %480

478:                                              ; preds = %474
  %479 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 0, ptr %479, align 4, !tbaa !9
  store i32 1, ptr %103, align 4
  br label %1114

480:                                              ; preds = %474
  %481 = call float @slamch_(ptr noundef @.str.10)
  store float %481, ptr %102, align 4, !tbaa !15
  %482 = call float @slamch_(ptr noundef @.str.2)
  store float %482, ptr %95, align 4, !tbaa !15
  %483 = load float, ptr %95, align 4, !tbaa !15
  %484 = fdiv float 1.000000e+00, %483
  store float %484, ptr %82, align 4, !tbaa !15
  call void @slabad_(ptr noundef %95, ptr noundef %82)
  %485 = load float, ptr %95, align 4, !tbaa !15
  %486 = fpext float %485 to double
  %487 = call double @sqrt(double noundef %486) #4
  %488 = load float, ptr %102, align 4, !tbaa !15
  %489 = fpext float %488 to double
  %490 = fdiv double %487, %489
  %491 = fptrunc double %490 to float
  store float %491, ptr %95, align 4, !tbaa !15
  %492 = load float, ptr %95, align 4, !tbaa !15
  %493 = fdiv float 1.000000e+00, %492
  store float %493, ptr %82, align 4, !tbaa !15
  %494 = load ptr, ptr %32, align 8, !tbaa !5
  %495 = load ptr, ptr %32, align 8, !tbaa !5
  %496 = load ptr, ptr %33, align 8, !tbaa !5
  %497 = load i32, ptr %54, align 4, !tbaa !9
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds %struct.complex, ptr %496, i64 %498
  %500 = load ptr, ptr %34, align 8, !tbaa !5
  %501 = load ptr, ptr %48, align 8, !tbaa !5
  %502 = getelementptr inbounds float, ptr %501, i64 1
  %503 = call float @clange_(ptr noundef @.str.11, ptr noundef %494, ptr noundef %495, ptr noundef %499, ptr noundef %500, ptr noundef %502)
  store float %503, ptr %64, align 4, !tbaa !15
  store i32 0, ptr %80, align 4, !tbaa !9
  %504 = load float, ptr %64, align 4, !tbaa !15
  %505 = fcmp ogt float %504, 0.000000e+00
  br i1 %505, label %506, label %512

506:                                              ; preds = %480
  %507 = load float, ptr %64, align 4, !tbaa !15
  %508 = load float, ptr %95, align 4, !tbaa !15
  %509 = fcmp olt float %507, %508
  br i1 %509, label %510, label %512

510:                                              ; preds = %506
  %511 = load float, ptr %95, align 4, !tbaa !15
  store float %511, ptr %90, align 4, !tbaa !15
  store i32 1, ptr %80, align 4, !tbaa !9
  br label %519

512:                                              ; preds = %506, %480
  %513 = load float, ptr %64, align 4, !tbaa !15
  %514 = load float, ptr %82, align 4, !tbaa !15
  %515 = fcmp ogt float %513, %514
  br i1 %515, label %516, label %518

516:                                              ; preds = %512
  %517 = load float, ptr %82, align 4, !tbaa !15
  store float %517, ptr %90, align 4, !tbaa !15
  store i32 1, ptr %80, align 4, !tbaa !9
  br label %518

518:                                              ; preds = %516, %512
  br label %519

519:                                              ; preds = %518, %510
  %520 = load i32, ptr %80, align 4, !tbaa !9
  %521 = icmp ne i32 %520, 0
  br i1 %521, label %522, label %530

522:                                              ; preds = %519
  %523 = load ptr, ptr %32, align 8, !tbaa !5
  %524 = load ptr, ptr %32, align 8, !tbaa !5
  %525 = load ptr, ptr %33, align 8, !tbaa !5
  %526 = load i32, ptr %54, align 4, !tbaa !9
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds %struct.complex, ptr %525, i64 %527
  %529 = load ptr, ptr %34, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %64, ptr noundef %90, ptr noundef %523, ptr noundef %524, ptr noundef %528, ptr noundef %529, ptr noundef %66)
  br label %530

530:                                              ; preds = %522, %519
  %531 = load ptr, ptr %32, align 8, !tbaa !5
  %532 = load ptr, ptr %32, align 8, !tbaa !5
  %533 = load ptr, ptr %35, align 8, !tbaa !5
  %534 = load i32, ptr %56, align 4, !tbaa !9
  %535 = sext i32 %534 to i64
  %536 = getelementptr inbounds %struct.complex, ptr %533, i64 %535
  %537 = load ptr, ptr %36, align 8, !tbaa !5
  %538 = load ptr, ptr %48, align 8, !tbaa !5
  %539 = getelementptr inbounds float, ptr %538, i64 1
  %540 = call float @clange_(ptr noundef @.str.11, ptr noundef %531, ptr noundef %532, ptr noundef %536, ptr noundef %537, ptr noundef %539)
  store float %540, ptr %65, align 4, !tbaa !15
  store i32 0, ptr %81, align 4, !tbaa !9
  %541 = load float, ptr %65, align 4, !tbaa !15
  %542 = fcmp ogt float %541, 0.000000e+00
  br i1 %542, label %543, label %549

543:                                              ; preds = %530
  %544 = load float, ptr %65, align 4, !tbaa !15
  %545 = load float, ptr %95, align 4, !tbaa !15
  %546 = fcmp olt float %544, %545
  br i1 %546, label %547, label %549

547:                                              ; preds = %543
  %548 = load float, ptr %95, align 4, !tbaa !15
  store float %548, ptr %91, align 4, !tbaa !15
  store i32 1, ptr %81, align 4, !tbaa !9
  br label %556

549:                                              ; preds = %543, %530
  %550 = load float, ptr %65, align 4, !tbaa !15
  %551 = load float, ptr %82, align 4, !tbaa !15
  %552 = fcmp ogt float %550, %551
  br i1 %552, label %553, label %555

553:                                              ; preds = %549
  %554 = load float, ptr %82, align 4, !tbaa !15
  store float %554, ptr %91, align 4, !tbaa !15
  store i32 1, ptr %81, align 4, !tbaa !9
  br label %555

555:                                              ; preds = %553, %549
  br label %556

556:                                              ; preds = %555, %547
  %557 = load i32, ptr %81, align 4, !tbaa !9
  %558 = icmp ne i32 %557, 0
  br i1 %558, label %559, label %567

559:                                              ; preds = %556
  %560 = load ptr, ptr %32, align 8, !tbaa !5
  %561 = load ptr, ptr %32, align 8, !tbaa !5
  %562 = load ptr, ptr %35, align 8, !tbaa !5
  %563 = load i32, ptr %56, align 4, !tbaa !9
  %564 = sext i32 %563 to i64
  %565 = getelementptr inbounds %struct.complex, ptr %562, i64 %564
  %566 = load ptr, ptr %36, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %65, ptr noundef %91, ptr noundef %560, ptr noundef %561, ptr noundef %565, ptr noundef %566, ptr noundef %66)
  br label %567

567:                                              ; preds = %559, %556
  store i32 1, ptr %71, align 4, !tbaa !9
  %568 = load ptr, ptr %32, align 8, !tbaa !5
  %569 = load i32, ptr %568, align 4, !tbaa !9
  %570 = add nsw i32 %569, 1
  store i32 %570, ptr %84, align 4, !tbaa !9
  %571 = load i32, ptr %84, align 4, !tbaa !9
  %572 = load ptr, ptr %32, align 8, !tbaa !5
  %573 = load i32, ptr %572, align 4, !tbaa !9
  %574 = add nsw i32 %571, %573
  store i32 %574, ptr %76, align 4, !tbaa !9
  %575 = load ptr, ptr %32, align 8, !tbaa !5
  %576 = load ptr, ptr %33, align 8, !tbaa !5
  %577 = load i32, ptr %54, align 4, !tbaa !9
  %578 = sext i32 %577 to i64
  %579 = getelementptr inbounds %struct.complex, ptr %576, i64 %578
  %580 = load ptr, ptr %34, align 8, !tbaa !5
  %581 = load ptr, ptr %35, align 8, !tbaa !5
  %582 = load i32, ptr %56, align 4, !tbaa !9
  %583 = sext i32 %582 to i64
  %584 = getelementptr inbounds %struct.complex, ptr %581, i64 %583
  %585 = load ptr, ptr %36, align 8, !tbaa !5
  %586 = load ptr, ptr %48, align 8, !tbaa !5
  %587 = load i32, ptr %71, align 4, !tbaa !9
  %588 = sext i32 %587 to i64
  %589 = getelementptr inbounds float, ptr %586, i64 %588
  %590 = load ptr, ptr %48, align 8, !tbaa !5
  %591 = load i32, ptr %84, align 4, !tbaa !9
  %592 = sext i32 %591 to i64
  %593 = getelementptr inbounds float, ptr %590, i64 %592
  %594 = load ptr, ptr %48, align 8, !tbaa !5
  %595 = load i32, ptr %76, align 4, !tbaa !9
  %596 = sext i32 %595 to i64
  %597 = getelementptr inbounds float, ptr %594, i64 %596
  call void @cggbal_(ptr noundef @.str.10, ptr noundef %575, ptr noundef %579, ptr noundef %580, ptr noundef %584, ptr noundef %585, ptr noundef %101, ptr noundef %100, ptr noundef %589, ptr noundef %593, ptr noundef %597, ptr noundef %66)
  %598 = load i32, ptr %100, align 4, !tbaa !9
  %599 = add nsw i32 %598, 1
  %600 = load i32, ptr %101, align 4, !tbaa !9
  %601 = sub nsw i32 %599, %600
  store i32 %601, ptr %77, align 4, !tbaa !9
  %602 = load ptr, ptr %32, align 8, !tbaa !5
  %603 = load i32, ptr %602, align 4, !tbaa !9
  %604 = add nsw i32 %603, 1
  %605 = load i32, ptr %101, align 4, !tbaa !9
  %606 = sub nsw i32 %604, %605
  store i32 %606, ptr %72, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  %607 = load i32, ptr %67, align 4, !tbaa !9
  %608 = load i32, ptr %77, align 4, !tbaa !9
  %609 = add nsw i32 %607, %608
  store i32 %609, ptr %68, align 4, !tbaa !9
  %610 = load ptr, ptr %47, align 8, !tbaa !5
  %611 = load i32, ptr %610, align 4, !tbaa !9
  %612 = add nsw i32 %611, 1
  %613 = load i32, ptr %68, align 4, !tbaa !9
  %614 = sub nsw i32 %612, %613
  store i32 %614, ptr %61, align 4, !tbaa !9
  %615 = load ptr, ptr %35, align 8, !tbaa !5
  %616 = load i32, ptr %101, align 4, !tbaa !9
  %617 = load i32, ptr %101, align 4, !tbaa !9
  %618 = load i32, ptr %55, align 4, !tbaa !9
  %619 = mul nsw i32 %617, %618
  %620 = add nsw i32 %616, %619
  %621 = sext i32 %620 to i64
  %622 = getelementptr inbounds %struct.complex, ptr %615, i64 %621
  %623 = load ptr, ptr %36, align 8, !tbaa !5
  %624 = load ptr, ptr %46, align 8, !tbaa !5
  %625 = load i32, ptr %67, align 4, !tbaa !9
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds %struct.complex, ptr %624, i64 %626
  %628 = load ptr, ptr %46, align 8, !tbaa !5
  %629 = load i32, ptr %68, align 4, !tbaa !9
  %630 = sext i32 %629 to i64
  %631 = getelementptr inbounds %struct.complex, ptr %628, i64 %630
  call void @cgeqrf_(ptr noundef %77, ptr noundef %72, ptr noundef %622, ptr noundef %623, ptr noundef %627, ptr noundef %631, ptr noundef %61, ptr noundef %66)
  %632 = load ptr, ptr %47, align 8, !tbaa !5
  %633 = load i32, ptr %632, align 4, !tbaa !9
  %634 = add nsw i32 %633, 1
  %635 = load i32, ptr %68, align 4, !tbaa !9
  %636 = sub nsw i32 %634, %635
  store i32 %636, ptr %61, align 4, !tbaa !9
  %637 = load ptr, ptr %35, align 8, !tbaa !5
  %638 = load i32, ptr %101, align 4, !tbaa !9
  %639 = load i32, ptr %101, align 4, !tbaa !9
  %640 = load i32, ptr %55, align 4, !tbaa !9
  %641 = mul nsw i32 %639, %640
  %642 = add nsw i32 %638, %641
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds %struct.complex, ptr %637, i64 %643
  %645 = load ptr, ptr %36, align 8, !tbaa !5
  %646 = load ptr, ptr %46, align 8, !tbaa !5
  %647 = load i32, ptr %67, align 4, !tbaa !9
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds %struct.complex, ptr %646, i64 %648
  %650 = load ptr, ptr %33, align 8, !tbaa !5
  %651 = load i32, ptr %101, align 4, !tbaa !9
  %652 = load i32, ptr %101, align 4, !tbaa !9
  %653 = load i32, ptr %53, align 4, !tbaa !9
  %654 = mul nsw i32 %652, %653
  %655 = add nsw i32 %651, %654
  %656 = sext i32 %655 to i64
  %657 = getelementptr inbounds %struct.complex, ptr %650, i64 %656
  %658 = load ptr, ptr %34, align 8, !tbaa !5
  %659 = load ptr, ptr %46, align 8, !tbaa !5
  %660 = load i32, ptr %68, align 4, !tbaa !9
  %661 = sext i32 %660 to i64
  %662 = getelementptr inbounds %struct.complex, ptr %659, i64 %661
  call void @cunmqr_(ptr noundef @.str.13, ptr noundef @.str.14, ptr noundef %77, ptr noundef %72, ptr noundef %77, ptr noundef %644, ptr noundef %645, ptr noundef %649, ptr noundef %657, ptr noundef %658, ptr noundef %662, ptr noundef %61, ptr noundef %66)
  %663 = load i32, ptr %74, align 4, !tbaa !9
  %664 = icmp ne i32 %663, 0
  br i1 %664, label %665, label %723

665:                                              ; preds = %567
  %666 = load ptr, ptr %32, align 8, !tbaa !5
  %667 = load ptr, ptr %32, align 8, !tbaa !5
  %668 = load ptr, ptr %40, align 8, !tbaa !5
  %669 = load i32, ptr %58, align 4, !tbaa !9
  %670 = sext i32 %669 to i64
  %671 = getelementptr inbounds %struct.complex, ptr %668, i64 %670
  %672 = load ptr, ptr %41, align 8, !tbaa !5
  call void @claset_(ptr noundef @.str.15, ptr noundef %666, ptr noundef %667, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %671, ptr noundef %672)
  %673 = load i32, ptr %77, align 4, !tbaa !9
  %674 = icmp sgt i32 %673, 1
  br i1 %674, label %675, label %700

675:                                              ; preds = %665
  %676 = load i32, ptr %77, align 4, !tbaa !9
  %677 = sub nsw i32 %676, 1
  store i32 %677, ptr %61, align 4, !tbaa !9
  %678 = load i32, ptr %77, align 4, !tbaa !9
  %679 = sub nsw i32 %678, 1
  store i32 %679, ptr %62, align 4, !tbaa !9
  %680 = load ptr, ptr %35, align 8, !tbaa !5
  %681 = load i32, ptr %101, align 4, !tbaa !9
  %682 = add nsw i32 %681, 1
  %683 = load i32, ptr %101, align 4, !tbaa !9
  %684 = load i32, ptr %55, align 4, !tbaa !9
  %685 = mul nsw i32 %683, %684
  %686 = add nsw i32 %682, %685
  %687 = sext i32 %686 to i64
  %688 = getelementptr inbounds %struct.complex, ptr %680, i64 %687
  %689 = load ptr, ptr %36, align 8, !tbaa !5
  %690 = load ptr, ptr %40, align 8, !tbaa !5
  %691 = load i32, ptr %101, align 4, !tbaa !9
  %692 = add nsw i32 %691, 1
  %693 = load i32, ptr %101, align 4, !tbaa !9
  %694 = load i32, ptr %57, align 4, !tbaa !9
  %695 = mul nsw i32 %693, %694
  %696 = add nsw i32 %692, %695
  %697 = sext i32 %696 to i64
  %698 = getelementptr inbounds %struct.complex, ptr %690, i64 %697
  %699 = load ptr, ptr %41, align 8, !tbaa !5
  call void @clacpy_(ptr noundef @.str.13, ptr noundef %61, ptr noundef %62, ptr noundef %688, ptr noundef %689, ptr noundef %698, ptr noundef %699)
  br label %700

700:                                              ; preds = %675, %665
  %701 = load ptr, ptr %47, align 8, !tbaa !5
  %702 = load i32, ptr %701, align 4, !tbaa !9
  %703 = add nsw i32 %702, 1
  %704 = load i32, ptr %68, align 4, !tbaa !9
  %705 = sub nsw i32 %703, %704
  store i32 %705, ptr %61, align 4, !tbaa !9
  %706 = load ptr, ptr %40, align 8, !tbaa !5
  %707 = load i32, ptr %101, align 4, !tbaa !9
  %708 = load i32, ptr %101, align 4, !tbaa !9
  %709 = load i32, ptr %57, align 4, !tbaa !9
  %710 = mul nsw i32 %708, %709
  %711 = add nsw i32 %707, %710
  %712 = sext i32 %711 to i64
  %713 = getelementptr inbounds %struct.complex, ptr %706, i64 %712
  %714 = load ptr, ptr %41, align 8, !tbaa !5
  %715 = load ptr, ptr %46, align 8, !tbaa !5
  %716 = load i32, ptr %67, align 4, !tbaa !9
  %717 = sext i32 %716 to i64
  %718 = getelementptr inbounds %struct.complex, ptr %715, i64 %717
  %719 = load ptr, ptr %46, align 8, !tbaa !5
  %720 = load i32, ptr %68, align 4, !tbaa !9
  %721 = sext i32 %720 to i64
  %722 = getelementptr inbounds %struct.complex, ptr %719, i64 %721
  call void @cungqr_(ptr noundef %77, ptr noundef %77, ptr noundef %77, ptr noundef %713, ptr noundef %714, ptr noundef %718, ptr noundef %722, ptr noundef %61, ptr noundef %66)
  br label %723

723:                                              ; preds = %700, %567
  %724 = load i32, ptr %75, align 4, !tbaa !9
  %725 = icmp ne i32 %724, 0
  br i1 %725, label %726, label %734

726:                                              ; preds = %723
  %727 = load ptr, ptr %32, align 8, !tbaa !5
  %728 = load ptr, ptr %32, align 8, !tbaa !5
  %729 = load ptr, ptr %42, align 8, !tbaa !5
  %730 = load i32, ptr %60, align 4, !tbaa !9
  %731 = sext i32 %730 to i64
  %732 = getelementptr inbounds %struct.complex, ptr %729, i64 %731
  %733 = load ptr, ptr %43, align 8, !tbaa !5
  call void @claset_(ptr noundef @.str.15, ptr noundef %727, ptr noundef %728, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %732, ptr noundef %733)
  br label %734

734:                                              ; preds = %726, %723
  %735 = load ptr, ptr %27, align 8, !tbaa !5
  %736 = load ptr, ptr %28, align 8, !tbaa !5
  %737 = load ptr, ptr %32, align 8, !tbaa !5
  %738 = load ptr, ptr %33, align 8, !tbaa !5
  %739 = load i32, ptr %54, align 4, !tbaa !9
  %740 = sext i32 %739 to i64
  %741 = getelementptr inbounds %struct.complex, ptr %738, i64 %740
  %742 = load ptr, ptr %34, align 8, !tbaa !5
  %743 = load ptr, ptr %35, align 8, !tbaa !5
  %744 = load i32, ptr %56, align 4, !tbaa !9
  %745 = sext i32 %744 to i64
  %746 = getelementptr inbounds %struct.complex, ptr %743, i64 %745
  %747 = load ptr, ptr %36, align 8, !tbaa !5
  %748 = load ptr, ptr %40, align 8, !tbaa !5
  %749 = load i32, ptr %58, align 4, !tbaa !9
  %750 = sext i32 %749 to i64
  %751 = getelementptr inbounds %struct.complex, ptr %748, i64 %750
  %752 = load ptr, ptr %41, align 8, !tbaa !5
  %753 = load ptr, ptr %42, align 8, !tbaa !5
  %754 = load i32, ptr %60, align 4, !tbaa !9
  %755 = sext i32 %754 to i64
  %756 = getelementptr inbounds %struct.complex, ptr %753, i64 %755
  %757 = load ptr, ptr %43, align 8, !tbaa !5
  call void @cgghrd_(ptr noundef %735, ptr noundef %736, ptr noundef %737, ptr noundef %101, ptr noundef %100, ptr noundef %741, ptr noundef %742, ptr noundef %746, ptr noundef %747, ptr noundef %751, ptr noundef %752, ptr noundef %756, ptr noundef %757, ptr noundef %66)
  %758 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 0, ptr %758, align 4, !tbaa !9
  %759 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %759, ptr %68, align 4, !tbaa !9
  %760 = load ptr, ptr %47, align 8, !tbaa !5
  %761 = load i32, ptr %760, align 4, !tbaa !9
  %762 = add nsw i32 %761, 1
  %763 = load i32, ptr %68, align 4, !tbaa !9
  %764 = sub nsw i32 %762, %763
  store i32 %764, ptr %61, align 4, !tbaa !9
  %765 = load ptr, ptr %27, align 8, !tbaa !5
  %766 = load ptr, ptr %28, align 8, !tbaa !5
  %767 = load ptr, ptr %32, align 8, !tbaa !5
  %768 = load ptr, ptr %33, align 8, !tbaa !5
  %769 = load i32, ptr %54, align 4, !tbaa !9
  %770 = sext i32 %769 to i64
  %771 = getelementptr inbounds %struct.complex, ptr %768, i64 %770
  %772 = load ptr, ptr %34, align 8, !tbaa !5
  %773 = load ptr, ptr %35, align 8, !tbaa !5
  %774 = load i32, ptr %56, align 4, !tbaa !9
  %775 = sext i32 %774 to i64
  %776 = getelementptr inbounds %struct.complex, ptr %773, i64 %775
  %777 = load ptr, ptr %36, align 8, !tbaa !5
  %778 = load ptr, ptr %38, align 8, !tbaa !5
  %779 = getelementptr inbounds %struct.complex, ptr %778, i64 1
  %780 = load ptr, ptr %39, align 8, !tbaa !5
  %781 = getelementptr inbounds %struct.complex, ptr %780, i64 1
  %782 = load ptr, ptr %40, align 8, !tbaa !5
  %783 = load i32, ptr %58, align 4, !tbaa !9
  %784 = sext i32 %783 to i64
  %785 = getelementptr inbounds %struct.complex, ptr %782, i64 %784
  %786 = load ptr, ptr %41, align 8, !tbaa !5
  %787 = load ptr, ptr %42, align 8, !tbaa !5
  %788 = load i32, ptr %60, align 4, !tbaa !9
  %789 = sext i32 %788 to i64
  %790 = getelementptr inbounds %struct.complex, ptr %787, i64 %789
  %791 = load ptr, ptr %43, align 8, !tbaa !5
  %792 = load ptr, ptr %46, align 8, !tbaa !5
  %793 = load i32, ptr %68, align 4, !tbaa !9
  %794 = sext i32 %793 to i64
  %795 = getelementptr inbounds %struct.complex, ptr %792, i64 %794
  %796 = load ptr, ptr %48, align 8, !tbaa !5
  %797 = load i32, ptr %76, align 4, !tbaa !9
  %798 = sext i32 %797 to i64
  %799 = getelementptr inbounds float, ptr %796, i64 %798
  call void @chgeqz_(ptr noundef @.str.2, ptr noundef %765, ptr noundef %766, ptr noundef %767, ptr noundef %101, ptr noundef %100, ptr noundef %771, ptr noundef %772, ptr noundef %776, ptr noundef %777, ptr noundef %779, ptr noundef %781, ptr noundef %785, ptr noundef %786, ptr noundef %790, ptr noundef %791, ptr noundef %795, ptr noundef %61, ptr noundef %799, ptr noundef %66)
  %800 = load i32, ptr %66, align 4, !tbaa !9
  %801 = icmp ne i32 %800, 0
  br i1 %801, label %802, label %837

802:                                              ; preds = %734
  %803 = load i32, ptr %66, align 4, !tbaa !9
  %804 = icmp sgt i32 %803, 0
  br i1 %804, label %805, label %813

805:                                              ; preds = %802
  %806 = load i32, ptr %66, align 4, !tbaa !9
  %807 = load ptr, ptr %32, align 8, !tbaa !5
  %808 = load i32, ptr %807, align 4, !tbaa !9
  %809 = icmp sle i32 %806, %808
  br i1 %809, label %810, label %813

810:                                              ; preds = %805
  %811 = load i32, ptr %66, align 4, !tbaa !9
  %812 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 %811, ptr %812, align 4, !tbaa !9
  br label %836

813:                                              ; preds = %805, %802
  %814 = load i32, ptr %66, align 4, !tbaa !9
  %815 = load ptr, ptr %32, align 8, !tbaa !5
  %816 = load i32, ptr %815, align 4, !tbaa !9
  %817 = icmp sgt i32 %814, %816
  br i1 %817, label %818, label %830

818:                                              ; preds = %813
  %819 = load i32, ptr %66, align 4, !tbaa !9
  %820 = load ptr, ptr %32, align 8, !tbaa !5
  %821 = load i32, ptr %820, align 4, !tbaa !9
  %822 = shl i32 %821, 1
  %823 = icmp sle i32 %819, %822
  br i1 %823, label %824, label %830

824:                                              ; preds = %818
  %825 = load i32, ptr %66, align 4, !tbaa !9
  %826 = load ptr, ptr %32, align 8, !tbaa !5
  %827 = load i32, ptr %826, align 4, !tbaa !9
  %828 = sub nsw i32 %825, %827
  %829 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 %828, ptr %829, align 4, !tbaa !9
  br label %835

830:                                              ; preds = %818, %813
  %831 = load ptr, ptr %32, align 8, !tbaa !5
  %832 = load i32, ptr %831, align 4, !tbaa !9
  %833 = add nsw i32 %832, 1
  %834 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 %833, ptr %834, align 4, !tbaa !9
  br label %835

835:                                              ; preds = %830, %824
  br label %836

836:                                              ; preds = %835, %810
  br label %1102

837:                                              ; preds = %734
  %838 = load i32, ptr %96, align 4, !tbaa !9
  %839 = icmp ne i32 %838, 0
  br i1 %839, label %840, label %988

840:                                              ; preds = %837
  %841 = load i32, ptr %80, align 4, !tbaa !9
  %842 = icmp ne i32 %841, 0
  br i1 %842, label %843, label %848

843:                                              ; preds = %840
  %844 = load ptr, ptr %32, align 8, !tbaa !5
  %845 = load ptr, ptr %38, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.complex, ptr %845, i64 1
  %847 = load ptr, ptr %32, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %90, ptr noundef %64, ptr noundef %844, ptr noundef @c__1, ptr noundef %846, ptr noundef %847, ptr noundef %66)
  br label %848

848:                                              ; preds = %843, %840
  %849 = load i32, ptr %81, align 4, !tbaa !9
  %850 = icmp ne i32 %849, 0
  br i1 %850, label %851, label %856

851:                                              ; preds = %848
  %852 = load ptr, ptr %32, align 8, !tbaa !5
  %853 = load ptr, ptr %39, align 8, !tbaa !5
  %854 = getelementptr inbounds %struct.complex, ptr %853, i64 1
  %855 = load ptr, ptr %32, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %91, ptr noundef %65, ptr noundef %852, ptr noundef @c__1, ptr noundef %854, ptr noundef %855, ptr noundef %66)
  br label %856

856:                                              ; preds = %851, %848
  %857 = load ptr, ptr %32, align 8, !tbaa !5
  %858 = load i32, ptr %857, align 4, !tbaa !9
  store i32 %858, ptr %61, align 4, !tbaa !9
  store i32 1, ptr %70, align 4, !tbaa !9
  br label %859

859:                                              ; preds = %878, %856
  %860 = load i32, ptr %70, align 4, !tbaa !9
  %861 = load i32, ptr %61, align 4, !tbaa !9
  %862 = icmp sle i32 %860, %861
  br i1 %862, label %863, label %881

863:                                              ; preds = %859
  %864 = load ptr, ptr %30, align 8, !tbaa !5
  %865 = load ptr, ptr %38, align 8, !tbaa !5
  %866 = load i32, ptr %70, align 4, !tbaa !9
  %867 = sext i32 %866 to i64
  %868 = getelementptr inbounds %struct.complex, ptr %865, i64 %867
  %869 = load ptr, ptr %39, align 8, !tbaa !5
  %870 = load i32, ptr %70, align 4, !tbaa !9
  %871 = sext i32 %870 to i64
  %872 = getelementptr inbounds %struct.complex, ptr %869, i64 %871
  %873 = call i32 (ptr, ptr, ...) %864(ptr noundef %868, ptr noundef %872)
  %874 = load ptr, ptr %51, align 8, !tbaa !5
  %875 = load i32, ptr %70, align 4, !tbaa !9
  %876 = sext i32 %875 to i64
  %877 = getelementptr inbounds i32, ptr %874, i64 %876
  store i32 %873, ptr %877, align 4, !tbaa !9
  br label %878

878:                                              ; preds = %863
  %879 = load i32, ptr %70, align 4, !tbaa !9
  %880 = add nsw i32 %879, 1
  store i32 %880, ptr %70, align 4, !tbaa !9
  br label %859, !llvm.loop !16

881:                                              ; preds = %859
  %882 = load ptr, ptr %47, align 8, !tbaa !5
  %883 = load i32, ptr %882, align 4, !tbaa !9
  %884 = load i32, ptr %68, align 4, !tbaa !9
  %885 = sub nsw i32 %883, %884
  %886 = add nsw i32 %885, 1
  store i32 %886, ptr %61, align 4, !tbaa !9
  %887 = load ptr, ptr %51, align 8, !tbaa !5
  %888 = getelementptr inbounds i32, ptr %887, i64 1
  %889 = load ptr, ptr %32, align 8, !tbaa !5
  %890 = load ptr, ptr %33, align 8, !tbaa !5
  %891 = load i32, ptr %54, align 4, !tbaa !9
  %892 = sext i32 %891 to i64
  %893 = getelementptr inbounds %struct.complex, ptr %890, i64 %892
  %894 = load ptr, ptr %34, align 8, !tbaa !5
  %895 = load ptr, ptr %35, align 8, !tbaa !5
  %896 = load i32, ptr %56, align 4, !tbaa !9
  %897 = sext i32 %896 to i64
  %898 = getelementptr inbounds %struct.complex, ptr %895, i64 %897
  %899 = load ptr, ptr %36, align 8, !tbaa !5
  %900 = load ptr, ptr %38, align 8, !tbaa !5
  %901 = getelementptr inbounds %struct.complex, ptr %900, i64 1
  %902 = load ptr, ptr %39, align 8, !tbaa !5
  %903 = getelementptr inbounds %struct.complex, ptr %902, i64 1
  %904 = load ptr, ptr %40, align 8, !tbaa !5
  %905 = load i32, ptr %58, align 4, !tbaa !9
  %906 = sext i32 %905 to i64
  %907 = getelementptr inbounds %struct.complex, ptr %904, i64 %906
  %908 = load ptr, ptr %41, align 8, !tbaa !5
  %909 = load ptr, ptr %42, align 8, !tbaa !5
  %910 = load i32, ptr %60, align 4, !tbaa !9
  %911 = sext i32 %910 to i64
  %912 = getelementptr inbounds %struct.complex, ptr %909, i64 %911
  %913 = load ptr, ptr %43, align 8, !tbaa !5
  %914 = load ptr, ptr %37, align 8, !tbaa !5
  %915 = getelementptr inbounds [2 x float], ptr %99, i64 0, i64 0
  %916 = load ptr, ptr %46, align 8, !tbaa !5
  %917 = load i32, ptr %68, align 4, !tbaa !9
  %918 = sext i32 %917 to i64
  %919 = getelementptr inbounds %struct.complex, ptr %916, i64 %918
  %920 = load ptr, ptr %49, align 8, !tbaa !5
  %921 = getelementptr inbounds i32, ptr %920, i64 1
  %922 = load ptr, ptr %50, align 8, !tbaa !5
  call void @ctgsen_(ptr noundef %63, ptr noundef %74, ptr noundef %75, ptr noundef %888, ptr noundef %889, ptr noundef %893, ptr noundef %894, ptr noundef %898, ptr noundef %899, ptr noundef %901, ptr noundef %903, ptr noundef %907, ptr noundef %908, ptr noundef %912, ptr noundef %913, ptr noundef %914, ptr noundef %78, ptr noundef %79, ptr noundef %915, ptr noundef %919, ptr noundef %61, ptr noundef %921, ptr noundef %922, ptr noundef %66)
  %923 = load i32, ptr %63, align 4, !tbaa !9
  %924 = icmp sge i32 %923, 1
  br i1 %924, label %925, label %945

925:                                              ; preds = %881
  %926 = load i32, ptr %93, align 4, !tbaa !9
  store i32 %926, ptr %61, align 4, !tbaa !9
  %927 = load ptr, ptr %37, align 8, !tbaa !5
  %928 = load i32, ptr %927, align 4, !tbaa !9
  %929 = shl i32 %928, 1
  %930 = load ptr, ptr %32, align 8, !tbaa !5
  %931 = load i32, ptr %930, align 4, !tbaa !9
  %932 = load ptr, ptr %37, align 8, !tbaa !5
  %933 = load i32, ptr %932, align 4, !tbaa !9
  %934 = sub nsw i32 %931, %933
  %935 = mul nsw i32 %929, %934
  store i32 %935, ptr %62, align 4, !tbaa !9
  %936 = load i32, ptr %61, align 4, !tbaa !9
  %937 = load i32, ptr %62, align 4, !tbaa !9
  %938 = icmp sge i32 %936, %937
  br i1 %938, label %939, label %941

939:                                              ; preds = %925
  %940 = load i32, ptr %61, align 4, !tbaa !9
  br label %943

941:                                              ; preds = %925
  %942 = load i32, ptr %62, align 4, !tbaa !9
  br label %943

943:                                              ; preds = %941, %939
  %944 = phi i32 [ %940, %939 ], [ %942, %941 ]
  store i32 %944, ptr %93, align 4, !tbaa !9
  br label %945

945:                                              ; preds = %943, %881
  %946 = load i32, ptr %66, align 4, !tbaa !9
  %947 = icmp eq i32 %946, -21
  br i1 %947, label %948, label %950

948:                                              ; preds = %945
  %949 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -21, ptr %949, align 4, !tbaa !9
  br label %987

950:                                              ; preds = %945
  %951 = load i32, ptr %63, align 4, !tbaa !9
  %952 = icmp eq i32 %951, 1
  br i1 %952, label %956, label %953

953:                                              ; preds = %950
  %954 = load i32, ptr %63, align 4, !tbaa !9
  %955 = icmp eq i32 %954, 4
  br i1 %955, label %956, label %963

956:                                              ; preds = %953, %950
  %957 = load float, ptr %78, align 4, !tbaa !15
  %958 = load ptr, ptr %44, align 8, !tbaa !5
  %959 = getelementptr inbounds float, ptr %958, i64 1
  store float %957, ptr %959, align 4, !tbaa !15
  %960 = load float, ptr %79, align 4, !tbaa !15
  %961 = load ptr, ptr %44, align 8, !tbaa !5
  %962 = getelementptr inbounds float, ptr %961, i64 2
  store float %960, ptr %962, align 4, !tbaa !15
  br label %963

963:                                              ; preds = %956, %953
  %964 = load i32, ptr %63, align 4, !tbaa !9
  %965 = icmp eq i32 %964, 2
  br i1 %965, label %969, label %966

966:                                              ; preds = %963
  %967 = load i32, ptr %63, align 4, !tbaa !9
  %968 = icmp eq i32 %967, 4
  br i1 %968, label %969, label %978

969:                                              ; preds = %966, %963
  %970 = getelementptr inbounds [2 x float], ptr %99, i64 0, i64 0
  %971 = load float, ptr %970, align 4, !tbaa !15
  %972 = load ptr, ptr %45, align 8, !tbaa !5
  %973 = getelementptr inbounds float, ptr %972, i64 1
  store float %971, ptr %973, align 4, !tbaa !15
  %974 = getelementptr inbounds [2 x float], ptr %99, i64 0, i64 1
  %975 = load float, ptr %974, align 4, !tbaa !15
  %976 = load ptr, ptr %45, align 8, !tbaa !5
  %977 = getelementptr inbounds float, ptr %976, i64 2
  store float %975, ptr %977, align 4, !tbaa !15
  br label %978

978:                                              ; preds = %969, %966
  %979 = load i32, ptr %66, align 4, !tbaa !9
  %980 = icmp eq i32 %979, 1
  br i1 %980, label %981, label %986

981:                                              ; preds = %978
  %982 = load ptr, ptr %32, align 8, !tbaa !5
  %983 = load i32, ptr %982, align 4, !tbaa !9
  %984 = add nsw i32 %983, 3
  %985 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 %984, ptr %985, align 4, !tbaa !9
  br label %986

986:                                              ; preds = %981, %978
  br label %987

987:                                              ; preds = %986, %948
  br label %988

988:                                              ; preds = %987, %837
  %989 = load i32, ptr %74, align 4, !tbaa !9
  %990 = icmp ne i32 %989, 0
  br i1 %990, label %991, label %1007

991:                                              ; preds = %988
  %992 = load ptr, ptr %32, align 8, !tbaa !5
  %993 = load ptr, ptr %48, align 8, !tbaa !5
  %994 = load i32, ptr %71, align 4, !tbaa !9
  %995 = sext i32 %994 to i64
  %996 = getelementptr inbounds float, ptr %993, i64 %995
  %997 = load ptr, ptr %48, align 8, !tbaa !5
  %998 = load i32, ptr %84, align 4, !tbaa !9
  %999 = sext i32 %998 to i64
  %1000 = getelementptr inbounds float, ptr %997, i64 %999
  %1001 = load ptr, ptr %32, align 8, !tbaa !5
  %1002 = load ptr, ptr %40, align 8, !tbaa !5
  %1003 = load i32, ptr %58, align 4, !tbaa !9
  %1004 = sext i32 %1003 to i64
  %1005 = getelementptr inbounds %struct.complex, ptr %1002, i64 %1004
  %1006 = load ptr, ptr %41, align 8, !tbaa !5
  call void @cggbak_(ptr noundef @.str.10, ptr noundef @.str.13, ptr noundef %992, ptr noundef %101, ptr noundef %100, ptr noundef %996, ptr noundef %1000, ptr noundef %1001, ptr noundef %1005, ptr noundef %1006, ptr noundef %66)
  br label %1007

1007:                                             ; preds = %991, %988
  %1008 = load i32, ptr %75, align 4, !tbaa !9
  %1009 = icmp ne i32 %1008, 0
  br i1 %1009, label %1010, label %1026

1010:                                             ; preds = %1007
  %1011 = load ptr, ptr %32, align 8, !tbaa !5
  %1012 = load ptr, ptr %48, align 8, !tbaa !5
  %1013 = load i32, ptr %71, align 4, !tbaa !9
  %1014 = sext i32 %1013 to i64
  %1015 = getelementptr inbounds float, ptr %1012, i64 %1014
  %1016 = load ptr, ptr %48, align 8, !tbaa !5
  %1017 = load i32, ptr %84, align 4, !tbaa !9
  %1018 = sext i32 %1017 to i64
  %1019 = getelementptr inbounds float, ptr %1016, i64 %1018
  %1020 = load ptr, ptr %32, align 8, !tbaa !5
  %1021 = load ptr, ptr %42, align 8, !tbaa !5
  %1022 = load i32, ptr %60, align 4, !tbaa !9
  %1023 = sext i32 %1022 to i64
  %1024 = getelementptr inbounds %struct.complex, ptr %1021, i64 %1023
  %1025 = load ptr, ptr %43, align 8, !tbaa !5
  call void @cggbak_(ptr noundef @.str.10, ptr noundef @.str.16, ptr noundef %1011, ptr noundef %101, ptr noundef %100, ptr noundef %1015, ptr noundef %1019, ptr noundef %1020, ptr noundef %1024, ptr noundef %1025, ptr noundef %66)
  br label %1026

1026:                                             ; preds = %1010, %1007
  %1027 = load i32, ptr %80, align 4, !tbaa !9
  %1028 = icmp ne i32 %1027, 0
  br i1 %1028, label %1029, label %1041

1029:                                             ; preds = %1026
  %1030 = load ptr, ptr %32, align 8, !tbaa !5
  %1031 = load ptr, ptr %32, align 8, !tbaa !5
  %1032 = load ptr, ptr %33, align 8, !tbaa !5
  %1033 = load i32, ptr %54, align 4, !tbaa !9
  %1034 = sext i32 %1033 to i64
  %1035 = getelementptr inbounds %struct.complex, ptr %1032, i64 %1034
  %1036 = load ptr, ptr %34, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.17, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %90, ptr noundef %64, ptr noundef %1030, ptr noundef %1031, ptr noundef %1035, ptr noundef %1036, ptr noundef %66)
  %1037 = load ptr, ptr %32, align 8, !tbaa !5
  %1038 = load ptr, ptr %38, align 8, !tbaa !5
  %1039 = getelementptr inbounds %struct.complex, ptr %1038, i64 1
  %1040 = load ptr, ptr %32, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %90, ptr noundef %64, ptr noundef %1037, ptr noundef @c__1, ptr noundef %1039, ptr noundef %1040, ptr noundef %66)
  br label %1041

1041:                                             ; preds = %1029, %1026
  %1042 = load i32, ptr %81, align 4, !tbaa !9
  %1043 = icmp ne i32 %1042, 0
  br i1 %1043, label %1044, label %1056

1044:                                             ; preds = %1041
  %1045 = load ptr, ptr %32, align 8, !tbaa !5
  %1046 = load ptr, ptr %32, align 8, !tbaa !5
  %1047 = load ptr, ptr %35, align 8, !tbaa !5
  %1048 = load i32, ptr %56, align 4, !tbaa !9
  %1049 = sext i32 %1048 to i64
  %1050 = getelementptr inbounds %struct.complex, ptr %1047, i64 %1049
  %1051 = load ptr, ptr %36, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.17, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %91, ptr noundef %65, ptr noundef %1045, ptr noundef %1046, ptr noundef %1050, ptr noundef %1051, ptr noundef %66)
  %1052 = load ptr, ptr %32, align 8, !tbaa !5
  %1053 = load ptr, ptr %39, align 8, !tbaa !5
  %1054 = getelementptr inbounds %struct.complex, ptr %1053, i64 1
  %1055 = load ptr, ptr %32, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %91, ptr noundef %65, ptr noundef %1052, ptr noundef @c__1, ptr noundef %1054, ptr noundef %1055, ptr noundef %66)
  br label %1056

1056:                                             ; preds = %1044, %1041
  %1057 = load i32, ptr %96, align 4, !tbaa !9
  %1058 = icmp ne i32 %1057, 0
  br i1 %1058, label %1059, label %1101

1059:                                             ; preds = %1056
  store i32 1, ptr %89, align 4, !tbaa !9
  %1060 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 0, ptr %1060, align 4, !tbaa !9
  %1061 = load ptr, ptr %32, align 8, !tbaa !5
  %1062 = load i32, ptr %1061, align 4, !tbaa !9
  store i32 %1062, ptr %61, align 4, !tbaa !9
  store i32 1, ptr %70, align 4, !tbaa !9
  br label %1063

1063:                                             ; preds = %1097, %1059
  %1064 = load i32, ptr %70, align 4, !tbaa !9
  %1065 = load i32, ptr %61, align 4, !tbaa !9
  %1066 = icmp sle i32 %1064, %1065
  br i1 %1066, label %1067, label %1100

1067:                                             ; preds = %1063
  %1068 = load ptr, ptr %30, align 8, !tbaa !5
  %1069 = load ptr, ptr %38, align 8, !tbaa !5
  %1070 = load i32, ptr %70, align 4, !tbaa !9
  %1071 = sext i32 %1070 to i64
  %1072 = getelementptr inbounds %struct.complex, ptr %1069, i64 %1071
  %1073 = load ptr, ptr %39, align 8, !tbaa !5
  %1074 = load i32, ptr %70, align 4, !tbaa !9
  %1075 = sext i32 %1074 to i64
  %1076 = getelementptr inbounds %struct.complex, ptr %1073, i64 %1075
  %1077 = call i32 (ptr, ptr, ...) %1068(ptr noundef %1072, ptr noundef %1076)
  store i32 %1077, ptr %73, align 4, !tbaa !9
  %1078 = load i32, ptr %73, align 4, !tbaa !9
  %1079 = icmp ne i32 %1078, 0
  br i1 %1079, label %1080, label %1084

1080:                                             ; preds = %1067
  %1081 = load ptr, ptr %37, align 8, !tbaa !5
  %1082 = load i32, ptr %1081, align 4, !tbaa !9
  %1083 = add nsw i32 %1082, 1
  store i32 %1083, ptr %1081, align 4, !tbaa !9
  br label %1084

1084:                                             ; preds = %1080, %1067
  %1085 = load i32, ptr %73, align 4, !tbaa !9
  %1086 = icmp ne i32 %1085, 0
  br i1 %1086, label %1087, label %1095

1087:                                             ; preds = %1084
  %1088 = load i32, ptr %89, align 4, !tbaa !9
  %1089 = icmp ne i32 %1088, 0
  br i1 %1089, label %1095, label %1090

1090:                                             ; preds = %1087
  %1091 = load ptr, ptr %32, align 8, !tbaa !5
  %1092 = load i32, ptr %1091, align 4, !tbaa !9
  %1093 = add nsw i32 %1092, 2
  %1094 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 %1093, ptr %1094, align 4, !tbaa !9
  br label %1095

1095:                                             ; preds = %1090, %1087, %1084
  %1096 = load i32, ptr %73, align 4, !tbaa !9
  store i32 %1096, ptr %89, align 4, !tbaa !9
  br label %1097

1097:                                             ; preds = %1095
  %1098 = load i32, ptr %70, align 4, !tbaa !9
  %1099 = add nsw i32 %1098, 1
  store i32 %1099, ptr %70, align 4, !tbaa !9
  br label %1063, !llvm.loop !18

1100:                                             ; preds = %1063
  br label %1101

1101:                                             ; preds = %1100, %1056
  br label %1102

1102:                                             ; preds = %1101, %836
  %1103 = load i32, ptr %93, align 4, !tbaa !9
  %1104 = sitofp i32 %1103 to float
  %1105 = load ptr, ptr %46, align 8, !tbaa !5
  %1106 = getelementptr inbounds %struct.complex, ptr %1105, i64 1
  %1107 = getelementptr inbounds %struct.complex, ptr %1106, i32 0, i32 0
  store float %1104, ptr %1107, align 4, !tbaa !11
  %1108 = load ptr, ptr %46, align 8, !tbaa !5
  %1109 = getelementptr inbounds %struct.complex, ptr %1108, i64 1
  %1110 = getelementptr inbounds %struct.complex, ptr %1109, i32 0, i32 1
  store float 0.000000e+00, ptr %1110, align 4, !tbaa !14
  %1111 = load i32, ptr %87, align 4, !tbaa !9
  %1112 = load ptr, ptr %49, align 8, !tbaa !5
  %1113 = getelementptr inbounds i32, ptr %1112, i64 1
  store i32 %1111, ptr %1113, align 4, !tbaa !9
  store i32 1, ptr %103, align 4
  br label %1114

1114:                                             ; preds = %1102, %478, %472, %464
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #4
  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 4, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  ret void
}

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

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

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

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

declare float @slamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.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
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i32, align 4
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.8 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b1 = external hidden global %struct.complex, align 4
@c_b2 = external hidden global %struct.complex, align 4
@.str.16 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [2 x i8], align 1

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

61:                                               ; preds = %26
  store i32 0, ptr %34, align 4, !tbaa !5
  br label %66

62:                                               ; preds = %26
  %63 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not403 = icmp eq i32 %63, 0
  br i1 %.not403, label %65, label %64

64:                                               ; preds = %62
  store i32 1, ptr %34, align 4, !tbaa !5
  br label %66

65:                                               ; preds = %62
  store i32 0, ptr %34, align 4, !tbaa !5
  br label %66

66:                                               ; preds = %64, %65, %61
  %.not411 = phi i1 [ false, %61 ], [ true, %64 ], [ false, %65 ]
  %.not414 = phi i1 [ true, %61 ], [ false, %64 ], [ true, %65 ]
  %67 = phi i1 [ false, %61 ], [ false, %64 ], [ true, %65 ]
  %68 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #5
  %.not404 = icmp eq i32 %68, 0
  br i1 %.not404, label %70, label %69

69:                                               ; preds = %66
  store i32 0, ptr %35, align 4, !tbaa !5
  br label %74

70:                                               ; preds = %66
  %71 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %.not405 = icmp eq i32 %71, 0
  br i1 %.not405, label %73, label %72

72:                                               ; preds = %70
  store i32 1, ptr %35, align 4, !tbaa !5
  br label %74

73:                                               ; preds = %70
  store i32 0, ptr %35, align 4, !tbaa !5
  br label %74

74:                                               ; preds = %72, %73, %69
  %.not412 = phi i1 [ false, %69 ], [ true, %72 ], [ false, %73 ]
  %.not422 = phi i1 [ true, %69 ], [ false, %72 ], [ true, %73 ]
  %75 = phi i1 [ false, %69 ], [ false, %72 ], [ true, %73 ]
  %76 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #5
  %77 = tail call i32 @lsame_(ptr noundef %4, ptr noundef nonnull @.str) #5
  %78 = tail call i32 @lsame_(ptr noundef %4, ptr noundef nonnull @.str.3) #5
  %79 = tail call i32 @lsame_(ptr noundef %4, ptr noundef nonnull @.str.1) #5
  %80 = tail call i32 @lsame_(ptr noundef %4, ptr noundef nonnull @.str.4) #5
  %81 = load i32, ptr %20, align 4, !tbaa !5
  %82 = icmp eq i32 %81, -1
  br i1 %82, label %86, label %83

83:                                               ; preds = %74
  %84 = load i32, ptr %23, align 4, !tbaa !5
  %85 = icmp eq i32 %84, -1
  br label %86

86:                                               ; preds = %83, %74
  %87 = phi i1 [ true, %74 ], [ %85, %83 ]
  %88 = icmp eq i32 %77, 0
  br i1 %88, label %90, label %89

89:                                               ; preds = %86
  store i32 0, ptr %29, align 4, !tbaa !5
  br label %96

90:                                               ; preds = %86
  %.not406 = icmp eq i32 %78, 0
  br i1 %.not406, label %92, label %91

91:                                               ; preds = %90
  store i32 1, ptr %29, align 4, !tbaa !5
  br label %96

92:                                               ; preds = %90
  %.not407 = icmp eq i32 %79, 0
  br i1 %.not407, label %94, label %93

93:                                               ; preds = %92
  store i32 2, ptr %29, align 4, !tbaa !5
  br label %96

94:                                               ; preds = %92
  %.not408 = icmp eq i32 %80, 0
  br i1 %.not408, label %96, label %95

95:                                               ; preds = %94
  store i32 4, ptr %29, align 4, !tbaa !5
  br label %96

96:                                               ; preds = %91, %94, %95, %93, %89
  %97 = phi i1 [ true, %91 ], [ false, %94 ], [ true, %95 ], [ true, %93 ], [ false, %89 ]
  store i32 0, ptr %25, align 4, !tbaa !5
  %brmerge = or i1 %67, %75
  %.mux = select i1 %67, i32 -1, i32 -2
  br i1 %brmerge, label %.thread443.sink.split, label %98

98:                                               ; preds = %96
  %.not410 = icmp eq i32 %76, 0
  br i1 %.not410, label %99, label %101

99:                                               ; preds = %98
  %100 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str) #5
  %.not409 = icmp eq i32 %100, 0
  br i1 %.not409, label %.thread443.sink.split, label %101

101:                                              ; preds = %99, %98
  %102 = icmp eq i32 %78, 0
  %or.cond.not = select i1 %88, i1 %102, i1 false
  %103 = icmp eq i32 %79, 0
  %or.cond3 = select i1 %or.cond.not, i1 %103, i1 false
  %104 = icmp eq i32 %80, 0
  %or.cond5 = select i1 %or.cond3, i1 %104, i1 false
  %105 = or i32 %77, %76
  %or.cond7.not = icmp eq i32 %105, 0
  %or.cond434 = select i1 %or.cond5, i1 true, i1 %or.cond7.not
  br i1 %or.cond434, label %.thread443.sink.split, label %106

106:                                              ; preds = %101
  %107 = load i32, ptr %5, align 4, !tbaa !5
  %108 = icmp slt i32 %107, 0
  br i1 %108, label %.thread443.sink.split, label %109

109:                                              ; preds = %106
  %110 = load i32, ptr %7, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %107, i32 1)
  %111 = icmp slt i32 %110, %spec.select
  br i1 %111, label %.thread443.sink.split, label %112

112:                                              ; preds = %109
  %113 = load i32, ptr %9, align 4, !tbaa !5
  %114 = icmp slt i32 %113, %spec.select
  br i1 %114, label %.thread443.sink.split, label %115

115:                                              ; preds = %112
  %116 = load i32, ptr %14, align 4, !tbaa !5
  %117 = icmp slt i32 %116, 1
  %118 = icmp ult i32 %116, %107
  %or.cond463 = and i1 %118, %.not411
  %or.cond484 = or i1 %117, %or.cond463
  br i1 %or.cond484, label %.thread443.sink.split, label %119

119:                                              ; preds = %115
  %120 = load i32, ptr %16, align 4, !tbaa !5
  %121 = icmp slt i32 %120, 1
  %122 = icmp ult i32 %120, %107
  %or.cond464 = and i1 %122, %.not412
  %or.cond485 = or i1 %121, %or.cond464
  br i1 %or.cond485, label %.thread443.sink.split, label %123

123:                                              ; preds = %119
  %.pr = load i32, ptr %25, align 4, !tbaa !5
  %124 = icmp eq i32 %.pr, 0
  br i1 %124, label %125, label %.thread443

125:                                              ; preds = %123
  %.not483 = icmp eq i32 %107, 0
  br i1 %.not483, label %148, label %126

126:                                              ; preds = %125
  %127 = shl nuw i32 %107, 1
  %128 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef nonnull %5, ptr noundef nonnull @c__0, i32 noundef 6, i32 noundef 1) #5
  %129 = add nsw i32 %128, 1
  %130 = mul nsw i32 %129, %107
  store i32 %130, ptr %27, align 4, !tbaa !5
  %131 = load i32, ptr %5, align 4, !tbaa !5
  %132 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.6, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef nonnull %5, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %133 = add nsw i32 %132, 1
  %134 = mul nsw i32 %133, %131
  store i32 %134, ptr %28, align 4, !tbaa !5
  %135 = tail call i32 @llvm.smax.i32(i32 %130, i32 %134)
  br i1 %.not414, label %142, label %136

136:                                              ; preds = %126
  store i32 %135, ptr %27, align 4, !tbaa !5
  %137 = load i32, ptr %5, align 4, !tbaa !5
  %138 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.6, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef nonnull %5, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %139 = add nsw i32 %138, 1
  %140 = mul nsw i32 %139, %137
  store i32 %140, ptr %28, align 4, !tbaa !5
  %141 = tail call i32 @llvm.smax.i32(i32 %135, i32 %140)
  br label %142

142:                                              ; preds = %136, %126
  %.0 = phi i32 [ %141, %136 ], [ %135, %126 ]
  br i1 %97, label %143, label %148

143:                                              ; preds = %142
  store i32 %.0, ptr %27, align 4, !tbaa !5
  %144 = load i32, ptr %5, align 4, !tbaa !5
  %145 = mul nsw i32 %144, %144
  %146 = lshr i32 %145, 1
  store i32 %146, ptr %28, align 4, !tbaa !5
  %147 = tail call i32 @llvm.smax.i32(i32 %.0, i32 %146)
  br label %148

148:                                              ; preds = %125, %142, %143
  %.0385 = phi i32 [ %147, %143 ], [ %.0, %142 ], [ 1, %125 ]
  %.0375 = phi i32 [ %127, %143 ], [ %127, %142 ], [ 1, %125 ]
  %.1 = phi i32 [ %.0, %143 ], [ %.0, %142 ], [ 1, %125 ]
  %149 = sitofp i32 %.0385 to float
  store float %149, ptr %19, align 4, !tbaa !9
  %150 = getelementptr inbounds i8, ptr %19, i64 4
  store float 0.000000e+00, ptr %150, align 4, !tbaa !12
  br i1 %88, label %151, label %155

151:                                              ; preds = %148
  %152 = load i32, ptr %5, align 4, !tbaa !5
  %153 = icmp eq i32 %152, 0
  %154 = add nsw i32 %152, 2
  %spec.select437 = select i1 %153, i32 1, i32 %154
  br label %155

155:                                              ; preds = %151, %148
  %.0377 = phi i32 [ 1, %148 ], [ %spec.select437, %151 ]
  store i32 %.0377, ptr %22, align 4, !tbaa !5
  %156 = load i32, ptr %20, align 4, !tbaa !5
  %157 = icmp sge i32 %156, %.0375
  %or.cond9 = select i1 %157, i1 true, i1 %87
  br i1 %or.cond9, label %158, label %.thread443.sink.split

158:                                              ; preds = %155
  %159 = load i32, ptr %23, align 4, !tbaa !5
  %160 = icmp sge i32 %159, %.0377
  %or.cond11 = select i1 %160, i1 true, i1 %87
  br i1 %or.cond11, label %.thread, label %.thread443.sink.split

.thread:                                          ; preds = %158
  %.pr439.pr = load i32, ptr %25, align 4, !tbaa !5
  %.not417 = icmp eq i32 %.pr439.pr, 0
  br i1 %.not417, label %164, label %.thread443

.thread443.sink.split:                            ; preds = %96, %158, %155, %119, %115, %112, %109, %106, %101, %99
  %.sink = phi i32 [ %.mux, %96 ], [ -3, %99 ], [ -5, %101 ], [ -6, %106 ], [ -8, %109 ], [ -10, %112 ], [ -15, %115 ], [ -17, %119 ], [ -21, %155 ], [ -24, %158 ]
  store i32 %.sink, ptr %25, align 4, !tbaa !5
  br label %.thread443

.thread443:                                       ; preds = %.thread443.sink.split, %123, %.thread
  %161 = phi i32 [ %.pr439.pr, %.thread ], [ %.pr, %123 ], [ %.sink, %.thread443.sink.split ]
  %162 = sub nsw i32 0, %161
  store i32 %162, ptr %27, align 4, !tbaa !5
  %163 = call i32 @xerbla_(ptr noundef nonnull @.str.9, ptr noundef nonnull %27, i32 noundef 6) #5
  br label %330

164:                                              ; preds = %.thread
  br i1 %87, label %330, label %165

165:                                              ; preds = %164
  %166 = load i32, ptr %5, align 4, !tbaa !5
  %167 = icmp eq i32 %166, 0
  br i1 %167, label %168, label %169

168:                                              ; preds = %165
  store i32 0, ptr %10, align 4, !tbaa !5
  br label %330

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

184:                                              ; preds = %169
  %185 = load float, ptr %39, align 4, !tbaa !13
  %186 = fcmp ogt float %180, %185
  br i1 %186, label %187, label %188

187:                                              ; preds = %169, %184
  %storemerge = phi float [ %185, %184 ], [ %182, %169 ]
  store float %storemerge, ptr %40, align 4, !tbaa !13
  call void @clascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %30, ptr noundef nonnull %40, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %32) #5
  br label %188

188:                                              ; preds = %184, %187
  %.not418451 = phi i1 [ false, %187 ], [ true, %184 ]
  %189 = call float @clange_(ptr noundef nonnull @.str.11, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %21) #5
  store float %189, ptr %31, align 4, !tbaa !13
  %190 = fcmp ogt float %189, 0.000000e+00
  %191 = load float, ptr %42, align 4
  %192 = fcmp olt float %189, %191
  %or.cond470 = select i1 %190, i1 %192, i1 false
  br i1 %or.cond470, label %196, label %193

193:                                              ; preds = %188
  %194 = load float, ptr %39, align 4, !tbaa !13
  %195 = fcmp ogt float %189, %194
  br i1 %195, label %196, label %197

196:                                              ; preds = %188, %193
  %storemerge467 = phi float [ %194, %193 ], [ %191, %188 ]
  store float %storemerge467, ptr %41, align 4, !tbaa !13
  call void @clascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %31, ptr noundef nonnull %41, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %32) #5
  br label %197

197:                                              ; preds = %193, %196
  %.not420456 = phi i1 [ false, %196 ], [ true, %193 ]
  %198 = load i32, ptr %5, align 4, !tbaa !5
  %199 = add nsw i32 %198, 1
  %200 = add nsw i32 %199, %198
  %201 = sext i32 %199 to i64
  %202 = getelementptr inbounds float, ptr %58, i64 %201
  %203 = sext i32 %200 to i64
  %204 = getelementptr inbounds float, ptr %58, i64 %203
  call void @cggbal_(ptr noundef nonnull @.str.10, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %45, ptr noundef nonnull %44, ptr noundef %21, ptr noundef nonnull %202, ptr noundef nonnull %204, ptr noundef nonnull %32) #5
  %205 = load i32, ptr %44, align 4, !tbaa !5
  %206 = add nsw i32 %205, 1
  %207 = load i32, ptr %45, align 4, !tbaa !5
  %208 = sub i32 %206, %207
  store i32 %208, ptr %36, align 4, !tbaa !5
  %209 = load i32, ptr %5, align 4, !tbaa !5
  %reass.sub = sub i32 %209, %207
  %210 = add i32 %reass.sub, 1
  store i32 %210, ptr %33, align 4, !tbaa !5
  %211 = load i32, ptr %20, align 4, !tbaa !5
  %212 = sub i32 %211, %208
  store i32 %212, ptr %27, align 4, !tbaa !5
  %213 = add i32 %49, 1
  %214 = mul i32 %207, %213
  %215 = sext i32 %214 to i64
  %216 = getelementptr inbounds %struct.complex, ptr %51, i64 %215
  %217 = sext i32 %208 to i64
  %218 = getelementptr %struct.complex, ptr %57, i64 %217
  %219 = getelementptr i8, ptr %218, i64 8
  call void @cgeqrf_(ptr noundef nonnull %36, ptr noundef nonnull %33, ptr noundef %216, ptr noundef nonnull %9, ptr noundef nonnull %19, ptr noundef nonnull %219, ptr noundef nonnull %27, ptr noundef nonnull %32) #5
  %220 = load i32, ptr %20, align 4, !tbaa !5
  %221 = sub i32 %220, %208
  store i32 %221, ptr %27, align 4, !tbaa !5
  %222 = load i32, ptr %45, align 4, !tbaa !5
  %223 = mul i32 %222, %213
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds %struct.complex, ptr %51, i64 %224
  %226 = add i32 %46, 1
  %227 = mul i32 %222, %226
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds %struct.complex, ptr %48, i64 %228
  call void @cunmqr_(ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.14, ptr noundef nonnull %36, ptr noundef nonnull %33, ptr noundef nonnull %36, ptr noundef %225, ptr noundef nonnull %9, ptr noundef nonnull %19, ptr noundef %229, ptr noundef nonnull %7, ptr noundef nonnull %219, ptr noundef nonnull %27, ptr noundef nonnull %32) #5
  br i1 %.not414, label %253, label %230

230:                                              ; preds = %197
  call void @claset_(ptr noundef nonnull @.str.15, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b2, ptr noundef %13, ptr noundef nonnull %14) #5
  %231 = load i32, ptr %36, align 4, !tbaa !5
  %232 = icmp sgt i32 %231, 1
  br i1 %232, label %233, label %245

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

245:                                              ; preds = %233, %230
  %246 = load i32, ptr %20, align 4, !tbaa !5
  %247 = sub i32 %246, %208
  store i32 %247, ptr %27, align 4, !tbaa !5
  %248 = load i32, ptr %45, align 4, !tbaa !5
  %249 = add i32 %54, 1
  %250 = mul i32 %248, %249
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds %struct.complex, ptr %56, i64 %251
  call void @cungqr_(ptr noundef nonnull %36, ptr noundef nonnull %36, ptr noundef nonnull %36, ptr noundef %252, ptr noundef nonnull %14, ptr noundef nonnull %19, ptr noundef nonnull %219, ptr noundef nonnull %27, ptr noundef nonnull %32) #5
  br label %253

253:                                              ; preds = %245, %197
  br i1 %.not422, label %255, label %254

254:                                              ; preds = %253
  call void @claset_(ptr noundef nonnull @.str.15, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b2, ptr noundef %15, ptr noundef nonnull %16) #5
  br label %255

255:                                              ; preds = %254, %253
  call void @cgghrd_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %5, ptr noundef nonnull %45, ptr noundef nonnull %44, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull %32) #5
  store i32 0, ptr %10, align 4, !tbaa !5
  %256 = load i32, ptr %20, align 4, !tbaa !5
  store i32 %256, ptr %27, align 4, !tbaa !5
  call void @chgeqz_(ptr noundef nonnull @.str.2, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %5, ptr noundef nonnull %45, ptr noundef nonnull %44, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull %19, ptr noundef nonnull %27, ptr noundef nonnull %204, ptr noundef nonnull %32) #5
  %257 = load i32, ptr %32, align 4, !tbaa !5
  %.not424 = icmp eq i32 %257, 0
  br i1 %.not424, label %267, label %258

258:                                              ; preds = %255
  %259 = icmp slt i32 %257, 1
  %.pre = load i32, ptr %5, align 4, !tbaa !5
  %.not432 = icmp sgt i32 %257, %.pre
  %or.cond486 = select i1 %259, i1 true, i1 %.not432
  br i1 %or.cond486, label %260, label %.loopexit.sink.split

260:                                              ; preds = %258
  %261 = icmp sle i32 %257, %.pre
  %262 = shl i32 %.pre, 1
  %.not433 = icmp sgt i32 %257, %262
  %or.cond436 = or i1 %261, %.not433
  br i1 %or.cond436, label %265, label %263

263:                                              ; preds = %260
  %264 = sub nsw i32 %257, %.pre
  br label %.loopexit.sink.split

265:                                              ; preds = %260
  %266 = add nsw i32 %.pre, 1
  br label %.loopexit.sink.split

267:                                              ; preds = %255
  br i1 %.not410, label %305, label %268

268:                                              ; preds = %267
  br i1 %.not418451, label %270, label %269

269:                                              ; preds = %268
  call void @clascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %40, ptr noundef nonnull %30, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull %5, ptr noundef nonnull %32) #5
  br label %270

270:                                              ; preds = %269, %268
  br i1 %.not420456, label %272, label %271

271:                                              ; preds = %270
  call void @clascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %41, ptr noundef nonnull %31, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef %12, ptr noundef nonnull %5, ptr noundef nonnull %32) #5
  br label %272

272:                                              ; preds = %271, %270
  %273 = load i32, ptr %5, align 4, !tbaa !5
  store i32 %273, ptr %27, align 4, !tbaa !5
  %.not426471 = icmp slt i32 %273, 1
  br i1 %.not426471, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %272, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 1, %272 ]
  %274 = getelementptr inbounds %struct.complex, ptr %52, i64 %indvars.iv
  %275 = getelementptr inbounds %struct.complex, ptr %53, i64 %indvars.iv
  %276 = call i32 (ptr, ptr, ...) %3(ptr noundef nonnull %274, ptr noundef nonnull %275) #5
  %277 = getelementptr inbounds i32, ptr %59, i64 %indvars.iv
  store i32 %276, ptr %277, align 4, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %278 = load i32, ptr %27, align 4, !tbaa !5
  %279 = sext i32 %278 to i64
  %.not426.not = icmp slt i64 %indvars.iv, %279
  br i1 %.not426.not, label %.lr.ph, label %._crit_edge, !llvm.loop !14

._crit_edge:                                      ; preds = %.lr.ph, %272
  %280 = load i32, ptr %20, align 4, !tbaa !5
  store i32 %280, ptr %27, align 4, !tbaa !5
  call void @ctgsen_(ptr noundef nonnull %29, ptr noundef nonnull %34, ptr noundef nonnull %35, ptr noundef %24, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull %10, ptr noundef nonnull %37, ptr noundef nonnull %38, ptr noundef nonnull %43, ptr noundef nonnull %19, ptr noundef nonnull %27, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %32) #5
  %281 = load i32, ptr %29, align 4
  %282 = icmp sgt i32 %281, 0
  br i1 %282, label %283, label %290

283:                                              ; preds = %._crit_edge
  store i32 %.1, ptr %27, align 4, !tbaa !5
  %284 = load i32, ptr %10, align 4, !tbaa !5
  %285 = shl i32 %284, 1
  %286 = load i32, ptr %5, align 4, !tbaa !5
  %287 = sub nsw i32 %286, %284
  %288 = mul nsw i32 %287, %285
  store i32 %288, ptr %28, align 4, !tbaa !5
  %289 = call i32 @llvm.smax.i32(i32 %.1, i32 %288)
  br label %290

290:                                              ; preds = %283, %._crit_edge
  %.3 = phi i32 [ %289, %283 ], [ %.1, %._crit_edge ]
  %291 = load i32, ptr %32, align 4, !tbaa !5
  %292 = icmp eq i32 %291, -21
  br i1 %292, label %.sink.split, label %293

293:                                              ; preds = %290
  switch i32 %281, label %300 [
    i32 4, label %294
    i32 1, label %294
    i32 2, label %298
  ]

294:                                              ; preds = %293, %293
  %295 = load float, ptr %37, align 4, !tbaa !13
  store float %295, ptr %17, align 4, !tbaa !13
  %296 = load float, ptr %38, align 4, !tbaa !13
  %297 = getelementptr inbounds i8, ptr %17, i64 4
  store float %296, ptr %297, align 4, !tbaa !13
  switch i32 %281, label %300 [
    i32 4, label %298
    i32 2, label %298
  ]

298:                                              ; preds = %293, %294, %294
  %299 = load <2 x float>, ptr %43, align 8, !tbaa !13
  store <2 x float> %299, ptr %18, align 4, !tbaa !13
  br label %300

300:                                              ; preds = %293, %294, %298
  %301 = icmp eq i32 %291, 1
  br i1 %301, label %302, label %305

302:                                              ; preds = %300
  %303 = load i32, ptr %5, align 4, !tbaa !5
  %304 = add nsw i32 %303, 3
  br label %.sink.split

.sink.split:                                      ; preds = %290, %302
  %.sink487 = phi i32 [ %304, %302 ], [ -21, %290 ]
  store i32 %.sink487, ptr %25, align 4, !tbaa !5
  br label %305

305:                                              ; preds = %.sink.split, %300, %267
  %.4 = phi i32 [ %.3, %300 ], [ %.1, %267 ], [ %.3, %.sink.split ]
  %306 = load i32, ptr %34, align 4, !tbaa !5
  %.not428 = icmp eq i32 %306, 0
  br i1 %.not428, label %308, label %307

307:                                              ; preds = %305
  call void @cggbak_(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.13, ptr noundef nonnull %5, ptr noundef nonnull %45, ptr noundef nonnull %44, ptr noundef %21, ptr noundef nonnull %202, ptr noundef nonnull %5, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %32) #5
  br label %308

308:                                              ; preds = %307, %305
  %309 = load i32, ptr %35, align 4, !tbaa !5
  %.not429 = icmp eq i32 %309, 0
  br i1 %.not429, label %311, label %310

310:                                              ; preds = %308
  call void @cggbak_(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.16, ptr noundef nonnull %5, ptr noundef nonnull %45, ptr noundef nonnull %44, ptr noundef %21, ptr noundef nonnull %202, ptr noundef nonnull %5, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull %32) #5
  br label %311

311:                                              ; preds = %310, %308
  br i1 %.not418451, label %313, label %312

312:                                              ; preds = %311
  call void @clascl_(ptr noundef nonnull @.str.17, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %40, ptr noundef nonnull %30, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %32) #5
  call void @clascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %40, ptr noundef nonnull %30, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull %5, ptr noundef nonnull %32) #5
  br label %313

313:                                              ; preds = %312, %311
  br i1 %.not420456, label %315, label %314

314:                                              ; preds = %313
  call void @clascl_(ptr noundef nonnull @.str.17, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %41, ptr noundef nonnull %31, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %32) #5
  call void @clascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %41, ptr noundef nonnull %31, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef %12, ptr noundef nonnull %5, ptr noundef nonnull %32) #5
  br label %315

315:                                              ; preds = %314, %313
  br i1 %.not410, label %.loopexit, label %316

316:                                              ; preds = %315
  store i32 0, ptr %10, align 4, !tbaa !5
  %317 = load i32, ptr %5, align 4, !tbaa !5
  store i32 %317, ptr %27, align 4, !tbaa !5
  %.not430473 = icmp slt i32 %317, 1
  br i1 %.not430473, label %.loopexit, label %.lr.ph477

.lr.ph477:                                        ; preds = %316, %.thread457
  %indvars.iv480 = phi i64 [ %indvars.iv.next481, %.thread457 ], [ 1, %316 ]
  %.0376475 = phi i32 [ %320, %.thread457 ], [ 1, %316 ]
  %318 = getelementptr inbounds %struct.complex, ptr %52, i64 %indvars.iv480
  %319 = getelementptr inbounds %struct.complex, ptr %53, i64 %indvars.iv480
  %320 = call i32 (ptr, ptr, ...) %3(ptr noundef nonnull %318, ptr noundef nonnull %319) #5
  %.not431 = icmp eq i32 %320, 0
  br i1 %.not431, label %.thread457, label %321

321:                                              ; preds = %.lr.ph477
  %322 = load i32, ptr %10, align 4, !tbaa !5
  %323 = add nsw i32 %322, 1
  store i32 %323, ptr %10, align 4, !tbaa !5
  %.not478 = icmp eq i32 %.0376475, 0
  br i1 %.not478, label %324, label %.thread457

324:                                              ; preds = %321
  %325 = load i32, ptr %5, align 4, !tbaa !5
  %326 = add nsw i32 %325, 2
  store i32 %326, ptr %25, align 4, !tbaa !5
  br label %.thread457

.thread457:                                       ; preds = %.lr.ph477, %324, %321
  %indvars.iv.next481 = add nuw nsw i64 %indvars.iv480, 1
  %327 = load i32, ptr %27, align 4, !tbaa !5
  %328 = sext i32 %327 to i64
  %.not430.not = icmp slt i64 %indvars.iv480, %328
  br i1 %.not430.not, label %.lr.ph477, label %.loopexit, !llvm.loop !16

.loopexit.sink.split:                             ; preds = %258, %263, %265
  %.sink488 = phi i32 [ %266, %265 ], [ %264, %263 ], [ %257, %258 ]
  store i32 %.sink488, ptr %25, align 4, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.thread457, %.loopexit.sink.split, %316, %315
  %.5 = phi i32 [ %.4, %315 ], [ %.4, %316 ], [ %.1, %.loopexit.sink.split ], [ %.4, %.thread457 ]
  %329 = sitofp i32 %.5 to float
  store float %329, ptr %19, align 4, !tbaa !9
  store float 0.000000e+00, ptr %150, align 4, !tbaa !12
  store i32 %.0377, ptr %22, align 4, !tbaa !5
  br label %330

330:                                              ; preds = %164, %.loopexit, %168, %.thread443
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %45) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %42) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #5
  call void @llvm.lifetime.end.p0(i64 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
  ret void
}

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

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

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

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

declare float @slamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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